Sunteți pe pagina 1din 26

Capitolul I

Programare liniară
Algoritmul simplex primal
STORM SI EXCEL
Exemplu

Să se rezolve problema:
min z  x 1  x 2  3x3  5x 4

 x1  x 2  x3  x 4  1
 x1  2 x 2  3 x3 2 .
x  x 3
 1 2

 xi  0, i  1,...,4
Rezolvare
pasul 1:
Se aduce problema la forma standard:
min z  x1  x2  3 x3  5 x4
x  x  x  x  1


1 2 3 4

 x1  2 x2  3 x3  x 5  2
x  x  x6  3
 1 2

 xi  0, i  1,...,6
Matricea sistemului de restricţii este
1 1 1 1 0 0 
 
A   1 2 3 0 1 0
 11 0 0 0 1 
 
Se alege o bază. Deoarece
1 0 0
0 1 0 1  0,
0 0 1
rezultă că B={a4, a5, a6} formează o bază şi B-1=B.
Rezolvare

pasul 2:
Avem că x4, x5, x6 sunt soluţii bazice şi x1, x2, x3 sunt soluţii nebazice.
Înlocuind în sistem x1= x2= x3 =0 rezultă x4=1, x5=2 şi x6=3, deci B este o bază
primal admisibilă şi valoarea funcţiei obiectiv corespunzătoare este
B
z (x)= 0-0- 3  0 + 5  1=5
Rezolvare
pasul 3:
Valorile yij se determină din relaţia: aj=  y ji a i
iJ B

De exemplu a1=y14 a4+y15 a5+y16 a6, rezultă că


  1 1  0  0
       
 1   y 0
14    y 1
15    y16  0  ,
 1 0 0 1 
       
de unde vom obţine y14= -1, y15= 1, y16= 1.
În mod analog se calculează a2 şi a3:
a2=y24 a4+y25 a5+y26 a6, de unde obţinem y24= 1, y25= -2, y26= -1;
a3=y34 a4+y35 a5+y36 a6, de unde obţinem y34= 1, y35= 3, y36= 0.
Aceste valori sunt coloanele matricei A. În continuare determinăm
celelalte elemente:
z   ci xi  5  1  0  2  0  3  5 ,
iJ B

z 4B   ci y i 4  5  1  0  0  0  0  5 ;
iJ B

z 5B   ci y i 5  5  0  0  1  0  0  0 ;
iJ B

z 6B   ci y i 6  5  0  0  0  0  1  0 ;
iJ B
z1-c1=-5-1=-6; z2-c2=5-(-1)=6; z3-c3=5-(-3)=8; z4-c4 =z5-c5 =z6-c6=0.
Rezolvare
În tabel se completează T0 cu aceste valori.

5 0 0 1 -1 -3
B cB x
B i
a4 a5 a6 a1 a2 a3

a4 5 1 1 0 0 -1 1 1 1/1
T0 a5 0 2 0 1 0 1 -2 3 2/3*
a6 0 3 0 0 1 1 -1 0 -

zj 5 5 0 0 -5 5 5 -
zj-cj - 0 0 0 -6 6 8* -
Rezolvare
pasul 4:
Cum există diferenţe pozitive se continuă algoritmul şi se verifică dacă
pentru orice j JR pentru care z Bj  c j >0 există yij >0. În cazul nostru acest
lucru se întâmplă şi vom trece la instrucţiunea următoare. Se alege vectorul aj,
j JR de intrare în bază având în vedere că nu toate valorile z j  c j  0, pentru
orice j JR .
pasul 5:
B B
z
Se alege k JR astfel încât k  ck = max ( j  c j ), rezultă k=3.
z
jJ R
Cum există valori yij >0, rezultă că problema nu are optim infinit şi se
continuă algoritmul. În bază va intra a3.
Rezolvare

pasul 6:
 xi 
Se calculează i şi se alege l astfel încât  l  min   ( yik  0) .
j J B y
 ik 
Rezultă l=5 şi a5 iese din bază.
pasul 7:
Se completează T1 înlocuind vectorul a5 cu a3. Elementele tabelului se
obţin aplicând regulile date mai înainte.
Rezolvare

a4 5 1/3 -1/3 0 -4/3 -1 5/3 0 1/5*


a3 -3 2/3 1/3 1 1/3 1 -2/3 1 -
a6 0 3 0 0 1 1 -1 0 -
T1

zj -1/3 5 -8/3 0 -23/3 31/3 -3 -


zj-cj - 0 -8/3 0 -26/3 34/3* 0 -
Rezolvare
a2 -1 1/5 3/5 -1/5 0 -4/5 1 0 -
a3 -3 4/5 2/5 1/5 0 -1/5 0 1 -
T2 a6 0 16/5 3/5 -1/5 1 1/5 0 0 16*

zj -13/5 -9/5 -2/5 0 7/5 -1 -3 -


zj-cj - -34/5 -2/5 0 2/5* 0 0 -

a2 -1 13 3 -1 4 0 1 0
T3 a3 -3 4 1 0 1 0 0 1
a1 1 16 3 -1 5 1 0 0

zj -9 -3 0 -2 1 -1 -3 -
zj-cj - -8 0 -2 0 0 0 -
Programul STORM
şi
SOLVER-ul din Excel
Programul STORM
Programul STORM
Programul STORM
Programul STORM
Programul STORM
Programul STORM
Programul STORM
Programul STORM
Programul STORM
Prezentare SOLVER-Excel
PROGRAMARE LINIARĂ
A B C D
1 Units Profit/Unit Profit
Product
2 100 $13 $1.300
A
Product
3 100 $18 $1.800
B
Product
4 100 $22 $2.200
C
Total 300 $5.300
PROGRAMARE LINIARĂ
PROGRAMARE LINIARĂ
PROGRAMARE LINIARĂ
PROGRAMARE LINIARĂ
Microsoft Excel 10.0 Answer
Report
Worksheet:
[EXEMPLE.xls]Sheet1
Report Created: 08.12.2005
14:51:42

Target Cell (Max)


Original
Cell Name Value Final Value
Total
$D$5 B4*C4 0 5310,000018

Adjustable Cells
Original
Cell Name Value Final Value
Product A
$B$2 Units 0 50
Product B
$B$3 Units 0 210,000001
Product C
$B$4 Units 0 40

Constraints
Cell Name Cell Value Formula Status Slack
Not
$B$5 Total Units 300,000001 $B$5=300 Binding 0
Product C
$B$4 Units 40 $B$4<=40 Binding 0
Product B Not
$B$3 Units 210,000001 $B$3>=40 Binding 170,000001
Product A
$B$2 Units 50 $B$2>=50 Binding 0

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