Sunteți pe pagina 1din 40

38 I.

PROGRAMARE LINIARA

4. Metoda simplex

Deoarece tim c dac programul n form standard (P) are optim finit
o soluie optim va fi cu necesitate o soluie de baz i deci va fi asociat unei
baze B*, este natural s ne ntrebm cum gsim aceast baz optimal
B*.Traducnd n termeni algebrici procedeul geometric naiv, descris n
finalul seciunii 3.2, rezult urmtoarea procedur:

se genereaz toate bazele programului (P) i se calculeaz soluiile


asociate acestora;
se elimin soluiile de baz neadmisibile i dintre cele admisibile se
reine acea soluie care ofer funciei obiectiv valoarea maxim.

Nu mai insistm asupra dezavantajelor i lipsurilor acestei scheme deoarece ele


au fost deja menionate n seciunea 3.2. Metoda descris are o alternativ
care, din fericire, s-a dovedit a fi deosebit de eficient din punct de vedere
practic. Este vorba de metoda simplex datorat matematicianului american
G.B. Dantzig (1947).
Aceast metod este un procedeu de cercetare sistematic a soluiilor
admisibile de baz ale unui program liniar n form standard (P). Ea presupune
cunoscut o asemenea soluie, numit soluie iniial sau de start i n
continuare construiete un ir de soluii admisibile de baz dealungul cruia

valoarea funciei obiectiv crete progresiv. Metoda simplex ofer un test


simplu de recunoatere a optimalitii unei soluii de baz i deasemeni un test
de recunoatere a optimului infinit. Practica numeric a artat c numrul
soluiilor admisibile de baz efectiv generate este de regul mult mai mic dect
numrul total al acestora.
Cu anumite precauii, uor de ndeplinit, metoda simplex garanteaz
convergena procesului iterativ n sensul c o baz admisibil cercetat la un
moment dat nu mai revine n iteraiile ulterioare (vezi seciunea 4.5). Cum
numrul bazelor este finit, urmeaz c ntr-un numr finit de pai se ajunge fie
la soluia optim fie la concluzia c programul are optim infinit.
Firete, n aceast descriere succint, am plecat de la ipoteza cunoaterii
unei soluii admisibile de baz iniiale, adic de la premiza c (P) este un
program compatibil. n seciunea 4.3 vom vedea cum se face recunoaterea
incompatibilitii unui program liniar.
4. Metoda simplex 39
4.1 Teoremele fundamentale ale metodei simplex

n prezentarea fundamentelor teoretice ale metodei simplex vom folosi


notaiile introduse n seciunea 3.5. n mod constant vom presupune c soluia
(3.5.10), asociat bazei B, este admisibil, adic bi 0 , i I .

Teorema A. Dac toi c j 0 , j J atunci soluia (3.5.10) asociat


bazei B este optim. Dac n plus c j > 0 , j J ,atunci ea este i unica soluie
optim a programului (P).

Demonstraie: Fie y = (y1,y2,...,yn)T A o soluie admisibil arbitrar


aleas. Deoarece y1 0, y2 0, ...,yn 0 vom avea:

f ( y) = f c j y j f = f ( x )
jJ

Inegalitatea de mai sus arat c, dintre toate soluiile admisibile ale


programului(P),soluia x din (3.5.10) ofer funciei obiectiv f cea mai mare
valoare posibil. Dac costurile reduse sunt pozitive i y x atunci
inegalitatea de mai sus este strict, fapt care probeaz unicitatea soluiei
optime x .

Teorema B. Presupunem c exist indicele kJ astfel c c k < 0 i toi


a ik 0 , i I ( A k 0) .Atunci programul (P) are optim infinit.

Demonstraie: Pornind de la soluia x din (3.5.10) construim o soluie


admisibil variabil dup cum urmeaz. nlocuim n (3.5.7):

xk = 0 ; xj = 0 , j J , j k (4.1.1)

Rezult:
x i = b i a ik , i I (4.1.2)
40 I. PROGRAMARE LINIARA
Notm cu x () soluia ale crei componente sunt definite n (4.1.1) i
(4.1.2). Condiia enunului face ca x () A , () 0. Evalum funcia
obiectiv n soluia x () :
f ( x()) = f c k (4.1.3)
Rezult imediat c: lim f ( x()) = + .Deci f este nemrginit superior pe A i

ca urmare (P) are optim infinit.

Teorema C Presupunem c exist k J astfel nct c k < 0 dar exist i


indici i I cu a ik > 0 . Fie r I indicele determinat prin formula:

br b
= min i (4.1.4)
a rk iI aik >0 a ik

Atunci grupul de coloane B' obinut din B nlocuind coloana Ar cu coloana Ak


este o baz admisibil a programului (P) i soluia x asociat ei este cel
puin la fel de bun ca i soluia x asociat bazei B, adic f( x ) f( x ).

Demonstraie: Din (4.1.4) rezult c a rk > 0 . Din Ak = B-1Ak avem:

A k = BA k = a ik A i + a rk A r
iI ,i r

Deoarece a rk 0 putem exprima Ar n funcie de Ai , i r i Ak:

a ik i 1 k
Ar = A + A
iI ,i k a rk a rk

Din teorema substituiei rezult c sistemul B', format din coloanele Ai , i r


i Ak, este o baz a problemei (P).

S lum n soluia variabil x () construit n demonstraia teoremei B:


b
= r (4.1.5)
a rk
Din formulele (4.1.1) , (4.1.2) rezult:
4. Metoda simplex 41
br
x k = ; x j = 0 , j J, j k
a rk

x = b b r a , i I
i i
a rk
ik

br
Pentru i = r avem x r = b r a rk = 0 aa c soluia de mai sus poate fi
a rk
rescris astfel:
x j = 0 , j J , j k ; x r = 0

br br (4.1.6)
x i = b i a a ik , i I, i r ; x k = a
rk rk

Notm cu x soluia ale crei componente sunt definite n (4.1.6). Vom


observa mai nti c x este soluie admisibil a problemei (P), adic are toate
componentele nenegative. ntr-adevr:

- dac a ik 0 atunci xi 0;
br b b
- dac a ik > 0 atunci b i a ik 0 i r care are loc
a rk a ik a rk
conform alegerii indicelui r (vezi (4.1.4)).

n al doilea rnd remarcm c x este soluia asociat bazei B'. ntr-adevr, din
(4.1.6) rezult c n x toate variabilele secundare n raport cu baza B' au
valoarea 0. Afirmaia rezult acum din unicitatea soluiei asociate unei baze.

Utiliznd formulele (4.1.3) i (4.1.5) obinem:

br
f ( x ) = f c k f = f ( x) (4.1.7)
a rk

n concluzie, x este cel puin la fel de bun ca i x.

Observaii: 1) Bazele B i B' aprute n enunul teoremei C difer una


de alta printr-o singur coloan a matricii A. Dou baze ale programului (P) cu
aceast proprietate se vor numi n continuare baze vecine i tot vecine se vor
numi i soluiile asociate.
42 I. PROGRAMARE LINIARA

2) Teoremele B i C afirm c dac o soluie de baz admisibil x nu


satisface criteriul de optimalitate al teoremei A atunci sau (P) are optim infinit
sau, printre soluiile vecine cu x exist cel puin una la fel de bun ca i x
dac nu chiar mai bun.

Recapitulnd materialul expus n aceast seciune constatm c testarea


optimalitii soluiei x asociate bazei B presupune cunoaterea formei
explicite (3.5.7) a problemei iniiale n raport cu baza B. Mai mult, dac x nu
verific criteriul de optimalitate al teoremei A, construcia soluiei de baz mai
bune x se face cu ajutorul elementelor aceleiai forme (3.5.7). n consecin,
testarea optimalitii soluiei x asociat bazei vecine B' va necesita
cunoaterea formei explicite a problemei iniiale n raport cu noua baz B':

max f = f c j x j c r x r
jJ , j k

