Principales fonctionnalités

Utilisation d’un problème de programmation linéaire en nombres entiers pour déterminer le meilleur moyen de fournir les points de vente à partir des entrepôts et des usines.


Définition et résolution des problèmes d’optimisation

Les techniques d'optimisation sont utilisées pour trouver un ensemble de paramètres de design ou un ensemble de décisions qui donne le meilleur résultat possible. Un problème d'optimisation est un modèle de problème de conception ou de décision. Vous pouvez modéliser les paramètres de conception ou les décisions sous forme de variables d'optimisation. Les autres composantes d’un problème d’optimisation incluent les fonctions d’objectif et, le cas échéant, les contraintes. La fonction objectif calcule la quantité voulue à minimiser ou à optimiser. Les contraintes limitent les valeurs possibles pour les variables d’optimisation.

Les problèmes de moindres carrés et les systèmes d’équations non linéaires sont des problèmes d’optimisation car ils trouvent leur résolution en minimisant une somme de carrés.

Transformer une description de problème en programme mathématique pouvant être résolu par l'intermédiaire de l'optimisation, en utilisant un exemple d'usine de production d'énergie thermique et électrique.

Modélisation d’optimisation par analyse de problèmes

Définissez votre objectif et vos contraintes au moyen du processus d’analyse de problèmes en utilisant des expressions élaborées à partir des variables d’optimisation. Cette approche peut s’appliquer aux problèmes d’optimisation linéaire et linéaire en nombres entiers mixtes.

Résoudre un programme linéaire en utilisant les solveurs d’Optimization Toolbox et une approche par analyse de problèmes, en utilisant un exemple d’usine de production d’énergie thermique et électrique.

Utilisez la modélisation par analyse de problèmes pour déterminer un planning de génération optimal.


Modélisation d’optimisation basée sur solveur

Définissez votre objectif et vos contraintes au moyen du processus basé sur solveur. Vous pouvez utiliser des fonctions ou des matrices avec les variables d’optimisation dont le solveur sélectionné a besoin. Cette approche peut s’appliquer avec tous les solveurs dans Optimization Toolbox.

Résoudre un programme linéaire en utilisant les solveurs d'Optimization Toolbox™, en utilisant un exemple d'usine de production d'énergie thermique et électrique.

Utilisez la modélisation basée sur solveur pour déterminer un portefeuille optimal.


Choix d’un solveur

Optimization Toolbox contient différents solveurs pour différents types d’objectifs et de contraintes. Le tableau des décisions pour l’optimisation vous aide à choisir le solveur le plus adapté à votre problème dans le cas d’une approche orientée solveur. Lors de l’utilisation de l’approche par analyse de problèmes, le solveur approprié est automatiquement sélectionné pour vous.

Optimization Toolbox propose un large éventail de fonctions permettant de résoudre de nombreux types de problèmes d’optimisation au moyen d’un seul appel de fonction. Vous pouvez également utiliser ces fonctions pour élaborer un algorithme d’optimisation encore plus complexe, comme un algorithme de génération de colonne, ou des algorithmes dont l’optimisation est l’une des étapes, comme la planification des mouvements de robots.

Résolvez un problème de stock à l’aide de la génération de colonne.


Paramétrage des options

Les options du solveur vous permettent de mettre au point ou de modifier le processus d’optimisation et de visualiser la progression du solveur.

Configuration des options avec la fonction optimoptions d’Optimization Toolbox pour paramétrer les solveurs et suivre la progression de l’optimisation.

Apport de dérivées

Les solveurs d’Optimization Toolbox minimisent les fonctions non linéaires en estimant les dérivées partielles de la fonction objectif à l’aide de différences finies. Vous pouvez réduire l’étape d’estimation de la dérivée de manière significative en définissant des fonctions qui calculent les valeurs des dérivées partielles.

Le calcul des dérivées partielles d’une fonction objectif peut s’avérer fastidieux. En exprimant le problème de façon symbolique en utilisant Symbolic Math Toolbox™, vous pouvez utiliser des fonctions intégrées pour calculer automatiquement les dérivées partielles de la fonction objectif. Vous pouvez alors générer un code MATLAB pour être utilisé avec les solveurs d’Optimization Toolbox.


Déploiement

