Cours de Recherche Opérationnelle
Cours de Recherche Opérationnelle
Introduction
Programmation Mathématique
1. Problème de programmation mathématique
[Link]élisation d’un problème linéaire
3. Résolution graphique
4. Algorithme de Simplexe
5. Application aux problèmes de transport et de production
Dualité
1. Interprétation Économique
[Link] Primal & Dual
Théorie d’ordonnancement
1. Description
2. Méthodes de Résolution
Théorie des Graphes
1. Représentation d'un graphe
2. Connexité, Parcours eulériens et Hamiltoniens
3.Méthode de recherche de chemins
Heuristiques et Métaheuristiques
1. Heuristiques
2. Métaheuristiques : Algorithmes Génétiques, Colonies de Fourmies, PSO..
1
Définition
v La Recherche Opérationnelle
• 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.
2
Applications
Production
Transport
Mobilité
3
Applications
4
Première Partie
Programmation Mathématique
Préliminaires
6
Programme Mathématique
v Définition
7
Programme Mathématique
v Remarque
• Dans toute la suite nous ne considérons que le problème avec fonction objectif
égale à 𝑴𝒊𝒏 𝒇 𝒙 . En effet, 𝑴𝒂𝒙 𝒇 𝒙 = −𝑴𝒊𝒏 − 𝒇 𝒙 . Donc on peut
facilement ramener un problème de maximisation à un problème de
minimisation.
• Dans le problème (P) on a considéré que les contraintes d’inégalités, car une
contraintes d’égalité de type 𝒉 𝒙 = 𝟎 peut être remplacée par les deux
contraintes d’inégalités suivantes : 𝒉 𝒙 ≤ 𝟎 et 𝒉 𝒙 ≥ 𝟎.
8
Solution Réalisable
v Définition
𝒉𝒊 𝒙 ≤ 𝟎, 𝒊 = 𝟏, … . 𝒎
O
𝒙∈𝑪
9
Domaine Réalisable
Solution Optimale
• Si (P) est un problème de minimisation, alors la solution optimale est la solution qui
minimise f(x) sur l’ensemble de toutes les solutions.
10
v Remarque
• On dit que 𝒙 est un optimum local de (P) s’il existe un voisinage 𝑽𝒙 de 𝒙 tel
que 𝒙 soit un optimum global du problème (P1) suivant :
𝑴𝒊𝒏 𝒇 𝒙
𝑺𝒐𝒖𝒔 𝒍𝒆𝒔 𝒄𝒐𝒏𝒕𝒓𝒂𝒊𝒏𝒕𝒆𝒔 ∶
(P1)
𝒉𝒊 𝒙 ≤ 𝟎, 𝒊 = 𝟏, … . 𝒎
𝒙 ∈ 𝑪 ∩ 𝑽𝒙
11
v Remarque
• On dit que 𝒙 est un optimum local de (P) s’il existe un voisinage 𝑽𝒙 de 𝒙 tel
que 𝒙 soit un optimum global du problème (P1) suivant :
𝑴𝒊𝒏 𝒇 𝒙
𝑺𝒐𝒖𝒔 𝒍𝒆𝒔 𝒄𝒐𝒏𝒕𝒓𝒂𝒊𝒏𝒕𝒆𝒔 ∶
(P1)
𝒉𝒊 𝒙 ≤ 𝟎, 𝒊 = 𝟏, … . 𝒎
𝒙 ∈ 𝑪 ∩ 𝑽𝒙
12
13
Classes de problèmes de programmation mathématique
14
Classes de problèmes de programmation mathématique
15
Avant de résoudre un problème industriel, il faut bien commencer par sa
modélisation. Cette dernière passe par la traduction du problème en
relations mathématiques.
16
Formulation mathématique
Identifier les
restrictions
Identifier les restrictions (les contraintes) définissant la nature du
(Contraintes) système étudié et les exprimer par un système d’équations linéaires
17
Problème 1 : Fabricant de Yaourts
Alors, Soient :
Et
19
Problème 1 : Fabricant de Yaourts
21
Problème 1 : Fabricant de Yaourts
22
Problème 2 : Fleuriste
23
Problème 2 : Fleuriste
Alors, Soient :
24
Problème 2 : Fleuriste
26
Problème 2 : Fleuriste
𝑀𝑎𝑥𝑖𝑚𝑖𝑠𝑒𝑟 80 𝑥U+ 60 𝑥V
𝑆𝑜𝑢𝑠 𝑙𝑒𝑠 𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 ∶
10𝑥U + 6𝑥V ≤ 45
4𝑥U + 6𝑥V ≤ 36
2𝑥U + 6𝑥V ≤ 27
𝑥U, 𝑥V ∈ ℕ
27
Problème 3 : fabrique artisanale
Une fabrique artisanale produit des articles de poterie et des articles d’émaux sur
cuivre, sachant que :
• Le nombre total d’articles fabriqués ne doit pas être supérieur à 80 unités par
jour.
30
Forme Canonique
31
Forme Standard
33
Forme Standard
34
Exemple 1 : variables d’écart
𝑀𝑖𝑛 𝑐7 𝑥7 + 𝑐8 𝑥8 + ⋯ + 𝑐9 𝑥9
𝑆𝑜𝑢𝑠 𝑙𝑒𝑠 𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 ∶
𝑎77 𝑥: + 𝑎78 𝑥: + ⋯ + 𝑎79 𝑥: ≤ 𝑏7
(P) 𝑎87 𝑥: + 𝑎88 𝑥: + ⋯ + 𝑎89 𝑥: ≤ 𝑏8
⋮
𝑎;7 𝑥7 + 𝑎;8 𝑥8 + ⋯ + 𝑎;9 𝑥9 ≤ 𝑏;
𝑥7 , 𝑥8 , … , 𝑥9 ≥ 0
35
Exemple 1 : variables d’écart
Le problème (P) peut être écrit sous la forme standard en ajoutant une variable
d ’écart à chaque contrainte.
Ainsi la contrainte :
36
Exemple 1 : variables d’écart
Le problème (P) peut être écrit sous la forme standard en ajoutant une variable
d ’écart à chaque contrainte.
37
Exemple 2 : variables de surplus
𝑀𝑖𝑛 𝑐7 𝑥7 + 𝑐8 𝑥8 + ⋯ + 𝑐9 𝑥9
𝑆𝑜𝑢𝑠 𝑙𝑒𝑠 𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 ∶
𝑎77 𝑥: + 𝑎78 𝑥: + ⋯ + 𝑎79 𝑥: ≥ 𝑏7
(P) 𝑎87 𝑥: + 𝑎88 𝑥: + ⋯ + 𝑎89 𝑥: ≥ 𝑏8
⋮
𝑎;7 𝑥7 + 𝑎;8 𝑥8 + ⋯ + 𝑎;9 𝑥9 ≥ 𝑏;
𝑥7 , 𝑥8 , … , 𝑥9 ≥ 0
38
Exemple 2 : variables de surplus
Le problème (P) peut être écrit sous la forme standard en ajoutant une variable de
surplus −𝑦% à chaque contrainte.
39
Forme Standard
40
Incompatibilité des contraintes
41
Redondance des contraintes
42
Problème 4 : Problème de localisation
44
Après avoir modélisé un problème sous forme d’un programme mathématique
linéaire, il faut maintenant trouver des méthodes appropriées pour le résoudre.
Parmi les méthodes les plus utilisées nous trouvons :
• La méthode graphique (pour les problèmes simples à deux variables)
• La méthode du Simplexe
• La méthode du point intérieur
45
3.1 Résolution Graphique
46
3.1 Résolution Graphique
47
3.1 Résolution Graphique
48
3.1 Résolution Graphique
49
3.1 Résolution Graphique
• Lorsque l’on fait l’intersection des cinq demi-plans correspondant aux cinq
contraintes, on obtient le polygone hachuré suivant :
50
3.1 Résolution Graphique
• En effet, on remarquera que l’expression de la fonction objectif fait intervenir trois variables
et ne peut donc être représentée que dans l’espace. Pour se ramener dans le plan, on va
considérer des valeurs successives de l’objectif :
52
3.1 Résolution Graphique
• Les points d’une de ces droites sont donc le lieu de tous les points donnant la même valeur
du profit (d’où le nom de droite d’isovaleur de la fonction objectif). Ceci est fait à la figure
où l’on a représenté z = 10, 20 et 36.
53
3.1 Résolution Graphique
54
3.1 Résolution Graphique
55
3.1 Résolution Graphique
56
Problème 1 : Fabricant de Yaourts
57
Problème : fabrique de bonbons
57
3.2 Algorithme de simplexe
v Objectif
58
3.2 Algorithme de simplexe
59
3.2 Algorithme de simplexe
𝑀𝑎𝑥𝑖𝑚𝑖𝑠𝑒𝑟 3 𝑥# + 5 𝑥$ 𝑀𝑎𝑥𝑖𝑚𝑖𝑠𝑒𝑟 3 𝑥# + 5 𝑥$
𝑆𝑜𝑢𝑠 𝑙𝑒𝑠 𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 ∶ 𝑆𝑜𝑢𝑠 𝑙𝑒𝑠 𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 ∶
𝑥# ≤ 4 𝑥# + 𝑒# = 4
2𝑥$ ≤ 12 ⇔ 2𝑥$ + 𝑒$ = 12
3𝑥# + 2𝑥$ ≤ 18 3𝑥# + 2𝑥$ + 𝑒& = 18
𝑥# , 𝑥$ ≥ 0 𝑥# , 𝑥$ , 𝑒# , 𝑒$ , 𝑒& ≥ 0
60
𝑀𝑎𝑥𝑖𝑚𝑖𝑠𝑒𝑟 3 𝑥# + 5 𝑥$
3.2 Algorithme de simplexe 𝑆𝑜𝑢𝑠 𝑙𝑒𝑠 𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 ∶
𝑥# + 𝑒# = 4
• Étape 2 : Tableau de simplexe
2𝑥$ + 𝑒$ = 12
3𝑥# + 2𝑥$ + 𝑒& = 18
𝑥# , 𝑥$ , 𝑒# , 𝑒$ , 𝑒& ≥ 0
Variables hors bases
𝑥) 𝑥* 𝑒) 𝑒* 𝑒-
𝑒)
𝑒*
𝑒- Variables de bases
61
𝑀𝑎𝑥𝑖𝑚𝑖𝑠𝑒𝑟 3 𝑥# + 5 𝑥$
3.2 Algorithme de simplexe 𝑆𝑜𝑢𝑠 𝑙𝑒𝑠 𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 ∶
𝑥# + 𝑒# = 4
• Étape 2 : Tableau de simplexe
2𝑥$ + 𝑒$ = 12
3𝑥# + 2𝑥$ + 𝑒& = 18
𝑥# , 𝑥$ , 𝑒# , 𝑒$ , 𝑒& ≥ 0
VB Valeurs 𝑥) 𝑥* 𝑒) 𝑒* 𝑒-
VB (b)
𝑒) 1 O 1 0 0
𝑒* 0 2 0 1 0
𝑒- 3 2 0 0 1
z 3 5 0 0 0
62
𝑀𝑎𝑥𝑖𝑚𝑖𝑠𝑒𝑟 3 𝑥# + 5 𝑥$
3.2 Algorithme de simplexe 𝑆𝑜𝑢𝑠 𝑙𝑒𝑠 𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 ∶
𝑥# + 𝑒# = 4
• Étape 2 : Tableau de simplexe
2𝑥$ + 𝑒$ = 12
3𝑥# + 2𝑥$ + 𝑒& = 18
𝑥# , 𝑥$ , 𝑒# , 𝑒$ , 𝑒& ≥ 0
VB Valeurs 𝑥) 𝑥* 𝑒) 𝑒* 𝑒-
VB (b)
𝑒) 4 1 O 1 0 0
𝑒* 12 0 2 0 1 0
𝑒- 18 3 2 0 0 1
z 0 3 5 0 0 0
𝑒* 12 0 2 0 1 0
𝑒- 18 3 2 0 0 1
z 0 3 5 0 0 0
• la solution est optimale si les coûts relatifs de toutes les variables hors-base sont
négatifs ou nuls.
64
3.2 Algorithme de simplexe
VB Valeurs 𝑥) 𝑥* 𝑒) 𝑒* 𝑒-
VB (b)
𝑒) 4 1 O 1 0 0
𝑒* 12 0 2 0 1 0
𝑒- 18 3 2 0 0 1
z 0 3 5 0 0 0
𝑒* 12 0 2 0 1 0 6
𝑒- 18 3 2 0 0 1 9
z 0 3 5 0 0 0
Nous appliquons la règle du plus petit rapport b/ai pour trouver la variable
sortante
66
3.2 Algorithme de simplexe
𝑒- 18 3 2 0 0 1 9
z 0 3 5 0 0 0
Nous appliquons la règle du plus petit rapport b/ai pour trouver la variable
sortante
La variable sortante est donc 𝑒*
67
3.2 Algorithme de simplexe
• Étape 3 : Pivotage
Le Pivotage s’effectue de la manière suivante :
- Nous commençons par diviser la ligne du pivot par le chiffre du pivot
𝑥" 1
𝑒# 1
z 5/2
68
3.2 Algorithme de simplexe
• Étape 3 : Pivotage
Le Pivotage s’effectue de la manière suivante :
- Nous commençons par diviser la colonne du pivot par le chiffre du pivot
- Ensuite nous divisons la ligne du pivot par le chiffre du pivot
𝑥" 6 0 1 0 1/2 0
𝑒# 1
z 5/2
69
3.2 Algorithme de simplexe
• Étape 3 : Pivotage
Le Pivotage s’effectue de la manière suivante :
- Nous commençons par diviser la colonne du pivot par le chiffre du pivot
- Ensuite nous divisons la ligne du pivot par le chiffre du pivot
- Pour le reste des valeurs nous appliquons la relation suivante :
' é$% ()*+,- +. /0*0..+ 1'(02×% é$% ()*+,- +. *'4.+ 1'(02
𝑎'% − ( )
1'(02
𝑥" 6 0 1 0 1/2 0
𝑒# 1
z 5/2
70
3.2 Algorithme de simplexe
• Étape 3 : Pivotage
Le Pivotage s’effectue de la manière suivante :
- Nous commençons par diviser la colonne du pivot par le chiffre du pivot
- Ensuite nous divisons la ligne du pivot par le chiffre du pivot
- Pour le reste des valeurs nous appliquons la relation suivante :
' é$% ()*+,- +. /0*0..+ 1'(02×% é$% ()*+,- +. *'4.+ 1'(02
𝑎'% − ( )
1'(02
𝑥" 6 0 1 0 1/2 0
𝑒# 6 3 1 0 -1 1
71
Problème : Fabricant de Yaourts
72
Exercice
73
Illustration par exemple Problème de production de huiles d’olives
Cultivar 1 Cultivar 2 Cultivar 3 Profit
Une coopérative produit deux qualités
d’huile d’olive à partir de trois variétés Huile A 30% 20% 50% 7 € /litre
(Cultivars). Huile B 50% 10% 40% 5 € /litre
• Quelles quantités de huiles doit-on
produire pour maximiser le profit ? Stock 500 kg 100 kg 400 kg
𝑀𝑎𝑥𝑖𝑚𝑖𝑒𝑟 7 𝑥. + 5 𝑥/
𝑥. , 𝑥/ ≥ 0
73
Illustration par exemple Problème de production de huiles d’olives
Cultivar 1 Cultivar 2 Cultivar 3 Profit
Une coopérative produit deux qualités
d’huile d’olive à partir de trois variétés Huile A 30% 20% 50% 7 € /litre
(Cultivars). Huile B 50% 10% 40% 5 € /litre
• Quelles quantités de huiles doit-on
produire pour maximiser le profit ? Stock 500 kg 100 kg 400 kg
𝑥& , 𝑥' : Quantités de huiles A et B produites Un concurrent souhaite acheter tous les
stocks.
𝑀𝑎𝑥𝑖𝑚𝑖𝑒𝑟 7 𝑥. + 5 𝑥/ • À quels prix doit-il proposer les
cultivars afin de minimiser sa dépense ?
(Cultivar1) 0,3 𝑥. + 0,5 𝑥/ ≤ 500
𝑥. , 𝑥/ ≥ 0
73
Illustration par exemple Problème de production de huiles d’olives
Cultivar 1 Cultivar 2 Cultivar 3 Profit
Une coopérative produit deux qualités
d’huile d’olive à partir de trois variétés Huile A 30% 20% 50% 7 € /litre
(Cultivars). Huile B 50% 10% 40% 5 € /litre
• Quelles quantités de huiles doit-on
produire pour maximiser le profit ? Stock 500 kg 100 kg 400 kg
𝑥& , 𝑥' : Quantités de huiles A et B produites Un concurrent souhaite acheter tous les
stocks.
𝑀𝑎𝑥𝑖𝑚𝑖𝑒𝑟 7 𝑥. + 5 𝑥/ • À quels prix doit-il proposer les
cultivars afin de minimiser sa dépense ?
(Cultivar1) 0,3 𝑥. + 0,5 𝑥/ ≤ 500
y( , y), y* : Prix proposés pour chaque cultivar
73
Illustration par exemple Problème de production de huiles d’olives
Cultivar 1 Cultivar 2 Cultivar 3 Profit
Une coopérative produit deux qualités
d’huile d’olive à partir de trois variétés Huile A 30% 20% 50% 7 € /litre
(Cultivars). Huile B 50% 10% 40% 5 € /litre
• Quelles quantités de huiles doit-on
produire pour maximiser le profit ? Stock 500 kg 100 kg 400 kg
𝑥& , 𝑥' : Quantités de huiles A et B produites Un concurrent souhaite acheter tous les
stocks.
𝑀𝑎𝑥𝑖𝑚𝑖𝑒𝑟 7 𝑥. + 5 𝑥/ • À quels prix doit-il proposer les
cultivars afin de minimiser sa dépense ?
(Cultivar1) 0,3 𝑥. + 0,5 𝑥/ ≤ 500
y( , y), y* : Prix proposés pour chaque cultivar
Primal Dual 74
L’ « Entreprise » Le « Concurrent »
c, : Profit d’une unité de produit i
b+ : Profit d’une unité de produit j Quels prix unitaires (𝑦+ ) compétitifs faut-
a,+ : Quantité de ressources j nécessaire pour il proposer pour racheter les ressources
une unité de produit i de l’entreprise à coût minimum
Quelles quantités (𝑥+ ) de produit j à y+ : Prix pour la ressource j
fabriquer avec les ressources
disponibles pour maximiser le profit 1
𝑀inimiser - b+ y+
/ +.(
𝑆𝑜𝑢𝑠 𝑙𝑒𝑠 𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 ∶
𝑀aximiser - 𝑐- 𝑥- 2
-.( - 𝑎0- y+ ≥ 𝑏+ , 𝑗 = 1, … . n
𝑆𝑜𝑢𝑠 𝑙𝑒𝑠 𝑐𝑜𝑛𝑡𝑟𝑎𝑖𝑛𝑡𝑒𝑠 ∶
/ -.(
𝑥- ≥ 0
- 𝑎0- 𝑥- ≤ 𝑏0 , 𝑗 = 1, … . 𝑚
-.(
𝑥- ≥ 0
Primal Dual 75
Le programme dual est une symétrie du programme primal, de façon général :
• À toute contrainte du primal correspond une variable du duale;
• À toute variable du primal correspond une contrainte du duale;
• les coefficients de la fonction objectif primale sont les deuxièmes
membres ( b) du dual et réciproquement.
• Il est à noter que le dual du dual est le primal.
76
Tableau des signes
77
Exemple
77
Exemple
78
Dualité faible
Pour toute solution du dual et pour toute solution du primal, la valeur objectif
du dual z=cx* est supérieur ou égal à celui du primal v=bw*.
Dualité forte
79
Théorème des écarts complémentaires
∀𝑗 ∈ [1 … . 𝑚]
∀𝑖 ∈ [1 … . 𝑛]
80
Exemple
(C1) 3 𝑥. + 2 𝑥/ ≤ 600
(C2) 𝑥. + 2 𝑥/ ≤ 400
(C3) 𝑥. + 𝑥/ ≤ 225
𝑥. , 𝑥/ ≥ 0
𝒙𝑨 = 𝟓𝟎, 𝒙𝑩 = 𝟏𝟕𝟓
80
Propriétés des écarts complémentaires
81