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 :
- Définition de problèmes d'optimisation
- Résolution de problèmes d'optimisation
- Programmation non linéaire
- Programmation linéaire, quadratique et conique
- Programmation linéaire en nombres entiers mixtes (MILP)
- Optimisation multi-objectifs
- Résolution des moindres carrés et d'équations non linéaires
- Déploiement
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 astucesDé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.
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.
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.
Solveurs de programmation linéaire
Appliquez des algorithmes interior-point ou dual-simplex pour résoudre des programmes linéaires.
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.
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.
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.
Algorithmes basés sur la programmation linéaire en nombres entiers mixtes
Utilisez le solveur MILP pour concevoir des algorithmes à usage spécifique.
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.
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.
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.
Solveurs
Appliquez des algorithmes Levenberg-Marquardt, trust-region, active-set et interior-point.
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.
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.
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®.
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.
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.