Sunteți pe pagina 1din 7

76

I. PROGRAMARE LINIARA

5.Algoritmul simplex dual Exist situaii n care pentru rezolvarea unui program liniar, dispunem de o soluie de baz care nu este admisibil. Urmtoarele consideraii au drept scop s pun n eviden o alt clas de soluii de baz cu care se poate opera ntr-o manier asemntoare celei n care lucreaz algoritmul simplex descris n paragraful 4. 5.1 Admisibilitate primal i dual Fie (P) un program liniar n form standard: n aij x j = bi i = 1,..., m j =1 ( P) x j 0 j = 1,..., n n (max) f = c j x j j =1

Ax = b x 0 (max) f = cx

(vezi notaiile matriciale(3.3.1)) Fie B o baz a programului (P), I mulimea indicilor coloanelor din B, J mulimea indicilor coloanelor din A care nu sunt n B. n seciunea 3.5 am scris (P) n forma:
(max) f = f c j x j j J ( PB ) xi + aij x j = bi j J xi 0 , i I ; x j 0 , j J

(max) f = f c S x S B S x + Sx = b B S x 0 , x 0

(vezi notaiile (3.5.2-3.5.7)), numit forma explicit a programului (P) n raport cu baza B. S considerm acum dualul programului (P): m aij ui c j j = 1,..., n i =1 (Q) ui oarecari , i = 1,..., m m (min) g = bi ui i =1

uA c u oarecare (min) g = ub

5. Algoritmul simplex dual

77

(vezi notaiile din 2.2) Aducem sistemul de inegaliti uA c la forma standard introducnd variabilele de abatere v1, v2, ..., vn reunite n vectorul linie v.
m i aij ui v j = c j uA v = c =1 ( FSQ) ui oarecari , i = 1,..., m; v j 0 j = 1,..., n u oarecare , v 0 (min) g = ub m (min) g = bi ui i =1 Partiionnd: v = v B ,vS

cu v B = [vi ]i I

, vS = vj

[ ]

j J

sistemul liniar din (FSQ) devine succesiv:


