Optimization Toolbox

 

Optimization Toolbox

Résoudre des problèmes d'optimisation linéaire, quadratique, conique, en nombres entiers et non linéaire

En savoir plus:

Définition de problèmes d'optimisation

Modélisez un problème de design ou de décision sous forme de problème d'optimisation. Définissez les paramètres d'optimisation sous forme de variables. Utilisez-les pour définir une fonction objectif à optimiser et ajoutez des contraintes sur la valeur des variables définies.

Optimisation basée sur les problèmes

Écrivez les objectifs et les contraintes avec des expressions de variables d'optimisation. Trouvez des solutions plus rapides et efficaces avec la différenciation automatique sur des expressions non linéaires. Appliquez un solveur sélectionné automatiquement. Créez et résolvez le problème de manière interactive avec la tâche Optimize dans Live Editor, puis générez le code à partager ou à utiliser dans votre application.

Optimisation basée sur les solveurs

Écrivez les objectifs et les contraintes non linéaires en utilisant des fonctions, et définissez également des objectifs et des contraintes linéaires en utilisant des matrices de coefficients. Créez et résolvez le problème de manière interactive avec la tâche Optimize dans Live Editor, puis générez le code à partager ou à utiliser dans votre application.

Résolution de problèmes d'optimisation

Appliquez un solveur au problème d'optimisation pour trouver une solution optimale : un ensemble de valeurs de variables d'optimisation qui produit la valeur optimale de la fonction objectif, si elle existe, et répond aux contraintes.

Choix du solveur

Utilisez la tâche Optimize dans Live Editor avec une approche basée sur les problèmes ou sur les solveurs pour vous aider à choisir un solveur approprié au type de problème rencontré.

Paramétrage des options

Définissez des options d'optimisation pour améliorer le processus d'optimisation. À titre d'exemple, vous pouvez choisir l'algorithme d'optimisation utilisé par le solveur ou bien définir des conditions d'arrêt. Définissez des options pour surveiller et tracer la progression du solveur d'optimisation.

Validation et amélioration des résultats

Examinez les messages de sortie et validez les mesures d'optimisation en affichant les itérations amenant à la solution. Améliorez les performances des problèmes non linéaires en utilisant la différenciation automatique, en fournissant des gradients ou en utilisant le calcul parallèle pour estimer les gradients.

Contrôle de la progression du solveur avec l'affichage itératif

Contrôle de la progression du solveur avec l'affichage itératif.

Programmation non linéaire

Résolvez des problèmes d'optimisation à fonctions objectif non linéaires ou sous contraintes non linéaires.

Solveurs

Appliquez les algorithmes quasi-Newton, à régions de confiance ou Nelder-Mead pour résoudre des problèmes non contraints. Appliquez des algorithmes interior-point, de programmation quadratique séquentielle (SQP) ou trust-region-reflective pour résoudre des problèmes contraints.

Applications

Utilisez l'optimisation non linéaire pour estimer et affiner les paramètres, identifier des designs optimaux, calculer des trajectoires optimales, constituer des portefeuilles robustes et pour d'autres applications dans lesquelles il existe une relation non linéaire entre les variables.

Programmation linéaire, quadratique et conique

Résolvez des problèmes d'optimisation convexes à fonctions objectif linéaires ou quadratiques ou soumis à des contraintes linéaires ou de cône du second ordre.

Solveurs de programmation linéaire

Appliquez des algorithmes interior-point ou dual-simplex pour résoudre des programmes linéaires.

Solution optimale

Région réalisable et solution optimale pour un programme linéaire.

Solveurs de programmation quadratique et de cône du second ordre

Appliquez des algorithmes trust-region-reflective, interior-point ou active-set pour résoudre des programmes quadratiques. Appliquez des méthodes interior-point pour résoudre des programmes de cône du second ordre.

Solution optimale

Région réalisable et solution optimale pour un programme quadratique.

Applications

Utilisez la programmation linéaire sur des problèmes comme l'allocation de ressources, la planification de la production et de l'investissement, ou encore le blending. Utilisez la programmation quadratique et de cône du second ordre sur des problèmes comme l'optimisation de design, l'optimisation de portefeuille, ainsi que le contrôle de barrages hydroélectriques.

Plan d'exploitation d'une usine hydroélectrique

