Recherche Opérationnelle - Julian Tugaut -...

27
Recherche Opérationnelle Julian Tugaut 1 , Olivier Alata, Franck Licini 2 octobre 2015 1. Si vous avez des remarques ou des questions, envoyez-moi un message à tu- [email protected]

Transcript of Recherche Opérationnelle - Julian Tugaut -...

Recherche Opérationnelle

Julian Tugaut1, Olivier Alata, Franck Licini

2 octobre 2015

1. Si vous avez des remarques ou des questions, envoyez-moi un message à tu-

[email protected]

ii

Table des matières

Table des matières iii

1 Introduction 1

1.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.1 La Recherche Opérationnelle dans l’antiquité . . . . . . . . 11.1.2 Quelques noms . . . . . . . . . . . . . . . . . . . . . . . . 11.1.3 Naissance de la Recherche Opérationnelle . . . . . . . . . . 11.1.4 L’après-guerre . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Qu’est la Recherche Opérationnelle ? . . . . . . . . . . . . . . . . 31.2.1 Une définition ? . . . . . . . . . . . . . . . . . . . . . . . . 31.2.2 Problèmes, Modélisation, Méthodes de résolutions . . . . . 3

1.3 Quelques exemples de problèmes . . . . . . . . . . . . . . . . . . . 41.3.1 Dilemme du brasseur (programmation linéaire) . . . . . . 41.3.2 Ordonnancement de tâches . . . . . . . . . . . . . . . . . . 51.3.3 Problème du Voyageur de Commerce . . . . . . . . . . . . 71.3.4 Problèmes de Partitions et de Chargements . . . . . . . . 7

1.4 Complexité des algorithmes et des problèmes . . . . . . . . . . . . 81.4.1 Un exemple introductif . . . . . . . . . . . . . . . . . . . . 81.4.2 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.5 Plan et buts du cours . . . . . . . . . . . . . . . . . . . . . . . . . 12

2 Programmation linéaire 13

2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.1.1 Solution graphique . . . . . . . . . . . . . . . . . . . . . . 142.1.2 Sensibilité à la variation des stocks . . . . . . . . . . . . . 142.1.3 Le problème dual du concurrent . . . . . . . . . . . . . . . 15

2.2 Un problème d’optimisation linéaire en dimension supérieure . . . 162.3 Méthode du simplexe : un aperçu par l’exemple . . . . . . . . . . 192.4 Méthode du simplexe sous forme de tableau . . . . . . . . . . . . 21

iii

iv TABLE DES MATIÈRES

Chapitre 1

Introduction

Ce chapitre est inspiré du cours donné par Roland Jégou à Télécom Saint-Étienne en 2014–2015.

1.1 Historique

1.1.1 La Recherche Opérationnelle dans l’antiquité

L’appellation « Recherche Opérationnelle » date des années quarante. Néan-moins, les problèmes qui lui sont relatifs sont bien plus anciens. Ainsi, les Car-thaginois ont bâti leur ville en arc de cercle autour de sa citadelle. Cela impliqueque les bâtisseurs connaissaient déjà, au 9ème siècle avant Jésus Christ, la figureplane qui, à périmètre donné, présente la surface maximale.

1.1.2 Quelques noms

On peut citer les noms suivants :– Léonard Euler, qui a résolu le problème des ponts de Königsberg (à l’origine

de la théorie des graphes).– Gaspard Monge, qui a étudié le problème de transports (pan entier des

probabilités et d’analyse des Équations aux Dérivées Partielles).– Augustin Cournot, qui a étudié l’économétrie.– André Ampère, qui a étudié la théorie des jeux.– Emile Borel, qui a étudié la théorie des jeux.

1.1.3 Naissance de la Recherche Opérationnelle

La véritable naissance de la Recherche Opérationnelle a eu lieu pendant laseconde guerre mondiale. Elle portait l’appellation « Operationnal research » (enAnglais) et « Operation research » (en Américain).

Le mot « operation » est à comprendre dans le sens d’activité militaire. Sonapplication est donc avant tout militaire.

1

2 CHAPITRE 1. INTRODUCTION

Lors de la naissance de cette science, l’objectif affiché était la préparationscientifique de décisions militaires : problèmes d’organisation, de planifications,de transport, de ravitaillements, implantations de radars, protection de convoismaritimes contre les sous-marins...

Patrick Maynard Stuart Blackett 1 est le fondateur de la recherche opération-nelle. En effet, sur la demande du gouvernement britannique, Blackett a réuniautour de lui une équipe hétérogène comprenant des mathématiciens (dont desstatisticiens), des physiciens, des biologistes, des économistes...

Le but était d’avoir les points de vue les plus différents sur les questions étu-diées. Parallèlement, l’exigence était faite d’avoir accès à toutes les sources d’in-formation pour pouvoir produire des rapports aussi objectifs que possibles. Enfin,Blackett insista sur le fait que les documents ne constituaient jamais qu’une opi-nion raisonnable sur les décisions à prendre, le dernier mot revenant toujours auxresponsables politiques.

Puis, les Américains ont emboîté le pas.

1.1.4 L’après-guerre

Après la guerre, la démarche et les méthodes mises au point furent de plus enplus utilisées dans le cadre industriel : coordination du travail pour en accroîtrela productivité et la rentabilité (gestion, politique d’investissements, répartitionde tâches...).

Ces applications furent bien sûr grandement facilitées par la commercialisationdes premiers ordinateurs dans les années cinquante.

Voici par exemple quelques problèmes concrets :

– Dans quel ordre doit-on effectuer les opérations de montage d’une voiturepour en minimiser le coût de production ?

– Comment découper des pièces géométriques dans une tôle métallique pouren limiter les pertes ?

– Déterminer les contenances minimales des entrepôts pour éviter les rupturesde stocks ?

– Comment calculer les meilleurs itinéraires (temps, coût, distance, etc) delivraison de marchandises ?

Il s’agit ainsi de problèmes d’ordonnancement de tâches, d’optimisation deproduction, de gestion des stocks, de détermination d’itinéraires, de répartitionsde tâches, de production optimale (bénéfice maximal avec des ressources limitées,moindres coûts tout en satisfaisant la demande...).

1. Prix Nobel de Physique en 1948

1.2. QU’EST LA RECHERCHE OPÉRATIONNELLE ? 3

1.2 Qu’est la Recherche Opérationnelle ?

1.2.1 Une définition ?

