Sunteți pe pagina 1din 15

1.1.

ALGORITMUL SIMPLEX 3

Paşii algoritmului simplex:

• Pasul 0: Pentru forma standard a problemei de programare liniară


se scrie matricea A şi se identifică baza unitară B (presupunând că
există).
Fie x1 , x2 , · · · , xm variabilele bazice (adică, variabilele corespunzătoare,
ı̂n sistemul de restricţii, vectorilor bazei unitare B).
În sistemul de restricţii se consideră celelalte
0 variabile egale
1 cu zero,
x 1 = b1
B x 2 = b2 C
B C
obţinându-se soluţia iniţială de bază X B = B .. C
@ . A
x m = bm
Se ı̂ntocmeşte tabelul:

c1 c2 cj cn
B CB XB ··· ···
a1 a2 aj an
a1 c1 b1 a11 a12 ··· a1j ··· a1n
a2 c2 b2 a21 a22 ··· a2j ··· a2n
.. .. .. .. .. .. .. ..
. . . . . . . .
am cm bm am1 am2 ··· amj ··· amn
1 2 ··· j ··· n

• Pasul 1: Se calculează diferenţele j , 8j = 1, n:



zj cj ı̂n cazul problemei de minim,
j =
cj zj ı̂n cazul problemei de maxim,

Diferenţele j pentru j = 1, . . . , m (adică cele corespunzătoare vecto-


rilor bazei) sunt egale cu zero.
Pentru calculul diferenţelor j, cu j = m + 1, . . . , n, avem zj =
P
m
ci aij , 8j = m + 1, . . . , n.
i=1

1. Dacă j  0, 8j = m + 1, . . . , n, STOP; X B este conform crite-


riului de optim, soluţia optimă.
2. Dacă există indici j = m + 1, . . . , n pentru care j > 0 se aplică
criteriul de intrare ı̂n bază alegându-se diferenţa k = max j
m+1jn
k
care indică vectorul a ce intră ı̂n noua bază.
4 CAPITOLUL 1. ...

3. Dacă toate componentele vectorului ak sunt mai mici sau egale


cu zero, STOP, problema are optim infinit.
Dacă vectorul ak are şi componente pozitive, pentru acestea se
bi
calculează rapoartele şi se alege cel mai mic raport. Dacă
aik
acesta se realizează pentru indicele l:

bi bl
✓0 = min{ }= ,
aik alk

conform criteriului de ieşire din bază, vectorul al părăseşte baza


fiind ı̂nlocuit cu ak . Se obţine o nouă bază. Elementul de la
intersecţia liniei l cu coloana k se numeşte pivot.

• Pasul 2: Se reface tabelul simplex pentru noua bază:

1. Se scrie noua bază ı̂n tabel, pe coloana lui B;


2. În coloana C, se ı̂nlocuieşte cl cu ck ;
3. Începând cu coloana lui X B , linia l a pivotului se scrie ı̂mpărţită
la pivot;
4. Se completează vectorii unitari ai noii baze;
5. Celelalte elemente ale tabelului se calculează conform formulelor
de schimbare a bazei, cu regula ”dreptunghiului”;
Exemplificăm ”regula dreptunghiului”: dacă pivotul este pe linia
i şi coloana j ı̂n tabel, adică este elementul aij şi trebuie calculat
elementul situat la intersecţia liniei r cu coloana s, adică ars , con-
struim un dreptunghi imaginar, ducând prin cele două elemente
aij şi ars , drepte paralele cu laturile tabelului. La intersecţia
acestor drepte se vor obţine celelalte două vârfuri ale dreptun-
ghiului, ais şi arj . Atunci, elementul ce trebuie calculat este egal
aij · ars ais · arj
cu
aij
6. Se calculează diferenţele j şi se reiau Paşii 1 şi 2.

Când ı̂n aplicarea algoritmului simplex matricea A nu conţine baza uni-


tară, iar aceasta nu apare nici după efectuarea compensărilor cu ajutorul
variabilelor ecart, se poate apela la următoarele tehnici ale bazei artificiale:

1) Metoda celor două faze:


6 CAPITOLUL 1. ...

Dacă pentru toţi indicii i1 , i2 , . . . , ip se verifică condiţia