Stratégie de contrôle optimale identifiée grâce à la programmation quadratique.

Programmation linéaire en nombres entiers mixtes (MILP)

Résolvez des problèmes d'optimisation à fonctions objectif linéaires sous contraintes linéaires, avec la contrainte supplémentaire suivante : certaines ou l'ensemble des variables doivent être des nombres entiers.

Solveurs

Résolvez des problèmes de programmation linéaire en nombres entiers mixtes à l'aide de l'algorithme branch and bound, qui comprend le prétraitement, les heuristiques pour la génération des points réalisables et la méthode des plans sécants.

Solution optimale

Application de l'algorithme branch and bound. 

Algorithmes basés sur la programmation linéaire en nombres entiers mixtes

Utilisez le solveur MILP pour concevoir des algorithmes à usage spécifique.

Solution du problème d'un représentant de commerce visitant 200 villes

Trajet le plus court permettant de visiter une fois chaque ville américaine.

Applications

Modélisez avec des nombres entiers en cas de contraintes logiques ou de décisions on/off ou lorsque les valeurs de variables doivent être entières. Les applications les plus courantes sont les problèmes de routage, de planification, d'affectation et de budgétisation des investissements.

Programme de distribution électrique optimale

Programme de distribution électrique pour deux générateurs selon des prix d'électricité variables.

Optimisation multi-objectifs

Résolvez des problèmes d'optimisation à fonctions objectif multiples soumis à un ensemble de contraintes.

Solveurs

Formulez des problèmes de goal-attainment (réalisation d'objectifs) ou de minimax. Utilisez le goal-attainment lorsque les objectifs sont pondérés. Utilisez le minimax pour minimiser la pire valeur d'un ensemble de fonctions objectif.

Frontière de Pareto

Frontière de Pareto calculée en utilisant la fonction fgoalattain

Applications

Utilisez l'optimisation multi-objectifs lorsque des compromis sont nécessaires pour des objectifs contradictoires. On peut citer comme exemples le poids et la solidité en design structurel, ainsi que le risque et le rendement dans le cadre de l'optimisation de portefeuille.

Design de filtres FIR

Réponse d’amplitude pour des coefficients de filtrage optimisés et initiaux.

Résolution des moindres carrés et d'équations non linéaires

Résolvez des problèmes de moindres carrés linéaires et non linéaires, et des équations de systèmes non linéaires sous contraintes bornées linéaires et non linéaires.

Ajustement de données non linéaires

Comparaison des approches globales et locales.

Applications des moindres carrés linéaires

Utilisez des solveurs des moindres carrés linéaires pour ajuster un modèle linéaire à des données acquises ou pour résoudre un système d'équations linéaires, notamment lorsque les paramètres sont soumis à des contraintes bornées et linéaires.

Défloutage optique

Récupération d'une image défloutée par la résolution d'un problème de moindres carrés linéaires.

Applications des moindres carrés non linéaires

Utilisez des solveurs des moindres carrés non linéaires pour ajuster un modèle non linéaire à des données acquises ou pour résoudre un système d'équations non linéaires, y compris lorsque les paramètres sont soumis à des contraintes bornées linéaires et non linéaires.

Ajustement d'une trajectoire circulaire au système de Lorenz.

Ajustement d'une trajectoire circulaire au système de Lorenz d'équations différentielles ordinaires.

Déploiement

Développez des outils de design et d'aide à la décision basés sur l'optimisation, intégrez-les à des systèmes d'entreprise et déployez des algorithmes d'optimisation sur des systèmes embarqués.

Support de MATLAB Compiler

Utilisez MATLAB Compiler™ et MATLAB Compiler SDK™ pour déployer les modèles d'optimisation MATLAB® sous la forme de fichiers exécutables autonomes, d'applications web, de librairies partagées C/C++, d'assembly Microsoft® .NET, de classes Java® et de packages Python®.

Application d'optimisation de la production

Application qui calcule un programme de distribution électrique optimal.

Génération de code

Générez du code C ou C++ portable et lisible pour résoudre des problèmes d'optimisation en utilisant MATLAB Coder™. Compilez le code généré pour tout type de hardware, y compris les systèmes embarqués.

Rapport MATLAB Coder

Rapport MATLAB Coder pour une fonction d'optimisation de trajectoire.