Vous êtes sur la page 1sur 170

Recherche

Opérationnelle pour
le Génie Industriel
Master Génie Industriel

Emmanuel Caillaud 2014-2015


Plan du Cours

•  Introduction à la recherche opérationnelle


•  Programmation linéaire
•  Théorie des graphes

•  Nous ne verrons pas :


•  Simulation
•  Phénomènes aléatoires
•  files d'attente
•  Fiabilité
•  Simulation
Bibliographie

•  V. Cohen, "La Recherche Opérationnelle", Que


sais-je ?, PUF, 1995.
•  R. Faure, B. Lemaire, C. Picouleau, "Précis de
Recherche Opérationnelle", Dunod, 2000.
•  Roseaux, "Exercice et problèmes résolus de
Recherche Opérationnelle", Dunod, 2000.
•  I. Rasovka, « Recherche Opérationnelle »,
support de cours, 2014
•  J. Lamothe et L. Dupont « Recherche
opérationelle », supports de cours, 2014
Objectifs du cours
•  Principaux objectifs du cours :
•  connaître l'existence de quelques uns des modèles de
référence (les plus importants),
•  comprendre les modèles en connaissant leurs
caractéristiques et leurs limites,
•  savoir appliquer ces modèles à des problèmes
classiques.
•  Remarque :
•  La mise en œuvre des modèles "à la main" n'est pas un
objectif du cours mais un moyen de compréhension
des modèles et de leur application sur des exemples
numériques.
Introduction à la Recherche
Opérationnelle
RO ?
•  Recherche opérationnelle :
•  ensemble d'outils et de méthodes pour formaliser et
résoudre des problèmes classiques.

•  Outils et méthodes :
•  théorie des graphes
•  optimisation par programmation linéaire
•  Heuristique et métaheuristiques
•  modélisation des phénomènes aléatoires
Domaines d'application
•  Aide à la décision
•  Ordonnancement de projet, de job-shop
•  Maintenance
•  Problèmes de transport
•  …
Exemples de problèmes
•  Où installer 4 usines de production parmi 20 sites
d'implantation possibles ?
•  Combien faut-il de personnes au service commercial
pour qu'une personne ait moins de 5 % de chances
de devoir attendre plus de 15 minutes ?
•  Quel est l’emploi du temps « optimal » pour les
étudiants de Master ?
Historique
•  Terme de "Operational Research" par R. Watson-
Watt (1892-1972), spécialiste de radar.
•  Pb. : efficacité globale du système de surveillance
Radar et d'intervention aérienne (1937, Blackett,
Grande-Bretagne).
•  Où positionner les radars ?
•  Comment transmettre les informations ?
•  Comment être sûr du matériel ?
•  Comment assurer les différentes tâches ?
Historique (2)
•  Équipes militaires de recherche opérationnelle ont
été créées dans les différents pays.
•  Après 1945 : application au secteur civil (économie,
administration, production,…).
•  Exemples en sidérurgie :
•  Succession des qualités d'acier au laminage à froid de manière
à favoriser l'expédition directe tout en minimisant les coûts liés
aux contraintes techniques
•  Simulation du cadencement d'un train de laminage
Historique (3)
•  Années 50
•  Développement rapide malgré les difficultés informatiques.
Enseignement de la RO, création de sociétés savantes
ORSA, AFCET, EJOR.
•  Apparition d'outils de la RO :
•  PROGRAMMATION DYNAMIQUE (BELLMAN 1954)
•  FLOTS ET AFFECTATIONS (KüHN 1955, FORD/
FULKERSON 1956)
•  MÉTHODE SIMPLEXE (DANTZIG à partir de 1947)
•  "BRANCH AND BOUND" ou PSE (LITTLE 1963)
•  METHODES A CHEMINS CRITIQUES (PERT 1958, ROY
1960)
Historique (4)
•  70-80 : stagnation de la RO

•  Depuis 80 : "reprise"
•  travaux de groupe (gestion de projet)
•  apparition de nouveaux outils
•  prise en compte d'objectifs multiples
•  intégration des facteurs humains
•  temps réel
•  aide à la décision
Caractéristiques de la RO
•  Objectif :
•  fournir des éléments de réflexion pour une prise de décision
concernant un problème concret.

•  Étapes d'une démarche de RO :