x i + a ij x j + a ir x r = b i i I, i r
( PB' ) jJ , j k (4.1.8)
x k + a kj x j + a kr
x r = b k
jJ , j k

x1 , x 2 ,..., x n 0

(Vom remarca faptul c unele elemente din (4.1.8) sunt deja evaluate! Astfel,
termenii liberi, adic valorile noilor variabile bazice, sunt dai de (4.1.6) n
timp ce constanta f , care este valoarea funciei obiectiv n noua soluie de
baz x , a fost obinut n (4.1.7).)

Firete, (4.1.8) se poate obine ca i (3.5.7) prin nmulirea la stnga a


sistemului original de restricii Ax = b cu matricea invers (B')-1. Putem deduce
(4.1.8) direct din (3.5.7) cu ajutorul urmtoarelor operaii:

Din ecuaia r a sistemului (3.5.7):

x r + a rj x j + a rk x k = b r
j k

explicitm xk, mprind relaia cu a rk :


4. Metoda simplex 43
a rj 1 b
xk + xj + xr = r (4.1.9)
j k a rk a rk a rk

Substituim xk dat de (4.1.9) n celelalte ecuaii ale sistemului din (3.5.7).


Obinem:

a rj a ik b
x i + ( a ij )x j x r = b i r a ik , i I, i r (4.1.10)
j k a rk a rk a rk

Ecuaiile (4.1.9) , (4.1.10) reprezint sistemul Ax = b explicitat n noile


variabile bazice xi i I,i r i xk.

Mai departe substituim acelai xk i n expresia funciei obiectiv din (3.5.7).


Gsim:

br a rj c
f = (f ck ) (c j ck )x j + k x r (4.1.11)
a rk j k a rk a rk

Astfel, am exprimat funcia obiectiv cu ajutorul noilor variabile nebazice xj


j J,j k i xr.

Prin urmare (4.1.9) , (4.1.10) , (4.1.11) constituie forma explicit a


problemei originale n raport cu noua baz B'. Identificnd coeficienii din
aceste ecuaii cu coeficienii corespunztori din (4.1.8) rezult formulele:

a rj i I, i r a
a ij = a ij a ik ; a ir = ik i I, i r
a rk j J, j k a rk

a rj 1
=
a kj j J , j k ; a kr
= (4.1.12)
a rk a rk

br a rj ck
f = f ck ; c j = c j ck j J , j k ; c r =
a rk a rk a rk

cunoscute i sub numele de formule de schimbare a bazei.


44 I. PROGRAMARE LINIARA

4.2 Algoritmul simplex

Rezolvarea efectiv a unui program liniar n form standard (P) se face


cu ajutorul algoritmului simplex. Acesta este un pachet invariabil de
instruciuni logice i de calcul care, aplicate unei soluii admisibile de baz a
programului (P), stabilete dac soluia respectiv este optim i, n caz
contrar, pune n eviden situaia de optim infinit sau construiete efectiv o
soluie admisibil de baz mai bun dect cea curent.

S considerm o baz admisibil B precum i forma explicit (PB) a


programului (P) n raport cu aceast baz. (vezi notaiile seciunii 3.5)
n raport cu aceste date de intrare, coninutul unei iteraii simplex este
urmtorul:

Pasul 1. (Test de optimalitate) Dac toi c j 0 , j J soluia de baz


curent (adic soluia (3.5.10), asociat bazei B) este optim: STOP.
Altminteri:

Pasul 2. Se alege indicele nebazic k J astfel ca:

c k = min c j (4.2.1)
jJ

Pasul 3. Dac:
a ik 0 , i I ( A k 0)

programul (P) are optim infinit:STOP. Altminteri:

Pasul 4. Se determin indicele bazic r I cu formula:

br b
= min i (4.2.2)
a rk iI aik >0 a ik

Pasul 5. Se construiete 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.
4. Metoda simplex 45
Observaii 1) La pasul 2 avem cu necesitate c k < 0 . Despre coloana
nebazic Ak vom spune c intr n baza curent. n demonstraia teoremei C
s-a artat c variaia valorii funciei obiectiv la schimbarea coloanei bazice Ar
cu coloana Ak este dat de formula:

b
f ( x ) f ( x) = r c k (4.2.3)
a rk

br
Cum 0 (vezi (4.2.2)) urmeaz c introducerea n baz a oricrei coloane
a rk
nebazice Aj cu c j < 0 mbuntete valoarea curent a funciei obiectiv.
Alegerea coloanei nebazice care va intra n baza curent dup formula (4.2.1)
asigur funciei obiectiv cea mai mare vitez de variaie i n general conduce
la terminarea algoritmului n mai puine iteraii.

2) Se poate arta uor c dac situaia descris n pasul 3 are loc atunci
vectorul w = (w1,w2,...,wn)T definit prin:

w i = a ik , i I ; w j = 0 , j J , j k ; w k = 1 (4.2.4)

este o raz extrem a mulimii poliedrale AP.

3) Despre coloana bazic Ar al crei indice se determin cu formula


(4.4.2) vom spune c prsete baza curent. Alegerea ei dup formula
amintit asigur admisibilitatea soluiei asociate noii baze B'.

4) Elementul a rk , unde k este indicele coloanei care intr n baz iar r


este indicele coloanei care iese din baz se numete pivot i operaia de
calculare a elementelor formei explicite n raport cu baza B' din elementele
formei explicite n raport cu baza veche B prin aplicarea formulelor de
schimbare a bazei (4.1.12) poart numele de pivotare gaussian.

5) n principiu, problemele de minimizare se reduc la cele de


maximizare n baza relaiei (1.3.1). Algoritmul simplex descris mai sus este
aplicabil i problemelor de minimizare cu urmtoarele mici modificri:

n pasul 1: soluia curent este optim dac c j 0 , j J ;


46 I. PROGRAMARE LINIARA
n pasul 2: pentru determinarea indicelui coloanei nebazice care
intr n baza curent se va utiliza formula
c k = max c j
jJ
De aceast dat vom avea c k > 0.

6) S presupunem c baza curent B este optimal (adic soluia


asociat ei verific testul de optimalitate) i c exist indici nebazici jJ cu
c j = 0 . Formula (4.2.3) arat c introducerea n baza curent a oricrei coloane
Ak pentru care c k = 0 conduce la soluii de baz la fel de bune ca i cea
curent, deci optime. Se poate arta c dac x 1 , x 2 ,..., x p , p 2 sunt toate
soluiile de baz optime ale programului (P) atunci acesta are o infinitate de
soluii optime care au forma:

x = 1 x 1 + 2 x 2 +...+ p x p cu 1 , 2 ,..., p 0 si 1 + 2 +...+ p = 1

(altfel spus, orice soluie optim este o combinaie convex a soluiilor optime
de baz)

7) n rezolvarea manual a programelor liniare (firete de mici


dimensiuni) se utilizeaz tabelele simplex (3.5.1) asociate diferitelor baze
cercetate. Aceste tabele se deduc unul din altul prin pivotare gaussian.

n continuare vom aplica algoritmul simplex pe o problem simpl, n


dou variabile, pentru a putea ilustra grafic modul n care acioneaz
procedura.
4. Metoda simplex 47

Exemplul 4.2.1 Considerm programul:

max f = 2 x1 + x 2

( P) x1 x 2 4 ; 3x1 x 2 18 ; x1 + 2 x 2 6
x1 0 , x 2 0

a crui mulime de soluii admisibile AP este vizualizat n figura 4.2.1.

x2

S3: x1=42/5, x2=36/5

S2: x1=7, x2=3


A
S1: x1=4, x2=0
x1

S0: x1=0, x2=0

Figura 4.2.1

Aducem (P) la forma standard adugnd variabilele de abatere x3, x4, x5:

max f = 2 x1 + x 2

x1 x 2 + x 3 = 4

( FSP) 3x1 x 2 + x4 = 18
x + 2 x + x5 = 6
1 2
x j 0 , j = 1,...,5

Se observ c matricea A a coeficienilor formei standard (FSP) conine baza


unitar E = [ A3,A4,A5] a crei soluie asociat:

1 = 0 , x2 = 0 , x3 = 4 , x4 = 18 , x5 = 6
48 I. PROGRAMARE LINIARA

este admisibil. n continuare sunt date tabelele rezultate prin aplicarea


algoritmului simplex (tabelele 4.2.1 - 4.2.4). n partea dreapt am indicat
formele explicite ale problemei (FSP) n raport cu bazele cercetate. n trei
iteraii s-a obinut soluia optim x1 = 42
5
, x 2 = 36
5
, valoarea maxim a
funciei obiectiv fiind 24; variabilele de abatere au n soluia optim valorile
x 3 = 145 , x 4 = x 5 = 0 .

2 1 0 0 0
cB B VVB A1 A2 A3 A4 A5
0 A3 4 1 -1 1 0 0 x 1 - x 2 + x3 = 4
0 A4 18 3 -1 0 1 0 3x1 - x2 +x4 = 18
0 A5 6 -1 2 0 0 1 -x1+2x2 +x5 = 6
f 0 -2 -1 * * * -2x1 -x2 +f = 0
1
22 A 4 1 -1 1 0 0 x1 -x2 + x3 = 4
0 A4 6 0 2 -3 1 0 2x2 -3x3 +x4 = 6
0 A5 10 0 1 1 0 1 x 2 + x3 +x5 = 10
f 8 * -3 2 * * -3x2 +2x3 +f = 8
2 A1 7 1 0 -1/2 1/2 0 x1 - 1/2x3+1/2x4 = 7
1 A2 3 0 1 -3/2 1/2 0 x2 -3/2x3+1/2x4 = 3
0 A5 7 0 0 5/2 -1/2 1 5/2x3 - 1/2x4 +x5 = 7
f 17 * * -5/2 3/2 * -5/2x3+3/2x4 +f = 17
1
2 A 42/5 1 0 0 2/5 1/5 x1 +2/5x4 +1/2x5 =
42/5
1 A2 36/5 0 1 0 1/5 3/5 x2 +1/5x4 +3/5x5 = 36/5
0 A3 14/5 0 0 1 -1/5 2/5 x3 -1/5x4 +2/5x5 =
14/5
f 24 * * * 1 1 x4 + x5 +f = 24

Tabelele 4.2.1 - 4.2.4

