Sunteți pe pagina 1din 9

6.

Algoritmul simplex
Cele dou teoreme realizeaz efectiv trecerea ctre o problem rezolvabil pe
calculator. ntr-adevr, deoarece o baz este un minor de ordinul m al matricii A i unei
baze i corespunde o unic soluie de baz rezult c sunt cel mult C m
n soluii de baz,
adic un numr finit. n acest moment s-ar prea c nu avem dect s lsm calculatorul
s calculeze toate soluiile de baz i valorile funciei obiectiv n cele admisibile gsind-o
prin comparare pe cea care d minimul sau maximul funciei printre acestea. Totui,
aceast variant se dovedete nepractic la o analiz mai atent, innd cont de
urmtoarele observaii:
1. faptul c numrul soluiilor de baz este finit ne asigur doar c problema se
va termina cndva, ceea ce, din punct de vedere economic, este evident
nemulumitor. Noi dorim ca problema s fie rezolvat n timp util, adic
repede. Rezolvnd problema ca mai sus vom avea, pentru o problem cu 50
20
variabile i 20 restricii, de calculat, listat i comparat C 50
soluii de baz,
adic n jur de 1020. Presupunnd c suntem dotai cu un supercalculator care
ar termina un miliard de baze pe secund, rezolvarea ar dura 3000 ani. De
altfel, o problem ca cea de sus este foarte mic n comparaie cu problemele
"serioase" ce au peste 1000 de variabile i 100 de restricii. n plus, un
calculator ca cel de sus nu exist nc, deci n nici un caz nu e disponibil
ntreprinderilor obinuite.
2. Cu algoritmul de mai sus vom gsi cea mai bun soluie dintre soluiile
admisibile de baz, fr ns s tim dac problema admite, de fapt, optim (ar
putea s aib optim infinit).
3. Nu vom ti dac un minor de mm este baz dect dup ce-i vom calcula
determinantul i nu vom ti dac soluia de baz corespunztoare este
admisibil dect dup ce o vom calcula.
4. Soluia optim, odat gsit, nu va fi recunoscut ca atare dect dup ce vom
calcula toate celelalte soluii de baz, chiar dac ea a aprut chiar la nceputul
calculelor.
n concluzie, pentru a fi eficient, un algoritm ar trebui s aib urmtoarele
proprieti:
a) s dispun de un criteriu de recunoatere a faptului c problema nu are soluii
admisibile;
b) s dispun de un criteriu de recunoatere a faptului c problema are optim
infinit;
c) s dispun de un criteriu de recunoatere dac o soluie este optim sau nu;
d) s treac de la o soluie de baz admisibil la una cel puin la fel de bun (o
soluie x este mai bun dect o soluie y dac f(x) > f(y) ntr-o problem de
maxim i f(x) < f(y) ntr-o problem de minim;
e) s treac de la o soluie la cea mai bun dintre soluiile cel puin la fel de bune
posibile ca succesoare;
f) s nu revin la o soluie deja analizat;

g) s efectueze un numr de iteraii comparabil polinomial cu dimensiunea


problemei.
h) s nu introduc erori de rotunjire (sau nu prea mari);
i) s fie ct mai simplu de implementat;
Condiiile de mai sus reprezint de fapt un algoritm ideal. La nceputurile
cercetrii operaionale era suficient, de fapt, i un algoritm care s ndeplineasc mcar
condiiile b), c), d), e) i h). Acest algoritm a fost dat de G.B. Dantzig, n 1947, care la
numit algoritmul simplex. El rmne i n zilele noastre cel mai eficient algoritm n ceea
ce privete viteza de lucru, simplitatea i implementarea pe calculator, pentru problemele
care apar efectiv n practica economic.
Totui, el nu ndeplinea condiiile a), f) i g).
Condiia a) este relativ uor de ndeplinit i ea este acoperit prin introducerea
unei faze iniiale suplimentare la algoritmul simplex, rezultnd algoritmul simplex n
dou faze.
Condiia f) a fost pus n momentul n care s-a observat c, n condiiile existenei
soluiilor degenerate, se poate ajunge n situaia cnd, de la o soluie dat, nu se poate
ajunge dect la una la fel de bun i tot aa, astfel nct, dac nu se iau msuri de evitare,
se poate ajunge la o soluie care a mai fost, fenomen numit ciclare. Astfel de exemple a
fost efectiv gsite, unul fiind exemplul lui Beale prezentat mai jos:

