Optimization Toolbox

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

Optimization Toolbox™ offre des outils qui permettent de minimiser ou maximiser des fonctions avec ou sans contraintes. La toolbox comprend des solveurs pour la programmation linéaire (LP), la programmation linéaire en nombres entiers mixtes (MILP), la programmation quadratique (QP), la programmation cône du second ordre (SOCP), la programmation non-linéaire (NLP), la méthode des moindres carrés linéaires sous contraintes, les moindres carrés non-linéaires et les équations non-linéaires.

Vous pouvez définir votre problème d'optimisation à l'aide de fonctions et de matrices, ou en spécifiant directement de façon symbolique des expressions mathématiques. Vous pouvez utiliser la différenciation automatique de fonctions objectif et de contrainte pour arriver à des solutions plus rapides et précises.

Vous pouvez utiliser les solveurs de la toolbox pour trouver des solutions optimales à des problèmes continus et discrets, effectuer des analyses de compromis et incorporer des méthodes d'optimisation dans les algorithmes et les applications. La toolbox vous permet de réaliser des tâches d'optimisation de design, comprenant l'estimation des paramètres, la sélection de composantes et l'optimisation des paramètres. Elle vous permet de trouver des solutions optimales dans des applications comme l'optimisation de portefeuilles, la gestion et le trading de l'énergie, ainsi que la planification de la production.

En savoir plus :

ASTUCES GRATUITES

9 guides de références MATLAB pour votre projet de Data Science et de Machine Learning

Trouvez la commande adéquate pour les tâches les plus courantes de votre workflow.

Voir des astuces

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.

Modélisation

Transformez un problème sous forme mathématique et symbolique en définissant des variables, des objectifs et des contraintes afin de parvenir à une résolution avec des techniques d'optimisation.

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.

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.

Solver-Based Optimization

Write nonlinear objectives and constraints using functions; write linear objectives and constraints using coefficient matrices. Interactively create and solve the problem with the Optimize Live Editor task and then generate code for sharing or use in your 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 pour trouver le solveur approprié au type de problème rencontré lorsque vous utilisez l'approche basée sur les solveurs. Avec l'approche par résolution de problèmes, le solveur est automatiquement sélectionné.

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.

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.

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.

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.

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.

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.

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 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 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.

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 non linéaires et des équations de systèmes non linéaires sous contraintes bornées. Résolvez des problèmes de moindres carrés linéaires sous contraintes bornées et 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.

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.

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 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 pour une fonction d'optimisation de trajectoire.

Nouveautés

Tâche Optimize dans Live Editor

Créez et résolvez des problèmes d'optimisation de manière interactive

Différenciation automatique

Résolvez des problèmes plus rapidement et plus rigoureusement en utilisant des gradients calculés automatiquement pour les fonctions objectif et de contrainte

Programmation de cône du second ordre

Résolvez des problèmes d'optimisation convexes avec des contraintes de cône du second ordre, des contraintes linéaires et un objectif linéaire

Génération de code

Générez du code C/C++ pour résoudre des systèmes d'équations non linéaires avec fsolve ( MATLAB Coder requis)

Génération de code

Générez du code C/C++ pour résoudre des problèmes de moindres carrés non linéaires avec lsqcurvefit ou lsqnonlin (MATLAB Coder requis).

Consultez les notes de version pour en savoir plus sur ces fonctionnalités et les fonctions correspondantes.