Commençons par donner la définition qui apparaît sur le dictionnaire de l’in-formatique du Larousse en 1996 : « Science de la préparation des décisions quiprocède de la mathématisation des facteurs essentiels entrant en jeu dans lesproblèmes d’organisation militaire, économique, industrielle, afin de clarifier lesdonnées motivant une décision ».

Donnons maintenant la définition de Wikipedia (du 28 septembre 2015) : « Larecherche opérationnelle peut être définie comme l’ensemble des méthodes et tech-niques rationnelles orientées vers la recherche de la meilleure façon d’opérer deschoix en vue d’aboutir au résultat visé ou au meilleur résultat possible. Elle faitpartie des aides à la décision dans la mesure où elle propose des modèles concep-tuels en vue d’analyser et de maîtriser des situations complexes pour permettreaux décideurs de comprendre et d’évaluer les enjeux et d’arbitrer ou de faire leschoix les plus efficaces. Ce domaine fait largement appel au raisonnement ma-thématique (logique, probabilités, analyse des données) et à la modélisation desprocessus. Il est fortement lié à l’ingénierie des systèmes, ainsi qu’au managementdu système d’information. ».

En fait, il n’y a pas de définition réellement satisfaisante et exhaustive de laRecherche Opérationnelle car il n’y a pas vraiment de domaine spécifique ni deméthode unique de résolution mais de nombreux champs d’application très divers.

L’appellation d’origine est militaire mais elle reste l’appellation standard. Onen trouve parfois d’autres :

– Optimisation discrète. (par opposition au cours d’optimisation continue).– Optimisation combinatoire.– Mathématiques de la décision.– Programmation mathématique.– Programmation discrète.

Ces appellations ne sont pas dénuées de sens. Néanmoins, elles ne rendent pasentièrement compte de la diversité des domaines étudiés ni de celles des méthodesemployées.

1.2.2 Problèmes, Modélisation, Méthodes de résolutions

Plutôt que d’en rechercher une définition précise, ce qui s’avèrerait par ailleursfort inutile, donnons quelques outils mathématiques classiques de modélisationà voir comme des cadres dans lesquels peuvent se formuler les problèmes et quipermettent d’en proposer des éclairages, quelques domaines usuels d’étude, ainsique des méthodes classiques de résolution.

4 CHAPITRE 1. INTRODUCTION

1.2.2.1 Problèmes et Modélisation

– Programmation linéaire classique ou programmation linéaire en nombresentiers.

– Graphes (plus courts chemins, flots, arbres, colorations, recouvrements...).– Hypergraphes (généralisation naturelle des graphes).– Ensembles ordonnés (ordre total, ordre partiel, extension linéaire...).– Modèles probabilistes (chaînes de Markov, phénomènes aléatoires, files d’at-

tente...).– Théorie des jeux.

1.2.2.2 Méthodes de résolution

– Géométrie ou algorithme du simplexe en programmation linéaire.– Algorithmes sur les graphes.– Programmation dynamique.– Méthodes arborescentes (BAB 2 ou SEP 3).– Méthodes approchées (heuristiques, métaheuristiques).

1.2.2.3 Remarque

Un même problème peut parfois être modélisé de plusieurs façons différenteset donc être résolu par plusieurs méthodes. Dans ce cas de figure, il conviendra detrouver la modélisation en rapport avec les attendus du problème et conduisant àla résolution la plus efficace et la plus adaptée.

1.3 Quelques exemples de problèmes

Notre propos est ici de présenter (et non de résoudre) quelques problèmes trèsclassiques et qu’il faut connaître de Recherche Opérationnelle. Le but est tout sim-plement d’essayer d’en faire comprendre la diversité, les types de questions abor-dées, les aspects très concrets des problèmes, les mathématiques sous-jacentes...

1.3.1 Dilemme du brasseur (programmation linéaire)

Un brasseur de bière dispose de 240 kg de maïs, de 5 kg de houblon et de 595kg de malt. Il peut produire aussi bien de la bière blonde que de la bière brune.

Un tonneau de bière blonde nécessite 2.5 kg de maïs, 125g de houblon et 17.5kg de malt. Chaque tonneau produit un bénéfice net de 65 euros.

Un tonneau de bière brune nécessite 7.5 kg de maïs, 125g de houblon et 10 kgde malt. Chaque tonneau produit un bénéfice net de 115 euros.

2. Branch And Bound3. Séparation et Évaluation Progressive

1.3. QUELQUES EXEMPLES DE PROBLÈMES 5

On suppose que les autres ingrédients (comme l’eau) sont disponibles en quan-tité illimitée : on ne tiendra donc pas compte de leurs coûts.

Quel est, pour le brasseur, le meilleur plan de production ? En d’autres termes,quel est le plan de production lui fournissant le bénéfice maximum avec les stocksdisponibles ?

Mathématiquement, il s’agit de maximiser la fonction

B(x, y) := 65x+ 115y

sous les contraintes (inégalités) :

2.5x+ 7.5y ≤ 240

0.125x+ 0.125y ≤ 5

17.5x+ 10y ≤ 595

0 ≤ x

0 ≤ y .

C’est un problème classique de Programmation Linéaire car il s’agit d’optimiserune fonction linéaire sous des contraintes linéaires.

Notons que ce problème peut se résoudre de deux manières différentes :

1. En utilisant une interprétation géométrique (ce qui est possible car on adeux variables).

2. En utilisant l’algorithme du simplexe (recommandé dès lors que l’on a troisvariables ou plus).

Tous les problèmes de programmation linéaire ne sont bien sûr pas aussisimples car en général, ils contiennent de très nombreuses variables.

Ce sujet est un grand classique de la Recherche Opérationnelle et est étudiédepuis les années quarante. De très nombreuses méthodes, ainsi que des logicielsde résolution plus ou moins efficaces suivant la nature des variables sont connuescomme le fameux algorithme du simplexe, dû à Dantzig.

1.3.2 Ordonnancement de tâches

Tout projet quelque peu conséquent se décompose en général en l’exécutiond’un certain nombre de tâches élémentaires différentes x1, · · · , xn de durées res-pectives d1, · · · , dn et soumises à des contraintes de précédence du type « xi doitêtre réalisée avant xj », que l’on notera « xi < xj ».

Considérons par exemple huit tâches x1, x2, x3, x4, x5, x6, x7 et x8 soumisesaux contraintes de précédence :

6 CHAPITRE 1. INTRODUCTION

x1 < x6

x2 < x6

