RCP104 Cours3PL Complet
RCP104 Cours3PL Complet
RCP104 Cours3PL Complet
Eric Soutif
1. Introduction la Programmation
Exemple dun modle de PL
Linaire
Donnes du problme (Entreprise Clotres Martin)
Un problme central en Recherche Oprationnelle
Deux types de produits (produit 1, produit 2)
Problme classique de planification : affecter des Trois usines (usine 1, usine 2, usine 3)
ressources limites plusieurs activits concurrentes Capacit limite de production de chaque usine (par semaine)
Programme = Plan (solution de ce problme) Profit par lot (20 units de chaque produit)
Programmation RO Programmation informatique
Fonction linaire : fonction dans laquelle chaque variable Tps de production (h / lot)
volue linairement Capacit de
production (h)
f ( x1 , x2 , K , xn ) = c1 x1 + c2 x2 + K + cn xn Produit 1 Produit 2
Chaque lot du produit 1 (2) est le rsultat combin de la production Contraintes de capacit de production
aux usines 1 et 3 (2 et 3)
x1 4 (usine 1)
nonc du problme : dterminer le taux de production pour 2 x2 12 (usine 2)
chaque produit (nombre lots par semaine) de faon maximiser le 3 x1 + 2 x2 18 (usine 3)
profit total
Variables de dcision :
x1 : nombre de lots du produit 1
x2 : nombre de lots du produit 2 Contraintes de non-ngativit :
x1 0, x2 0 (nombre dunits produites 0)
Fonction objectif :
Z = profit total
Z = 3 x1 + 5 x2 (profit total en milliers deuros)
Maximiser Z
Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 5 Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 6
Formation CNAM 1
Exemple dun modle de PL (fin) Terminologie de base en PL
Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 7 Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 8
2. Modlisation de problmes
Terminologie de base en PL (suite)
Exemple 1 : horaire de personnel
Pas de solution Objectif non born Chaque jour est divis en priodes
Maximiser Z = 3 x1 + 5 x2 Maximiser Z = 3x1 + 5 x2
On a pu estimer un nombre minimum demploys (MinEmp)
x1 4 x2 4
devant tre affects durant chaque priode
s. c. x 5 s. c. x1 5 Chaque jour est divis en quarts de travail de 8 heures
1
x1 0, x2 0
Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 9 Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 10
Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 11 Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 12
Formation CNAM 2
Exemple 1 : modle dtaill Exemple 1 : conclusions
Minimiser Z = 170 x1 + 160 x2 + 175 x3 + 180 x4 + 195 x5 o x1 + x 2 79 x1 + x 2 65
x1 48 Cette dernire contrainte est donc redondante et peut tre enleve
x1 + x2 79 o x3 + x4 82 x3 + x4 73
x1 + x2 65 Mme observation avec cette contrainte
x1 + x2 + x3 87 o x1 0, x4 0, x5 0 sont aussi redondantes mais il ny a
x2 + x3 64
aucun intrt les liminer : prise en compte implicite dans le
sous les contraintes x + x 73 processus de rsolution
3 4
Exemple 2 : un rseau de
Exemple 2 : donnes du problme
distribution
Deux usines (U1, U2) 50 units 900/unit 30 units
produites U1 E1
requises
Un centre de distribution (CD)
Deux entrepts (E1, E2) 400/unit
Chaque usine confectionne un certain nombre dunits dun
mme produit (offre) 200/unit 200/unit 300/unit
Chaque entrept requiert un certain nombre dunits de ce [10] CD
mme produit (demande)
100/unit
Sur chaque lien (arc) du rseau, il y a un cot de transport [80]
par unit de produit (cot unitaire) 300/unit
Sur certains arcs, il y a une capacit sur le nombre dunits
40 units 60 units
transportes produites U2 E2
requises
Objectif : minimiser le cot de transport total
Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 15 Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 16
mxi,j = nombre dunits du produit transportes sur larc (i, j) (entre les
sommets i et j)
Objectif (en centaines d) : Minimiser Z Minimiser Z = 2 xU1, U2 + 4 xU1,CD + 9 xU1, E1 + 3xU2,CD + xCD, E2 + 3xE1,E2 + 2 xE2, E1
xU1, U2 + xU1,CD + xU1, E1 = 50
Z = 2 xU1,U2 + 4 xU1,CD + 9 xU1,E1 + 3xU2,CD + xCD,E2 + 3xE1,E2 + 2 xE2,E1
xU1, U2 + xU2,CD = 40
Conservation du flot : en chaque sommet du rseau,
flot sortant = flot entrant s. c. xU1,CD xU2,CD + xCD, E2 = 0
Nbre dunits produites (usines) = Nbre dunits requises (entrept) xU1, E1 + xE1,E2 xE2,E1 = 30
xCD, E2 xE1,E2 + xE2,E1 = 60
Capacit (sur certains arcs)
xU1, U2 0, xU1,CD 0, xU1, E1 0, xU2,CD 0, xCD, E2 0, xE1, E2 0, xE2,E1 0
Exemple, pour larc (U1,U2) : xU1,U2 10
Contraintes de non-ngativit
Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 17 Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 18
Formation CNAM 3
Exemple 3 : Composition
Exemple 2 : conclusions
daliments pour le btail
On dsire dterminer la composition, cut minimal, dun aliment pour btail
Cest un problme de flot cot minimum (ou problme de transport) qui est obtenu en mlangeant au plus trois produits bruts : orge, arachide,
Solution optimale : ssame. Laliment ainsi conditionn devra comporter au moins 22% de
protines et 3,6% de graisses, pour se conformer aux exigences de la
clientle. On a indiqu ci-dessous les pourcentages de protines et de
( xU1, U2 , xU1,CD , xU1, E1 , xU2,CD , xCD,E2 , xE1,E2 , xE2,E1 ) = (0,40,10,40,80,0,20) graisses contenus, respectivement, dans lorge, les arachides et le ssame,
ainsi que le cot par tonne de chacun des produits bruts :
1 2 3 Pourcentage
Produit brut
Le nombre dunits transportes doit toujours tre une valeur entire, ORGE ARACHIDES SESAME requis
Objectif
m ressources (3 usines) Maximiser Z = c1 x1 + c2 x2 + K + cn xn
n activits (2 produits) Contraintes fonctionnelles
xj : niveau de lactivit j (taux de production du produit j)
a11 x1 + a12 x2 + K + a1n xn b1
Mesure de performance globale (profit total) : Z
Accroissement de Z rsultant de laugmentation dune unit a21 x1 + a22 x2 + K + a2 n xn b2
du niveau de lactivit j : cj
Quantit disponible de la ressource i : bi
Quantit de ressource i consomme par lactivit j : aij
am1 x1 + am 2 x2 + K + amn xn bm
Contraintes de non ngativit
x1 0, x2 0, K, xn 0
Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 21 Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 22
4. Rsolution graphique : un
3. Premire utilisation dun solveur
problme deux variables
Rsoudre le PL servant dexemple laide du solveur dExcel
Bouton Office (rond), Options Excel, Complments, Complment
Solveur Maximiser Z = 3x1 + 5 x2
x1 4
Maximiser Z = 3 x1 + 5 x2
s. c. x2 12
2
x1 4 3 x1 + 2 x2 18
sous les contrainte s 2 x2 12 x1 0, x2 0
3 x1 + 2 x2 18
x1 0, x2 0
Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 23 Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 24
Formation CNAM 4
Rsolution graphique (suite) Mthode graphique (rsum)
Tracer les droites correspondant aux contraintes
Dterminer le domaine ralisable en vrifiant le sens des ingalits
pour chaque contrainte
Tracer les droites correspondant la variation de lobjectif
3 1
Dans lexemple : Z = 3 x1 + 5 x 2 x2 = x1 + Z
5 5
Ordonne lorigine (dpend de la valeur de Z) : 1 Z
5
3
Pente :
5
Maximiser correspond donc augmenter Z
Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 25 Optimisation en informatique RCP 104 Chapitre 3 Principes de base de la Programmation Linaire 26
Formation CNAM 5
RCP104 Optimisation en Informatique
E. Soutif ([email protected])
maximiser =
= = est appele fonction objectif (ou fonction conomique), note souvent 6 = .
Max Max
7s.c. 9 : ** 7s.c. 9 : = **
0 0
NB : A est une matrice mn, x et c sont deux vecteurs colonnes de n composantes, b est un vecteurs m
composantes.
=
= *
x
: =
> = >
A b
Min Max
Rsoudre 7 : = ** revient donc rsoudre 7 : = * *. Les solutions optimales sont
s.c. 9 s.c. 9
0 0
les mmes, les valeurs optimales sont opposes.
= *
On remplace la variable par deux variables 0, et G en posant :
#
rel (& ') 7 *
= G , , G 0
Lensemble
M = N t.q. : = , 0Q
est appel polytope des solutions associ un P.L. Il sagit dun polytope convexe. Sil est born, on parle de
polydre convexe. Pour des problmes deux ou trois variables (cas dcole), on peut reprsenter le polydre
des solutions.
Lensemble des solutions ralisables est lensemble des points situs lintrieur du polydre (OABCDEFGHI).
Max
7s.c. : = **
9
0
comme combinaisons linaires des autres. Suivant la valeur des coefficients , les contraintes
Remarque : On peut toujours le supposer : si rang(A) < m, une ou plusieurs lignes de A peuvent sexprimer
correspondantes sont soit redondantes (on peut alors les liminer), soit incompatibles avec
les autres (Ax = b na alors pas de solution).
matrice carre inversible ([ [) extraite de A (il en existe au moins une puisque rang(A) =
Dfinition : On appelle matrice de base (ou encore, par un lger abus de langage, base) toute sous-
m).
Dfinition : On appelle base lensemble des indices des colonnes qui constitue une matrice de base (on
appelera galement base lensemble de variables correspondant ces colonnes).
] ]
Soit B une matrice de base. En permutant les colonnes, on peut mettre A sous la forme A=[B, N] o N est la
sous-matrice des colonnes hors-base. De mme, on peut crire x sous la forme \ _^ ` et c : \ _^ `.
a ] + ' ^ = (1)
] variables de base
^ variables hors-base
^ = 0 *
Solution de base associe la base B : f
] = ad g= eh
Dfinition : Une solution de base est dite solution de base ralisable si ] 0, i.e. : e 0.
Dfinition : Une base correspondant une solution de base ralisable est appele base ralisable.
Dfinition : Une solution de base est dite dgnre si le vecteur ] = e a une ou plusieurs composantes
nulles.
La dgnrescence est un phnomne frquent dans certains problmes (flots, transport, plus courts
chemins).
Thorme 1 : Lensemble des points extrmes de X correspond lensemble des solutions de base ralisables.
Dmonstration :
Corollaire 2 : Tout point de X est combinaison convexe des points extrmes de X. (Dmonstration non vue
ici.)
Dmonstration :
M = l
k jk i
k
jk 0 y et l
Daprs le corollaire 2, tout point de peut scrire avec
k jk = 1. On a donc :
= l
k jk 6gi h
k
l
k jk 6 = 6
Thorme 3 : Soit B une base ralisable non dgnre (e = ad > 0). B est une base ralisable optimale si
et seulement si :
Dmonstration :
: = a
a ] + ' ^ =
] + ad ' ^ = ad
] + '# ^ = e
Pour a, on a donc :
+ ^ e = e (On exprime les variables de base en fonction des variables hors-base)
R-crivons maintenant la fonction objectif en ne faisant apparatre que les variables hors-base :
6() = = +
] ^
6 = 6 +
^
^ = 0 *
En effet, soit la solution de base ralisable : 7
] = ad
Condition ncessaire : Montrons que sil existe ' tel que > 0, alors on peut construire une solution
meilleure.
On va alors augmenter la valeur de qui va passer de la valeur 0 une valeur >0. On considre la
solution :
=
= 0 & ' NQ *
= e e a
# tant positif, on peut toujours trouver > 0 suffisamment petit pour que soit positif ou nul :
e
min
e
e
Remarque : si tous les e sont ngatifs ou nuls, on peut alors choisir aussi grand que lon veut et le
problme de dpart admet une solution infinie.
Proprit : Soit B une base ralisable et la solution de base associe. Sil existe une variable hors-base
telle que > 0, alors :
Remarques :
Algorithme
c) si 0 & ',
finsi
alors 6 = + ( FIN)
sinon soit s tel que = max (1er critre de Dantzig, ou critre dentre)
e e
=min e e
e
dterminer r tel que (2me critre de Dantzig ou critre
de sortie)
finsi
Remarque : seul le deuxime critre est obligatoire (pour rester lintrieur de X).
Gomtiquement, cet algorithme correspond un cheminement de point extrme en point extrme adjacent
le long de la frontire de X.
Dun point de vue algbrique, il correspond dterminer une suite de bases adjacentes a , a , , a et donc
de solutions de base , , telles que 6( ) 6( ) 6g h.
On sarrange toujours pour faire apparatre une matrice identit dont les colonnes vont former la base de
dpart initiale, au besoin en transformant le problme de dpart par introduction de variables
supplmentaires :
Des variables dcart, qui permettent de transformer une ingalit de type en une galit ; Si toutes
les contraintes de dpart sont des contraintes de type , les variables dcart forment une base de
dpart naturelle.
Eventuellement des variables artificielles qui permettent de traiter des ingalits de type ou des
galits.
Exemple 1 :
positifs ou nuls, puis on introduit deux variables artificielles : i et iG avec un cot M<0 trs grand en valeur
Il sagit de contraintes dgalit : on multiplie la deuxime contrainte par -1 pour avoir des seconds membres
1 0
Base de dpart : i , iG , a = .
0 1
Exemple 2 :
[[ 6G = + 2G
+ G 3 *
G H
. . 3G 4 *
0, G 0
On introduit deux variables dcart # et G# dans les deux premires contraintes pour les transformer en
contraintes dgalit. La deuxime contrainte tant de type , G# est affecte du signe moins :
[[ 6G = + 2G
+ G + # = 3 *
H *
. . 3G G# =4
0, G 0, # 0, G# 0
Puis, comme on na toujours pas fait apparatre la matrice identit, on introduit une variable artificielle iG de
cot M<0 trs grand (en valeur absolue) :
1 0
Base ralisable de dpart : # , iG , a =
0 1
Pour faciliter la rsolution la main dun PL, on met le programme sous la forme suivante :
z est exprime en fonction des variables hors-base (les coefficients de la fonction objectif sont alors
directement les cots rduits) ;
les colonnes de la matrice de base forment ( une permutation prs) une matrice identit.
Chaque ligne reprsente une contrainte du PL, sauf la dernire qui reprsente la fonction objectif
crite en faisant apparatre les cots rduits (elle ne comporte que les variables hors-base)
La dernire case du tableau contient loppos de la constante de la fonction objectif, cest--dire
loppos de la valeur de la solution de base associe la base courante
Soit le problme :
[[ 6 = + 2G
3 + 2G 2
+ 2G 4 * *
. . + G 5
0, G 0
Les variables dcart constituent une base de dpart : a = N# , #G , #V Q.
#G G
-3 2 1 0 0 2
V# V
-1 2 0 1 0 4
1 1 0 0 1 5
1 2 0 0 0 -0
= G = 0 variables hors-base) *
Solution de base associe ce tableau : 7 de valeur 6 = 0.
# = 2, G# = 4, V# = 5 (var. de base)
combinaisons linaires qui permettent que la nouvelle colonne de G corresponde lancienne colonne de # .
On pivote alors autour de llment 2 du tableau (ligne 1, colonne2), cest--dire quon effectue les
Cette nouvelle base nest toujours pas optimale car nest pas 0. On effectue donc une nouvelle itration
de lalgorithme du simplexe :
G = G G
1 -1/2 3/4 0 5/2
0
0 -1/2 1/2 0 1
V = V G
1
V#
0 0 3/4 -5/4 1 3/2
= 2G
0 0 1 -2 0 -6
Cette nouvelle base nest toujours pas optimale car nest pas 0. On effectue donc une nouvelle itration
de lalgorithme du simplexe :
G = G + V V
0 1 0 1/3 1/3 3
G
V = V V
1 0 -1/3 2/3 2
#
0
0 0 1 -5/3 4/3 2
= V V
0 0 0 -1/3 -4/3 -8
Cette base est (enfin) optimale car 0. La solution de base associe est donc la solution optimale du
problme. Loptimum du PL de dpart est donc = (, ). La valeur optimale est = .
La dualit une notion fondamentale en PL. Chaque PL de maximisation donne lieu un PL de minimisation
appel son problme dual. Les deux problmes sont lis : chaque solution admissible de lun fournit une
borne de la valeur optimale de lautre et si les deux problmes ont des solutions, leurs valeurs optimales
concident.
G V + 3 1
() 5 + G + 3V + 8 55 G **
s.c. + 2 + 3 5 3
G V V
0 = 1 4
6(0,0,1,0) = 5 6 5
Exemple :
*6(3,0,2,0) = 22 6 22 6 22
6(2,1,1, 13) = 15 6 15
me contrainte ; 4
25 5 40 275
+ G + 5V + 3
+ G + 5V +
3 3 3 3
;|Gme contrainte}
V
275
6 ( 91,6)
3
RCP104 Optimisation en Informatique
Bases de la programmation linaire 11
On peut faire beaucoup mieux : G + V donne :
On peut gnraliser cette stratgie : on multiplie chaque contrainte par un multiplicateur i (appel
variable duale) et on somme toutes les contraintes :
Chaque multiplicateur i doit tre positif ou nul (sinon il y aurait un changement de sens de lingalit). De
plus, on dsire utiliser le membre de gauche de (1) comme majorant de
6 = 4 + G + 5V + 3 .
Cela nest valide que si, pour chaque variable , son coefficient dans (1) est suprieur ou gal son
coefficient dans z. Nous voulons donc :
i + 5iG iV 4
i + iG + 2iV 1
i + iG + 2iV 5
3i + 8iG 5iV 3
Si i 0 et si les 4 contraintes ci-dessus sont vrifies, alors toute solution ralisable de (P) vrifie
lingalit :
En particulier pour cette ingalit est vraie. Donc : 6 i + 55iG + 3iV . Comme on dsire un majorant
le plus petit possible on est naturellement amen choisir pour y la solution du programme linaire suivant,
que lon appelle programme dual de (P) :
6.2) Gnralisation
Au problme (P) dfini par :
maximiser
* problme primal
= 1, , [*
s.c.
0 & = 1, , t
RCP104 Optimisation en Informatique
Bases de la programmation linaire 12
on associe son problme dual (D) :
>
minimiser i
() > * problme dual
i & = 1, , t *
s.c.
i 0 = 1, , [
Max 6 = Min = i
Ou bien, sous forme matricielle :
7 : ** i: * *
s.c. 9 s.c.
0 i0
Prop : si (P) et (D) admettent des solutions ralisables, toute solution ralisable x de (P), = , , , et
toute solution ralisable y de (D), i = i , , i> , vrifient :
6 = i = (2)
Corollaire : si et i sont deux solutions respectives de (P) et (D) qui vrifient 6 = i , alors il est
possible de conclure immdiatement que est optimal pour (P) et i pour (D).
Thorme : si le problme primal (P) a une solution optimale , , alors le problme dual (D) a une
solution optimale i , , i>
telle que 6 = = >
i = .
Ide de la preuve :
On considre le tableau simplexe optimal de (P) et on pose i = o dsigne le cot rduit de
la me variable dcart de (P) dans le tableau optimal de (P).
On montre qualors i vrifie toutes les contraintes du dual et quil y a galit entre les valeurs de
dans (P) et i dans (D).
Exemple :
G 1
Min 2 3G
i + 2iG + iV 2 *
Max i + 4iG + 3iV
(!:) 2 + 3G 4** : H
s.c. + G = 3 s.c. i + 3iG + iV = 3*
i 0, iG 0
0