Sunteți pe pagina 1din 8

Examen de recherche operationnelle Corrige

Marc Roelens
Decembre 2006

1 Ordonnancement de taches
1.1
On dresse le tableau des contraintes de precedence :
Tache A B C D E F G H I J
Prec. J H A, H A, B C, I D D, F
On determine successivement :
les taches de niveau 0 (celles qui nont pas dantecedent) : ce sont C, D et F (que lon peut numeroter
dans cet ordre) ;
les taches de niveau 1 (celles qui nont que des antecedents de niveau 0) : ce sont I et J (que lon
numerote dans cet ordre) ;
les taches de niveau 2 (celles qui nont que des antecedents de niveau 0 ou 1) : ce sont A et H (que
lon numerote dans cet ordre) ;
les taches de niveau 3 (celles qui nont que des antecedents de niveau 0, 1 ou 2) : ce sont B et E (que
lon numerote dans cet ordre) ;
les taches de niveau 4 (celles qui nont que des antecedents de niveau 0, 1, 2 ou 3) : il ne reste plus
que G !
Voici donc le tableau des taches avec niveau et numero dordre :
Tache A B C D E F G H I J
Prec. J H A, H A, B C, I D D, F
Niv. 2 3 0 0 3 0 4 2 1 1
No 6 8 1 2 9 3 10 7 4 5
Comme on a reussi a numeroter tous les sommets, cest que le graphe de precedence est sans circuit, et la
numerotation des sommets constitue un tri topologique (si la tache X est avant la tache Y, alors le numero
de X est inferieur au numero de Y).
Une representation par niveau possible pour ce graphe est la suivante (on a ajoute des taches fictives
correspondant au debut et a la fin des travaux) :

C H B

Db D I E G Fin

F J A

niveau 0 niveau 1 niveau 2 niveau 3 niveau 4

1
1.2
On porte sur chaque arc du graphe de precedence la duree de la tache dont cet arc est issu, et on sait que
lon calcule la date de debut au plus tot en determinant le chemin le plus long depuis le debut des travaux ;
ceci permet de trouver la duree minimale dexecution qui est la date de debut au plus tot de la tache fictive
representant la fin des travaux.
Ensuite, on determine la date de debut au plus tard en calculant le chemin le plus long depuis chaque
sommet jusqua cette tache fictive de fin des travaux.
Comme le graphe est ordonne par niveaux, ces calculs se font par niveaux croissants pour les dates de
debut au plus tot, par niveaux decroissants pour les dates de debut au plus tard. Le resultat est resume sur
le graphe suivant :
0,5 8,9 13,14
4 5
C H B
5 8
0,0 5,6 3 22,31 22,22 32,32
5 10 Fin
Db D I E G
5
10 10
0,3 5,5 12,12 1
7
F 2 J A

Les dates de debut au plus tot et au plus tard sont indiquees (separees par des virgules) au dessus des taches.
On obtient ainsi les reponses :
la duree minimale dexecution est de 32 unites ;
le chemin critique est
Deb D J A G Fin

1.3
Le graphe PERT est decrit ci-apres : il comprend 8 etapes et deux taches fictives (en pointilles), de
durees nulles, servant a representer les contraintes de precedence.
[8,9] H (5) [13,14] B (8) [22,22]
G (10)
C (4)
[0,0] I (3)
D (5) [5,5] J (7) [12,12] A (10) [22,22] E (1) [32,32]
F (2)

Pour chaque etape, on a indique la date au plus tot et la date au plus tard (entre crochets). Le chemin critique
est (heureusement !) le meme que celui calcule par le graphe de precedence.
On peut alors calculer les marges libres, totales et certaines, dont on rappelle la definition. Pour toute
etape ei , on note ti la date au plus tot de cette etape, et ti la date au plus tard. Alors, pour une tache Xj de
duree dj , comprise entre letape k (avant) et letape l (apres), on definit :
MT (Xj ) = tl tk dj (marge totale de Xj ) ;
ML (Xj ) = tl tk dj (marge libre de Xj ) ;
MC (Xj ) = tl tk dj (marge certaine de Xj ).
On obtient les resultats suivants :
Tache A B C D E F G H I J
MT 0 1 5 0 9 3 0 1 1 0
ML 0 1 4 0 9 3 0 0 0 0
MC 0 0 4 0 9 3 0 0 0 0

2
1.4
On voit sur le tableau precedent que la marge totale de H est de 1 unite : donc, laugmentation de 1
unite de la duree de H va resorber cette marge (sans pour autant decaler la fin du projet). Si H augmente a
nouveau de 1 unite, alors on obtient un nouveau chemin critique
Deb D I H B G Fin
et la duree minimale dexecution du projet passe a 33 unites de temps.