x3 < x5, x6

x4 < x2

x5 < x1, x2

x7 < x1, x2, x4

x8 < x4, x5, x7 .

On se donne les durées suivantes : d1 = 6, d2 = 1, d3 = 1, d4 = 3, d5 = 5,d6 = 1, d7 = 2 et d8 = 3.

La question fondamentale est bien sûr : Comment réaliser le projet ? End’autres termes, après avoir vérifié la cohérence des tâches et détecté d’éven-tuelles contraintes inutiles, il s’agit de déterminer un ordre d’exécution possibledes tâches, les dates de réalisation des tâches et la durée minimale globale duprojet.

La réponse à ces questions passe par une modélisation du problème (quellestructure mathématique peut représenter la situation ?) puis sa résolution (com-ment, à partir de cette structure, répondre aux questions posées ?).

Plusieurs modélisations sont ici possibles : Graphe de précédence des tâches,Graphe PERT, Diagramme de Gantt.

Le domaine concerné par les deux premières modélisations est la théorie desgraphes.

Définition 1.3.1. Un graphe est une relation binaire a priori anti-réflexive (pasde boucle) sur un ensemble a priori fini.

Définition 1.3.2. Si la relation est quelconque, on parle de graphe orienté. Onle note alors G = (X,U) où X est appelé ensemble des sommets et U ensembledes arcs.

Définition 1.3.3. Si la relation est symétrique, on parle de graphe non orienté.On le note alors G = (X,E) où E est l’ensemble des arêtes.

Dans notre cas, le graphe de prédécence, G = (X,U, v) est un graphe simpleorienté valué défini par X = {tâches} ∪ {f}, U = xixj : xi < xj et v est unevaluation, ou pondération, des arcs correspondant à leurs durées. Le sommet f

est un sommet supplémentaire rendant compte de la fin du projet, il peut doncsuccéder à toutes les tâches.

Les situations pouvant se modéliser sous la forme d’un graphe sont innom-brables : réseaux de transport, réseaux informatiques, réseaux électroniques, ré-seaux de connaissance, éléments finis, automates finis, problèmes d’emploi dutemps et d’ordonnancements, Internet...

1.3. QUELQUES EXEMPLES DE PROBLÈMES 7

1.3.3 Problème du Voyageur de Commerce

Ce problème s’énonce traditionnellement de la façon suivante : un Voyageur decommerce partant de la ville de son domicile doit visiter, une fois et une seule, cha-cun de ses clients et revenir chez lui. Quel est alors le meilleur itinéraire possible,c’est-à-dire un itinéraire minimisant le coût de son parcours ?

On peut aussi le présenter en considérant n points du plan, chacun connu parses coordonnées, la question est alors de déterminer une « tournée » de longueurminimale passant une fois et une seule par chacun de ces points et revenant aupoint de départ. Le coût est bien sûr ici la distance euclidienne.

Remarque 1.3.4. Le nombre de parcours possibles est égal à n! où n est le nombrede villes à visiter.

Les principales méthodes connues pour résoudre exactement ce type de pro-blème sont des méthodes arborescentes, du type Séparation et Évaluation Pro-gressive (SEP) ou Séparation et Évaluation Séquentielle (SES, BAB [Branch andBound] en Anglais). Elles consistent à explorer de manière arborescente l’ensembledes solutions possibles avec à chaque étape l’évaluation d’une fonction adéquatepermettant d’éviter intelligemment des explorations inutiles afin d’accélérer la re-cherche pour ne pas sombrer dans l’explosion combinatoire, c’est-à-dire l’examend’un nombre exponentiel de cas.

À défaut de trouver le chemin le plus court, car trop coûteux en temps decalcul, on peut se contenter de construire rapidement (c’est-à-dire en un temps decalcul raisonnable) un itinéraire que l’on espère assez bon. Se pose alors la questionde mettre au point de telles méthodes appelées algorithmes d’approximation ouheuristiques.

1.3.4 Problèmes de Partitions et de Chargements

Le problème de la partition ou du partage équitable est le suivant : étant donnén tâches indépendantes dont les durées respectives sont les entiers d1, · · · , dn,comment les répartir sur deux machines afin de terminer au plus vite ?

Il s’agit donc de partitionner l’ensemble des durées en deux sous-ensemblesdont les sommes soient les plus proches possibles.

Le célèbre problème du sac à dos s’énonce comme suit.Données : On dispose de n objets numérotés de 1 à n, d’utilités et de vo-

lumes respectifs u1, · · · , un et v1, · · · , vn. On a également un sac à dos de volumemaximum V .

Question : Comment remplir au mieux le sac ? Autrement dit, quels objetsdoit-on prendre dans le sac pour en maximaliser l’utilité sans dépasser le volumeV ?

Hypothèse : On suppose bien sûr que– 0 < ui et 0 < vi ≤ V pour tout i ∈ [[1;n]].–∑n

i=1 vi > V .

8 CHAPITRE 1. INTRODUCTION

On peut montrer que ces deux problèmes sont équivalents : si l’on sait résoudrel’un, on sait résoudre l’autre moyennant un travail négligeable. Néanmoins, ils sontaussi difficiles l’un que l’autre malgré leurs simplicités d’énoncés. Il n’existe pas, àl’heure actuelle de méthode satisfaisante de résolution exacte dans le sens où tousles algorithmes connus sont exponentiels dans le plus mauvais cas, c’est-à-direpeuvent être très coûteux en temps de calcul. On peut donc raisonnablement lesqualifier de « difficiles à résoudre rapidement ».

Ces problèmes se résolvent comme le problème du voyageur de commerce àsavoir par des méthodes arborescentes. Une autre technique, la programmationdynamique, permet aussi de résoudre très élégamment, et même rapidement si lesvaleurs de données ne sont pas trop grandes.

1.4 Complexité des algorithmes et des problèmes

1.4.1 Un exemple introductif

Face à un problème de Recherche Opérationnel, hormis la Modélisation et laRésolution, un des aspects fondamentaux est aussi de savoir évaluer l’efficacitéde l’algorithme choisi. Cette notion d’efficacité est à comprendre non seulementdans le sens de sa justesse mais aussi de l’estimation des ressources nécessaires àson exécution, c’est-à-dire de son coût. Il nous faut donc définir et quantifier cetteefficacité.

Connaître la difficulté d’un problème, c’est-à-dire l’efficacité de ses possibles al-gorithmes de résolution, question souvent difficile, ou bien ne serait-ce que d’avoirune idée de cette difficulté, est aussi un paramètre vital dans la pratique.