anterioară, atunci rangul matricei A este m p şi prin
eliminare, ca mai sus, a liniilor is m şi a coloanelor
ai1 , ai2 , . . . , aip , se obţine o nouă bază primal admisibilă.
În faza a doua, cu această bază primal admisibilă, se
rezolvă cu algoritmul simplex, problema iniţială.
b) dacă pentru un vector artificial din bază nu toate elemen-
tele de pe linia respectivă sunt zero, de exemplu aiq k 6= 0,
şi k corespunzător este zero, se ı̂nlocuieşte aiq cu ak
obţinându-se o nouă bază. Dacă nu se pot elimina toate
coloanele corespunzătoare variabilelor artificiale (vectorii
artificiali), problema iniţială nu are soluţii.
2) min(xa1 + xa2 + · · · + xam ) > 0. În acest caz prima problemă nu are
soluţie.

Observaţie 1
1) Prima fază se consideră ı̂ncheiată ı̂n momentul ı̂n care vectorii
artificiali au fost eliminaţi din bază.
2) Dacă ı̂n problema iniţială matricea A conţine câţiva vectori uni-
tari, atunci se vor adăuga atâtea variabile artificiale cât este ne-
cesar pentru completarea bazei, iar ı̂n prima fază se minimizează
doar aceste variabile artificiale.

2) Metoda penalizării:
Se consideră problema de programare liniară:

min[Z = C T X]
AX = b (1.3)
X 0,

pentru care matricea A a sistemului de restricţii nu conţine bază uni-


tară. Se adaugă fiecărei restricţii o variabilă artificială xai 0, 8i =
1, . . . , m. Aceste variabile artificiale vor crea ı̂n matricea sistemului de
restricţii o bază unitară. Variabilele artificiale vor fi adăugate şi ı̂n
funcţia obiectiv, cu coeficienţi egali cu M , un număr foarte mare, po-
zitiv, care nu va permite funcţiei obiectiv să-şi atingă minimul decât
atunci când ı̂n soluţia optimă nu vor mai fi variabile artificiale. În ca-
zul ı̂n care problema este de max variabilele artificiale vor fi adăugate
ı̂n funcţia obiectiv, cu coeficienţi egali cu M , unde M este număr
foarte mare, pozitiv.
1.2. PROBLEME REZOLVATE 7

Se rezolvă cu algoritmul simplex problema:

min[Z = C T X + M X a ]
AX + IX a = b (1.4)
X, X a 0,

Pe parcursul aplicării algoritmului simplex se pot ı̂ntâlni următoarele


situaţii:

1) Toţi vectorii artificiali au părăsit baza. În acest caz se continuă


algoritmul simplex până se obţine soluţia optimă.
2) Când algoritmul simplex s-a ı̂ncheiat, ı̂n baza optimă au rămas
variabile artificiale. În acest caz:
? dacă variabilele artificiale rămase ı̂n soluţia optimă au toate
valoarea zero, problema iniţială are soluţie;
? dacă variabilele artificiale rămase ı̂n soluţia optimă nu au
toate valoarea zero, problema iniţială nu are soluţie.

1.2 Probleme rezolvate


Exerciţiul 2 Să se afle

min[Z = x1 + 2x2 x3 ]

ştiind că 8
< x1 + 2x3 + x4 + 3x5 = 3
x2 + 3x3 x4 + 2x5 = 4
:
x1 , x2 , x3 , x4 , x5 0.
Rezolvare.
Matricea sistemului de restricţii este:
✓ ◆
1 0 2 1 3
A=
0 1 3 1 2

Baza este:
B = {a1 , a2 }.
Pentru determinarea soluţiei iniţiale de bază X B , ı̂n sistemul de condiţii se
fac toate variabilele ne bazice, adică x3 , x4 , x5 , egale cu zero.
Rezultă X B = (3, 4, 0, 0, 0).
8 CAPITOLUL 1. ...

c1 = 1 c2 = 2 c3 = 1 c4 = 0 c5 = 0
B CB XB ✓
a1 a2 a3 a4 a5
3
a1 1 3 1 0 2 1 3 ✓1 = 2
4
a2 2 4 0 1 3 1 2 ✓2 = 3

j = zj cj 0 0 9 1 7

Se observă că cea mai mare valoare j , j = 1, 2, 3, 4, 5 este 3 = 9, deci


