Plan Global
Plan Global
1. Introduction générale
2. Introduction à la théorie des graphes
3. Complexité des problèmes, méthodes de résolution
4. Programmation linéaire
2
Introduction générale
Introduction générale
1. Motivation
2. Définitions
3. Formalisation
4. Domaines d’application
4
Motivation
Un voyageur de commerce, basé à
Toulon, doit visiter ses clients à travers
la France
𝐷𝐷
5
Motivation
Données:
𝑛𝑛 villes avec une matrice de distances
𝐷𝐷
Solution:
Tournée visitant chaque ville et revenant
au point de départ
6
Motivation
7
Motivation
Pouvons-nous fournir des méthodes pour répondre à un type
précis de problème, c’est-à-dire à élaborer une démarche universelle
pour un type de problème qui aboutit à la ou les solutions les plus
efficaces?
8
Définitions
Operational research UK, US operations research, Or simply OR
Cambridge Dictionary:
The systematic study of how best to solve problems in business and industry
Wikipedia:
Is the use of mathematical models, statistics and algorithms to aid in decision-
making
9
Formalisation
Face à un problème pratique de décision
Aspects mathématiques
Contraintes, objectifs, simplifications
Modélisation
Graphes, programmation linéaire, PPC...
Analyse des modèles et résolution
Etude de complexité: que peut-on espérer pour le temps disponible?
10
Formalisation
Face à un problème pratique de décision
Mise au point d'algorithmes
Implémentation et analyse des résultats
Valider par rapport à la demande
Itérer avec le demandeur si nécessaire
Déploiement des solutions
Intégration logicielle
11
Domaines d’application
Conception, configuration et exploitation de systèmes techniques
complexes (réseaux de communication, systèmes d'information…)
Gestion de la chaîne logistique (transports, production, stocks...)
Gestion stratégique d'investissements
Et aussi: santé, instruction publique, voirie, ramassage et
distribution de courrier, production et transport d‘énergie,
télécommunications, banques, assurances...
12
Domaines d’application
Production: maximiser le profit selon la disponibilité de la main
d‘œuvre, demande du marché, capacité de production, prix de
revient du matériau brut…
13
Introduction à la théorie des graphes
Introduction à la théorie des graphes
1. Introduction
2. Notions fondamentales sur les graphes
3. Représentation d’un graphe
4. Arbres, forêts et arborescences
5. Problèmes
1. Le problème du plus court chemin
2. Le problème de l’arbre couvrant minimum
3. Le problème de flot maximum
15
Introduction
XVIIIème siècle
Ville de Königsberg
16
Introduction
Peut-on traverser d'une seule traite les 7 ponts de la ville sans
avoir à repasser par l'un d'entre eux ?
17
Introduction
Euler (1707-1783)
Résolution de l’énigme en 1736
Représentation de cette situation à l'aide d'un « dessin »
18
Introduction
19
Introduction
20
Introduction
21
Notions fondamentales sur les graphes
D’un ensemble 𝑋𝑋 non vide et fini dont les éléments sont appelés sommets
ou nœuds. Si 𝑛𝑛 = |𝑋𝑋| est leur nombre, on dira que 𝐺𝐺 est d’ordre 𝒏𝒏
D’un ensemble 𝑈𝑈 ⊆ 𝑋𝑋 × 𝑋𝑋 dont les éléments sont des couples ordonnés
de sommets appelées arcs ou arêtes. On notera souvent 𝑈𝑈 = 𝒎𝒎
22
Notions fondamentales sur les graphes
Si 𝑢𝑢 = 𝑖𝑖, 𝑗𝑗 est un arc de 𝐺𝐺, 𝑖𝑖 et 𝑗𝑗 sont les extrémités de 𝑢𝑢 et sont dites
adjacentes. Si 𝑢𝑢 est orienté de 𝑖𝑖 vers 𝑗𝑗, alors 𝑖𝑖 est l’extrémité initiale de 𝑢𝑢 et 𝑗𝑗 est
l’extrémité terminale de 𝑢𝑢
𝑛𝑛 𝑛𝑛−1
Si tous les nœuds de 𝐺𝐺 sont mutuellement connectés, on aura 𝑚𝑚 = et
2
G sera dit complet
Le degré 𝑑𝑑 𝑖𝑖 d’un sommet 𝑖𝑖 est égal au nombre d’arcs dont 𝑖𝑖 est une
extrémité
23
Notions fondamentales sur les graphes
Dans un graphe orienté, le demi-degré entrant 𝑑𝑑 + (𝑖𝑖) (resp. sortant 𝑑𝑑 − (𝑖𝑖)d’un
sommet 𝑖𝑖 est égal au nombre d’arcs dont 𝑖𝑖 est une extrémité terminale ( resp.
initiale) et nous avons 𝑑𝑑(𝑖𝑖) = 𝑑𝑑 + (𝑖𝑖) + 𝑑𝑑 − (𝑖𝑖)
Un graphe est simple s'il ne contient ni boucle ni arêtes multiples, par boucle
on sous-entend une arête dont ses deux extrémités sont identiques et par
arêtes multiples les différentes arêtes reliant les mêmes extrémités initiale et
terminale
24
Notions fondamentales sur les graphes
On dira aussi qu’un graphe 𝐺𝐺 ′ = 𝑋𝑋 ′ , 𝑈𝑈𝑈 est un sous-graphe d’un graphe 𝐺𝐺 =
𝑋𝑋, 𝑈𝑈 lorsque 𝑋𝑋𝑋 ⊆ 𝑋𝑋 et 𝑈𝑈𝑈 ⊆ 𝑈𝑈
Un sous-graphe recouvrant d’un graphe 𝐺𝐺 = 𝑋𝑋, 𝑈𝑈 est un sous-graphe 𝐺𝐺 ′ =
𝑋𝑋, 𝑈𝑈𝑈 c’est-à-dire un sous-graphe dont sont sommets tous les sommets de G
Une chaine de longueur q (de cardinalité q) est une séquence de q arcs : 𝐿𝐿 =
𝑢𝑢1 , 𝑢𝑢2 , … , 𝑢𝑢𝑞𝑞 telle que chaque arc 𝑈𝑈𝑟𝑟 de la séquence 2 ≤ 𝑟𝑟 ≤ 𝑞𝑞 − 1 ait une
extrémité commune avec l’arc 𝑢𝑢𝑟𝑟−1 𝑢𝑢𝑟𝑟−1 ≠ 𝑢𝑢𝑟𝑟 et l’autre extrémité commune
avec l’arc 𝑢𝑢𝑟𝑟+1 𝑢𝑢𝑟𝑟+1 ≠ 𝑢𝑢𝑟𝑟
25
Notions fondamentales sur les graphes
L’extrémité i de 𝑢𝑢1 non adjacente à 𝑢𝑢2 , et l’extrémité j de 𝑢𝑢𝑞𝑞 non adjacente à
𝑢𝑢𝑞𝑞−1 sont appelées les extrémités de la chaine L
Une chaîne dont le nœud de départ et le nœud d'arrivée sont identiques
s’appelle cycle
Un chemin est une séquence finie et alternée de sommets et d’arcs, débutant
et finissant par des sommets, telle que chaque arc est sortant d’un sommet et
incident au sommet suivant dans la séquence
Un chemin dont le nœud de départ et le nœud d'arrivée sont identiques
s’appelle circuit
26
Notions fondamentales sur les graphes
Un graphe est dit connexe si, pour tout couple de sommets i et j, il existe une
chaine joignant i et j. La relation:
𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑖𝑖 = 𝑗𝑗
𝑖𝑖 ℛ 𝑗𝑗 ⇔ �
𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑖𝑖𝑖𝑖 𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 𝑢𝑢𝑢𝑢𝑢𝑢 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗𝑗 𝑖𝑖 𝑒𝑒𝑒𝑒 𝑗𝑗
est une relation d’équivalence (réflexive, symétrique, transitive)
27
Notions fondamentales sur les graphes
Les classes d’équivalence induites sur X par cette relation forment une
partition de X en : 𝑋𝑋1 , 𝑋𝑋2 , … , 𝑋𝑋𝑝𝑝 . Le nombre de classes d’équivalence distinctes,
noté p, est appelé le nombre de connexité du graphe. Un graphe est dit connexe
si et seulement si son nombre de connexité p est égal à 1.
Un sous-graphe GA engendré par 𝐴𝐴 ⊂ 𝑋𝑋 dont les sommets sont les éléments
de A, et les arêtes sont les arêtes de G ayant leurs deux extrémités dans A, les
sous-graphes 𝐺𝐺1 , 𝐺𝐺2 , … , 𝐺𝐺𝑝𝑝 engendrés par les sous-ensembles 𝑋𝑋1 , 𝑋𝑋2 , … , 𝑋𝑋𝑝𝑝 sont
appelés composantes connexes (CC) du graphe G
28
Notions fondamentales sur les graphes
29
Notions fondamentales sur les graphes
Un graphe est fortement connexe est un graphe orienté dont toutes les paires
de sommets peuvent être reliées par un chemin. La relation:
𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑖𝑖 = 𝑗𝑗
𝑖𝑖 ℛ 𝑗𝑗 ⇔ �𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑖𝑖𝑖𝑖 𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 𝑢𝑢𝑢𝑢 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 𝑑𝑑𝑑𝑑 𝑖𝑖 à 𝑗𝑗
𝒆𝒆𝒆𝒆 𝑢𝑢𝑢𝑢 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑑𝑑𝑑𝑑 𝑗𝑗 à 𝑖𝑖
est une relation d’équivalence.
Les classes d’équivalence induites sur X par cette relation forment une
partition de X en : 𝑋𝑋1 , 𝑋𝑋2 , … , 𝑋𝑋𝑝𝑝 . Les sous-graphes 𝐺𝐺1 , 𝐺𝐺2 , … , 𝐺𝐺𝑝𝑝 engendrés par
les sous-ensembles 𝑋𝑋1 , 𝑋𝑋2 , … , 𝑋𝑋𝑝𝑝 sont appelés les composantes fortement
connexes (CFC) de G
30
Notions fondamentales sur les graphes
31
Notions fondamentales sur les graphes
La distance entre deux sommets d'un graphe connexe (ou entre 2 sommets
d'une même composante connexe) est égale à la longueur (nombre d’arêtes) de
la plus courte chaine les reliant
32
Représentation d’un graphe
33
Représentation d’un graphe
34
Représentation d’un graphe
35
Représentation d’un graphe
Matrice d’incidence nœud-arc:
Matrice 𝒜𝒜 𝐺𝐺 de taille 𝑛𝑛 × 𝑚𝑚
36
Représentation d’un graphe
Matrice d’incidence nœud-arc:
Cas orienté: u1 u2 u3 u4 u5 u6
1 0 0 -1 -1 0 0
2 1 1 0 0 0 0
3 -1 0 1 0 0 0
4 0 0 0 0 -1 1
5 0 0 0 0 1 -1
6 0 -1 0 1 0 0
37
Représentation d’un graphe
Matrice d’incidence nœud-arc:
Cas non orienté: u1 u2 u3 u4 u5
1 1 1 0 0 0
2 0 0 1 1 0
3 1 0 1 0 0
4 0 0 0 0 1
5 0 0 0 0 1
6 0 1 0 1 0
38
Représentation d’un graphe
Matrice d’adjacence nœud-noeud:
Matrice ℬ(𝐺𝐺) de taille 𝑛𝑛 × 𝑛𝑛
39
Représentation d’un graphe
Matrice d’adjacence nœud-noeud:
Cas orienté:
1 2 3 4 5 6
1 0 0 0 0 0 0
2 0 0 1 0 0 1
3 1 0 0 0 0 0
4 0 0 0 0 1 0
5 0 0 0 1 0 0
6 1 0 0 0 0 0
40
Représentation d’un graphe
Matrice d’adjacence nœud-noeud:
Cas non orienté:
1 2 3 4 5 6
1 0
2 0 0
3 1 1 0
4 0 0 0 0
5 0 0 0 1 0
6 1 1 0 0 0 0
41
Représentation d’un graphe
Liste d’adjacence:
42
Représentation d’un graphe
Liste d’adjacence:
Cas orienté: 1 → ∅
2 → 3 6
3 → 1
4 → 5
5 → 4
6 → 1
43
Représentation d’un graphe
Liste d’adjacence:
Cas non orienté: 1 → 3 6
2 → 3 6
3 → 1 2
4 → 5
5 → 4
6 → 1 2
44
Arbres, forêts et arborescences
Un arbre peut être définit de plusieurs manières, nous citons quelques unes.
Un graphe G est un arbre si et seulement si:
Il est connexe et sans cycle
Il est connexe minimum au sens des arêtes, c’est-à-dire qu’il n’est plus
connexe si on lui supprime l’une quelconque de ses arêtes
Il est sans cycles et maximum au sens des arêtes, c’est-à-dire qu’on crée un
cycle en ajoutant une arête rendant adjacents deux quelconques de ses
sommets qui ne l’étaient pas
Il est connexe (ou sans cycles) et possède 𝑛𝑛 − 1 arêtes
45
Arbres, forêts et arborescences
46
Arbres, forêts et arborescences
Une forêt est un graphe sans cycle (ou un ensemble d’arbre)
47
Arbres, forêts et arborescences
Un graphe 𝐺𝐺 est une arborescence s’il existe un sommet 𝑟𝑟 appelé racine de 𝐺𝐺
tel que pour tout sommet 𝑠𝑠 de 𝐺𝐺, il existe un chemin et un seul de 𝑟𝑟 vers 𝑠𝑠
48
Problèmes: Le problème du plus court
chemin
Définition: Soit 𝐺𝐺 = (𝑋𝑋, 𝑈𝑈) un graphe valué; on associe à chaque arc 𝑢𝑢 = (𝑖𝑖, 𝑗𝑗)
une longueur 𝑙𝑙(𝑢𝑢) ou 𝑙𝑙𝑖𝑖𝑖𝑖 . Le problème du plus chemin entre 𝑖𝑖 et 𝑗𝑗 consiste à
trouver un chemin 𝜇𝜇(𝑖𝑖, . . , 𝑗𝑗) de 𝑖𝑖 à 𝑗𝑗 tel que:
49
Problèmes: Le problème du plus court
chemin
Lemme de Koenig: Un plus court chemin entre 2 sommets est élémentaire
Nombre de chemins devient fini
De l’ordre de 𝑛𝑛!
Principe de sous-optimalité: Si 𝜇𝜇 = (𝑖𝑖, . . , 𝑗𝑗) est un plus court chemin entre 𝑖𝑖 et 𝑗𝑗,
alors pour tout sommet 𝑥𝑥 sur le chemin 𝜇𝜇:
Le sous-chemin de 𝜇𝜇 jusqu’à 𝑥𝑥, (𝑖𝑖, . . , 𝑥𝑥), est le plus court chemin de 𝑖𝑖 à 𝑥𝑥
Le sous-chemin de 𝜇𝜇 depuis 𝑥𝑥, (𝑥𝑥, . . , 𝑗𝑗), est le plus court chemin de 𝑥𝑥 à 𝑗𝑗
50
Problèmes: Le problème du plus court
chemin
Lemme de Koenig: Un plus court chemin entre 2 sommets est élémentaire
Nombre de chemins devient fini
De l’ordre de 𝑛𝑛!
Principe de sous-optimalité: Si 𝜇𝜇 = (𝑖𝑖, . . , 𝑗𝑗) est un plus court chemin entre 𝑖𝑖 et 𝑗𝑗,
alors pour tout sommet 𝑥𝑥 sur le chemin 𝜇𝜇:
Le sous-chemin de 𝜇𝜇 jusqu’à 𝑥𝑥, (𝑖𝑖, . . , 𝑥𝑥), est le plus court chemin de 𝑖𝑖 à 𝑥𝑥
Le sous-chemin de 𝜇𝜇 depuis 𝑥𝑥, (𝑥𝑥, . . , 𝑗𝑗), est le plus court chemin de 𝑥𝑥 à 𝑗𝑗
51
Problèmes: Le problème du plus court
chemin
Algorithme de Dijkstra:
Permet de calculer le plus court chemin entre un sommet et tous les autres
Graphe 𝐺𝐺 à longueurs positives
Numérotation des sommets de 𝐺𝐺 de 1 à 𝑛𝑛
Recherche des chemins partant du sommet 1
Construction d’un vecteur 𝜆𝜆 = (𝜆𝜆 1 ; 𝜆𝜆 2 ; … ; 𝜆𝜆(𝑛𝑛)) tel que 𝜆𝜆 𝑗𝑗 soit égale à la
longueur du plus court chemin allant de 1 au sommet 𝑗𝑗
Construction d’un vecteur 𝑝𝑝 pour mémoriser le chemin pour aller du sommet 1 au
sommet voulu. La valeur 𝑝𝑝(𝑗𝑗) donne le sommet qui précède 𝑗𝑗 dans le chemin
52
Problèmes: Le problème du plus court
chemin
Algorithme de Dijkstra:
𝜆𝜆 est initialisé à 𝑐𝑐1𝑗𝑗 , tel que:
0 𝑠𝑠𝑖𝑖 𝑖𝑖 = 𝑗𝑗
𝑐𝑐𝑖𝑖𝑖𝑖 = �∞ 𝑠𝑠𝑠𝑠 𝑖𝑖 ≠ 𝑗𝑗 𝑒𝑒𝑒𝑒 (𝑖𝑖, 𝑗𝑗) ∉ 𝐸𝐸
𝑙𝑙 𝑖𝑖, 𝑗𝑗 𝑠𝑠𝑠𝑠 𝑖𝑖 ≠ 𝑗𝑗 𝑒𝑒𝑒𝑒 (𝑖𝑖, 𝑗𝑗) ∈ 𝐸𝐸
𝑝𝑝(𝑗𝑗) initialement est égal à NULL, ou 1 si (1, 𝑗𝑗) ∈ 𝐸𝐸
Deux ensembles de sommets sont considérés, 𝑆𝑆 initialisé à {1} et 𝑇𝑇 à 2, … , 𝑛𝑛
À chaque itération, on ajoute à 𝑆𝑆 un sommet de 𝑇𝑇 de telle sorte que le vecteur 𝜆𝜆
donne à chaque étape la longueur minimale des chemins de 1 aux sommets de 𝑆𝑆
53
Problèmes: Le problème du plus court
chemin
Algorithme de Dijkstra:
Initialisations
𝜆𝜆 𝑗𝑗 = 𝑐𝑐1𝑗𝑗 et 𝑝𝑝 𝑗𝑗 = 𝑁𝑁𝑁𝑁𝑁𝑁𝑁𝑁, pour 1 ≤ 𝑗𝑗 ≤ 𝑛𝑛
Pour 2 ≤ 𝑗𝑗 ≤ 𝑛𝑛 faire
Si 𝑐𝑐1𝑗𝑗 < ∞ alors
𝑝𝑝 𝑗𝑗 = 1
𝑆𝑆 = {1} ; 𝑇𝑇 = {2, … , 𝑛𝑛}
54
Problèmes: Le problème du plus court
chemin
Algorithme de Dijkstra:
Itérations
Tant que 𝑇𝑇 n’est pas vide faire
choisir 𝑖𝑖 dans 𝑇𝑇 tel que 𝜆𝜆(𝑖𝑖) est minimum
retirer 𝑖𝑖 de 𝑇𝑇 et l’ajouter à 𝑆𝑆
Pour chaque successeur 𝑗𝑗 de 𝑖𝑖, avec 𝑗𝑗 dans 𝑇𝑇, faire
Si 𝜆𝜆 𝑗𝑗 > 𝜆𝜆 𝑖𝑖 + 𝑙𝑙(𝑖𝑖, 𝑗𝑗) alors
𝜆𝜆 𝑗𝑗 = 𝜆𝜆 𝑖𝑖 + 𝑙𝑙(𝑖𝑖, 𝑗𝑗)
𝑝𝑝 𝑗𝑗 = 𝑖𝑖
55
Problèmes: Le problème du plus court
chemin
Algorithme de Dijkstra:
Exp:
56
Problèmes: Le problème de l’arbre
couvrant minimum
On souhaite connecter des villes entre
elles avec un nouveau réseau très haut
débit
Un certains nombre de connexions
directes point à point entre les villes
sont techniquement possibles
Il nous faut choisir lesquelles parmi
ces connexions nous allons
effectivement mettre en place
57
Problèmes: Le problème de l’arbre
couvrant minimum
La distance entre 2 villes dans le
réseau final a peu d'importance au vu
des débits prévus
Les coûts d'installation des liaisons ne
sont pas les mêmes
58
Problèmes: Le problème de l’arbre
couvrant minimum
59
Problèmes: Le problème de l’arbre
couvrant minimum
60
Problèmes: Le problème de l’arbre
couvrant minimum
61
Problèmes: Le problème de l’arbre
couvrant minimum
Plusieurs algorithmes de résolution
Exploitation des caractéristiques des arbres
Graphes connexes minimaux
Graphes acycliques (sans cycles) maximaux
Les deux algorithmes les plus connus:
Prim
Kruskal
62
Problèmes: Le problème de l’arbre
couvrant minimum
Algorithme de Prim:
Exploite la première caractéristique
Dans un arbre couvrant 𝑇𝑇, il existe nécessairement une arête qui relie l'un des
sommets de 𝑇𝑇 avec un sommet en dehors de 𝑇𝑇
L'idée est de maintenir un sous-graphe partiel connexe, en le connectant à un
nouveau sommet à chaque étape
Pour construire un arbre couvrant de poids minimum, il suffirait de choisir à chaque
fois parmi les arêtes sortantes celle de poids le plus faible pour que l’augmentation soit
la plus économique possible
63
Problèmes: Le problème de l’arbre
couvrant minimum
Algorithme de Prim:
Initialisations
𝐹𝐹 = 𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉 /* F est l’ensemble des arêtes de l’arbre */
marquer arbitrairement un sommet
Itérations
Tant Que il existe un sommet non marqué adjacent à un sommet marqué faire
Sélectionner un sommet 𝑦𝑦 non marqué adjacent à un sommet marqué 𝑥𝑥
tel que (𝑥𝑥, 𝑦𝑦) est l'arête sortante de plus faible poids
𝐹𝐹 = 𝐹𝐹 ∪ { 𝑥𝑥, 𝑦𝑦 }
marquer 𝑦𝑦
64
Problèmes: Le problème de l’arbre
couvrant minimum
Algorithme de Kruskal:
Exploite la deuxième caractéristique
L’ajout d’une arête à un arbre 𝑇𝑇 crée un cycle
Construction de l’arbre couvrant en ne raisonnant que sur les arêtes
Construction par ajout à chaque fois d’une arête, si et seulement si le graphe reste
acyclique
On a intérêt à ajouter les arêtes de poids le plus faible
Parcours d’une liste des arêtes triée dans l’ordre des poids croissants
65
Problèmes: Le problème de l’arbre
couvrant minimum
Algorithme de Kruskal:
Initialisations
trier 𝐿𝐿𝑈𝑈 dans l’ordre des poids croissants /* 𝐿𝐿𝑈𝑈 est l’ensemble des arêtes */
𝐹𝐹 = 𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉 et 𝐾𝐾 = 0 /* F est l’ensemble des arêtes de l’arbre */
Itérations
Tant Que 𝑘𝑘 < 𝑚𝑚 et 𝐹𝐹 < 𝑛𝑛 − 1 faire
𝑘𝑘 = 𝑘𝑘 + 1
Si 𝑙𝑙𝑘𝑘 ne forme pas de cycle avec 𝐹𝐹 alors
𝐹𝐹 = 𝐹𝐹 ∪ {𝑙𝑙𝑘𝑘 }
66
Problèmes: Le problème de l’arbre
couvrant minimum
67
Problèmes: Le problème de flot
maximum
Un réseau de transport est un graphe, sans boucle, où chaque arc est associé
à un nombre 𝑐𝑐(𝑢𝑢) ≥ 0, appelé "capacité" de l'arc 𝑢𝑢. En outre, un tel réseau
vérifie les hypothèses suivantes
Il existe un seul nœud 𝑆𝑆 qui n'a pas de prédécesseurs, tous les autres en ont au
moins un. Ce nœud est appelé l'entrée du réseau, ou la source
Il existe également un seul nœud 𝑃𝑃 qui n'a pas de successeurs, tous les autres en
ont au moins un. Ce nœud est appelé la sortie du réseau, ou le puits
68
Problèmes: Le problème de flot
maximum
𝑆𝑆 𝑃𝑃
69
Problèmes: Le problème de flot
maximum
Définition: Un flot dans un graphe 𝐺𝐺 = (𝑋𝑋, 𝑈𝑈) est un vecteur
ϕ = [ϕ1, ϕ2, … , ϕ𝑚𝑚]
Problèmes: Le problème de flot
maximum
71
Problèmes: Le problème de flot
maximum
72
Problèmes: Le problème de flot
maximum
Soit un réseau de transport 𝐺𝐺 = (𝑋𝑋, 𝑈𝑈, 𝐶𝐶) possédant un flot
complet ϕ. On appelle graphe d’écart ou réseau résiduel, le réseau
𝐺𝐺 ′ ϕ = (𝑋𝑋, 𝑈𝑈 ′ , 𝐶𝐶 ′ ) tel que:
Si 𝑢𝑢 ∈ 𝑈𝑈 et ϕ(𝑢𝑢) < 𝐶𝐶(𝑢𝑢) alors 𝑢𝑢 ∈ 𝑈𝑈 ′ et 𝐶𝐶 ′ 𝑢𝑢 = 𝐶𝐶 𝑢𝑢 − ϕ(𝑢𝑢)
Si 𝑢𝑢 ∈ 𝑈𝑈 et ϕ 𝑢𝑢 = 𝐶𝐶(𝑢𝑢) alors 𝑢𝑢 ∉ 𝑈𝑈 ′
Si 𝑢𝑢 = (𝑥𝑥, 𝑦𝑦) ∈ 𝑈𝑈 et ϕ(𝑢𝑢) > 0 alors 𝑢𝑢−1 = (𝑦𝑦, 𝑥𝑥) ∈ 𝑈𝑈 ′ et 𝐶𝐶 ′ 𝑢𝑢−1 = ϕ(𝑢𝑢)
73
Problèmes: Le problème de flot
maximum
74
Problèmes: Le problème de flot
maximum
Algorithme de Ford-Fulkerson:
Initialisations
Partir d’un flot initial 𝜑𝜑 0 compatible avec les contraintes de capacité
par exemple 𝜑𝜑 0 = (0,0,0, … , 0)
𝑘𝑘 = 0
Itérations /* soit 𝜑𝜑 𝑘𝑘 le flot courant */
Rechercher un chemin 𝜇𝜇𝑘𝑘 de 𝑆𝑆 à 𝑃𝑃 dans le graphe d’écart 𝐺𝐺 ′ (𝜑𝜑 𝑘𝑘 )
Si il n’en existe pas alors
FIN /* le flot 𝜑𝜑 𝑘𝑘 est maximal */
Soit 𝜀𝜀 𝑘𝑘 la capacité résiduelle du chemin 𝜇𝜇𝑘𝑘 (minimum des capacités résiduelles)
75
Problèmes: Le problème de flot
maximum
Algorithme de Ford-Fulkerson:
Définir le flot 𝜑𝜑 𝑘𝑘+1 par:
𝜑𝜑𝑢𝑢𝑘𝑘+1 = 𝜑𝜑𝑢𝑢𝑘𝑘 + 𝜀𝜀 𝑘𝑘 si 𝑢𝑢 ∈ 𝜇𝜇𝑘𝑘 et si 𝑢𝑢 est orientée dans le sens de 𝜇𝜇𝑘𝑘
𝜑𝜑𝑢𝑢𝑘𝑘+1 = 𝜑𝜑𝑢𝑢𝑘𝑘 − 𝜀𝜀 𝑘𝑘 si 𝑢𝑢 ∈ 𝜇𝜇𝑘𝑘 et si 𝑢𝑢 est orientée dans le sens contraire de 𝜇𝜇𝑘𝑘
𝑘𝑘 = 𝑘𝑘 + 1
Jump To Début itération
76
Problèmes: Le problème de flot
maximum
77
Complexité des problèmes, méthodes de
résolution
Complexité des problèmes, méthodes de
résolution
1. Introduction
2. Classification des problèmes
3. Recherche opérationnelle et optimisation
4. Méthodes de résolution
79
Introduction
Pour certains problèmes, la difficulté est telle qu’il faut des siècles
pour que tous les ordinateurs modernes fonctionnant en parallèles
aboutissent à la solution
80
Introduction
81
Classification des problèmes
La classe P
82
Classification des problèmes
La classe NP
La classe NP possède une définition moins naturelle que celle de la
classe P (nom trompeur) NP signifie polynomial non déterministe
Extension de la classe P en autorisant des choix non déterministes
Pour ce type de problème il est possible de vérifier une solution
efficacement (en temps polynomial)
83
Classification des problèmes
La classe NP-complet (NP-Complete)
La théorie de la NP-complétude concerne la reconnaissance des
problèmes les plus durs de la classe NP
Un problème est dit NP-complet s’il vérifie les propriétés suivantes:
Il est possible de vérifier une solution en temps polynomial
Tout problème Q de NP lui est réductible; cela signifie que le problème
est au moins aussi difficile que tous les autres problèmes de la classe NP
84
Classification des problèmes
La classe NP-difficile (NP-Hard)
Cette classe contient les problème les plus dur à résoudre (en
terme de complexité temporelle)
Un problème est dit NP-difficile si tout problème Q de NP lui est
réductible
Si on savait résoudre un quelconque de ces problèmes en temps
polynomial, alors on saurait résoudre tous les problèmes NP en
temps polynomial
85
Classification des problèmes
86
Recherche opérationnelle et
optimisation
Un lien très étroit lie la recherche opérationnelle à l’optimisation
87
Recherche opérationnelle et
optimisation
Très souvent, on ramène une aide à la décision à la résolution d’un
problème d’optimisation
Définition: Soit 𝑛𝑛 un entier strictement positif et soient 𝐷𝐷 ⊂ ℝ𝑛𝑛 un
sous ensemble non vide de ℝ𝑛𝑛 et 𝑓𝑓: 𝐷𝐷 ⟶ ℝ une application sur 𝐷𝐷 à
valeurs réelles. Un problème d’optimisation (PO) consiste à
déterminer, lorsqu’il existe, un extremum (minimum ou maximum)
de 𝑓𝑓 sur 𝐷𝐷
88
Recherche opérationnelle et
optimisation
Classification des PO selon la nature des variables de décision:
Optimisation continue: 𝐷𝐷 est continu
Optimisation discrète ou optimisation combinatoire: 𝐷𝐷 est discret (𝐷𝐷 ⊂ ℤ𝑛𝑛 , fini)
Classification des PO selon la nature des contraintes:
Optimisation sans contraintes: Pas de contraintes ou contraintes faciles à satisfaire
Optimisation sous contraintes: il est difficile de trouver un point satisfaisant les
contraintes
89
Méthodes de résolution
Le problème à résoudre est-il facile ou difficile?
Si le problème est « facile »: exhiber un algorithme efficace
Si le problème est « difficile »:
Et de « petite taille »: chercher la solution optimale
Et de « grande taille »: chercher une solution approchée et
essayer de garantir la valeur de cette solution
90
Méthodes de résolution
Exemples de PO faciles:
Problème du plus court chemin
Router un flot maximal entre 2 sommets sous des contraintes de
capacités
Problème de recherche d’une chaîne eulérienne dans un graphe
Ordonnancer des tâches sous des contraintes de précédence
91
Méthodes de résolution
Exemples de PO difficiles:
Problème du voyageur de commerce
Router un flot maximal entre plusieurs paires de sommets sous des
contraintes de capacités
Problème de recherche d’une chaîne hamiltonienne dans un
graphe
92
Méthodes de résolution
Principales (classes de) méthodes de résolution:
Algorithmes polynomiaux
Programmation dynamique
Certains problèmes ont de bonnes caractéristiques qui permettent de les
résoudre à l'aide d'une formule de récurrence. Les méthodes de
programmation dynamique peuvent alors éventuellement permettre de
résoudre le problème avec une complexité polynomiale ou pseudo-
polynomiale
93
Méthodes de résolution
Principales (classes de) méthodes de résolution:
Théorie des graphes
Processus stochastiques
Les processus stochastiques concernent tous les problèmes aléatoires, en
particulier des problèmes de fiabilité (de systèmes, de composants
électroniques…) et des phénomènes d'attente
Simulation informatique
94
Méthodes de résolution
Principales (classes de) méthodes de résolution:
Programmation linéaire
Programmation non-linéaire
Méthodes arborescentes
Les méthodes de type « A* » ou « branch and bound » sont couramment
utilisées pour trouver la solution exacte d'un problème de RO. Pour une
résolution efficace, un soin particulier est apporté au calcul de bornes
supérieures ou inférieures pour la valeur de la solution
95
Méthodes de résolution
Principales (classes de) méthodes de résolution:
Heuristiques et métaheuristiques
Lorsque la solution optimale ne peut être obtenue en un temps raisonnable,
on a souvent recours à des méthodes approchées de type heuristique ou
métaheuristique (Recuit simulé, Recherche locale, Algorithmes génétique,
Colonie de fourmis,…)
96
Programmation linéaire
Programmation linéaire
Modélisation:
En Recherche Opérationnelle (RO), modéliser un problème
consiste à identifier:
Les variables intrinsèques (inconnues)
Les différentes contraintes auxquelles sont soumises ces variables
L’objectif visé (optimisation)
Dans un problème de programmation linéaire (PL) les contraintes
et l'objectif sont des fonctions linéaires des variables. On parle aussi
de programme linéaire
98
Programmation linéaire
Modélisation:
Exemple d’un problème de production: Une usine fabrique 2
produits P1 et P2 nécessitant des ressources d’équipement, de main
d’œuvre et de matières premières disponibles en quantité limitée
P1 P2 Disponibilité
Équipement 3 9 81
Main d’œuvre 4 5 55
Matière première 2 1 20
99
Programmation linéaire
Modélisation:
100
Programmation linéaire
Modélisation:
101
Programmation linéaire
Modélisation:
Contraintes:
Disponibilité de chacune des ressources:
3𝑥𝑥1 + 9𝑥𝑥2 ≤ 81
4𝑥𝑥1 + 5𝑥𝑥2 ≤ 55
2𝑥𝑥1 + 𝑥𝑥2 ≤ 20
Positivité des variables: 𝑥𝑥1 , 𝑥𝑥2 ≥ 0.
102
Programmation linéaire
Modélisation:
103
Programmation linéaire
Résolution graphique: (PL à 2 variables)
104
Programmation linéaire
Résolution graphique: (PL à 2 variables)
105
Programmation linéaire
Détermination du maximum de F:
106
Programmation linéaire
Détermination du maximum de F:
107
Programmation linéaire
Forme canonique mixte:
𝑛𝑛
𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖: ∀𝑖𝑖 ∈ 𝐼𝐼1 , � 𝑎𝑎𝑖𝑖𝑗𝑗 𝑥𝑥𝑗𝑗 = 𝑎𝑎𝑖𝑖𝑖 𝑥𝑥1 + ⋯ + 𝑎𝑎𝑖𝑖𝑖𝑖 𝑥𝑥𝑛𝑛 ≤ 𝑏𝑏𝑖𝑖
𝑗𝑗=1
𝑛𝑛
108
Programmation linéaire
Forme canonique mixte:
109
Programmation linéaire
Forme canonique mixte:
Notations:
Vecteurs:
𝒙𝒙 = (𝑥𝑥1 , … , 𝑥𝑥𝑛𝑛 )𝑇𝑇 ∈ ℝ𝑛𝑛
𝐜𝐜 = (𝑐𝑐1 , … , 𝑐𝑐𝑛𝑛 )𝑇𝑇 ∈ ℝ𝑛𝑛
𝒃𝒃 = (𝑏𝑏1 , … , 𝑏𝑏𝑛𝑛 )𝑇𝑇 ∈ ℝ𝑚𝑚
Matrice 𝐴𝐴 de taille 𝑚𝑚 × 𝑛𝑛:
𝑎𝑎11 ⋯ 𝑎𝑎1𝑛𝑛
⋮ ⋱ ⋮
𝑎𝑎𝑚𝑚1 ⋯ 𝑎𝑎𝑚𝑚𝑚𝑚
110
Programmation linéaire
Forme canonique pure:
111
Programmation linéaire
Forme standard:
112
Programmation linéaire
Forme standard:
113
Programmation linéaire
Variables d’écarts:
Proposition:
Tout PL sous forme standard s’écrit de façon équivalente en un PL sous
forme canonique pure et inversement.
Démonstration:
i. Soit PL sous forme canonique pure. On a
𝐴𝐴𝐴𝐴 ≤ 𝑏𝑏 ⇔ 𝐴𝐴𝐴𝐴 + 𝑒𝑒 = 𝑏𝑏, 𝑒𝑒 ≥ 0
où 𝑒𝑒 = (𝑒𝑒1 , … , 𝑒𝑒𝑚𝑚 )𝑇𝑇 sont appelées variables d’écart.
114
Programmation linéaire
Variables d’écarts:
Proposition:
Tout PL sous forme standard s’écrit de façon équivalente en un PL sous
forme canonique pure et inversement.
Démonstration:
𝑥𝑥
𝐴𝐴𝐴𝐴 ≤ 𝑏𝑏 𝐴𝐴�𝐼𝐼𝑚𝑚 = 𝑏𝑏 ̃ 𝑥𝑥� = 𝑏𝑏
Ainsi � ⇔ � 𝑒𝑒 ⇔� 𝐴𝐴
𝑥𝑥 ≥ 0 𝑥𝑥 𝑥𝑥� ≥ 0
≥0
𝑒𝑒
avec 𝐴𝐴̃ = 𝐴𝐴�𝐼𝐼𝑚𝑚 matrice de taille 𝑚𝑚 × (𝑛𝑛 + 𝑚𝑚).
115
Programmation linéaire
Variables d’écarts:
Proposition:
Tout PL sous forme standard s’écrit de façon équivalente en un PL sous
forme canonique pure et inversement.
Démonstration:
ii.(Réciproque) Soit PL sous forme standard. On a
𝐴𝐴𝐴𝐴 ≤ 𝑏𝑏 𝐴𝐴𝐴𝐴 ≤ 𝑏𝑏 𝐴𝐴 𝑏𝑏 ̃ ≤ 𝑏𝑏�
𝐴𝐴𝐴𝐴 = 𝑏𝑏 ⇔ � ⇔� ⇔ 𝑥𝑥 ≤ ⇔ 𝐴𝐴𝑥𝑥
𝐴𝐴𝐴𝐴 ≥ 𝑏𝑏 −𝐴𝐴𝐴𝐴 ≤ −𝑏𝑏 −𝐴𝐴 −𝑏𝑏
où 𝐴𝐴̃ est une matrice de taille 2𝑚𝑚 × 𝑛𝑛 et 𝑏𝑏� ∈ ℝ2𝑚𝑚 .
116
Programmation linéaire
Variables d’écarts:
Exemple: Problème de production de l’introduction.
PL sous forme standard. On introduit 3 variables d’écarts 𝑒𝑒1 , 𝑒𝑒2 , 𝑒𝑒3 .
max [𝐹𝐹(𝑥𝑥1 , 𝑥𝑥2 ) = 6𝑥𝑥1 + 4𝑥𝑥2 ]
(𝑥𝑥1 ,𝑥𝑥2 )
3𝑥𝑥1 + 9𝑥𝑥2 + 𝑒𝑒1 = 81
� 4𝑥𝑥1 + 5𝑥𝑥2 + 𝑒𝑒2 = 55
2𝑥𝑥1 + 𝑥𝑥2 + 𝑒𝑒3 = 20
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
�
𝑒𝑒1 , 𝑒𝑒2 , 𝑒𝑒3 ≥ 0
Les inconnues sont désormais 𝑥𝑥1 , 𝑥𝑥2 , 𝑒𝑒1 , 𝑒𝑒2 , 𝑒𝑒3 .
117
Programmation linéaire
Solutions de base réalisables:
118
Programmation linéaire
Solutions de base réalisables:
Remarques: Sous l’hypothèse de rang plein:
Le système 𝐴𝐴𝐴𝐴 = 𝑏𝑏 admet toujours des solutions.
Si 𝑚𝑚 < 𝑛𝑛, le système 𝐴𝐴𝐴𝐴 = 𝑏𝑏 admet une infinité de solution.
Si 𝑚𝑚 = 𝑛𝑛, la solution est unique et vaut 𝑥𝑥 = 𝐴𝐴−1 𝑏𝑏, dans ce cas, il n’y a rien à
maximiser….
Quelques définitions:
Définition: On appelle solution réalisable tout vecteur 𝑥𝑥 qui satisfait les
contraintes du PL i.e tel que 𝐴𝐴𝐴𝐴 = 𝑏𝑏 et 𝑥𝑥 ≥ 0.
119
Programmation linéaire
Solutions de base réalisables:
Définition: Soit 𝐵𝐵 ⊂ 1, … , 𝑛𝑛 un ensemble d’indices avec 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝐵𝐵 = 𝑚𝑚
tel que les colonnes 𝐴𝐴𝑖𝑖 , 𝑗𝑗 ∈ 𝐵𝐵, est inversible. On dit que l’ensemble 𝐵𝐵 des
indices est une base.
Les variables 𝑥𝑥𝐵𝐵 = (𝑥𝑥𝑗𝑗 , 𝑗𝑗 ∈ 𝐵𝐵) sont appelées variables de base.
Les variables 𝑥𝑥𝐻𝐻 = (𝑥𝑥𝑗𝑗 , 𝑗𝑗 ∉ 𝐵𝐵) sont appelées variables hors-base.
Remarques:
Sous l’hypothèse de rang plein, il existe toujours une base non vide.
120
Programmation linéaire
Solutions de base réalisables:
Quitte à renuméroter les indices, on peut toujours écrire les décompositions
par blocs:
𝐴𝐴 = (𝐴𝐴𝐵𝐵 |𝐴𝐴𝐻𝐻 ) où 𝐴𝐴𝐻𝐻 est la matrice formée des colonnes 𝐴𝐴 𝑗𝑗 , 𝑗𝑗 ∉ 𝐵𝐵
𝑥𝑥𝐵𝐵
𝑥𝑥 = 𝑥𝑥 .
𝐻𝐻
Le système 𝐴𝐴𝐴𝐴 = 𝑏𝑏 est équivalent à
𝐴𝐴𝐵𝐵 𝑥𝑥𝐵𝐵 + 𝐴𝐴𝐻𝐻 𝑥𝑥𝐻𝐻 = 𝑏𝑏.
⟹ on peut fixer les variables hors-base et les variables de base sont alors
complétement déterminées (la matrice 𝐴𝐴𝐵𝐵 est inversible)
121
Programmation linéaire
Solutions de base réalisables:
𝑥𝑥𝐵𝐵
Définition: On dit que 𝑥𝑥 = 𝑥𝑥 est une solution de base associée à la
𝐻𝐻
base 𝐵𝐵 si 𝑥𝑥𝐻𝐻 = 0.
𝑥𝑥𝐵𝐵
Propriétés des solutions de base réalisables: Si 𝑥𝑥 = 𝑥𝑥 est une solution
𝐻𝐻
−1
de base réalisable alors 𝑥𝑥𝐻𝐻 = 0 et 𝑥𝑥𝐵𝐵 = 𝐴𝐴𝐵𝐵 𝑏𝑏.
Remarque: Il y a au plus 𝐶𝐶𝑛𝑛𝑚𝑚 solutions de base (toutes ne sont pas
réalisables).
122
Programmation linéaire
Solutions de base réalisables:
Exemple: Problème de production de l’introduction.
PL sous forme standard.
max [𝐹𝐹(𝑥𝑥1 , 𝑥𝑥2 ) = 6𝑥𝑥1 + 4𝑥𝑥2 ]
(𝑥𝑥1 ,𝑥𝑥2 )
3𝑥𝑥1 + 9𝑥𝑥2 + 𝑒𝑒1 = 81
� 4𝑥𝑥1 + 5𝑥𝑥2 + 𝑒𝑒2 = 55
2𝑥𝑥1 + 𝑥𝑥2 + 𝑒𝑒3 = 20
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
�
𝑒𝑒1 , 𝑒𝑒2 , 𝑒𝑒3 ≥ 0
123
Programmation linéaire
Solutions de base réalisable:
On a 𝑚𝑚 = 3, 𝑛𝑛 = 5, 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝐴𝐴 = 𝑚𝑚 = 3.
1 0 0
Une base est donnée par 𝐵𝐵 = 3,4,5 avec 𝐴𝐴𝐵𝐵 = 0 1 0 .
0 0 1
La solution de base réalisable correspondante est:
𝑥𝑥 = (𝑥𝑥1 , 𝑥𝑥2 , 𝑒𝑒1 , 𝑒𝑒2 , 𝑒𝑒3 )𝑇𝑇 = (0,0,81,55,20)𝑇𝑇 .
𝑥𝑥𝐻𝐻 𝑥𝑥𝐵𝐵 = 𝐴𝐴−1
𝐵𝐵 𝑏𝑏
124
Programmation linéaire
Propriétés géométriques des solutions de base réalisables:
On note
𝐷𝐷𝑅𝑅 = 𝑥𝑥 ∈ ℝ𝑛𝑛 | 𝐴𝐴𝐴𝐴 = 𝑏𝑏, 𝑥𝑥 ≥ 0
L’ensemble des solutions réalisables d’un PL sous forme standard.
Définitions (rappels):
Un polyèdre 𝑄𝑄 de ℝ𝑛𝑛 est défini par 𝑄𝑄 = 𝑥𝑥 ∈ ℝ𝑛𝑛 | 𝐴𝐴𝐴𝐴 = 𝑏𝑏 où 𝐴𝐴 est une
matrice 𝑚𝑚 × 𝑛𝑛.
Un ensemble 𝐸𝐸 est dit convexe si ∀𝑥𝑥, 𝑦𝑦 ∈ 𝐸𝐸, 𝜆𝜆𝜆𝜆 + 1 − 𝜆𝜆 𝑦𝑦 ∈ 𝐸𝐸 pour
tout 0 ≤ 𝜆𝜆 ≤ 1.
Proposition: L’ensemble 𝐷𝐷𝑅𝑅 est un polyèdre convexe, fermé.
125
Programmation linéaire
Propriétés géométriques des solutions de base réalisables:
3
Exemple: 𝐷𝐷𝑅𝑅 = 𝑥𝑥 ∈ ℝ3 | 2𝑥𝑥1 + 2 𝑥𝑥2 + 𝑥𝑥3 = 3, 𝑥𝑥1 , 𝑥𝑥2 , 𝑥𝑥3 ≥ 0
126
Programmation linéaire
Propriétés géométriques des solutions de base réalisables:
Caractérisation de l’optimum:
Définitions: Un point 𝑥𝑥 ∈ 𝐷𝐷𝑅𝑅 est un sommet (ou point extrême) si et
seulement s’il n’existe pas 𝑦𝑦, 𝑧𝑧 ∈ 𝐷𝐷𝑅𝑅 , 𝑦𝑦 ≠ 𝑧𝑧 tels que 𝑥𝑥 = 𝜆𝜆𝜆𝜆 + 1 − 𝜆𝜆 z avec
0 < 𝜆𝜆 < 1.
Théorème:
𝑥𝑥 est une solution de base réalisable si et seulement si x est un sommet
de 𝐷𝐷𝑅𝑅 .
L’optimum de la fonction objectif F sur 𝐷𝐷𝑅𝑅 , s’il existe, est atteint en au
moins un sommet de 𝐷𝐷𝑅𝑅 .
127
Programmation linéaire
Propriétés géométriques des solutions de base réalisables:
Tout se passe donc avec les solutions de base: pour résoudre un PL sous
forme standard, il suffit de se restreindre aux solutions de base réalisables
(les sommets de 𝐷𝐷𝑅𝑅 )
3 situations possibles:
𝐷𝐷𝑅𝑅 = ∅: le PL n’a pas de solution.
𝐷𝐷𝑅𝑅 ≠ ∅ mais la fonction objectif 𝐹𝐹 n’est pas majorée sur 𝐷𝐷𝑅𝑅 : le maximum de F
vaut +∞ (cas exclu si 𝐷𝐷𝑅𝑅 est borné)
𝐷𝐷𝑅𝑅 ≠ ∅ et 𝐹𝐹 est majorée sur 𝐷𝐷𝑅𝑅 : le PL admet une solution optimale (non
nécessairement unique)
128
Programmation linéaire
Propriétés géométriques des solutions de base réalisables:
Remarques: Au plus 𝐶𝐶𝑛𝑛𝑚𝑚 solutions de base réalisables. Pour déterminer une
solution de base, on doit résoudre 𝐴𝐴𝐵𝐵 𝑥𝑥𝐵𝐵 = 𝑏𝑏. Par une méthode directe de
type Gauss/LU requière de l’ordre de 𝒪𝒪(𝑚𝑚3 ) opérations.
129
Programmation linéaire
Propriétés géométriques des solutions de base réalisables:
130
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Deux phases:
Phase 1 – Initialisation: Trouver une solution de base réalisable (ou bien
détecter l’impossibilité).
Phase 2 – Progression: On passe d’un sommet à un sommet voisin pour
augmenter la fonction objectif.
131
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
132
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
But: On veut trouver une autre base 𝐵𝐵∗ et une solution de base
réalisable 𝒙𝒙∗ telles que 𝒙𝒙∗ est meilleure que 𝒙𝒙 c’est-à-dire:
𝐹𝐹(𝒙𝒙∗ ) > 𝐹𝐹(𝒙𝒙)
133
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
134
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Démonstration:
On a 𝑏𝑏 = 𝐴𝐴𝐴𝐴 = 𝐴𝐴𝐵𝐵 𝑥𝑥𝐵𝐵 + 𝐴𝐴𝐻𝐻 𝑥𝑥𝐻𝐻 avec 𝐴𝐴𝐵𝐵 inversible, donc
𝑥𝑥𝐵𝐵 = 𝐴𝐴−1
𝐵𝐵 𝑏𝑏 − 𝐴𝐴𝐻𝐻 𝑥𝑥𝐻𝐻 . On obtient donc:
𝑐𝑐𝐵𝐵
𝐹𝐹 𝑥𝑥 = 𝑐𝑐 𝑇𝑇 𝑥𝑥 = 𝑐𝑐𝐵𝐵𝑇𝑇 𝑥𝑥𝐵𝐵 + 𝑐𝑐𝐻𝐻𝑇𝑇 𝑥𝑥𝐻𝐻
avec 𝑐𝑐 = 𝑐𝑐
𝐻𝐻
= 𝑐𝑐𝐵𝐵𝑇𝑇 𝐴𝐴−1
𝐵𝐵 𝑏𝑏 − 𝐴𝐴𝐻𝐻 𝑥𝑥𝐻𝐻
𝑇𝑇
+ 𝑐𝑐𝐻𝐻 𝑥𝑥𝐻𝐻
= 𝑐𝑐𝐵𝐵𝑇𝑇 𝐴𝐴−1
𝐵𝐵 𝑏𝑏 + 𝑐𝑐 𝑇𝑇
𝐻𝐻 − 𝑐𝑐 𝑇𝑇 −1
𝐵𝐵 𝐴𝐴𝐵𝐵 𝐴𝐴𝐻𝐻 𝑥𝑥𝐻𝐻
Or 𝑥𝑥𝐵𝐵 = 𝐴𝐴−1 𝑇𝑇 −1 𝑇𝑇
𝐵𝐵 𝑏𝑏 (car 𝑥𝑥𝐻𝐻 = 0) et 𝑐𝑐𝐵𝐵 𝐴𝐴𝐵𝐵 𝑏𝑏 = 𝑐𝑐 𝑥𝑥 = 𝐹𝐹(𝑥𝑥) donc
135
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Variable entrante:
Si les coûts réduits sont tous négatifs i.e. 𝐿𝐿𝐻𝐻 ≤ 0, il n’est alors pas possible
d’augmenter la fonction objectif 𝐹𝐹: l’algorithme se termine normalement c’est-à-
dire qu’on a trouvé une solution de base réalisable 𝑥𝑥 optimale.
Dans ce cas contraire (i.e. ∃ 𝐿𝐿𝐻𝐻 𝑖𝑖 ≥ 0), on a intérêt à faire entrer dans la base, la
variable hors-base qui a le coût réduit positif le plus grand possible.
On note 𝑒𝑒 ∉ 𝐵𝐵 l’indice de la variable entrante. On choisit 𝑒𝑒 tel que:
𝐿𝐿𝐻𝐻 𝑒𝑒 = max 𝐿𝐿𝐻𝐻 𝑗𝑗 , 𝐿𝐿𝐻𝐻 𝑗𝑗 > 0
𝑗𝑗
136
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Remarque:
Si on traite d’un problème de minimisation c’est-à-dire avec
min 𝐹𝐹(𝑥𝑥)
alors la variable entrante 𝑥𝑥𝑒𝑒 est déterminée par l’indice
𝑒𝑒 = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑗𝑗 𝐿𝐿𝐻𝐻 𝑗𝑗 , 𝐿𝐿𝐻𝐻 𝑗𝑗 <0
137
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Variable sortante:
Une fois l’indice 𝑒𝑒 choisi, il faut déterminer la variable qui doit quitter
la base. En maintenant la relation 𝐴𝐴𝐴𝐴 = 𝑏𝑏 avec 𝑥𝑥 ≥ 0, on augmente la
variable entrante 𝑥𝑥𝑒𝑒 jusqu’à annuler une des variables de base. Cette
variable sera alors la variable sortante.
𝐴𝐴𝐴𝐴 = 𝑏𝑏 ⇔ 𝐴𝐴𝐵𝐵 𝑥𝑥𝐵𝐵 + 𝐴𝐴𝑒𝑒 𝑥𝑥𝑒𝑒 = 𝑏𝑏 où 𝐴𝐴𝑒𝑒 désigne la e-ième colonne de 𝐴𝐴
⇔ 𝑥𝑥𝐵𝐵 = 𝐴𝐴−1 𝑒𝑒
𝐵𝐵 𝑏𝑏 − 𝐴𝐴 𝑥𝑥𝑒𝑒
⇔ 𝑥𝑥𝐵𝐵 = 𝑥𝑥𝐵𝐵 − 𝐴𝐴−1 𝐵𝐵 𝐴𝐴𝑒𝑒
𝑥𝑥𝑒𝑒
⇔ 𝑥𝑥𝐵𝐵 = 𝑥𝑥𝐵𝐵 − 𝑧𝑧𝑥𝑥𝑒𝑒 avec 𝑧𝑧 = 𝐴𝐴−1 𝑒𝑒
𝐵𝐵 𝐴𝐴 ∈ ℝ
𝑚𝑚
138
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Sinon (i.e. il existe 𝑧𝑧𝑖𝑖 > 0), pour avoir la positivité (𝑥𝑥𝐵𝐵 )𝑖𝑖 − 𝑧𝑧𝑖𝑖 𝑥𝑥𝑒𝑒 ≥ 0 pour tout
𝑖𝑖, on choisit la variable sortante 𝑥𝑥𝑠𝑠 pour laquelle le rapport (𝑥𝑥𝐵𝐵 )𝑖𝑖 ⁄𝑧𝑧𝑖𝑖 pour 𝑖𝑖 =
1, … , 𝑚𝑚 avec 𝑧𝑧𝑖𝑖 > 0, est le plus petit possible:
139
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
140
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
141
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
PL sous forme standard: max𝑛𝑛 [𝐹𝐹(𝑥𝑥) = 𝑐𝑐 𝑇𝑇 𝑥𝑥]
𝑥𝑥∈ℝ
𝐴𝐴𝑥𝑥 = 𝑏𝑏
�
𝑥𝑥 ≥ 0
Principe: On exprime les variables de base 𝑥𝑥𝐵𝐵 ainsi que 𝐹𝐹 en fonction des
variables hors-base 𝑥𝑥𝐻𝐻 . On obtient un système linéaire qu’on appelle dictionnaire.
Exemple du problème de production:
max [𝐹𝐹(𝑥𝑥1 , 𝑥𝑥2 ) = 6𝑥𝑥1 + 4𝑥𝑥2 ]
(𝑥𝑥1 ,𝑥𝑥2 )
3𝑥𝑥1 + 9𝑥𝑥2 + 𝑒𝑒1 = 81
4𝑥𝑥1 + 5𝑥𝑥2 + 𝑒𝑒2 = 55
2𝑥𝑥1 + 𝑥𝑥2 + 𝑒𝑒3 = 20
𝑥𝑥1 , 𝑥𝑥2 ≥ 0, 𝑒𝑒1 , 𝑒𝑒2 , 𝑒𝑒3 ≥ 0
142
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Etape 1:
Solution de base réalisable initiale: 𝑥𝑥1 = 0, 𝑥𝑥2 = 0, 𝑒𝑒1 = 81, 𝑒𝑒2 = 55, 𝑒𝑒3 = 20
avec 𝐹𝐹 = 0.
Dictionnaire: On exprime les variables de base 𝑒𝑒1 , 𝑒𝑒2 , 𝑒𝑒3 en fonction des variables
hors-base 𝑥𝑥1 , 𝑥𝑥2 .
143
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
144
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Etape 2:
Dictionnaire: On exprime la nouvelle variable de base 𝑥𝑥1 en fonction de 𝑥𝑥2 et 𝑒𝑒3
(nouvelle variable hors-base). On utilise la 3ème équation du dictionnaire de l’étape
1 et on substitue 𝑥𝑥1 dans les autres relations.
145
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
146
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
147
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Etape 3:
Dictionnaire: On exprime la nouvelle variable de base 𝑥𝑥2 en fonction des
variables hors-base 𝑒𝑒2 et 𝑒𝑒3 . On utilise la 3ème équation du dictionnaire de l’étape 2
et on substitue 𝑥𝑥2 dans les autres relations.
148
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
149
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
150
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
151
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
3. Si 𝐿𝐿𝐻𝐻 𝑒𝑒 > 0 et 𝑥𝑥𝑒𝑒 est non borné alors la fonction 𝐹𝐹 n’est pas majorée.
152
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
153
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
154
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Introduction:
PL sous forme canonique pure avec les contraintes: 𝐴𝐴𝑥𝑥 ≤ 𝑏𝑏, 𝑥𝑥 ≥ 0
On peut déterminer facilement une solution de base réalisable dans le cas où
𝑏𝑏 ≥ 0. En effet, sous forme standard les contraintes deviennent 𝐴𝐴𝐴𝐴 + 𝑒𝑒 = 𝑏𝑏, avec
𝑥𝑥, 𝑒𝑒 ≥ 0 où e sont les variables d’écarts.
Une solution de base réalisable évidente dans ce cas, est 𝑥𝑥 = 0, 𝑒𝑒 = 𝑏𝑏 ≥ 0.
Mais pour un PL sous forme standard, il n’y a pas toujours de solution de base
réalisable évidente.
155
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Variables auxiliaires:
PL sous forme standard: max𝑛𝑛[𝐹𝐹(𝑥𝑥) = 𝑐𝑐 𝑇𝑇 𝑥𝑥]
𝑥𝑥∈ℝ
𝐴𝐴𝑥𝑥 = 𝑏𝑏
�
𝑥𝑥 ≥ 0
On ne suppose pas que la matrice 𝐴𝐴 ∈ ℳ𝑚𝑚×𝑛𝑛 est de rang plein, ni qu’il existe
bien des solutions réalisables.
Pour obtenir une solution de base réalisable ou bien pour détecter l'impossibilité,
on introduit un problème de programmation linéaire auxiliaire pour des variables
supplémentaires appelées variables artificielles.
156
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Programme auxiliaire:
Le programme auxiliaire associé à (PL) s’écrit:
𝑚𝑚
min � 𝑎𝑎𝑖𝑖
(𝑥𝑥,𝑎𝑎)
𝑃𝑃𝑃𝑃𝑃𝑃 𝑖𝑖=1
𝐴𝐴𝐴𝐴 + 𝑎𝑎 = 𝑏𝑏
𝑥𝑥 ≥ 0
𝑎𝑎 ≥ 0
où 𝑎𝑎 = 𝑎𝑎1 , … , 𝑎𝑎𝑚𝑚 sont appelées variables artificielles.
157
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Proposition (évidente): Un (PL) admet une solution réalisable si et seulement si le
problème auxiliaire (PLA) admet une solution de base optimale avec 𝑎𝑎 = 0.
Détermination d’une solution de base réalisable via le problème auxiliaire: On
applique l'algorithme du simplexe au problème auxiliaire (PLA). À la fin du simplexe,
le coût minimal est nul sinon on a détecté l'impossibilité pour (PL) (i.e. 𝐷𝐷𝑅𝑅 = ∅). Si
tout s’est déroulé normalement (coût nul), on cherche à éliminer de la base toutes
les variables artificielles.
Deux cas possibles:
On a réussi à faire sortir toutes les variables artificielles. On passe à la phase 2.
S’il reste des variables artificielles dans la base (base dégénérée) alors les lignes
associées à ces variables sont des contraintes redondantes qu’on élimine.
158
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
159
Introduction
Phase 2 – Progression
Méthode des dictionnaires
Algorithme du simplexe Finitude du simplexe
Phase 1 – Initialisation
Complexité du simplexe:
Complexité = nombre d’itération dans le simplexe (phase 2).
On peut construire des exemples avec une complexité exponentielle en 𝒪𝒪 2𝑛𝑛
itérations (Klee-Minty, 1972).
Mais dans la pratique la complexité du simplexe croît peu avec le nombre 𝑛𝑛 de
variables. En pratique, le nombre d'itérations est proportionnel au nombre 𝑚𝑚
de contraintes (de 𝑚𝑚 à 3𝑚𝑚 itérations).
Si on tient compte de la résolution des systèmes linéaires avec une formule de
mise à jour de l’inverse (Shermann-Morrison), on a 𝒪𝒪(𝑚𝑚2 ) opérations pour
l’inverse.
160