Pour mieux appréhender ces questions, examinons d’abord un problème trèssimple : le produit C de deux matrices A et B, chacune de taille n× n.

Le principe d’un algorithme de résolution nous est donné par la définitionmathématique des coefficients Ci,j de la matrice C à calculer :

Ci,j :=n

k=1

Ai,kBk,j .

1.4. COMPLEXITÉ DES ALGORITHMES ET DES PROBLÈMES 9

Il vient l’algorithme suivant écrit en pseudo langage :

Pour i=1 à n faire

{

Pour j=1 à n faire

{

Ci,j := Ai,1 ×B1,j

Pour k=2 à n faire

{

Ci,j := Ci,j + Ai,k ×Bk,j

}

}

}

La preuve de cet algorithme, finitude et justesse, est immédiate puisqu’il estl’application directe sous forme de trois boucles imbriquées de la formule précé-dente.

Après cet argument de preuve, comment maintenant estimer l’efficacité de cetalgorithme, c’est-à-dire quantifier les ressources nécessaires à son exécution ?

Pour mettre en œuvre cet algorithme, il nous faut d’une part une représen-tation des données et des résultats et, d’autre part, effectuer un certain nombred’opérations sur ces représentations. Ces ressources correspondent donc à l’espacemémoire et au temps d’exécution sur une machine. Ce sont ces quantités qu’ilnous faut estimer.

L’algorithme manipule trois matrices de taille n×n et un nombre constant devariables auxiliaires (i, j, k et n). L’espace mémoire est donc proportionnel à n2.

D’autre part, il y a exactement n2(n−1) additions, n3 multiplications, n3 affec-tations et les trois boucles imbriquées nécessitent n2(n−1) étapes supplémentairespour leurs mises en œuvre. Le temps d’exécution sera donc proportionnel à n3. Re-marquons aussi que l’algorithme aura exactement le même comportement quelleque soit la donnée.

Après avoir analysé un algorithme de résolution, intéressons-nous maintenantau problème lui-même : d’autres algorithmes sont-ils possibles ? Peut-on fairemieux, c’est-à-dire plus efficace ? Existe-t-il pour ce problème un algorithme op-timal, c’est-à-dire le moins coûteux possible ?

En 1969, Strassen a publié un algorithme permettant de multiplier deux ma-trices de taille n × n en un temps proportionnel à nlog

2(7), soit environ n2.81,

donc asymptotiquement meilleur que l’algorithme usuel. Depuis, de meilleurs al-gorithmes ont été publiés. Le record est actuellement détenu par Coppersmithet Winograd avec un algorithme en O (n2.376) même si cet algorithme est peuutilisable en pratique.

10 CHAPITRE 1. INTRODUCTION

1.4.2 Définitions

L’étude du problème précédent nous a permis d’illustrer les notions et ques-tions en jeu : tailles des structures manipulées, nombre d’opérations utilisées,existence de meilleurs algorithmes, bornes inférieures... Définissons maintenantplus précisément ces notions.

Il y a en fait deux critères pratiques principaux permettant de mesurer l’effi-cacité, ou le coût d’un algorithme A résolvant un problème P : le temps de calculet l’espace mémoire nécessaire. Ils correspondent respectivement à la complexitéen temps et à la complexité en espace de A.

Définition 1.4.1. La complexité en temps d’un algorithme A est le nombre d’opé-rations élémentaires nécessaires au déroulement de A.

Définition 1.4.2. La complexité en espace d’un algorithme A est le nombre d’ob-jets élémentaires utilisés par le déroulement de A.

Il faut donc définir les opérations élémentaires, c’est-à-dire à temps constant,et les objets élémentaires (c’est-à-dire ceux qui sont de taille constante) autrementdit représentables par un nombre constant de cases mémoires. Cela correspond àla notion de modèle de machine.

Dans l’exemple précédent, le modèle de machine utilisé était le modèle uni-forme : chaque opération (affectation, addition, multiplication, instructions degestion de boucle) est supposée avoir un coût constant. De même, chaque nombremanipulé est supposé être représentable en taille constante.

Ces complexités s’expriment asymptotiquement en fonction de la taille duproblème.

Définition 1.4.3. La taille du problème (aussi appelé taille de la donnée) est lenombre d’objets élémentaires nécessaires à sa représentation.

Il s’agit en gros du nombre de cases mémoires.Dans l’exemple précédent, la taille du problème est celle des données, c’est-

à-dire celle des deux matrices, soit 2n2, mais il est d’usage de prendre n commeparamètre de taille.

Le plus souvent, on s’intéresse à la complexité en temps dans le plus mauvaiscas :

Définition 1.4.4. La complexité en temps dans le plus mauvais cas est le nombred’opérations élémentaires exécutées par l’algorithme sur l’ensemble des données detaille n.

On peut aussi s’intéresser à la complexité en moyenne, c’est-à-dire au compor-tement moyen de l’algorithme en ayant au préalable défini une loi de probabilitésur l’ensemble des données de taille n.

Dans l’exemple de la multiplication des matrices, la complexité en temps esten O(n3) et la complexité en espace est en O(n2).

Voici quelques autres exemples :

1.4. COMPLEXITÉ DES ALGORITHMES ET DES PROBLÈMES 11

– Recherche d’un élément précis dans une liste de n éléments : O(n), possibleen O(log(n)).

– Recherche du plus grand élément d’un tableau de n entiers : O(n), c’estoptimal.

– Tri de n nombres : O(n2), possible en O(n log(n)) qui est optimal.– Fusion de deux tableaux triés de tailles n : O(n).Ces notions de complexités vont donc nous permettre de comparer des algo-

rithmes, donc de comparer des méthodes de résolution d’un problème.Pour montrer l’importance pratique de ces notions, considérons le temps d’exé-

cution de trois programmes codant trois algorithmes A1, A2 et A3 de complexitésrespectives égales à n, n3 et 2n pour des données de taille n sur une machine M

effectuant 109 opérations par seconde :

n 10 50 100A1(n) 10−8s 5× 10−8s 10−7s

A2(n3) 10−6s 2.25× 10−4s 10−3s

A3(2n) 10−6s 13 jours 4× 1013 années

Les algorithmes A1 et A2 de complexités polynomiales sont parfaitement utili-sables même si A1 est nettement meilleur. Mais, A3, de complexité exponentielle,est inutilisable même pour des tailles très raisonnables.

