|
FUNDAMENTELE ALGORITMULUI SIMPLEX
Consideram problema de programare liniara sub forma standard:
min (max) (z = c'x)
Ax = b (1)
x 0
unde
A I Mm,n(R) , b I Rm , c I Rn , x I Rn
Presupunem in plus ca liniile matricei A sunt liniar independente (rang(A) = m n
Luam in discutie cazul m<n, deoarece in caz contrar problema de optimizare este triviala.
In detaliu, problema (1) devine:
min (max) (z =)
(2)
.
Definitia 1. (i). Vectorul x I Rn se numeste program al problemei (1) daca satisface sistemul de restrictii, deci daca Ax = b, x0.
(ii). Programul x se numeste program de baza al problemei (1) daca coloanele matricei A, corespunzatoare componentelor nenule ale lui x sunt liniar independente.
(iii). Programul de baza x se numeste nedegenerat daca are exact m componente nenule si degenerat in caz contrar.
(iv). Se numeste program optim al problemei (1) un program care confera functiei obiectiv valoarea optima.
Notam cu P si respectiv cu S multimea programelor, respectiv multimea programelor optime ale problemei (1):
Observatii. (i). Un program de baza are cel mult m componente nenule.
(ii). Oricarei baze B ce se obtine din matricea A, (BI Mm(R), rang B = m), care satisface proprietatea ca , i se asociaza programul de baza
unde, xB=B-1b, xS = 0 si invers (oricare program de baza corespunde cel putin unei baze B).
(iii). Daca B este o baza si A = ( B S ), sistemul Ax = b este echivalent cu
xB = B-1b - B-1SxS (3)
sau, mai detaliat :
, (4)
unde am notat :
si . (5)
Am folosit notatia simplificata urmatoare:
.
(iv). In baza relatiei (3) functia obiectiv poate fi exprimata numai cu ajutorul variabilelor secundare astfel:
(6)
unde:
(7)
(8)
Intr-adevar,
Fie acum x un program de baza corespunzator bazei B, adica () si
Presupunem in cele ce urmeaza ca si ca problema (1) este problema de minimizare.
Teorema 1. (Test de optimalitate).
Daca , atunci problema de programare liniara (1) are optim finit; B este baza optima, un program optim este , iar valoarea optimului este .
Demonstratie. Din (6) deoarece si rezulta ca , prin urmare B este baza optima, iar este valoarea functiei obiectiv.
Teorema 2.
Daca exista astfel incat atunci programul asociat bazei B nu este optim (cu exceptia eventual a cazului cand programul este degenerat) si el poate fi imbunatatit daca
Demonstratie. Din (6) tinand seama de faptul ca si rezulta
,
deci baza B nu mai ramane optima, existand o baza mai buna care se obtine din baza B prin introducerea in baza a coloanei (variabilei) ak (xk).
Teorema 3. (Criteriul de imbunatatire a programului).
Daca exista cu si cu , atunci poate creste pana la valoarea:
(9)
pentru care se obtine un nou program de baza asociat bazei:
Demonstratie. Intr-adevar, datorita conditiei , cresterea lui este limitata de minimul mentionat in enunt, deoarece pentru a nu iesi din tronsonul programelor, adica pentru ca , din (5) rezulta:
, adica,
.
In ipoteza ca minimul se atinge pentru indicele , atunci poate creste pana la valoarea (9).
Teorema 4. (Criteriul de recunoastere a infinititudinii optimului).
Daca existacu si daca pentru toti , atunci problema are optim infinit (-).
Demonstratie. Din (4) deoarece rezulta ca:
,
deci xk poate creste nemarginit (), iar din (6) rezulta ca:
.
Observatie. Functia obiectiv tinde catre de-a-lungul razei:
In cazul problemei (1) de maximizare teoremele 1 - 4 devin:
Teorema 1'. Daca, atunci problema de programare liniara (1) are optim finit; B este baza optima, un program optim este , iar valoarea optimului este .
Teorema 2'. Daca exista astfel incat atunci programul asociat bazei B nu este optim (cu exceptia eventual a cazului cand programul este degenerat) si el poate fi imbunatatit daca
Teorema 3'. Daca exista cu si cu , atunci poate creste pana la valoarea:
pentru care se obtine un nou program de baza asociat bazei:
Teorema 4'. Daca exista cu si daca pentru toti , atunci problema are optim infinit (+).
Observatie. Oricarei baze B i se asociaza sistemul de valori; .
Aceste valori se trec intr-un tabel, numit tabel simplex, de forma urmatoare:
c1
cl
cm
cm+1
ck
cn
cj
VB
VVB
x1
xl
xm
xm+1
xk
xn
c1
x1
1
0
0
cl
xl
0
1
0
cm
xm
0
0
1
0
0
0
0
Am presupus ca primele m variabile (coloane) sunt variabile (coloane) de baza.
Algoritmul simplex este o metoda de explorare sistematica si economica a programelor de baza ale unei probleme de programare liniara, sau, cu alte cuvinte, o metode de trecere de la un program de baza la altul in sensul optimizarii (maximizarii, sau minimizarii) functiei obiectiv, pana la atingerea optimului, daca acesta exista.
Algoritmul simplex este asadar un algoritm iterativ, fiecare iteratie corespunde unei baze (unui program de baza, unui tabel simplex).
Prima linie si prima coloana a tabelului simplex sunt utile numai la prima iteratie a algoritmului simplex.
Teorema 5. Formulele de transformare ale tabelului simplex prin trecere de la baza la sunt:
; ,;
, ; , , ;(10)
;
, .
Demonstratie. Se folosesc relatiile (5) si (6). Din (5), pentru i = l rezulta:
,
si mai departe
,
de unde, prin identificare, rezulta primele doua relatii din (10). Am notat: si .
In aceeasi relatie (5) inlocuim pe obtinut mai sus si rezulta:
,
de unde, prin identificare, rezulta urmatoarele doua relatii din (10).
Ultimele doua relatii din (10) se obtin, tot prin identificare, din relatia (6) in care folosim aceeasi expresie a lui rezultata din (5):
Algoritmul simplex in cazul problemei (1) de minimizare consta in urmatoarele:
Pasul 1.Se determina o baza initiala (de preferat );
Se calculeaza , , , si se intocmeste tabelul simplex corespunzator bazei .
Pasul 2.Testul de optimalitate si criteriul de intrare in baza
2.1. Daca pentru toti , atunci baza este
optima, deci programul corespunzator bazei ,
este programul optim, iar este valoarea optima a
functiei obiectiv. STOP.
2.2. Daca exista astfel incat atunci baza
nu este optima si ea poate fi imbunatatita introducand in baza pe .
Luam astfel incat .
Pasul 3.Criteriul de iesire din baza.
3.1. Daca exista astfel incat si,
, atunci problema are optim infinit. STOP.
3.2. Daca exista astfel incat si exista astfel incat , atunci se determina astfel incat:
In acest caz iese din baza.
Pasul 4.Se trece de la baza la ,
,
se transforma tabelul simplex dupa formulele date de teorema 5 si se reia algoritmul de la pasul 2.
Observatie. In cazul in care problema este de maximizare Pasul 2 devine Pasul 2', iar Pasul 3 devine Pasul 3':
Pasul 2'.Testul de optimalitate si criteriul de intrare in baza
2'.1. Daca pentru toti , atunci baza este
optima, deci programul corespunzator bazei ,
este programul optim, iar este valoarea optima a
functiei obiectiv. STOP.
2'.2. Daca exista astfel incat atunci baza
nu este optima si ea poate fi imbunatatita introducand in baza pe .
Luam astfel incat .