2 Allocation de ressources
2.1
On note donc xj la quantite de cageots placee dans le magasin j. Ces variables xj sont entieres, posi-
tives, inferieures a la valeur n. Le benefice global (que lon cherche a maximiser) est donc :
m
X
F (x1 , , xm ) = b(xj , j)
j=1

en respectant bien sur la contrainte que le nombre total de cageots est n, cest-a-dire :
m
X
xj = n
j=1

Cest donc un probleme de programmation dynamique.

2.2
On note alors, pour 0 i n et 0 j m, P (i, j) le profit maximum obtenu en vendant i cageots
dans les j premiers magasins. On a bien evidemment :

(i {0..n})(P (i, 1) = b(i, 1))

Ensuite, pour j 2, pour placer optimalement i cageots dans les j premiers magasins, on peut dire lon
place xj i cageots dans le magasin j et i xj de facon optimale dans les j 1 premiers magasins. On
choisit bien sur la valeur de xj qui maximise la somme des benefices obtenus. En clair :

P (i, j) = max b(xj , j) + P (i xj , j 1)


0xj i

2.3
Dapres ce que lon vient de demontrer, on connat les valeurs de P (i, 1) pour 0 i n (identiques
aux b(i, 1)). Puis, on peut calculer grace a la propriete P (i, 2) pour 0 i n, . . .puis P (i, j 1) pour
0 i n, et enfin ce que lon cherche : P (n, m). On a affaire a un algorithme classique de programmation
dynamique.
En regardant plus attentivement la formule de recurrence, on constate que pour calculer P (i, j), on a
besoin de connatre uniquement les valeurs de P (k, j 1) pour 0 k i. Ceci permet de nutiliser quun
seul tableau pour calculer les valeurs de P :
pour i allant de 0 a n
P(i) = b(i,1)
pour j allant de 2 a m
pour i allant de n a 0
kmin = 0 ; vkmin = P(i)+b(0,j)
pour k allant de 0 a i

3
vk = P(i-k)+b(k,j)
si vk est superieur a vkmin
kmin = k ; vk = vkmin
finsi
finpour(k)
P(i,j) = vkmin
finpour(i)
finpour(j)
afficher P(n,m)
Cet algorithme permet de determiner P (n, m) (dailleurs, dans la derniere boucle, il nest pas necessaire
de calculer P (i, m) pour i < n !) : on souhaite egalement conserver la repartition correspondante ! Il suffit
pour cela de memoriser les valeurs de vkmin en cours dalgorithme. En termes de complexite, on a ainsi :
une complexite en espace proportionnelle a nm (on conserve pour tout i le benefice et la repartition
optimale, de taille m) ;
une complexite proportionnelle a n2 m (voir les trois boucles imbriquees de lalgorithme).

2.4
Voici lalgorithme detaille sur lexemple :
calcul de P(6,2) : on determine les repartitions possibles
0 cageots sur le magasin 2, 6 sur le premier magasin : 0 + 4 = 4
1 cageots sur le magasin 2, 5 sur le premier magasin : 4 + 4 = 8
2 cageots sur le magasin 2, 4 sur le premier magasin : 6 + 4 = 10
3 cageots sur le magasin 2, 3 sur le premier magasin : 7 + 4 = 11
4 cageots sur le magasin 2, 2 sur le premier magasin : 8 + 4 = 12
5 cageots sur le magasin 2, 1 sur le premier magasin : 8 + 3 = 11
6 cageots sur le magasin 2, 0 sur le premier magasin : 8 + 0 = 8
P(6,2) = 12, repartition optimale 2+4
calcul de P(5,2) : on determine les repartitions possibles
0 cageots sur le magasin 2, 5 sur le premier magasin : 0 + 4 = 4
1 cageots sur le magasin 2, 4 sur le premier magasin : 4 + 4 = 8
2 cageots sur le magasin 2, 3 sur le premier magasin : 6 + 4 = 10
3 cageots sur le magasin 2, 2 sur le premier magasin : 7 + 4 = 11
4 cageots sur le magasin 2, 1 sur le premier magasin : 8 + 3 = 11
5 cageots sur le magasin 2, 0 sur le premier magasin : 8 + 0 = 8
P(5,2) = 11, repartition optimale 2+3
calcul de P(4,2) : on determine les repartitions possibles
0 cageots sur le magasin 2, 4 sur le premier magasin : 0 + 4 = 4
1 cageots sur le magasin 2, 3 sur le premier magasin : 4 + 4 = 8
2 cageots sur le magasin 2, 2 sur le premier magasin : 6 + 4 = 10
3 cageots sur le magasin 2, 1 sur le premier magasin : 7 + 3 = 10
4 cageots sur le magasin 2, 0 sur le premier magasin : 8 + 0 = 8
P(4,2) = 10, repartition optimale 2+2
calcul de P(3,2) : on determine les repartitions possibles
0 cageots sur le magasin 2, 3 sur le premier magasin : 0 + 4 = 4
1 cageots sur le magasin 2, 2 sur le premier magasin : 4 + 4 = 8
2 cageots sur le magasin 2, 1 sur le premier magasin : 6 + 3 = 9
3 cageots sur le magasin 2, 0 sur le premier magasin : 7 + 0 = 7
P(3,2) = 9, repartition optimale 1+2
calcul de P(2,2) : on determine les repartitions possibles
0 cageots sur le magasin 2, 2 sur le premier magasin : 0 + 4 = 4
1 cageots sur le magasin 2, 1 sur le premier magasin : 4 + 3 = 7
2 cageots sur le magasin 2, 2 sur le premier magasin : 6 + 0 = 6