Vous pouvez utiliser les solveurs d’Optimization Toolbox avec MATLAB Compiler™ afin de créer des outils de support à la décision pouvant être partagés avec les utilisateurs qui ne disposent pas de MATLAB. Ces applications autonomes peuvent être déployées gratuitement pour un nombre illimité d’utilisateurs finaux. Vous pouvez également intégrer des algorithmes d’optimisation MATLAB avec d’autres langages tels que C++, Java®, Python® et .NET à l’aide de MATLAB Compiler SDK™.


Optimisation non linéaire

Optimization Toolbox fournit des algorithmes d’optimisation souvent utilisés pour la résolution de problèmes de programmation non linéaire dans MATLAB. La toolbox comprend des solveurs pour l’optimisation non contrainte et sous contraintes ainsi que des solveurs pour l’optimisation de type moindres carrés.


Optimisation non linéaire non contrainte

Optimization Toolbox utilise trois algorithmes pour résoudre les problèmes de minimisation non linéaire non contrainte :

  • L’algorithme Quasi-Newton utilise une procédure mixte de recherche de ligne quadratique et cubique, ainsi que la formule Broyden-Fletcher-Goldfarb-Shanno (BFGS) pour actualiser l’approximation de la matrice hessienne.
  • L’algorithme Nelder-Mead (ou downhill simplex) est une méthode de recherche directe qui utilise exclusivement les valeurs de fonction (elle n’exige pas de dérivées) et traite les fonctions objectif non lisses. Global Optimization Toolbox propose des algorithmes d’optimisation sans dérivées supplémentaires.
  • L’algorithme zone de confiance est appliqué dans le cas des problèmes sans contraintes non linéaires et est particulièrement utile pour les problèmes à grande échelle pour lesquels il est possible d’exploiter la faible densité ou la structure.

Optimisation non linéaire sans contrainte utilisée pour rechercher une cartographie des performances moteur permettant une efficacité optimale


Optimisation non linéaire contrainte

Les problèmes d’optimisation non linéaire contrainte se composent de fonctions objectif linéaires ou non linéaires et ils peuvent être soumis à des contraintes linéaires et non linéaires. Optimization Toolbox utilise trois algorithmes pour résoudre ces problèmes :

  • L’algorithme ensemble actif est utilisé pour l’optimisation non linéaire générale. Il est particulièrement utile pour les problèmes à grande échelle dotés de structure de densité faible et tolère les échecs d’objectifs définis par l’utilisateur et d’évaluations de fonctions de contraintes. Il est basé sur une fonction barrière et assure, le cas échéant, la faisabilité de toutes les itérations par rapport aux limites pendant l’exécution de l’optimisation.
  • L’algorithme SQP est utilisé pour l’optimisation non linéaire générale. Il respecte les limites de toutes les itérations et tolère les échecs de l’évaluation de la fonction de contrainte et les objectifs définis par l’utilisateur.
  • L’algorithme réflexif de zone de confiance est réservé aux problèmes sous contraintes limitées ou aux égalités linéaires. Il est particulièrement utile pour les problèmes à grande échelle.

Les algorithmes point intérieur et réflexif de zone de confiance vous permettent d’estimer les matrices hessiennes en utilisant différentes approches.

Pour l’algorithme point intérieur, vous pouvez estimer les matrices hessiennes en utilisant :

  • BFGS (dense)
  • BFGS à mémoire limitée (pour les problèmes à grande échelle)
  • Fonction de multiplication hessienne
  • Hessien réel (à faible ou haute densité)
  • Différence de gradients finie, sans exiger la connaissance de la structure de faible densité

Pour l’algorithme réflexif de zone de confiance, vous pouvez utiliser :

  • Différence de gradients finie, structure de faible densité de la matrice hessienne
  • Hessien réel (à faible ou haute densité)
  • Fonction de multiplication hessienne

Pour réduire l’utilisation de la mémoire, les algorithmes point intérieur et réflexif de zone de confiance vous permettent de calculer les produits des hessiens par les vecteurs dans le cadre d’une fonction sans devoir définir explicitement la matrice hessienne.

Optimisation non linéaire sous contraintes utilisée pour concevoir un système de suspension optimal


Programmation linéaire et quadratique

Optimization Toolbox peut résoudre des problèmes de programmation linéaires et quadratiques à grande échelle.


Programmation linéaire

Les problèmes de programmation linéaire impliquent la réduction ou l’augmentation d’une fonction objectif linéaire soumise aux contraintes de limite, d’égalité et d’inégalité linéaires. La programmation linéaire est utilisée en finance, en énergie, en recherche opérationnelle et dans d’autres applications dans lesquelles les relations entre variables peuvent être exprimées de façon linéaire.

