Reoptimizare
Presupunem că am rezolvat o problemă de programare liniară, cunoscând pentru aceasta soluția optimă de bază xB =B-1Śb, inversa bazei B-1 și tabelul simplex corespunzător soluției optime. Ne propunem să vedem, în condițiile în care se modifică unele din datele problemei, ce anume din rezolvarea fostei probleme mai poate fi folosit la rezolvarea noii probleme, în încercarea de a rezolva noua problemă într-un timp mai scurt decât cel necesar rezolvării acesteia de la zero, cu algoritmul simplex. Acest deziderat corespunde ideii de a folosi experiența anterioară. De asemenea, ne propunem să vedem ce influență au diferitele tipuri de modificări ale datelor problemei asupra soluțiilor, atât din punct de vedere matematic cât și economic.
Datele problemei sunt constituite din:
- coeficienții funcției obiectiv = componentele vectorului c
- termenii liberi ai restricțiilor = componentele vectorului b
- coeficienții variabilelor din restricții = elementele matricii A
O modificare poate afecta toate cele trei grupe.
Vom analiza efectele modificărilor începând de la cazurile cele mai simple:
Deoarece matricea A și vectorul b rămân aceleași, avem același sistem de restricții și deci aceeași mulțime de soluții admisibile. Soluția optimă a fostei probleme, fiind în particular soluție de bază admisibilă a sistemului de restricții, va fi soluție admisibilă de bază și în noua problemă. Dispunem deci de o soluție inițială admisibilă de bază și, deci, putem aplica algoritmul simplex primal direct de la faza a doua. Se construiește tabelul simplex corespunzător soluției, în problema modificată:
|
|
|
|
|
|
xB |
xB |
xB |
xS |
|
|
B-1Śb |
Im |
B-1ŚS |
|
|
Ś B-1Śb |
0 |
|
care este de fapt fostul tabel, în care se recalculează . Avem două cazuri:
a) Dacă toți ³ 0, soluția este optimă;
b) Dacă există un < 0, se aplică în continuare algoritmul simplex primal, până la găsirea soluției optime.
Exemplu: Pentru problema:
|
|
F.S. |
(max)
f = 3x1 x2 +
2x3
x1, x2, x3 ³ 0 |
Û |
(max)f = 3x1 x2 +2x3
Ma1
x1,
x2, x3, s1, s2, a1 ³ 0 |
obținem în final următorul tabel simplex:
|
|
|
3 |
-1 |
2 |
0 |
0 |
0 |
-M |
|
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
3 |
x1 |
3 |
1 |
0 |
0 |
1 |
1 |
2 |
-2 |
2 |
x3 |
2 |
0 |
0 |
1 |
0 |
1 |
1 |
-1 |
-1 |
x2 |
1 |
0 |
1 |
0 |
0 |
-1 |
-2 |
2 |
|
|
12 |
0 |
0 |
0 |
3 |
6 |
10 |
M - 10 |
1. Dacă noua funcție obiectiv este f = x1 2x2 + 5x3 atunci tabelul corespunzător va fi:
|
|
|
1 |
-2 |
5 |
0 |
0 |
0 |
-M |
|
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
1 |
x1 |
3 |
1 |
0 |
0 |
1 |
1 |
2 |
-2 |
5 |
x3 |
2 |
0 |
0 |
1 |
0 |
1 |
1 |
-1 |
-2 |
x2 |
1 |
0 |
1 |
0 |
0 |
-1 |
-2 |
2 |
|
|
11 |
0 |
0 |
0 |
1 |
8 |
11 |
M - 11 |
toți ³ 0, ne aflăm în cazul a) și soluția care dădea optimul fostei probleme este soluția optimă și în noua problemă.
2. Dacă noua funcție obiectiv este f = x1 + 3x2 - 2x3 atunci tabelul corespunzător va fi:
|
|
|
1 |
3 |
-2 |
0 |
0 |
0 |
-M |
|
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
1 |
x1 |
3 |
1 |
0 |
0 |
1 |
1 |
2 |
-2 |
-2 |
x3 |
2 |
0 |
0 |
1 |
0 |
1 |
1 |
-1 |
3 |
x2 |
1 |
0 |
1 |
0 |
0 |
-1 |
-2 |
2 |
|
|
2 |
0 |
0 |
0 |
1 |
-4 |
-6 |
M + 6 |
există < 0 (de exemplu ), ne aflăm în cazul b) și soluția care dădea optimul fostei probleme nu este optimă și în noua problemă, pentru găsirea celei optime (dacă există!) trebuind să aplicăm în continuare algoritmul simplex primal.
Cazul 2 Dacă se modifică doar componentele vectorului b ź b
Deoarece matricea A rămâne aceeași, fosta bază rămâne bază și în noua problemă. Soluția corespunzătoare va fi: iar . În concluzie, noua soluție ar putea sau nu să aibă toate componentele pozitive (după cum este noul b), dar sigur toți Dj rămân pozitivi (fiind aceeași cu cei ai soluției fostei probleme, care era optimă), deci soluția este cel puțin dual admisibilă de bază. Vom avea două cazuri:
a) Dacă atunci soluția este și primal admisibilă, deci este soluția optimă a noii probleme;
b) Dacă are cel puțin o componentă negativă atunci soluția este doar dual admisibilă de bază și vom continua cu algoritmul simplex dual pentru găsirea celei optime (dacă ea există!).
Exemplu Pentru problema:
|
|
F.S. |
(max) f
= - 4x1 x2 +
2x3
x1, x2, x3
³ 0 |
Û |
(max) f = - 4x1 x2
+ 2x3 Ma1 x1,x2,
x3, s1, s2, s3, a1 ³ 0 |
obținem în final următorul tabel simplex:
|
|
|
-4 |
-1 |
2 |
0 |
0 |
0 |
-M |
|
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
0 |
s1 |
22 |
|
|
0 |
1 |
0 |
|
0 |
0 |
s2 |
11 |
|
|
0 |
0 |
1 |
|
-1 |
2 |
x3 |
5 |
|
|
1 |
0 |
0 |
|
0 |
|
|
10 |
|
|
0 |
0 |
0 |
|
M |
din care obținem inversa bazei B = ca fiind B-1 =
1. Dacă noul vector al termenilor liberi, din problema la forma standard, ar fi b = (2, 5, 6)T atunci tabelul corespunzător ar fi:
|
|
|
-4 |
-1 |
2 |
0 |
0 |
0 |
-M |
|
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
0 |
s1 |
4 |
|
|
0 |
1 |
0 |
|
0 |
0 |
s2 |
5 |
|
|
0 |
0 |
1 |
|
-1 |
2 |
x3 |
2 |
|
|
1 |
0 |
0 |
|
0 |
|
|
4 |
|
|
0 |
0 |
0 |
|
M |
toate componentele soluției ar fi pozitive, ne-am afla în cazul a) și soluția găsită ar fi soluția optimă în noua problemă.
2. Dacă noul vector al termenilor liberi din problema la forma standard ar fi b = (5, 6, 3)T atunci tabelul corespunzător ar fi:
|
|
|
-4 |
-1 |
2 |
0 |
0 |
0 |
-M |
|
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
0 |
s1 |
6 |
|
|
0 |
1 |
0 |
|
0 |
0 |
s2 |
-1 |
|
|
0 |
0 |
1 |
|
-1 |
2 |
x3 |
1 |
|
|
1 |
0 |
0 |
|
0 |
|
|
2 |
|
|
0 |
0 |
0 |
|
M |
ar exista componente ale soluției strict negative (de exemplu x3 = -1), ne-am afla în cazul b), soluția nu ar fi primal admisibilă și, pentru găsirea celei optime, (dacă există!) vom aplica în continuare algoritmul simplex dual.
Cazul 3. Dacă apar k variabile suplimentare, cu coeficienții corespunzători, în funcția obiectiv și în restricții.
Această modificare are ca efect adăugarea a k coloane la matricea A și a k elemente la vectorul c, numărul de restricții (și deci de linii ale matricii A și de elemente ale vectorului b) rămânând același.
Deoarece, în momentul ajungerii la soluția optimă, în sistem se află doar restricții independente între ele, rangul matricii este egal cu numărul de linii (care este mai mic decât numărul de coloane) și, din acest motiv, adăugarea oricâtor coloane nu îl va modifica. Baza fostei matrici rămâne deci bază și în noua matrice, soluția xB = B-1Śb ³ 0 rămâne soluție de bază a noului sistem de restricții (B și b fiind aceeași), deci este și o soluție de bază primal admisibilă a noii probleme. Tabelul corespunzător acestei baze, în noua problemă, este cel anterior, la care se adaugă k coloane astfel:
- pe linia variabilelor se adaugă noile variabile;
- pe linia coeficienților funcției obiectiv se adaugă coeficienții corespunzători noilor variabile;
- în interiorul tabelului, sub fiecare variabilă nou introdusă, se adaugă coloana B-1Śak, unde ak este vectorul coloană format din coeficienții variabilei xk, nou introduse în restricțiile problemei;
- Dk, corespunzători noilor variabile, se calculează cu formula cunoscută: Dk = ŚB-1Śak - ck.
Vom avea două cazuri:
a) Dacă toți Dk sunt pozitivi, soluția optimă a fostei probleme este soluție optimă și pentru noua problemă;
b) Dacă există un indice k, pentru care Dk < 0, atunci soluția este doar primal admisibilă și vom aplica în continuare algoritmul simplex primal, pentru găsirea soluției optime (dacă ea există!)
Exemplu Fie problema:
|
|
F.S. |
(max) f
= 3x1 + 4x2 2x3
x1, x2, x3
³ 0 |
Û |
(max) f = 3x1 + 4x2
2x3 Ma1 x1,x2,
x3, s1, s2, s3, a1 ³ 0 |
pentru care obținem tabelul simplex final:
|
|
|
3 |
4 |
-2 |
0 |
0 |
0 |
-M |
|
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
4 |
x2 |
4 |
0 |
1 |
0 |
|
3 |
|
|
3 |
x1 |
1 |
1 |
0 |
0 |
|
-2 |
|
|
-2 |
x3 |
2 |
0 |
0 |
1 |
0 |
1 |
-1 |
0 |
|
|
15 |
0 |
0 |
0 |
|
4 |
2 |
M |
de unde găsim inversa bazei B = ca fiind B-1 = .
1. Dacă introducem, în plus, variabilele x4, x5 și x6, obținând problema la forma standard:
(max) f =
3x1 + 4x2 2x3 +2x4 20x5
x6 Ma1
x1,
x2, x3, x4, x5, x6, s1,
s2, s3, a1 ³ 0
vom obține tabelul corespunzător bazei B, în noua problemă, prin:
- adăugarea variabilelor x4, x5, x6 la linia variabilelor;
- adăugarea coeficienților 2, -20, -1 corespunzători acestor variabile la linia coeficienților funcției obiectiv;
- adăugarea coloanelor:
a4 = Ś = ,
a5 = Ś = ,
a6 = Ś = .
- adăugăm:
- D4 = ŚB-1Śa4 c4 = 1
- D5 = ŚB-1Śa5 c5 =
- D6 = ŚB-1Śa6 c6 =
și, final, obținem tabelul:
|
|
|
3 |
4 |
-2 |
2 |
-20 |
-1 |
0 |
0 |
0 |
-M |
|
xB |
xB |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
s1 |
s2 |
s3 |
a1 |
4 |
x2 |
4 |
0 |
1 |
0 |
5 |
|
|
|
3 |
|
|
3 |
x1 |
1 |
1 |
0 |
0 |
-3 |
|
|
|
-2 |
|
|
-2 |
x3 |
2 |
0 |
0 |
1 |
4 |
-1 |
3 |
0 |
1 |
-1 |
0 |
|
|
15 |
0 |
0 |
0 |
1 |
|
|
|
4 |
2 |
M |
Se observă că toți Dj sunt pozitivi, deci soluția este optimă.
2. Dacă, pentru aceeași modificare, alegem coeficientul lui x5 egal cu 10, în loc de 20, în tabel se va modifica doar D5, care va avea valoarea și ne vom afla în cazul b) (deoarece D5 < 0); vom continua căutarea soluției optime cu algoritmul simplex primal.
Cazul 4. Dacă se adaugă o restricție
Efectul este adăugarea unei linii la matricea A și a unui element la vectorul b.
Se verifică dacă fosta soluție de optim verifică noua restricție. Dacă o verifică, ea este soluția de optim și a noii probleme. Dacă nu o verifică, vom căuta în continuare noua soluție de optim (dacă ea există!).
Deoarece rangul matricii A era egal cu numărul de linii (care era mai mic decât numărul de coloane), prin adăugarea unei linii rangul noii matrici va fi cu 1 mai mare (dacă nu s-ar întâmpla așa ar rezulta că noua restricție este o combinație a celor anterioare și, deci, nu are nici un efect asupra mulțimii soluțiilor, putând fi eliminată din sistem, noua problemă fiind de fapt aceeași cu fosta problemă, care e deja rezolvată).
În acest caz, fosta bază nu mai este bază în noua matrice, ci doar un minor cu determinantul diferit de zero, de dimensiune cu 1 mai mică decât rangul matricii. Pentru a obține baza noii probleme vom borda fosta bază cu noua linie și o coloană.
Din ultimul tabel simplex al fostei probleme, putem scrie fostul sistem la forma:
xB +B-1·S·xS = B-1·b = xB
de unde scoatem variabilele principale în
funcție de cele secundare, le înlocuim în noua restricție și apoi aranjăm ca
termenul liber bm+1 obținut să fie pozitiv (înmulțind eventual
restricția cu 1). Adăugăm noua restricție, sub forma obținută, la sistemul
inițial, scris sub forma corespunzătoare ultimului tabel simplex. Avem trei
cazuri:
a)
Dacă restricția este de tipul £, introducem variabila de
abatere s, care va avea coeficientul +1 și baza va fi formată din coloanele
corespunzătoare fostelor variabile principale, plus coloana variabilei s,
obținând matricea unitate. Tabelul corespunzător în noua problemă va fi fostul
tabel, la care se adaugă:
-
o linie în plus, pe care: cs = 0 în coloana coeficienților
din funcția obiectiv ai variabilelor din baza, s în coloana variabilelor bazei,
bm+1 în coloana soluției de bază, coeficienții noii restricții
(adusă la ultima formă) în interiorul tabelului și 1 in dreptul noii variabile
s.
-
o coloană în plus corespunzătoare lui s, care va fi
vector unitar.
În acest caz, noii Dj vor fi foștii Dj (deoarece cs =
0), la care se adaugă cel corespunzător lui s (egal cu 0, deoarece s este din
bază). Soluția are toate componentele pozitive și toți Dj pozitivi, deci este soluția
optimă căutată.
b)
Dacă restricția este de tipul ³ variabila de abatere va
avea coeficientul 1 și soluția corespunzătoare este doar dual admisibilă
(deoarece s = -bm+1 < 0); vom continua căutarea soluției optime
cu algoritmul simplex dual.
c)
Dacă restricția este cu =, se introduce variabila
artificială a, cu ca = -M, se construiește tabelul asociat ca la
cazul a) și se obține o soluție admisibilă (deoarece a = bm+1 ³ 0), cu Dj depinzând de M (deoarece ca
= -M). Se continuă cu algoritmul simplex primal.
Exemplu Fie problema:
|
|
F.S. |
(max) f = x1 3x2 + 2x3 x1, x2, x3 ³ 0 |
Û |
(max)
f = x1 3x2 +
2x3 x1, x2, x3, s1, s2, s3, a1 ³ 0 |
pentru care obținem tabelul
final:
|
|
|
1 |
-3 |
2 |
0 |
0 |
0 |
-M |
cB |
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
0 |
s2 |
54 |
0 |
11 |
0 |
2 |
1 |
3 |
-1 |
2 |
x3 |
99 |
0 |
22 |
1 |
3 |
0 |
4 |
0 |
1 |
x1 |
27 |
1 |
6 |
0 |
1 |
0 |
1 |
0 |
|
|
225 |
0 |
53 |
0 |
7 |
0 |
9 |
M |
din care putem scrie sistemul de restricții
sub forma:
Þ
1. Dacă noua
restricție ar fi 2x1 + x2 x3 £ 7 atunci soluția de optim
(x1 = 27, x2 = 0, x3 = 99) ar verifica noua
restricție și ar fi soluție de optim și pentru noua problemă.
2. Dacă noua
restricție ar fi 3x1 +2x2 + x3 £ 8 ea nu ar fi verificată de
fosta soluție de optim. Înlocuind în această restricție s2, x1
și x3, cu expresiile obținute în sistemul de mai sus, rezultă:
3·(27 6x2 s1
s3) + 2x2 + (99 22x2 3s1 4s3)
£ 8
Û -38x2 6s1
7s3 £ -172 Û 38x2 + 6s1 + 7s3
³ 172
Û
38x2 + 6s1 + 7s3
s = 172
și sistemul: iar în final,
tabelul:
|
|
|
1 |
-3 |
2 |
0 |
0 |
0 |
0 |
cB |
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
s |
0 |
s2 |
54 |
0 |
11 |
0 |
2 |
1 |
3 |
0 |
2 |
x3 |
99 |
0 |
22 |
1 |
3 |
0 |
4 |
0 |
1 |
x1 |
27 |
1 |
6 |
0 |
1 |
0 |
1 |
0 |
0 |
s |
-172 |
0 |
38 |
0 |
6 |
0 |
7 |
1 |
|
|
225 |
0 |
53 |
0 |
7 |
0 |
9 |
0 |
în care soluția de bază este dual admisibilă. Se continuă rezolvarea
problemei cu algoritmul simplex dual.
3. Dacă noua
restricție ar fi x1 + x2 + x3 = 100 ea nu ar
fi verificată de fosta soluție. Prin înlocuirea lui x1 și x3
obținem:
(27 6x2 s1
s3) + x2 + (99 22x2 3s1 4s3)
= 100
Û -27x2 4s1
5s3 = -26 Û 27x2 + 4s1 + 5s3
= 26
Û
27x2 + 4s1 + 5s3 +
a = 26
rezultă sistemul: iar în final,
tabelul:
|
|
|
1 |
-3 |
2 |
0 |
0 |
0 |
-M |
cB |
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a |
0 |
s2 |
54 |
0 |
11 |
0 |
2 |
1 |
3 |
0 |
2 |
x3 |
99 |
0 |
22 |
1 |
3 |
0 |
4 |
0 |
1 |
x1 |
27 |
1 |
6 |
0 |
1 |
0 |
1 |
0 |
-M |
a |
26 |
0 |
27 |
0 |
4 |
0 |
5 |
1 |
|
|
-26M + 225 |
0 |
-27M + 53 |
0 |
-4M + 7 |
0 |
-5M + 9 |
0 |
în care soluția de bază este primal
admisibilă. Se continuă rezolvarea problemei cu algoritmul simplex primal.
Cazul
5.
Dacă se modifică coeficienții unei variabile xj
Efectul este
modificarea coloanei aj ź din A și/sau a
coeficientului cj ź din funcția obiectiv.
Avem două variante:
Cazul 5.1 Coloana aj nu face parte din B. În
acest caz fosta bază B rămâne bază și în noua problemă, soluția corespunzătoare
este aceeași: xB = B-1·b
și tabelul corespunzător este fostul tabel, în care se modifică doar coloana
corespunzătoare variabile xj:
cj ź , B-1·aj
ź B-1·, Dj ź
Avem două cazuri:
-
Dacă fosta soluție optimă rămâne optimă și în noua problemă.
-
Dacă < 0 fosta soluție optimă este doar primal admisibilă și se
va continua rezolvarea problemei cu algoritmul simplex primal.
Exemplu Fie problema:
|
|
F.S. |
(max) f
= 2x1 +3x2 + 4x3 x1, x2, x3 ³ 0 |
Û |
(max) f
= 2x1 +3x2 + 4x3 x1, x2, x3, s1, s2, s3, a1 ³ 0 |
După rezolvare, se
obține tabelul simplex final de mai jos, din care se găsește inversa bazei
B = ca fiind B-1 =
|
|
|
2 |
3 |
4 |
0 |
0 |
0 |
-M |
cB |
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
2 |
x1 |
10 |
1 |
0 |
|
0 |
|
|
0 |
0 |
s1 |
90 |
0 |
0 |
15 |
1 |
5 |
6 |
-1 |
3 |
x2 |
9 |
0 |
1 |
1 |
0 |
|
|
0 |
|
|
47 |
0 |
0 |
2 |
0 |
|
|
M |
1.
Dacă se modifică coeficienții variabilei x3,
problema devenind:
|
|
F.S. |
(max)
f = 2x1 +3x2
+ 2x3 x1, x2, x3 ³ 0 |
Û |
(max) f
= 2x1 +3x2 + 2x3 x1, x2, x3, s1, s2, s3, a1 ³ 0 |
noua coloană corespunzătoare lui x3
va fi a/3 = ·= iar D/3 = < 0, deci
ne aflăm în cazul b) și vom continua
rezolvarea problemei cu algoritmul simplex primal, de la tabelul:
|
|
|
2 |
3 |
2 |
0 |
0 |
0 |
-M |
cB |
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
2 |
x1 |
10 |
1 |
0 |
0 |
0 |
|
|
0 |
0 |
s1 |
90 |
0 |
0 |
-1 |
1 |
5 |
6 |
-1 |
3 |
x2 |
9 |
0 |
1 |
|
0 |
|
|
0 |
|
|
47 |
0 |
0 |
|
0 |
|
|
M |
2. Dacă se modifică
coeficienții variabilei x3, problema devenind:
|
|
F.S. |
(max)
f = 2x1 +3x2
- 3x3 x1, x2, x3 ³ 0 |
Û |
(max) f
= 2x1 +3x2 3x3 x1, x2, x3, s1, s2, s3, a1 ³ 0 |
noua coloană corespunzătoare lui x3 va fi a/3
= ·= iar D/3 = < 0, deci ne aflăm
în cazul a) cu fosta soluție optimă și pentru noua problemă, tabelul final
fiind:
|
|
|
2 |
3 |
-3 |
0 |
0 |
0 |
-M |
cB |
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
a1 |
2 |
x1 |
10 |
1 |
0 |
|
0 |
|
|
0 |
0 |
s1 |
90 |
0 |
0 |
16 |
1 |
5 |
6 |
-1 |
3 |
x2 |
9 |
0 |
1 |
|
0 |
|
|
0 |
|
|
47 |
0 |
0 |
|
0 |
|
|
M |
Cazul 5.2
Coloana aj face parte din baza B. În acest caz fosta bază nu
mai există în noua matrice A. Noul minor B, obținut prin înlocuirea lui aj
cu în B, poate fi:
-
neinversabil (det B = 0) caz în care trebuie
căutată altă bază;
-
inversabil, soluția corespunzătoare xB = (B)-1·b
putându-se în următoarele situații:
-
are toate componentele pozitive (xB ³ 0), deci este primal
admisibilă și putem aplica în continuare algoritmul simplex primal;
-
are componente strict negative, dar are toți Dj pozitivi, deci este dual
admisibilă și putem aplica în continuare algoritmul simplex dual;
-
are componente strict negative și există Dj strict negativi, deci nu
este nici primal nici dual admisibilă și trebuie căutată altă bază.
Se observă că există
variante când trebuie căutate alte baze și, chiar în cazurile când putem folosi
noua bază, avem de făcut calcule laborioase (inversarea lui B, calculul
produselor B-1·b și B-1·A și calculul noilor Dj). Din acest motiv vom
aplica următorul procedeu (fără a mai verifica posibilitatea existenței unui
caz favorabil de mai sus):
pasul 1. Se scriu în noua problemă
(adusă la forma canonică) toți termenii cu variabila xj ca o sumă de
doi termeni, unul având coeficient fostul coeficient al variabilei xj
iar celălalt diferența dintre aceștia:
· xj = cj
· xj + ( - cj) · xj
· xij = aij · xj + ( - aij) · xj
pasul
2.
Se înlocuiește în toți termenii de forma ( - cj) · xj și ( - aij) · xj, variabila xj
cu o nouă variabilă y și se adaugă la sistem restricția xj = y,
obținându-se o problemă echivalentă.
pasul 3. Pentru noua problemă, se
aplică procedeul de la cazul 4
pentru varianta c), obținându-se o soluție de bază admisibilă cu care se
continuă cu algoritmul simplex primal.
Exemplu După rezolvarea
problemei:
|
|
F.S. |
(max)
f = 2x1 +3x2
+ 5x3 x1, x2, x3 ³ 0 |
Û |
(max) f
= 2x1 +3x2 + 5x3 x1, x2, x3, s1, s2, s3 ³ 0 |
se obține soluția optimă și tabelul pentru
baza corespunzătoare variabilelor (x1, x3, s3),
în care (x1 = 2, x3 = 2, s3 = 0) și tabelul:
|
|
|
2 |
3 |
5 |
0 |
0 |
0 |
cB |
xB |
xB |
x1 |
x2 |
x3 |
s1 |
s2 |
s3 |
2 |
x1 |
2 |
1 |
|
0 |
|
|
0 |
5 |
x3 |
2 |
0 |
|
1 |
|
|
0 |
0 |
s3 |
0 |
0 |
|
0 |
|
|
1 |
|
|
14 |
0 |
|
0 |
|
|
0 |
B și B-1 fiind date mai jos:
B = B-1
=
Dacă presupunem că
se modifică coeficienții variabilei x3, noua problemă fiind:
|
|
F.S. |
(max)
f = 2x1 +3x2
+ 2x3 x1, x2, x3 ³ 0 |
Û |
(max) f
= 2x1 +3x2 + 2x3 x1, x2, x3, s1, s2, s3 ³ 0 |
deoarece x3 face parte din bază, vom face transformarea:
|
|
F.S. |
(max) f
= 2x1 +3x2 + 2x3 x1, x2, x3, s1, s2, s3 ³ 0 |
Û |
(max) f = 2x1 +3x2 + 5x3 - 3y x1, x2, x3, s1, s2, s3, y ³ 0 |
Din primele trei
ecuații scoatem variabilele fostei baze (x1, x3, s3)
în funcție de celelalte, înmulțind sistemul cu B-1. Coeficienții
fostelor variabile se iau din ultimul tabel iar ai lui y se calculează
înmulțind coloana coeficienților lui cu B-1. Avem:
B-1 ·
= · =
deci sistemul va avea forma:
Din primele trei ecuații se
scot variabilele bazei în funcție de celelalte:
apoi se înlocuiesc în ultima ecuație: Û în care se adaugă
variabila de abatere a și se adaugă la sistem. Se obține în final problema:
(max) f = 2x1 +3x2 + 5x3
- 3y
Tabelul corespunzător va fi:
|
|
|
2 |
3 |
5 |
-3 |
0 |
0 |
0 |
-M |
cB |
xB |
xB |
x1 |
x2 |
x3 |
y |
s1 |
s2 |
s3 |
a |
2 |
x1 |
2 |
1 |
|
0 |
|
|
|
0 |
0 |
5 |
x3 |
2 |
0 |
|
1 |
|
|
|
0 |
0 |
0 |
s3 |
0 |
0 |
|
0 |
|
|
|
1 |
0 |
-M |
a |
2 |
0 |
|
0 |
|
|
|
0 |
1 |
|
|
14-2M |
0 |
-M |
0 |
M |
+M |
-M |
0 |
0 |
în care soluția de bază este admisibilă și vom continua rezolvarea cu
algoritmul simplex primal.
Din punct de vedere
economic, situațiile de mai sus pot fi foarte bine exemplificate pe cazul unei
întreprinderi care fabrică n produse folosind m materii prime și dorește
găsirea acelor cantități ce trebuie fabricate din fiecare produs astfel încât
să obțină profitul total maxim.
În acest caz
coeficienții problemei vor fi:
-
cj = profiturile unitare obținute prin vânzarea celor n produse.
-
bi = disponibilurile din cele m materii
prime.
-
aij = coeficienții tehnologici.
1.
Modificarea coeficienților funcției obiectiv poate
însemna fie o reevaluare a profiturilor unitare, fie pur și simplu schimbarea
obiectivului propus (de exemplu maximizarea veniturilor sau minimizarea
cheltuielilor în loc de maximizarea profitului, caz în care ci ar
avea alte semnificații (venit unitar, cost unitar) și deci cu totul alte
valori).
2.
Modificarea termenilor liberi poate însemna
modificarea posibilităților de procurare a materiilor prime prin pierderea unor
furnizori sau realizarea de contracte cu noi furnizori.
3.
Apariția de coloane în plus înseamnă lărgirea gamei
de produse.
4.
Apariția de noi restricții poate înseamnă existența
unei resurse care nu fusese luată în considerare până acum, deoarece limitele
datorate acesteia erau suficient de largi pentru a nu influența soluția, în
urma modificării acestor limite ele putând modifica soluția.
5.
Modificarea coloanelor poate însemna fie schimbarea
gamei sortimentale, fie schimbarea tehnologiei de fabricație.