uA v = c u[ B, S ] v , v
B

] = [c

,c

uB v B = c B S S uS v = c

(511) .. (512) ..

Deoarece B este nesingular din (5.1.1) rezult: u = c B B 1 + v B B 1 Introducem u n (5.1.2): (5.1.3)

( c B B 1 + v B B 1 ) S v S = c S v S v B B 1 S = c B B 1 S c S v S v B S = c S (cu notaiile 3.5.2-3.5.7) Folosind din nou (5.1.3) eliminm u din funcia obiectiv dual:

g (u) = (c B B 1 + v B B 1 )b = c B B 1b + v B B 1b = f + v B b In acest fel, am adus (FSQ) la forma echivalent:


vS vB S = c S (QB ) v S 0 , v B 0 B (min) g = f + v b

78

I. PROGRAMARE LINIARA

variabilele originale ui , i=1,...,m fiind legate de variabilele vj , j=1,...,n prin relaia (5.1.3). Programul (QB) se va numi forma explicit a dualului (Q) n raport cu baza B. Pentru a sublinia simetria existent ntre problemele (PB) i (QB) le vom scrie alturat att scalar ct i matricial: xi + aij x j = b i i I j J ( PB ) xi 0 , i I ; x j 0 , j J (max) f = f jJ c j x j v j aij vi = c j j J i I (QB ) v j 0 , j J ; vi 0 , i I (min) g = f + i vi b i I

c
x B + Sx S = b B x 0 , x S 0 S S (max) f = f c x

c
vS vB S = c S S B v 0 , v 0 B (min) g = f v b

Observaie: Cu ajutorul relaiei (5.1.3) am rescris dualul (Q) n alte variabile care sunt supuse condiiei de nenegativitate ca i variabilele programului primal (P). Putem vorbi acum de soluii i soluii admisibile pentru programul (Q) i cnd facem acest lucru ne referim la forma echivalent (QB).

Prin analogie cu conceptul de soluie a primalei (P) asociat bazei B introducem termenul de soluie a dualei (Q) asociat bazei B anulnd n sistemul restriciilor lui (QB) variabilele "secundare" vi , i I : vB 0 vS = c S vi=0 , i I vj=c j , j J Rezult imediat c valoarea funciei obiectiv duale n soluia construit este constanta f . Folosind (5.1.3), soluia dualei (Q), corespunztoare soluiei (5.1.4) este:

(5.1.4)

5. Algoritmul simplex dual

79

u = cBB-1 Soluia (5.1.4) va fi o soluie admisibil pentru duala (Q) dac: c S 0 c j 0 , j J

(5.1.5)

Mai departe, exact ca n demonstraia teoremei A a metodei simplex ( vezi seciunea 4.1 ) soluia (5.1.4), presupus admisibil, va fi optim dac: b 0 bi 0 , i I Reamintim c soluia primalei (P) asociat bazei B este: xS=0 xB=b c xj = 0 , j J xi = b i , i I (5.1.6)

Aceast soluie este admisibil dac b 0 b i 0 , i I i n plus optim dac c S 0 c j 0 , j J. Obinem urmtoarele concluzii remarcabile: Soluia (5.1.6) a primalei (P) asociat bazei B este admisibil (respectiv satisface criteriul de optimalitate al algoritmului simplex) dac i numai dac soluia (5.1.4) a dualei (Q) asociat aceleiai baze satisface criteriul de optimalitate (respectiv este admisibil). Valorile funciilor obiectiv primal i dual n cele dou soluii evideniate coincid (cu constanta f ) Soluia (5.1.6) este o soluie optim a programului (PB) (P) dac i numai dac soluia (5.1.4) este optim pentru programul (QB), ceeace echivaleaz cu a spune c soluia (5.1.5) este optim pentru programul dual (Q). n rezumat, pornind de la problema original (P) i de la o baz B a sa am construit dou probleme n dualitate (PB) i (QB) i am pus n eviden dou soluii ale acestora, pe care le-am numit soluii asociate bazei B. Cuplul de soluii evideniat are proprietile: i)Una din soluii este admisibil (verific criteriul de optimalitate al algoritmului simplex) dac i numai dac cealalt verific criteriul de

80

I. PROGRAMARE LINIARA

optimalitate (respectiv este admisibil) n particular una este optim dac i numai dac cealalt este optim. ii)Valorile funciilor obiectiv n cele dou soluii coincid. Contextul astfel creat sugereaz urmtoarea schimbare de terminologie: O soluie de baz a programului (P) se va numi primal admisibil dac este admisibil n sensul de pn acum adic are toate componentele nenegative. O soluie de baz a programului (P) se va zice dual admisibil dac verific criteriul de optimalitate al algoritmului simplex. O baz a programului (P) se va numi dual admisibil dac soluia asociat este dual admisibil. n terminologia introdus, proprietatea i) de mai sus se reformuleaz astfel: Una din soluii este primal admisibil dac i numai dac cealalt este dual admisibil. Oricare din ele este optim dac i numai dac este simultan primal i dual admisibil.
5.2 Algoritmul simplex dual

Consideraiile precedente sugereaz posibilitatea rezolvrii programului original (P) utiliznd clasa soluiilor dual admisibile. Urmtorul algoritm, numit algoritmul simplex dual, rezult nemijlocit din aplicarea teoremelor A, B, C ale metodei simplex la problema (QB). Presupunem cunoscut o soluie de baz dual admisibil a programului (P) i tabelul simplex (uzual) asociat. n notaiile deja utilizate, o iteraie a algoritmului simplex dual se compune din urmtorii pai:
Pasul 1. (Test de optimalitate) Dac toi b i 0 , i I STOP : soluia de baz dual admisibil curent este optim. n caz contrar: Pasul 2. Se determin indicele bazic rI cu proprietatea:
b r = min b i
i I