vectorul a3 va intra ı̂n bază. Se calculează, pentru toate valorile aik > 0,
rapoartele
xB
✓i = i , i = 1, 2; k = 3
aik
corespunzătoare coloanei a3 , adică: ✓1 = 32 , ✓2 = 43 şi se alege dintre ele
cea mai mică valoare: ✓2 . Aşadar vectorul a2 va părăsi baza. Pivotul este
elementul 3 din coloana lui a3 . În noul tabel, c-ul corespunzător vectorului
a2 din bază se va ı̂nlocui cu c-ul corespunzător vectorului a3 care intră ı̂n
bază, adică c3 = 1. Linia pivotului, ı̂n noul tabel, se va trece ı̂mpărţită la
pivot. Coloana pivotului, ı̂n noul tabel, se va completa cu zerouri. Restul
elementelor se calculează cu regula “dreptunghiului”.
Tabelul se continuă astfel:
c1 = 1 c2 = 2 c3 = 1 c4 = 0 c5 = 0
B CB XB ✓
a1 a2 a3 a4 a5
1 2 5 5 3
a1 1 3 1 3 0 3 3 ✓1 = 2
4 1 1 2
a3 1 3 0 3 1 3 2

j = zj cj 0 3 0 2 1

Se observă că cea mai mare valoare j , j = 1, 2, 3, 4, 5 este 4 = 2,


deci vectorul a4 va intra ı̂n bază. Cum singurul raport pozitiv este ✓1 = 15 ,
rezultă că vectorul a1 va părăsi baza. Pivotul este elementul 53 din coloana
lui a4 . În noul tabel c-ul corespunzător vectorului a1 din bază se va ı̂nlocui
cu c-ul corespunzător vectorului a4 care intră ı̂n bază, adică c4 = 0. Linia
pivotului, ı̂n noul tabel, se va trece ı̂mpărţită la pivot. Coloana pivotului,
ı̂n noul tabel, se va completa cu zerouri. Restul elementelor se calculează cu
regula “dreptunghiului”.
Tabelul se continuă astfel:
1.2. PROBLEME REZOLVATE 9

c1 = 1 c2 = 2 c3 = 1 c4 = 0 c5 = 0
B CB XB ✓
a1 a2 a3 a4 a5
1 3 2 3
a4 0 5 5 5 0 1 1 ✓1 = 2
7 1 1
a3 1 5 5 5 1 0 1
6 11
j = zj cj 5 5 0 0 1

Nemaiavând niciun j > 0, algoritmul se opreşte.


Soluţia optimă este: Xoptim = (0, 0, 75 , 15 , 0) şi deci Zmin = 7
4
.

Exerciţiul 3 Să se afle

max[Z = 5x1 + 3x2 ]

ştiind că 8
< 2x1 + x2  8
x1 + 2x2  7
:
x1 , x2 0.
Rezolvare.
Se aduce problema la forma standard adăugând ecarturile xe3 , xe4 0:

max[Z = 5x1 + 3x2 + 0 · xe3 + 0 · xe4 ]



2x1 + x2 + xe3 = 700
x1 + 2x2 + xe4 = 250.
Matricea sistemului de restricţii este:
✓ ◆
2 1 1 0
A=
1 2 0 1

Baza este:
B = {a3 , a4 }.
Pentru determinarea soluţiei iniţiale de bază X B , ı̂n sistemul de condiţii se
fac toate variabilele ne bazice, adică x1 , x2 , egale cu zero.
Rezultă X B = (0, 0, 8, 7).

c1 = 5 c2 = 3 c3 = 0 c4 = 0
B CB XB ✓
a1 a2 a3 a4
8
a3 0 8 2 1 1 0 ✓1 = 2
7
a4 0 7 1 2 0 1 ✓2 = 1

j = cj zj 5 3 0 0
10 CAPITOLUL 1. ...

Se observă că cea mai mare valoare j , j = 1, 2, 3, 4 este 1 = 5, deci


vectorul a1 va intra ı̂n bază. Se calculează şi rapoartele

