Algorithmes Optimisation
Algorithmes Optimisation
Représentation de quelques
algorithmes pour les
problèmes d'optimisation
combinatoire
Devant le jury :
Mr. Selt Omar M.C.A. Univ de M'sila Encadreur
Mr. Mustapha Dilmi M.C.B. Univ de M'sila Président
Mr. Bachir Gagui M .C.A. Univ de M'sila Examinateur
Je remercie Dieu le tout puissant pour m’avoir donné toute cette force et ce courage pour
faire aboutir ce travail.
Je tiens à remercier ma encadreur de mémoire Mr Omar Selt. Pour m’avoir soutenue
et encouragée tout au long de la préparation de cette mémoire. Et pour m’avoir inspirée et
guidée durant le cheminement de ce travail. Cette mémoire n’aurait pas vu le jour sans sa
détermination à mener à bien ce projet.
Ma sincère reconnaissance à tous les membres du jury pour l’honneur qu’ils me font en
acceptant de présider et examiner ce travail.
Mr Gagui Bachir
Mr Dilmi Mustapha
Je remercie également ceux qui m’ont aidé de près ou loin à réaliser ce travail.
DÉDICACES
Je dédie ce travail à mon mari qui m’a accompagné et soutenu durant ces années, ma
famille qui m’a vraiment encouragé pour terminer ce travail, mon collègue. Je les remercie
pour leurs encouragements durant toute la période d’élaboration de ce travail.
Table des matières
Introduction 1
Notations 2
iii
TABLE DES MATIÈRES
3 La méthode du simplexe 14
3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.1 Algorithme du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Conclusion 22
Bibliographie 23
iv
Introduction
1
Notations
PL Programmation Linéaire
P LN E Programmation Linéaire en Nombres Entiers
OC Optimisation Combinatoir
P ASC P robleme d’a¤ectation sous contraintes
CSOP P robleme d’Optimisation sous contraintes
PM P robleme Mathématique
M CSP P robleme de contisfaction partielles(maximales)
IA Intelligen Ariti…cielle
RO Recherche Opérationalle
PMD Programme Mathématique Discrette
CSP Contraint de datisfaction P robleme
2
Chapitre 1
Optimisation Combinatoire et
modélisations
1.1 Introduction
La programmation linéaire en nombres entiers est un outil puissant de modélisation : en
et, de nombreux problèmes d’optimisation combinatoire peuvent être formulés comme des
PLNE particuliers. Ainsi, un algorithme permettant de résoudre un PLNE permet de ré-
soudre beaucoup de problèmes d’optimisation combinatoire. Il existe d’ailleurs de nombreux
logiciels, appelés solveurs entiers, utilisés pour la résolution de problèmes d’optimisation
combinatoire pratiques (industrie, transport,...). Malheureusement, les seuls algorithmes
(B&B) connus pour résoudre tous les PLNE sont exponentiels car ils consistent à énumérer
un grand nombre de solutions. Nous verrons dans cette partie, comment l’algorithme B&B
peut-être enrichi par un algorithme de coupes. D’autre part, il est souvent di-cile de trou-
ver une formulation PLNE e-cace pour traiter problème d’optimisation combinatoire. Nous
verrons qu’il est possible d’utiliser des formulation non compactes, c’est-à-dire possédant un
nombre exponentiel de contraintes (Résolution par algorithme de coupes ou B&C) ou de
variables (Résolution par Génération de colonnes ou B&C).
3
1.2. Problèmes d’optimisation Combinatoire
4
1.3. Les problèmes combinatoires
heuristique type recuit simulé ou méthode tabou sera parfaite surtout dans un contexte
industriel) et en…n pour les problèmes résolus polynomialement, encore faut-il le savoir !
5
1.4. Optimisation combinatoire et a¤ectation sous contraintes
4. La proximité du problème (si on n’a pas d’excellentes évaluations, celles-ci sont in-
utiles).
Une soixantaine d’heures (cours et exercices inclus). Nous ne le prétendrons pas. Nous
insisterons sur les idées principales et la présentation des algorithmes les plus fondamentaux.
En e¤et ces algorithmes sont les outils de bases pour des méthodes plus élaborées. Nous
objectifs sont de faire prendre conscience de la complexité des problèmes, du danger du
combinatoire et de l’utilité des graphes pour modéliser. Espérons que cela vous évitera sur
le terrain de concevoir de belles maquettes parfaites pour des exemples d’écoles de petites
tailles mais inutilisables sur des problèmes réel.
6
1.4. Optimisation combinatoire et a¤ectation sous contraintes
Dé…nition 1.4.1 [PAP 82]. Une instance I d’un problème de minimisation est un couple
(X; f ) où X S est un ensemble …ni de solutions admissibles, et f une fonction de coût (ou
objectif) à minimiserf : X ! R. Le problème est de trouver s 2 X tel que f (s ) f (s)
pour tout éléments 2 X. Notons que d’une manière similaire, on peut également dé…nir
les problèmes de maximisation en remplaçant simplement par . L’optimisation combi-
natoire trouve des applications dans des domaines aussi variés que la gestion, l’ingénierie,
la conception, la production, les télécommunications, les transports, l’énergie, les sciences
sociales et l’informatique elle-même.
7
1.5. Programmation mathématique
On peut remarquer qu’un PM peut être une maximisation ou une minimisation (il su¢t
de poser la fonction f 0 = f:
On appelle inégalités une contrainte gi (x) 0 ou gi (x) 0: en cas de présences des
deux contraints gi (x) 0 et gi (x) 0, on parle alors d’égalité gi (x) = 0:
Un vecteur x véri…ant les contraintes d’un PM est dit solution ou solution réalisable
du PM. L’ensemble des solutions d’un PM forme un domaine de dénition. Le domaine de
dénition d’un PM peut être : vide (dans ce cas, le problème n’admet pas de solutions),
dans le cas contraire, le PM admet des solutions. Sous certaines conditions, il peut exister
8
1.5. Programmation mathématique
des solutons x dites optimales, c’est-à-dire qui maximisent la fonction f (x) sur toutes les
solutions du PM.
Plusieurs cas de PM sont à mettre en évidence:
Dans le cas des programmes entiers (donc discrets également), on peut noter alors un
(PMD) de la façon suivante :
Maximiser f (x) sous les contraintes gi (x) 0, i = 1; :::; m; x 2 Zn :
On désigne alors x 2 Zn comme étant la contrainte d’intégrité (ou d’entiéreté en Belgique
ou d’intégralité au Québec) (integrity or integrality constraint).
On appelle relaxation le fait de “relâcher “, c’est-à-dire supprimer une contrainte du
problème. Ainsi, un programme relaxé désignera un programme où l’on aura supprimé une
ou plusieurs contraintes. On appelle relaxation continue le fait de “relâcher” les contraintes
d’intégrité du problème. Par abus de langage, on appelle aussi souvent relaxation continue
le fait de résoudre le programme que où l’on a relâché les contraintes d’intégrité (l’expression
désigne même parfois la solution optimale obtenue).
9
Chapitre 2
10
2.2. Programmation Linéaire en Nombres Entiers(PLNE)
Il existe de nombreux solveurs de PL: des solveurs commerciaux Cplex (IBM), Xpress,
Gurobi (microsoft), et même Matlab ou Excel; des solveurs académiques Lp de COIN-OR,
Soplex de la ZIB, et des solveurs libres comme Glpk (gnu).
Les meilleurs d’entre eux peuvent résoudre des PL jusqu’à 200000 variables et 200000
contraintes en quelques secondes.
En revanche, les solveurs entiers performants sont beaucoup moins performants: Ils
sont en général liés aux solveurs PL: Glpk par exemple ne dépassent pas quelques 100
aine de variables et contraintes; les solveurs commerciaux Cplex ou Gurobi sont les plus
performants (Xpress est un peu en-dessous) pouvant réussir parfois quelques milliers de
variables/contraintes, un solveur “universitaire” les rattrape : SCIP de la ZIB.
Un des objectifs de ce cours est de comprendre comment et dans quels cas ces solveurs
atteignent de telles capacités.
11
2.2. Programmation Linéaire en Nombres Entiers(PLNE)
réalisables est un exemple d’un problème NP-complet une classe de problèmes pour les quels
personne ne sait s’il existe ou non un algorithme e¢cace (opérant en temps polynomial).
Les meilleurs algorithmes connus sont capables de traiter des programmes avec quelques
dizaines de variables (par comparaison ,on peut traiter des PL de plusieurs milliers de
variables).Méthodes heuristiques.
12
2.3. Les algorithemes heuristiques
– Séparer sur une variable dont la valeur (dans la solution optimale du programme
relaxé) est la plus proche d’un entier min est cette valeur (arrondie)
13
Chapitre 3
La méthode du simplexe
3.1 Principe
Lorsque nous sommes en présence de plus de deux produits, la méthode du simplexe est
la seule méthode permettant de trouver la combinaison de produits qui rend optimal la
fonction économique.
Le principe de résolution nécessite un certain nombre d’étapes contenu au travers de
l’algorithme du simplexe dont la démarche est la suivante : (voir schéma).
3.2 Application
La résolution par l’algorithme du simplex se déroule selon 8 étapes avant un nouveau passage.
ll s’agit convertir le programme établi sous forme canonique (systeéme d’inéquation) sous la
forme standard (systeme d’équation avec variable d’écarts). Les variables d’écart introduites
au cours de cette transformation représentent les contraintes techniques et commerciales
14
3.2. Application
Forme canonique
8
>
>
> 3x + 2y 1800
>
x 400
>
>
>
>
<
y 600
>
>
x 0 et y 0
>
>
>
>
>
>
M axB = 30x + 50y
:
Forme standard
e1 ; e2 ; e3 représentant les variables d’écart
8
>
>
> 3x + 2y + e1 = 1800
>
x + e2 = 400
>
>
>
>
<
y + e3 = 600
>
>
>
>
>
>
>
>
30x + 50y
:
x y e1 e2 e3
e1 3 2 1 0 0 1800
e2 1 0 0 1 0 400
e3 0 1 0 0 1 600
max 30 50 0 0 0 0
où {e1 ; e2 ; e3 } sont les valeur de base; Coe¢cient Eij ={3; 2; 1; 0; 0; :::0; 1}; max={30; 50; 0; 0; 0;}
fonction économique; Valeur solutions {1800; 400; 600; 0}.
3eme étape: Choisir les variables a introduire dans la base. Pour cela choisir le
coe¢cient le plus fort de la fonction économique
Le coe¢cient de la fonction économique (M AX) est 50. Ainsi il s’agit de la variable y qui
rentre en base.
15
3.2. Application
Le second membre, nous retenons la valeur la plus faible du rapport second membre=coe¢cient
de la variable choisie. Ainsi la variable e; est la variable a enlever de la base.
6eme étape : Multiplier la ligne du pivot par le rapport : 1= valeur du pivot (ou diviser la
ligne du pivot par le pivot)
16
3.2. Application
0
Cette opération consiste a transformer Eij des autres lignes en Eij ; nous e¤ectuons un
calcul maitriciel.
1ere ligne
3=3 [(2=1) 0]
0=2 [(2=1) 1]
1=1 [(2=1) 0]
0=0 [(2=1) 0]
2=0 [(2=1) 1]
600 = 1800 [(2=1 600]
2eme ligne
1=1 [(0=1 0]
0=0 [(0=1 1]
0=0 [(0=1 0]
1=1 [(0=1 0]
0=0 [(0=1 1]
400 = 400 [(0=1 600]
4eme ligne
30 = 30 [(50=1) 0]
0 = 50 [(50=1)x1]
0=0 [(50=1) 0]
0=0 [(50=1) 0]
50 = 0 [(50=1)x1]
30000 = 0 [(50=1 600]
x y e1 e2 e3
1ere ligne e1 3 2 1 0 0 1800
2eme ligne e2 1 0 0 1 0 400
ligne du Pivot y 0 1 0 0 1 600
4eme ligne max 30 50 0 0 0 0
17
3.2. Application
8eme étape : Les coe¢cients de la fonction économique sont ils tous nuls ou négatifs ?
(si oui
Les coe¢cients de la fonction économique ne sont pas tous nuls ou négatifs (30) il convient
d’e¤ectuer un nouveau [Link] sommes a l’optimum, si non nous e¤ectuons un nouveau
passage).
3. Choisir les variables a introduire dans la base : choisir le coe¢cient le plus fort de la
fonction économique.
5. Encadrer le pivot.
Nouveau passage:
Choisir les variables a introduire dans la base. Pour cela choisir le coe¢cient le plus fort de
la fonction économique.
Le coe¢cient de la fonction économique (MAX) est 30. Ainsi il s’agit de la variable x
qui rentre en base.
18
3.2. Application
– Multiplier la ligne du pivot par 1=3 (ou diviser la ligne du pivot par le pivot : 3)
2ere ligne
0=1 [(1=3) 3]
0=0 [(1=3) 0]
1=3 = 0 [(1=3) 1]
1=1 [(1=3) 0]
2=3 = 0 [(1=3) 2]
200 = 400 [(1=3 600]
3eme ligne
0=0 [(0=3 3]
1=1 [(0=3 0]
0=0 [(0=3 1]
0=0 [(0=3 0]
1=1 [(0=3 2]
600 = 600 [(0=3 600]
4eme ligne
30 = 30 [(30=3) 3]
0=0 [(30=3) 0]
10 = 0 [(30=3) 1]
0=0 [(30=3) 0]
30 = 50 [(30=3) 2]
30000 = 0 [(30=3 600]
19
3.3. Exemple
x y e1 e2 e3 2eme membre
ligne du Pivot x 1 0 1=3 0 2=3 200
2eme ligne e2 0 0 1=3 1 2=3 200
3ere ligne y 0 1 0 0 1 600
4eme ligne max 0 0 10 0 30 36000
3.3 Exemple
Un atelier fabrique 2 modèles X et Y , le produit X ne peut être vendu à plus de 400
exemplaires, le produit Y ne peut être vendu à plus de 600 exemplaires. Pour fabriquer X
il faut 3 heures de main
d’œuvre, et 2 heures pour Y , en sachant que l’entreprise ne dispose de 1800 heures de
main d’œuvre. La marge sur coût variable réalisée sur la vente d’un X est de 30e, de la
vente d’un Y est de 50e:
Quelle est la combinaison productive qui permet de maximiser la marge sur coût vari-
able?
La dé…nition du programme linéaire est la suivante:
20
3.3. Exemple
– Contraintes logiques : les quantités produites ne peuvent pas être négatives d’où
les inéquations suivantes: x 0 et y 0.
21
Conclusion
Dans ce mémoire nous avons étudier comment maximisé ou bien minimisé un problème
d’optimisation avec plusieure méthode en eet la méthode de simplexe comme un exemple,
et on a aussi la résolution d’approximation d’algorithmes heuristiques.
22
Bibliographie
[1] Jin - Kao Hao, philippe Galinier, Michel HAbib. RIA, Revue d’ Intelligence Arti…cielle
Méthaheuristiques pour L’optimisation combinatoire et L’a¤ectation sous contraintes,
Vol: No, 1999.
[6] Bemard Auge - Alexandre vemhet, Module 06 - Leçon 2 leçon 03: La mèthode du
simplexe,Académie de l’execllence-kademiatn,2019
23
خصFG
7N7.J' 0FNر7 'FG0F وN.'G0Fل䐧' FN7تحJ' 0KGشG IحJ Nط. حN صح/0 ع0.Gر. 'FG0.ت7' /رGذGJ' G هذNف
.H'ثGG
: /فت'حيGF' 0'GFكF'
.N.'G0Fل䐧' FN7تحJ' 0KGشG
.1'N'ضNرJ' 0.Gر.
.Nط. حN صح/0 ع0.Gر., 0Nط.J' 0.Gر.J'
.7N7.J' 0FNر7
Dans cette mémoire ,nous avons utilisé la programmation linéaire en nombre entier
pour la résolution de problème d'optimisation combinatoires ,et nous avons fourni la
méthode de simplexe comme exemple.
Mots clé:
Problème d'optimisation combinatoire.
programmation mathématique.
programme linéaire en nombre entier.
la méthode de simplexe.
Abstract
In this memory we have used integer linear programming for solving combinatorial
optimization problem , and we have provided the simplex method as an example.
Key words :
Combinatorial optimization problem.
mathematical programming.
linear program, linear programming in integer number.
the simplex method.