(b r < 0)

Coloana Ar prsete baza curent.

5. Algoritmul simplex dual

81

Pasul 3. Dac pentru toi jJ avem a rj 0 STOP: problema primal nu are soluii admisibile. Altminteri: Pasul 4. Se determin indicele nebazic k J cu proprietatea:

ck

a rk

= min c j
arj <0

a rj

Coloana Ak intr n baza curent.


Pasul 5. Se pivoteaz tabelul simplex curent cu pivotul ark <o. n acest fel se obine forma explicit a programului (P) n raport cu baza B' dedus din B prin nlocuirea coloanei Ar cu coloana Ak. Se revine la pasul 1 n cadrul unei noi iteraii. Observaii: 1) Consideraiile expuse n aceast seciune sunt valabile cu mici modificri i n cazul n care funcia obiectiv din programul original (P) se minimizeaz. Cititorul va verifica imediat c algoritmul prezentat mai sus rmne valabil i pentru asemenea probleme.

2) Concluzia din pasul 3 este consecina teoremei fundamentale a dualitii. ntr-adevr, dac arj 0 , jJ atunci programul dual (Q) are optim infinit i n consecin programul (P) este incompatibil. 3) Nu insistm asupra modalitii de determinare a unei soluii de baz dual admisibile de start deoarece algoritmul va fi aplicat numai n situaii n care o asemenea soluie este disponibil.
Exemplu 5.2.1 Considerm programul:

(min) f = 12 x1 + 2 x 2 + 6 x 3 3x 2 x + x 3 1 2 3 ( P) 4 x1 + x 2 + x 3 4 x1 , x 2 , x 3 0 Introducem variabilele de abatere x4 i x5 dup care nmulim cu -1 egalitile rezultate:

82

3 x1 + 2 x 2 x 3 + x 4 4 x1 x 2 x 3

= 3 + x 5 = 4

I. PROGRAMARE LINIARA

Soluia asociat bazei unitare E=[ A4 , A5 ] nu este admisibil: x1=x2=x3=0 x4= -3 , x5= -4

dar dac evalum costurile reduse c1 , c2 , c3 constatm c ele verific criteriul de optimalitate al algoritmului simplex (bineneles pentru probleme de minimizare!).Vezi tabelele 5.2.1-5.2.4. Se constat c soluia optim a programului dat are componentele :
* x1 = 1 7 * * , x2 = 0 , x3 = 24 7

f min =

156 7

Observaie final. Pentru simetrie, algoritmul descris n seciunea 4.2 se va numi algoritmul simplex primal. Recapitulnd teoria se constat fr dificultate c maximul (minimul) unei funcii obiectiv se atinge prin valori cresctoare (descresctoare) n simplexul primal i prin valori descresctoare (cresctoare) n simplexul dual.
12 A1 3 -4 -12 -5 4 -4 1 0 * 1 0 * 2 A2 2 -1 -2 0 1 * 0 1 * 3/7 -5/7 -8/7 6 0 A3 A4 -1 1 -1 0 -6 * -3 1 1 0 -4 * 3//5 -1//5 -7/5 4/5 -8/5 -4/5 0 1/7 1 -4/7 * -12/7 0 A5 0 1 * 2 -1 -2 -2/5 3/5 -18/5 -1/7 -3/7 -30/7

cB 0 0 0 2 12 2 12 6

B A4 A5 f A4 A2 f A1 A2 f A1 A3 f

VVB -3 -4 0 -11 4 8 11/5 -24/5 84/5 1/7 24/7 156/7

A5 iese din baza curent. min{-12/-4 , -2/-1 , -6/-1} = = 2 A2 intr n baza curent. *** A4 iese din baza curent. min{-4/-5 , -4/-3} = 4/5 A1 intr n baza curent. *** 2 A iese din baza curent. A3 intr n baza curent. *** Soluia curent este dual i primal admisibil.

Tabelele 5.2.1 - 5.2.4

Evaluare