xB
i
✓i = , i = 1, 2; k = 1
aik
corespunzătoare coloanei a1 , adică: ✓1 = 82 , ✓2 = 71 şi se alege dintre ele
cea mai mică valoare: ✓1 . Aşadar vectorul a3 va părăsi baza. Pivotul este
elementul 2 din coloana lui a1 . În noul tabel, c-ul corespunzător vectorului
a3 din bază se va ı̂nlocui cu c-ul corespunzător vectorului a1 care intră ı̂n
bază, adică c1 = 5. Linia pivotului, ı̂n noul tabel, se va trece ı̂mpărţită la
pivot. Coloana pivotului, ı̂n noul tabel, se va completa cu zerouri. Restul
elementelor se calculează cu regula “dreptunghiului”.
Tabelul se continuă astfel:
c1 = 5 c2 = 3 c3 = 0 c4 = 0
B CB XB ✓
a1 a2 a3 a4
1 1 4
a1 5 4 1 2 2 0 ✓1 = 1
2
3 1 3
a4 0 3 0 2 2 1 ✓2 = 3
2
1 5
j = cj zj 0 2 2 0

Se observă că cea mai mare valoare j , j = 1, 2, 3, 4, 5 este 2 = 12 , deci


vectorul a2 va intra ı̂n bază. Se calculează şi rapoartele

xB
i
✓i = , i = 1, 2; k = 2
aik
4 3
corespunzătoare coloanei a2 , adică: ✓1 = 1 , ✓2 = 3 şi se alege dintre ele
2 2
4
cea mai mică valoare: ✓2 . Aşadar vectorul a va părăsi baza. Pivotul este
elementul 32 din coloana lui a2 . În noul tabel c-ul corespunzător vectorului
a4 din bază se va ı̂nlocui cu c-ul corespunzător vectorului a2 care intră ı̂n
bază, adică c2 = 3. Linia pivotului, ı̂n noul tabel, se va trece ı̂mpărţită la
pivot. Coloana pivotului, ı̂n noul tabel, se va completa cu zerouri. Restul
elementelor se calculează cu regula “dreptunghiului”.
Tabelul se continuă astfel:
c1 = 5 c2 = 3 c3 = 0 c4 = 0
B CB XB ✓
a1 a2 a3 a4
2 1
a1 5 3 1 0 3 3
1 2
a2 3 2 0 1 3 3
7 1
j = cj zj 0 0 3 3
1.2. PROBLEME REZOLVATE 11

Nemaiavând niciun j > 0, algoritmul se opreşte.


Soluţia optimă este: Xoptim = (3, 2, 0, 0) şi deci Zmax = 21.

Exerciţiul 4 O companie produce trei tipuri de plăci PAL.


Tipul A necesită, per coală, 5 kg reziduuri lemnoase, 3 kg adeziv, se
fabrică ı̂n 5 minute şi aduce profit de 7 e.
Tipul B necesită, per coală, 7 kg reziduuri lemnoase, 5 kg adeziv, se
fabrică ı̂n 20 minute şi aduce profit de 9 e.
Tipul C necesită, per coală, 9 kg reziduuri lemnoase, 7 kg adeziv, se
fabrică ı̂n 25 minute şi aduce profit de 11 e.
Pentru cele trei tipuri de plăci PAL compania are la dispoziţie 700 kg
reziduuri lemnoase, 80 ore autonomie la utilaje şi 250 kg adeziv.
Să se realizeze un program de activitate care să realizeze profit maxim.
Rezolvare.
Notăm cu x1 , x2 , x3 numărul de plăci PAL de tip A, B, respectiv C, pe care
trebuie să le realizeze compania astfel ı̂ncât profitul să fie maxim.

Tip placă Disponibil


A B C
Reziduuri lemnoase (kg) 5 7 9 700
Adeziv (kg) 3 5 7 250
Timp (min.) 5 20 25 4800
Profit unitar 7 9 11

Profitul este dat de

Z = 7x1 + 9x2 + 11x3 . (1.5)

Condiţiile impuse de problemă sunt:


8
< 5x1 + 7x2 + 9x3  700
3x1 + 5x2 + 7x3  250 (1.6)
:
5x1 + 20x2 + 25x3  4800,
8
< x1 0
x2 0 (1.7)
:
x3 0.

Matematic, problema se enunţă astfel:


Să se determine maximul funcţiei (1.5) ştiind că sunt ı̂ndeplinite condiţiile
(1.6) şi (1.7).
12 CAPITOLUL 1. ...

Se aduce problema la forma standard adăugând ecarturile xe4 , xe5 , xe6 0:


max[Z = 7x1 + 9x2 + 11x3 + 0 · xe4 + 0 · xe5 + 0 · xe6 ]
8
< 5x1 + 7x2 + 9x3 + xe4 = 700
3x1 + 5x2 + 7x3 + xe5 = 250
:
5x1 + 20x2 + 25x3 + xe6 = 4800,
Matricea sistemului de restricţii este:
0 1
5 7 9 1 0 0
A=@ 3 5 7 0 1 0 A
5 20 25 0 0 1
Baza este:
B = {a4 , a5 , a6 }.
Pentru determinarea soluţiei iniţiale de bază X B , ı̂n sistemul de condiţii se
fac toate variabilele ne bazice, adică x1 , x2 , x3 , egale cu zero.
Rezultă X B = (0, 0, 0, 700, 250, 4800).
c1 = 7 c2 = 9 c3 = 11 c4 = 0 c5 = 0 c6 = 0
B CB XB ✓
a1 a2 a3 a4 a5 a6
700
a4 0 700 5 7 9 1 0 0 ✓1 = 9
a5 0 250 3 5 7 0 1 0 ✓2 = 250
5
a6 0 4800 5 20 25 0 0 1 ✓3 = 4800
20

j = cj zj 7 9 11 0 0 0

Se observă că cea mai mare valoare j , j = 1, 2, 3, 4 este 1 = 11, deci


vectorul a3 va intra ı̂n bază. Se calculează şi rapoartele
xB
i
✓i = , i = 1, 2, 3; k = 3
aik
corespunzătoare coloanei a3 , adică: ✓1 = 7009
, ✓2 = 250
5
, ✓3 = 4800
20
şi se alege
5
dintre ele cea mai mică valoare: ✓2 . Aşadar vectorul a va părăsi baza.
Pivotul este elementul 7 din coloana lui a3 . În noul tabel, c-ul corespunzător
vectorului a5 din bază se va ı̂nlocui cu c-ul corespunzător vectorului a3 care
intră ı̂n bază, adică c1 = 11. Linia pivotului, ı̂n noul tabel, se va trece
ı̂mpărţită la pivot. Coloana pivotului, ı̂n noul tabel, se va completa cu
zerouri. Restul elementelor se calculează cu regula “dreptunghiului”.
Tabelul se continuă astfel:
Se observă că cea mai mare valoare j , j = 1, 2, 3, 4, 5 este 1 = 16 7
,
1
deci vectorul a va intra ı̂n bază. Se calculează şi rapoartele
xB
i
✓i = , i = 1, 2; k = 1
aik
1.2. PROBLEME REZOLVATE 13

c1 = 7 c2 = 9 c3 = 11 c4 = 0 c5 = 0 c6 = 0
B CB XB ✓
a1 a2 a3 a4 a5 a6
2650
2650 8 4 9
a4 0 7 7 7 0 1 7 0 ✓1 = 7
8
7
250
250 3 5 1
a3 11 7 7 7 1 0 7 0 ✓2 = 7
3
7
27350 40 15 25
a6 0 7 7 7 0 0 7 1
16 8 11
j = cj zj 7 7 0 0 7 0

2650 250
2650 250
corespunzătoare coloanei a1 , adică: ✓1 = 7
8 = 8
, ✓2 = 7
3 = 3
şi se
7 7
3
alege dintre ele cea mai mică valoare: ✓2 . Aşadar vectorul a va părăsi baza.
Pivotul este elementul 37 din coloana lui a1 . În noul tabel c-ul corespunzător
vectorului a3 din bază se va ı̂nlocui cu c-ul corespunzător vectorului a1 care
intră ı̂n bază, adică c2 = 7. Linia pivotului, ı̂n noul tabel, se va trece
ı̂mpărţită la pivot. Coloana pivotului, ı̂n noul tabel, se va completa cu
zerouri. Restul elementelor se calculează cu regula “dreptunghiului”.
Tabelul se continuă astfel:
c1 = 7 c2 = 9 c3 = 11 c4 = 0 c5 = 0 c6 = 0
B CB XB ✓
a1 a2 a3 a4 a5 a6
2650
850 4 8 5
a4 0 3 0 3 3 1 3 0 ✓1 = 7
8
7
250
250 5 7 1
a1 7 3 1 3 3 0 3 0 ✓2 = 7
3
7
13150 35 40 5
a6 0 3 0 3 3 0 3 1
8 16 7
j = cj zj 0 3 3 0 3 0