Componentele
soluiei de baz Soluia Valoarea
Soluia Baza generat de algoritm programului funciei
x1 x2 x3 x4 x5 (P) obiectiv
S0 B0 = [A3 , A4 , 0 0 4 18 6 (0 , 0) 0
A5]
S1 B = [A1 , A4 ,
1
4 0 0 6 10 (4 , 0) 8
A5]
S2 B2 = [A1 , A2 , 7 3 0 0 7 (7 , 3) 17
A5]
S3 B3 = [A1 , A2 , 42/5 36/5 14/5 0 0 (42/5 , 36/5) 24
A3]
4. Metoda simplex 49

Tabelul 4.2.5

Este util s recapitulm ntr-un tabel soluiile admisibile de baz ale


programului (FSP) , efectiv generate de algoritm , mpreun cu soluiile

programului (P), asociate prin corespondena din finalul seciunii 3.3 (vezi
tabelul 4.2.5).
Urmrind imaginea grafic (fig. 4.2.1), deducem sensul geometric al
algoritmului simplex: procedura pleac dintr-un vrf al mulimii soluiilor
admisibile apoi se deplaseaz ctre un vrf vecin mai bun .a.m.d. pn la
gsirea soluiei optime.

4.3 Determinarea unei soluii admisibile de start

Dup cum s-a specificat, aplicarea algoritmului simplex necesit


cunoaterea unei baze admisibile de start precum i a formei explicite asociate
acesteia, celelalte forme explicite deducndu-se una din alta prin pivotare
gaussian. Chiar i pentru probleme de dimensiuni mici, gsirea unei asemenea
baze de start prin simpla inspectare a coloanelor matricii A, se dovedete a fi o
treab complicat, ne mai vorbind de faptul c este posibil ca problema s nu
aibe soluii admisibile. n plus, s nu uitm c teoria metodei simplex s-a bazat
esenial pe ipoteza c restriciile problemei sunt liniar independente, lucru
iari greu de verificat n practic. Pentru obinerea formei explicite iniiale
avem nevoie de cteva pregtiri.

Vom spune c programul n form standard (P) este n form bun dac
matricea A conine o submatrice unitate de ordinul m (= numrul restriciilor)
iar termenii liberi sunt nenegativi. Dac este aa, (P) satisface condiia (3.5.1)
iar soluia asociat bazei unitare este admisibil i poate fi considerat ca
soluie de start pentru aplicarea algoritmului simplex. Dac (P) nu este n
form bun, el se poate aduce la aceast form, notat (FBP), n felul urmtor:

n caz c unele restricii ale programului iniial au termeni liberi


negativi nmulim aceste restricii cu -1; n acest fel toi termenii liberi ai
restriciilor problemei de rezolvat vor fi 0.
Se aduce problema la forma standard adugnd variabile de
abatere n restriciile inegaliti.
Dac matricea programului rezultat nu conine toate coloanele
matricii unitate de ordinul m, n anumite restricii se vor aduga noi variabile
nenegative pentru crearea coloanelor lips; aceste noi variabile se numesc
50 I. PROGRAMARE LINIARA
variabile artificiale i, spre deosebire de cele de abatere, apar i n funcia
obiectiv cu un coeficient comun, foarte mare n valoare absolut. Coeficientul
va fi negativ dac funcia obiectiv se maximizeaz i pozitiv n caz contrar.

Se observ imediat c dac programul iniial (P) este compatibil,


soluiile sale admisibile se identific cu acele soluii ale formei bune n care
variabilele artificiale au valoarea zero. Prin faptul c variabilele artificiale sunt
nsoite n expresia funciei obiectiv de nite penalizri foarte mari, metoda
simplex este instruit s caute tocmai asemenea soluii! i astfel, rezolvarea
formei bune ne conduce la unul din urmtoarele cazuri:

1. Forma bun are optim infinit. Atunci i programul iniial are optim
infinit.
2. Forma bun are optim finit dar n soluia optim cel puin o
variabil artificial are valoare nenul. Atunci programul original este
incompatibil.
3. Forma bun are optim finit i n soluia optim toate variabilele
artificiale au valoarea zero. Ignornd valorile acestor variabile se obine
soluia optim a programului iniial.

Exemplul 4.3.1 Considerm urmtorul program mpreun cu forma sa


standard:
(max) f = 2 x 1 + 3 x 2 (max) f = 2x1 + 3x 2

2 x 1 + x 2 4 0 2 x1 + x 2 x 3 = 40

( P ) x 1 + 3 x 2 30 ( FSP ) x1 + 3x 2 x4 = 30
x + x 30 x + x + x 5 = 30
1 2
1 2

x 1 0 , x 2 0 x j 0 , j = 1,...,5

Se constat c (FSP) nu este n forma bun neconinnd dect un singur vector


al matricii unitare de ordinul 3. Vom creea o asemenea matrice introducnd n
primele dou restricii variabilele artificiale x6 i x7. Obinem programul:
4. Metoda simplex 51
(max) f = 2 x1 + 3x 2 Mx 6 Mx 7

2 x1 + x 2 x 3 + x6 = 40

( FBP ) x1 + 3x 2 x4 + x 7 = 30 , M >> 0
x + x + x5 = 30
1 2

x j 0 , j = 1,...,7

Putem aplica algoritmul simplex programului (FBP) plecnd de la baza unitar


E = [A6, A7, A5] i de la soluia asociat acesteia:

x1 = x2 = x3 =x4 = 0 x5 = 30 , x6 = 40 , x7 = 30

Dup trei iteraii (vezi tabelele 4.3.1 - 4.3.4) se obine soluia optim a
programului (FBP) n care variabilele artificiale x6 , x7 au valoarea zero.
Ignornd aceste valori se obine soluia optim a formei standard (FSP) i
implicit soluia optim a programului original (P):

x1 = 10 , x 2 = 20 f max = 80

varibilele de abatere avnd valorile: x 3 = 0 , x 4 = 40 , x 5 = 0.

2 3 0 0 0 -M -M
cB B VVB A1 A2 A3 A4 A5 A6 A7
-M A6 40 2 1 -1 0 0 1 0
-M A7 30 1 3 0 -1 0 0 1
0 A5 30 1 1 0 0 1 0 0
f -70M -3M-2 -4M-3 M M * * *
-M A6 30 5/3 0 -1 1/3 0 1 -1/3
3 A2 10 1/3 1 0 -1/3 0 0 1/3
0 A5 20 2/3 0 0 1/3 1 0 -1/3
f -30M+30 -5/3M-1 * M -M/3-1 * * 4M/3+1
2 A1 18 1 0 -3/5 1///5 0 3/5 -1/5
3 A2 4 0 1 1/5 -2/5 0 -1/5 2/5
0 A5 8 0 0 2/5 1/5 1 -2/5 -1/5
f 48 * * -3/5 -4/5 * M+3/5 M+4/5
2 A1 10 1 0 -1 0 -1 1 0
3 A2 20 0 1 1 0 2 -1 0
0 A4 40 0 0 2 1 5 -2 -1
f 80 * * 1 * 4 M-1 M

Tabelele 4.3.1 - 4.3.4


52 I. PROGRAMARE LINIARA
Punctele din R2 corespunztoare celor patru soluii generate de algoritm sunt
S0 = (0,0) , S1 = (0,10) , S2 = (18,4) , S3 = (10,20).

x2

S3: x1=10 , x2=20

A
S1: x1=0 , x2=10 x1

S0: x1=0 , x2=0

S2: x1=18 , x2=4

Figura 4.3.1

Urmrind fig. 4.3.1 se constat c punctele S0 i S1, ce corespund unor


soluii ale programului (FBP) n care cel puin o variabil artificial are valoare
nenul, sunt n afara mulimii AP n timp ce S2 i S3, corespunztoare unor
soluii n care x6 = x7 = 0, sunt vrfuri ale acestei mulimi.

Pentru determinarea unei soluii admisibile de baz de start, n situaia


n care programul iniial (P) nu este n form bun, se poate aplica i aa
numita metod a celor dou faze:

se introduc n restricii variabile artificiale, bineneles acolo unde


este cazul, n scopul formrii unei baze unitare de start (termenii liberi ai
restriciilor se presupun a fi nenegativi);
n faza I se minimizeaz suma w a variabilelor artificiale introduse.
Deoarece i aceste variabile sunt supuse condiiei de nenegativitate, urmeaz
c (min)w 0. n caz c (min)w > 0 este clar c programul iniial (P) este
incompatibil; dac (min)w = 0 se trece la:
4. Metoda simplex 53
faza a II-a, n care se optimizeaz funcia obiectiv a programului
iniial (P) plecnd de la soluia de baz rezultat la finele fazei I. (Atenie, la
nceputul acestei faze, vom avea grij s recalculm costurile reduse c j n
raport cu coeficienii funciei obiectiv din (P)!)

4.4. Inversa bazei curente. Soluia optim a problemei duale

S considerm un program liniar (P) n form bun. Renumerotnd


convenabil variabilele programului, matricea coeficienilor sistemului de
restricii are forma:
A = [A , E]

unde E este matricea unitate de ordinul m = numrul restriciilor din (P). Dup
cum am vzut, E se ia ca baz de start n procesul rezolvrii programului (P)

prin algoritmul simplex. Dac B este o baz cercetat de algoritm, atunci


matricea formei explicite asociat bazei B va fi:

B-1A = [B-1A , B-1]