De plus, toute évolution technologique ne fait que confirmer cette différence :calculer les améliorations en termes de taille maximale de données traitables enun certain temps sur une machine mille fois plus rapide.

Nous avons vu qu’en ayant un algorithme de résolution d’un problème, deuxquestions naturelles se posent :

– Peut-on faire mieux ?– Comment déterminer si tel algorithme est le meilleur possible ? En d’autres

termes, comment montrer que l’algorithme a une complexité inférieure àtout autre algorithme de résolution ?

Répondre à la seconde question, c’est déterminer la complexité du problème.C’est une tâche en général très difficile et peu de résultats sont connus dans cedomaine.

Cette problématique constitue la théorie de la complexité des problèmes. Trèssommairement, cette théorie met en évidence plusieurs classes de problèmes :

– La classe P : problèmes polynomiaux, c’est-à-dire des problèmes admettantun algorithme de complexité polynomiale.

– La classe NP : problèmes des décisions (à réponse « oui » ou « non ») àpreuve polynomiale, c’est-à-dire pour lesquels on peut vérifier en un tempspolynomial qu’une solution donnée ou proposée est à réponse « oui ».

– Les problèmes NP - Complets : classe d’équivalence des problèmes les plusdifficiles de NP dans le sens où toute méthode de résolution de l’un d’euxpermettrait de résoudre efficacement tout problème de NP.

– Les problèmes NP - difficiles : problèmes au moins aussi difficiles que lesproblèmes NP - Complets.

12 CHAPITRE 1. INTRODUCTION

1.5 Plan et buts du cours

Le cours se divise en trois parties. On commencera par étudier la program-mation linéaire (la méthode géométrique et la méthode du simplexe). Puis, onparlera de programmation dynamique. Enfin, on étudiera les graphes.

Il ne s’agit pas dans ce cours de faire une présentation très fouillée de laRecherche Opérationnelle mais de sensibiliser, au travers de quelques domaines etproblèmes classiques ainsi que des méthodes générales de résolution, à la natureparticulière, originale, très diversifiée et en perpétuelle évolution de cette matièrequi est quasiment un passage obligé dans l’acquisition d’une culture scientifiquegénérale que doit acquérir tout ingénieur.

Le but n’est pas de devenir un spécialiste de la Recherche Opérationnelle maisd’en bien connaître la problématique générale (le type de problèmes traités, lesméthodes utilisées, ce que l’on peut en attendre, les limitations actuelles) et deprendre conscience que c’est un outil qui a une part importante dans toute prisede décision quant à la réalisation d’un projet substantiel.

Chapitre 2

Programmation linéaire

Ce chapitre est inspiré du cours donné par Roland Jégou à Télécom Saint-Étienne en 2014–2015, du cours du Professeur Smets à Jussieu et du cours duProfesseur Monnez à l’IUT de Nancy.

2.1 Introduction

La programmation linéaire est un cadre mathématique général permettant demodéliser et de résoudre certains problèmes d’optimisation. Mathématiquement,le problème consiste à optimiser une fonction linéaire sous des contraintes linéairesliant les variables.

Historiquement, la programmation linéaire a été développée et utilisée en 1947par Dantzig (à qui l’on doit l’algorithme du simplexe), Wood et leurs collabora-teurs au U.S. Department of the Air Force. Les premières applications se situaientdans le domaine militaire mais elles se sont rapidement déplacées vers l’industrieet la planification économique : il s’agit par exemple de déterminer la produc-tion maximisant le bénéfice compte tenu de ressources limitées ou minimisantles coûts tout en garantissant une production donnée, de résoudre des problèmesd’allocation de ressources limitées en vue d’atteindre des objectifs fixés...

Donnons tout d’abord un exemple concret : un problème de production.On considère le cas d’un fabricant d’automobiles qui propose deux modèles à la

vente, des grosses voitures et des petites voitures. Les voitures de ce fabricant sonttellement à la mode qu’il est certain de vendre tout ce qu’il parvient à produire,au prix du catalogue actuel de 16 000 euros pour les grosses voitures et 10 000euros pour les petites voitures.

Son problème vient de l’approvisionnement limité en deux matières premières :le caoutchouc et l’acier. La construction d’une petite voiture nécessite l’emploid’une unité de caoutchouc et d’une unité d’acier tandis que celle d’une grossevoiture nécessite une unité de caoutchouc mais deux unités d’acier.

Sachant que son stock de caoutchouc est de 400 unités et son stock d’acier de600 unités, combien doit-il produire de petites et de grosses voitures au moyen deces stocks afin de maximiser son chiffre d’affaire ?

13

14 CHAPITRE 2. PROGRAMMATION LINÉAIRE

Nous appellerons x le nombre de grosses voitures produites et y le nombre depetites voitures produites. Le chiffre d’affaire résultant est noté A. Le problèmese traduit alors sous la forme :

maximiser A := 16000x+ 10000ysous les contraintes x+ y ≤ 400

2x+ y ≤ 600x ≥ 0y ≥ 0 .

(2.1)

2.1.1 Solution graphique

Un tel système, parce qu’il ne fait intervenir que deux variables, peut se ré-soudre assez facilement de manière graphique. Il suffit de hacher la zone correspon-dant aux contraintes puis de tracer les lignes de niveaux (ici, des lignes parallèles)de la fonction à maximiser.

On obtient ainsi la solution optimale x = 200 et y = 200, qui correspond à A =5 200 000. Elle est unique dans ce cas précise, et correspond à un « sommet » dela zone de contraintes.

2.1.2 Sensibilité à la variation des stocks

Observons comment la solution du problème évolue lorsqu’on modifie certainesdonnées de départ, par exemple une augmentation du stock de caoutchouc ou dustock d’acier.

Imaginons que le stock d’acier soit de 700 au lieu de 600, le nouveau problèmes’écrit

maximiser A := 16000x+ 10000ysous les contraintes x+ y ≤ 400

2x+ y ≤ 700x ≥ 0y ≥ 0 .

(2.2)

Toujours de manière graphique, on s’aperçoit que la solution optimale estmaintenant donnée par x = 300 et y = 100, ce qui correspond à A = 5 800 000.Autrement dit, une augmentation de 100 unités d’acier a un impact de 600 000euros sur le chiffre d’affaire. On dira alors que le prix marginal de l’unité d’acierest de 6 000 euros.