Nemaiavând niciun j > 0, algoritmul se opreşte.


Soluţia optimă este: Xoptim = ( 250
3
, 0, 0, 850
3
, 0, 13150
3
) şi deci Zmax = 1750
3
.

Observaţie 5 Variabilele ecart arată cum s-au folosit resursele:


xe4 = 850
3
arată că au rămas nefolosite 850 3
kg reziduuri lemnoase (ı̂ntr-
250 1250 850
adevăr, 5 · 3 + 0 + 0 = 3 , care este cu 3 mai mic decât 700 (disponibilul
de reziduuri lemnoase));
xe5 = 0 arată că adezivul a fost folosit ı̂n ı̂ntregime (ı̂ntr-adevăr, 3 · 250
3
+
0 + 0 = 250, exact disponibilul de adeziv avut iniţial);
xe6 = 13150
3
arată că au rămas nefolosite 13150 3
minute (ı̂ntr-adevăr, 5 ·
250 1250 13150
3
+ 20 · 0 + 25 · 0 = 3 = 4800 3
).

Exerciţiul 6 Să se afle

max[Z = x1 + 3x2 2x3 ]


14 CAPITOLUL 1. ...

ştiind că 8
< 2x1 + x2 + x3 3
x1 + 3x2 + 4x3 = 2
:
x1 , x2 , x3 0.
Rezolvare.
Se aduce problema la forma standard adăugând ecartul xe4 0:

max[Z = x1 + 3x2 2x3 + 0 · xe4 ]


8
< 2x1 + x2 + x3 + xe4 = 3
x1 + 3x2 + 4x3 = 2
:
x1 , x2 , x3 , xe4 0.
Matricea sistemului de restricţii este:
✓ ◆
2 1 1 1
A=
1 3 4 0

şi observăm că ea nu admite bază unitară.


Se rezolvă problema folosind metoda penalităţii. Asociem problema

max[Z = x1 + 3x2 2x3 + 0 · xe4 M · xa5 M · xe6 ]


8
< 2x1 + x2 + x3 xe4 + xa5 = 3
x1 + 3x2 + 4x3 + xa6 = 2
:
x1 , x2 , x3 , xe4 , xa5 , xa6 0.
Matricea sistemului de restricţii este:
✓ ◆
2 1 1 1 1 0
A=
1 3 4 0 0 1

Baza este:
B = {a5 , a6 }.
Pentru determinarea soluţiei iniţiale de bază X B , ı̂n sistemul de condiţii se
fac toate variabilele ne bazice, adică x1 , x2 , x3 , x4 , egale cu zero.
Rezultă X B = (0, 0, 0, 0, 3, 2).

c1 = 1 c2 = 3 c3 = 2 c4 = 0 c5 = M c6 = M
B CB XB ✓
a1 a2 a3 a4 a5 a6
3
a5 M 3 2 1 1 1 1 0 ✓5 = 1
2
a6 M 2 1 3 4 0 0 1 ✓6 = 4

j = cj zj 1+M 3 + 4M 2 + 5M M 0 0
1.2. PROBLEME REZOLVATE 15

Se observă că cea mai mare valoare j , j = 1, 6, este 3 = 2 + 5M ,


deci vectorul a3 va intra ı̂n bază. Se calculează şi rapoartele

xB
i
✓i = , i = 5, 6; k = 3
aik
corespunzătoare coloanei a3 , adică: ✓5 = 31 , ✓6 = 24 şi se alege dintre ele
cea mai mică valoare: ✓6 . Aşadar vectorul a6 va părăsi baza. Pivotul este
elementul 4 din coloana lui a3 . În noul tabel, c-ul corespunzător vectorului
a6 din bază se va ı̂nlocui cu c-ul corespunzător vectorului a3 care intră ı̂n
bază, adică c3 = 2. Linia pivotului, ı̂n noul tabel, se va trece ı̂mpărţită la
pivot. Coloana pivotului, ı̂n noul tabel, se va completa cu zerouri. Restul
elementelor se calculează cu regula “dreptunghiului”.