4
P(2,2) = 7, repartition optimale 1+1
calcul de P(1,2) : on determine les repartitions possibles
0 cageots sur le magasin 2, 1 sur le premier magasin : 0 + 3 = 3
1 cageots sur le magasin 2, 0 sur le premier magasin : 4 + 0 = 4
P(1,2) = 4, repartition optimale 0+1
calcul de P(0,2) : on determine les repartitions possibles
0 cageots sur le magasin 2, 0 sur le premier magasin : 0 + 0 = 0
P(0,2) = 0, repartition optimale 0+0
calcul de P(6,3) : on determine les repartitions possibles
0 cageots sur le magasin 3, 6 sur les deux premiers magasins : 0 + 12 = 12
1 cageots sur le magasin 3, 5 sur les deux premiers magasins : 2 + 11 = 13
2 cageots sur le magasin 3, 4 sur les deux premiers magasins : 4 + 10 = 14
3 cageots sur le magasin 3, 3 sur les deux premiers magasins : 6 + 9 = 15
4 cageots sur le magasin 3, 2 sur les deux premiers magasins : 7 + 7 = 14
5 cageots sur le magasin 3, 1 sur les deux premiers magasins : 8 + 4 = 12
6 cageots sur le magasin 3, 0 sur les deux premiers magasins : 9 + 0 = 9
P(6,3) = 15, repartition optimale 1+2+3
Ainsi, le grossiste doit placer 1 cageot dans le premier magasin, 2 dans le second magasin, 3 dans le
troisieme magasin : son benefice (maximal) est de 15.

3 Production a optimiser
3.1
On note x1 et x2 les quantites de produits P1 et P2 . Ainsi, on cherche a maximiser le produit de la
vente, cest-a-dire la quantite :
F (x1 , x2 ) = 40x1 + 50x2
sachant que lon doit bien sur respecter les contraintes de stock des ingredients A, B et C :

5 x1 + 4 x2 80
x1 + 2 x2 24
3 x1 + 2 x2 36

On a affaire a un (classique) probleme de programmation lineaire.

3.2
Comme on na que deux variables, une resolution graphique (planaire) est donc possible. La figure 1
reprend cette resolution graphique.
Sur ce graphique, on a trace les droites de contrainte, le polytope [O,X1,X,X2] des solutions admissibles
(solutions verifiant les contraintes, en hachure), et une droite disobenefice (en pointilles). La solution
optimale est le point du polytope par lequel passe une parallele a la droite disobenefice qui est la plus
eloignee possible de lorigine : ce point est le point X de la figure.
Pour determiner precisement ce point, on remarque quil est lintersection des droites de contraintes
relatives a B et C : cest donc la solution du systeme lineaire :

x1 + 2 x2 = 24
3 x1 + 2 x2 = 36

qui donne comme solution optimale :

x1 = 6
x2 = 9
F = 6 40 + 9 50 = 690

5
x2

20

D(A)

D(C)

10 X2
1111111
0000000
0000000
1111111 X

0000000
1111111
0000000
1111111
X

0000000
1111111
D(B)
x1
O 10 X1 20
droite disobnfice

F IG . 1 Resolution graphique

3.3
On va maintenant resoudre le probleme par la methode du simplexe. On sait que par cette methode, on
se deplace sur les sommets du polytope des solutions admissibles : ainsi, a partir du sommet O, on veut
aboutir au sommet X. Que lon passe par X1 ou par X2, il suffit dans les deux cas de deux etapes, ce qui
explique pourquoi on aura trois tableaux. Voici les tableaux successifs en prenant comme critere de choix
de colonne celui du coefficient maximal pour la fonction economique.
On introduit donc 3 variables decart yA , yB et yC (qui representent les quantites non utilisees des
ingredients A, B et C), et le tableau initial du simplexe secrit alors :