Si le stock d’acier passe à 800, la solution optimale devient x = 400 et y = 0 etle chiffre d’affaire A = 6 400 000. Augmenter le stock d’acier au-delà de 800, sanschanger le stock de caoutchouc, n’a plus aucune influence sur la solution optimale,car y est contraint à rester positif.

Imaginons maintenant que le stock d’acier reste fixé à 600 mais que le stock

2.1. INTRODUCTION 15

de caoutchouc passe de 400 à 500. Le nouveau problème s’écrit

maximiser A := 16000x+ 10000ysous les contraintes x+ y ≤ 500

2x+ y ≤ 600x ≥ 0y ≥ 0 .

(2.3)

Toujours de manière graphique, on s’aperçoit que la solution optimale estmaintenant donnée par x = 100 et y = 400, ce qui correspond à A = 5 600 000.Autrement dit, une augmentation de 100 unités de caoutchouc a un impact de400 000 euros sur le chiffre d’affaire. On dira alors que le prix marginal de l’unitéde caoutchouc est de 4 000 euros.

Si le stock de caoutchouc passe à 600, la solution optimale devient x = 0 ety = 600 et le chiffre d’affaire A = 6 000 000. Augmenter le stock de caoutchoucau-delà de 600, sans changer le stock d’acier, n’a plus aucune influence sur lasolution optimale, car x est contraint à rester positif.

2.1.3 Le problème dual du concurrent

Supposons maintenant que le fabricant d’automobiles possède un concurrentqui, pour honorer des commandes en trop grand nombre, se propose de lui rachetertous ses stocks. Ce dernier doit faire une offre de prix (la même, disons u) pourchaque unité de caoutchouc et une offre de prix (disons v) pour chaque unitéd’acier. Pour que l’offre soit acceptée, il faut que le prix payé par le concurrentsoit au moins égal à ce que le fabricant pourrait en tirer en produisant des voitures.le problème du concurrent s’écrit ainsi

minimiser P := 400u+ 600vsous les contraintes u+ v ≥ 10 000

u+ 2v ≥ 16 000u ≥ 0v ≥ 0 .

(2.4)

Une analyse graphique fournit la solution optimale u = 4 000 et v = 6 000,ce qui correspond à un prix global P = 5 200 000. On remarque que la solutionoptimale du problème du concurrent (on parlera de problème dual, par oppositionau problème primal du fabricant) correspond aux prix marginaux du problèmedu fabricant, et que le prix minimal que puisse proposer le concurrent est égal auchiffre d’affaire maximal du fabricant.

16 CHAPITRE 2. PROGRAMMATION LINÉAIRE

2.2 Un problème d’optimisation linéaire en dimen-

sion supérieure

Dans cette section, nous allons décrire un problème de transport optimal as-similable à un problème d’optimisation linéaire en dimension six. De ce fait, il nesera plus possible de le résoudre au moyen de la méthode graphique de la sectionprécédente.

Notre fabricant d’automobiles possède trois chaînes de montage M1, M2 etM3 tandis que son stock d’acier provient de deux aciéries A1 et A2. Les coûts detransport d’une unité d’acier d’une aciérie vers une usine de montage sont donnéspar le tableau suivant :

M1 M2 M3

A1 9 16 28A2 14 29 19

Les besoins de production des chaînes de montage diffèrent :

M1 142M2 266M3 192

De même les capacités de production des aciéries sont différentes :

A1 206A2 394

Il s’agit pour le fabricant de déterminer le plan de transport des unités d’acierproduites vers les chaînes de montage afin de minimiser le coût total de transport.Pour i ∈ [[1; 2]] et j ∈ [[1; 3]], on note xi,j le nombre d’unités d’acier acheminéesdepuis l’aciérie Ai vers la chaîne de montage Mj. Le problème de transport optimalpeut alors s’écrire :

min. T = 9x1,1 + 16x1,2 + 28x1,3 + 14x2,1 + 29x2,2 + 19x2,3

sous x1,1 + x1,2 + x1,3 ≤ 206x2,1 + x2,2 + x2,3 ≤ 394

x1,1 + x2,1 ≥ 142x1,2 + x2,2 ≥ 266

x1,3 + x2,3 ≥ 192x1,1 , x1,2 , x1,3 , x2,1 , x2,2 , x2,3 ≥ 0

Nous verrons par la suite qu’il est possible de traiter un tel problème de ma-nière systématique, par le biais d’une réduction à une forme standard suivie d’unalgorithme qui porte le nom de méthode du simplexe. Toutefois, dans ce cas pré-cis, cela nous mènerait à des manipulations trop fastidieuses pour être réalisées

2.2. UN PROBLÈME D’OPTIMISATION LINÉAIRE EN DIMENSION SUPÉRIEURE17

sans l’aide d’un ordinateur. À sa place, nous allons procéder à un certain nombrede remarques ad hoc qui vont nous permettre de poursuivre les calculs à la main.

La remarque principale ici est que dans la mesure où la somme des capacitésde productions des aciéries (206+ 394 = 600) est égale à la somme des besoins deproduction des trois chaînes de montage (142+266+192 = 600), chacune des cinqpremières inégalités dans le problème d’optimisation ci-dessus doit nécessairementêtre une égalité. Si on omet momentanément de s’occuper des contraintes xi,j ≥0, les contraintes restantes se réduisent à un système de cinq équations à sixinconnues, que nous pouvons tenter de résoudre par la méthode du pivot de Gauss.

On réécrit le sous-système des contraintes d’égalité sous la forme (on choisitl’ordre des équations afin de faciliter le pivot de Gauss) :

x1,1 + x2,1 = 142x1,2 + x2,2 = 266

x1,3 + x2,3 = 192x1,1 + x1,2 + x1,3 = 206

x2,1 + x2,2 + x2,3 = 394

Sous forme matricielle :

1 0 0 1 0 0 1420 1 0 0 1 0 2660 0 1 0 0 1 1921 1 1 0 0 0 2060 0 0 1 1 1 394

Ce qui donne

1 0 0 1 0 0 142

0 1 0 0 1 0 2660 0 1 0 0 1 1920 1 1 −1 0 0 640 0 0 1 1 1 394

puis

1 0 0 1 0 0 142

0 1 0 0 1 0 266

0 0 1 0 0 1 1920 0 1 −1 −1 0 −2020 0 0 1 1 1 394

puis

18 CHAPITRE 2. PROGRAMMATION LINÉAIRE

1 0 0 1 0 0 142

