Rapport Optimisation
Enseignant : M. Fedghouche
Étudiants :
Dalichaouche Lotfi
Département DMS
Février 2019
0
Table des matières
1
I. Définition : optimisation et calcul
opérationnel
I.1 Optimisation
I.1.1 Introduction
Les techniques d’optimisation sont aujourd’hui utilisées dans de très nombreux domaines
dont la logistique, la gestion de production, la finance, l’assurance et la banque, les
protocoles de transport d’information des réseaux informatiques, le transport d’énergie
dans les réseaux électriques, les stratégies militaires, les transports aériens et ferroviaires
entre autres… Et bien sûr, ces outils sont utilisés dans les bureaux d’études mécaniques en
génie civil, construction navale, aéronautique, automobile…
Une grande partie du métier d’ingénieur consiste à trouver une solution à un problème, qu’il
soit technique (ce qui constitue le cœur du métier), financier, organisationnel. Pour être
admissible, cette solution doit atteindre un objectif ou une fonction principale et elle doit
satisfaire à un certain nombre de contraintes, traduites ou non par les lois de la physique
selon le type de problème. Il existe toujours plusieurs solutions possibles et le concepteur
est tenté de rechercher la meilleure (au sens qu’il devra définir) : il est donc tenté
d’optimiser.
La notion de « meilleure conception » est très ancienne. L’homme a toujours voulu faire
mieux. Mais l’idée de conception optimale des structures, même si elle est
vraisemblablement très ancienne, n’est possible que depuis quelques décennies et ce grâce
à l’avènement de l’ordinateur, c’est alors qu’est née la branche d’Optimisation.
I.1.2 Définition
La mise en œuvre de l’optimisation est décrite à la figure 1.1. Sur la base d’une conception
initiale défie par un certain nombre.
2
Figure 1.1
Une étude d'optimisation est, en général effectuée pour minimiser le coût. Lors de la
conception, il faut garder à l'esprit la notion de :
Nombre de matériaux,
3
Optimisation structurale : paramètres de conception sont des données mécaniques de la
structure
Exemples :
Pour les hélicoptères : il faut éviter les fortes fluctuations de portance sur un cycle de pales
qui provoqueraient un déséquilibre de l'appareil. Ainsi on cherche à minimiser la loi de
commande de pas des pâles de l'hélicoptère. L'objectif est de minimiser la puissance
nécessaire pour obtenir une portance et une force de propulsion donnée.
Forgeage : on cherche à minimiser les passages de forgeage afin d'obtenir une énergie
dépensée moindre tout en respectant un écart de forme avec la pièce souhaitée le plus
faible possible. On joue essentiellement sur la forme de la matrice intermédiaire
Génie Civil : Optimisation d'une poutre sollicitée en flexion sous des limitations de
contraintes admissibles et de déflexion maximum qui peut être réalisé lors de la conception
de certains ouvrages d'art.
La fonction de coût : Mesurer l'écart entre le modèle et les observations. Si cet écart est
important, la fonction de coût doit être grande et inversement.
Si la fonction coût est linéaire par rapport aux paramètres, la minimisation s'effectue en une
seule étape avec la méthode des moindres carrés ordinaires.
Si la fonction est non linéaire par rapport aux paramètres, il faut utiliser des méthodes
itératives qui assurent la décroissance de la fonction de coût et convergent vers un
minimum :
3. Méthode de Levenberg-Marquardt.
4. Méthode du Simplexe.
Elle fait partie des « aides à la décision » dans la mesure où elle propose des modèles
conceptuels en vue d'analyser et de maitriser des situations complexes pour permettre aux
décideurs de comprendre, d'évaluer les enjeux et d'arbitrer ou de faire les choix les plus
efficaces.
Les problèmes que la R.O. peut aider à résoudre sont soit stratégiques (on peut citer le choix
d'investir ou pas, le choix d'une implantation, le dimensionnement d'une flotte de véhicules
ou d'un parc immobilier…) soit opérationnels (notamment l'ordonnancement, la gestion de
stock, l'affectation de moyens (humains ou matériels) à des tâches, les prévisions de
ventes…).
La recherche opérationnelle a aussi des applications dans le domaine de l'énergie. Elle est
couramment utilisée dans l'industrie pétrolière, principalement dans l'établissement des
5
plans de production, l'approvisionnement des bruts, l'utilisation des unités de raffinage, et le
choix des canaux de distribution les plus rentables. De même, les opérateurs du marché de
l'électricité font largement appel à la recherche opérationnelle tant pour des problèmes
stratégiques (par exemple des investissements sur le réseau) que pour des questions plus
opérationnelles (stabilité du réseau, prévisions…). Pour plus de détails, voir Plans
d'approvisionnement, de production et de distribution du pétrole
Les applications dans le domaine de l'informatique sont très nombreuses elles aussi. On peut
citer, entre autres, le choix de la localisation et du nombre de serveurs à mettre en place, de
la capacité de stockage, de la puissance de calcul et du débit du réseau, le choix d'une
architecture informatique (application centralisée / distribuée, traitements en temps réel ou
en différé, réseau maillé ou en étoile, etc.), et l'ordonnancement dans les systèmes
d'exploitation.
6
« Optimisation de la viscosité des bétons à faible impact environnemental » Hamza
Soualhi, Thèse de doctorat en Génie civil – 2014
« Optimisation de la formulation et de la tenue aux hautes températures d’un béton
à base d’époxyde » Oussama Elalaoui, Thèse de doctorat en Génie civil – Cergy, 2012
« Optimisation de bétons de chanvre projeté et moulé - Caractérisation du matériau
de référence » Julien Chamoin Florence Collet Sylvie Prétot, Communication dans un
congrès
XXVIèmes rencontres universitaires de Génie Civil, 2008, Nancy, France. 2008.
« Malaxage des bétons à hautes performances et des bétons auto-plaçants :
optimisation du temps de fabrication » David Chopin, Thèse de doctorat en Génie
civil, Soutenue en 2002 à Nantes , en partenariat avec École centrale de Nantes
« Optimisation des portiques dans les conditions d'adaptation avec des restrictions
en déplacements » Valentinas Skaržauskas , Dovilė Merkevičiūtétė & Juozas
Atkočiūnas, Journal Revue Européenne de Génie Civil Volume 9, 2005
« Optimisation des structures métalliques élastoplastiques sous conditions de rigidité
et de plasticité données » Valentinas Skaržauskas , Dovilė Merkevičiūtétė & Juozas
Atkočiūnas, Journal European Journal of Environmental and Civil Engineering Volume
13, 2009 - Issue 10
« Conception et optimisation d'amortisseurs à masse accordée pour les structures du
génie civil » Anissa Allani, Thèse, Matériaux et structures en mécanique, Université
Paris-Est, 2015. Français.
L'algorithme du simplexe, développé par Dantzig à partir de 19472, est une méthode de
résolution finie d'un problème d'OL. Le qualificatif fini signifie qu'en un nombre fini d'étapes,
l'algorithme trouve une solution ou montre que le problème est non borné ou encore
montre que le problème n'est pas réalisable (les seules trois possibilités pour un problème
d'OL). L'algorithme a une interprétation géométrique simple. Les itérés sont des sommets de
l'ensemble admissible (un polyèdre convexe). En un sommet, l'algorithme détermine une
arête (face de dimension 1) de l'ensemble admissible le long de laquelle la fonction-coût
décroît et prend comme nouvel itéré le sommet situé au bout de l'arête sélectionnée
(opération appelée pivotage). Il peut y avoir plusieurs arêtes permettant de faire décroître la
fonction-coût. Dans la règle du coût réduit minimal, l'algorithme choisit une arête le long de
laquelle la fonction-coût décroît le plus.
7
Bien que l'algorithme du simplexe soit souvent efficace en pratique, ce n'est pas un
algorithme polynomial : en réalité, il est exponentiel dans le pire des cas. Klee et Minty
(1972) ont en effet construit un problème, dans lequel l'ensemble admissible est un «cube»
de Rn légèrement déformé, pour lequel l'algorithme du simplexe visite les 2n sommets de
l'ensemble admissible. C'est le fait de prendre une décision à chaque itération à partir
d'information locale (le coût réduit par exemple), ayant des effets globaux (le nombre
d'itérations dépend du nombre de sommets visités avant d'arriver en une solution), qui ne
permet pas d'obtenir la polynomialité de l'algorithme. Cet exemple est lié à une règle
particulière de pivotage, mais des variantes de l'exemple de Klee et Minty existent pour la
plupart des règles de pivotage, voir Terlaky et Zhang (1993). On ne sait d'ailleurs pas
aujourd'hui (2011) s'il existe une règle de pivotage qui permettrait d'avoir la polynomialité,
voir De Loera (2011). Ce contre-exemple a stimulé la recherche d'algorithmes pouvant être
polynomiaux en optimisation linéaire, un problème jugé suffisamment simple pour admettre
un tel algorithme. Ceci a conduit aux algorithmes de points intérieurs, qui ont ensuite été
étendus à tous les problèmes d'optimisation (éventuellement non convexes).
L'efficacité souvent observée de l'algorithme du simplexe est justifiée aujourd'hui par le fait
démontré de sa polynomialité en moyenne, pour des données distribuées aléatoirement
suivant diverses lois de probabilité ; voir Borgwardt (1982, 1987), Smale (1983), Megiddo
(1987), Sharmir (1987).
Le premier algorithme polynomial pour l'OL a été proposé par Leonid Khatchian en 1979. Il
est fondé sur la méthode de l'ellipsoïde en optimisation non linéaire précédemment
proposée par Naum Z. Shor. Cette méthode est elle-même une généralisation de la
méthode de l'ellipsoïde en optimisation convexe due à Arkadi Nemirovski (Prix John von
Neumann 2003), et à David B. Yudin. L'efficacité pratique de l'algorithme de Khachiyan
est décevante : l'algorithme du simplexe est pratiquement toujours plus rapide. Cependant,
ce résultat a encouragé la recherche sur les méthodes de points intérieurs.
Depuis lors, plusieurs méthodes de points intérieurs ont été proposées et étudiées.
Contrairement à l'algorithme du simplexe dont les itérés sont des sommets du polyèdre
convexe défini par les contraintes, appartenant donc à la frontière de ce polyèdre, les
méthodes de points intérieurs (dans leur version admissible) génèrent des itérés dans
8
l'intérieur relatif de l'ensemble admissible. Une des méthodes les plus couramment mises
en œuvre est l'algorithme prédicteur-correcteur.
Auteur-
Dantzig (vers 1947) Karmarkar (1984)
initiateur
Concept de
sommet d'un polyèdre convexe chemin central
base
Type de
finie infinie
convergence
Le but premier de ce tableau est de donner les grandes tendances des deux
approches algorithmiques. Il manque certainement de nuance et de précision. On
consultera les articles spécialisés sur ces algorithmes pour plus d'information.
9
considérant pas toutes les données dès le départ (par exemple en ne prenant en
compte qu'un sous-ensemble de contraintes) ou bien en profitant d'une forme
particulière du problème. C’est ce que font les méthodes suivantes :
Méthodes de décomposition de Benders ou la «génération de lignes» (pour problèmes
avec une structure par blocs).
V. L’algorithme SIMPLEXE
Un problème de programmation linéaire est un problème de mathématiques d'optimisation
d'une fonction linéaire sous des contraintes d'inégalités affines. Plus précisément, il s'agit de
déterminer le maximum d'une fonction du type
Il existe plusieurs algorithmes pour résoudre de tels problèmes. Le plus connu est
l'algorithme du simplexe. Nous nous proposons d'étudier son fonctionnement sur un
exemple. On dispose de trois variables, et on souhaite maximiser la quantité
Il est commode de se ramener à des contraintes qui s'écrivent sous formes d'équations. Pour
cela, on introduit de nouvelles variables (autant que d'inéquations), appelées variables
d'écart, que nous notons et on remarque qu'il suffit de maximiser la même
10
quantité sous les contraintes :
On commence par partir d'un choix des variables compatibles avec le système d'inéquations.
Le plus facile est =0, =0, =0 qui entraîne =5, =11 et =8. On part donc de
(0,0,0,5,11,8). Bien sûr, il n'est pas du optimal puisqu'alors la fonction de bénéfice est nulle.
Prenons justement cette fonction de bénéfice. Augmenter (sans toucher ni à , ni à
), permet d'augmenter la fonction de bénéfice. On va augmenter autant que c'est
possible. Bien sûr, si on augmente , on doit diminuer , et pour que les égalités
de contraintes restent respectées. On peut le faire jusqu'à ce que l'une des variables d'écart
s'annule. La première équation nous dit qu'on ne peut pas aller plus loin que =5/2, la
deuxième que =11/4 et la troisième que =8/3. La plus petite de ces valeurs est 5/2.
On ne peut plus choisir n'importe quelle variable. En effet, seule une augmentation de va
augmenter le bénéfice. On procède donc comme précédemment, en augmentant x3 (et en
11
modifiant parallèlement , et ) tant que cela est possible. Ici, la contrainte est
donnée par la troisième équation, et quand =1, on obtient =0 (et =2, =1). La
solution réalisable que l'on a obtenu désormais est (2,0,1,0,1,0), qui conduit à une valeur de
fonction bénéfice égale à 13.
On se rend compte ici que l'on a terminé. Augmenter une des trois variables libres à ce stade
de l'algorithme ( , ou ) ne pourra que diminuer le bénéfice. On a donc trouvé la
solution optimale.
Cet algorithme fonctionne toujours, et permet même de détecter s'il est impossible de
maximiser la fonction bénéfice. Il porte le nom d'algorithme du simplexe, car les contraintes
définissent (dans certains cas) un simplexe (plus généralement, un polyèdre), et l'algorithme
consiste à partir d'un sommet de ce simplexe et à se rendre sur un autre sommet pour
lequel la fonction bénéfice prend une valeur plus élevée.
La méthode de Newton.
La méthode de quasi-Newton.
La méthode du gradient conjugué.
La recherche linéaire.
12
Les régions de confiance.
La méthode de Nelder-Mead.
VII.1 Linéaire :
AIMMS Optimization Modeling inclut la programmation linéaire dans les solutions
de l'industrie dont la licence d'essai est gratuite.
CGAL : la bibliothèque d'algorithmes de géométrie computationnelle comprend un
résolveur linéaire, qui est exact et optimisé pour les problèmes avec peu de
contraintes ou peu de variables
COIN-OR : contient une infrastructure informatique pour la recherche
opérationnelle, bibliothèque à code source ouvert.
Cplex : contient une bibliothèque commerciale pour la programmation linéaire
Vanguard System Linear Programming Optimization Add-In.
GNU Linear Programming Kit contient une bibliothèque libre.
GLPK : pour l'optimisation linéaire, méthode du simplex, de points intérieurs, …
GIPALS : environnement de programmation linéaire et bibliothèque de liens
dynamiques.
HOPDM est basé sur la méthode double primale d'ordre supérieur.
LINDO est un langage de modélisation
LiPS est un programme gratuit, facile à utiliser, conçu pour résoudre les problèmes
de programmation linéaires, entiers et à objectifs.
Linear programming and linear goal programming est un programme gratuit pour
MS-DOS.
MOSEK est un logiciel d'optimisation pour LP, IP, QP, SOCP et MIP. Essai gratuit est
disponible. Gratuit pour les étudiants.
Mathematica est un système informatique technique général inclut un support de
programmation linéaire à grande échelle.
Microarray Data Classification Server (MDCS) est basé sur la programmation
linéaire.
Optimj est une extension du langage de programmation Java avec prise en charge du
langage pour l'écriture de modèles d'optimisation et d'abstractions puissantes pour
le traitement de données en bloc.
13
Orstat2000 inclut des modules faciles à utiliser pour la programmation linéaire et
entière (gratuits à des fins éducatives).
Premium Solver.
QSopt est un logiciel d’optimisation pour LP.
R est un logiciel libre de calcul statistique contenant des librairies additionnelles
pour l'OL.
Scilab dispose de la commande karmarkar() permettant de résoudre un problème
d'optimisation linéaire par l'algorithme de Karmarkar.
Simplex Method Tool est une page WEB à chargement rapide.
What's Best! est un complément de feuille de calcul.
Xpress-MP est un logiciel d’optimisation gratuit.
IMSL : développements pour Fortran, C/C++, Java et C#
Gurobi est un solveur commercial: programmation linéaire (LP) et programmation à
nombres entiers mixtes (MILP) ainsi que programmation quadratique et quadratique
contrainte (QP, QCP, MIQP et MIQCP).
14
FortMP pour la programmation entière, linéaire et quadratique.
FortSP pour la programmation stochastique.
GAMS est un système de modélisation algébrique générale
Gurobi pour la programmation entière, linéaire et quadratique.
HEEDS MDO pour l’optimisation multidisciplinaire de la conception à l'aide de
SHERPA, un algorithme d'optimisation hybride adaptatif.
IMSL Numerical Libraries à l’aide des algorithmes d'optimisation QP et LP linéaires,
quadratiques, non linéaires et peu nombreux implémentés dans les langages de
programmation standard C, Java, C # .NET, Fortran et Python.
IOSO (Indirect Optimization on the basis of Self-Organization) une technologie
d'optimisation non linéaire multidimensionnelle et multiobjective.
Kimeme est une plate-forme ouverte pour l'optimisation multi-objective et
l'optimisation de la conception multidisciplinaire.
LINDO (Linear, Interactive, and Discrete Optimizer) est un progiciel pour la
programmation linéaire, la programmation en nombres entiers, la programmation
non linéaire, la programmation stochastique et l'optimisation globale. Le "Quoi de
mieux!" Le complément Excel effectue une optimisation linéaire, entière et non
linéaire à l'aide de LINDO
.LIONsolver est un logiciel intégré pour l'exploration de données, l'analyse, la
modélisation Learning and Optimization Intelligent et l'approche de Business
Intelligence réactive.
modeFRONTIER est une plate-forme d'intégration pour l'optimisation multi-objective
et multidisciplinaire, qui permet un couplage transparent avec des outils d'ingénierie
tiers, permet l'automatisation du processus de simulation de conception et facilite la
prise de décision analytique.
Maple est une optimisation linéaire, quadratique et non linéaire, continue et entière.
Contraint et sans contrainte. Optimisation globale avec la boîte à outils
complémentaire.
MATLAB pour les problèmes linéaires, entiers, quadratiques et non linéaires avec
Optimization Toolbox; maxima multiple, minima multiple et problèmes
d'optimisation non lissés; estimation et optimisation des paramètres du modèle.
MIDACO est un outil logiciel léger pour l'optimisation mono et multi-objectif basé sur
l'informatique évolutive. Écrit en C, C++ et Fortran avec des passerelles vers Excel,
VBA, Java, Python, Matlab, Octave, R, C#..
Mathematica est pour l’optimisation multivariée à grande échelle, linéaire et non
linéaire, optimisation continue et entière.
ModelCenter est un environnement graphique pour l'intégration, l'automatisation et
l'optimisation de la conception.
MOSEK pour l’optimisation linéaire, quadratique, conique et convexe, continue et
entière.
15
NAG pour le calcul des sommes linéaires, quadratiques, non linéaires, des sommes
de carrés de fonctions linéaires ou non linéaires; linéaires, linéaires clairsemés, non
linéaires, liés ou pas de contraintes; optimisation locale et globale; problèmes
continus ou entiers.
NMath pour la programmation linéaire, quadratique et non linéaire.
OptimJ est un langage de modélisation basé sur Java. L'édition Premium inclut la
prise en charge des solveurs Gurobi, Mosek et CPLEX.
Optimus platform – une plate-forme d'intégration de processus et d'optimisation de
la conception développée par Noesis Solutions.
optiSLang est une solution logicielle pour l'analyse de sensibilité, l'optimisation et
l'évaluation de la robustesse basées sur CAE.
OptiY - un environnement de conception fournissant des stratégies d'optimisation
modernes et des algorithmes probabilistes à la pointe de la technologie en matière
d'incertitude, de fiabilité, de robustesse, d'analyse de sensibilité, de data mining et
de méta-modélisation.
OptiStruct .
PottersWheel – estimation de paramètres dans les équations différentielles
ordinaires.
pSeven il contient une plate-forme logicielle pour l'automatisation de la simulation et
de l'analyse d'ingénierie, l'optimisation multidisciplinaire et l'exploration de données,
développée par DATADVANCE.
SmartDO est une optimisation globale multidisciplinaire de la conception, spécialisée
en ingénierie assistée par ordinateur (IAO). en utilisant les approches de recherche
globale directe.
SNOPT est pour les problèmes d'optimisation à grande échelle.
The Unscrambler X est un logiciel de formulation de produits et d'optimisation de
processus.
TOMLAB prend en charge l'optimisation globale, la programmation en nombres
entiers, tous les types de moindres carrés, la programmation linéaire, quadratique et
sans contrainte pour MATLAB. TOMLAB supporte les solveurs comme Gurobi, CPLEX,
SNOPT, KNITRO et MIDACO.
VisSim est un langage de schéma visuel pour la simulation et l'optimisation de
systèmes dynamiques.
WORHP est un résolveur fragmenté à grande échelle pour une optimisation non
linéaire continue.
16
VIII. Conclusion
Que ce soit dans le domaine du génie civil ou autre, l’optimisation revêt une importance
significative, si bien qu’elle est devenu un objectif commun à toutes les disciplines
scientifiques au vu des nombreux avantages qu’elle procure, du gain économique à
l’optimisation du volet technique.
17