3
1
x 4 20x 5 x 6 6x 7
4
2
1
x 4 8x 5 x 6 9x 7 0
4
1
1
x 4 12x 5 x 6 3x 7 0
2
2
x6
1
x i 0, i 1,...,7

max f

x1

x2

x3

Se observ imediat baza admisibil B0 = (a1,a2,a3), de la care, aplicnd algoritmul


sub forma clasic, se vor obine succesiv bazele admisibile B 1 = (a4,a2,a3), B2 = (a4,a5,a3),
B3 = (a6,a5,a3), B4 = (a6,a7,a3), B5 = (a6,a2,a3), B6 = (a4,a2,a3) ... . Cititorul poate verifica uor
c toate aceste baze au ca soluie de baz soluia (0,0,1,0,0,0,0) i valoarea funciei 0, dar
nu ndeplinesc condiia de optim. Pe de alt parte se vede c B 6 = B1 i deci algoritmul va
repeta la infinit aceast succesiune de baze, neatingnd niciodat valoarea maxim
corespunztoare soluiei (

7
,
4

3
,0,0,1,0,1,0).
4

Aceast situaie este ngrijortoare nu att din considerente practice imediate (nc
nu a fost gsit o problem din practic la care s apar acest fenomen, toate exemplele
existente fiind artificial construite, ca i cel de mai sus) ct din faptul c un algoritm
implementat pe calculator s-ar putea s fie pus n faa unei astfel de probleme, situaie n
care n-am putea rezolva problema nici pe calculator, nici manual, ea fiind prea mare.
Situaia a fost depit prin diferite tehnici suplimentare adugate celei de trecere la o

soluie cel puin la fel de bun (insuficient, cum s-a vzut), cea mai cunoscut fiind cea
care folosete ordonarea lexicografic a soluiilor, care va fi prezentat i n aceast
carte.
n fine, referitor la condiia g), a durat mult timp pn s-a demonstrat c
algoritmul, sub aceast form, nu este n timp polinomial, un exemplu fiind clasa de
probleme de mai jos, gsit de Klee i Minty n 1972, n care algoritmul trebuie s
analizeze 2n baze (n = numrul de necunoscute) pn la gsirea celei optime.

max f

10

n- j

xj

j1

10 i - j x j x i 100 i -1 i 1,..., n

j1

x j 0 j 1,..., n
i -1

Pentru o astfel de problem, la 100 de variabile, algoritmul va avea 2 100 1030


iteraii, i chiar la o vitez de un miliard iteraii pe secund (mult peste puterea unui
calculator actual) va termina n 1013 ani.
Nu se tie nc dac exist sau nu o alt modalitate de trecere de la o baz la alta,
folosind tabelele simplex, prin care algoritmul s devin n timp polinomial. Au fost ns
gsii algoritmi care nu folosesc tabelele simplex, primul fiind algoritmul de punct
interior al lui Karmakar, despre care s-a demonstrat c lucreaz n timp polinomial.
n ceea ce privete erorile de rotunjire, inevitabile cnd se fac calculele pe un
calculator, algoritmul se comport ntr-adevr foarte ru, orice eroare propagndu-se
imediat la tot tabelul cu efecte foarte mari. Acest lucru poate fi ns depit aplicnd o
variant a algoritmului, numit varianta revizuit a algoritmului simplex.
Toate punctele slabe ale algoritmului, amintite mai sus, nu au nmormntat ns
algoritmul simplex, deoarece folosirea acestuia aduce informaii mult mai ample dect
gsirea soluiei propriu-zise, este mult mai maleabil n cazul modificrilor ulterioare ale
datelor problemei (vezi analiza senzitivitii soluiei la datele problemei), se preteaz
mult mai bine la interpretri economice, este uor de scris un program de calculator
asociat, este implementat pe foarte multe calculatoare i n plus, aa cum aminteam mai
sus, nc nu a aprut o problem practic n faa cruia s clacheze. Noii algoritmi
rmn doar ca alternative teoretice sau pentru cazurile n care algoritmul simplex este
lent, dar ei nu-l pot nlocui complet.
Se consider problema de programare

j 1

min f c j x j in conditiile restrictive

a x
j 1

ij j

bi , 1 i m, bi 0

x j 0, 1 i n
i un program de baz

X . Dup unele renumerotri i rearanjri putem considera