0 1 0 0 1 0 266

0 0 1 0 0 1 1920 0 0 −1 −1 −1 −3940 0 0 1 1 1 394

Les deux dernières lignes sont similaires. On peut donc en enlever une :

1 0 0 0 −1 −1 −252

0 1 0 0 1 0 266

0 0 1 0 0 1 192

0 0 0 1 1 1 394

Les variables x2,2 et x2,3 sont libres. On en déduit :

x2,1 = 394− x2,2 − x2,3

x1,3 = 192− x2,3

x1,2 = 266− x2,2

x1,1 = −252 + x2,2 + x2,3 .

On exprime ensuite le coût T uniquement en termes des variables libres x2,2

et x2,3 :

T =9(−252 + x2,2 + x2,3) + 16(266− x2,2) + 28(192− x2,3)

+ 14(394− x2,2 − x2,3) + 29x2,2 + 19x2,3

=8x2,2 − 14x2,3 + 12 880 .

Afin de minimiser T , il est donc opportun de choisir x2,3 le plus grand possibleet x2,2 le plus petit possible. C’est à ce niveau qu’il nous est nécessaire de faireréapparaître les contraintes de positivité sans lesquelles T pourrait être renduaussi négatif que souhaité.

En examinant les équations plus haut, on se convainc assez rapidement que lemeilleur choix est obtenu en prenant x2,3 = 192 (afin de satisfaire mais de saturerla contrainte x1,3 ≥ 0) et ensuite x2,2 = 60 (afin de satisfaire mais de saturer lacontrainte x1,1 ≥ 0). On propose alors la solution suivante :

x1,1 = 0 ,

x1,2 = 206 ,

x1,3 = 0 ,

x2,1 = 142 ,

x2,2 = 60 ,

x2,3 = 192 ,

2.3. MÉTHODE DU SIMPLEXE : UN APERÇU PAR L’EXEMPLE 19

comme candidat à être le transport optimal. Pour vérifier notre intuition, onchoisit d’exprimer le coût total T uniquement en termes des variables x1,1 et x1,3

ce qui donne l’expression :

T =8x2,2 − 14x2,3 + 12 880

=8(60 + x1,1 + x1,3)− 14(192− x1,3) + 12 880

=8x1,1 + 22x1,3 + 10 672 .

Comme x1,1 ≥ 0 et x1,3 ≥ 0 par contrainte, on a nécessairement T ≥ 10 672quel que soit le choix des autres variables satisfaisant l’ensemble des contraintes.Par ailleurs, le choix proposé précédemment fournit T = 10 672 et satisfait àl’ensemble des contraintes. Il s’agit donc effectivement de la solution optimale.

Pour terminer cet exemple par une synthèse, observons que nous sommes par-venus à réécrire le problème d’optimisation initial sous la forme d’un systèmelinéaire augmenté de contraintes de positivités de toutes les variables. Nous avonsensuite déterminé le rang de la matrice sous-jacente et exprimé de diverses ma-nières possibles (deux en fait) la fonction à optimiser en termes de variables librespour ce système linéaire. Nous nous sommes arrêtés lorsque les coefficients desvariables libres dans l’expression de la fonction à optimiser furent tous positifsou nuls, et avons conclu que les égaler à zéro fournissait une solution assurémentoptimale.

Dans la section suivante, nous reprenons cette démarche de manière un peuplus systématique sur un exemple initialement en dimension trois.

2.3 Méthode du simplexe : un aperçu par l’exemple

Considérons le problème d’optimisation linéaire :

maximiser Z := 5x1 + 4x2 + 3x3

sous les contraintes 2x1 + 3x2 + x3 ≤ 54x1 + x2 + 2x3 ≤ 113x1 + 4x2 + 2x3 ≤ 8x1 , x2 , x3 ≥ 0

(2.5)

Afin de se ramener à un système d’équations plutôt que d’inéquations, onintroduit les variables d’écart e1, e2 et e3 et l’on écrit le problème ci-dessus sousla forme

e1 = 5 − 2x1 − 3x2 − x3

e2 = 11 − 4x1 − x2 − 2x3

e3 = 8 − 3x1 − 4x2 − 2x3

Z = + 5x1 + 4x2 + 3x3

(2.6)

avec pour but de maximiser Z sous les contraintes additionneles xi, ei ≥ 0(pour tout i ∈ [[1; 3]]). Il est aisé de vérifier que si (x1, x2, x3, e1, e2, e3) est une

20 CHAPITRE 2. PROGRAMMATION LINÉAIRE

solution optimale de ce dernier problème, alors (x1, x2, x3) constitue une solutionoptimale du problème (2.5). Inversement, si (x1, x2, x3) est une solution optimalede (2.5), alors (x1, x2, x3, 5−2x1−3x2−x3, 11−4x1−x2−2x3, 8−3x1−4x2−2x3)constitue une solution optimale de (2.6).

Le système (2.6) possède la solution (non optimale) (0, 0, 0, 5, 11, 8).

Définition 2.3.1. L’usage est d’appeler « solution réalisable » tout choix de va-riables satisfaisant à l’ensemble des contraintes.

On observe que dans l’expression Z = 5x1+4x2+3x3, une augmentation de x1

entraîne une augmentation de Z. L’idée première est alors d’augmenter x1 autantque possible (sans modifier ni x2 ni x3) tant qu’aucune des variables d’écart e1,e2 ou e3 ne devient négative. Le choix maximal est donc x1 = min

{

52; 11

4; 83

}

= 52,

lorsque e1 devient nulle et qui fait passer à la solution réalisable(

52, 0, 0, 0, 3, 1

2

)

.On réécrit le système (2.6) en exprimant cette fois (x1, e2, e3) (ainsi que Z) en

termes de (x2, x3, e1), au moyen de l’équation

x1 =5

2−

3

2x2 −

1

2x3 −

1

2e1 .

Ceci donne, après substitutions :

x1 = 52

− 32x2 − 1

2x3 − 1

2e1

e2 = 1 + 5x2 + 2e1e3 = 1

2+ 1

2x2 − 1

2x3 + 3

2e1

Z = 252

− 72x2 + 1

2x3 − 5

2e1

(2.7)

Cette fois, on observe que dans l’expression Z = 252− 7

2x2 +

12x3 −

52e1, une

augmentation de x3 (c’est ici le seul choix possible) entraîne une augmentationde Z. À nouveau, on augmente donc x3 autant que possible (sans modifier ni x2

ni e1) tant qu’aucune des variables de base x1, e2 ou e3 ne devient négative. Le

