Académique Documents
Professionnel Documents
Culture Documents
RECHERCHE OPERATIONNELLE
INTRODUCTION
La recherche oprationnelle est une discipline dont le but est de fournir des mthodes pour
rpondre un type prcis de problme, cest--dire laborer une dmarche universelle pour
un type de problme qui aboutit la ou les solutions les plus efficaces. La particularit de la
recherche oprationnelle est que les mthodes proposes sont des dmarches rationnelles
bases sur des concepts et outils mathmatiques et/ou statistiques.
Gnralement, ces mthodes sont employes sur des problmes tels que leur utilisation
"manuelle" devient impossible. Cest pourquoi, du fait quelles sont rationnelles, les
dmarches proposes par la recherche oprationnelle peuvent tre traduites en programmes
informatiques.
Cette traduction dune dmarche en un programme informatique nest pas sans difficult.
Tout dabord, le temps dexcution du programme rsultant et/ou la place occupe dans la
mmoire de lordinateur peuvent ne pas tre acceptables. Ainsi, une mthode en recherche
oprationnelle sera juge sur ces critres de temps et de place. Plus une mthode sera rapide
et peu gourmande en mmoire, plus elle sera considre bonne.
Les ordinateurs ont une structure particulire qui fait que toutes les proprits des
mathmatiques traditionnelles ne sont pas toujours respectes. Ainsi, une dmarche prouve
fonctionner admirablement en thorie peut savrer tre compltement inexploitable en
pratique. Notamment, les nombres rels dans un ordinateur ne peuvent pas tre reprsents
de manire exacte, ils sont arrondis. On voit donc facilement quune rptition excessive
darrondis dans un calcul peut entraner des erreurs importantes dans les rsultats finaux. Les
mthodes employes en recherche oprationnelle doivent prendre en compte ce genre de
problme.
PLAN DU COURS
Dans ce cours, nous verrons diffrents outils de recherche oprationnelle sans apporter de
justifications mathmatiques trs dtailles et rigoureuses. Aprs quelques exemples qui
permettront de mieux cerner le domaine de la recherche oprationnelle, nous introduirons un
outil la fois graphique et thorique: les graphes. Afin de mieux apprhender la complexit
dun problme ou la rapidit dun algorithme, nous nous intresserons la thorie de la
complexit. Enfin, nous verrons un autre outil important de la recherche oprationnelle qui
est la programmation linaire. Lavantage de cet outil est dapporter une solution gnrique
la rsolution de nombreux problmes. De plus, cet outil est disponible sous diffrentes
formes pour une utilisation informatique. Voici le plan du cours.
Prsentation
Les graphes
1 de 3
Les arbres
Programmation linaire
EXEMPLES
Chemin le plus court / le plus long
Soit un ensemble de villes et des chemins directs reliant ces villes entre elles. Le
problme dit "du plus court chemin" consiste trouver pour une ville de dpart donne
et une ville darrive donne le chemin le plus court qui relie ces deux villes. Le
problme peut galement tre de trouver un chemin le plus court pour chaque couple
de villes. Pour certains problmes, trouver le plus long chemin entre deux points peut
tre intressant.
Ordonnancement / planification
Soit des chteaux deau ayant un dbit constant. Ils desservent un certain nombre de
villes, chacune ayant des besoins quantifis constants. Leau est achemine travers
des conduits dont le dbit maximum est connu. Le problme est de trouver un moyen
de satisfaire au mieux les demandes de chaque ville. En dautres termes, essayer
dapporter le plus deau possible vers les villes.
Flot de cot minimum
Il sagit dun problme semblable celui du flot maximum mais on suppose en plus
quun cot fonction du dbit est associ lutilisation dun conduit. Le problme
devient alors de satisfaire les villes mais de la manire la moins onreuse.
Sac dos
Un randonneur prpare son sac dos pour partir en excursion. Bien entendu, il veut
2 de 3
viter davoir un sac trop lourd et dcide de se limiter dans le choix des objets quil
emporte afin de ne pas dpasser un certain poids. Cependant, il veut emporter le
maximum de choses utiles. Pour cela, il affecte une valeur quantitative chaque objet
en plus de son poids (plus la valeur est importante, plus le randonneur juge l'ob jet
important). Le problme peut donc se formuler de la manire suivante: trouver
lensemble des objets dont la somme des utilits est maximum tout en ne dpassant pas
un poids fix.
Affectation
Des modifications de postes sont effectues dans une entreprise. Plusieurs personnes
doivent tre affectes de nouveaux postes. Ainsi, chacun classe par ordre de
prfrence les postes quil veut occuper. Le problme ici est dattribuer chaque
personne un poste tout en essayant de satisfaire au mieux le souhait de chacun.
Voyageur de commerce
Un voyageur de commerce doit dmarcher dans un certain nombre de villes. Il connat
bien entendu la distance qui spare les villes entre elles. Cependant, le voyageur de
commerce veut perdre le moins de temps possible dans ses dplacements. Le problme
est donc de trouver un chemin qui passe par toutes les villes une et une seule fois et qui
soit le court possible.
Dans tous ces exemples, il existe une mthode simple pour rsoudre le problme. En effet, il
suffit dnumrer toutes les possibilits et den dgager la ou les meilleures. Cependant, on
saperoit que plus le problme est compliqu en terme dlments mis en jeu, plus le
nombre de possibilits crot de manire non pas linaire (proportionnelle) mais plutt
exponentielle. Par exemple, le problme daffectation prsent prcdemment avec 100
personnes a 100! (100 x 99 x 98 x ... x 1) solutions. Le simple fait de rajouter une personne
dans le problme va multiplier par 101 le nombre de solutions.
Gnralement en recherche oprationnelle, on a souvent traiter des problmes dont le
nombre de solutions devient rapidement difficile imaginer. Bien que les exemples vus ici
soient petits, il faut bien comprendre quen ralit, on sera confront des problmes de
taille beaucoup plus importante. Ce qui explique que lon cherche des mthodes toujours plus
efficaces pour rsoudre les problmes.
3 de 3
1. LES GRAPHES
DEFINITIONS ET THEOREMES
Graphe
Un graphe est un ensemble de noeuds qui sont relis entre eux par des arcs.
Mathmatiquement, un graphe est reprsent par un couple de deux ensembles G = (X;U) o
X est lensemble des noeuds et U lensemble des arcs.
Arc
Un arc relie deux noeuds entre eux, il sera donc reprsent par un couple (x;y) o x et y sont
des noeuds. Un arc peut tre orient, cest--dire que lordre de x et de y est important dans le
couple (x;y). Un arc peut ne pas tre orient et dans ce cas, lordre de x et de y dans le couple
(x;y) na aucune importante, donc (x;y) = (y;x). Les arcs sont reprsents de la manire
suivante.
Arc orient:
Remarque
Un arc non orient peut toujours tre transform en une situation o lon na que des arcs
orients.
Cest pourquoi, dans la suite du cours, on utilisera le plus souvent des graphes orients, cest-dire des graphes dont les arcs sont tous orients.
Boucle
On appelle boucle un arc dont lextrmit initiale est gale son extrmit finale. Par
exemple, (x;x) est une boucle.
Adjacence
1 de 10
y est adjacent x,
x et y sont adjacents u,
u est adjacent x et y.
Degr
Le demi-degr extrieur dun noeud est le nombre darcs adjacents qui en partent.
On le note d+(x) et d+(x) = |{u U | u = (x;y) o y X}|.
Le demi-degr intrieur dun noeud est le nombre darcs adjacents qui y arrivent.
On le note d-(x) et d-(x) = |{u U | u = (y;x) o y X}|.
Le degr dun noeud est le nombre darcs qui lui sont adjacents.
On le note d(x) et d(x) = d+(x) + d-(x).
Exemple
Dans le graphe suivant, d+(x) = 3, d-(x) = 2, d(x) = 5.
Graphe rgulier
Un graphe est dit rgulier si les degrs de tous ses sommets sont gaux.
Graphe complet
Un graphe est dit complet si tous les noeuds sont adjacents deux deux.
Autrement dit, (x;y) U (y;x) U.
2 de 10
Exemple
Graphe non complet:
Graphe complet:
Chane
Une chane de x y est une squence darcs c = ((x;e),(z;e),(z;a)...(s;t),(u;t),(u;y)) o deux
arcs qui se suivent sont adjacents et o x doit tre une extrmit du premier arc et y une
extrmit du dernier.
Chemin
Un chemin de x y est une chane dans laquelle les arcs sont orients et tels que:
x est lextrmit initiale du premier arc,
lextrmit terminale dun arc est lextrmit initiale de larc qui le suit dans la
squence.
Exemple
3 de 10
4 de 10
On dfinit la forte connexit par une relation entre deux noeuds de la manire suivante.
x et y ont une relation de forte connexit
chemin de y x) ou bien x = y.
Exemple
Graphe non connexe:
5 de 10
On appelle composante connexe un ensemble de noeuds qui ont deux deux la relation de
connexit. De plus, tout noeud en dehors de la composante na pas de relation de connexit
avec aucun des lments de la composante.
De mme, on appelle composante fortement connexe un ensemble de noeuds qui ont deux
deux la relation de forte connexit. De plus, tout noeud en dehors de la composante na pas
de relation de forte connexit avec aucun des lments de la composante.
Dans lexemple prcdent du graphe non connexe, {A,B,C} est une composante fortement
connexe du graphe et {D,E} est une composante connexe.
Graphe rduit
On appelle graphe rduit du graphe G le graphe G pour lequel chaque noeud est associ
une composante fortement connexe de G. De plus, un arc relie un noeud x un noeud y
dans le graphe G si il existe un arc qui relie x y dans G o x appartient la composante
fortement connexe de G associe x' et o y appartient la composante fortement connexe
de G associe y'.
Exemple
Ce graphe G nest pas fortement connexe, car on ne peut pas trouver de chemin de A D par
exemple. Par contre, on identifie deux composantes fortement connexes A = {A,B,C}et
B = {D,E}. Le graphe rduit du graphe G est:
Circuit, cycle
Un circuit contenant un noeud x est un chemin de x x. Un circuit est une squence
circulaire darcs et donc, contrairement au chemin, un circuit na ni dbut, ni fin.
De mme, un cycle contenant un noeud x est une chane de x x. Un cycle est galement une
squence circulaire darcs.
Un circuit (ou une chane) est lmentaire si le chemin (ou la chane) associ(e) est
lmentaire.
6 de 10
7 de 10
U|x
X et
Exemple
Un graphe G:
Un sous-graphe de G:
Un graphe partiel de G:
Un sous-graphe partiel de G:
Algorithme
8 de 10
9 de 10
Titre: ComposanteFortementConnexe
Entres: G = (X;U) un graphe, a un sommet.
Sortie: X un sous-ensemble de sommets.
Variables intermdiaires: X1 et X2 deux sous-ensemble de sommets, examin() une fonction,
x un noeud.
Dbut
X1
{a};
pour tout x
X faire examin(x)
faux;
tant que
x
X1 | non examin(x) faire
examin(x)
vrai;
pour tout u = (x;y)
U | y
X1 faire X1
fin tant que;
X2
{a};
pour tout x
X1 faire examin(x)
X1
{y};
X2
{y};
faux;
tant que
x
X2 | non examin(x) faire
examin(x)
vrai;
pour tout u = (y;x)
U | y
X2 faire X2
fin tant que;
X
X1
X2;
Fin
Algorithme
Titre: ComposantesFortementConnexes
Entres: G = (X;U) un graphe.
Sortie: C = {C1,...,Cn} un ensemble de composantes connexes.
Variables intermdiaires: X un sous-ensemble de sommets, i un entier, x un noeud.
Dbut
X
i
X;
1;
tant que X
faire
choisir x dans X;
Ci
ComposanteFortementConnexe(G,x);
X
X - Ci;
i
i + 1;
fin tant que;
Fin
10 de 10
2. LES ARBRES
DEFINITIONS ET THEOREMES
Nombre d'arcs dans un graphe
Soit n le nombre de noeuds dun graphe G = (X;U), n = |X|.
Soit m le nombre darcs de G, m = |U|.
Si G est connexe, m n - 1.
Si G est sans cycle, m n - 1.
Arbre
Un arbre est un graphe connexe sans cycle. Il a donc n - 1 arcs. On peut donc dire quun
arbre est un graphe qui connecte tous les noeuds entre eux avec un minimum darcs.
Remarques
Lajout du moindre arc supplmentaire dans un arbre cre un cycle.
Exemple
Un graphe connexe:
1 de 5
Fort
On appelle fort un graphe dont chaque composante connexe est un arbre.
Racine, antiracine
Un noeud a dun graphe G est une racine de G sil existe un chemin joignant a chaque
noeud du graphe G.
Un noeud a dun graphe G est une antiracine de G sil existe un chemin joignant chaque
noeud du graphe G a.
Exemple
Arborescence, anti-arborescence
Un graphe G est une arborescence de racine a si G est un arbre et si a est une racine.
Un graphe G est une anti-arborescence dantiracine a si G est un arbre et si a est une
antiracine.
2 de 5
Imaginons que lon associe une valeur, un poids, chaque arc dun graphe G. Le problme
de larbre de cot maximum consiste trouver un arbre, graphe partiel de G, dont la somme
des poids des arcs est maximum. En pratique, les problmes se ramne plutt trouver
larbre de cot minimum, ce qui ne change pas fondamentalement le principe des algorithmes
proposs ici.
Par exemple, minimiser le cot dinstallation de lignes lectriques entre des maisons peut tre
modlis par la recherche dun arbre de cot minimum. En effet, on veut connecter toutes les
maisons entres elles sans avoir de lignes inutiles (do la recherche dun arbre). Ensuite, on
veut utiliser le moins de cble possible, aussi on associera chaque possibilit de connexion
la longueur de cble ncessaire et on cherchera minimiser la longueur totale de cble
utilise.
Dans ce cours, deux algorithmes sont proposs. Lefficacit de chacun deux dpend du
choix de reprsentation du graphe et de la structure mme du graphe.
ALGORITHME DE KRUSKAL
Le principe de lalgorithme de Kruskal pour trouver un arbre de poids minimum dans un
graphe G est tout dabord de trier les arcs par ordre croissant de leur poids. Ensuite, dans cet
ordre, les arcs sont ajouts un par un dans un graphe G pour construire progressivement
larbre. Un arc est ajout seulement si son ajout dans G nintroduit pas de cycle, autrement
dit, si G reste un arbre. Sinon, on passe larc suivant dans lordre du tri.
Algorithme
Titre: Kruskal
Entres: G = (X;U) un graphe.
Sortie: U un ensemble darcs.
Variables intermdiaires: i un entier.
Dbut
trier les arcs de G dans lordre croissant des poids;
[On les notera u1, u2, ... , um.]
U
pour i
1 m faire
si le graphe (X;U
{ui}) ne contient pas de cycle alors
U
U
{ui};
fin si;
fin tant que;
Fin
Justification
Supposons que lalgorithme est effectu quelques itrations. Considrons maintenant lajout
de larc u = (x;y) dans larbre. On suppose que cet ajout nintroduit pas de cycle dans G.
Est-on certain que u permet la construction de larbre de cot minimum ? En fait, x et y
doivent tre connects dune manire ou dune autre. Donc si ce nest pas u qui les relie, ce
3 de 5
4 de 5
sera une autre chane C = (x,s,t,u,y) de x y comme le montre la figure ci-dessous. Comme u
nintroduit pas de cycle, cette autre chane nest pas encore construite, elle le sera plus tard.
Cela signifie que tous les arcs de cette chane ont un cot suprieur ou gal celui de u.
Donc, le fait de choisir la chane C pour connecter x y est plus onreuse que de connecter x
y par u. En effet, supprimons nimporte quel arc de la chane C et remplaons le par u. On
obtiendra toujours un arbre mais de cot plus faible. Cela justifie le choix de u et donc la
dmarche globale de lalgorithme de Kruskal.
ALGORITHME DE PRIM
Le principe de lalgorithme de Prim pour trouver un arbre de poids minimum dans un graphe
G est de fusionner, deux par deux les noeuds de G pour obtenir finalement un arbre. Par
fusionner, on entend remplacer deux noeuds par un seul. Tous les arcs adjacents lun ou
lautre des anciens noeuds deviennent adjacents au nouveau noeud. Le choix des noeuds que
lon fusionne est fait en choisissant au hasard un noeud et en cherchant un arc adjacent (autre
quune boucle) qui a le cot le plus faible. Ce qui fournit le deuxime noeud de la fusion.
Algorithme
Titre: Prim
Entres: G = (X;U) un graphe.
Sortie: U un ensemble darcs.
Variables intermdiaires: x un noeud, u un arc.
Dbut
U
Fin
Justification
y};
Tout dabord, si on choisit un arc u = (x;y) o x et y sont des noeuds qui ne sont pas le
rsultat dune fusion, on peut dire que le graphe rsultant ({x,y};{u}) est un arbre de poids
minimum.
Maintenant, si on choisit un arc u = (x;y) o x et y sont des noeuds qui sont le rsultat de
fusions, la figure ci-dessous peut reprsenter la situation. En fait, x et y reprsentent des
arbres de poids minimum (hypothse de rcurrence). Si u est larc entre x et y de poids
minimum, le graphe ({a,b,c,d,e,f};{(a;c),(b;c),(d;f),(e;f),u}) sera un arbre de poids minimum.
Donc la dernire tape de lalgorithme, on obtiendra bien un arbre de poids minimum qui
est un graphe partiel de G.
5 de 5
Exemple
1
2
3
4
5
a
1
-1
0
0
0
b
1
0
-1
0
0
c
0
-1
1
0
0
d
0
1
0
-1
0
e
0
0
-1
1
0
f
0
0
0
1
-1
g
0
0
-1
0
1
h
0
0
0
-1
1
Remarques
Seulement 2m cases de la matrice sont non nulles sur mn cases.
De plus, son utilisation apporte rarement de bons rsultats au niveau des algorithmes.
Notamment, pour parcourir le graphe, son emploi est difficile.
Par contre, pour quelques problmes comme le flot de cot minimum, cette matrice a
1 de 3
1 signifie que les deux noeuds sont relis par un arc orient.
Exemple
Le graphe prcdent sera reprsent par la matrice suivante.
1
2
3
4
5
1
0
0
0
0
0
2
1
0
1
0
0
3
1
0
0
1
1
4
0
1
0
0
1
5
0
0
0
1
0
Remarques
Seulement m cases de la matrices sont non nulles sur n2 cases.
Deux arcs ayant les mmes extrmits ne peuvent pas tre reprsents avec cette
matrice.
LISTES
Un graphe peut tre reprsent par des listes. Nous proposons ici une possibilit mais de
nombreuses autres peuvent convenir. On dfinit tout dabord une liste des noeuds et chaque
noeud, on associe une liste de noeuds successeurs et une liste de noeuds prdcesseurs.
Exemple
2 de 3
Remarques
Cette reprsentation est nettement plus efficace au niveau de la mmoire occupe que
les deux reprsentations prcdentes.
Elle est trs bien adapte au parcours du graphe, aussi bien en sens direct quen sens
indirect.
Cette structure est souple. L' ajout et la suppression d' arcs ou de noeuds sont plus s
ais
qu' avec les repr
sentations matricielles.
3 de 3
1 de 5
ALGORITHME EFFICACE
Une fois la complexit dfinie de manire succincte, on peut tenter de dfinir ce quest un
algorithme efficace. Un algorithme sera dit efficace si sa complexit est borne par un
polynme ayant la taille des donnes comme variable. Par exemple, un algorithme qui a
en entre un tableau de n lments et qui a une complexit de n2 est un algorithme efficace.
On dit aussi que lalgorithme est polynomial. Cette dfinition est justifie par le fait quon
sintresse aux performances des algorithmes quand la taille des donnes en entre devient
trs importante. Par exemple, considrons les algorithmes A, B et C. Leur complexit sont
les suivantes.
Ca = 80n,
Cb = 10n2,
Cc = n!.
2 de 5
Problme de reconnaissance
Un problme de reconnaissance est un problme qui consiste apporter une rponse "oui" ou
"non" une question.
A chaque problme doptimisation combinatoire, on peut associer un problme de
reconnaissance de la manire suivante.
Soit un problme doptimisation combinatoire:
Trouver s S | f(s) = min{f(s) | s S}.
Soit a un nombre, on dfinit le problme de reconnaissance associ:
Existe-t-il s S | f(s) a ?
Un problme doptimisation combinatoire est au moins aussi difficile que le problme de
reconnaissance associ. De plus, on peut gnralement prouver que le problme de
reconnaissance nest pas plus facile que le problme doptimisation combinatoire. En
dautres termes, cela signifie quun problme doptimisation combinatoire est souvent du
mme niveau de difficult que le problme de reconnaissance associ. Cela justifie que la
suite de ce chapitre ne concerne que les problmes de reconnaissance.
La classe NP
Parmi les problmes dcidables, les plus simples rsoudre sont regroups dans la classe NP.
Un problme appartient la classe NP si quelquun ayant la solution au problme peut
dmontrer que c' est la solution en un temps polynomial.Les autres problmes dcidables
sont considrs comme trs difficiles. La classe NP est galement dcompose en trois
3 de 5
catgories qui permettent didentifier les problmes les plus simples et les problmes les plus
compliqus de la classe.
La classe P
La classe P, qui regroupe les problmes les plus simples de la classe NP, contient les
problmes pour lesquels on connat au moins un algorithme polynomial pour les rsoudre.
Pour le reste de la classe NP, on nest pas sr quil nexiste pas un algorithme polynomial
pour rsoudre chacun de ses problmes. Ainsi, on sait que P est inclu dans NP mais on na
pas pu prouver que P n' est pas NP.
Rduction polynomiale
Soit deux problmes P1 et P2. On dit que P1 est rduit au problme P2 si on peut rsoudre P1
en utilisant un algorithme pour P2 comme sous-routine. Cette rduction est dite polynomiale
si lalgorithme pour P1 est polynomial en comptant lappel la sous-routine de P2 comme
une opration lmentaire.
P2 est au moins aussi difficile que P1. En effet, si P2 appartient la classe P, P1 y appartient
aussi, car lalgorithme ci-dessus est polynomial. Si P2 nest pas polynomial, rien nempche
P1 de ltre sil existe un algorithme polynomial pour le rsoudre.
La classe NP-Complet
La classe NP-Complet regroupe les problmes les plus difficiles de la classe NP. Elle
contient les problmes de la classe NP tels que nimporte quel problme de la classe NP leur
est polynomialement rductible. Entre eux, les problmes de la classe NP-Complet sont aussi
difficiles.
La classe NP-Difficile
La classe NP-Difficile regroupe les problmes (pas forcment dans la classe NP) tels que
nimporte quel problme de la classe NP leur est polynomialement rductible.
Tableau rcapitulatif
4 de 5
5 de 5
1 de 4
5. RECHERCHE
DU PLUS COURT CHEMIN
DEFINITIONS
Rseau
Un rseau est un graphe G = (X;U) auquel on associe une fonction d: U
arc fait correspondre sa "longueur". On note R = (X;U;d) un tel rseau.
IR qui chaque
Longueur
La longueur dun chemin (dune chane, dun circuit ou dun cycle) est la somme des
longueurs de chaque arc qui le compose. Par convention, un chemin (une chane, un circuit
ou un cycle) qui ne contient pas darc est de longueur nulle.
Circuit absorbant
Un circuit est absorbant si sa longueur est ngative.
Exemple
La longueur du circuit suivant est -1. Cest donc un circuit absorbant.
ALGORITHME DE DIJKSTRA
Cet algorithme dtermine les plus courts chemins dun point s tous les autres points
dun rseau R = (X;U;d). Il suppose que les longueurs sur les arcs sont positives ou
nulles. Lide de cet algorithme est de partager les noeuds en deux groupes: ceux dont on
connat la distance la plus courte au point s (ensemble S) et ceux dont on ne connat pas cette
distance (ensemble S). On part avec tous les noeuds dans S. Tous les noeuds ont une
distance infinie (p(x) = +oo) avec le point s, except le point s lui-mme qui a une distance
nulle (p(s) = 0). A chaque itration, on choisit le noeud x qui a la plus petite distance au point
s. Ce noeud est dplac dans S. Ensuite, pour chaque successeur y de x, on regarde si la
distance la plus courte connue jusqu lors entre s et y ne peut pas tre amliore en passant
par x. Si cest le cas, p(y) est modifie. Ensuite, on recommence avec un autre noeud.
Algorithme
Titre: Dijkstra
Entres: R = (X;U;d) un rseau, s un sommet.
Sorties: p() une fonction indiquant la plus courte distance qui spare un point de s, pred() une
fonction indiquant par quel arc on arrive un point si on emprunte le plus court chemin.
Variables intermdiaires: S et S deux sous-ensembles de sommets, x et y deux noeuds, sortie
un boolen.
Dbut
S
S
;
X;
pour tout x
X faire
p(x)
+oo;
pred(x)
nil;
fin pour;
p(s)
sortie
0;
faux;
tant que S
et non sortie faire
choisir x
S tel que p(x) = min{p(y) | y
sortie
(p(x) = +oo);
S};
2 de 4
S
S
{x};
S - {x};
S faire
Fin
Justification
Pour quun noeud x ait une distance p(x) diffrente de +oo , il faut quil ait un de ses
prdcesseurs dans S. De plus, p(x) est la plus petite distance de s x en empruntant
uniquement les noeuds de S. Supposons que p(x) soit la plus petite distance de tout
lensemble S. Supposons galement que le plus court chemin pour aller de s x passe par t
et y (cf. figure). Cela signifie que y est le prdcesseur de x. Il faudra donc que p(y) p(x).
Cependant, si le chemin le plus court pour aller de s x passe par t et y alors le chemin le
plus court pour aller de s y passe par t. Ce qui signifie que y connat sa plus courte distance
s. Malheureusement, elle est suprieure p(x) ce qui contredit lhypothse que p(x) est la
plus courte distance de S.
ALGORITHME DE DANTZIG
Cet algorithme dtermine la plus courte distance entre tous les couples de sommets dun
rseau R = (X;U;d). On suppose que le rseau ne contient pas de circuit absorbant. On
commence par numroter les noeuds dune manire quelconque. Ensuite, une matrice D de
taille n x n est construite indiquant pour chaque noeud la plus courte distance qui le spare
dun autre noeud. Chaque ligne et chaque colonne reprsentent donc un noeud. Lide est de
considrer un sous-rseau pour lequel on dtermine les plus courtes distances entre ses
noeuds. Ensuite, itrativement, on rajoute un noeud dans ce sous-rseau, on met les plus
courtes distances jour et on recommence jusqu ce que le sous-rseau soit le rseau luimme.
A litration k, le sous-rseau a k noeuds et ce sont ceux numrots de 1 k. A litration
k + 1, on ajoute le noeud k + 1 dans le sous-rseau. Les distances sont mises jour de la
manire suivante. Tout dabord on dtermine la plus courte distance entre le noeud k + 1 et
3 de 4
Cela veut dire que lon considre que pour aller de k + 1 i, on passe par un des noeuds de 1
k. On conserve la longueur du plus court chemin. De la mme manire, on dtermine la
plus courte distance entre nimporte quel noeud et le noeud k + 1.
D(i,k + 1)
Enfin, on met jour la plus courte distance de chaque noeud de 1 k vers chaque noeud de 1
k car peut tre que le plus court chemin entre deux de ces noeuds passent par k + 1.
D(i,j)
Algorithme
Titre: Dantzig
Entres: R = (X;U;d) un rseau.
Sorties: D une matrice contenant les plus courtes distances.
Variables intermdiaires: i, j et k des entiers.
Dbut
pour i
1 n faire
pour j
1 n faire
si i = j alors D(i,i)
sinon D(i,j)
+oo;
fin pour;
fin pour;
0;
pour k
1 n faire
pour i
1 k - 1 faire
D(k,i)
min{d(xk,xj) + D(j,i) | (xk;xj)
fin pour;
pour i
1 k - 1 faire
D(i,k)
min{D(i,j) + d(xj,xk) | (xj;xk)
fin pour;
U};
U};
pour i
1 k - 1 faire
pour j
1 k - 1 faire
D(i,j)
min{D(i,j) , D(i,k) + D(k,j)};
fin pour;
fin pour;
fin pour;
Fin
4 de 4
6. ORDONNANCEMENT, RECHERCHE
DU PLUS LONG CHEMIN
PROBLEMES D' ORDONNANCEMENT
Les problmes dordonnancement sont apparus au dpart dans la planification de grands
projets. Le but tait de gagner du temps sur leur ralisation. De tels projets sont constitus de
nombreuses tapes, galement appeles tches. Des relations temporelles existent entre ces
dernires. Par exemple:
Une tape doit commencer une date prcise;
Un certain nombre de tches doivent tre termines pour pouvoir en dmarrer une
autre;
Deux tches ne peuvent tre ralises en mme temps (elles utilisent une mme
machine par exemple);
Chaque tche ncessite une certaine quantit de main doeuvre. Il faut donc viter,
chaque instant, de dpasser la capacit totale de main doeuvre disponible.
Toutes ces contraintes ne sont pas simples prendre en compte dans la rsolution du
problme. Ici, nous allons nous intresser uniquement aux deux premiers types de contraintes.
On cherchera dterminer une planification, un ordonnancement des tapes qui minimise le
temps total de ralisation du projet. A partir de cette planification, nous verrons que le temps
de certaines tapes peut ventuellement tre modifi sans entraner un retard du projet, alors
que dautres, les tches dites "critiques", retardent entirement le projet au moindre retard
local.
METHODE PERT
Il existe deux grandes mthodes pour rsoudre le problme nonc ci-dessus. Il y a la
mthode amricaine CPM (Critical Path Method) avec sa variante PERT (Program
Evaluation and Review Technique) et la mthode franaise MPM (Mthode des Potentiels).
Nous nous intresserons ici uniquement la mthode PERT. En voici les grandes tapes.
1 de 5
a
b
c
d
e
f
g
La mthode PERT prconise de reprsenter le problme sous la forme dun graphe. Les
noeuds vont reprsenter des vnements et les arcs des dures sparant ces vnements. Tous
dabord, on dfini deux sommets D et F qui reprsentent respectivement le dbut et la fin du
projet. Ensuite, chaque tape est dcompose en deux vnements (i.e. deux noeuds),
reprsentant le dbut et la fin de ltape, et une dure (i.e. un arc).
Etape a de dure 5:
La succession de deux tapes consistera ajouter une tape fictive de dure nulle pour
indiquer que lvnement de fin de la premire tape et lvnement de dbut de la seconde
apparaissent au mme instant.
a prcde b:
Dans ce cas prcis, on peut fusionner les noeuds fa et db pour simplifier le graphe.
2 de 5
soient effectues. Toutes les tches antrieures sont effectues signifie quen suivant
nimporte quel chemin en partant de D, sa longueur (i.e. la dure totale des tches
parcourues) est infrieure la date de lvnement concern. Autrement dit, on recherche la
plus longue dure qui spare lvnement de D. Cela revient rechercher un plus long
chemin entre D et lvnement (cf. algorithme de Bellman ci-aprs). Dans notre exemple, on
obtient:
Finalement, on obtient pour chaque vnement la date laquelle il peut apparatre au plus tt.
Ce qui fournit la planification des tches qui aboutit la plus petite dure possible du projet.
Maintenant, partir de cette planification, on tente de dterminer les tches qui ne doivent
absolument pas tre retardes par rapport la planification obtenue sous peine de voir le
projet entirement retard.
3 de 5
ALGORITHME DE BELLMAN
La dtermination des dates au plus tt et des dates au plus tard est base sur la recherche dun
plus long chemin. Comme le graphe considr ne comporte pas de circuit, un algorithme
comme celui de Bellman, plus simple que celui de Dijkstra, est trs bien adapt. Il est noter
que la mthode de Bellman fonctionne aussi bien pour un plus court chemin que pour un plus
long chemin, contrairement celle de Dijkstra qui est valide uniquement pour les plus courts
chemins.
Lide de lalgorithme de Bellman pour la recherche de plus court chemin (ou de plus long
chemin) est tout fait semblable celle de Dijkstra. La diffrence rside dans le choix du
noeud chaque nouvelle itration. Dans lalgorithme de Dijkstra, cest le noeud avec la plus
courte distance qui est choisi alors que dans celui de Bellman, on choisit un noeud dont tous
les prdcesseurs ont dj t traits, do la ncessit de ne pas avoir de circuit. Donc, sans
plus de dtail, voici lalgorithme de Bellman pour la recherche dun plus court chemin.
Algorithme
Titre: Bellman
Entres: R = (X;U;d) un rseau, s un sommet.
Sorties: p() une fonction indiquant la plus courte distance qui spare un point de s, pred() une
fonction indiquant par quel arc on arrive un point si on emprunte le plus court chemin.
Variables intermdiaires: S et S deux sous-ensembles de sommets, x et y deux noeuds, sortie
un boolen.
Dbut
S
S
{s};
X - {s};
pour tout x
X faire
p(x)
+oo;
pred(x)
nil;
fin pour;
p(s)
sortie
0;
tant que
S
S
faux;
x
S | tous ses prdcesseurs
{x};
S faire
4 de 5
S - {x};
Fin
5 de 5
Il existe galement un seul noeud p qui na pas de successeurs, tous les autres en ont au
moins un. Ce noeud est appel la sortie du rseau, ou le puits.
Flot
Un flot f dans un rseau de transport est une fonction qui associe chaque arc u une quantit
f(u) qui reprsente la quantit de flot qui passe par cet arc, en provenance de la source et en
destination du puits.
Un flot doit respecter la rgle suivante: la somme des quantits de flot sur les arcs entrants
dans un noeud (autre que s et p) doit tre gale la somme des quantits de flot sur les arcs
sortants de ce mme noeud. En dautres termes, la quantit totale de flot qui entre dans un
noeud est gale la quantit totale de flot qui en sort.
Flot compatible
Un flot f est compatible avec un rseau si pour tout arc u, 0 f(u) c(u). Autrement dit, pour
chaque arc, le flot qui le traverse ne doit pas dpasser la capacit de larc.
Flot complet
Un flot f est complet si pour tout chemin allant de la source au puits, il y a au moins un arc
satur, i.e. le flot qui le traverse est gal la capacit de larc.
1 de 8
consiste trouver quelle est la quantit maximum de flot qui peut circuler de la source au
puits. Lalgorithme le plus connu pour rsoudre ce problme est celui de Ford et Fulkerson.
Nous verrons deux approches pour cette mthode. La premire est base sur la recherche
dune chane dans le rseau alors que la seconde construit un graphe "dcart" dans lequel on
recherche un chemin.
ALGORITHME DE FORD-FULKERSON,
CHAINE AUGMENTANTE
On part dun flot compatible. Le plus vident est le flot nul, i.e. pour tout arc u, f(u) = 0.
Ensuite, on cherche une chane reliant la source au puits telle que son flot peut tre augment.
Si on nen trouve pas, le problme est rsolu. Sinon, on augmente le flot sur cette chane.
Ensuite, on recommence chercher une chane augmentante et ainsi de suite. Une chane
augmentante, i.e. une chane pour laquelle le flot peut tre augment est une chane pour
laquelle les arcs dans le sens direct nont pas atteint leur limite maximum et les arcs en sens
indirect ont un flot non nul qui les traverse. Laugmentation de flot maximum pour une
chane est le minimum des carts entre le flot courant et le flot maximal pour les arcs directs
ou le flot courant pour les arcs indirects. Autrement dit, une chane C est augmentante si:
pour tout arc u direct, f(u) < c(u),
C et u sens direct}
{f(u) | u
C et u sens indirect})
Exemple
Voici une chane augmentante de A E faisant partie dun rseau de transport.
2 entre B et C,
1 entre C et D,
5 entre D et E.
2 de 8
3 de 8
On remarque que pour les arcs en sens inverse, augmenter le flot signifie rduire le flot dans
le sens direct. Entre D et C, le flot est rduit de 1 pour permettre larrive dune unit de flot
sur C par B tout en conservant lquilibre du noeud. D ayant une unit de trop, son quilibre
nest pas respect. Cest pourquoi une unit de flot supplmentaire circule entre D et E.
Algorithme principal
Titre: FordFulkerson1
Entres: R = (X;U;c) un rseau, s et p deux sommets.
Sorties: f() une fonction indiquant le flot circulant travers chaque arc.
Variables intermdiaires: C un sous-ensemble darcs, u un arc, m et a deux rels.
Dbut
pour tout arc u
U faire f(u)
0;
tant que
une chane C augmentante entre s et p
m
+oo;
pour tout u
C faire
si u en sens direct alors a
si a < m alors m
a;
fin pour;
pour tout u
C faire
si u en sens direct alors f(u)
fin pour;
fin tant que;
R faire
f(u);
f(u) - m;
Fin
Algorithme
Titre: RechercherChaineAugmentante
Entres: R = (X;U;c) un rseau, s et p deux sommets, f() le flot courant.
Sorties: pred() une fonction indiquant par quel arc on arrive un noeud donn partir de s.
Variables intermdiaires: X un sous-ensemble de noeuds, accessible() une fonction qui
indique si un noeud est accessible partir de s, x et y deux noeuds.
Dbut
X
{s};
pour tout x
X faire
accessible(x)
faux;
pred(x)
nil;
fin pour;
marqu(s)
vrai;
tant que X
et non accessible(p) faire
choisir x
X;
X
X - {x};
pour tout u = (x;y)
U faire
si non accessible(y) et f(u) < c(u) alors
X
X
{y};
pred(y)
x;
accessible(y)
vrai;
fin si;
fin pour;
pour tout u = (y;x)
U faire
si non accessible(y) et f(u) > 0 alors
X
X
{y};
pred(y)
x;
accessible(y)
vrai;
fin si;
fin tant que;
Fin
ALGORITHME DE FORD-FULKERSON,
GRAPHE D' ECART
Comme pour la mthode prcdente, on part dun flot compatible. Ensuite, on construit un
graphe dcart partir de ce flot. Ce graphe dcart reprsente les modifications de flot
possibles sur chaque arc. Sur ce graphe, les noeuds ont exactement la mme signification que
dans le rseau de transport. Par contre, un arc indiquera de combien il est possible
daugmenter le flot entre deux noeuds. Ainsi, pour un arc u = (x;y), on crera dans le graphe
dcart:
un arc de x y de capacit c((x;y)) = c(u) - f(u) si c(u)
f(u),
0.
4 de 8
min{c(u) | u
C}
Exemple
Voici un rseau transport dans lequel circule un flot.
3 entre B et C,
1 entre C et D,
4 entre D et F,
2 entre F et G.
rduire de 1 entre C et B,
5 de 8
augmenter de 1 entre C et D,
augmenter de 1 entre D et F,
augmenter de 1 entre F et G.
Algorithme principal
Titre: FordFulkerson2
Entres: R = (X;U;c) un rseau, s et p deux sommets.
Sorties: f() une fonction indiquant le flot circulant travers chaque arc.
Variables intermdiaires: G = (X;U) un graphe, c' ()une fonction indiquant la capacit dun
arc de G, a() une fonction indiquant quel arc de R correspond un arc de G, C un sousensemble darcs, u un arc, m un rel.
Dbut
pour tout arc u
U faire f(u)
construire le graphe dcart G;
0;
tant que
un chemin C entre s et p
G faire
m
+oo;
pour tout u
C faire si c(u) < m alors m
pour tout u
C faire
si a(u) est direct alors f(a(u))
sinon f(a(u))
f(a(u)) - m;
fin pour;
c(u);
f(a(u)) + m;
6 de 8
Fin
Algorithme
Titre: ConstruireGrapheEcart
Entres: R = (X;U;c) un rseau, f() le flot courant sur R.
Sorties: G = (X;U) le graphe dcart, c() une fonction indiquant la capacit dun arc de G, a
() une fonction indiquant quel arc de R correspond un arc de G.
Variables intermdiaires: u un arc, x et y deux noeuds, m un rel.
Dbut
pour tout u = (x;y)
U faire
si f(u) > 0 alors
U
U
{(y;x)};
c((y;x))
f(u);
a((y;x))
u;
fin si;
si f(u) < c(u) alors
U
U
{(x;y)};
c'((x;y))
c(u) - f(u);
a((x;y))
u;
fin si;
fin pour;
Fin
Algorithme
Titre: RechercherChemin
Entres: R = (X;U;c) un rseau, s et p deux sommets, f() le flot courant.
Sorties: pred() une fonction indiquant par quel arc on arrive un noeud donn partir de s.
Variables intermdiaires: X un sous-ensemble de noeuds, accessible() une fonction qui
indique si un noeud est accessible partir de s.
7 de 8
Dbut
X
{s};
pour tout x
X faire
accessible(x)
faux;
pred(x)
nil;
fin pour;
accessible(s)
vrai;
tant que X
et non accessible(p) faire
choisir x
X;
X
X - {x};
pour tout u = (x;y)
U faire
si non accessible(y) alors
X
X
{y};
pred(y)
x;
accessible(y)
vrai;
fin si;
fin pour;
fin tant que;
Fin
8 de 8
8. PROGRAMMATION LINEAIRE
PRESENTATION
La programmation linaire est un outil trs puissant de la recherche oprationnelle. Cest un
outil gnrique qui peut rsoudre un grand nombre de problmes. En effet, une fois un
problme modlis sous la forme dquations linaires, des mthodes assurent la rsolution
du problme de manire exacte. On distingue dans la programmation linaire, la
programmation linaire en nombres rels, pour laquelle les variables des quations sont dans
IR+ et la programmation en nombres entiers, pour laquelle les variables sont dans IN. Bien
entendu, il est possible davoir les deux en mme temps. Cependant, la rsolution dun
problme avec des variables entires est nettement plus complique quun problme en
nombres rels.
Une des mthodes les plus connues pour rsoudre des programmes linaires en nombre rels
est la mthode du Simplex. En thorie, elle a une complexit non polynomiale et est donc
suppose peu efficace. Cependant, en pratique, il savre au contraire quil sagit dune
bonne mthode.
De plus, de nombreux logiciels intgrant cette mthode existent. Certains sont utiliss via une
interface graphique alors que dautres permettent une communication par fichiers ce qui
autorise l'u tilisation du programme de mani
re cache dans le dveloppement dun autre
logiciel.
Programme linaire
La programmation linaire permet la rsolution dun programme linaire. Un programme
linaire est un systme dquations ou dinquations appeles "contraintes" qui sont linaires
(cest--dire que les variables ne sont pas leves au carr, ne servent pas dexposant, ne sont
pas multiplies entre elles...). Et partir de ces contraintes, on doit optimiser une fonction
galement linaire appele objectif.
Exemples
Contraintes linaires:
5x1 - 2x2 + 4x3 = 8
x1 + 3x2 + 8x3 25
9x1 + 6x2 - 3x3 17
Contraintes non linaires:
5x12 + 2x2 + 4x3 = 8
1 de 8
x1x2 + 8x3
25
Objectifs:
max: z = 3x1 - 2x2 + 8x3
min: z = -3x1 + x3
(signifie maximiser z)
(signifie minimiser z)
Forme canonique
Pour rsoudre un programme linaire de manire automatique, il faut quil ait une certaine
forme que lon appelle "canonique". Dans ce cours, on a choisi la forme canonique suivante:
un programme linaire na que des contraintes dinfriorit et lon tente de maximiser la
fonction objectif. De plus toutes les variables sont positives.
Exemple
Le programme linaire suivant est sous forme canonique.
max: z = 3x1 - 2x2 + 8x3
sous:
5x1 - 2x2 + 4x3 8
x1 + 3x2 + 8x3 25
9x1 + 6x2 - 3x3 17
x1 , x2 , x3 0
Transformations
Tout programme linaire quelconque peut tre ramen une forme canonique. Voici
quelques exemples de transformations possibles.
Si une variable x1 est ngative, on la remplace par une variable positive x1 = -x1. Par
exemple:
max: z = 3x1 - 2x2 + 8x3
sous:
5x1 - 2x2 + 4x3 8
x1 + 3x2 + 8x3 25
9x1 + 6x2 - 3x3 17
x1 , x2 0 et x3 0
sous:
5x1 - 2x2 - 4x3 8
x1 + 3x2 - 8x3 25
9x1 + 6x2 + 3x3 17
x1 , x2 , x3 0
Si une variable na pas de contrainte de signe, on la remplace par deux variables positives x1
2 de 8
sous:
5x1 - 2x2 + 4x3 8
x1 + 3x2 + 8x3 25
9x1 + 6x2 - 3x3 17
x1 , x2 0
sous:
5x1 - 2x2 + 4x3 - 4x3 8
x1 + 3x2 + 8x3 - 8x3 25
9x1 + 6x2 - 3x3 + 3x3 17
x1 , x2 , x3 , x3 0
sous:
5x1 - 2x2 + 4x3 8
x1 + 3x2 + 8x3 25
9x1 + 6x2 - 3x3 17
x1 , x2 , x3 0
sous:
5x1 - 2x2 + 4x3 8
x1 + 3x2 + 8x3 25
-9x1 - 6x2 + 3x3 -17
x1 , x2 , x3 0
Application
3 de 8
Une entreprise fabrique 2 produits X et Y. Pour sa conception, chaque produit fini ncessite 3
produits intermdiaires A, B et C. Pour fabriquer un produit X, on a besoin de 2 produits A,
de 2 produits B et de 1 produit C. De mme, pour fabriquer un produit Y, on a besoin de 3
produits A, de 1 produit B et de 3 produits C. En outre, lentreprise dispose dune quantit
limite de produits A, B et C. Elle a 180 produits A, 120 produits B et 150 produits C.
Sachant que le prix de revient de X est 3 francs et que celui de Y est de 4 francs, combien de
produits X et Y faut-il fabriquer pour maximiser le profit ?
On modlise ce problme par un programme linaire. Soit x et y les quantits de produits X
et Y fabriqus.
La quantit totale de produits A utilise est 2x + 3y. Cette quantit ne doit pas dpasser 180,
do la premire contrainte.
2x + 3y
180
120
150
Enfin, on tente de maximiser le profit qui est le total des bnfices sur la vente des produits X
plus celui des produits Y.
max: 3x + 4y
Le programme linaire est donc le suivant.
max: z = 3x + 4y
sous:
2x + 3y 180
2x + y 120
x + 3y 150
x,y 0
(A)
(B)
(C)
REPRESENTATION GRAPHIQUE
On peut reprsenter le problme dans un espace deux dimensions.
4 de 8
Les solutions admissibles sont reprsentes par la zone grise (a,b,c,d,e). Ce sont les
solutions qui satisfont les contraintes. Considrons maintenant la fonction z = 3x + 4y. Pour
z = 120, on a une droite D1, 3x + 4y = 120, qui reprsente les solutions pour lesquelles le
profit vaut 120. Si z = 180, on a une autre droite D2, 3x + 4y = 180, qui reprsente les
solutions pour lesquelles le profit vaut 180. On remarque que D2 est parallle D1 et on
saperoit facilement quen dplaant la droite vers le haut on augmente le profit z. Donc
pour rsoudre graphiquement le problme, on va faire "glisser" la droite vers le haut jusqu
ce quelle ait un minimum de points communs avec la surface grise. Le point restant ici est
d. Il reprsente la solution pour laquelle le profit est maximum. En effet, si on prend un profit
plus important, reprsent par exemple par D4, on saperoit que toutes les solutions sont en
dehors de la surface grise. Donc la solution du problme est de produire 45 produits X et 30
produits Y pour obtenir le profit maximum de z = 3x + 4y = 255 francs.
5 de 8
LA METHODE DU SIMPLEX
Globalement, la mthode du Simplex va se dplacer le long de la forme (a,b,c,d,e), de
sommet en sommet jusqu trouver le meilleur point. Pour essayer de mieux comprendre
comment fonctionne cette mthode, considrons le problme de production prcdent. Dans
un premier temps, les contraintes sont ramenes des galits en introduisant de nouvelles
variables de la manire suivante.
max: z = 3x + 4y
sous:
2x + 3y = 180 - u
2x + y = 120 - v
x + 3y = 150 - w
x,y,u,v,w 0
(A)
(B)
(C)
Ensuite, on va se placer sur le point a = (0;0) qui est une solution admissible du problme.
Dans un cas plus gnral, il faut noter que trouver une solution admissible pour dmarrer la
mthode du Simplex nest pas forcment vident. On a alors:
x=0
y=0
u = 180
v = 120
w = 150
6 de 8
le profit z. Donc on va augmenter lune des deux variables au maximum. Par exemple,
prenons y et utilisons les contraintes pour exprimer y en fonction de toutes les autres
variables.
y = 60 - 1/3u - 2/3x
y = 120 - v - 2x
y = 50 - 1/3w - 1/3x
y
y
y
60
120
50
(A)
(B)
(C)
Comme toutes les variables sont positives, on peut en dduire, partir de chaque contrainte,
une borne maximum pour y (cf. ci-dessus). y doit satisfaire les 3 contraintes. Ici la plus
grande valeur de y possible est 50. A laide de la contrainte C, on remarque que x doit rester
0 et que w est forc 0. Maintenant, les variables nulles sont x et w. Quant aux autres
variables, on sarrange pour les exprimer uniquement avec x et w de manire obtenir leur
valeur. On fait de mme pour le profit z.
y = 50 - 1/3x - 1/3w
u = 180 - 2x - 3y = 30 - x + w
v = 120 - 2x - y = 70 - 5/3x + 1/3w
= 50
= 30
= 70
x
w
=0
=0
= 200
(C)
(A)
(B)
x
x
x
30
42
150
(A)
(B)
(C)
Ici, on prendra x = 30, la valeur maximum quil peut atteindre. Les variables qui sont nulles
sont u et w daprs la contrainte A. On calcule les nouvelles valeurs des autres variables.
x = 30 - u + w
v = 70 - 5/3 (30 - u + w) + 1/3w = 20 + 5/3u - 4/3w
y = 50 - 1/3 (30 - u + w) - 1/3w = 40 + 1/3u - 2/3w
= 30
= 20
= 40
u
w
=0
=0
= 250
(A)
(B)
(C)
w
w
-30
15
(A)
(B)
7 de 8
60
8 de 8
(C)
Ici, on prendra w = 15, la valeur maximum quil peut atteindre. Les variables qui sont nulles
sont u et v daprs la contrainte B. On calcule les nouvelles valeurs des autres variables.
w = 15 + 5/4u - 3/4v
x = 30 - u + (15 + 5/4u - 3/4v) = 45 + 1/4u - 3/4v
y = 40 + 1/3u - 2/3 (15 + 5/4u - 3/4v) = 30 - 1/2u + 1/2v
= 15
= 45
= 30
u
v
=0
=0
= 255
(B)
(A)
(C)