T
X x1 , x2 ,..., xm ,0,0,...,0 ; deci variabilele x1 , x2 ,..., xm sunt principale iar
xm 1 ,..., xn secundare, iar vectorii coloan a1 , a 2 ,..., a m formeaz baza B a programului
m 1
m 2
n
de baz X . Fie N a , a ,..., a .
Mai notnd:
x1

x m 1

c1

X p ; X s ; Cp ;

xm
xn
cm
min f X

B X p

cm1

problema poate fi scris:

cn

Cs

CT
C sT X
p X p
N Xs L
X 0

nmulind BX p NX s L la stnga cu B 1 obinem:

E X

B 1 N X

B 1 L

care reprezint transcrierea sistemului de restricii n baza B, cci dac scriem


m

a j zij a i , 1 j n (exprimarea vectorilor coloan n funcie de vectorii bazei B)


i 1

vom avea:
z ij

ij

pentru 1 i, j m si z ij 0 pentru m + 1 j n. Corespunztor programului

problema devine:

c
i 1

xi

j m 1

xi

x j xi

ij

Deci x sunt componentele vectorului L n baza B.


Atunci
X

X
f X

B 1 NX

C Tp X p

CsT

Xs

C Tp

NX s CsT X s

NX
C Tp

de unde
i atunci

X CsT C Tp B 1 N X s

sau explicit:

fX

ci xi
i 1

Notnd:

c x
i 1

j m 1

cj

c
i 1

z ij x j

i i

c z

Z si

i 1

i ij

Z j , m 1 j n avem

c
n

j m 1

Observm c Z f X si Z Cp B L.
Acum putem asocia problemei PL- min urmtorul tabel:
Cp

vector
ii
bazei
Cj Z j

c1
a1

c2
a2

cn
an

z11

z12

zm1

zm2

...

z1ncomponente

le bazice ale

...

zmmlui X

.............................
............

f X

Teorema 1. Dac X este un program de baz pentru PL - min i n tabelul simplex


avem

c j Z j 0 m 1 j n atunci X

este program optim.

Demonstraie:Avem:
n

cj Zj x j f X

f X f X

j m1

optim.

pentru orice program admisibil X. Deci X este

Teorema2. Dac X este un program de baz i n tabelul simplex asociat exist


un t, m 1 t n, astfel nct

ct Zt 0 si zit 0 1 i m , atunci PL - min nu are optim

finit.
Demonstraie: Fie:
x t ,
xi

xi

X x1 , x 2 ,..., x n

unde:

zit ; 1 i m
m 1 j n, j t

Astfel avem

x j 0 1 j n.

Pentru 1 i m avem:
n

j 1

x j 0;

ij x j

a
j 1

ij x j

j m 1
n

a x
ij

j 1

z jt a it

(folosind (9))
aij x j
z jh x h
aij z jt ait

j 1
h m1
j 1
m
m
m
n

aij x j
aij
z jh x h a it ait
aij x j
h m1

j 1
j 1
j 1
m

ij x j

a
j 1

ij x j

h m1 j 1

ij z jh x h

a
j 1

ij x j

h m1

X este soluie admisibil. Avem:

f X

j 1

c j x j

j m1

j 1

Zj x j

j 1

h m1

j 1 h m1

j 1

c x c
j

a
j 1

ij z jt

a it

ij z jh x h

a
j 1

ij x j

Deci

x j a ij

j m1

ij z jh

aij x j

j 1

x a

x h aih (renot m pe h cu j)

ij x j

a
j 1

ij x j

bi

Zt

din definirea lui X .


Deoarece 0 si c t Zt 0 atunci f X
are optim finit.

, adic funcia obiectiv nu

Teorema 3. Dac X este un program de baz pentru PL - min, iar n tabelul


simplex asociat exist un t, m 1 t n cu c t Z t 0 i cel puin un indice i, 1 i m ,
astfel nct zit 0 , atunci alegnd s, 1 s m , dup criteriul:
xi

x s
min
/ 1 i m, z it 0
z st
z it

se poate substitui n baza B vectorul a s cu vectorul a t , obinnd o baz B' ,


corespunztoare unui program de baz X ' care amelioreaz valoarea funciei obiectiv.

Demonstraie. Deoarece z st 0, folosind lema substituiei rezult c nlocuind a s


n B cu a t sistemul de vectori nou obinut B' , este o baz. Soluia de baz
corespunztoare lui B' este dat tot de lema substituiei:

x s
z it , 1 i m,i s
x x
z
st

x s' 0
'
i

x ' xs 0
t

z st

'
x j 0, m 1 j n, j t