choix maximal est donc x3 = min{

5

2

1

2

;1

2

1

2

}

= 1, lorsque e3 devient nulle, et qui fait

passer à la solution réalisable (2, 0, 1, 0, 1, 0).On réécrit le système (2.7) en exprimant cette fois (x1, x3, e2) (ainsi que Z) en

termes de x2, e1, e3, au moyen de l’équation

x3 = 1 + x2 + 3e1 − 2e3 .

Ceci donne, après substitutions :

x1 = 2 − 2x2 − 2e1 + e3x3 = 1 + x2 + 3e1 − 2e3e2 = 1 + 5x2 + 2e1Z = 13 − 3x2 − e1 − e3 .

(2.8)

2.4. MÉTHODE DU SIMPLEXE SOUS FORME DE TABLEAU 21

Puisque les coefficients de x2, e1 et e3 intervenant dans l’expression de Z ci-dessus sont tous négatifs ou nuls, on déduit que la solution réalisable

x1 = 2

x2 = 0

x3 = 1

e1 = 0

e2 = 1

e3 = 0

est une solution optimale pour laquelle Z = 13.Plutôt que de formaliser l’algorithme du simplexe et d’en découvrir les bases

théoriques, voyons une deuxième méthode pour l’aborder et qui consiste à placerles calculs en tableau (toutes les variables se retrouvent du même côté du signede l’égalité) plutôt que sous forme de dictionnaire comme ci-dessus. L’avantagede cette deuxième façon de présenter les choses (mais qui est bien sûr équivalenteà la première) est qu’elle se rapproche plus de la méthode bien connue du pivotde Gauss.

2.4 Méthode du simplexe sous forme de tableau

Il convient de garder à l’esprit que l’algorithme qui sera présenté dans ce coursn’est pas stricto sensu l’algorithme du simplexe. En effet, il faudrait que l’onapplique des critères pour éviter la cyclicité et pour que la vitesse soit optimale.

Considérons donc maintenant le problème d’optimisation linéaire

maximiser Z := x1 + 5x2 + x3

sous les contraintes x1 + 3x2 + x3 ≤ 3−x1 + + 3x3 ≤ 22x1 + 4x2 − x3 ≤ 4x1 + 3x2 − x3 ≤ 2x1 , x2 , x3 ≥ 0

(2.9)

On introduit les variables d’écart e1, e2, e3 et e4 (on a quatre variables d’écartcar on a quatre contraintes) et on réécrit le problème sous la forme

max. Z := x1 + 5x2 + x3

sous x1 + 3x2 + x3 + e1 = 3−x1 + + 3x3 + e2 = 22x1 + 4x2 − x3 + e3 = 4x1 + 3x2 − x3 + e4 = 2x1 , x2 , x3 , e1 , e2 , e3 , e4 ≥ 0

(2.10)

22 CHAPITRE 2. PROGRAMMATION LINÉAIRE

On adopte alors la notation sous forme de tableau :

1 3 1 1 0 0 0 3−1 0 3 0 1 0 0 22 4 −1 0 0 1 0 41 3 −1 0 0 0 1 21 5 1 0 0 0 0 0

La dernière ligne du tableau correspond à une expression possible de Z commefonction affine des variables x1, x2, x3, e1, e2, e3, e4, l’opposé du terme constant setrouvant en bas à droite du tableau. On part de la solution réalisable (0, 0, 0, 3, 2, 4, 2)et puisque le terme en x1 dans la dernière ligne du tableau est strictement positif,on va augmenter x1 (sans modifier x2 ni x3) jusqu’à ce que l’une des variablese1, e2, e3, e4 devienne nulle. Ceci se produit pour x1 = 2 pour lequel à la fois e3 ete4 deviennent nulles. On choisit donc de faire rentrer x1 en base et de faire sortir(par exemple) e3. Cela donne :

1 3 1 1 0 0 0 3−1 0 3 0 1 0 0 21 2 −1

20 0 1

20 2

1 3 −1 0 0 0 1 21 5 1 0 0 0 0 0

puis

0 1 32

1 0 −12

0 10 2 5

20 1 1

20 4

1 2 −12

0 0 12

0 20 1 −1

20 0 −1

21 0

0 3 32

0 0 −12

0 −2

et fournit une solution réalisable pour laquelle x1 = 2, e1 = 1, e2 = 4, e4 = 0(et les variables hors base sont toujours nulles : x2 = x3 = e3 = 0). Puisque lecoefficient de x2 dans la nouvelle expression de Z est positif, on fait ensuite rentrerx2 en base, et on doit faire sortir e4. Cela donne :

0 0 2 1 0 0 −1 10 0 7

20 1 3

2−2 4

1 0 12

0 0 32

−2 20 1 −1

20 0 −1

21 0

0 0 3 0 0 1 −3 −2

et fournit la solution réalisable (2, 0, 0, 1, 4, 0, 0). On fait ensuite rentrer x3 enbase (son coefficient dans l’expression de Z vaut maintenant 3) et on fait sortir e1(qui s’annule lorsque x3 =

12). Cela donne

2.4. MÉTHODE DU SIMPLEXE SOUS FORME DE TABLEAU 23

0 0 1 12

0 0 −12

12

0 0 72

0 1 32

−2 41 0 1

20 0 3

2−2 2

0 1 −12

0 0 −12

1 00 0 3 0 0 1 −3 −2

puis

0 0 1 12

0 0 −12

12

0 0 0 −74

1 32

−14

94

1 0 0 0 0 32

−74

74

0 1 0 14

0 −12

34

14

0 0 0 −32

0 1 −32

−72

et fournit la solution réalisable(

74, 14, 12, 0, 0, 0, 0

)

. On fait ensuite rentrer e3 etsortir x1 (qui s’annule en premier lorsque e3 =

76). Cela donne

0 0 1 12

0 0 −12

12

0 0 0 −74

1 32

−14

94

23

0 0 0 0 1 −76

76

0 1 0 14

0 −12

34

14

0 0 0 −32

0 1 −32

−72

puis

0 0 1 12

0 0 −12

12

−1 0 0 −74

1 0 32

12

23

0 0 0 0 1 −76

76

13

1 0 14

0 0 16

56

−23

0 0 −32

0 0 −13

−143

et fournit finalement la solution optimale(

0, 56, 12, 0, 1

2, 76, 0)

pour laquelle Z =143.