Observaţie 7 Odată ieşit a6 din bază, coloana lui a6 nu se mai completează!


Tabelul se continuă astfel:
c1 = 1 c2 = 3 c3 = 2 c4 = 0 c5 = M
B CB XB ✓
a1 a2 a3 a4 a5
5
5 9 1
a5 M 2 4 4 0 1 1 ✓5 = 2
9
4
1 1 3
a3 2 2 4 4 1 0 0 -
1 9 9 1
j = cj zj 2 + 4M 2 + 4M 0 M 0

Se observă că cea mai mare valoare j , j = 1, 2, 3, 4, 5 este 1 = 12 +


9
4
M, deci vectorul a1 va intra ı̂n bază. Singurul ✓ pozitiv este ✓5 . Aşadar
vectorul a5 va părăsi baza (şi coloana lui a5 nu se mai completează, fiind
o variabilă artificială). Pivotul este elementul 94 din coloana lui a1 . În
noul tabel c-ul corespunzător vectorului a5 din bază se va ı̂nlocui cu c-ul
corespunzător vectorului a1 care intră ı̂n bază, adică c1 = 1. Linia pivotului,
ı̂n noul tabel, se va trece ı̂mpărţită la pivot. Coloana pivotului, ı̂n noul
tabel, se va completa cu zerouri. Restul elementelor se calculează cu regula
“dreptunghiului”.
Tabelul se continuă astfel:
Se observă că cea mai mare valoare j , j = 1, 2, 3, 4, 5 este 2 = 40 9
,
deci vectorul a2 va intra ı̂n bază. Se calculează şi rapoartele

xB
i
✓i = , i = 1, 3; k = 2
aik
10 13
corespunzătoare coloanei a2 , adică: ✓1 = 9
1 , ✓3 = 18
7 şi se alege dintre ele
9 9
3
cea mai mică valoare: ✓3 . Aşadar vectorul a va părăsi baza. Pivotul este
16 CAPITOLUL 1. ...

c1 = 1 c2 = 3 c3 = 2 c4 = 0
B CB XB ✓
a1 a2 a3 a4
10
20 1 4
a1 1 18 1 9 0 9 ✓1 = 9
1
9
13
13 7 1
a3 2 18 0 9 1 9 ✓3 = 18
7
9
40 2
j = cj zj 0 9 0 9

elementul 79 din coloana lui a3 . În noul tabel c-ul corespunzător vectorului
a3 din bază se va ı̂nlocui cu c-ul corespunzător vectorului a2 care intră ı̂n
bază, adică c2 = 3. Linia pivotului, ı̂n noul tabel, se va trece ı̂mpărţită la
pivot. Coloana pivotului, ı̂n noul tabel, se va completa cu zerouri. Restul
elementelor se calculează cu regula “dreptunghiului”.
Tabelul se continuă astfel:

c1 = 1 c2 = 3 c3 = 2 c4 = 0
B CB XB ✓
a1 a2 a3 a4
10
127 1 3
a1 1 126 1 0 7 7 ✓1 = 9
1
9
13
13 9 1
a2 3 14 0 1 7 7 ✓3 = 18
7
9
40 6
j = cj zj 0 0 7 7

Singurul > 0 este 4 = 67 , ı̂nsă algoritmul se opreşte deoarece pe


4
coloana lui a nu aveam nicio valoare pozitivă.
Soluţia optimă este: Xoptim = 127 , 13 , 0, 0, 0, 0 şi deci Zmax = 127
126 14 126
+3·
13 239
14
2 · 0 + 0 · 0 M · 0 M · 0 = 63 .

Exerciţiul 8 Să se afle

min[Z = 2x1 + 3x2 ]

ştiind că 8
< x1 + 2x2  4
3x1 + 4x2 24
:
x1 , x2 0.
Rezolvare.
Se aduce problema la forma standard adăugând ecarturile xe3 , xe4 0:

max[Z = 2x1 + 3x2 + 0 · xe3 + 0 · xe4 ]


1.2. PROBLEME REZOLVATE 17
8
< x1 + 2x2 + xe3 = 4
3x1 + 4x2 xe4 = 24
:
x1 , x2 , xe3 , xe4 0.
Matricea sistemului de restricţii este:
✓ ◆
1 2 1 0
A=
3 4 0 1