x1 x2 yA yB yC
yA 5 4 1 0 0 80
yB 1 2 0 1 0 24
yC 3 2 0 0 1 36
40 50 0 0 0 F

Ce tableau correspond a la solution initiale (x1 = 0, x2 = 0, yA = 80, yB = 24, yC = 36), qui est
geometriquement representee par le sommet O.
Le choix du pivot se fait alors :
en determinant la colonne ou le coefficient est maximal dans la fonction economique : cest la co-
lonne de x2 ;
pour cette colonne, et pour chaque ligne, on calcule le quotient entre la valeur du second membre
(sil est positif) et le coefficient de la ligne (sil est non nul) :
pour la ligne yA , on obtient le quotient 80 4 = 20 ;
pour la ligne yB , on obtient le quotient 24 2 = 12 ;
pour la ligne yA , on obtient le quotient 36 2 = 18 ;
on retient comme pivot la valeur realisant le minimum, soit ici la ligne yB
On dit que yB sort de la base et que x2 entre dans la base. Cela signifie que lon passe de la solution
initiale a une nouvelle solution en se deplacant sur larete [O ;X2] : on cherche le point le plus eloigne sur

6
cette arete qui est donc X2. On obtient le nouveau tableau :
x1 x2 yA yB
yC
yA 3 0 1 20 32
1 1
x2 2 1 0 2 0 12
yC 2 0 0 1 1 12
15 0 0 25 0 F 600
correspondant a la nouvelle solution (x1 = 0, x2 = 12, yA = 32, yB = 0, yC = 12) de benefice 600.
Comme il reste un coefficient positif dans la fonction economique, ce nest pas encore loptimum. On
choisit a nouveau le pivot selon les memes regles : cest la colonne de x1 (qui va donc entrer dans la base),
et la ligne de yC (qui va donc sortir de la base). On obtient le tableau final :
x1 x2 yA yB yC
yA 0 0 1 12 23 14
3
x2 0 1 0 4 41 9
x1 1 0 0 12 1
2 6
0 0 0 35
2 15
2 F 690
correspondant a la nouvelle solution (x1 = 6, x2 = 9, yA = 14, yB = 0, yC = 0) de benefice 690. Comme
les coefficients de la fonction economique sont maintenant negatifs, on est bien a loptimum (on retrouve
le point X du graphique).

3.4
On peut reecrire les equations du probleme au voisinage de loptimum trouve (cest le tableau final du
simplexe !) :
yA = 14 + 21 yB + 32 yC



x2 = 9 34 yB + 14 yC


x1 = 6 + 12 yB 12 yC
F = 690 35 15
2 yB 2 y C

Comme on utilise toute la quantite de lingredient C disponible, on peut se demander comment loptimum
va evoluer si on augmente cette quantite. Lhypothese essentielle est la suivante : si laugmentation est petite
(), les pivots vont rester les memes, et on peut donc deduire la solution optimale du nouveau probleme a
partir de la solution optimale de lancien probleme en affectant la valeur a la variable yC .
On lit sur le tableau final du simplexe comment vont varier les differentes variables :
yA diminue de 32 ;
x2 diminue de 14 ;
x1 augmente de 12 ;
F augmente de 15 2 .
Ceci permet de calculer la valeur maximale du : cest celle qui provoquera lannulation de la premiere
variable. Dans notre cas :
x1 augmente donc ne peut sannuler ;
yA sannule pour une valeur de de 14 28
3 = 3 ;
2
9
x2 sannule pour une valeur de de 1 = 36.
4
28
On en deduit que la valeur maximale est valeur limite pour laquelle il y a alors annulation de yA . Ceci
3 ,
explique pourquoi lenonce indiquait :
quelle quantite supplementaire de C faut-il acheter pour epuiser completement les 80 kg de
A?
On obtient alors comme nouvelle solution optimale :
yA = 14 32 28


3 =0
x2 = 9 14 28 3 = 3
20


x1 = 6 + 2 3 = 32
1 28
3
F = 690 + 15 28
2 3 = 760

7
Graphiquement parlant, augmenter la quantite de lingredient C revient a decaler la droite D(C) pa-
rallelement a elle-meme en leloignant de lorigine : on voit alors que le point correspondant a la solution
optimale se deplace sur la droite D(B) en se rapprochant du point X. La limite est atteinte lorsque les
trois droites D(A), D(B) et D(C) deviennent concourantes : cest le point X correspondant a la nouvelle
solution !
Cette operation est-elle rentable ? On voit que la fonction economique augmente proportionnellement
a laugmentation de la quantite de lingredient C, le rapport etant de 15 2 : ainsi, si le prix au kg de C est
inferieur a cette valeur, loperation est rentable ; si le prix est superieur, elle ne lest pas.

S-ar putea să vă placă și