Optimization Toolbox propose deux algorithmes utilisés pour résoudre les problèmes de programmation linéaires :

  • L’algorithme dual-simplex est un type d’algorithme simplex. Les algorithmes simplex sont des procédures servant à générer et tester systématiquement les solutions applicables à un programme linéaire. Ce sont les algorithmes les plus utilisés pour la programmation linéaire.
  • L’algorithme point intérieur, qui repose sur un algorithme prédicteur-correcteur primal-dual, est utilisé pour résoudre les problèmes de programmation linéaire. La méthode point intérieur est particulièrement utile pour les problèmes à grande échelle dotés d’une structure ou qui peuvent être définis en utilisant des matrices creuses.

Programmation linéaire utilisée dans la conception d’une usine de production d’énergie thermique et électrique


Programmation quadratique

Les problèmes de programmation quadratique impliquent la minimisation d’une fonction quadratique multivariée soumise à des contraintes de limite, d’égalité et d’inégalité linéaire. La programmation quadratique est utilisée pour l’optimisation de portefeuille en finance, pour l’optimisation de la génération d’énergie dans les infrastructures électriques, pour l’optimisation des designs dans l’ingénierie et dans d’autres applications.

Optimization Toolbox inclut deux algorithmes pour la résolution des problèmes de programmation quadratique :

  • L’algorithme de point intérieur convexe résout les problèmes convexes avec n’importe quelle combinaison de contraintes.
  • L’algorithme réflexif de zone de confiance résout les problèmes sous contraintes liées ou d’égalités linéaires.
Dans ce webinar, vous découvrirez comment utiliser MATLAB pour résoudre des problèmes d’optimisation en utilisant un exemple de problème d’optimisation quadratique et les outils de calcul symbolique de MATLAB.

Les algorithmes point intérieur convexe et réflexif de zone de confiance sont à grande échelle, ce qui signifie qu’ils peuvent gérer des grands problèmes à faible densité. De plus, l’algorithme point intérieur convexe comporte des routines d’algèbre linéaire internes optimisées ainsi qu’un module de pré-résolution qui peut améliorer la vitesse, la stabilité numérique et la détection d’infaisabilité.

Programmation quadratique utilisée pour effectuer une analyse basée sur les rendements pour trois fonds communs de placement différents.


Programmation linéaire en nombres entiers mixtes

La programmation linéaire en nombres entiers ajoute au problème de programmation linéaire une contrainte supplémentaire : tout ou partie des variables de la solution optimale doivent être des entiers.

Pour certains problèmes d’optimisation, les variables ne doivent pas prendre de valeurs fractionnaires. Par exemple, si une variable représente le nombre de parts de marché à acheter, elle ne doit prendre que des valeurs entières. De la même manière, si une variable représente l’état activé/désactivé d’un générateur, elle doit uniquement prendre des valeurs binaires (0 ou 1). Le problème de programmation linéaire en nombres entiers permet de modéliser ce comportement en ajoutant une contrainte stipulant que ces variables doivent uniquement prendre des nombres entiers dans la solution optimale.

Apprenez à utiliser le nouveau solver d'optimisation à programmation linéaire en nombres entiers mixtes de la Version R2014a. Ce nouveau solver vous permet de résoudre des problèmes d'optimisation dans lequel une partie ou toutes les variables sont contraintes à prendre des valeurs entières.

Optimization Toolbox résout les problèmes de programmation linéaire en nombres entiers en utilisant un algorithme qui :

  • Exécute le prétraitement de la programmation d’entiers pour réduire la région faisable
  • Applique des plans de coupe pour réduire la région faisable
  • Utilise l’heuristique pour rechercher des solutions d’entier faisables
  • Vérifie qu’il n’existe aucune solution plus faisable grâce à un algorithme de séparation et d’évaluation qui résout une série de problèmes de relaxation de programmation linéaire
Commencer à utiliser les outils d'optimisation MATLAB® pour améliorer vos designs et prendre de meilleures décisions. Découvrez les bonnes pratiques pour mettre en place et résoudre vos problèmes d'optimisation.

Optimisation multiobjectifs