0
şi observăm că ea nu admite bază unitară (lipseşte vectorul ).
1
Se rezolvă problema folosind metoda penalităţii. Asociem problema

max[Z = 2x1 + 3x2 + 0 · xe3 + 0 · xe4 + M · xa5 ]


8
< x1 + 2x2 + xe3 = 4
3x1 + 4x2 xe4 + xa5 = 24
:
x1 , x2 , xe3 , xe4 , xa5 0.
Matricea sistemului de restricţii este:
✓ ◆
1 2 1 0 0
A=
3 4 0 1 1

Baza este:
B = {a3 , a5 }.
Pentru determinarea soluţiei iniţiale de bază X B , ı̂n sistemul de condiţii se
fac toate variabilele ne bazice, adică x1 , x2 , x4 , egale cu zero.
Rezultă X B = (0, 0, 4, 0, 24).

c1 = 2 c2 = 3 c3 = 0 c4 = 0 c5 = M
B CB XB ✓
a1 a2 a3 a4 a5
a3 0 4 1 2 1 0 0 ✓3 = 42
a5 M 24 3 4 0 1 1 ✓5 = 24
4
j = zj cj 3M + 2 4M 3 0 M 0

Se observă că cea mai mare valoare j , j = 1, 5, este 2 = 4M 3, deci


vectorul a2 va intra ı̂n bază. Se calculează şi rapoartele

xB
i
✓i = , i = 3, 5; k = 2
aik

corespunzătoare coloanei a2 , adică: ✓3 = 42 , ✓5 = 24


4
şi se alege dintre ele
3
cea mai mică valoare: ✓3 . Aşadar vectorul a va părăsi baza. Pivotul este
elementul 2 din coloana lui a2 . În noul tabel, c-ul corespunzător vectorului
18 CAPITOLUL 1. ...

a3 din bază se va ı̂nlocui cu c-ul corespunzător vectorului a2 care intră ı̂n


bază, adică c2 = 3. Linia pivotului, ı̂n noul tabel, se va trece ı̂mpărţită la
pivot. Coloana pivotului, ı̂n noul tabel, se va completa cu zerouri. Restul
elementelor se calculează cu regula “dreptunghiului”.
Tabelul se continuă astfel:
c1 = 2 c2 = 3 c3 = 0 c4 = 0 c5 = M
B CB XB ✓
a1 a2 a3 a4 a5
1 1 2
a2 3 2 2 1 2 0 0 ✓2 = 1
2
M
a5 M 16 1 0 2 1 1 ✓5 = 1
7 3
j = zj c j M+ 2 0 2M + 2 M 0

Se observă că singura valoare pozitivă este 1 = M + 72 , deci vectorul


1
a va intra ı̂n bază. Se calculează şi rapoartele

xB
i
✓i = , i = 2, 5; k = 1
aik
2 M
corespunzătoare coloanei a1 , adică: ✓2 = 1 , ✓5 = 1
şi se alege dintre ele
2
cea mai mică valoare: ✓2 . Aşadar vectorul a2 va părăsi baza. Pivotul este
elementul 12 din coloana lui a1 . În noul tabel c-ul corespunzător vectorului
a2 din bază se va ı̂nlocui cu c-ul corespunzător vectorului a1 care intră ı̂n
bază, adică c1 = 2. Linia pivotului, ı̂n noul tabel, se va trece ı̂mpărţită la
pivot. Coloana pivotului, ı̂n noul tabel, se va completa cu zerouri. Restul
elementelor se calculează cu regula “dreptunghiului”.
Tabelul se continuă astfel:
c1 = 2 c2 = 3 c3 = 0 c4 = 0 c5 = M
B CB XB ✓
a1 a2 a3 a4 a5
2
a1 2 4 1 2 1 0 0 ✓2 = 1
2
M
a5 M 12 0 2 3 1 1 ✓5 = 1
j = zj cj 0 2M 7 3M 2 M 0

Nemaiavând niciun j > 0, algoritmul se opreşte. Problema nu are


soluţie deoarece ı̂n baza finală a rămas a5 , iar xa5 = 12 6= 0.

Exerciţiul 9 Să se afle

min[Z = x1 + x2 x3 ]

ştiind că 8
< x1 + 2x2 x3  5
x1 + x2 + x3 3
:
x1 , x2 , x3 0.

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