Sunt cazuri în care coeficienții unei probleme nu sunt cunoscuți, sau nu pot fi estimați cu exactitate, sau nu sunt constanți, ei variind în funcție de unul sau mai mulți parametrii, după o lege cunoscută, care este mai mult sau mai puțin complicată, putând lua valori într-o mulțime oarecare, finită sau infinită, discretă sau continuă, mărginită sau nemărginită. Ne-ar interesa să cunoaștem, pentru fiecare valoare posibilă a coeficienților, care este soluția optimă a problemei, sau invers, pentru fiecare soluție, care este mulțimea parametrilor pentru care aceasta rămâne optimă.
Este evident că problema este atât de complicată încât nu se poate da o unică rezolvare, aplicabilă pentru orice mulțime a parametrilor și oricare ar fi legile de dependență a coeficienților de parametrii.
Ne propunem să facem rezolvarea doar pentru cazurile în care termenii liberi ai restricțiilor sau coeficienții funcției obiectiv variază liniar în funcție de un singur parametru.
Cazul 1 Parametrizarea termenilor liberi ai restricțiilor
Așadar termenii liberi ai restricțiilor au forma:
b(l) = b0 + b1Śl Û bi(l) =
unde l Î R este parametrul considerat iar b0, b1 Î Rm sunt doi vectori cu componentele constante reale. Pentru rezolvarea problemei pentru orice l, vom parcurge următorii pași:
Pasul 1. Se rezolvă problema pentru un l0 inițial; presupunem că există cel puțin un l pentru care problema are soluție (altfel am avea un caz neinteresant) și în plus putem presupune că el este egal chiar cu 0, acest lucru putând fi aranjat eventual prin schimbarea de variabilă:
l = l0 + m
și scrierea lui b sub forma:
b(m) = (b0 + b1Śl0) + b1Śm.
Vom găsi o soluție x0 și baza corespunzătoare B0.
Pasul 2. Se calculează soluțiile de bază xB(l), corespunzătoare bazei găsite la pasul 1, pentru l variabil:
xB(l) =
Deoarece valorile Dj = nu depind de l, ele sunt pozitive pentru orice l, nu doar
pentru l0 și deci
soluția xB(l) va fi
optimă atâta timp cât are toate componentele pozitive. Acei l pentru care xB(l) ³ 0 reprezintă mulțimea valorilor parametrului pentru care baza B0
dă soluția optimă.
Pasul 3. Se rezolvă sistemul de inecuații xB(l) ³ 0, a cărui soluție va fi, ținând
cont că toate inecuațiile sunt liniare, un interval , unde
poate fi și -¥ iar
poate fi și +¥ (în general, pentru orice bază, mulțimea pe care soluția este pozitivă
are această formă și deci și mulțimea pe care nu există nici o bază cu soluția
pozitivă va fi o reuniune de astfel de intervale, însă deschise și, cum există
un număr finit de baze, mulțimea numerelor reale va fi împărțită într-un număr
finit de intervale, ca mai sus, pentru fiecare corespunzând o bază optimă sau
nici una. Se poate demonstra că intervalele pe care nu există soluție sunt
neapărat de forma (-¥,a) sau (a,+¥)). Deoarece B-1 este inversabilă, cel puțin unul dintre
și
este finit. Fie
acesta.
Pentru l > , cel puțin una din componentele soluției de bază
corespunzătoare bazei B0 va fi strict negativă. Este clar că, pentru
l >
, trebuie căutată altă bază optimă, dacă aceasta există.
Pasul 4. Reluăm algoritmul, pentru o valoare a lui l aflată în imediata vecinătate a luiși l >
, astfel încât să ne situăm în intervalul imediat următor
intervalului
. Pentru găsirea bazei corespunzătoare acestuia (sau pentru
aflarea faptului că nu există nici o soluție pentru l >
) se aplică în continuare algoritmul simplex dual (deoarece
toți Dj ³ 0).
Se obține o succesiune de valori <
<
<
<
= +¥ și o succesiune de baze și soluții
optime asociate fiecărui interval.
Pasul 5. Reluăm algoritmul pentru o valoare a lui l aflată în imediata vecinătate a lui și l <
, astfel încât să ne situăm în intervalul imediat anterior
lui
. Pentru găsirea bazei corespunzătoare acestuia (sau pentru
aflarea faptului că nu există nici o soluție pentru l <
) se aplică în continuare algoritmul simplex dual (deoarece
toți Dj ³ 0).
Se obține o succesiune de valori >
>
>
>
= -¥ și o succesiune de baze și soluții
optime asociate fiecărui interval.
În acest moment, cunoaștem, pentru fiecare valoare posibilă a parametrului l, soluția optimă a problemei sau invers, pentru fiecare bază, care este mulțimea parametrilor pentru care aceasta este optimă și algoritmul este terminat.
Exemplu O întreprindere are gama sortimentală formată din 6 produse {Pj / j = 1,6} pentru fabricarea cărora folosește 3 materii prime {Mi / i = 1,3}. Se cunosc:
a) disponibilurile din fiecare materie primă {bi(l) / i = 1,3}, care sunt dependente liniar de un parametru l.
b) profiturile/1000 unități vândute din fiecare produs {cj / j = 1,6}.
c) coeficienții tehnologici {ai,j / i = 1,3; j = 1,6} (ai,j = cantitatea din materia primă i necesară fabricării a 1000 produse de tipul j)
mat. prime |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
Disponibil |
M1 |
3 |
5 |
7 |
2 |
1 |
2 |
20 + 3l |
M2 |
5 |
6 |
9 |
3 |
4 |
5 |
40 + 2l |
M3 |
7 |
8 |
10 |
3 |
2 |
8 |
60 + l |
profit/1000 prod. |
2 |
3 |
4 |
1 |
1 |
2 |
|
Se dorește găsirea acelor cantități {xj / j = 1,6} ce trebuie fabricate din fiecare produs, astfel încât să se obțină profitul total maxim.
Rezolvare Avem de rezolvat o problemă de parametrizare a termenului liber, deci vom aplica algoritmul de mai sus.
Se scrie problema de programare asociată și se aduce la forma standard:
|
|
F.S. |
max (2x1
+ 3x2 + 4x3 + x4 + x5 + 2x6) x1, x2,
x3, x4, x5, x6 ³ 0 |
Û |
max (2x1
+ 3x2 + 4x3 + x4 + x5 + 2x6) x1, x2,
x3, x4, x5, x6 ³ 0 |
Pasul 1. Rezolvăm problema pentru l = 0 și obținem baza optimă:
B = (a5,a6,a2)
=
soluția optimă xB
= , inversa bazei B-1 =
și ultimul tabel
simplex:
|
|
|
2 |
3 |
4 |
1 |
1 |
2 |
0 |
0 |
0 |
cB |
xB |
xB |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
s1 |
s2 |
s3 |
1 |
x5 |
|
|
0 |
|
|
1 |
0 |
|
|
|
2 |
x6 |
|
|
0 |
|
|
0 |
1 |
|
|
|
3 |
x2 |
|
|
1 |
|
|
0 |
0 |
|
|
|
|
|
|
|
0 |
|
|
0 |
0 |
|
|
|
Pasul 2. Se calculează soluția de bază corespunzătoare bazei optime pentru l oarecare:
xB(l) = B-1Śb(l) = Ś
=
Pasul 3. Se rezolvă sistemul de inecuații xB ³ 0:
xB ³ 0
Û
Þ l Î
Þ
=
și
=
Pasul 4. Se observă că pentru l aflat în
imediata vecinătate a luiși l >
vom avea o singură variabilă negativă și anume x6.
Pentru un astfel de l, soluția corespunzătoare bazei B este
dual admisibilă și, aplicând algoritmul simplex dual, aceasta va fi scoasă din
bază și înlocuită cu x3. Se obțin:
-
noua bază B = (a5, a3,
a2) = și B-1 =
- noua soluție:
xB(l) = B-1Śb(l) = Ś
=
- noul tabel simplex corespunzător noii baze:
|
|
|
2 |
3 |
4 |
1 |
1 |
2 |
0 |
0 |
0 |
cB |
xB |
xB |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
s1 |
s2 |
s3 |
1 |
x5 |
|
|
0 |
0 |
|
1 |
|
|
|
|
4 |
x3 |
|
|
0 |
1 |
|
0 |
|
|
|
|
3 |
x2 |
|
|
1 |
0 |
|
0 |
|
|
|
|
|
|
|
|
0 |
0 |
|
0 |
|
|
|
|
- noul interval pe care este optimă noua bază:
Þ l Î
Þ
=
și
=
Reluând algoritmul vom obține succesiv intervalele și soluțiile următoare:
1.
l Î B = (a7, a3,
a2) xB =
2.
l Î B = (a7, a3,
a5) xB =
Pasul 5. Începând înapoi de la =
obținem:
1.
l Î B = (a5, a6,
a9) xB =
2.
l Î B = (a5, a8,
a9) xB =
3.
l Î - sistemul nu are
soluții admisibile.
La marginile intervalelor problema va
avea cel puțin două soluții de bază și, deci, o infinitate de soluții optime
(toate combinațiile convexe dintre acestea).
În concluzie, dacă:
-
l Î disponibilul din M1
ar fi negativ, caz fără sens economic.
-
l Î întreprinderea va
fabrica doar produse de tipul P5
-
l Î întreprinderea va
fabrica doar produse de tipul P5 și P6
-
l Î întreprinderea va
fabrica doar produse de tipul P5, P6 și P2
-
l Î întreprinderea va
fabrica doar produse de tipul P5, P3 și P2
-
l Î întreprinderea va
fabrica doar produse de tipul P3 și P2
-
l Î întreprinderea va
fabrica doar produse de tipul P3 și P5
Cazul 2 Parametrizarea coeficienților funcției obiectiv
Așadar, coeficienții funcției obiectiv au forma:
c(l) = c0 + c1Śl Û cj(l) =
unde l Î R este parametrul considerat iar c0, c1 ÎRn sunt doi vectori cu componentele constante reale. Pentru rezolvarea problemei pentru orice l, vom parcurge următorii pași:
Pasul1. Se rezolvă problema pentru un l0 inițial; presupunem că există cel puțin un l pentru care problema are soluție (altfel am avea un caz neinteresant) și în plus putem presupune că el este egal chiar cu 0, acest lucru putând fi aranjat eventual prin schimbarea de variabilă:
l = l0 + m
și scrierea lui b sub forma:
c(m) = (c0 + c1Śl0) + c1Śm.
Vom găsi o soluție x0 și baza corespunzătoare B0.
Pasul2. Se calculează Dj(l) corespunzători bazei găsite la pasul 1, pentru l variabil:
Dj(l) = Ś
c(l)
Deoarece componentele soluției de bază corespunzătoare xB = nu depind de l, ele sunt pozitive pentru orice l, nu doar
pentru l0 și
soluția xB va fi optimă
atâta timp cât toți Dj(l) ³ 0. Acei l pentru care Dj(l) ³ 0 reprezintă mulțimea valorilor
parametrului pentru care baza B0 dă soluția optimă.
Pasul3. Se rezolvă sistemul de inecuații Dj(l) ³ 0, a
cărui soluție va fi, ținând cont că toate inecuațiile sunt liniare, un interval
, unde
poate fi și -¥ iar
poate fi și +¥ (în general, pentru orice bază, mulțimea pe care Dj(l) ³ 0 are această formă și, deci, și mulțimea pe care nu există soluție
optimă va fi o reuniune de astfel de intervale, însă deschise și, cum există un
număr finit de baze, mulțimea numerelor reale va fi împărțită într-un număr
finit de intervale, pentru fiecare corespunzând o bază optimă sau nici una. Se
poate demonstra că intervalele pe care nu există soluție optimă sunt neapărat
de forma (-¥,a) sau (a,+¥)). Deoarece B-1 este inversabilă, cel puțin unul dintre
și
este finit. Fie
acesta.
Pentru l > cel puțin unul dintre Dj(l)
corespunzători bazei B0 va fi strict negativ. Este clar că pentru l >
trebuie căutată altă
bază optimă, dacă aceasta există.
Pasul4. Reluăm algoritmul pentru o valoare a lui l aflată în imediata vecinătate a luiși l >
, astfel încât să ne situăm în intervalul imediat următor
intervalului
. Pentru găsirea bazei corespunzătoare acestuia (sau pentru
aflarea faptului că nu există nici o soluție optimă pentru l >
) se aplică în continuare algoritmul simplex primal (deoarece
xB ³ 0).
Se obține o succesiune de valori <
<
<
<
= +¥ și o succesiune de baze și soluții
optime asociate fiecărui interval.
Pasul5. Reluăm algoritmul pentru o valoare a lui l aflată în imediata vecinătate a lui și l <
, astfel încât să ne situăm în intervalul imediat anterior
lui
. Pentru găsirea bazei corespunzătoare acestuia (sau pentru
aflarea faptului că nu există nici o soluție optimă pentru l <
) se aplică în continuare algoritmul simplex primal (deoarece
xB ³ 0).
Se obține o succesiune de valori >
>
>
>
= -¥ și o succesiune de baze și soluții
optime asociate fiecărui interval.
În acest moment, cunoaștem, pentru fiecare valoare posibilă a parametrului l, soluția optimă a problemei sau invers, pentru fiecare bază, care este mulțimea parametrilor pentru care aceasta este optimă și algoritmul este terminat.
Exemplu Analizăm cazul aceleiași întreprinderi în cazul în care disponibilul din fiecare materie primă rămâne constant dar profiturile variază în funcție de un parametru m, acestea fiind date în tabelul de mai jos:
mat. prime |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
Disponibil |
M1 |
3 |
5 |
7 |
2 |
1 |
2 |
20 |
M2 |
5 |
6 |
9 |
3 |
4 |
5 |
40 |
M3 |
7 |
8 |
10 |
3 |
2 |
8 |
60 |
profit/1000 prod. |
2 + 4m |
3 + 3m |
4 + 2m |
1 + 4m |
1 + 2m |
2 + 3m |
|
Rezolvare. Avem de rezolvat o problemă de parametrizare a coeficienților funcției obiectiv, deci vom aplica algoritmul de mai sus.
Se scrie problema de programare asociată și se aduce la forma standard:
|
|
F.S. |
max [(2+4m)x1
+ (3+3m)x2 + (4+2m)x3 + (1+4m)x4 + (1+2m)x5 + (2+3m)x6] x1, x2,
x3, x4, x5, x6 ³ 0 |
Û |
max [(2+4m)x1
+ (3+3m)x2 + (4+2m)x3 + (1+4m)x4 + (1+2m)x5 + (2+3m)x6] x1, x2,
x3, x4, x5, x6 ³ 0 |
Pasul 1. Rezolvăm problema pentru m = 0 și obținem baza optimă:
B = (a5,a6,a2)
=
soluția optimă xB
= , inversa bazei B-1 =
și ultimul tabel
simplex:
|
|
|
2 + 4m |
3 + 3m |
4 + 2m |
1 + 4m |
1 + 2m |
2 + 3m |
0 |
0 |
0 |
cB |
xB |
xB |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
s1 |
s2 |
s3 |
1 + 2m |
x5 |
|
|
0 |
|
|
1 |
0 |
|
|
|
2 + 3m |
x6 |
|
|
0 |
|
|
0 |
1 |
|
|
|
3 + 3m |
x2 |
|
|
1 |
|
|
0 |
0 |
|
|
|
|
|
|
|
0 |
|
|
0 |
0 |
|
|
|
Pasul 2. Se calculează Dj corespunzători bazei optime, pentru m oarecare:
D(l) =
Ś
c(m) =
=
Pasul 3. Se rezolvă sistemul de inecuații xB ³ 0:
D(m) ³ 0
Û
Þ m Î
Þ
=
și
=
Pasul 4. Se observă că pentru m aflat în imediata vecinătate a lui și m >
vom avea un singur Dj negativ și anume D4. Pentru un astfel de m, soluția
corespunzătoare bazei B este primal admisibilă și, aplicând algoritmul simplex
primal, x4 va fi introdusă în bază și înlocuită cu x5. Se
obțin:
-
noua bază B = (a4, a6,
a2) = și B-1 =
- noua soluție:
xB = B-1Śb = Ś
=
- noul tabel simplex corespunzător noii baze:
|
|
|
2 + 4m |
3 + 3m |
4 + 2m |
1 + 4m |
1 + 2m |
2 + 3m |
0 |
0 |
0 |
cB |
xB |
xB |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
s1 |
s2 |
s3 |
1 + 4m |
x4 |
|
|
0 |
|
1 |
|
0 |
|
|
|
2 + 3m |
x6 |
|
|
0 |
|
0 |
|
1 |
|
|
|
3 + 3m |
x2 |
|
|
1 |
|
0 |
|
0 |
|
|
|
|
|
|
|
0 |
|
0 |
|
0 |
|
|
|
- noul interval pe care este optimă noua bază:
Þ m Î
Þ
=
și
=
Reluând algoritmul vom obține succesiv intervalele și soluțiile următoare:
1.
m Î B = (a4, a6,
a9) xB =
2.
m Î B = (a4, a5,
a9) xB =
Pasul 5. Începând înapoi de la =
obținem:
3.
l Î B = (a3, a6,
a2) xB =
4.
l Î B = (a3, a6,
a9) xB =
5.
l Î B = (a3,
a8, a9) xB =
6.
l Î B = (a7,
a8, a9) xB =
La marginile intervalelor, problema va
avea cel puțin două soluții de bază și, deci, o infinitate de soluții optime
(toate combinațiile convexe dintre acestea).
În concluzie, dacă:
-
l Î disponibilul din M1
ar fi negativ, caz fără sens economic.
-
l Î întreprinderea va
fabrica doar produse de tipul P5.
-
l Î întreprinderea va
fabrica doar produse de tipul P5 și P6.
-
l Î întreprinderea va
fabrica doar produse de tipul P5, P6 și P2.
-
l Î întreprinderea va
fabrica doar produse de tipul P5, P3 și P2.
-
l Î întreprinderea va
fabrica doar produse de tipul P3 și P2.
-
l Î întreprinderea va
fabrica doar produse de tipul P3 și P5.