L’optimisation multiobjectifs cherche à minimiser plusieurs fonctions objectif soumises à un ensemble de contraintes. Optimization Toolbox fournit les fonctions qui vont permettre de résoudre deux types de formulations de problèmes d’optimisation multiobjectifs :

  • Le problème d’atteinte des objectifs implique de réduire la valeur d’une fonction vectorielle linéaire ou non linéaire pour atteindre les objectifs définis dans un vecteur objectif. L’importance relative des objectifs est indiquée par un vecteur pondéré. Le problème d’atteinte des objectifs peut également être soumis à des contraintes linéaires et non linéaires.
  • Le problème minimax implique la minimisation de la valeur du pire cas pour un ensemble de fonctions multivariées, qui peuvent être soumises à des contraintes linéaires et non linéaires.

Optimization Toolbox transforme les deux types de problèmes multiobjectifs en problèmes d’optimisation standards sous contraintes puis les résout en utilisant une approche ensemble actif.

Global Optimization Toolbox fournit un solveur multiobjectifs supplémentaire pour les problèmes non lisses.

Optimisation multiobjectifs servant à concevoir un filtre passe-bas.

Moindres carrés non linéaires, ajustement de données et équations non linéaires

Optimization Toolbox peut résoudre des problèmes de moindres carrés linéaires et non linéaires, des problèmes d’ajustement de données et des équations non linéaires.


Optimisation par moindres carrés linéaire et non linéaire

La toolbox fournit deux algorithmes pour résoudre les problèmes de moindres carrés linéaires sous contraintes :

  • L’algorithme de point intérieur sert à résoudre les problèmes avec limites et inégalités ou égalités linéaires.
  • L’algorithme réflexif de zone de confiance sert à résoudre des problèmes à grande échelle qui ont uniquement des contraintes de limites.

La toolbox fournit deux algorithmes pour résoudre les problèmes de moindres carrés non linéaires :

  • L’algorithme réflexif de zone de confiance met en œuvre une approche de zone de confiance spécialisée dans les problèmes de moindres carrés non linéaires. Il est utilisé pour les problèmes sans contrainte ou les problèmes sous contraintes liées.
  • L’algorithme Levenberg-Marquardt est utilisé pour les problèmes sans contrainte.

Ajuster une équation transcendante en utilisant les moindres carrés non linéaires.


Ajustement des données

La toolbox fournit une interface spécialisée pour les problèmes d’ajustement de données dans lesquels vous voulez rechercher le membre d’une famille de fonctions non linéaires correspondant le mieux à un ensemble de points de données. Elle applique les mêmes algorithmes pour résoudre les problèmes d’ajustement de données que pour les problèmes de moindres carrés non linéaires.

Ajuster une équation exponentielle non linéaire par ajustement de courbes aux moindres carrés.


Résolution des équations non linéaires

Optimization Toolbox met en œuvre un algorithme de zone de confiance en zig zag pour résoudre un système d’équations non linéaires incluant autant d’équations que d’inconnues. La toolbox peut également résoudre ce problème en utilisant les algorithmes de zone de confiance et Levenberg-Marquardt.

Résolution d’une fonction Rosenbrock à n dimensions en utilisant le solveur d’équations non linéaires.


Calcul parallèle

Les solveurs d’Optimization Toolbox pour les problèmes non linéaires utilisent des méthodes basées sur les gradients pour minimiser ou optimiser un objectif. Vous pouvez réduire le temps de résolution en activant le support du traitement parallèle intégré ou en définissant un déploiement personnalisé du traitement parallèle d’un problème d’optimisation.

Le support intégré du traitement parallèle dans Optimization Toolbox vous permet d’accélérer le pas d’estimation de gradient dans les solveurs pour les problèmes d’optimisation généraux sous contrainte, les problèmes de moindres carrés non linéaires et les équations, les systèmes d’équations non linéaires et les problèmes multiobjectifs.

Vous pouvez personnaliser une implémentation de traitement parallèle en définissant explicitement le problème d’optimisation de façon à utiliser la fonction de traitement parallèle. Vous pouvez définir une fonction objectif ou une fonction de contrainte afin d’utiliser le traitement parallèle, ce qui vous permet de réduire le temps requis pour évaluer l’objectif ou la contrainte.

Résolvez plus rapidement les problèmes d'optimisation à l'aide de Parallel Computing Toolbox.

Accélération du temps de résolution pour un problème électrostatique en utilisant le support intégré de traitement parallèle dans un solveur d’optimisation non linéaire. La fonction intégrée est activée en spécifiant l’option UseParallel (à gauche) pour les fonctions objectif (en haut à droite) et de contrainte (en bas à droite) avec la solution montrée à gauche.