cu toate componentele nenegative (pentru 1 i m, i s dac z it 0 atunci


x s
x i' x i
zit , deci o sum de numere nenegative; iar dac zit 0 avem
z st

xi xs
i innd seama de (14) nseamn c xi' este produs de dou numere
z
it zst
nenegative).
T
Deci X ' x1' , x2' ,..., xn' este o soluie de baz. Valoarea funciei obiectiv pentru X '
este:
xi' zit

c j Z j x 'j f X ct Z t x t' f X .

f X ' f X

j m1

Acum putem prezenta algoritmul simplex pentru o problem PL - min n form


standard.
-Pasul 10: Se gsete un program de baz nedegenerat X cu baza B; se construiete
tabelul simplex (S).
-Pasul 2 : Se verific dac diferenele c j Z j 0 pentru orice j ,1 j n . Dac DA se
trece la pasul 5; dac NU, dintre toate diferenele c j Z j , negative, se alege cea mai
mic. Indicele j corespunztor s-l notm cu t. (Dac exist mai muli t se alege primul de
la stnga la dreapta). Vectorul a t va intra n baz. Se cerceteaz dac zit 0 pentru
1 i m. Dac DA, se trece la pasul 4, dac NU, se trece la pasul 3.
xi

xs

min
/ 1 i m, zit 0 .
-Pasul 3 : Se alege s, astfel nct

zst
zit

s
Vectorul a va iei din baz. Elementul zst devine pivot. Se construiete un nou tabel
simplex folosind regula dreptunghiului:
a) se mparte linia pivotului la pivot.
b) n coloana pivotului, elementele zsj cu j t se nlocuiesc cu 0
zit zsj
c) elementele zij , cu i s, j t se nlocuiesc cu z 'ij zij
.
zst

Se obine un alt program de baz X ' cu baza B' i o nou valoare a funciei obiectiv.
Se revine la pasul 2 cu B B' i X X '
-Pasul 40 .Concluzie: PL - min nu are optim finit I algoritmul se oprete.
-Pasul 5 .Concluzie: PL - min are optim X iar valoarea minim f X ". STOP.
Exemplul . Fie problema:

min f 5x1 7x2 9x3 2x4 x5


3x 1 2 x 2 x 3 5x 4 3x 5 7

x j 0 j 12, ,. . ,5

2 x 1 x 2 x 3 3x 4 x 5 4
Alegem

X 1,2,0,0,0

. Avem:

3
2
1
5
3
a1 ; a 2 ; a 3 ; a 4 ; a 5
2
1
1
3
1

B a1 , a 2

procedeaz

astfel:

Coordonatele vectorilor a 1 si a 2 n baza B sunt


se
a3
1, 2 R , deci:

coordonatele
lui
3
1
2
a 1a 2 a ,

3 2 1 3 1 2 2 1
ceea ce ne d
1 2
2 1 1 2 1 2 1

, respectiv

. Pentru a afla

punem

1 1, 2 1 . Deci n baza B,

1
1
4
5
. Analog se gsesc: a B , a B

1
1
3

a B3

Aadar tabelul simplex corespunztor bazei B are forma:


5
a1
5
7

a1
a2

1
-1

7
a2

9 2 1
a 3 a 4 a5

1
3

1
2

0
1 -1
1
0
0
11 -10 19
-15
Deci a 5 intr n baz, a 2 iese din baz, z25 - pivot. Se execut pivotajul i obinem:

cj Z j

5
1

a1
a5

1 1/3 2/3 4/3

0 1/3 -1/3 1/3

5/ 3
2/3

5 / 3
0

0
0

2 / 3

X '

f X ' 9

cj Z j

1/ 2
1 / 2

1
0

-5

Intr n baza a 4 i iese a 1 .


2
1

a4

a
cj Z j

am

0,0,0,5 / 4,1 / 4 T
observaia c

3/ 4
1 / 4

1/ 4
1/ 4

15/4 25/4

0 0

11 / 4

c j Z j 0 1 j 5. Deci

obinut
cu min f =

17/2

0 5/ 4
1 1/ 4

11
4

programul

optim

este

Algoritmul se aplic i problemelor PL - max n forma standard cu


. De asemenea algoritmul se aplic i n cazul n care

max f min f

funcia obiectiv are forma

c x
j

, R ,

deoarece punctele de extrem ale acesteia

j 1

sunt aceleai cu punctele de extrem ale funciei:

c
j 1

jxj.

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