Recherche Opérationnelle
Dualité
3. PROLONGEMENT PROLONGEMENT DE LA PROGRAMMATION LINÉAIRE LINÉA IRE : DUALITÉ Au chapitre précédent, on a appris à résoudre des problèmes de programmation linéaire à l’aide de la méthode du simplexe. Toutefois, la résolution du problème à l’aide de la méthode du simplexe n’est que le point de départ de toute recherche opérationnelle basée sur un modèle normatif linéaire. Ce modèle est une représentation simplifiée de la réalité. La solution optimale du modèle n’est pas nécessairement la solution optimale du problème réel. Il faut donc étudier la solution obtenue en détail avant de l’implanter. Mais avant de pouvoir entrer dans le cœur du sujet, il faut examiner un aspect important de la programmation linéaire : la dualité. 3.1 3.1
Programmes lin éaires éaires duals
À tout programme linéaire (appelé primal ), ), lui correspond un autre programme linéaire (appelé dual ), ), intimement lié, impliquant les mêmes données et dont il y un lien étroit entre les solutions optimales. L’exemple suivant illustre bien cette propriété : Primal
Dual
⎧ Max Z = 8 x1 + 6 x2 ⎪ sujet à : ⎪ ⎪⎪5 x1 + 3 x2 ≤ 3000 ⎨ ⎪2 x1 + 3 x2 ≤ 2400 ⎪ x1 + 3 x2 ≤ 1800 ⎪ ⎪⎩ x1 , x2 ≥ 0
⎧ Min W = 3000 y1 + 2400 y2 + 1800 y3 ⎪ ⎪⎪ sujet à : ⎨5 y1 + 2 y2 + y3 ≥ 8 ⎪3 y + 3y + 3y ≥ 6 2 3 ⎪ 1 ⎪⎩ y1 , y2 , y3 ≥ 0
Ces programmes sont ainsi caractérisés par : la fonction économique d’un des deux problèmes est maximisée et celle de l’autre est minimisée. Dans le problème de maximisation on a des contraintes de type ‘’ ≤ ’’ et dans le problème de minimisation on a des contraintes de type ‘’ ≥ ’’. La matrice des coefficients de l’un des problèmes est la matrice transposée de l’autre. Le coté droit des contraintes de l’un des problèmes est la fonction économique de l’autre. À chaque contrainte du primal correspond une variable du dual et vice versa. Pour mieux comprendre la dualité, nous présentons deux types de problèmes pouvant être rencontrés :
Notes de cours
22
Imed KHEMILI / 2007
Recherche Opérationnelle
3.2
Dualité
le problème de production : on cherche à maximiser le bénéfice tout en tenant compte des limitations des ressources . le problème de mélange (ou de fourniture) : on doit fournir au moins et minimiser les dépenses. Problème de pro duct ion
Les problèmes de production sont très fréquents et ils peuvent être énoncés ainsi : compte tenu des ressources disponibles (hommes, machines, matières premières, etc.) pour une période de temps fixe (la semaine par exemple), en quelle quantité une Entreprise devrait-elle fabriquer ses produits pour maximiser le bénéfice. Le programme linéaire du problème de production sera donc formulé comme suit : ⎧? X ≥ 0 ⎪ ⎨ AX ≤ B ⎪C T X = Z max ⎩
⇒
⎧ Max Z = C T X ⎪ ⎪ Sujet à : . ⎨ ≤ AX B ⎪ ⎪⎩ X ≥ 0
Avec : = ( x j ) : vecteur des quantités fabriquées. = ( aij ) : quantité de ressource i consommée pour fabriquer le produit
caractérisant la variable x j . = ( c j ) : quantité de profit fourni par la production d’une unité de x j . = ( bi ) : quantité de ressource disponible.
Soit B − AX le résidu des ressources. On note par , le vecteur des prix de revient des ‘’résidus’’. Le producteur aura donc la possibilité d’avoir deux gains : -
Gain 1 = CT X : suite à la production du vecteur .
-
Gain 2 = Y T ( B − AX ) : suite à la revente des résidus des ressources.
Le gain total est égal à : Gain total = Gain 1 + Gain 2 = C T X + Y T ( B − AX ) 3.2.1
Probl ème du pro duc teur
Possédant les ressources , le producteur aura à choisir de produire ou de ne pas produire (revente). Dans le cas où il décide de produire, il aura un gain égal à : C T X + Y T ( B − AX ) .
Dans le cas où il décide de revendre toutes les ressources qu’il dispose, il aura un gain égal à : Y T B .
Notes de cours
23
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
Pour déterminer quelle solution le producteur doit maintenir, il faut comparer les deux gains. Soit ∆ = GainS1 − GainS 2 = C T X + Y T ( B − AX ) −Y T B = C T X − Y T AX . ∆ = ( C T − Y T A ) X .
Si ∆ > 0 , on gagne plus en travaillant, donc il doit produire. Si ∆ < 0 , on gagne plus en revendant, donc il doit revendre et ne pas produire. Exemple :
Un industriel possède, dans l’un de ses ateliers de production, trois machines M1, M2 et M3 qui sont partiellement inutilisées : - M1 est libre 18 heures par semaine. - M2 est libre 8 heures par semaine. - M3 est libre 14 heures par semaine. Pour mieux rentabiliser ces machines on envisage de fabriquer deux produits P1 et P2 dont l’écoulement sur le marché ne poserait pas de problème. - Chaque unité de P1 rapporterait 1 dinars et consommerait : 1 heure de M1, 1 heure de M2 et 2 heures de M3. - Chaque unité de P2 rapporterait 2 dinar et consommerait : 3 heures de M 1, 1 heure de M2 et 1 heure de M 3. Le (PL) permettant de maximiser ses bénéfices est : ⎧ Max Z = x1 + 2 x2 ⎪ sujet à : ⎪ ⎪⎪ x1 + 3x2 ≤ 18 . ⎨ x x 8 + ≤ 1 2 ⎪ ⎪2 x1 + x2 ≤ 14 ⎪ ⎪⎩ x1 , x2 ≥ 0
On lui propose de louer ses trois machines aux prix
⎛1 1 1⎞ Y T = ⎜ , , ⎟ l’heure ⎝2 4 2⎠
de
fonctionnement. Est-ce que la proposition intéresse le producteur ou non ? ( *** )
Calculons ∆ ? ∆ = ( C T − Y T A ) X . ⎛ 1 3⎞ ⎛ x1 ⎞ ⎛1 1 1⎞ ⎜ ⎟ C T = (1 2 ) ; A = ⎜ 1 1 ⎟ ; Y T = ⎜ , , ⎟ et X = ⎜ ⎟ ⎝2 4 2⎠ ⎝ x2 ⎠ ⎜ 2 1⎟ ⎝ ⎠
Notes de cours
24
Imed KHEMILI / 2007
Recherche Opérationnelle
⎡ ⎢ ⎛1 ∆ = ⎢(1 2 ) − ⎜ ⎝2 ⎢⎣
Dualité
1 4
⎛ 1 3 ⎞⎤ ⎟ ⎥ ⎛ x1 ⎞ ⎡ 1 2 ⎛ 7 9 ⎞ ⎤ ⎛ x1 ⎞ 1 1 )−⎜ ⎟ ⎟⎥ ⎜ x ⎟ ⎟ ⎥ ⎜ x ⎟ = ⎢( 2 ⎠ ⎜⎜ 4 4 ⎝ ⎠⎦ ⎝ 2 ⎠ ⎣ 2 ⎝ ⎠ ⎟ ⎝ 2 1 ⎠ ⎥⎦ 1 ⎞ ⎛ x ⎞ ⎛ 3 = ⎜− − ⎟⎜ 1 ⎟ < 0 4 ⎠ ⎝ x2 ⎠ ⎝ 4
1 ⎞⎜
∆ < 0 ⇒ Revente (la proposition intéresse l’industriel). 3.2.2
Probl ème du racheteur (vois in)
Le racheteur voisin doit proposer des prix pour les quels le producteur accepte de lui vendre (louer) ses ressources et qui lui permettent de minimiser ses dépenses. Le programme linéaire du problème du racheteur sera donc formulé comme suivant : - Cherchons Y ≥ 0 ? - Minimiser les dépenses d’achats (ou de location) : W min = Y T B . - Satisfaire l’industriel : ∆ < 0 ⇒ ( C T − Y T A ) X ≤ 0 ⇒
AT Y ≥ C .
Le (PL) modélisant le problème du racheteur est donc : ⎧? Y ≥ 0 ⎪ T ⎨ A Y ≥ C ⎪Y T B = W min ⎩ 3.3
⇒
⎧ Min W = Y T B ⎪ ⎪ Sujet à : . ⎨ T A Y C ≥ ⎪ ⎪ Y ≥ 0 ⎩
Problème de mélange
En général les problèmes de mélange portent sur des situations un nombre de composés doivent être mélangés pour donner un ou plusieurs produits (mélanges). Habituellement, il y a des contraintes sur les matières premières, sur la qualité des produits fabriqués et souvent sur les quantités à produire. Ce genre de problème est rencontré fréquemment dans l’industrie pétrolière, l’industrie chimique (ex : peinture), l’industrie alimentaire, l’industrie sidérurgique, etc. Exemple :
Une raffinerie de pétrole reçoit deux types de brut B 1 et B2 pour fabriquer trois types de mélanges E 1, E2 et E3. Le coût d’un m3 de brut B1 est de 20 dinars, celui du brut B2 est de 25 dinars. Les demandes des clients sont de 500 litres pour E 1, de 400 litres pour E 2 et de 600 litres pour E3. Le brut B1 peut fournir 10% de E1, 10% de E2 et 30% de E3. Le brut B2 peut fournir 50% de E1, 20% de E2 et 20% de E3.
Notes de cours
25
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
Quelles sont les quantités des bruts B 1 et B2 qu’on doit utiliser pour minimiser les dépenses. Soient : x1 : quantité de B1 utilisée. x2 : quantité de B2 utilisée. La dépense à minimiser est : W = 20 x1 + 25 x2 . Les contraintes sont : ⎧0,1 x1 + 0,5 x2 ≥ 0,5 ⎪0,1 x + 0, 2 x ≥ 0, 4 ⎪ 1 2 ⎨ ⎪0, 3 x1 + 0, 2 x2 ≥ 0, 6 ⎪⎩ x1 , x2 ≥ 0
⇒
⎧ x1 + 5 x2 ≥ 5 ⎪ x + 2 x ≥ 4 ⎪ 1 2 ⎨ ⎪3 x1 + 2 x2 ≥ 6 ⎪⎩ x1 , x2 ≥ 0
Le programme linéaire du problème de mélange sera donc formulé comme suit : ⎧? X ≥ 0 ⎪ ⎨ AX ≥ B ⎪C T X = W min ⎩
⇒
⎧ Min W = C T X ⎪ ⎪ Sujet à : . ⎨ AX B ≥ ⎪ ⎪⎩ X ≥ 0
Avec : = ( x j ) : vecteur des quantités de bruts de produit de base consommé. = ( aij ) : quantité de mélange i obtenu à partir d’une unité de brut j. = ( c j ) : prix unitaire de brut j. = ( bi ) : quantité mini d’un mélange i à fournir. 3.3.1
Problème du dist illateur (fournis seur)
Soit ( B − AX ) le surflux du brut. Le distillateur utilise le brut pour fournir le mélange demandé. Il revend le surflux à un prix . Le distillateur aura à choisir l’une des deux solutions suivantes : distiller luimême les mélanges demandés ou ne pas distiller et les acheter au près d’un soustraitant. Dans le cas où il décide de distiller lui même, ses dépenses nettes seront égales à : C T X − Y T ( AX − B ) .
Dans le cas où il décide d’acheter toutes les quantités de mélanges demandées, ses dépenses seront égales à : Y T B . Pour déterminer quelle solution le distillateur doit maintenir, il faut comparer les deux dépenses.
Notes de cours
26
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
Soit ∆ = DépensesS1 − DépensesS 2 = C T X − Y T ( AX − B ) −Y T B = C T X − Y T AX . ∆ = ( C T − Y T A ) X .
Si ∆ > 0 , on gagne plus en rachetant, donc il doit acheter et ne pas distiller. Si ∆ < 0 , on gagne plus en travaillant, donc il doit distiller. 3.3.2
Probl ème du sou s-trait ant
Le sous traitant doit fournir au prix . Le programme linéaire du problème du sous-traitant sera donc formulé comme suivant : - Cherchons les prix Y ≥ 0 ? - Maximiser les bénéfices (de vente) : Z max = Y T B . - Satisfaire le distillateur : ∆ > 0 ⇒ ( C T − Y T A ) X ≥ 0 ⇒
AT Y ≤ C .
Le (PL) modélisant le problème du sous-traitant est donc : ⎧? Y ≥ 0 ⎪ T ⎨ A Y ≤ C ⎪Y T B = Z max ⎩ 3.4
⇒
⎧ Max Z = Y T B ⎪ ⎪ Sujet à : . ⎨ T ⎪ A Y ≤ C ⎪ Y ≥ 0 ⎩
Correspon dance Primal Dual
En analysant le problème de production et le problème de mélange, nous pouvons très bien comprendre la dualité en programmation linéaire. Nous pouvons conclure qu’à tout programme linéaire appelé primal (problème du producteur ou du distillateur) lui correspond un deuxième problème appelé dual (problème du racheteur ou du sous-traitant) qui lui est intimement lié. Lorsqu’on cherche à maximiser en primal (problème du producteur), le dual correspondant est une minimisation (problème du racheteur) et lorsqu’on cherche à minimiser en primal (problème du distillateur), le dual correspondant est une maximisation (problème du sous-traitant). Les deux problèmes primal et dual impliquent les mêmes données et ont un lien étroit entre leurs solutions optimales. Des fois la résolution du problème dual peut être plus simple que celle du problème primal (par exemple on connaît une solution de base réalisable pour le dual et on peut démarrer directement le simplexe) Mais, à part l'intérêt mathématique ou numérique pour l'étude du problème dual, un aspect très important est l'interprétation économique des variables duales. Ces variables représentent des coûts marginaux et peuvent être considérées comme l'augmentation maximale du bénéfice, par rapport à la solution optimale, qui résulterait de l'utilisation d'une unité supplémentaire de l'un des ressources.
Notes de cours
27
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
Le tableau suivant résume la correspondance primal dual : PRIMAL (dual)
DUAL (pri mal)
Maximisation (Zmax) vecteur X n variables de décisions m contraintes Contraintes ≤
Minimisation (Wmin) Vecteur Y n contraintes m variables de décisions Contraintes ≥
A
AT
Coeff. fonction objectif : C
Ressources : B
n
Si
∑a j =1
ij
alors yi est libre
x j = bi
m
Si yi est libre
∑a
alors
i =1
ij
xi = c j
Exemple1 : Primal
Dual
⎧ Max Z = x1 + 2 x2 ⎪ sujet à : ⎪ ⎪⎪ x1 + 3 x2 ≤ 18 ⎨ ⎪ x1 + x2 ≤ 8 ⎪2 x1 + x2 ≤ 14 ⎪ ⎪⎩ x1 , x2 ≥ 0
⎧ Min W = 18 y1 + 8 y2 + 14 y3 ⎪ ⎪⎪ sujet à : ⎨ y1 + y2 + 2 y3 ≥ 1 ⎪3 y + y + y ≥ 2 3 ⎪ 1 2 ⎪⎩ y1 , y2 , y3 ≥ 0
Exemple2 : Primal
Dual
⎧ Min Z = 2 x1 + 2, 5 x2 ⎪ sujet à : ⎪ ⎪⎪ x1 + 5 x2 ≥ 5 ⎨ ⎪ x1 + 2 x2 ≥ 4 ⎪3 x1 + 2 x2 ≥ 6 ⎪ ⎪⎩ x1 , x2 ≥ 0
⎧ Max W = 5 y1 + 4 y2 + 6 y3 ⎪ sujet à : ⎪⎪ ⎨ y1 + y2 + 3 y3 ≤ 2 ⎪5 y + 2 y + 2 y ≤ 2, 5 2 3 ⎪ 1 ⎪⎩ y1 , y2 , y3 ≥ 0
Exemple3 : (Forme non standard)
⎧ Min Z = x1 + x2 + x3 ⎪ sujet à : ⎪ ⎪⎪ x1 − 3 x2 + 4 x3 = 5 Primal : ⎨ ≤3 ⎪ x1 − 2 x2 ⎪ 2 x2 − x3 ≥ 4 ⎪ ⎪⎩ x1 , x2 ≥ 0 ; x3 est libre
Notes de cours
28
⇒
?
Dual
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
C’est un problème de minimisation, transformons tout d’abord toutes les relations en relations de type ‘’ ≥’’. Le système devient : ⎧ Min Z = x1 + x2 + x3 ⎪ ⎪ sujet à : ⎪ x1 − 3 x2 + 4 x3 ≥ 5 ⎪ ⎨− x1 + 3x2 − 4 x3 ≥ −5 ⎪− x + 2 x ≥ −3 2 ⎪ 1 ⎪ 2 x2 − x3 ≥ 4 ⎪ ⎪⎩ x1 , x2 ≥ 0 ; x3 est libre x3 est
libre, on peut l’écrire sous la forme : x3 = x3+ − x3− , où x3+ ,
x3− ≥ 0 .
Le programme primal devient donc : ⎧ Min Z = x1 + x 2 + x3+ − x3− ⎪ ⎪ sujet à : ⎪ x − 3x + 4x + − 4x − ≥ 5 2 3 3 ⎪⎪ 1 + − ⎨− x1 + 3x2 − 4 x3 + 4 x3 ≥ −5 ⎪− x + 2 x ≥ −3 2 ⎪ 1 ⎪ 2 x2 − x3+ + x3− ≥ 4 ⎪ + − ⎪⎩ x1 , x 2 , x3 , x3 ≥ 0
La 1ère contrainte est de type ‘’=’’, ceci engendre que la première variable duale est libre. La troisième variable du primal est libre ceci engendre que la troisième contrainte du dual est de type ‘’=’’. Le problème dual est donc le suivant : ⎧ Max W = 5 y1+ − 5 y1− − 3 y2 + 4 y3 ⎪ ⎪ sujet à : ⎪ y + − y − − y ≤1 1 2 ⎪⎪ 1 + − ⎨−3 y1 + 3 y1 + 2 y2 + 2 y3 ≤ 1 ⎪ + − − y3 ≤ 1 ⎪ 4 y1 − 4 y1 ⎪−4 y + + 4 y − + y3 ≤ −1 1 1 ⎪ ⎪⎩ y1+ , y1− , y2 , y3 ≥ 0 3.5
⎧ Max W = 5 y1+ − 5 y1− − 3 y2 + 4 y3 ⎪ ⎪sujet à : ⎪⎪ y1 − y2 ≤1 ⎨ ⎪−3 y1 + 2 y2 + 2 y3 ≤ 1 ⎪ 4 y1 − y3 = 1 ⎪ ⎪⎩ y2 , y3 ≥ 0 ; y1 est libre
⇒
Théorème de la dualité
En écritures matricielles, le primal et le dual correspondant auront les formes suivantes :
Notes de cours
29
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
Primal
Dual
⎧? X ≥ 0 ⎪ ⎨ AX ≤ B ⎪C T X = Z max ⎩
⎧? Y ≥ 0 ⎪ T ⇒ Y T A ≥ C T ⎨ A Y ≥ C ⎪ BT Y = W min ⎩
⇒
Si on multiplie les contraintes du primal par le vecteur par le vecteur X , on peut écrire :
Y T et
celles du dual
Y T AX ≤ Y T B et Y T AX ≥ C T X
Ceci implique que : C T X ≤ Y T AX ≤ Y T B ⇒
CT X ≤ Y T B .
Z max = W min À l’optimal : C T X = Y T B ⇒ Ceci relève une propriété importante des couples de problèmes duals :
Si le primal ou le dual a une solution optimale finie, l’autre problème a aussi une solution optimale finie et les valeurs optimales de leurs fonctions économiques sont égales . 3.6
Théorème de comp lémentarité des écarts
Soit le problème primal suivant : = b1 ⎧a11 x1 + a12 x2 + ... + a1n xn − xn +1 ⎪a x + a x − xn+ 2 = b2 ⎪ 21 1 22 2 + ... + a2 n xn ⎪ ⎨ − xn + m = bm ⎪am1 x1 + am 2 x2 + ... + amn xn ⎪ ⎪⎩ x j ≥ 0 c1 x1 + c2 x2
+ ... + cn xn
= W min
Le problème dual correspondant est : ⎧a11 y1 + a21 y2 ⎪a y + a y ⎪ 12 1 22 2 ⎪ ⎨ a y a + ⎪ 1 n 1 m 2 y2 ⎪ ⎪⎩ y j ≥ 0 b1 y1 + b2 y2
+ ... + am1 ym + ym +1 + ... + am 2 ym + ym+ 2
+ ... + amn ym
= c1 = c2
+ yn + m = cn
+ ... + bm ym
= Z max
Si on multiplie chaque équation i, du primal, par yi et soustraire les différentes lignes multipliées par yi de la ligne de la fonction objectif on obtient : m
m
m
m
m
i =1
i =1
i =1
i =1
i =1
c1 x1 − ∑ ai1 x1 yi + c2 x2 − ∑ ai 2 x2 yi + … + cn xn − ∑ aim xn yi + ∑ xn +i yi = W min − ∑ bi yi m m m m m ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⇒ ⎜ c1 − ∑ ai1 yi ⎟ x1 + ⎜ c2 − ∑ ai 2 yi ⎟ x2 + … + ⎜ cn − ∑ ain yi ⎟ xn + ∑ xn +i yi = W min − ∑ bi yi 1 i =1 i =1 i =1 i =1 i = ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ Z max
ym+1
Notes de cours
30
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
m
⇒ ym +1 x1 + ym + 2 x2 + … + ym +n xn + ∑ xn +i yi = W min − Z max i =1
À l’optimal W − Z = 0
⇒
n
m
j =1
i =1
∑ ym+ j x j + ∑ xn+i yi = 0
Or, tous les produits x. y ≥ 0 , puisque x j ≥ 0 et yi ≥ 0 . n
m
j =1
i =1
D’où, ∑ ym+ j x j = 0 et ∑ xn+i yi = 0 . ⇒
xn +i yi = 0 x j ym+ j = 0
La complémentarité des écarts est une condition nécessaire et suffisante pour avoir une solution optimale. Exemple : Primal
Dual
⎧ Min Z = 2 x1 + 3 x2 ⎪ sujet à : ⎪ ⎪⎪2 x1 + x2 ≥ 3 ⎨ ⎪2 x1 − x2 ≥ 5 ⎪ x1 + 4 x2 ≥ 4 ⎪ ⎪⎩ x1 , x2 ≥ 0
⎧ Max W = 3 y1 + 5 y2 + 4 y3 ⎪ ⎪⎪ sujet à : ⎨2 y1 + 2 y2 + y3 ≤ 2 ⎪ y − y + 4 y ≤ 3 3 ⎪ 1 2 ⎪⎩ y1 , y2 , y3 ≥ 0
Si on les écrit sous la forme standard on obtient : Primal
Dual
⎧ Min Z = 2 x1 + 3x2 ⎪ sujet à : ⎪ ⎪⎪2 x1 + x2 − x3 = 3 ⎨2 ⎪ x1 − x2 − x4 = 5 ⎪ x1 + 4 x2 − x5 = 4 ⎪ ⎪⎩ x j ≥ 0, j = 1,...,5
⎧ Max W = 3 y1 + 5 y2 + 4 y3 ⎪ ⎪⎪ sujet à : ⎨2 y1 + 2 y2 + y3 + y4 = 2 ⎪ y − y + 4 y + y = 3 3 5 ⎪ 1 2 ⎪⎩ yi ≥ 0, i = 1,...,5
⎧ x = 3 est elle optimale ? 1 = ⎩ 2
La solution ⎨ 1 x
La complémentarité des écarts permet d’écrire : ⎧ ⎪ y1 ( 2 x1 + x2 − 3) = 0 ⎪ ≠0 ⎪ 2 x1 − x2 − 5 ) = 0 ⎨ y2 ( ⎪ =0 ⎪ x1 + 4 x2 − 4 ) = 0 ⎪ y3 ( ⎪⎩ ≠0
Notes de cours
⇒
⎧ y1 = 0 ⎪ ⎨ y2 ≠ 0 ⎪ y = 0 ⎩ 3
31
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
⎧ x1 ( 2 − 2 y1 − 2 y2 − y3 ) = 0 ⎧2 − 0 − 2 y2 − 0 = 0 et ⎪⎨ ⇒⎨ ⎩3 − 0 + y2 − 0 = 0 ⎪⎩ x2 ( 3 − y1 + y2 − 4 y3 ) = 0 ⎧ y = 1 ⎩ 2 = −3
D’où : ⎨ 2 y
La solution est non optimale. 26 ⎧ x = 1 ⎪ 9 Essayons maintenant la solution ⎪⎨ ? 7 ⎪ x = ⎪⎩ 2 9
La complémentarité des écarts permet d’écrire : ⎧ ⎪ y1 ( 2 x1 + x2 − 3) = 0 ⎪ ≠0 ⎪ 2 x1 − x2 − 5 ) = 0 ⎨ y2 ( ⎪ =0 ⎪ x1 + 4 x2 − 4 ) = 0 ⎪ y3 ( ⎪⎩ ≠0
⇒
⎧ y1 = 0 ⎪ ⎨ y2 ≠ 0 ⎪ y ≠ 0 ⎩ 3
⎧ x1 ( 2 − 2 y1 − 2 y2 − y3 ) = 0 et ⎪⎨ ⎪⎩ x2 ( 3 − y1 + y2 − 4 y3 ) = 0 ⎧2 − 0 − 2 y2 − y3 = 0 ⇒⎨ ⇒ 3 0 4 0 − + y − y = 2 3 ⎩
5 ⎧ y = 2 ⎪⎪ 9 ⎨ ⎪ y = 8 ⎪⎩ 3 9
La solution est optimale.
Cette propriété peut être énoncée pour n’importe quelle paire de problèmes duals. Elle est très importante car elle permet d’obtenir la solution optimale d’un des programmes à partir du tableau final de l’autre programme. Une fois écrit sous forme standard cette paire de programmes duals possède le même nombre de variables dans le primal et dans le dual. À chaque contrainte du primal sont associées une variable d’écart primale et une variable de décision duale. De même, à chaque contrainte du dual sont associées une variable d’écart duale et une variable de décision primale. Il existe donc une correspondance biunivoque entre les variables de décisions primales et les variables d’écart duales d’une part, et entre les variables de décisions duales et les variables d’écart primales d’autre part. Dans cet exemple on a les correspondances suivantes : x1 ↔ y4 ; x2 ↔ y5 et y1 ↔ x3 ; y2 ↔ x4 ; y3 ↔ x5 .
Notes de cours
32
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
Nous avons dit que nous pouvons obtenir la solution optimale de l’un des programmes à partir du tableau final de l’autre programme. Examinons ceci pour la paire de programmes duals suivante : Primal
Dual
⎧ Max Z = 2 x1 + 3 x2 ⎪ sujet à : ⎪ ⎪⎪ x1 + 3 x2 ≤ 18 ⎨ ⎪ x1 + x2 ≤ 8 ⎪2 x1 + x2 ≤ 14 ⎪ ⎪⎩ x1 , x2 ≥ 0
⎧ Min W = 18 y1 + 8 y2 + 14 y3 ⎪ sujet à : ⎪⎪ ⎨ y1 + y2 + 2 y3 ≥ 2 ⎪3 y + y + y ≥ 3 3 ⎪ 1 2 ⎪⎩ y1 , y2 , y3 ≥ 0
Si on les écrit sous la forme standard on obtient : Primal
Dual
⎧ Max Z = 2 x1 + 3 x2 ⎪ sujet à : ⎪ ⎪⎪ x1 + 3 x2 + x3 = 18 ⎨ ⎪ x1 + x2 + x4 = 8 ⎪2 x1 + x2 + x5 = 14 ⎪ ⎪⎩ x j ≥ 0, j = 1,..., 5
⎧ Min W = 18 y1 + 8 y2 + 14 y3 ⎪ ⎪⎪ sujet à : ⎨ y1 + y2 + 2 y3 − y4 = 2 ⎪3 y + y + y − y = 3 3 5 ⎪ 1 2 ⎪⎩ yi ≥ 0, i = 1,...,5
Le tableau final du primal est : x1
x2
x3
x4
x5
b
x2
0
1
1/2
-1/2
0
5
x1
1
0
-1/2
3/2
0
3
x5
0
0
1/2
-5/2
1
3
Z
0
0
1/2
3/2
0
21
⎫ ⎪ ⎬ Solution optimale ⎪ ⎭
Le tableau final du dual est : y1
y2
y3
y4
y5
b
y1
1
0
-1/2
1/2
-1/2
1/2
y2
0
1
5/2
-3/2
1/2
3/2
-W
0
0
3
3
5
-21
⎫ ⎬ Solution optimale ⎭
Ces tableaux illustrent deux caractéristiques importantes : Si une variable est dans la base, sa variable correspondante est hors base dans le dual, et vice versa. La valeur optimale des variables de base primales est égale aux coûts réduits associé à leurs variables correspondantes dans le dual, et vice versa. Dans cet exemple on a les correspondances suivantes :
Notes de cours
33
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
x1 ↔ y4 ; x2 ↔ y5 et y1 ↔ x3 ; y2 ↔ x4 ; y3 ↔ x5 .
3.7
Algo rit hme Dual du Simplexe
Il existe des programmes linéaires sous forme canonique qui, initialement, ont tous leurs coûts réduits non négatifs et qui ont quand même une solution de base non réalisable parce que certains éléments du coté droit sont négatifs. Le programme linéaire suivant fait partie de ce type de problème : ⎧ Min Z = 15 x1 + 20 x2 + 12 x3 ⎪ sujet à : ⎪ ⎪1 1 1 x x x3 ≥ 3 + + ⎪ 1 2 4 2 4 ⎪ 3 3 ⎨2 ⎪ 5 x1 + 10 x2 + 10 x3 ≥ 2 ⎪ ⎪ 2 x + 2 x + 1 x ≥ 2,5 ⎪5 1 5 2 5 3 ⎪ ⎪⎩ x1 , x2 , x3 ≥ 0
Pour le résoudre par la méthode du simplexe il faut faire recours à des variables artificielles supplémentaires. Si on observe le programme dual on se rend compte qu’il est réalisable et qu’il incorpore des coûts réduits négatifs. Par conséquent si on résout le programme dual au lieu du primal, on peut obtenir une solution optimale à l’aide de l’algorithme du simplexe sans avoir recours aux variables artificielles. L’algorithme dual du simplexe sert à résoudre le programme dual à l’aide du tableau primal, de sorte qu’on obtient la solution du primal directement en résolvant le dual. 1ère étape :
Transformer toutes les contraintes de type ‘’≥’’ en relations de type ‘’≤’’ en les multipliant par -1. Dresser le tableau initial. ⎧ Min Z = 15 x1 + 20 x2 + 12 x3 ⎪ sujet à : ⎪ ⎪ 1 1 1 x x x3 ≤ −3 − − − ⎪ 1 2 4 2 4 ⎪ 3 3 ⎨ 2 ⎪− 5 x1 − 10 x2 − 10 x3 ≤ −2 ⎪ ⎪− 2 x − 2 x − 1 x ≤ −2,5 ⎪ 5 1 5 2 5 3 ⎪ ⎪⎩ x1 , x2 , x3 ≥ 0
Notes de cours
⇒
⎧ Min Z = 15 x1 + 20 x2 + 12 x3 ⎪ sujet à : ⎪ ⎪ 1 1 1 x x − − − + x4 = −3 ⎪ 1 2 4 2 4 ⎪ 3 3 ⎨ 2 x x − − − ⎪ 5 1 10 2 10 + x5 = −2 ⎪ ⎪− 2 x − 2 x − 1 + x = −2,5 ⎪ 5 1 5 2 5 6 ⎪ x 0, j = 1,..., 6 ⎪⎩ j ≥
34
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
x1
x2
x3
x4
x5
x6
b
x4
-1/4
-1/2
-1/4
1
0
0
-3
x5
-2/5
-3/10
-3/10
0
1
0
-2
x6
-2/5
-2/5
-1/5
0
0
1
-2,5
-Z
15
20
12
0
0
0
0
⎫ ⎪ ⎬ négatifs ⎪ ⎭
non négatifs
Dans ce tableau les coûts réduits de départ sont non négatifs et le coté droit est négatif, ce qui implique que la solution de base duale correspondante est réalisable et que la solution primale n’est pas réalisable. Par conséquent il continuer la résolution jusqu’à ce que le coté droit devient non négatif, c'est-à-dire jusqu’à ce que la solution primale devienne réalisable, ce qui revient à résoudre le problème dual. 2ème étape :(choix de la variable sortante)
Identifier la variable de base qui est la plus négative et la choisir comme variable sortante de la base. 3ème étape :(recherche de limitation)
Si la ligne s est celle de la variable sortante, choisir comme nouvelle variable de base celle qui correspond à :
⎛ c j∗ ∗ ⎞ cr ∗ xr = min ⎜ ∗ asj < 0 ⎟ = ⎟ − asr∗ j ⎜ − a ⎝ sj ⎠
Si tous les
asj* ne sont pas négatifs, alors le programme dual est sans borne.
Dans cet exemple la variable la plus négative est x4 (variable sortante). La variable rentrante, qui correspond à la plus petite valeur de la limitation (
20
−(− 1 2)
= 40 ), est x2.
4ème étape : (transformation du tableau)
Changer de base, résoudre pour trouver la valeur des nouvelles variables de base en transformant le tableau comme dans la méthode primale du simplexe. Retourner à la deuxième étape.
Ce qui donne le tableau suivant : x1
x2
x3
x4
x5
x6
b
1/2
1
1/2
-2
0
0
6
x5
-1/4
0
-3/20
-3/5
1
0
-1/5
x6
-1/5
0
0
-4/5
0
1
-1/10
-Z Limitation
5
0
2
40
0
0
-120
20
-
40/3
200/3
-
-
Notes de cours
35
Imed KHEMILI / 2007
Recherche Opérationnelle
Dualité
Continuons la résolution de la même façon, nous obtenons les tableaux suivants : x1
x2
x3
x4
x5
x6
b
-1/3
1
0
-4
10/3
0
16/3
5/3
0
1
4
-20/3
0
4/3
x6
-1/5
0
0
-4/5
0
1
-1/10
-Z Limitation
5/3
0
0
32
40/3
0
-122,66
25/3
-
-
40
-
-
x2
x1
x2
x3
x4
x5
x6
b
x2
0
1
0
-8/3
10/3
-5/3
5,5
x3
0
0
1
-8/3
-20/3
25/3
1/2
1
0
0
4
0
-5
1/2
0
0
0
76/3
40/3
25/3
-123,5
-Z
Tous les
Notes de cours
⎫ ⎪ ⎬ Solution optimale ⎪ ⎭
bi sont non négatifs, la solution est donc optimale.
36
Imed KHEMILI / 2007