Cum matricea B-1A apare n corpul mare al tabelului simplex corespunztor


bazei B, deducem urmtoarea concluzie important:

La fiecare iteraie, algoritmul simplex pune n eviden inversa B-1 a


bazei curente. Ea este format din coloaneleAj corespunztoare coloanelor
unitare Aj care au format baza de start.

Exemplul 4.4.1 Ne referim la programul (P) rezolvat n exemplul


4.3.1. Deoarece baza de start a fost matricea unitate E = [A6,A7,A5], inversa
bazei optime B = [A1,A2,A4] se citete din ultimul tabel simplex:

1 0 1

B 1
= [A , A , A ] = 1
6 7 5
0 2
2 1 5
54 I. PROGRAMARE LINIARA
O calitate remarcabil a algoritmului simplex este aceea c produce
nu numai soluia optim a problemei creia i se aplic ci i soluia optim a
problemei duale.

S considerm un cuplu de probleme n dualitate n care una este n form


standard (vezi seciunea 2.2):

max f ( x ) = cx min g( u ) = ub

( P ) Ax = b ( Q ) uA c
x0 u oarecare

Cu notaiile seciunii 3.5 avem urmtoarea;

Teorema 4.4.1 Presupunem c (P) are o soluie optim x* asociat


unei baze B. Atunci:
u* = cBB-1 (4.4.1)

este o soluie optim a problemei duale (Q).

Demonstraie: Vom arta c u* satisface restriciile uAj cj , j =


1,,n ale problemei duale (Q). ntr-adevr u*Aj - cj =cBB-1Aj -cj = c j , conform
(3.5.6). Avem c j 0 , j = 1,,n, deoarece x* este prin ipotez soluia optim a
programului (P), astfel c u* este o soluie a dualei (Q). Mai departe f(x*) =
g(u*) = cBB-1b. Concluzia teoremei decurge acum din teorema 2.3.1.

Practic, pentru determinarea soluiei optime duale se procedeaz astfel.


Am artat c rezolvarea unei probleme n form standard se reduce la
rezolvarea unei probleme de acelai tip a crei matrice conine o submatrice
unitate avnd ordinul egal cu numrul restriciilor.

Atunci inversa bazei optimale B-1 se citete n tabelul simplex asociat


acestei baze pe coloanele Aj corespunztoare vectorilor care au format baza
unitar de start!

Extrgnd B-1 din tabel se poate aplica formula (4.4.1).

Procedeul descris este valabil i pentru un cuplu general de probleme n


dualitate (P,Q). ntr-adevr, dup cum am vzut deja, aducerea problemei (P) la
o form (P1) convenabil aplicrii algoritmului simplex se face prin adugare
4. Metoda simplex 55
de variabile: de abatere i/sau artificiale. n consecin, duala (Q1) a
problemei (P1) va avea aceleai variabile i aceeai funcie obiectiv ca i duala
(Q) a problemei iniiale(P), diferena constnd n numrul restriciilor i n
condiiile impuse variabilelor. Se poate arta fr dificultate c aceast
diferen nu nseamn altceva dect dou modaliti de scriere a uneia i
aceleiai probleme, altfel spus (Q) i (Q1), n esen, coincid! n acest fel,
teorema de dualitate 2.3.3 este probat.

Exemplul 4.4.2 Ilustrm cele de mai sus, determinnd soluia optim a


programului liniar:

min g( u ) = 40u1 + 30u2 + 30u3



( Q )2u1 + u2 + u3 2 ; u1 + 3u2 + u3 3
u1 0 , u2 0 , u3 0

care este dualul programului (P) rezolvat n exemplul 4.3.1. Dup adugarea
variabilelor de abatere i a celor artificiale, din (P) s-a obinut programul
(P1) = (FBP) al crui dual este:

min g( u ) = 40u1 + 30u2 + 30u3



2u1 + u2 + u3 2
u1 + 3u2 + u3 3

u1 0

( Q1 ) u2 0
u3 0

u1 M

u2 M
u1 , u2 , u3 f.r.s.
56 I. PROGRAMARE LINIARA
Restricia u3 0 este de fapt condiia de nenegativitate impus variabilei u3
n (Q) iar -u1 0 , -u2 0 nseamn u1 0 , u2 0. Ultimele dou restricii din
(Q1) sunt superflue pentru c M este prin definiie >>0. Prin urmare (Q) i (Q1)
coincid. Din tabelul simplex 4.3.4 extragem inversa bazei optimale comune B
= [ A1,A2,A4] a programelor (P) i (P1) - vezi exemplul precedent - astfel c
soluia optim a probl;emei duale (Q) este :

1 0 1

u = c B = [ 2 3 0] 1 0
B 1
2 = [ 1 0 4]
2 1 5
adic: u1 = 1, u2 = 0, u3 = 4.

Observaie: Folosind notaiile din 3.5 punem n eviden


componentele vectorului linie cBB-1 :

j = c B A j = c i a ij j J
iI

Pentru coloanele unitare Ai corespunztoare vectorilor Ai din baza curent


punem:
i = ci i I

Din (3.5.6) rezult atunci c:

c j =j - cj j=1,,n

i deci mrimile j sunt efectiv calculate n procesul evalurii coeficienilor


c j ! Acesta este i motivul pentru care de multe ori mrimile j sunt puse n
eviden ntr-o linie separat plasat n tabelul simplex deasupra liniei test. Cu
aceste pregtiri, formula (4.4.1) arat c:

Soluia optim a problemei duale este dat de coeficienii j din tabelul


simplex al problemei primale, corespunztori coloanelor unitare care au
format baza de start.

4.5 Convergena algoritmului simplex


4. Metoda simplex 57
Se arat uor c dac minimul din (4.2.2) nu este unic atunci noua
soluie de baz x este degenerat, adic are un numr de componente nenule
< m. Aceast situaie este delicat prin faptul c poate implica neconvergena
algoritmului. Mai precis, este posibil ca algoritmul s genereze un ir de soluii
de baz neoptimale x 1 , x 2 ,..., x p , dealungul cruia valoarea funciei obiectiv
staioneaz, adic f ( x 1 ) = f ( x 2 ) = L = f ( x p ) , astfel nct x p = x 1 !!
Fenomenul descris, numit ciclare, dei teoretic posibil, nu a fost ntlnit n nici
o aplicaie practic, existena lui fiind probat doar prin cteva exemple
artificial construite.

Exemplul 4.5.1 [Beale] Se consider programul liniar:

x1 + 14 x 4 8 x 5 x 6 + 9 x 7 = 0

x2 + 12 x 4 12 x 5 12 x 6 + 3x 7 = 0

x3 + x6 =1
(max)f = 4 x 20 x + 2 x 6 x
3 1
4 5 6 7

O baz admisibil de start este B0 = E = [A1,A2,A3] a crei soluie asociat x0


este degenerat. ntr-adevr, variabilele bazice au valorile:

x1 = 0 , x2 = 0 , x3 = 1 (toate celelalte variabile fiind nule)

Propunem cititorului s arate c succesiunea de baze admisibile:

B1 = [A4,A2,A3] , B2 = [A4,A5,A3] , B3 = [A6,A5,A3] , B4 = [A6,A7,A3]

B5 = [A6,A2,A3] , B6 = [A4,A2,A3]

poate fi dedus din B0 prin aplicarea regulilor algoritmului simplex. Se


constat fr dificultate c valoarea funciei obiectiv n soluiile de baz
asociate este zero i c nici una din aceste soluii, toate degenerate, nu verific
criteriul de optimalitate. Pe de alt parte observm c baza B6 este identic cu
baza B1 i deci algoritmul intr ntr-un ciclu infinit fr a putea determina
soluia optim (care exist i este unic dup cum vom vedea).
Pentru problemele ale cror soluii de baz admisibile sunt toate
nedegenerate convergena algoritmului este asigurat de urmtoarea :

Teorema 4.5.1 Dac programul n form standard (P) este compatibil


i toate soluiile sale admisibile de baz sunt nedegenerate atunci aplicarea
algoritmului simplex descris n 4.2 se termin ntr-un numr finit de iteraii, fie
cu gsirea soluiei optime, fie cu concluzia c programul are optim infinit.
58 I. PROGRAMARE LINIARA

Demonstraie: Fie x 0 , x 1 , x 2 ,... soluiile cercetate n cursul aplicrii


algoritmului , x 0 fiind soluia iniial. Avem f ( x 0 ) f ( x 1 ) f ( x 2 ) ....
Ipoteza nedegenerrii precum i formula (4.2.3) arat c de fapt
f ( x 0 ) < f ( x 1 ) < f ( x 2 ) ... i deci nici o soluie admisibil de baz nu va fi
cercetat de dou ori. Concluzia teoremei rezult acum din faptul c numrul
soluiilor de baz este finit (vezi seciunea 3.5).

Din fericire, exist proceduri de evitare a ciclrii care constau ntr-o


mic modificare a regulii (4.2.2). Ele sunt ncorporate n orice pachet de
programe destinat rezolvrii problemelor de programare liniar. O asemenea
metod va fi descris n cele ce urmeaz. Sunt necesare cteva pregtiri.

Definiie Spunem c vectorul x = (x1,x2,...,xn) este lexicografic pozitiv i


