Institut National des Sciences Appliquées et de Technologie RECHERCHE OPÉRATIONNELLE Mohamed Khalil Labidi [email protected] Année universitaire : 2014 – 2015 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 Il souhaite effectuer la tournée la plus courte possible 𝐷𝐷 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 decisionmaking Roadef (société française de recherche opérationnelle et d’aide à la décision): Approche scientifique pour la résolution de problèmes de gestion de systèmes complexes 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… Transport: minimiser la distance totale parcourue selon les quantités de matériaux à transporter, capacité des transporteurs, points de ravitaillement en carburant… 13 Introduction à la théorie des graphes Introduction à la théorie des graphes 1. 2. 3. 4. 5. Introduction Notions fondamentales sur les graphes Représentation d’un graphe Arbres, forêts et arborescences 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 Les sommets représentent les terres et les arêtes les ponts 20 Introduction 21 Notions fondamentales sur les graphes Un graphe 𝐺𝐺 = (𝑋𝑋, 𝑈𝑈) est déterminé par la donnée : 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 𝑢𝑢 Si tous les nœuds de 𝐺𝐺 sont mutuellement connectés, on aura 𝑚𝑚 = G sera dit complet 𝑛𝑛 𝑛𝑛−1 2 et 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 On appelle ainsi diamètre d’un graphe G, noté 𝛿𝛿 𝐺𝐺 , la distance maximale entre deux sommets du graphe G 32 Représentation d’un graphe Comment stocker un graphe d’une manière efficace ? 33 Représentation d’un graphe espace mémoire la complexité d’accès 34 Représentation d’un graphe Aucune représentation n’est parfaite Choix de la structure à adopter en fonction du graphe et l’algorithme Trois structures très utilisées: Matrice d’incidence nœud-arc Matrice d’adjacence nœud-nœud Liste d’adjacence 35 Représentation d’un graphe Matrice d’incidence nœud-arc: Matrice 𝒜𝒜 𝐺𝐺 de taille 𝑛𝑛 × 𝑚𝑚 𝑎𝑎𝑖𝑖𝑖𝑖 𝑠𝑠𝑠𝑠 𝑙𝑙𝑙𝑙 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑖𝑖 𝑒𝑒𝑒𝑒𝑒𝑒 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙 𝑑𝑑𝑑𝑑 𝑙𝑙𝑙𝑎𝑎𝑎𝑎𝑎𝑎 𝑘𝑘 1 = �−1 𝑠𝑠𝑠𝑠 𝑙𝑙𝑙𝑙 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑖𝑖 𝑒𝑒𝑒𝑒𝑒𝑒 𝑙𝑙𝑙𝑙 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 𝑑𝑑𝑑𝑑 𝑙𝑙𝑙𝑎𝑎𝑎𝑎𝑎𝑎 𝑘𝑘 0 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 Dans le cas non orienté, les coefficients valent 1 si le sommet en est une extrémité de l’arête et 0 sinon 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 𝑛𝑛 × 𝑛𝑛 𝑏𝑏𝑖𝑖𝑖𝑖 = 1 𝑠𝑠𝑠𝑠 𝑒𝑒𝑒𝑒 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑠𝑠𝑠𝑠 𝑖𝑖, 𝑗𝑗 ∈ 𝑈𝑈 (𝑏𝑏𝑖𝑖𝑖𝑖 = 0 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠) Remarque: 𝐺𝐺 ne peut contenir ni d’arêtes multiples, ni plus d’une boucle par sommet 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 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 6 0 41 Représentation d’un graphe Liste d’adjacence: Chaque élément de la première représente un nœud qui à son tour comporte une structure à une dimension qui énumèrera les successeurs du sommet en question 42 Représentation d’un graphe Liste d’adjacence: Cas orienté: 1 2 3 4 5 6 → ∅ → 1 → 4 → 3 → 5 → 1 6 43 Représentation d’un graphe Liste d’adjacence: Cas non orienté: 1 2 3 4 5 6 → 3 6 → 3 6 → 1 2 → 5 → 4 → 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: 𝑙𝑙 𝜇𝜇 = ∑𝑢𝑢∈𝜇𝜇 𝑙𝑙(𝑢𝑢) soit minimale 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 Comment connecter toutes les villes en minimisant le coût total du réseau? 58 Problèmes: Le problème de l’arbre couvrant minimum Arbre de recouvrement: Un arbre de recouvrement (AR) 𝐺𝐺𝐴𝐴𝐴𝐴 = 𝑋𝑋, 𝑈𝑈 ∗ de 𝐺𝐺 est un sous-graphe recouvrant de 𝐺𝐺 qui est un arbre, les arêtes de 𝐺𝐺𝐴𝐴𝐴𝐴 sont appelées branches 59 Problèmes: Le problème de l’arbre couvrant minimum Formulation: étant un graphe 𝐺𝐺 = 𝑋𝑋, 𝑈𝑈 non orienté, connexe et pondéré par une fonction 𝑙𝑙 attachée aux arêtes. On souhaite trouver dans 𝐺𝐺 un AR de poids total 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 𝐹𝐹 = 𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉 marquer arbitrairement un sommet Itérations /* F est l’ensemble des arêtes de l’arbre */ Tant Que il existe un sommet non marqué adjacent à un sommet marqué Sélectionner un sommet 𝑦𝑦 non marqué adjacent à un sommet marqué 𝑥𝑥 tel que (𝑥𝑥, 𝑦𝑦) est l'arête sortante de plus faible poids 𝐹𝐹 = 𝐹𝐹 ∪ { 𝑥𝑥, 𝑦𝑦 } marquer 𝑦𝑦 faire 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 𝐹𝐹 = 𝑉𝑉𝑉𝑉𝑉𝑉𝑉𝑉 et 𝐾𝐾 = 0 Itérations /* 𝐿𝐿𝑈𝑈 est l’ensemble des arêtes */ /* F est l’ensemble des arêtes de l’arbre */ 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 Le problème du flot maximal consiste à déterminer un flot dont la valeur en un certain lieu est maximale Mais comment sait-on si un flot est maximal? 71 Problèmes: Le problème de flot maximum Pour un flot ϕ dans un réseau de transport 𝐺𝐺, on dit qu’un arc 𝑢𝑢 est saturé si l’on a 𝜑𝜑 𝑢𝑢 = 𝑐𝑐(𝑢𝑢) Un flot est dit complet si tout chemin allant de 𝑆𝑆 à 𝑃𝑃 contient au moins un arc saturé 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 Le réseau résiduel indique le long de quels arcs on peut augmenter ou diminuer le flot. Théorème: Soit ϕ un flot de 𝐺𝐺 (de 𝑆𝑆 à 𝑃𝑃) et 𝐺𝐺 ′ (ϕ) le réseau résiduel associé à ϕ. Une condition nécessaire et suffisante pour que le flot ϕ soit maximal est qu’il n’existe pas de chemin de 𝑆𝑆 à 𝑃𝑃 dans 𝐺𝐺 ′ (ϕ) 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 Malgré la révolution informatique de ces dernières années, certains problèmes d’intérêt pratique demeurent hors de portée de nos ordinateurs, même les plus rapides 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 Ces problèmes sont-ils intrinsèquement difficiles ou y-a-t-il un raccourci pour les résoudre? 81 Classification des problèmes La classe P Un problème est dit polynomial (appartenant à la classe P) s’il peut être résolu par un algorithme déterministe de complexité temporelle polynomiale en la taille du problème 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 pseudopolynomiale 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 P1 et P2 rapportent à la vente 6 euros et 4 euros par unité. 99 Programmation linéaire Modélisation: Quelles quantités (non entières) de produits P1 et P2 doit produire l’usine pour maximiser le bénéfice total venant de la vente des 2 produits??? 100 Programmation linéaire Modélisation: Variables: x1 et x2 sont les quantités des produits P1 et P2 fabriqués (𝑥𝑥1 , 𝑥𝑥2 ∈ ℝ) Fonction objectif à maximiser: La fonction objectif F correspond au bénéfice total: 𝐹𝐹(𝑥𝑥1 , 𝑥𝑥2 ) = 6𝑥𝑥1 + 4𝑥𝑥2 . On cherche donc max [𝐹𝐹(𝑥𝑥1 , 𝑥𝑥2 ) = 6𝑥𝑥1 + 4𝑥𝑥2 ] (𝑥𝑥1 ,𝑥𝑥2 ) 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: En résumé, le problème de production se modélise sous la forme d’un programme linéaire: max [𝐹𝐹(𝑥𝑥1 , 𝑥𝑥2 ) = 6𝑥𝑥1 + 4𝑥𝑥2 ] (𝑥𝑥1 ,𝑥𝑥2 ) 3𝑥𝑥1 + 9𝑥𝑥2 ≤ 81 � 4𝑥𝑥1 + 5𝑥𝑥2 ≤ 55 2𝑥𝑥1 + 𝑥𝑥2 ≤ 20 𝑥𝑥1 , 𝑥𝑥2 ≥ 0. 103 Programmation linéaire Résolution graphique: (PL à 2 variables) Les contraintes où apparaissent des inégalités correspondent géométriquement à des demi-plans. Intersection de ces demi-plans = ensemble des variables satisfaisant à toutes les contraintes. L’ensemble des contraintes est un polygone convexe. 104 Programmation linéaire Résolution graphique: (PL à 2 variables) 105 Programmation linéaire Détermination du maximum de F: Fonction objectif 𝐹𝐹(𝑥𝑥1 , 𝑥𝑥2 ) = 6𝑥𝑥1 + 4𝑥𝑥2 ⇒ droite de coefficient directeur −1, 6⁄4 . Pour déterminer max F, on fait « glisser » la droite (translation parallèle à la direction de la droite) du haut vers le bas jusqu’à rencontrer l’ensemble des variables satisfaisant les contraintes ⇒ solution optimale 𝑥𝑥1 , 𝑥𝑥2 = (15⁄2 , 5) avec max 𝐹𝐹 = 65. 106 Programmation linéaire Détermination du maximum de F: Remarque: On remarque que le maximum de F est atteint en un sommet du polygone convexe des contraintes. 107 Programmation linéaire Forme canonique mixte: max (𝑥𝑥1 ,…,𝑥𝑥𝑛𝑛 ) 𝑛𝑛 𝐹𝐹 𝑥𝑥1 , … , 𝑥𝑥𝑛𝑛 = 𝑐𝑐1 𝑥𝑥1 + ⋯ + 𝑐𝑐𝑛𝑛 𝑥𝑥𝑛𝑛 = � 𝑐𝑐𝑗𝑗 𝑥𝑥𝑗𝑗 𝑛𝑛 𝑗𝑗=1 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖: ∀𝑖𝑖 ∈ 𝐼𝐼1 , � 𝑎𝑎𝑖𝑖𝑗𝑗 𝑥𝑥𝑗𝑗 = 𝑎𝑎𝑖𝑖𝑖 𝑥𝑥1 + ⋯ + 𝑎𝑎𝑖𝑖𝑖𝑖 𝑥𝑥𝑛𝑛 ≤ 𝑏𝑏𝑖𝑖 𝑗𝑗=1 𝑛𝑛 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 é𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔𝑔: ∀𝑖𝑖 ∈ 𝐼𝐼2 , � 𝑎𝑎𝑖𝑖𝑖𝑖 𝑥𝑥𝑗𝑗 = 𝑏𝑏𝑖𝑖 𝑗𝑗=1 𝑐𝑐𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 𝑑𝑑𝑑𝑑 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠: ∀𝑖𝑖 ∈ 𝐽𝐽1 , 𝑥𝑥𝑖𝑖 ≥ 0 ∀𝑗𝑗 ∈ 𝐽𝐽2 , 𝑥𝑥𝑗𝑗 𝑑𝑑𝑑𝑑 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞𝑞 108 Programmation linéaire Forme canonique mixte: 𝐼𝐼 = 𝐼𝐼1 ∪ 𝐼𝐼2 : Ensemble des indices de contraintes 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝐼𝐼 = 𝑚𝑚 𝐽𝐽 = 𝐽𝐽1 ∪ 𝐽𝐽2 : Ensemble des indices des variables 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝐽𝐽 = 𝑛𝑛 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: Sous cette forme, pas de contraintes d’égalité 𝐼𝐼2 = ∅ et 𝐽𝐽2 = ∅ Un programme linéaire (PL) est dit sous forme canonique pure s’il s’écrit: max[𝐹𝐹(𝑥𝑥) = 𝑐𝑐 𝑥𝑥 = 𝑐𝑐1 𝑥𝑥1 + ⋯ + 𝑐𝑐𝑛𝑛 𝑥𝑥𝑛𝑛 ] 𝑥𝑥 𝐴𝐴𝑥𝑥 ≤ 𝑏𝑏 𝑥𝑥 ≥ 0 � 111 Programmation linéaire Forme standard: Sous cette forme, 𝐼𝐼1 = ∅ et 𝐽𝐽2 = ∅ Un programme linéaire (PL) est dit sous forme standard s’il s’écrit: max[𝐹𝐹(𝑥𝑥) = 𝑐𝑐 𝑇𝑇 𝑥𝑥] 𝑥𝑥 𝐴𝐴𝑥𝑥 = 𝑏𝑏 𝑥𝑥 ≥ 0 � 112 Programmation linéaire Forme standard: On dit de plus que le PL est sous forme standard simpliciale si A de taille 𝑚𝑚 × 𝑛𝑛 avec 𝑚𝑚 ≤ 𝑛𝑛, se décompose en: 𝐴𝐴 = (𝐼𝐼𝑚𝑚 |𝐻𝐻) 𝐼𝐼𝑚𝑚 matrice identité de taille 𝑚𝑚 × 𝑚𝑚 𝐻𝐻 matrice de taille 𝑚𝑚 × (𝑛𝑛 − 𝑚𝑚) 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: PL sous forme standard 𝐴𝐴𝐴𝐴 = 𝑏𝑏 . Hypothèse de rang plein: On suppose que la matrice 𝐴𝐴 est de taille 𝑚𝑚 × 𝑛𝑛 avec 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝐴𝐴 = 𝑚𝑚 ≤ 𝑛𝑛 . Rappel: 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝐴𝐴 = nombre maximal de lignes de 𝐴𝐴 linéairement indépendantes (= nombre max. de colonnes linéairement indépendantes). 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 Une base est donnée par 𝐵𝐵 = 3,4,5 avec 𝐴𝐴𝐵𝐵 = 0 0 La solution de base réalisable correspondante est: 𝑥𝑥 = (𝑥𝑥1 , 𝑥𝑥2 , 𝑒𝑒1 , 𝑒𝑒2 , 𝑒𝑒3 )𝑇𝑇 = (0,0,81,55,20)𝑇𝑇 . 𝑥𝑥𝐻𝐻 0 1 0 0 0 . 1 𝑥𝑥𝐵𝐵 = 𝐴𝐴−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. ⟹ Exploration exhaustive de toutes les solutions de base (comparaison des coûts correspondants): 𝒪𝒪(𝑚𝑚3 𝐶𝐶𝑛𝑛𝑚𝑚 ) opérations. Ce nombre est vite très grand avec n et m. par exemple, avec 𝑛𝑛 = 20 et 𝑚𝑚 = 10, on a 3 × 108 opérations. 129 Programmation linéaire Propriétés géométriques des solutions de base réalisables: Méthode du simplexe: On explore seulement les sommets qui permettent d’augmenter la fonction objectif ⟹ on réduit le nombre de solution de base à explorer. 130 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation On a vu que pour résoudre un PL, il suffit de se restreindre aux solutions de bases réalisables. Méthode du simplexe due à Dantzig (1947). 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 Finitude du simplexe Phase 1 – Initialisation Algorithme du simplexe PL sous forme standard: max𝑛𝑛[𝐹𝐹(𝑥𝑥) = 𝑐𝑐 𝑇𝑇 𝑥𝑥] 𝑥𝑥∈ℝ � 𝐴𝐴𝑥𝑥 = 𝑏𝑏 𝑥𝑥 ≥ 0 On dispose d’une base 𝐵𝐵 et d’une solution de base réalisable 𝒙𝒙 avec (à une permutation près des colonnes de 𝐴𝐴) 𝐴𝐴 = 𝐴𝐴𝐵𝐵 𝐴𝐴𝐻𝐻 ) et 𝑥𝑥𝐵𝐵 𝑥𝑥 = 𝑥𝑥 𝐻𝐻 Où 𝐴𝐴𝐵𝐵 matrice 𝑚𝑚 × 𝑛𝑛, inversible (variables de base) 𝐴𝐴𝐻𝐻 matrice 𝑚𝑚 × (𝑛𝑛 − 𝑚𝑚) (variables hors base) 132 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires 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: 𝐹𝐹(𝒙𝒙∗ ) > 𝐹𝐹(𝒙𝒙) Principe de la méthode du simplexe: Faire rentrer une variable horsbase dans la nouvelle base (variable entrante) et faire sortir à la place une variable de base (variable sortante). 133 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Variable entrante - calcul des coûts réduits: Fonction objectif F exprimée en fonction des variables hors-base. Ensemble des solutions réalisables 𝐷𝐷𝑅𝑅 = 𝑥𝑥 ∈ ℝ𝑛𝑛 | 𝐴𝐴𝐴𝐴 = 𝑏𝑏, 𝑥𝑥 ≥ 0 . Proposition (Coûts réduits): Pour tout 𝑥𝑥 ∈ 𝐷𝐷𝑅𝑅 , on a 𝐹𝐹 𝑥𝑥 = 𝐹𝐹 𝑥𝑥 + 𝐿𝐿𝑇𝑇𝐻𝐻 𝑥𝑥𝐻𝐻 où 𝐿𝐿𝑇𝑇𝐻𝐻 = 𝑐𝑐𝐻𝐻𝑇𝑇 − 𝑐𝑐𝐵𝐵𝑇𝑇 𝐴𝐴−1 𝐵𝐵 𝐴𝐴𝐻𝐻 est le vecteur des coûts réduits. 134 Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Algorithme du simplexe Démonstration: On a 𝑏𝑏 = 𝐴𝐴𝐴𝐴 = 𝐴𝐴𝐵𝐵 𝑥𝑥𝐵𝐵 + 𝐴𝐴𝐻𝐻 𝑥𝑥𝐻𝐻 avec 𝐴𝐴𝐵𝐵 inversible, donc 𝑥𝑥𝐵𝐵 = 𝐴𝐴−1 𝐵𝐵 𝑏𝑏 − 𝐴𝐴𝐻𝐻 𝑥𝑥𝐻𝐻 . On obtient donc: 𝐹𝐹 𝑥𝑥 = 𝑐𝑐 𝑇𝑇 𝑥𝑥 = 𝑐𝑐𝐵𝐵𝑇𝑇 𝑥𝑥𝐵𝐵 𝑐𝑐𝐵𝐵 avec 𝑐𝑐 = 𝑐𝑐 𝐻𝐻 𝑇𝑇 + 𝑐𝑐𝐻𝐻 𝑥𝑥𝐻𝐻 + 𝑐𝑐𝐻𝐻𝑇𝑇 𝑥𝑥𝐻𝐻 = 𝑐𝑐𝐵𝐵𝑇𝑇 𝐴𝐴−1 𝐵𝐵 𝑏𝑏 − 𝐴𝐴𝐻𝐻 𝑥𝑥𝐻𝐻 𝑇𝑇 𝑇𝑇 −1 = 𝑐𝑐𝐵𝐵𝑇𝑇 𝐴𝐴−1 𝑏𝑏 + 𝑐𝑐 − 𝑐𝑐 𝐵𝐵 𝐻𝐻 𝐵𝐵 𝐴𝐴𝐵𝐵 𝐴𝐴𝐻𝐻 𝑥𝑥𝐻𝐻 𝑇𝑇 −1 𝑇𝑇 Or 𝑥𝑥𝐵𝐵 = 𝐴𝐴−1 𝐵𝐵 𝑏𝑏 (car 𝑥𝑥𝐻𝐻 = 0) et 𝑐𝑐𝐵𝐵 𝐴𝐴𝐵𝐵 𝑏𝑏 = 𝑐𝑐 𝑥𝑥 = 𝐹𝐹(𝑥𝑥) donc 𝐹𝐹 𝑥𝑥 = 𝐹𝐹 𝑥𝑥 + 𝑐𝑐𝐻𝐻𝑇𝑇 − 𝑐𝑐𝐵𝐵𝑇𝑇 𝐴𝐴−1 𝐵𝐵 𝐴𝐴𝐻𝐻 𝑥𝑥𝐻𝐻 135 Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Algorithme du simplexe 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 𝑗𝑗 ce qu’on note par 𝑒𝑒 = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑗𝑗 𝐿𝐿𝐻𝐻 𝑗𝑗 , 𝐿𝐿𝐻𝐻 𝑗𝑗 >0 136 Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Algorithme du simplexe 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 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires 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 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation On doit avoir 𝑥𝑥𝐵𝐵 = 𝑥𝑥𝐵𝐵 − 𝑧𝑧𝑥𝑥𝑒𝑒 ≥ 0 Si 𝑧𝑧 ≤ 0, on peut augmenter 𝑥𝑥𝑒𝑒 autant qu’on veut, on aura toujours la positivité de la variable de base 𝑥𝑥𝐵𝐵 . La fonction objectif n’est pas majorée sur 𝐷𝐷𝑅𝑅 ma𝑥𝑥 𝐹𝐹 = +∞ ⟹ arrêt de l’algorithme. 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 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Variable sortante (indice): (𝑥𝑥𝐵𝐵 )𝑖𝑖 𝑠𝑠 = argmin , 𝑧𝑧𝑖𝑖 > 0 𝑧𝑧𝑖𝑖 𝑖𝑖 On a, dans ce cas, 𝑥𝑥𝑠𝑠 = 0 et 𝑥𝑥𝐵𝐵 ≥ 0 Remarque: La valeur de la variable entrante est donnée par (𝑥𝑥𝐵𝐵 )𝑖𝑖 𝑥𝑥𝑒𝑒 = min , 𝑧𝑧𝑖𝑖 > 0 𝑖𝑖 𝑧𝑧𝑖𝑖 140 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Méthode du simplexe – Phase 2 – Progression: 1) 2) 3) 4) - Calcul des variables de base réalisables: Etant donné 𝐴𝐴 = 𝐴𝐴𝐵𝐵 |𝐴𝐴𝐻𝐻 , on calcule 𝑥𝑥𝐵𝐵 = 𝐴𝐴−1 𝐵𝐵 𝑏𝑏 ≥ 0. - Calcul des coût réduits: 𝐿𝐿𝑇𝑇𝐻𝐻 = 𝑐𝑐𝐻𝐻𝑇𝑇 − 𝑐𝑐𝐵𝐵𝑇𝑇 𝐴𝐴−1 𝐹𝐹 𝑥𝑥 = 𝐹𝐹 𝑥𝑥 + 𝐿𝐿𝑇𝑇𝐻𝐻 𝑥𝑥𝐻𝐻 𝐵𝐵 𝐴𝐴𝐻𝐻 - Si 𝐿𝐿𝐻𝐻 ≤ 0 alors 𝑥𝑥𝐵𝐵 est une solution optimale (→arrêt de l’algorithme). variable entrante: 𝑒𝑒 = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑗𝑗 𝐿𝐿𝐻𝐻 𝑗𝑗 , 𝐿𝐿𝐻𝐻 𝑗𝑗 > 0 𝑒𝑒 variable sortante: - Calcul de 𝑧𝑧 = 𝐴𝐴−1 𝐵𝐵 𝐴𝐴 puis - 𝑠𝑠 = argmin 𝑖𝑖 (𝑥𝑥𝐵𝐵 )𝑖𝑖 𝑧𝑧𝑖𝑖 , 𝑧𝑧𝑖𝑖 > 0 On obtient une nouvelle base 𝐵𝐵� et une nouvelle matrice 𝐴𝐴𝐵𝐵� dans laquelle la colonne 𝐴𝐴𝑒𝑒 remplace la colonne 𝐴𝐴𝑠𝑠 . Calcul de 𝐴𝐴−1 𝐵𝐵� et retour en 1. 141 Algorithme du simplexe PL sous forme standard: Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation 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 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires 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 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Variable entrante 𝑥𝑥𝑒𝑒 : max 6,4 = 6 ⇒ 𝑥𝑥𝑒𝑒 = 𝑥𝑥1 . >0 Variable sortante 𝑥𝑥𝑠𝑠 : On maintient 𝑒𝑒1 ≥ 0, 𝑒𝑒2 ≥ 0, 𝑒𝑒3 ≥ 0 min >0 81 55 20 , , 3 4 2 Nouvelle solution de base réalisable: 𝑒𝑒2 = 15, 𝑒𝑒3 = 0 avec 𝐹𝐹 = 60 = 10 ⇒ 𝑥𝑥𝑠𝑠 = 𝑒𝑒3 𝑥𝑥1 = 10, 𝑥𝑥2 = 0, 𝑒𝑒1 = 51, 144 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires 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 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation On obtient ainsi le dictionnaire (étape 2) 146 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Variable entrante 𝑥𝑥𝑒𝑒 : max 1, −3 = 1 ⇒ 𝑥𝑥𝑒𝑒 = 𝑥𝑥2 . >0 Variable sortante 𝑥𝑥𝑠𝑠 : On maintient 𝑥𝑥1 ≥ 0, 𝑒𝑒1 ≥ 0, 𝑒𝑒2 ≥ 0 ⇒ 𝑥𝑥2 = min >0 10 51 15 , , 1⁄2 15⁄2 3 Nouvelle solution de base réalisable (étape 2): 𝑒𝑒1 = 27 , 𝑒𝑒2 2 = 0, 𝑒𝑒3 = 0 avec 𝐹𝐹 = 65. = 5 ⇒ 𝑥𝑥𝑠𝑠 = 𝑒𝑒2 𝑥𝑥1 = 15 , 2 𝑥𝑥2 = 5, 147 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires 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 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Tous les coûts réduits sont ≤ 0 donc on ne peut plus augmenter F: l’optimum est atteint et la solution optimale est 𝑥𝑥1∗ = 15 , 2 𝑥𝑥2∗ = 5, 𝑒𝑒1∗ = 27 , 2 𝑒𝑒2∗ = 0, 𝑒𝑒3∗ = 0 avec 𝐹𝐹 = 65 149 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation À chaque étape de l’algorithme du simplexe (en phase 2), il y a des cas remarquables qui conduisent tous à l’arrêt de l’algorithme. 1. Si les coûts réduits 𝐿𝐿𝐻𝐻 < 0, alors la solution de base réalisable courante est l’unique optimum. 150 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation 2. Si les coûts réduits 𝐿𝐿𝐻𝐻 ≤ 0, alors il y a deux cas remarquables: i. Si 𝐿𝐿𝐻𝐻 𝑒𝑒 = 0 et 𝑥𝑥𝑒𝑒 > 0, alors l’optimum n’est pas unique. 151 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation ii. Si 𝐿𝐿𝐻𝐻 𝑒𝑒 = 0 et 𝑥𝑥𝑒𝑒 = 0, alors l’optimum est unique (à priori). Dans ce cas, la base est dite dégénérée c’est-à-dire qu’il existe une variable de base nulle. 3. Si 𝐿𝐿𝐻𝐻 𝑒𝑒 > 0 et 𝑥𝑥𝑒𝑒 est non borné alors la fonction 𝐹𝐹 n’est pas majorée. 152 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Une solution de base réalisable est dite dégénérée si au moins une des variables de base est nulle. Théorème: Si au cours de l'algorithme du simplexe, aucune base rencontrée n'est dégénérée, alors l'algorithme se termine en un nombre fini d'itérations. Par conséquent, on ne rencontre jamais une base déjà rencontrée à une itération précédente. Le nombre de solution de base réalisable étant fini ≤ 𝐶𝐶𝑛𝑛𝑚𝑚 , l’algorithme s’arrête nécessairement en un nombre fini d’itérations. 153 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires Finitude du simplexe Phase 1 – Initialisation Remarque: S’il existe une base dégénérée, alors on peut rencontrer un éventuel cyclage de l'algorithme: on retrouve une base déjà rencontrée et on boucle indéfiniment. Pour traiter les cas de dégénérescence, on peut appliquer la règle de Bland (1977) qui assure l'arrêt de l'algorithme en un nombre fini d'itérations. Règle de Bland: Lorsque plusieurs variables sont susceptibles d'entrer ou de sortir de la base, on choisit toujours celle qui a l'indice le plus petit. 154 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires 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 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires 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 Finitude du simplexe Phase 1 – Initialisation Algorithme du simplexe Programme auxiliaire: Le programme auxiliaire associé à (PL) s’écrit: 𝑃𝑃𝑃𝑃𝑃𝑃 où 𝑎𝑎 = 𝑎𝑎1 , … , 𝑎𝑎𝑚𝑚 𝑚𝑚 min � 𝑎𝑎𝑖𝑖 (𝑥𝑥,𝑎𝑎) 𝑖𝑖=1 𝐴𝐴𝐴𝐴 + 𝑎𝑎 = 𝑏𝑏 𝑥𝑥 ≥ 0 𝑎𝑎 ≥ 0 sont appelées variables artificielles. 157 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires 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 Finitude du simplexe Phase 1 – Initialisation Algorithme du simplexe Phase d’initialisation du simplexe (phase 1): On note 𝐹𝐹𝑎𝑎𝑎𝑎𝑎𝑎 la valeur de la fonction objectif du problème auxiliaire (PLA) à la fin du simplexe, c’est-à-dire 𝐹𝐹𝑎𝑎𝑎𝑎𝑎𝑎 = min ∑𝑚𝑚 𝑖𝑖=1 𝑎𝑎𝑖𝑖 . (𝑥𝑥,𝑎𝑎) 1. Si 𝐹𝐹𝑎𝑎𝑎𝑎𝑎𝑎 = 0 et ∄𝑎𝑎𝑗𝑗 ∈ 𝑋𝑋𝐵𝐵 où 𝑋𝑋𝐵𝐵 désigne l’ensemble des variables de base pour (PLA), alors fin normale de la phase 1. On passe à la phase 2 du simplexe. 2. Si 𝐹𝐹𝑎𝑎𝑎𝑎𝑎𝑎 = 0 et ∃𝑎𝑎𝑗𝑗 ∈ 𝑋𝑋𝐵𝐵 avec 𝑎𝑎𝑗𝑗 = 0, alors on supprime les lignes et colonnes associées aux 𝑎𝑎𝑗𝑗 et on passe à la phase 2. 3. Si 𝐹𝐹𝑎𝑎𝑎𝑎𝑎𝑎 > 0 alors pas de solution réalisable 𝐷𝐷𝑅𝑅 = ∅ . 159 Algorithme du simplexe Introduction Phase 2 – Progression Méthode des dictionnaires 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