•  identification du problème
•  modélisation du problème (c'est le plus difficile !)
•  résolution par des méthodes "classiques"
•  validation des résultats et interprétation
Modélisation
•  Délicate car lien entre un problème concret et sa
mise en forme abstraite de manière à permettre sa
résolution en veillant à :
•  être fidèle à la réalité
•  permettre une résolution efficace
•  présenter les solutions applicables au problème concret
Modélisation (2)
•  La forme de modélisation la plus fréquente :
modélisation mathématique
•  par des équations et des inéquations liant entre eux les
paramètres connus et inconnus de manière à constituer
d'une part des contraintes à respecter et d'autres part des
mesures de satisfaction à optimiser (maximiser ou
minimiser) appelés objectifs ou fonctions objectif ou
critères.
•  Autres formes de modélisation :
•  les graphes, les réseaux de Petri, le grafcet, les réseaux de
file d'attente…
Fonctions d'un modèle
•  Expliquer
•  Mettre en évidence les causes
•  Prévoir
•  Passé (extrapoler les résultats d'un échantillon)
•  Futur proche (extrapolation ou simulation)
•  Moyen terme (tendances,intervalles de confiance)
•  Agir
•  Variables d'entrée
•  Paramètres du modèle
Hypothèses du modèle
•  Indépendance statistique
•  Si indépendant : produit des statiques
•  Sinon fonction de leur dépendance jusqu'à la plus petite
valeur des 2 (> au produit)
•  Attention à ne pas minorer les risques !
•  Stationnarité (indépendance du temps)
•  Linéarité (proportions) ou convexité
Types de modèles
•  Graphes
•  Matrices
•  Suites
•  Dérivées de fonctions
•  Séries et calcul intégral
•  Variable aléatoire
•  Chaîne de Markov
Méthodes de résolution
•  Méthodes analytiques classiques
•  Algorithmes recherchant des solutions numériques
par des procédures déterministes
•  Expériences numériques : simulation ou algorithmes
probabilistes (Monte Carlo, Tabou, recuit simulé)
Algorithmes
•  Succession de pas (dont certains sont réalisés en
boucles) jusqu'à ce qu'un critère d'arrêt soit satisfait.
•  Algorithmes déterministes
•  Analyse numérique : systèmes linéaires, extrema de
fonctions
•  Optimisation combinatoire : plus courts chemins, flot
maximum
Programmation linéaire
Historique
•  La programmation linéaire fut développée au cours
de la Seconde Guerre mondiale.
•  L’objectif était d’allouer plus intelligemment les
ressources de l’armée.
•  Le terme « programmation » est employé avec le
sens de « plan ».
•  La terminologie est due à G.B. DANTZIG, inventeur
de l’algorithme du Simplexe en 1947
Domaines d’application
•  La PL peut résoudre un grand nombre de
problèmes :
•  modèle de transport,
•  allocation de ressources,
•  tarifications, …
Modèle PL
•  Variable de décisions
•  Des variables mathématiques représentant des décisions

•  Fonction Objectif (fonction à optimiser)


•  Une équation linéaire qui quantifie un objectif
•  L’objectif le plus fréquent des entreprises est de maximiser
les profits.
•  Pour un département, on essaie souvent de minimiser les
coûts.

•  Contraintes
•  Des équations ou inéquations linéaires qui restreignent les
variables de décisions.
Formulation générale
Max/min z = c1x1 + c2x2 + ... + cnxn

Avec :
a11x1 + a12x2 + ... + a1nxn (≤, =, ≥) b1
a21x1 + a22x2 + ... + a2nxn (≤, =, ≥) b2
:
am1x1 + am2x2 + ... + amnxn (≤, =, ≥) bm

xj = variables de décision
bi = valeur de la contrainte à satisfaire
cj = coefficients de la fonction objectif
aij = coefficients des contraintes
Hypothèses
•  La linéarité des contraintes
•  Linéarité de la fonction objectif.
•  L’additivité des effets.
•  La proportionnalité des gains/coûts
•  Proportionnalité de la consommation des ressources.
•  La divisibilité des variables.
•  La détermination des données.

•  Ces hypothèses devront être validées pour chaque cas


d’application ! Cette analyse peut mener à choisir un
modèle différent (non linéaire, stochastique, ..).
Un exemple
•  Une usine réalise deux produits :
•  A nécessite 2 kg de matière première et 4 heures de
fabrication et donne un bénéfice de 30 €.
•  B nécessite 4 kg de matière première et 2 heures de
fabrication et donne un bénéfice de 10 € .
•  On dispose de 100 kg de matière première et de
280 h de travail (2 opérateurs x 35h x 4 semaines).
•  Quelle production de A et de B doit on réaliser pour
obtenir un bénéfice maximal ?
Un exemple
•  Variable de décision:
•  X1 = Production de produit A (X1 ≥ 0)
•  X2 = Production de produit B (X2 ≥ 0)
•  Fonction objectif:
•  Z = 30 X1 + 10 X2

•  Contraintes
•  Produit A utilise 2 kg de matière et 4h de production.
•  Produit B utilise 4 kg de matière et 2 heures de production.
•  La matière première est limitée à 100 kg.
•  2 X1 + 4 X2 ≤ 100
•  Le temps de production est limité à 280 h.
•  4 X1 + 2 X2 ≤ 280
Résolution graphique (1)
•  Déterminer les variables du problème : formuler le
problème en termes de fonction objectif et de
contraintes linéaires.
•  Faire un graphique avec une variable de décision
sur chaque axe et tracer les droites des contraintes :
ces contraintes déterminent la région de solutions
admissibles (chacune des contraintes est satisfaite :
toutes les solutions sont possibles).
Résolution graphique (2)
•  Déterminer la pente de la fonction objectif et
l’indiquer dans la zone de faisabilité.
•  Déplacer la fonction objectif parallèlement à elle-
même jusqu'à ce qu’elle rencontre une limite de la
zone de faisabilité.
•  Lire directement les valeurs des variables qui
constituent la solution du problème sur les axes
respectifs.
•  La solution optimale sera toujours située à
l’intersection de deux droites de contraintes dans la
région de faisabilité.
Résolution graphique
X2
150
125
100

75
50

25 X1

25 50 75 100 125 150 175 200 225


X1 ≥ 0 et X2 ≥ 0
Résolution graphique
X2
150
125 4 X1 + 2 X2 ≤ 280
100

75
50

25 X1

25 50 75 100 125 150 175 200 225


Résolution graphique
X2
150
125
100
2 X1 + 4 X2 ≤ 100
75
50

25 X1

25 50 75 100 125 150 175 200 225


X1 ≥ 0 et X2 ≥ 0
Résolution graphique
X2
150
125
100

75
50

25 X1

25 50 75 100 125 150 175 200 225


X1 ≥ 0 et X2 ≥ 0
Résolution graphique
X2
150
125
100

75 X1 = 50 et X2 = 0

50

25 X1

25 50 75 100 125 150 175 200 225


La solution optimale
Produit A = 50unités
Produit B = 0 unités
Profit = 1500 €
Coût marginal
Rôle des points extrêmes…
Si un programme linéaire a une solution optimale,
alors au moins un point extrême est optimal.
Plusieurs solutions optimales
•  Si plusieurs solutions optimales existent alors la
fonction objectif doit être parallèle à au moins une
des contraintes.
Méthode du simplexe
•  Quand le nombre de variables est égal à 2, la
résolution graphique est facile
•  Quand le nombre de variables est égal à 3, il faut
faire une représentation 3D, c’est pas gagné !
•  Quand le nombre de variables est > 3, il faut faire
autrement ! Utiliser par exemple la méthode du
simplexe
Méthode du simplexe
•  Méthode du simplexe
•  méthode itérative qui consiste à partir d'une solution de
base (réalisable mais pas optimale), à l'améliorer à chaque
itération afin d'obtenir la solution optimale.
•  basée sur la construction de tableaux dont les valeurs
seront calculées manuellement
•  Lorsque le nombre de variables devient trop
important, il est préférable d'utiliser un logiciel qui
effectue les différentes itérations et détermine la
solution optimale.
L’algorithme du simplexe (Dantzig, 1947)

•  Développé juste après la Seconde Guerre mondiale


•  Utilisé pour planifier le pont aérien de Berlin en
1948.
•  Principes de l’algorithme :
•  Démarrer d’un point extrême
•  Se déplacer (pivot) vers un point extrême voisin améliorant la
solution
•  Répéter jusqu’à l’obtention de la solution optimale
Algorithme du simplexe
•  Modéliser le problème sous la forme d’une fonction
objectif et de contraintes (programme canonique)
•  Transformer le programme canonique en
programme standard en introduisant des variables
d’écart et artificielles pour transformer les
inéquations en équations
Tableau 1
Test d’optimalité
•  La solution courante est optimale si tous les coûts Ci
sont non négatifs.
•  Dans le cas contraire (si au moins un coût est
négatif), passer à l’étape suivante.

•  Détermination de la colonne-pivot et de la ligne-


pivot :
•  Colonne-pivot : correspond à la colonne contenant
le plus petit coût négatif.
•  Ligne-pivot : correspond à la ligne qui contient le
plus petit qi non négatif.
Nouveau tableau
•  Le nouveau tableau s’obtient comme suit :
•  Ligne-pivot : diviser tous les éléments de la ligne-
pivot par l’élément pivot ars.
•  Colonne-pivot : remplacer l’élément pivot par 1 et
les autres éléments de la colonne-pivot par 0.
•  Pour toutes les autres lignes et colonnes :

•  u : élément quelconque sur la ligne-pivot


•  w : élément quelconque sur la colonne-pivot
•  ars : élément-pivot
Itération
•  On vérifie à nouveau si on est à l’optimum sinon
nouveau tableau.
Exemple
max z = 400 x + 200 y
30 x + 20 y ≤ 6000
40 x + 10 y ≤ 4000
x ≤ 75
x ≥ 0, y ≥ 0
Forme canonique

Forme canonique : transformation des inéquations en


équations par ajout de variables d ’écart
max z = 400 x + 200 y
30 x + 20 y + e1 = 6000
40 x + 10 y + e 2 = 4000
x + e3 = 75
x ≥ 0, y ≥ 0, e1 ≥ 0, e 2 ≥ 0, e3 ≥ 0

e1 : heures inoccupées sur la machine 1


e2 : heures inoccupées sur la machine 2
e3 : produits p1 qu ’on aurait pu vendre mais qu ’on a pas fabriqués
Résolution graphique
Itération 1
y

400
Machine 2: x y e1 e2 e3
40x+10y=4000
30 20 1 0 0 6000
350 40 10 0 1 0 4000
A
1 0 0 0 1 75
300
400 200 0 0 0 0
B
250
Matrice initiale : solution point 0
200

150
Vente maximale:
x =75 Machine 1 :
C 30x+20y=6000
100

50

D
0
O 0 50 75 100 150 200 x
Dl
Itération 1 x y e1 e2 e3
y 30 20 1 0 0 6000 x ≤ 6000/30 = 200
Machine 2:
40 10 0 1 0 4000
400
40x+10y=4000 1 0 0 0 1 75
350
400 200 0 0 0 0
A
300

B
250

200

150
Vente maximale:
x =75 Machine 1 :
C 30x+20y=6000
100

50

D
0
O 0 50 75 100 150 200 x
Dl
Itération 1 x y e1 e2 e3
30 20 1 0 0 6000 200
y
40 10 0 1 0 4000 x ≤ 4000/40 = 100
400
Machine 2:
40x+10y=4000
1 0 0 0 1 75
400 200 0 0 0 0
350

A
300

B
250

200

150
Vente maximale:
x =75 Machine 1 :
C 30x+20y=6000
100

50

D
0
O 0 50 75 100 150 200 x
Dl
x y e1 e2 e3
Itération 1
30 20 1 0 0 6000 200
y
40 10 0 1 0 4000 100
400
Machine 2:
40x+10y=4000
1 0 0 0 1 75 x ≤ 75/1 = 75
400 200 0 0 0 0
350

A
300

B
250

200

150
Vente maximale:
x =75 Machine 1 :
C 30x+20y=6000
100

50

D
0
O 0 50 75 100 150 200 x
Dl
Itération 1

x y e1 e2 e3
30 20 1 0 0 6000
40 10 0 1 0 4000
1 0 0 0 1 75
400 200 0 0 0 0

x y e1 e2 e3
0 20 1 0 -30 3750
0 10 0 1 -40 1000
1 0 0 0 1 75
0 200 0 0 -400 -30000
Solution : point D
x = 75 e1 = 3750 e2 = 1050
y=0 e3 = 0
Itération 2
y x y e1 e2 e3
Machine 2:
0 20 1 0 -30 3750 y ≤ 3750/20
40x+10y=4000 0 10 0 1 -40 1000
400

350
1 0 0 0 1 75
0 200 0 0 -400 -30000
A
300

B
250

200

150
Vente maximale:
x =75 Machine 1 :
C 30x+20y=6000
100

50

D
0
O 0 50 75 100 150 200 x
Dl
x y e1 e2 e3
Itération 2 0 20 1 0 -30 3750
y
0 10 0 1 -40 1000 y ≤ 1000/10
400
Machine 2:
40x+10y=4000
1 0 0 0 1 75
0 200 0 0 -400 -30000
350

A
300

B
250

200

150
Vente maximale:
x =75 Machine 1 :
C 30x+20y=6000
100

50

D
0
O 0 50 75 100 150 200 x
Dl
Itération 2 x y e1 e2 e3
y
0 20 1 0 -30 3750 375/2
400
Machine 2: 0 10 0 1 -40 1000 100
40x+10y=4000
1 0 0 0 1 75 0y ≤ 75
350 0 200 0 0 -400 -30000
A
300

B
250

200

150
Vente maximale:
x =75 Machine 1 :
C 30x+20y=6000
100

50

D
0
O 0 50 75 100 150 200 x
Dl
Itération 2
x y e1 e2 e3
0 20 1 0 -30 3750 187,5
0 10 0 1 -40 1000 100
1 0 0 0 1 75 +∞
0 200 0 0 -400 -30000
x y e1 e2 e3
0 0 1 -2 50 1750
0 1 0 1/10 -4 100
1 0 0 0 1 75
0 0 0 -20 400 -50000

Solution : point C
x = 75 y = 100 e1 = 1750
e2 = 0 e3 = 0
Itération 3
x y e1 e2 e3
y
0 0 1 -2 50 1750 50 e3 ≤ 1750 (e3≤ 35)
400 0 1 0 1/10 -4 100 -4 e3 ≤ 100
1 0 0 0 1 75 e3 ≤ 75
350
0 0 0 -20 400 -50000
A
300

B
250

200

150
Vente maximale:
x =75 Machine 1 :
C 30x+20y=6000
100

50

D
0
O 0 50 75 100 150 200 x
Dl
Itération 3
x y e1 e2 e3
0 0 1 -2 50 1750 35
0 1 0 1/10 -4 100 +∞
1 0 0 0 1 75 75
0 0 0 -20 400 -50000

x y e1 e2 e3
0 0 2/100 -4/100 1 35
0 1 8/100 -6/100 0 240
1 0 -2/100 4/100 0 40
0 0 -8 -4 0 -64000

Solution : point B
x = 35 y = 240 e3 = 35
e1 = 0 e2 = 0
r
2 4 5 7 1 0 0 42

1 1 2 2 0 1 0 17

1 2 3 3 0 0 1 24

7 9 18 17 0 0 0 0

1. Choix de la colonne entrante r


si tous les Cj ≤ 0 alors FIN optimum atteint
sinon choisir une colonne r avec Cr>0 (ici : Cr =
max Cj )
2. Si tous les Air ≤ 0 alors FIN : solution non
bornée Xr = + ∞
3. Sinon déterminer la ligne sortante s telle que
Asr > 0 et Bs / Asr soit minimum ( Asr est
appelé le pivot )
r
2 4 5 7 1 0 0 42 42/5
1 1 2 2 0 1 0 17 17/2
s 1 2 3 3 0 0 1 24 24/3
7 9 18 17 0 0 0 0
4. Diviser la ligne s par le pivot
5. Eliminer des termes de la colonne r en dehors de
la ligne s par
r combinaison linéaire

1/3 2/3 0 2 1 0 -5/3 2

1/3 -1/3 0 0 0 1 -2/3 1

s 1/3 2/3 1 1 0 0 1/3 8

1 -3 0 -1 0 0 -6 -144
valeur de -z dans la
solution faisable
5. Réitérer
Exemple
Construction du 1er tableau
•  n variables = 6
•  m équations = 4
•  n-m = 2 variables qui doivent être nulles
•  On prend x1=0 et x2=0 (hors base)
•  D’où e1= 200; e2 = 60 ; e3 = 34 ; e4 = 14 (variables
de base)
Tableau initial
•  Les 4 lignes correspondent aux 4 contraintes.
•  La colonne coef Z à gauche correpond aux coefficients des
variables de base dans la fonction objectif.
•  La valeur en bas à droite corespond à la valeur de Z (somme
des produits des valeurs de base par leurs coef dans Z)
Choix de la variable entrante
•  On cherche le Maximum des Cj-zj si on veut
maximiser
•  On cherche le minimum des Cj-zj si on veut
minimiser

•  Dans notre problème, on veut maximiser.


•  On fait donc entrer x2 dans la base
Choix de la variable sortante
•  On calcule bi/aik et on cherche le minimum >0
•  200/5 = 40
•  60/3 = 20
•  34/0 infini ça fait beaucoup qd on cherche le mini
•  14/1 = 14
•  E4 va sortir de la base (e4 va devenir =0)
Pivotage
•  La cellule à l’intersection entre la variable entrante
et la variable sortante est le pivot.
•  On divise la ligne du pivot par le chiffre du pivot.
•  Pour l’exemple on divise par 1.
•  Dans la colonne pivot, toutes les valeurs sont à 0
sauf le pivot.
•  Pour les autres
Nouveau tableau

•  On calcule, les bj, les zj, et Z.


Résolution par le simplex
•  Les inégalités représentent des plans (en 2D) ou
des hyperplans.
•  Un ensemble d’inégalités permet de construire un
espace réalisable borné que l’on appelle un
polygone convexe (2D) ou polyèdre convexe
•  Un rappel sur la convexité :
•  Soit a et b deux solutions réalisables d’un polyèdre convexe,
alors (a+b)/2 est aussi une solution de ce polyèdre
Bonne nouvelle !
•  La propriété des points extrêmes nous dit que si un polyèdre
(P) contient une solution optimale, alors il existe une solution
optimale qui est située sur un point extrême.

•  La bonne nouvelle : on ne peut que considérer les points


extrêmes :-)

•  La mauvaise nouvelle : Le nombre de points extrêmes peut-


être exponentiellement élevé par rapport au nombre de
variables de décision.

•  Le prix de consolation : la convexité garantit que les optimums


locaux sont des optimaux globaux.
•  C'est-à-dire qu’un point extrême est optimal si tous ses voisins sont pires
que lui.
•  Mais attention aux plateaux…
Dualité
•  A tout problème de maximisation (ou minimisation),
on peut associer un problème de minimisation (ou
maximisation) correspondant. En notant par
PRIMAL le problème initial ; le problème
correspondant s'appellera donc DUAL.
Primal / Dual

Primal : trouver X={X1, X2..Xn}


Max C.X
A .X <= B
Dual : Trouver Y={Y1, Y2..Ym}
Min Y.B
Y.At >=C
Forme canonique de la dualité
PRIMAL DUAL
n variables , m contraintes m variables , n contraintes
Max C.X min Y.B
AX≤ B Y≥0
X≥0 Y At ≥ c
Passage primal/dual
Primal (Dual) Dual (Primal)

Fonction à maximiser Fonction à minimiser

ième contrainte ≤ ième variable ≥ 0

ième contrainte ≥ ième variable ≤ 0

ième contrainte = ième variable <> 0

jème variable ≥ 0 jème contrainte ≥

jème variable ≤ 0 jème contrainte ≤

jème variable <> 0 jème contrainte =


Problèmes rencontrés en PL.

•  La programmation linéaire est un outil de


modélisation et de résolution très puissant.

•  Par contre, dans certaines situations, on peut


rencontrer certaines difficultés…
•  Solutions optimales multiples
•  Phénomène de dégénérescence et cyclage
•  Solution réalisable inexistante
•  Solution non bornée
Solutions optimales multiples
Solutions réalisables inexistantes

•  Soit le programme linéaire suivant:


Max x0 = 4x1 + 3x2
Sujet à:
3x1 + 4x2 ≤ 12 (2.11)
x1 + x2 ≥ 4 (2.19)
4x1 + 2x2 ≤ 8 (2.13)
x1 ≥ 0
x2 ≥ 0.
Solutions réalisables inexistantes
•  Il n’existe pas de point qui
satisfasse toutes les
contraintes
simultanément.

84
Problème de PL non
borné
•  Soit le programme linéaire suivant:
Max z = x1 + x2 (2.21)
Sujet à:
−4x1 + x2 ≤ 2 (2.22)
x1 + x2 ≥ 3 (2.23)
x1 + 2x2 ≥ 4 (2.24)
x1 − x2 ≤ 2 (2.25)
x1 ≥ 0
x2 ≥ 0.

85
Problème de PL non borné
Pas de solution optimale

86
Autres algorithmes pour résoudre les PLs

•  Il existes d’autres algorithmes pour résoudre des programmes


linéaires, en particulier les méthodes de points intérieurs
•  En théorie ces méthodes converge dans un temps polynomial
( elles devrait donc bcp plus efficaces que le simplexe )

•  En pratique elles fonctionnent mieux quand l’espace est plus


«lisse» alors que le simplexe semble plus efficace quand les
arrêtes sont plus prononcées.
L’analyse de sensibilité
•  Est-ce que la solution optimale est sensible aux
paramètres du problème ?

•  Pourquoi se poser cette question ?


•  Les paramètres utilisés ne sont que des estimations
•  Dans un environnement dynamique, ceux-ci peuvent
changer régulièrement.
•  Une analyse de scénarios (what-if) peut permettre de
proposer des changements aux paramètres.
Analyse de sensibilité
(objectif)
Intervalle d’optimalité
•  La solution optimale demeurera inchangée tant
que:
•  Un coefficient de la fonction objectif demeure dans son
intervalle d’optimalité;
•  Rien d’autre ne change.
•  La valeur de cette solution changera si:
•  Le coefficient qui a changé multiplie une variable dont la
valeur optimale est non nulle.
Prolongements de la
programmation linéaire
•  Programmation en nombres entiers (dont la
programmation dynamique)
•  Programmation non-linéaire
Optimisation avec Excel
Logiciels commerciaux
•  Il existe de nombreux logiciels commerciaux pour
résoudre des problèmes linéaires ou plus
généralement d’optimisation.
•  Cplex, Lingo, …
•  Le solveur d’Excel permet de traiter les cas avec
peu de variables et de contraintes…
Optimisation avec Excel
(Solver)
•  Excel intègre un outil qui permet la résolution de
certains problèmes d’optimisation comme
programmation linéaire, problème de transport et
autres.
•  Cet outil n’est pas toujours installé dans l’installation
standard
•  Menu Outils à macros complémentaires … à
cocher Solveur puis OK
•  Aller dans Outils (menu Solveur …).
Exemple
•  Ouvrir une feuille de calcul et enregistrer les
contraintes et la fonction objectif
•  Aller dans outils / Solveur
Exemple
•  Aller dans outils / Solveur
•  Entrer la cellule de la fonction objectif
•  Entrer les cellules des variables
•  Entrer les variables
•  Choisir la méthode
Options
•  On peut alors
choisir des options
Théorie des Graphes
Pourquoi la théorie des graphes ?
•  On aime bien raisonner à partir de dessins
•  Graphe = formes de dessins génériques qui représentent
des problèmes génériques

•  Si on sait modéliser un problème sous forme de graphe,


•  On saura évaluer à quels types de problèmes génériques il
appartient
•  On saura évaluer si il est facilement résolvable
•  On saura identifier quels types d ’algorithmes peuvent aider

•  Théorie des graphes = Ensemble des problèmes


génériques représentables sous forme de graphe et de
leur modes de résolution
Exemple
Qu ’est ce qu ’un graphe
•  Graphe G(X,U)
•  X ensemble fini d ’éléments appelés sommets = {Agen,
Auch,…}
•  U ensemble de relations entre 2 sommets x et y notée (x,y)
=>{Agen-Auch, Agen-Montauban, …}
Exemple : représentation du réseau routier en Midi-Pyrénées

Cahors
Agen Albi
Montauban

Auch Toulouse Castres


Tarbes
Terminologie
•  Arc et arête
Si la relation est réversible ((x,y) ∈ U => (y,x) ∈ U), (x,y) = arête
Sinon (x,y) = arc x = origine, y = extrémité

•  Arc = arête orientée => graphe orienté


•  Arc ou arête valuée => graphe valué
•  Boucle = arc (x,x)
5
5
<=>

Prédécesseurs U-(x) = ens des sommets origines des arcs d ’extrémité x


Successeurs U+(x) = ens des sommets extrémité des arcs d ’origine x
Exemple d ’un projet : Construction d ’une
maison
A/ Faire les fondations + Sécher 15s G/ Carreler, poser moquettes 3s
B/ Monter les murs 3s H/ Tapisser et peindre 2s
C/ Poser le toit 4s I/ Crépir 1s
D/ Monter la menuiserie 4s J/ Aménager l ’extérieur 3s
E/ poser l ’électricité 2s K/ Fini
F/ platrer + séchage platres 5s j 3
k
4 1
c i
3 4
3 5 2

d 4
f h
15 3
a b 2
3 3
e g
2
Terminologie (2)
•  Chemin = suite ordonnée d ’arc telle que l ’extrémité de l ’un est
l ’origine du suivant. Ex : chemin ABDFK
•  Chemin hamiltonien = chemin passant une fois et une seule par
chaque sommet du graphe et contenant tous les sommets
•  Chemin simple = ne passe pas 2 fois par le même arc
•  Chemin élémentaire = ne passe pas 2 fois par le même sommet
•  Circuit = chemin se fermant sur lui même.
Ex : Toulouse, Albi, Castres, Toulouse
•  Longueur d ’un chemin (ou circuit) = somme du poids des arcs qui
le composent
•  chaîne (resp cycle) =Chemin (resp circuit) composé d ’arêtes
•  Graphe (fortement) connexe = graphe non orienté (orienté) tel que
pour tout couple de sommet (x,y) il existe une chaîne (chemin)
allant de x à y
•  Arbre = graphe non orienté connexe sans cycle
•  Arborescence d ’un graphe orienté = arbre ayant un sommet
« racine » tel qu ’il existe un chemin allant de la racine à tout autre
sommet.
Représentation d ’un graphe
Matrice booléenne (successeurs)
a b c d b
a 0 1 1 0
a d
b 0 0 1 1
c 0 0 0 1 c
d 1 0 0 0
Recherche difficile prédécesseurs
Risque beaucoup de 0 (inutile)
Valuation à la place des 1 Liste de précédents
Matrice d ’incidence Précédents
a b c d a d
a 0 1 1 -1 b a
b -1 0 1 1 c a,b
c -1 -1 0 1 d b,c
d 1 -1 -1 0 Recherche des arcs difficile
Recherche faciles prédécesseurs Peu de mémoire
Pas pour les graphes valués
Matrice d’adjacence
Problèmes de RO en théorie des
graphes
•  Trouver le plus court chemin (temps, km) pour aller d ’une ville à une
autre
•  Trouver la plus courte tournée (chemin hamiltonien) passant par toutes
les villes
•  Trouver le réseau de fibre optique le plus court à poser en parallèle du
réseau routier pour alimenter toute la région = trouver un arbre de
longueur minimale dans le graphe
•  Trouver la date de début au plus tôt d ’une tâche = plus long chemin ente
le nœud de début et le nœud représentant la tâche.
•  Quel est l ’effet du retard sur une tâche sur le retard d ’un projet
•  Trouver la quantité maximale de matière pouvant circuler dans un
réseau : problème de flot max (à coût minimum)
•  Comment alimenter une série de points de consommation à partir de
points de production à coût de transport minimum.
•  De combien de camions a t ’on besoin pour réaliser toutes le tournées en
1 jour ?
•  Quelles antennes poser et où les poser pour avoir une couverture
maximale et répondre aux demandes de consommations locales
•  Qui va faire quelles tâches et dans quel ordre pour un projet ?
Chemins optimaux
Objectif
•  Dans un graphe orienté trouver :
•  le plus court (ou le plus long) chemin allant d ’un sommet
origine à un sommet final
•  Les plus courts (plus long) chemins entre 1 sommet et
l ’ensemble des autres
•  Les plus courts (plus long) chemins entre tous les sommets.

•  Circuit absorbant = circuit de longueur négative pour


un plus court chemin ou de longueur positive pour
un plus long chemin
3 b
-7
a
3
•  Circuit absorbant => pas de solution 3 d 3
e
on peut faire le tour du circuit indéfiniment c 3
Ex : pas de plus court chemin de a à b,c,d ou e
De nombreux algorithmes
Principe de calcul de plus court
chemin
Tout sous chemin d’un chemin optimal est optimal
b 3
4 d 4
a -4 1 f
4
6 2
c e
4

a,b,d,c,e,f plus court chemin de a à f


=> a,b,d,c,e plus court chemin de a à e

Le plus court chemin de a à f se construit à partir 


du plus court chemin de a à un précédent de f
Plus court chemin
•  Hypothèse : pas de circuit !
Notion de marquage
λi= marque de Xi
= plus court chemin CONNU de X0 vers Xi (sans considérer Xj)

λj= marque de Xj
= plus court chemin CONNU de X0 vers Xj

λ*i= nouvelle marque de Xi en considérant Xj

λi
Xi Principe :
0
X0 dj,i Amélioration successive des marques
λ*i= Min( λi, λj+ dj,i)
Xj
λj
La marque du sommet Xi est ajustée à partir de celle du sommet Xj
Algorithme de Bellman (1) :
Classer les nœuds par niveau
•  On part d ’une représentation par liste des
précédents
•  Rang 1 les nœuds sans précédents
•  Barrer les nœuds de rang 1 dans toutes les listes de
précédents
•  Rang 2 les nœuds dont tous les précédents sont
barrés
•  Barrer les nœuds de rang 2 dans toutes les listes de
précédents
•  Rang 3 ….
Algorithme de Bellman
(graphe sans circuit)
•  1/ Classer les sommets par niveau
•  2/ mettre la marque 0 sur les sommets de rang1
•  3/ Ajuster la marque de tous les sommets
successeurs de sommets de rang1
•  4/ La marque des nœuds de rang 2 est définitive.
Ajuster la marque de tous les sommets
successeurs de sommets de rang 2
•  5/ La marque des nœuds de rang 3 est définitive.
Ajuster la marque de tous les sommets
successeurs de sommets de rang 3
•  6/ ...
Repérer le plus court chemin
•  Principe : lorsqu ’on fait évoluer la marque d ’un
sommet, on note la nom du sommet origine ayant
justifié cette marque.

•  A la fin de l ’algorithme,
•  On part du sommet final, on regarde le sommet ayant
justifié sa marque : c’est le sommet précédent du plus court
chemin
•  On remonte dans le graphe à partir du sommet précédent.
Exemple Bellman
B 2 D
2 9
A
1
F
2
6 3
C E

Calcul des rangs Calcul des marques


A A
B B
C C
D D
E E
F F
PERT
Méthode CPM ou
MPM
Outils pour la gestion de projet et l ’ordonnancement

Le problème central de l ’ordonnancement


Le problème central de
l’ordonnancement
•  Soient N tâches Ti nécessitant une durée di donnée et de
date de début ti à déterminer
•  3 types de contraintes
•  Contraintes dites potentielles : tj -ti ≥ ai,j (ai,j = constante)
Ex : Ti de durée di se fini avant de commencer Tj => tj -ti ≥ di
•  Contraintes liées aux ressources
•  Un moyen unique (homme ou machine) doit réaliser
2 tâches : quel ordre ?
Contrainte disjonctive (tj - ti ≥ di) ou (ti - tj ≥ dj)
•  Moyen a capacité multiple : contrainte cumulative
•  ∑ Moyen utilisé (i,t) ≤ Capacité (i,t)

Problème central = uniquement les contraintes potentielles


Représentation potentiel étape
(CPM ou PERT)
•  1 tâche et associée à 1 arc, 1 sommet va représenter une
étape
•  Attention : la signification de l ’étape dépend des arcs qui
aboutissent. S4 T1 avant T3 et T4
S1 Tâche 1 T2 avant T3 et T4

d1
S5 Tâch
e 3 S5 = Max (Fin T1, Fin T2)
d3
S2 S3 = Min (début T3, début T4)

Ajout de sommets et tâches fictives


Tâche 4
T1 avant T3 et T4
S2 Tâche 2 S5 S4
d2 d4 T2 avant T4
0 S6 = Max (Fin T1, Fin Fictive)
Tâche 1 Tâche 3 = début de T3
S1 d1
S6 d3
S3 S5 = Fin de T2
= début de T4
Méthode potentiel Tâche
(MPM)
•  1 sommet = le début d ’une tache
•  1 arc = une contrainte sur le délai Min entre les
débuts de tâches

d1
T1 T4 T1 avant T3 et T4
T2 avant T3 et T4

T2 d2 T3

Représentation plus systématique mais plus d ’arcs que CPM


Autres types de contraintes dans
MPM
•  T2 peut débuter 3 ut avant la fin de T1
d1 -3
T1 T2
•  T2 débute au plus tard 3 ut après le début de T1
t2 - t1 ≤ 3 <=> t1 - t2 ≥ -3 -3
T1 T2
•  T2 débute exactement 3 ut après le début de T1
3
T1 T2
•  T1 commence au plus tôt à la date 3ut -3
3
0 T1
•  T1 doit être terminée à la date 20 ut

0 d1 - 20 T1
Représentation d ’un sommet
PERT
•  On est intéressé à connaître pour chaque tâche :
•  Sa date de début au plus tôt sachant que le projet commence à la
date 0
•  Sa date de début au plus tard pour ne pas retarder le projet.

T1

Date de début au plus tard


Date de début au plus tôt
Calcul des dates de début au
plus tôt
•  Si ils n ’existent pas ajouter un sommet fictif de début (0) et un
sommet fictif de fin (s)
T1 T10 0
0
0 s
0 T2 T20 0

•  Date de début au plus tôt d ’un sommet X (tâche, étape ou fin de


projet)
= chemin le plus défavorable entre le début du projet (0) et le sommet X
= plus long chemin entre (0) et X.

•  Mode de calcul dépend de la nature du graphe


•  Souvent graphe sans circuit => Algorithme de Bellman
•  Arcs tous positifs (pas de contrainte de début ou fin au plus tard)
=> Disjkstra
•  Si risque de circuits positifs => Dantzig, Blatner, Rao
ou Floyd, Warshall
Calcul des dates de début au
plus tard
•  On fixe la date de début au plus tard du dernier sommet (s)
•  Date de début au plus tard de (s) = date de début au plus tôt de (s)
•  date de début au plus tard d ’une tache X
= date de début après laquelle le projet est en retard.
= Date de début au plus tard de (s) - Plus court chemin
de X à (s)
•  Mode de calcul :
•  On part de (s), on prend tous les arcs en sens inverse (valeur
inverse)
T2
µ2
T1 µ3
T3
=> Début au plus tard de T1 = Min (début au plus tard de T2 -µ2,
début au plus tard de T3 - µ3)
Exemple 3
T1 T3
1
6
4 (s)
0
0 2 7

5
T2 T4
Notion de marge
•  Marge totale d ’une tâche X
= marge possible sur le début de X sans retarder le
projet
= date de début au plus tard de X - date de début au plus
tôt de X

•  Marge libre d ’une tâche X


= marge possible sur le début de X sans retarder une
autre tâche

= Min (début plus tôt de U - durée X->U) - début au


plus tôt de X
U ∈ Suivants(X)
Durée aléatoire
•  distribution de probabilité de réaliser une tâche dans
une durée donnée est souvent assimilée à une loi ß-
PERT.
Probabilité d ’une durée égale à t

O = durée Optimiste
R = durée la plus Réaliste
P = durée Pessimiste

t
O R P

durée moyenne = (O + 4 R+P) / 6

Sigma = (P- O) / 6
Flots dans un
graphe
Flot max, flot max de cout min
Problèmes d ’affectation
Exemple
•  On a 2 captages d ’eau pour alimenter 4 villages en eau
potable.
•  Peut on répondre à leur demande à l ’heure de
consommation la plus forte ? 30
110
C1 V2 90
200
80 80 (p)
(s) 70
V1 V3
150 80
80 80
C2 140
80 V4
Débit source
Demande
Capacité des canalisations
Problème de flot max et flot
max de coût min
•  Graphe = 1 réseau traversé par un flot de matière sans pertes ni sur
les arcs ni aux sommets.
•  Flot d ’un arc u = φu = quantité circulant entre l’origine et l’extrémité
de l ’arc
•  Arcs u a 2 valeur : capacité max cu en matière ET Coût Cu par unité
de matière
•  0 ≤ φ u ≤cu
•  Coût total = ∑ φu Cu

•  1 sommet source fournit toute la matière, 1 sommet puit absorbe


toute la matière
•  En tout sommet : ∑ flot entrant = ∑ flot sortant (loi des
nœuds)
Problème de flot max et flot
max de coût min

13,1
1 3
13,8 13,4
(s) 25,2 4,2 (p)

source 20,2 2 4 20,2


15,3 puit

Flot max de coût min = comment faire passer un


maximum de matière entre (s) et (p) à moindre coût
Exemple
Terminologie
•  Arc saturé si flot de l ’arc = capacité de l ’arc
•  Flot complet = tout chemin de (s) à (p) contient au moins un
arc saturé
13 13
1 3
13 13 13
2
4 4 (p)
(s) 20 25 15
20 2 4 20 9
15 5 Flot complet = 22

•  Attention flot complet ≠ flot max => re-routage de la matière

1
13 13 3
1213 13 13
4 (p)
(s) 20 25 5 4
20 2 4 20 19
15 15
Flot complet = 32
Coupe
•  A ensemble de sommets contenant (p) mais pas (s)
= support de la coupe

•  Coupe C = ensemble des arcs d ’origine hors de A


et d ’extrémité dans A
•  Pour toute coupe, ∑flot des arcs de C = flot entrant
= flot sortant
•  Théorème :
Flot max <=> il existe une coupe dont tous les arcs sont
saturés
Construction d ’un flot de
départ
1/ Sélectionner un chemin de (s) à (p)
2/ Saturer ce chemin :
augmenter le flot de manière à saturer un arc du chemin
3/ Revenir au 1/ tant qu ’on trouve des chemins non
saturés

•  Remarque :
si on a bien pris tous le chemins, on a construit un
flot complet
Algorithme de marquage de
Ford Fulkerson
•  2 règles :
R1 : marquer à (+x) un sommet Y si X marqué et arc u X->Y non saturé
φu< cu
•  On peut ajouter (cu - φu) unité de matière sur l ’arc u
R2 : marquer à (-x) un sommet Y si X marqué et arc u Y->X de flux φu >0
•  On peut enlever φu unité de matière sur l ’arc u
Algorithme de marquage :
•  A = ens des sommets nouvellement marqués
•  1/ marquer (s) à 0 et ajouter (s) à A
•  2/ Tant que A ≠ {}
•  3/ sélectionner un sommet X de A
•  4/ essayer de marquer les successeurs de X non marqués avec R1 ou R2
•  5/ ajouter ces successeurs nouvellement marqués à A
•  6/ si (p) ∈ A, STOP, Sinon aller en 2/
•  Si on a pu marquer (p) c ’est que le flot n ’est pas max
•  Il existe une chaine de sommets marqués de (s) à (p).
Exemple
(0) 1 13
70 13 R1 permet de marquer 1 à (+s)
(s) 15 (p) on peut ajouter 7 unités de matière
20 13
20 2 7
15
(+s)
1 13 R2 permet de marquer 2 à (-1)
70 13
(s) 15 (p) On peut enlever 13 unités de matière
20 13
20 2 7
15
(-1)
(+s) R1 permet de marquer (p) à (+2)
1 13 13
(0) 7 0 on peut ajouter 8 unités de matière
(s) 15 (p)
20 13
20 2 15 7 (+2)

(-1)
Principe de re-routage de la
matière
•  Il existe une chaine reliant des sommets marqués de (s) à (p)
•  Pour chaque arc u de la chaîne,
repérer la quantité maximale ϕu pouvant être re-routée
•  ajoutée sur l’arc X->Y si Y est marqué à (+x)
•  enlevée sur l’arc Y->X si Y est marqué à (-x)
•  Soit ϕ = Min(ϕu )
•  Re-router ϕ unité de matière
•  Ajouter ϕ sur l’arc X->Y si Y est marqué à (+x)
•  Enlever ϕ sur l’arc Y->X si Y est marqué à (-x)
(+s)
1 Sur (s)-> 1 on peut ajouter 7
(0) 13 13
70 Sur 2-> 1 on peut enlever 13
(s) 15 (p) Sur (2) ->p on peut ajouter 8
20 13 1 13 13
20 7 (+2) 7 7
2 15
(s) 15
(-1)
=> ϕ = 7 20 6 (p)
20 2 15 14
Flot Max : algorithme de Ford
Fulkerson
L ’algorithme de marquage permet de savoir par où
ajouter de la matière tant qu ’on le peut

•  1/ construire un flot initial (il peut être nul)


•  2/ Appliquer l ’algorithme de marquage sur ce flot
•  3/ Si (p) est marqué
•  4/ repérer la chaine de marquage de (s) à (p)
•  5/ ajouter le max de matière possible selon cette chaine
•  6/ Aller en 2/
Ford-Fulkerson
Flot max : par le graphe
d ’écart
•  1/ construire un flot initial φ
•  2/ construire le graphe d ’écart Ge de ce flot φ
•  3/ si il existe un chemin de (s) à (p) dans Ge,
•  Soit ϕ = Min(capacité des arcs du chemin de (s) à (p) dans
Ge)
•  4/ Ajouter ϕ au flot φ
•  Pour tout arc du chemin de (s) à (p)
Ajouter ϕ à l ’arc correspondant du flot φ si il est dans le même sens que
u
Enlever ϕ à l ’arc correspondant du flot φ si il est dans le sens inverse de
u
•  5/ aller en 2/
Exemple
Flot Graphe d ’écart Ge ϕ=7
1 13 1
70 13
13 7
(s) 15 (p) (s) 13 2 7 (p)
20 13
20 2 15 7 20 2 8

Flot Graphe d ’écart Ge


1 13
77 13 1
7 13
(s) 15 (p)
20 6 (s) 6 9 14 (p)
20 2 14
15 20 2 1
Pas de chemin de (s) à (p)
=> flot = Max
Flot max de coût Min :
première méthode
•  Théorème : Si il existe un circuit de coût < 0 dans le graphe
d ’écart, on peut re-router de la matière à moindre coût dans le
flot associé.
•  On construit un flot max, puis on réduit son coût.
1/ construire un flot max
2/ construire le graphe d ’écart Ge associé (capacité et coût)
3/ rechercher un circuit de coût <0 dans Ge
4/ re-router la matière (idem flot max)

•  Recherche du circuit de coût < 0 :


•  On recherche tous les plus court chemin dans Ge avec l ’algorithme de
Floyd, Warshall
•  Si on trouve un chemin de (s) à (p), le flot n ’était pas max et on
l ’augmente
•  Si on trouve un circuit absorbant dans Ge, il est de coût <0
Exemple 1
1313,1 3
13 13,8 13 13,4
(s) 25,2 4 44,2 (p)
20,2
source 19 20,2 2
15 15,3 4 19 puit
Flot max : Coupe {3, 4 , (p) } est saturée.
Graphe d ’écart :
13,-1
1 3
13,-8 13,-4
(s) 21,2 4,-2 4,-2 (p)
1,2
20,-2
source 2 4 puit
19,-2 15,-3

Pas de chemin de (s) à (p) => Flot max.


Circuit (s)-2-1-(s) : valeur = 2 + 2 -8 = -4
Maximum de matière re-routée = 1 (arc (s)->2)
Exemple (2)
13,1
1 3
12 13,8 13 13,4
(s) 25,2 5 44,2 (p)
20,2
source 20 20,2 2
15 15,3 4 19 puit

Graphe d ’écart :
13,-1
12,-8 1 3 13,-4
(s) 1,8 20,2 5,-2 4,-2 (p)
20,-2
source 2 4 puit
20,-2 15,-3

1 Circuit (s)-1-2-(s) : valeur = -2 - 2 +8 = +4


Flot max de coût Min
Flot max de coût Min :
deuxième méthode
•  Principe : on part du flot nul et on l ’augmente petit à
petit à moindre coût.

•  1/ on part du flot nul, φ=0


•  2/ construire le graphe d ’écart associé à φ
•  3/ Si il existe un plus court chemin de (s) à (p) dans Ge
•  Augmenter le flot φ selon ce chemin
(cf méthode flot max par le graphe d ’écart)
•  Aller en 2/
•  4/Sinon le flot est max de coût min

•  Remarque : il ne peut y avoir de circuit absorbant au 3/ car sinon cela


signifie qu ’il existait un chemin plus court à une étape précédente.
Flot Marquage + court chemin

1 13,1 3 4 1 13,1 3 5 13,4


13,4
13,8 13,8
(s) 25,2 4,2 (p) (s) 25,2 4,2 (p)
20,2 0 20,2 20,2 7
20,2 2 4 2 4
15,3 15,3 ϕ = 15
2 5
4 5
1 13,1 3 1 13,1 3
13,4 13,4
13,8 13,8
(s) 25,2 4,2 (p) 4,2 (p) 8
(s) 25,2 5,2
20,2 5,2
20,2 2 4 15 0 2 4 6 15,-2
15,3 15,-2 15,-3
15 2
15
5
ϕ=4
1 13,1 3 13,4
4 1 13,1 3 13,4
13,8 4 13,8
4,2 21,2
(s) 25,2 4 (p) (s) 4,-2 4,-2 1,2
(p) 9
1,2
20,2 2 4
20,2
0 19,-2 2 4 19,-2 ϕ=1
15,3 19 15,-3
19 15 2
Flot Marquage + court chemin
1 13,1 12,1 9
1 3 1 8 1 3 12,4
13,8 13,4 13,8 1,-1
4 20,2 1,-4
(s) 25,2 5 4,2 (p) (s) 5,-2 4,-2 (p) 13
20,2 1,2
20,2 2 15,3
4 19
0 20,-2 2 15,-3
4 19,-2 ϕ = 12
20 15 6 11
8 13,-1
13 1 3
13,1 3 13 12-,8 13,-4
12 1
13,4 1,8
13,8 4 (s) 5,-2 4,-2 (p)
4,2 (p) 20,2
(s) 25,2 5
0 20,-2 2 15,-3 4 20,-2
20,2
20,2 2 4 19 6
15,3
20 15

L ’algorithme de plus court chemin ne permet pas de marquer (p)


=> il n ’y a pas de chemin de (s) à (p) => flot Max.
=> il n ’y a pas de circuit absorbant => flot max de coût min
Affectation
Algorithme Hongrois
Problème basique
d ’affectation
•  Soient N taches à affecter à N personnes
•  Chaque personne ayant des compétences
différentes, on donne par personne un temps de
réalisation de chaque tâche.
•  Objectif : Affecter les personnes aux tâches de
manière à générer une charge minimale
T1 T2 T3 T4 T5
Lionel 86 94 82 84 37
Emmanuel 59 22 56 27 30
Didier 56 19 64 20 20
Jacques 54 26 95 75 17
Michel 28 68 45 49 97
Algorithme Hongrois
1/ Soustraire a chaque ligne la valeur Min
T1 T2 T3 T4 T5
Lionel 49 57 45 47 0 37
Emmanuel 37 0 34 5 8 22
Didier 37 0 45 1 1 19
Jacques 37 9 78 58 0 17
Michel 0 40 17 21 69 28
2/ Soustraire a chaque colonne la valeur Min
T1 T2 T3 T4 T5
Lionel 49 57 28 46 0 37
Emmanuel 37 0 17 4 8 22 Somme des Min
ligne et colonne
Didier 37 0 28 0 1 19 = coût minimal
Jacques 37 9 61 57 0 17 d ’une affectation
Michel 0 40 0 20 69 28
0 0 17 1 0 141
=> Au moins un « 0 » par ligne et par colonne
Algorithme Hongrois
•  3/ Pour chaque « 0 »intersection de ligne i et colonne j
Regreti,j = Min (ligne i sauf le « 0 ») + Min (colonne j sauf le « 0 »)
•  4/ tant qu ’il reste des « 0 » non barrés,
•  4.1/ encadrer le « 0 » non barré ou encadré ayant le Regret Max
Si regret Max = 0 et plusieurs « 0 » possibles, voir cas plus loin
•  4.2/ barrer tous les autres « 0 » sur la même ligne et colonne
T1 T2 T3 T4 T5
Lionel 49 57 28 46 0 28 Regret
Emmanuel 37 0 4 17 4 8
Didier 37 0 0 28 0 4 1
Jacques 37 9 61 57 0 9
Michel 0 37 40 0 17 20 69

0 <=> affectation d ’une tâche à une personne à coût nul


Si toutes les personnes affectées STOP : optimum trouvé
Algorithme Hongrois : cas du
regret Max = 0
•  Lorsqu ’on doit choisir un « 0 » à encadrer,
Si le regret maximal est 0 et plusieurs « 0 » ont le
regret maximal.
•  Alors, recalculer les regrets dans la sous matrice restante :
on met à jour les regrets en considérant les affectations déjà
réalisées
•  Si plusieurs « 0 » ont encore le regret maximal.
•  Sélectionner l ’un quelconque de ces « 0 » : cela n ’a aucune
influence sur le résultat .
Algorithme Hongrois
•  6/ Marquage des lignes et colonnes
•  6.1/ Marquer * toute ligne n ’ayant pas de « 0 » encadré
•  6.2/ Marquer * toute colonne ayant un « 0 » barré sur une ligne marquée
•  6.3/ Marquer * toute ligne ayant un « 0 » encadré dans une colonne marquée
•  6.4/ aller au 6.2/ tant qu ’on peut.
•  7/ Obtention de nouveaux « 0 »
•  7.1/ Rayer les lignes non marquées et les colonnes marquées
•  7.2/ Soustraire µ (la plus petite valeur non barrée) à tous les éléments non rayés
•  7.3/ Ajouter µ à tous les éléments barrés 2 fois et Revenir au 3/

T1 T2 T3 T4 T5
Lionel 49 57 28 46 0 *
Emmanuel 37 0 17 4 8
Didier 37 0 28 0 1
µ=9
Jacques 37 9 61 57 0 *
Michel 0 40 0 20 69
*
Fin de l ’exemple
T1 T2 T3 T4 T5
Lionel 40 48 19 37 0 *
Emmanuel 37 0 17 4 17 *
Didier 37 0 28 0 10 µ=4
Jacques 28 0 52 48 0 *
Michel 0 40 0 20 78
* *
T1 T2 T3 T4 T5
Lionel 36 48 15 33 0 *
Emmanuel 33 0 13 0 17 *
Didier 37 4 28 0 14 * µ = 13
Jacques 24 0 48 44 0 *
Michel 0 44 0 20 82
* * *
T1 T2 T3 T4 T5
Lionel 23 48 2 33 0
STOP
Emmanuel 20 0 0 0 17
Didier 24 4 15 0 14 Coût = 141 +9+4+13
Jacques 11 0 35 44 0 = 177
Michel 0 57 0 33 95
Affectation = Flot Max de
Coût Min
•  Construction du graphe G
•  1 sommet par personne + 1 sommet par tâche + (s) + (p)
•  Arc de (s) à une personne de coût 0 et capacité 1(nombre de
tâches affectables simultanément à 1 personne)
•  Arc d ’une personne P à une tâche T de capacité 1 et de coût
égal au coût d ’affecter P à la tâche T.
•  Arc d ’une tâche à (p) de coût 0 et de capacité 1 (nombre de
personnes a affecter à la tâche pour la réaliser)

•  Une personne P est affectée à une tâche T


<=> il existe un flot de P à T dans le graphe G
•  Affectation de coût Min = Flot Max de coût Min sur G
•  Démonstration de l ’algorithme hongrois par équivalence
des opérations réalisées sur le flot Max de coût Min.
Transport de matière
Algorithme de Stepping Stone
Problème Type
•  Soient N usines de fabrication de capacité limitée
•  Soient M centres de consommation ayant émis une demande
∑ Capacité de production = ∑ demandes
•  Soit une matrice NxM donnant les coût de transport de N à M
•  Trouver qui produit pour qui au moindre coût
Coûts a b c d e Capacité
A 1,5 6,4 1,8 4 3,5 90
B 1,6 2,6 1,9 3,1 5,8 75
C 5,3 3,5 2,4 1,3 2,2 35
D ∆ ∆ ∆ ∆ ∆ 25
Dmde 40 35 70 30 50 ∆ très grand

Site D est ajouté pour que « capacité Totale = Demande Totale »


Coûts de transport infinis (∆) pour préciser que ceux ci ne seront pas
réalisés.
Modèle linéaire
•  Variables : xi,j = la quantité transportée depuis l ’usine i vers le centre de
consommation j.
•  Données : Ci = capacité de l ’usine i, Dj = demande du centre de
consommation j, Ci,j = coût de transport d ’une unité entre l ’usine i et le
centre j.

•  Min (∑ci,j xi,j)


j
Pour tout i , ∑xi,j = Ci

Pour tout j, ∑xi,j


i = Dj

•  Modèle à N*M variables et N+M contraintes. Une


solution est donc caractérisée par N*M-N+M =
(N-1)*(M-1) variables à 0
•  Stepping Stone = méthode adaptée pour limiter les calculs du
simplex + méthode pour construire facilement une première solution
Algorithme Stepping Stone (1)
•  1/ Construire une solution de départ
•  1/ sélectionner le trajet de coût min (C-d) et lui affecter un max de
matière => on sature une colonne ou une ligne
•  2/ Tant qu’on le peut
•  a/ sélectionner la ligne ou la colonne non saturée sur le dernier trajet
considéré,
•  b/ y affecter la matière restante sur le trajet non évalué de coût min
•  c/ mettre à 0 les trajets non évalués de la ligne ou colonne saturée
Transp a b c d e Capacité
A 40 0 5 0 45 90
B 0 10 65 0 0 75
C 0 0 0 30 5 35
D 0 25 0 0 0 25
Dmde 40 35 70 30 50
Algorithme Stepping Stone (2)
•  Au moins (N-1)(M-1) trajets à « 0 ».
•  1/ Pour chaque « 0 », évaluer le coût de l ’augmentation d ’une unité de la
quantité sur ce trajet (= calcul du coût marginal du simplex)
•  a/construire un circuit passant par ce trajet et des trajets de flot ≠ 0
•  b/ Evaluer le coût de re-router une unité de matière selon ce circuit :
ajoutée au premier trajet, enlevée au deuxième, ajoutée au troisième,

Théorème : le circuit passant par 1 trajet = 0 et des trajets de flot ≠ 0,
existe toujours et est unique

Transp a b c d e Capacité
A 40 0 5 0 45 90
B 0 10 65 0 0 75
C 0 0 0 30 5 35
D 0 25 0 0 0 25
Dmde 40 35 70 30 50
Circuit Bd = Bd - Cd + Ce - Ae + Ac - Bc
= +3,1- 1,3 + 2,2 - 3,5 + 1,8 - 1,9 = 0,4
Algorithme Stepping Stone (2)
•  2/ Si tous les circuits des « 0 » sont >0, le plan est optimum
(i.e. tous les coûts marginaux sont >0)
•  3/Sinon,
•  a/ sélectionner un « 0 » de circuit négatif (souvent le plus
négatif)
•  b/ affecter sur son circuit le plus de matière possible et aller au
1/

•  Exemple
•  Circuit Ab : Ab-Ac+Bc-Bb Coût = 6,4 - 1,8 + 1,9 - 2,6
= 3,9
•  Circuit Dd : Dd-Bd+Bc-Ac+Ae-Ce+Cd-Dd
Coût = ∆ - ∆ +2,6 - 1,9 + 1,8 - 3,5 +2,2 - 1,3 = -0,1
•  Circuit De : De - Db+Bc-Ac+Ae-De Coût = ∆- ∆ + 2,6 - 1,9 +
1,8 -3,5 = -1
•  Circuit De est le plus négatif
Problème : comment rechercher tous les circuits rapidement ??
Rechercher les circuits négatifs :
méthode du potentiel
•  1/ tracer le graphe Ge dont les sommets sont les Usines ou les Centres de
consommation et les arcs sont les trajets
•  2/ sélectionner un sommet Usine et lui affecter le potentiel 0
•  3/ A partir d ’un sommet Usine U ayant un potentiel fixé,
•  Définir le potentiel d ’un sommet Centre de consommation CC relié à U dans
Ge par : Potentiel (CC) = Potentiel (U) + coût(U->CC)
•  4/ A partir d ’un sommet Centre de consommation CC ’ ayant un potentiel fixé,
•  Définir le potentiel d ’un sommet Usine U ’ relié à CC ’ dans Ge par :
Potentiel (U ’) = Potentiel (CC ’) - coût(U ’->CC ’)
•  5/ boucler sur 3/ tant que tous les sommets n ’ont pas un potentiel fixé.

0 A a 1,5
Graphe Ge et potentiels
1,8-1,9=-0,1 B b 2,5=2,6-0,1
correspondants au
3,5-2,2=1,3 C
c 1,8 premier plan de
d 2,6= 1,3 + 1,3 distribution
2,5-∆ D

e 3,5
Trouver les circuits négatifs :
méthode du potentiel (2)
•  La méthode permet de calculer le coût marginal
d ’un circuit passant par 1 trajet de flot 0 et des
trajets de flot ≠ 0
•  Pour tout trajet à 0 allant d ’une Usine U à un centre
CC :
•  Coût du circuit = coût (U->CC) + Potentiel (U) -Potentiel
(CC)
•  Circuit Bd = 3,1- 0,1 - 2,6 = 0,4
=> on sait trouver la valeur du circuit d ’un trajet à « 0 » sans
connaître ce circuit.
•  Sélectionner le « 0 » ayant le circuit le plus négatif
puis rechercher le circuit correspondant. On sait que
ce circuit est unique.
Fin de l ’ exemple
Transp a b c d e Capacité
A 40 0 30 0 20 90 Ab 3,9 Ad 1,4
B 0 35 40 0 0 75 Ba 0 Bd 0,4 Be 2,2
C 0 0 0 30 5 35 Ca 5,1 Cb 2,3 Cc 1,9
D 0 0 0 0 25 25 Da 2 Db 1 Dc 1,7
Dmde 40 35 70 30 50 Dd 0,9

Circuit Ab -Ac-Bc-Bb-Ab : 3,9 Circuit Ad-Ae-Ce-Cd-Ad : 1,4


Circuit Ba-Bc-Ac-Aa-Ba : 0 Circuit Bd-Cd-Ce-Ae-Ac-Bc-Bd : 0,4
Circuit Be-Ae-Ac-Bc-Be : 2,2 Circuit Ca-Ce-Ae-Ca : 5,1
Circuit Cb-Bb-Bc-Ac-Ae-Ce-Cb : 2,3 Circuit Cc-Bc-Ac-Ae-Ce-Cc : 1,9
Circuit Da-De-Ae-Aa-Da : 2 Circuit Db-De-Ae-Ac-Bc-Bb-Db : 1
Circuit Dc-De-Ae-Ac-Dc : 1,7 Circuit Dd-De-Ce-Cd-Dd : 0,9

Tous les circuits sont >0 => le plan est optimum.


Routage de matière = Flot max
de coût Min
•  Construction du graphe G
•  1 sommet par usine + 1 sommet par centre de consommation + (s) +
(p)
•  Arc de (s) à une usine de coût 0 et capacité celle de l ’usine
•  Arc d ’une Usine U à un centre de consommation CC de capacité ∞ et
de coût celui du trajet de U à CC.
•  Arc d ’un centre de consommation CC à (p) de coût 0 et de capacité
égale à la demande du centre.
•  Un trajet de U à CC est utilisé
<=> il existe un flot de U à CC dans le graphe G
•  Plan de transport de coût Min = Flot Max de coût Min sur G
•  Remarque : Stepping Stone <=>
1/construire un flot max
2/ évaluer tous les circuits de coûts négatif dans le graphe d ’écart
3/ réduire le coût du flot selon un circuit négatif et retourner au 1/
Merci !