scriem xf 0 dac x 0 i prima component nenul a lui x este pozitiv.

n mulimea vectorilor din Rn introducem relaia binar:

xf y dac x-y f 0

Se verific uor afirmaiile:

Dac x f y i y f z atunci x f z (tranzitivitate).


Oricare ar fi x , y Rn una i numai una din urmtoarele relaii are
loc: x = y , x f y , y f x.

Prin urmare relaia f este o relaie de ordine total pe Rn care extinde relaia
de ordine natural din R n plus ea este compatibil cu structura liniar a
spaiului Rn n sensul c:

x f y x+z f y+z
x f y i > 0 x f y

S considerm acum problema de programare liniar n form standard:

Ax = b 0

( P) x 0
(max) f = cx

4. Metoda simplex 59

Putem presupune c problema (P) este n form bun, altfel spus c matricea A
conine o submatrice unitate de ordinul m, unde m este, ca de obicei, numrul
restriciilor. Renumerotnd convenabil variabilele problemei putem presupune
c primele m coloane din A sunt unitare, astfel c A are forma A = [E , S].
Atunci tabelul simplex asociat unei baze oarecare B, nu neaprat admisibil,
are urmtorul coninut:

VVB
B b B-1 B-1S

Fie I mulimea indicilor vectorilor Ai care formeaz baza B. Pentru fiecare i I


notm:
[
qiB = bi , ai1 , ai 2 ,..., aim ] (4.5.1)

unde ai1 , ai 2 ,..., aim sunt componentele liniei i a matricii B-1.

Definiie Vom spune c baza B este lexicografic admisibil dac


q f 0 pentru orice i I.
i
B

Este clar c dac B este lexicografic admisibil atunci B este admisibil n


sensul de pn acum adic bi 0 , i I . Reciproc, dac B este admisibil i
soluia asociat este nedegenerat, adic bi > 0 , i I atunci evident, B este
lexicografic admisibil.

Baza de start B0 = E este lexicografic admisibil. ntr-adevr:

qiB = [bi ,0,...,1,...0]


0
i = 1,...,m

0
i este clar c toi q iB f 0 . Introducem vectorul q B = ( f , c ) n care f este
valoarea funciei obiectiv n soluia asociat bazei B iar c este vectorul
costurilor reduse corespunztoare (vezi seciunea 3.5).

Definiie Spunem c baza B' este lexicografic mai bun dect baza B
(n sensul maximizrii funciei obiectiv f ) i vom scrie B' f B dac qB' f qB.

Evident B' fB este o relaie de ordine total n mulimea bazelor problemei (P).
Se constat imediat c dac B' este lexicografic mai bun dect B atunci B' este
cel puin la fel de bun ca i B n sensul obinuit adic f ' f .
60 I. PROGRAMARE LINIARA
Ideea de modificare a algoritmului simplex descris n 4.2 const n a
pleca de la o baz B0 lexicografic admisibil i de a genera n continuare numai
baze lexicografic admisibile B1 , B2 ,... care s fie din ce n ce mai bune n sens
lexicografic, adic:
B0 p B1 p B2 p ...

Avnd n vedere c n irul de mai sus nu pot exista dou baze identice i c
numrul bazelor admisibile este finit urmeaz c ideea de modificare a
algoritmului simplex propus mai sus garanteaz convergena procedurii.

Trecem acum la concretizarea ideii de modificare. Fie B o baz


lexicografic admisibil care nu verific criteriul de optimalitate al algoritmului
simplex. Determinm cu criteriul (4.2.1) coloana Ak care intr n baz i
presupunem c Ak are i componente pozitive (cu alte cuvinte nu suntem n
cazul optimului infinit). Pentru determinarea indicelui coloanei Ar care
prsete baza curent B, n locul criteriului (4.2.2) vom folosi formula:

1 B 1
q r = minlex qiB (4.5.2)
a rk i ,aik >0 a
ik

n care qiB , i I sunt dai de (4.5.1) iar minimul din membrul drept este luat
n sens lexicografic. Acest minim se calculeaz astfel:

se determin mulimea I0 a indicilor r I astfel nct:

br b
= min i
a rk i ,aik >0 aik
1 B
Dac I0 se reduce la un singur indice r atunci q r realizeaz minimul
a rk
lexicografic din (4.5.2). Prin urmare dac minimul din (4.2.2) este unic cele
dou criterii de ieire din baz (4.2.2) i (4.5.2) coincid.
Dac I0 se compune din cel puin dou elemente, se determin mulimea I1 I0
a indicilor r cu proprietatea c:
ar1 a
= min i1
a rk i I 0 a ik

Dac nici I1 nu se reduce la un singur element, se determin n continuare sub


mulimea I2 I1 format din indicii r pentru care:
4. Metoda simplex 61
ar 2 a
= min i 2
a rk i I1 a ik
.a.m.d.
Se genereaz astfel un ir de submulimi:
I0 I1 I2 ...
ultima din ele avnd cu siguran un singur element ce definete minimul
lexicografic din (4.5.2). ntr-adevr, dac ultima mulime generat ar conine
cel puin doi indici diferii r i r', aceasta va fi Im i n consecin:

a ri a
= r 'i pentru toi i = 1,...,m
a rk a r 'k

ceeace ar implica proporionalitatea a dou linii din matricea B-1, fapt


imposibil. Prin urmare, minimul din (4.5.2) este unic.
S artm acum c noua baz B' dedus din B nlocuind Ak cu Ar:

este lexicografic admisibil, adic:

qiB ' f 0 , i I , i r si q kB ' f 0 ;

este lexicografic mai bun dect B, adic qB' f qB .

n baza formulelor de schimbare a bazei (4.1.12) putem scrie relaiile:

aik B 1 B
qiB ' = qiB qr ir; q kB ' = qr
a rk a rk

Deoarece prin ipotez q rB f 0 si a rk > 0 rezult q kB' f 0 .Fie i r. Dac aik 0


atunci n mod clar qiB' f 0 . Dac aik > 0 atunci:

1 B 1 B
qiB ' = aik qi qr f 0
aik a rk

ck B
n virtutea alegerii lui r, conform (4.5.2). n fine: q B ' = q B q r i deoarece
a rk
ck < 0 rezult q B ' f q B .
62 I. PROGRAMARE LINIARA
Aplicarea n calculul manual a criteriului de ieire din baz modificat
(4.5.2) este foarte simpl:

bi
Dac minimul rapoartelor , aik > 0 din criteriul uzual de ieire
aik
din baz nu este unic i se atinge pe o submulime de indici I0 se caut minimul
a
rapoartelor i1 , i I 0 n care numrtorii sunt luai din prima coloan a
aik
inversei bazei curente. Dac nici acesta nu este unic i se atinge pe o
a
submulime I1 I0 se caut minimul rapoartelor i 2 , i I 1 cu numrtorii din
aik
a doua coloan a inversei bazei .a.m.d. Dup cum am vzut acest proces se
termin ntr-un numr finit de pai cu gsirea unui unic indice r. Vectorul Ar
prsete baza.

Consideraiile de mai sus vor fi aplicate problemei din ex.4.5.1 (vezi tabelele
4.5.1 - 4.5.3)
La prima iteraie intr n baz A4. Se observ c:
b b
min 1 , 2 = min{0 , 0}
a14 a 24
nu este unic. Fie I0 = {1,2}. Prima coloan a inversei bazei curente este A1 i
ca urmare calculm:
a a 1 0 a 21
min 11 , 21 = min , =0=
a14 a 24 1 4 1 2 a 24

n consecin vectorul A2 prsete baza .a.m.d.


0 0 0 3/4 -20 1/2 -6
cB B VVB A1 A2 A3 A4 A5 A6 A7
0 A1 0 1 0 0 1/4 -8 -1 9
0 A2 0 0 1 0 1/2 -12 -1/2 3
0 A3 1 0 0 1 0 0 1 0
f 0 * * * -3/4 20 -1/2 6
0 A1 0 1 -1/2 0 0 -2 -3/4 15/2
3/4 A4 0 0 2 0 1 -24 -1 6
0 A3 1 0 0 1 0 0 1 0
f 0 * 3/2 * * 2 -5/4 9/2
0 A1 3/4 1 -1/2 3/4 0 -2 0 15/2
3/4 A4 1 0 2 1 1 -24 0 6
1/2 A6 1 0 0 1 1 0 1 0
4. Metoda simplex 63
f 5/4 * 3/2 5/4 * 2 * 9/2

Tabelele 4.5.1 - 4.5.3

4.6 Alte exemple numerice

Aceste exemple au rolul de a ilustra diferitele fapte teoretice prezentate


n seciunile anterioare.

Exemplul 4.6.1 (Optim infinit, raze extreme).

Vom considera programul (P) mpreun cu forma sa standard (FSP):

(max) f = 3x1 + 4 x 2 (max) f = 3x1 + 4 x 2


3x + 4 x 12
3 x1 + 4 x 2 + x 3 = 12
1 2

( P) 2 x1 + x 2 2 ( FSP) 2 x1 + x 2 + x4 = 2
x1 2 x 2 2 x1 2 x 2 + x5 = 2

x1 0, x 2 0 x j 0 , j = 1,...,5

Plecnd cu baza unitar admisibil E = [A3, A4, A5] , n dou interaii se ajunge
la tabelul 4.6.1:

3 4 0 0 0
CB B VVB A 1
A 2
A 3
A4
A5
3 A1 4/5 1 0 1/5 -4/5 0
4 A2 18/5 0 1 2/5 -3/5 0
0 A5 42/5 0 0 3/5 -2/5 1
f 84/5 * * 11/5 -24/5 *

Tabelul 4.6.1

Conform pasului 3 al algoritmului simplex programul (P) are optim infinit


deoarece:
4
c 4 < 0 iar A 0

Vectorul w1=(4/5, 3/5, 0, 1, 2/5)T este o raz extrem a mulimii AFSP a


soluiilor admisibile ale formei standard (FSP), vezi (4.2.4). Prin "proiecie",
vectorul w1=(4/5, 3/5) este o raz extrem a mulimii AP a soluiilor admisibile
ale programului iniial (P). Din fig. 4.6.1 rezult c AP mai are o raz extrem
w2=(2,1)T. Aceast raz se poate determina tot cu ajutorul algoritmului simplex
64 I. PROGRAMARE LINIARA
cu condiia ca la prima interaie, n baz, s fie introdus coloana A1.
Propunem cititorulului s efectueze calculele necesare.

x2

v1+w1,0

v1

AP

w1=(4/5,3/5)
w2=(2,1)

v2+w2,0
v2
x1

Figura 4.6.1
Exemplu 4.6.2 (Incompatibilitate) Considerm programul:

(min) f = 6 x1 + x 2 2 x 3
5x x + x 6
1 2 3

( P ) 2 x1 + x 2 + 3 x 3 7
3x + x + 2 x = 2
1 2 3

x1 , x 2 , x 3 0

Dup introducerea variabilelor de abatere x4, x5 i a variabilelor artificiale x6 i


x7 (n prima i respectiv a treia restricie) se obine programul n form bun:

(min) f = 6 x1 + x 2 2 x 3 + Mx 6 + Mx 7 , M 0

5 x1 x 2 + x 3 x 4 + x6 =6

( FBP) 2 x1 + x 2 + 3x 3 + x5 =7
3x + x + 2 x + x7 = 2
1 2 3

xj 0 1 j 7
4. Metoda simplex 65

(Deoarece funcia obiectiv se minimizeaz, variabilele artificiale au fost


incluse n funcia obiectiv cu un coeficient pozitiv M foarte mare!)

Pornind de la baza unitar E=[ A6, A5, A7 ], n dou iteraii algoritmul


simplex produce tabelul 4.6.2, ce conine soluia optim a programului (FBP).
6 1 -2 0 0 M
cB B VVB A1 A2 A3 A4 A5 A6 A7
M A6 1 0 -1 0 -1 -1 1 1
6 A1 8/13 1 -1/13 0 0 2/13 0 -3/13
-2 A3 25/13 0 5/13 1 0 3/13 0 2/13
f M - 2/13 * - M - 29/13 * - M -M + 6/13 * - 22/13

Tabelul 4.6.2

Deoarece n aceast soluie variabila artificial x6 are valoare nenul,


programul n forma standard i implicit programul original nu au soluii
admisibile.

Exemplul 4.6.3 (Programe liniare cu variabile fr restricie de semn)

Condiia de nenegativitate impus variabilelor unui program liniar (P)


nu este deloc restrictiv. ntr-adevr s presupunem c n (P) ar exista o

variabil xj ce poate lua orice valoare real. nlocuim xj cu diferena a dou


variabile nenegative:

x j = x 'j x ''j cu x 'j 0, x ''j 0

n consecin, n locul coloanei Aj a coeficienilor variaiei xj vor apare dou


coloane:

(Aj)'=Aj (Aj)'' = -Aj

iar n funcia obiectiv coeficientul cj se nlocuiete cu : c 'j = c j si c ''j = c j


Deoarece (Aj)'+(Aj)'' = 0, coloanele (Aj)' i (Aj)'' sunt liniar dependente i prin
urmare nu vor putea apare simultan n nici o baz a programului transformat.
Dup rezolvarea programului transformat, valoarea variabilei originale xj n
( ) (x ) .
* '' *
soluia optim va fi x *j = x 'j j Cum x 'j si x 'j' nu pot fi simultan
variabile bazice vom avea: x *j = ( x 'j ) * 0 sau x *j = ( x ''j ) * 0 dup cum, n
66 I. PROGRAMARE LINIARA
soluia optim a programului transformat x , respectiv x ''j ,a fost variabil
'
j

bazic. Pentru ilustrare s considerm problema:

min f = 3x1 + 2 x 2

x1 + 2 x 2 2
( P)
3 x1 + x 2 3
x1 fara restrictii de semn, x 2 0

nlocuim: x1 = x1' x1'' , adugm variabilele de abatere x3, x4 precum i


variabila artificial x5 n scopul obinerii unei baze unitare de start. Rezult
urmtorul program transformat:

min f = 3x1 3x1+ 2x 2 + Mx 5 , M >> 0


x + x + 2x x + x5 = 2
1 1 2 3
( P ' )
3x1 + 3x1+ x 2 + x4 =3
x1 , x1, x 2 , x 3 , x 4 , x 5 0

n continuare dm elementele ultimului tabel simplex:

3 -3 2 0 0 M
CB B VVB (A1)' (A1)'' A2 A3 A4 A5
2 A2 3/5 0 0 1 -3/5 -1/5 3/5
-3 (A1)'' 4/5 -1 1 0 1/5 2/5 -1/5
f - 6/5 0 * * - 9/5 - 8/5 9/5 - M

Tabelul 4.6.3

Soluia optim a programului (P') este deci:

( x1' ) * = 0, ( x1'' ) * = 4 / 5, x 2* = 3 / 5 f min = 6 / 5

Urmeaz c soluia optim a programului original va fi :

x1* = 4 / 5, x 2* = 3/ 5
4. Metoda simplex 67
4.7 Interpretarea economic a algoritmului simplex

S considerm cazul n care problema de maximizare n form


standard:

max f = cx

Ax = b
x0

reprezint modelul de optimizare a activitii unei firme (seciunea 1.1,


exemplul 1). Se cere determinarea combinaiei de bunuri ce urmeaz a fi
realizate precum i a cantitilor n care acestea vor fi produse astfel nct
venitul firmei s fie maxim cu condiia consumrii integrale a resurselor
disponibile. Ultima cerin nu este deloc restrictiv ntruct n lista activitilor
productive putem include la nevoie un numr de activiti fictive ale cror
nivele s reprezinte resursele neconsumate (aceste activiti fictive corespund
variabilelor de abatere).

O prim concluzie care se desprinde din teoria metodei simplex este


aceea c n orice soluie optim a modelului numrul bunurilor ce vor fi
efectiv realizate este cel mult egal cu numrul resurselor folosite.

Aceasta rezult din faptul c n orice soluie de baz numrul componentelor


nenule nu depete numrul restriciilor. n consecin, realizarea unor bunuri
ce nu sunt incluse n "lista optim" implic adugarea unor noi restricii n
model, fapt care duce la diminuarea optimului iniial.

S considerm acum un program de producie "de baz", adic o soluie


admisibil de baz, asociat unei baze B. Activitile i corespunztoare
coloanelor Ai din B vor fi numite n continuare activiti de baz, iar celelalte
activiti secundare. Conform definiiei, acest program nu prevede folosirea
activitilor secundare iar cantitile de bunuri realizate n activitile de baz
trebuie astfel dimensionate nct s se asigure consumarea ntregului stoc de
resurse. n notaiile seciunii 3.5 :

BxB = b , xS = 0 de unde xB = B-1b =b

Dup cum se vede, lista activitilor de baz determin n mod unic cantitile
de bunuri ce pot fi produse i ca atare detectarea unui program mai bun se
poate face numai studiind oportunitatea utilizrii unor activiti secundare care
68 I. PROGRAMARE LINIARA
s nlocuiasc o parte din activitile bazice curente. Pentru aceasta avem
nevoie de un criteriu care s permit compararea unei activiti secundare j cu
grupul activitilor de baz. S examinm coloana Aj a tabelului simplex
asociat bazei B. Conform (3.5.3) Aj = B-1Aj de unde Aj = B.Aj sau:

A j = a1 j A1 + a 2 j A 2 +....+ a mj A m (4.7.1)

[ ]
n ipoteza c B = A1 , A 2 ,..., A m . Sensul economic al egalitii (4.7.1) este
urmtorul: din punctul de vedere al consumului de resurse producerea unei
uniti din bunul j este echivalent cu producerea cantitilor a1 j , a 2 j ,..., a mj
din bunurile activitilor de baz. n consecin, dac se dorete producerea
unei uniti din bunul j, producia activitilor de baz trebuie diminuat cu
cantitile a1 j , a 2 j ,..., a mj .Analiza oportunitii introducerii n fabricaie a
bunului j se va face prin compararea aportului su la creterea venitului firmei
cu aportul valoric al cantitilor a1 j , a 2 j ,..., a mj .Astfel, realizarea unei uniti
din bunul j determin creterea valorii curente a funciei obiectiv cu preul su
cj n timp ce renunarea la producerea cantitilor a1 j , a 2 j ,..., a mj nseamn
diminuarea aceleiai valori cu suma c1a1 j + c2 a 2 j +...+ cm a mj .Prin urmare dac
diferena:
c j = c1a1 j + c2 a 2 j +...+ cm a mj c j

este 0 realizarea bunului j nu este rentabil deoarece nu duce la creterea


valorii produciei asigurate prin programul curent. Dac cj 0 pentru toate
activitile secundare, programul de fabricaie curent este optim. Am regsit
astfel criteriul de optimalitate din teorema A seciunea 4.1. Dac cj < 0,
utilizarea activitii secundare j duce la o sporire a venitului realizabil prin
programul curent, viteza de cretere fiind -cj . Interpretarea criteriului de
intrare n baz (4.2.1) este acum clar: dac mai multe activiti secundare sunt
rentabile n raport cu grupul activitilor de baz este preferat activitatea care
asigur cea mai ridicat vitez de cretere a valorii curente a produciei.Fie k
aceast activitate. Ultima problem const n stabilirea cantitii din bunul k ce
poate fi realizat n condiiile date. Conform celor de mai sus producerea unei
cantiti din acest bun implic micorarea produciei din bunurile activitilor
de baz cu cantitile a1k , a 2 k ,..., a mk :

x1 = b1 a1k , x 2 = b2 a 2 k ,..., x m = bm a mk
4. Metoda simplex 69
Deoarece desfurarea unei activiti la un nivel negativ este lipsit de sens
va trebui s avem bi aik 0 i = 1,.., m de unde:

bi
0 = min
i ,a
ik
>0 aik

(excludem cazul optimului infinit, nesemnificativ din punct de vedere


b
economic). Dac 0 = r a i = 0 obinem creterea maxim a valorii
rk
curente a produciei prin utilizarea activitii k. n acest caz activitatea k nu mai
b
este folosit ntruct x r = br 0 a rk = br r a rk = 0 . Am obinut din nou
a rk
criteriul de ieire din baz (4.2.2).

4.8 Versiunea revizuit a algoritmului simplex

Relum programul liniar n form standard (P):

(max) f = cx

( P) x 0
Ax = b

cu notaiile i terminologia introduse n seciunile 3.4 - 3.5. Considerm o


iteraie oarecare a algoritmului simplex n care se cerceteaz soluia asociat
unei baze B. Pentru efectuarea iteraiei sunt necesar urmtoarele elemente:

1) Costurile reduse: c j = c B B 1 A j c j , j J
Dac testul de optimalitate nu este ndeplinit se determin kJ astfel ca:

ck = min c j
j J
k
Coloana A intr n baza curent.
2) Componentele coloanei:

k
A = B 1 A k

3) Valorile variabilelor bazice curente xi , iI reunite n vectorul:


70 I. PROGRAMARE LINIARA
1
b=B b

Admind c nu are loc cazul optimului infinit se determin iI astfel nct:

br = min bi
a rk a ik > 0 a ik

Coloana Ak prsete baza curent.

Dup efectuarea operaiilor necesare evalurii elementelor amintite, tabelul


simplex curent se pivoteaz cu pivotul ark..

Se observ c aceste mrimi numerice se pot calcula direct din datele


iniiale A, b, c ale programului (P) cunoscnd inversa B-1 a bazei curente.

Dac avem n vedere soluionarea problemelor practice de programare


liniar caracterizate n primul rnd prin numrul mare de restricii i variabile
urmtoarele probleme trebuie s ne dea de gndit:

Din mulimea de coloane calculate Aj=B-1Aj , jJ doar una este


efectiv folosit la aflarea pivotului i anume Ak ; toate celelalte servesc la
calculul costurilor reduse conform formulei:

cj=cBAj-cj , jJ

Cum n practic problemele au multe variabile, astfel spus matricea A are


multe coloane, evaluarea coloanelor Aj necesit timp i efort de calcul.
Exceptnd primul tabel simplex, celelalte se deduc unul din altul
prin pivotare gaussian, facilitnd propagarea i amplificarea erorilor de
rotunjire inerente calculului cu numere reale. Este posibil ca n final
aceste erori s
compromit grav rezultatele (de exemplu o problem compatibil s fie
declarat incompatibil).
Chiar dac matricea iniial A este rar (adic densitatea
elementelor nenule este mic), densitatea elementelor nenule n tabelele
simplex generate crete vertiginos, cu efecte negative asupra vitezei de calcul.

Este de la sine neles c aceste neajunsuri nu sunt vizibile n calculul


manual. Aceste probleme apar n contextul rezolvrii programelor de
dimensiuni mari cnd utilizarea calculatorului este inevitabil!
4. Metoda simplex 71
Versiunea revizuit a algoritmului simplex elimin n mare parte
aceste neajunsuri. n esen, aceast versiune propune calcularea mrimilor
amintite mai nainte ntr-o alt ordine i apelarea la datele iniiale ale
problemei. La fiecare iteraie este necesar cunoaterea inversei bazei curente.

Fie B o baz a programului (P). Componentele vectorului (linie):

=cBB-1

se numesc multiplicatori simplex asociai bazei B (vezi observaia din finalul


seciunii 4.4)

Inserm elementele B-1, , b=B-1b i f=cBb=b ntr-un tabel:

B b B-1
f f

numit tabel simplex redus.

S presupunem cunoscut o soluie admisibil de baz a programului


(P) i tabelul simplex redus al acesteia. Cu aceste pregtiri, coninutul unei
iteraii n versiunea revizuit este urmtorul:

Pasul 1. Se calculeaz costurile reduse:

cj=Aj-cj , jJ

Dac toi cj 0 soluia curent este optim. Altminteri:

Pasul 2. Se determin indicele nebazic kJ cu proprietatea :

ck = min c j ( ck < 0 !)
j J

Coloana Ak intr n baza curent. Se calculeaz Ak=B-1Ak

Pasul 3. Dac Ak 0 programul dat are optim infinit. Altminteri:

Pasul 4. Se determin indicele bazei rI cu proprietatea:

br = min bi
a rk a ik > 0 a ik
72 I. PROGRAMARE LINIARA

Coloana Ar prsete baza curent.

Pasul 5. Se pivoteaz tabelul simplex redus curent cu pivotul ark > 0


(se presupune c la tabelul simplex redus curent au fost "ataate" coloana Ak
i costul redus ck)

Fa de algoritmul simplex standard, versiunea revizuit are o serie de


avantaje:

utilizarea la fiecare iteraie a datelor iniiale ale problemei (pentru


calcularea costurilor reduse cj i a coloanei Ak ) asigur un control mai bun
asupra propagrii erorilor de rotunjire ca i o vitez de calcul mai mare dac
se are n vedere faptul c densitatea elementelor nenule n matricea A este de
regul mic (este tiut faptul c o operaie de nmulire se efectueaz n
calculator numai dac ambii operanzi sunt nenuli)

volumul de calcule este n general mai mic, mai cu seam n situaia


n care numrul variabilelor este cu mult mai mare dect cel al restriciilor.
Este evident faptul c aceste avantaje depind de "calitatea" inversei B-1 a bazei
curente. ntr-adevr, inversele diferitelor baze cercetate de algoritmul revizuit
se calculeaz ca i n algoritmul standard "una din alta" prin pivotare. Am
amintit deja "riscurile numerice" care decurg din aceast situaie ce nu poate
fi evitat: pe de o parte propagarea i amplificarea erorilor de rotunjire cu
impact negativ asupra acurateii evalurii diferitelor mrimi necesare

efecturii unei iteraii i pe de alta creterea timpului de calcul ca urmare a


"ndesirii" elementelor nenule din B-1.n principiu, atenuarea acestor
neajunsuri se face prin reinversarea periodic a bazei curente i "stocarea"
inversei B-1 sub forma unui produs de matrici foarte simple ca structur.

Pentru determinarea unei soluii admisibile de baz de start, n situaia


n care programul iniial (P) nu este n form bun, se aplic metoda celor
dou faze (vezi seciunea 4.3), cu observaia c la nceputul fazei II, vor trebui
recalculai multiplicatorii simplex ce compun vectorul =cBB-1 n raport cu
coeficienii funciei obiectiv din (P)!

Urmtorul exemplu are menirea de a ilustra diferenele de organizare a


calculelor introduse algoritmul simplex revizuit i nu de a pune n eviden
avantajele de ordin "numeric" n raport cu algoritmul standard; este i
4. Metoda simplex 73
imposibil de fcut acest lucru deoarece n calculul manual se lucreaz
"exact". Oricum, n rezolvarea manual a programelor liniare de dimensiuni
mici se recomand versiunea standard.

Exemplu 4.8.1 Se consider programul:

(max) f = 3x1 + 4 x2 + x3 + 2 x4 + 2 x5 + x6

2 x1 4 x 3 + 2 x4 2 x6 5
2 x1 4 x2 + 4 x4 2 x5 + 2 x6 1
(P)
x2 + x3 =1
x4 + x5 + x6 = 1

xj 0 , 1 j 6

Introducem variabilele de abatere x7, x8 n primele dou restricii obinnd


forma standard dup care introducem variabilele artificiale x9, x10, x11 n
restriciile 2, 3 i 4 n scopul formrii bazei unitare de start. Obinem sistemul
liniar:

2 x1 4 x3 + 2 x4 2 x6 + x7 =5

2 x1 4 x 2 + 4 x 4 2 x5 + 2 x 6 x8 + x 9 =1

x2 + x3 + x10 =1
x 4 + x5 + x 6 + x11 =1

x j 0 , j = 1,...,11

Faza I. Atam sistemului de mai sus funcia obiectiv:

w=x9+x10+x11

pe care o minimizm. Lum ca baz de start B=E=[A7, A9, A10, A11] creia i
corespunde soluia: x1=x2=x3=x4=x5=x6=x8=0 , x7=5 , x9=1 , x10=1 , x11=1. n
raport cu aceast baz cB=[0,1,1,1] astfel c =cBB-1=[0,1,1,1], w=b=3 .
Primul tabel simplex redus arat astfel:

A7 5 1 0 0 0
A9 1 0 1 0 0
A10 1 0 0 1 0
A11 1 0 0 0 1
w 3 0 1 1 1
74 I. PROGRAMARE LINIARA

Tabelul 4.8.1

Calculm costurile reduse cj=Aj-cj. Costurile reduse corespunztoare


diferitelor iteraii ale fazei I sunt date n tabelul 4.8.6; de fiecare dat un cost
ncadrat arat coloana care intr n baza curent.

(A4)T 2 4 0 1 A4
A7 5 1 0 0 0 2
A9 1 0 1 0 0 4
A10 1 0 0 1 0 0
A11 1 0 0 0 1 1
w 3 0 1 1 1 5=c4

Tabelul 4.8.2

(A2)T 0 -4 1 0 A2 (A3)T -4 0 1 0 A3
A7 9/2 1 -1/2 0 0 2 A7
3 1 0 0 -2 -4
A4 1/4 0 1/4 0 0 -1 A4 1 0 0 0 1 0
A10 1 0 0 1 0 1 A10 1/4 0 1/4 1 -1 1
A11 3/4 0 -1/4 0 1 1 A2 3/4 0 -1/4 0 1 0
w 7/4 0 -1/4 1 1 2=c2 w 1/4 0 1/4 1 -1 1=c3

Tabelul 4.8.3 Tabelul 4.8.4

La prima iteraie intr n baz A4. Calculm A4=B-1A4; pentru aceasta


(vezi tabelul 4.8.2 care coincide cu 4.8.1) scriem A4 n linie, deasupra tabelului

cB (A1)T 2 2 0 0 A1
7
0 A 4 1 1 4 -6 4
2 A4 1 0 0 0 1 0
1 A3 1/4 0 1/4 1 -1 1/2
4 A2 3/4 0 -1/4 0 1 -1/2
w 0
f 21/4 0 -3/4 1 5 -9/2=c1

Tabelul 4.8.5

i facem produsele scalare ale lui (A4)T cu liniile matricei B-1; rezultatele le
nscriem n dreapta tabelului 4.8.2. Tot n dreapta jos nscriem costul redus c4.
Parcurgnd celelalte etape al algoritmului gsim c A9 prsete baza. Se
efectueaz pivotarea tabelului 4.8.2 cu pivotul ncadrat i se obine tabelul
(4.8.3). Tabelele 4.8.4 si 4.8.5 aparin deasemeni fazei I.
4. Metoda simplex 75

Coef. funciei ob. f 3 4 1 2 2 1 0 0


Coef. funciei ob. w 0 0 0 0 0 0 0 0 1 1 1
1
A A2 A3 A 4
A 5
A 6
A7 A 8 9
A A 10
A11
Matricea A 2 0 -4 2 0 -2 1 0 0 0 0
2 -4 0 4 -2 2 0 -1 1 0 0
Costuri reduse 0 1 1 0 0 0 0 0 0 1 0
la iteraia 0 0 0 1 1 1 0 0 0 0 1
1 2 -3 1 5 -1 3 * -1 * * *
FAZA I 2 -1/2 2 1 * 3/2 1/2 * 1/4 -5/4 * *
3 1/2 * 1 * -3/2 -1/2 * -1/4 -3/4 * -2
1 -9/2 * * * 9/2 5/2 * 3/4
2 * * 9 * -9 -2 * -3/2
FAZA II 3 * * -9 * * -13/2 9/4 3/4
4 * * * 9/2 * 1/4 9/8 -3/8
5 * 3 * 3 * -2 3/2 *
6 * 3 * 3 2 * 3/2 *

Tabelul 4.8.6

La iteraia 3 (tabelul 4.8.5) s-a obinut w = 0, ceea ce nseamn


obinerea unei soluii admisibile de baz pentru forma standard a programului
(P). Nu s-au mai calculat multiplicatorii simplex relativi la funcia obiectiv w i
ca urmare nu s-a mai urmrit verificarea testului de optimalitate n raport cu
aceast funcie! n schimb s-a "actualizat" cB=[ 0, 2, 1, 4 ], n raport cu funcia
obiectiv original f i s-au calculat multiplicatorii simplex n raport cu aceast
funcie.

n alte cinci iteraii se obine soluia optim a programului dat:

x1* = 11
2 , x 2* = 0 , x 3* = 1 , x 4* = x5* = 0 , x 6* = 1 ; (max) f = 37
2

n continuare se dau tabelele simplex reduse ale fazei a II-a.

(A5)T 0 -2 0 1 A5 (A3) -4 0 1 0 (A3)

A7 2 1 -1 -4 2 4 A5 1/2 1/4 -1/4 -1 1/2 -2


A4 1 0 0 0 1 1 A4 1/2 -1/4 1/4 1 1/2 2
A1 1/2 0 1/2 2 -2 -3 A1 2 3/4 -1/4 -1 -1/2 -4
A2 1 0 0 1 0 0 A2 1 0 0 1 0 1
f 15/2 0 3/2 10 -4 -9=c5 f 12 9/4 -3/4 1 1/2 -9=c3
76 I. PROGRAMARE LINIARA

Tabelul 4.8.7 Tabelul 4.8.8

(A8)T 0 -1 0 0 A8 (A6)T -2 2 0 1 A6
A5 1 0 0 0 1 0 A5 1 0 0 0 1 1
A3 1/4 -1/8 1/8 1/2 1/4 -1/8 A3 1 0 0 1 0 0
A1 3 1/4 1/4 1 1/2 -1/4 A1 9/2 1/2 0 2 0 -1
2
A 3/4 1/8 -1/8 1/2 -1/4 1/8 A2 6 1 -1 4 -2 -6
f 57/4 9/8 3/8 11/2 11/4 -3/8 =c8 f 33/2 3/2 0 7 2 -2 =c6

Tabelul 4.8.9 Tabelul 4.8.10

A6 1 0 0 0 1
A3 1 0 0 1 0
A1 11/2 1/2 0 2 1
A8 12 1 -1 4 4
f 37/2 3/2 0 7 4

Tabelul 4.8.11

***

n consideraiile de pn acum am avut n vedere n exclusivitate


numai aspectele teoretice legate de rezolvarea unui program liniar. Rezolvarea
efectiv, mai cu seam a programelor de dimensiuni mari ( rezultate, de
exemplu, din modelarea unor situaii economice reale), de neconceput fr
utilizarea unui calculator , pune ns i alte probleme, de natur numeric cum
ar fi controlul propagrii erorilor de rotunjire (inerente calculului cu numere
reale) , volumul de memorie necesar stocrii diferitelor informaii numerice
utilizate n procesul rezolvrii, timpul de rulare pn la obinerea rezultatului
final etc.
Reamintim cu acest prilej c, nu de puine ori, o metod de optimizare
bine fundamentat teoretic s-a dovedit a fi total ineficient n practic din
cauza ignorrii dificultilor numerice semnalate mai sus.
De regul creterea performanelor numerice ale unei metode teoretice se face
prin :

Reorganizarea procesului de calcul de aa manier nct s se


asigure diminuarea efectelor nefaste ale propagrii erorilor de rotunjire ca i o
vitez de calcul crescut. n acest fel s-a ajuns, de exemplu, la versiunea
revizuit a algoritmului simplex, versiune care st la baza celor mai multe
pachete de programe utilizate n rezolvarea programelor liniare.
4. Metoda simplex 77
Exploatarea structurii problemei de rezolvat care, n cazul unor
dimensiuni apreciabile are de obicei anumite proprieti "speciale". Un

exemplu edificator n acest sens l constituie diferitele metode de


descompunere sau de relaxare din programarea liniar. n principiu, aceste
metode reduc rezolvarea unei probleme de dimensiuni mari, cu structur
special la rezolvarea mai multor probleme mai mici i implicit mai uor de
manevrat.

Referindu-ne la eficacitatea practic a algoritmului simplex, dup o


jumtate de veac de experimente numerice i perfecionri teoretice, se poate
spune c acesta s-a dovedit a fi o procedur foarte robust fiind capabil s
rezolve programe liniare de dimensiuni impresionante coninnd sute de
restricii i mii de variabile.
Este de la sine neles c aceste performane n-ar fi fost posibile fr
utilizarea unor calculatoare din ce n ce mai puternice.

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