Documente Academic
Documente Profesional
Documente Cultură
Pentru rezolvarea modelelor liniare, au aprut, ncepnd cu 1948, mai multe metode, dintre care amintim: metoda simplex cu variantele sale, metoda Kantorovici, metoda relaxrii. Dintre toate metodele aprute n literatura de specialitate, cea mai rspndit este cea elaborat de G. B. Dantzig. Algoritmul propus de Dantzig permite determinarea unei soluii admisibile de baz optime, dac exist, prin examinarea parial dirijat a mulimii soluiilor admisibile de baz; mai precis, vor fi testate o parte din soluiile admisibile de baz. n mod empiric, pe baza unor experiene de calcul efectuate timp de 10 ani, s-a stabilit c soluia optim, dac exist, se obine dup cel mult 3m iteraii (m = rangA). Fiecare dintre aceste noi iteraii const n gsirea unei noi soluii admisibile de baz creia i corespunde o valoare mai bun a funciei obiectiv dect n situaia precedent. 1.a) Teoreme fundamentale ale algoritmului simplex primal Se consider o problem de programare liniar sub form standard:
AX = b , unde A M m n (R ) , rangA = m < n ; b 0 i i I a.. bi 0
(P)
X 0 [max] f ( x) = CX
Fie X 1 o SAB corespunztoare bazei B1 = (as )sJ B1 , n raport cu care se va explicita sistemul de restricii X B = B1
1
( )
(X )
b B1
( )
RX R , unde
T
(B )
X1.
1 1
b = (X )
not
B1
0 . Elementele vectorului
B1
= ( x1 , x 2 , ...., xm )
sunt
II.1.1 i II.1.2
f 1 c1 =
min { f j c j | f j c j < 0 } jJ J B
x xk = min s y sj > 0 . By y kl s J sj
O soluie admisibil de baz, X , a problemei (P) este optim dac i numai dac II.1.3
f j c j 0 , j J .
II.1.4
f j c j 0 , j J
variabilelor bazice.
Corolar: Soluia optim X * este unic determinat dac
II.1.5
nebazic).
Teorema 3: Testul de optim infinit
Dac pentru o soluie admisibil de baz a problemei considerate exist un indice l J J B astfel nct f l cl 0 i y sl 0 , s J B , atunci (P) are optim infinit.
Observaia 4: Pentru problemele cu funcia obiectiv [min] f , criteriul de
Din enunul teoremei rezult c o problem de programare liniar are optim infinit dac exist un vector nebazic cu toate componentele nenegative ( al = ( y sl )s , y sl 0 , s ), pentru care f l cl nu satisface criteriul de optimalitate al tipului su de optim.
Optim infinit
f j cj > 0,
[max]
j J J f j cj = 0,
B
f j c j 0 , j {1,.., n}
i
j J f j cj = 0,
B
k J J B a.. f k ck = 0 f j c j 0 , j {1,.., n}
i
[min]
j J B f j cj < 0, j J J
B
k J J B a.. f k ck = 0
Se genereaz o SAB
Calculeaz:
0 , pentru a j vector bazic 1 B f j c j = c B a j c j care este 0 , pentru a j vector nebazic, sau 0 , pentru a vector nebazic j B 1 f0 = c B b
fj cj 0 j = 1, n
DA
B 1 b f 0 = [max] f ; X = 0
*
NU
DA
\ J B a.. f l cl < 0 y sl 0 , s I
(1)
(1) NU
Se aplic: criteriul de intrare n baz (C.I.B):
f j c j <0
min {f j c j } = f r c r ;
x x min s = k y sr > o y y kr sI sr
raport unic.
- dac raportul nu este unic determinat, se lucreaz cu problema perturbat sau se aplic metoda lexicografic pentru a stabili ce vector va fi eliminat. Se trece la
( 2) X SAB
, unde
f X (1) f X ( 2 )
) (
x k y k1 y , ,...., kn y kr y kr y kr
2) Vectorii care se menin n baz i menin componentele; dac atunci, n noua baz,
ar
ak ,
ar
ak ;
3) Pentru orice alt component care nu a fost calculat la 1) sau 2), se aplic una dintre formulele:
x i :=
y ij :=
x i y kr x k y ir , y kr y ij y kr y kj y ir
pentru
i J B \ {r}
y kr
, pentru
jJ
Observaia 5:
m numrul soluiilor admisibile de baz este cel mult C n ;
trecerea de la o iteraie la alta presupune trecerea de la o SAB la o alt soluie admisibil de baz, cel puin la fel de bun n sensul dat de optimul funciei; rezult c dup un numr finit de pai acest procedeu iterativ se oprete dac nu apare fenomenul de ciclare.
Observaia 6: Prin algoritmul simplex sunt examinate numai soluiile
admisibile de baz. Procedura de iterare a algoritmului simplex se oprete atunci cnd nu va mai exista nici un vector care, introdus n baz, s duc la creterea valorii funciei scop, dac problema admite optim finit. Din punct
de vedere geometric se ajunge la punctul de extrem al mulimii optimizeaz funcia scop.
Observaia 7: Prin trecerea de la o SAB la o alta cel puin la fel de bun n
care
Model liniar cu optim finit, unic determinat Specific acestui prim exemplu, care va fi studiat, este c prin aducerea la forma standard apar m vectori care formeaz o baz n spaiul
bunurilor.
Etapa 0:
Se consider un model simplificat al unui proces de fabricare a trei produse, prin utilizarea limitat a trei resurse: [max] f = 20 x1 + 16 x2 + 17 x3 x1 + 2 x2 680 2 x1 + x2 + 4 x3 800 2 x + 2 x + x 900 2 3 1
x j 0, j = 1,3
cu forma standard:
[max] f = 20 x1 + 16 x2 + 17 x3 + 0 x4 + 0 x5 + 0 x6
II.1.6
Etapa 1: Generarea unei soluii admisibile de start. Pasul 1 Se scrie matricea A i se verific apoi condiia
rangA36 = 3 < 6 :
1 A = 2 2 a1 2 0 1 0 0 1 4 0 1 0 i rangA = 3 < 6. 2 1 0 0 1 a 2 a3 a 4 a5 a 6
unitate a4 , a5 i a6 . Aadar, X
x4 = x5 , x 6
R1
x1 = x2 , de unde rezult x 3
liniar independeni n R m ; important pentru rapiditatea gsirii soluiei optime este ca A s conin o matrice unitate.
Pasul 2
680 = (0 0 0 ) 800 = 0 ; 900
f0 = f (X ) = c X
1
B
= (c 4
c5
c6 ) X
f1 = c I
B
1 3
1 a1 = (0 0 0 ) I 3 2 = 0 , 2 2 a 2 = (0 0 0 ) I 3 1 = 0 ; 2
0 a3 = (0 0 0 ) I 3 4 = 0 , 1
f2 = c I
B
1 3
f3 = c I
B
1 3
f4 = c I
B
1 3
1 a 4 = (0 0 0 ) I 3 0 = 0 ; 0
0 a5 = (0 0 0 ) I 3 1 = 0 , 0
f5 = c I
B
1 3
f6 = c I
B
1 3
0 a 6 = (0 0 0 ) I 3 0 = 0 . 1
De obicei, calculele implicate de aplicarea algoritmului simplex sunt organizate n tabelele simplex, care au cel mult m + 4 linii i n + 4 coloane, i corespund unei baze. n continuare va fi dat tabelul corespunztor bazei de start.
T. II.1.1
cj cB 0 0 0 B
a4 a5
20
a1
16
a2
17 a3 0 4 1 0
0
a4
0 a5 0 1 0 0
0 a6 0 0 1 0
1 2 2 0
2 1 2 0
1 0 0 0
a6 fj f j cj
DA
f j c j 0 , j = 1, n ?
NU
j = 1,2,3 i
f j cj = 0 ,
[max] f = +
NU
Pasul 5
Din T.II.1.1 se observ c nu exist vector nebazic (a1 componentele negative i pentru care f l cl < 0 .
a2
a3 ) cu toate
rezult c soluia testat, X 1 , nu este optimal, deci, trebuie s se treac la o nou SAB, X 2 , cel puin la fel de bun ca X 1 , n sensul c f X 1 f X 2 . Pentru aceasta se vor executa dou operaii.
Operaia 1: Se aplic criteriul de intrare n baz:
C.I.B [max] f minB f j c j f j c j < 0 = f l cl al va intra n
jJ J
( ) ( )
baz.
Operaia 2: Se aplic criteriul de eliminare din baz:
[max ] f b b x C.E.B = min s y sl > 0 = min s a sl > 0 = k , B B [min ] f sJ a kl sJ a sl y sl
pentru
X 1,
sau, n general, =
pivotul iteraiei. Se va presupune c pivotul este unic, ceea ce este echivalent cu a spune c noua SAB are m componente strict pozitive. Rapoartele calculate se trec n ultima coloan din tabelul II.1.1. n cazul nostru, avem:
Operaia 1:
j =1, 2 , 3
de unde rezult c a1 va intra n noua baz (l=1). b b b 680 800 900 800 b2 Operaia 2: min 1 , 2 , 3 = min , , = = 2 2 2 a 21 1 a11 a 21 a33 a 2 va fi eliminat i a 21 = 2 este pivotul iteraiei, pe care l vom colora n tabel.
Cele trei rapoarte se trec n ultima coloan a tabelului T.II.1.1; dac un raport nu se poate calcula n sensul dat de C.E.B n ultima coloan, pe acel loc, se va trece / sau - .
Pasul 6 Conform teoremei 1, se trece de la soluia admisibil de baz X 1 la soluia admisibil de baz X 2 ce corespunde bazei B2 dedus
din B1 prin nlocuirea vectorului a k cu vectorul al : B2 = (a1 ... a k 1 al a k +1 ... a n ) i J B2 = ( J B1 {k}) U {l} .
Se trece la un nou tabel simplex. Se vor scrie vectorii nebazici i X n noua baz. Aceste calcule ce vor fi trecute n tabelul T.II.1.3 iteraia 2 a algoritmului simplex sunt efectuate n conformitate cu calculele implicate de metoda eliminrii complete:
B
Dac un vector se menine n baz, atunci el i menine componentele (a1 ... ak ak +1 ... am ) ; dac vectorul ak este eliminat din baz de ctre al , atunci acesta i ia componentele (vezi tabelul T.II.1.2). n particular, vectorii a 4 , a 6 i menin componentele, iar vectorul a1 va avea componentele lui a 5 din iteraia 1. Elementele din linia vectorului al se obin mprind elementele din linia vectorului a k , iteraraia precedent, la pivotul iteraiei, y kl . Astfel, elementele din linia 2, iteraia 2, iau valorile
800 2 1 4 0 1 0 , , , , , , . 2 2 2 2 2 2 2
T.II.1.2
cj
c
B
c1
a1
. . .
c k 1
a k 1
ck
ak
a 1l a kl
c k +1
a k +1
. . .
cm
am
c m +1
a m +1
. .
cj
aj
. .
cl
al
. .
cn
an
B
b a
a1
1 kl
b a
k
c1
1l
a ij a kl a kj a il a kl
B j J J 2
a
kl
. . .
c k 1
. .
b a k 1 a
kl
. .
. 1
. 0
. .
. 0
.
0
.
b a
k
.
k 1l
k +1
a
kl
k 1l a kl
b cl al a
1 a kl
.
km + 1 a kl
. .
kl
kn a kl
b c k +1 a k +1
k +1
a
kl
b a
k
.
k + 1l
1
k + 1l a kl
kl
. . .
cm
. .
b a am
m
. .
. 0
. .
. 0
. .
. 1
. 0
.
b a
k
.
ml
kl
a
kl
fj
fj c
j
f0
f1
f1 c 1
. .
. 0
fk
fk c k
. 0
. .
fm
fm c m f m +1 c m +1
fl
fn
fl c l
fn c n
Dup efectuarea calculelor, se revine la pasul 2. Pentru exemplul numeric de mai nainte, obinem:
1 prima component 2
y12 :=
1
2 2 11 2
a2
a treia component 2 2 1 2
y 32 :=
2 2 2 1 2
Rezultatele calculelor pentru exemplul numeric propus, pn la oprirea algoritmului, sunt date n tabelul II.1.3:
T.II.1.3
cj cB
0 20 B
20
16
17
XB
280 400 100 8000
a1 a 2
0 1 0 20 3/2 1/2 1 10 -6 0 0 1 16
a3
-2 2 -3 40 23 5/2 7/2 -3 22 5
a 4 a5
1 0 0 0 1 0 0 0 -1/2 1/2 -1 10 10 1 1 -1 4 4
a6
0 0 1 0 -3/2 -1/2 1 6 6
a4 a1 a6
Iteraia 2
fj
f j cj
0 20 16
0 ? NU
Iteraia 3
a4 a1 a2 fj
f j cj
0 1 0 20
0 ? DA STOP
n linia test f j c j este verificat criteriul de optimalitate, motiv pentru care algoritmul se oprete, modelul liniar admind soluie optim finit.
Citirea soluiei:
Baza optim Variabile bazice Valori optimale
130 350 100 Valori optimale 0 0 0
T
a4 a1 a2
x4 x1 x2
Variabile nebazice
x3 x5 x6
rangA=3.
[max] f = 8600 = f 0 n ultimul tabel, numit i tabel optimal.
Modelul liniar cu optim nemrginit
rang
A=2<4
1 0 B= = (a1 0 1
cj cB
1 2 B
XB
1 1 3
a1
1 0 1
a2
0 1 2 0 1 2
a3
-1 1 1 -1 -2 -1 -4 -6
a4
1/2 -1 -3/2 -5/2 1 0 1
1/(1/2) -
a1 a2 fj
f j cj
1 2
0 ? NU; Th.3?
-
NU
Th.1
a4 a2 fj
2 3 8
2 2 6 5
f j cj
0 ? NU; Th.3? DA
n ultima linie exist un vector nebazic, i anume a 3 , pentru care y = 2 < 0 Th .3 f 3 c 3 < 0 i 13 STOP: [max] f = + y 23 = 1 < 0 Vom investiga natura programului dual.
[max] f = 1 x1 + 2 x 2 + 2 x3 + 1 x 4
[min]g = u1 + u 2
1 x4 = 1 1 x1 + 0 x2 + ( 1) x3 + 2 0 x1 + 1 x2 + 1 x3 + (1) x4 = 1 x1 0 x2 0 x3 0 x4 0
u1 R u2 R u1 + 0 u 2 1 1 u2 2
( 1) u1 + u 2 2
1 u1 u 2 1 2
u2
d 1 : u1 = 1
d 2 : u2 = 2
d 4 : u2 = d 3 : u 2 = u1 + 2
O
1 u1 1 2 u1
Din rezolvarea grafic a problemei duale, se observ c = . Nu exist (u1 u 2 ) , u i R , i = 1,2 , care s verifice simultan cele 4 restricii. S reinem c, dac o problem de programare liniar are optim infinit, atunci duala sa nu are soluie. Este aceasta o afirmaie general valabil? Rspunsul l vom afla n urmtorul capitol.
n continuare, vom analiza cazul n care matricea A, dup aducerea la forma standard, nu conine o baz unitate din spaiul R m . n general, n matricea A din modelele matematice corespunztoare unor procese reale nu apare complet I m . Pentru a genera o soluie admisibil de baz a problemei date, dac acest lucru este posibil, se poate alege una din variantele: Scrierea explicit a sistemului de restricii n raport cu o baz din R m . Metoda celor dou faze. Metoda bazei artificiale.
Presupunem c matricea A nu conine o baz unitate de ordinul m. Prin aceast metod se urmrete generarea unei SAB pentru (II.2.1), dac acest lucru este posibil, folosind numai algoritmul simplex primal.
Etapa 1 Se extinde problema prin introducerea a m variabile artificiale care vor fi penalizate n funcia obiectiv:
AX + I m X a = b II.2.2 X 0, X a 0 , [max] f = CX X a
a a unde >> 0 , I m este matricea unitate de ordin m, X a = x n +1 ...x n + m
este
1 0 Se constat c baza B = nu poate fi format cu ajutorul unor vectori 0 1 din A, motiv pentru care se trece la forma extins:
a a [max] f = 3 x1 + 2 x2 + 4 x3 ( x4 + x5 ) a x1 + 4 x2 + 3 x3 + x4 = 6 a 2 x1 + x2 + x3 + x5 = 4
>> 0
noua
matrice
x j 0 , j 1,5
1 4 3 1 0 A= , apare baza B = (a 4 2 1 1 0 1
a a x4 = 6 , x5 = 4 i f va fi (6 4 ) < 0 .
>> 0 , ceea ce s-ar traduce printr-o comportare nerentabil n raport cu tipul de optim.
Etapa 2: Se aplic algoritmul simplex problemei extinse. Presupunem c
dup k iteraii, k N * , k < , avem f j c j 0 , j = 1, n + m , deci, problema extins admite soluie optim finit.
La baza discuiei ce va urma, relativ la existena sau nonexistena soluiei optime a problemei iniiale, stau urmtoarele teoreme:
Teorema 1 Dac II.2.1 are soluie optim finit, atunci ea va fi optim i pentru II.2.2. Orice soluie optim a problemei extinse care nu conine nici o variabil artificial strict pozitiv este soluie optim i pentru problema iniial, dup nlturarea variabilelor artificiale.
Teorema 2 Dac II.2.1 are funcia obiectiv nemrginit, atunci i II.2.2 are funcia obiectiv nemrginit. Reciproca este adevrat.
Dup oprirea algoritmului, se discut natura problemei iniiale dup cum urmeaz:
Cazul 1: Soluia optim a problemei extinse nu conine nici o variabil artificial cu valoare strict pozitiv soluia optim a problemei II.2.1 se
obine considernd numai valorile optimale ale variabilelor x1 ,..., xn .
Cazul 2: n soluia optim exist cel puin o variabil artificial cu valoare strict pozitiv; n acest caz, problema iniial nu are soluie. Observaia 2: Deoarece funcia obiectiv este de forma
(CX X a ) ,
anumit iteraie exist ( f j c j )( ) < 0 pentru cel puin doi indici. Va intra n noua baz vectorul al dac ( f l cl )( ) va avea cel mai mic coeficient negativ (respectiv, pentru [min] f , cel mai mare coeficient pozitiv).
este o SAB pentru problema iniial. Practic, la aceast etap, se aplic algoritmul simplex primal pentru problema originar. Observaia 4: n general, dac a fost eliminat un vector artificial din baz, componentele sale nu vor mai fi calculate la urmtoarele iteraii. Nu se recomand acest lucru atunci cnd se cere soluia optim a dualei sau se pune problema postoptimizrii modelului. Se continu problema prin aplicarea algoritmului simplex primal
cj
c
B
3
a1
2
a2
4
a3
a4
a5
B
a4 a5 fj
fj
6 4
10
1 2
3
4 1
5
3 1
4
1 0
0 1
6/4 4/1
cj
a2
3 3
5 2
4 4
1/4 -1/4
1/ 2 + / 4
0 1
0 j ?
NU 6 2
3/2 5/2
1/4 5/4
3/4 1/4
3/ 2 / 4
a5 fj fj
5 / 2 + 3 1 / 2 5 / 4 5 / 2 5 / 4
cj
a2
a1
5 / 2 5 / 4 1 / 2 + 5 / 2
-1/5 4/5 2
2 +
0 j ?
NU 10/7 10
2 3
1 2 8
0 1 3
7/10 1/5 2 -2 1 0 24
3/10 -1/5 0
fj fj
cj
a3
a1
0 j ?
NU
4 3
0 1 3
fj fj
cj
0 DA
STOP
Exemplificarea observaiei 2:
Iteraia
C.I.B:
min{ 3 3, 5 2, - 4 - 4} = 5 2 = f 2
c2
sau
10 7
Considerm acum un alt exemplu pentru a aplica metoda i n cazul n care se impune minimizarea funciei scop. Rezolvarea problemei, fr comentarii, este redat n cele ce urmeaz: [min] f = 5 x1 + x2 + 2 x3 x1 + 2 x2 + x3 6 3x2 + 4 x3 = 20 x + 2 x 18 3 2 x j 0, j = 1,3 [min] f = 5 x1 + x2 + 2 x3 x1 + 2 x2 + x3 x4 = 6 forma standard 3x2 + 4 x3 = 20 . x + 2 x x = 18 3 5 2 x j 0, j = 1,5
x1 + 2 x 2 + x 3 x 4 = 6 1 a A = 0 3 x 2 + 4 x 3 + x 6 = 20 , x + 2 x x + x a = 18 0 3 5 7 2 a1 x j 0, j = 1,7
0 0 3 4 0 0 1 0 1 2 0 1 0 1 a 2 a3 a 4 a5 a6 a7 0 x1 6 X = x6 = 20 x 18 7
B
2 1 1
B = (a1
a6
a7 ) X SAB x2 0 x3 0 = x4 = 0 x5 0
XR
Tabelul simplex:
cj
5
a1
1
a2
2
a3
0
a4
0
a5
a6
a7
B
a1 a4 a7 fj fj
6 20 18
30 + 38
1 0 0 5
2 3 1
4 + 10 4 + 9
1 4 2
6 + 5 6 + 3
-1 0 0 -5 -3 -1 0 0 -5 -5
0 0 -1
0 1 0
0 0 1
[min] f 0 j ?
NU
cj
a1 a3 a7 fj
0 0 1
5 2
1 5 8
15 + 8
1 0 0 5
0 1 0 2
0 0 -1
[min] f 0 j ? STOP
DA
fj
cj
bazic cu valoare strict pozitiv. Conform teoremei 2, problema propus spre rezolvare este fr soluie.
Faza 1: Scopul acestei etape este de a obine, dac este posibil, o SAB de start pentru II.2.1, aplicnd algoritmul simplex-primal problemei auxiliare:
II.2.3 A X + B (x n +1 ...xn +i ...x n + m ) = (b1 ...bm ) ,
T
unde xn+i este variabila artificial adugat numai prii stngi a restriciei i , i = 1, m , iar B este matricea unitate de ordinul m=rangA. II.2.4 X 0 , X a 0 , II.2.5 [min]W = xn +i .
i =1 m
La aceast faz obiectivul va fi minimizarea sumei variabilelor articiale din restricii, indiferent de tipul de optim al problemei considerate. Din II.2.3 rezult c variabilele artificiale bazice sunt n SAB de start:
X =0 . Se aplic algoritmul simplex primal problemei auxiliare. X SAB = X a = b
Admitem c aceasta are soluie optim finit, deci exist o SAB care verific criteriul de optimalitate: w j c j 0 , j = 1, n + m . Atunci,
Se trece la rezolvarea ei prin metoda simplex primal cu SAB de start dat de soluia optim a problemei auxiliare, dup ce au fost eliminate variabilele artificiale.
min W = 0
NU
Tema 2: Orice soluie admisibil de baz a problemei extinse pentru care W=0 este o SAB a problemei iniiale.
S exemplificm numeric aplicarea acestei metode. Considerm modelul liniar: [min] f = 50 x1 + 25 x2 + 30 x3 x1 + 2 x2 + 3 x3 8 3 x1 + 4 x2 + x3 9 x j 0, j = 1,3 [min] f = 50 x1 + 25 x2 + 30 x3 x1 + 2 x2 + 3x3 x4 = 8 3 x1 + 4 x2 + x3 x5 = 9 x j 0, j = 1,5 1 2 3 1 0 A= 8 3 4 1 0 1 , b = , rangA=2<5. ntruct matricea A nu 9 a1 a 2 a3 a 4 a5 conine 2 vectori unitari care s formeze baza unitate n R 2 , vom aplica metoda celor dou faze. . , cu forma standard
X SAB : X = 0, X a = (8 9 ) . Se aplic
algoritmul simplex-primal:
cj c
B
0
a1
0
a2
0
a3
0
a4
0
a5
1
a6
1
a7
B
a6 a7 fj fj
1 1
8 9 17
1 3 4 4
2 4 6 6 0 1 0 0 1 0
-1 0 -1 -1 -1 0 -1 -1 -2/5 1/10 0 0
1 0 1 1 0 1
0 1 1
8/2 8/4
cj
a6 a2 fj
0 j = 1, 7 ? NU.
1 0
7/5 9
fj
cj
a3 a2 fj
0 j = 1, 7 ? NU.
0 0
7/5 19/10 0
-1/5 4/5 0 0
fj
cj
0 j = 1, 7 ? DA STOP.
Observaie: Coloana lui a 7 nu ne mai intereseaz, deoarece variabila x7 , odat eliminat din baz, nu va mai fi reintrodus ulterior. Idem pentru a 6 . Faza 2: Se revine la funcia obiectiv din modelul originar. Problema de
rezolvat va fi: [min] f = 50 x1 + 25 x2 + 30 x3 x1 + 2 x2 + 3x3 x4 = 8 3 x1 + 4 x2 + x3 x5 = 9 x j 0, j = 1,5
,
cu
X SAB
x1 0 x2 19 / 10 = x3 = 7 / 5 x4 0 x 5 0
obinut prin
eliminarea variabilelor auxiliare din soluia optim gsit la faza 1. Se testeaz optimalitatea sa:
cj
B
50
25
30
0
a4
0
a5
1/5 -3/10
a1
a2
a3
1 0
1 1
a3 a2 fj fj
7/5 19/10
-1/5 4/5
0 1
-2/5 1/10
89,5
14 -36
25
30
-9,5
-9,5
-1,5
-1,5
0 j = 1,5 ? DA
cj
STOP
T
7 5
0 0 ,
[min] f = 50 x1 + 25 x2 + 30 x3 x1 + 2 x2 + 3 x3 8 u1 3 x1 + 4 x2 + x3 9 u 2 x j 0, j = 1,3
Stabilim soluia optim a dualei (dac exist). Forma standard a dualei va evidenia o baz unitate n R 3 . ntr-adevr,
[max]g = 8u1 + 9u 2 1 u1 + 3u 2 + u3 = 50 A = 2 2u1 + 4u 2 + u 4 = 25 , 3 3u + u + u = 30 5 1 2 a1 ui 0, i = 1,5 a4 3 1 0 0 50 4 0 1 0 , rang A=3<5, b = 25 > 0 , 1 0 0 1 30 a 2 a3 a 4 a5
1 0 0 B = 0 1 0 = (a3 0 0 1
a5 ) , X SAB = (0 0 50 25 30 ) .
T
8
a1
9
a2
0
a3
0
a4
0
a5
B
a3 a4 a5 fj fj
0 0 0
50 25 30 0
1 2 3 0 -8
3 4 1 0 -9 0 1 0 9 0 1 0 9
1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 3/4 1/4 -1/4 9/4 9/4 -4/5 3/10 -1/10 19/10 19/10
cj
a3 a2 a5 fj
0 j = 1, 5 ?
0 9 0
25/2 19/2
fj
cj
a3
a2
0 9 8
0 0 1 8
a1 fj fj
cj
0 j = 1,5 ? DA
STOP
(a1
a 2 ... a m1 a2 ... a m ) :
(a1 b)
a2
... a m )
este
baz
Rm ,
dar
(a1
II.3.1 a1 x1 + a 2 x2 + ... + a m 1 xm1 + a m 0 = b . Din II.3.1 rezult c X SAB are componentele ( x1 ....xm 1 0....0 ) , deci
T
Rezolvarea urmtorului model matematic, n R 2 , ne va furniza o interpretare geometric a conceptului de degenerare: [max] f = x1 + 4 x 2 2 x1 + x 2 1 2 x + 5x 5 1 2 , cu forma standard 2 x1 + 3 x 2 6 14 x1 + 11x 2 14 x j 0, j = 1,2
x2
2 B 1 -5/2 -1/2 O 3 C A
d1 d2
d3
x1
3 7 Valoarea maxim este atins n B , , prin care trec trei drepte 8 4 care definesc mulimea convex (simplexul) a soluiilor admisibile. Dac nlocuim soluia optim n forma standard, se obine un program optim
* degenerat: x1 =
3 * 7 * * * * , x 2 = , x3 = 0 , x 4 = 3 , x5 = 0 , x 6 = 0 . 8 4
raportul min nu este unic determinat. Metoda perturbaiilor (A. Chanes) i metoda lexicografic (B.B. Dantzig i P. Wolfe) sunt dou metode ce nu nltur degenerarea, ci creeaz posibilitatea continurii algoritmului prin nlturarea arbitrariului n determinarea vectorului ce va fi eliminat din baz, vector situat pe una din liniile rapoartelor minime de valori egale.
a) Metoda lexicografic
Presupunem c la iteraia p N * , vectorul al , l J , trebuie s intre n baz, toate componentele sale y sl , s I , sunt strict pozitive i
xs xk x = r . = y rl y sl y kl
k = r = min s| y > 0
sl
cj cB c1 ck
cr
B
c1 a1
cl al y1l
cn an
XB x1
x1 / y11
a1
ak
xk
y kl
xk / y kl
min
ar
xr
y rl
xr / y rl
cm
am fj f j cj
xm
y ml
xm / y ml
DA NU
Se trece la Operaia 2.
STOP. Pivotul iteraiei va fi numitorul raportului minim. Va fi eliminat din baz vectorul situat n linia pivotului.
Operaia 2: k := k + 1 Operaia 1.
Dup cel mult n operaii se poate stabili vectorul care trebuie eliminat.
Observaie: n cazul programrii pe calculator, se va elimina din baz vectorul cu cel mai mic indice. n foarte puine cazuri, aceast metod prezint dezavantajul c, dup un anumit numr de iteraii, poate s se
revin la baza iteraiei p, p N * .
a1 a 2 a3 a 4 a5
start pentru algoritmul simplex-primal,
X SAB = (0 0 0 10 15) .
T
Completnd primul tabel, se va observa n formula criteriului de eliminare din baz c minimul nu este unic. ntr-adevr,
cj cB
2 3 B
XB
10 15 65
a1
1 2 8 5
a2
2 3 13 11
a3
1 1 5 1
a4
1 0 2
a5
0 1 3
10/2 15/3
a4
a5 fj f j cj
[min ] f
0 j = 1,5 ? NU
baz. Dar,
Pasul 1
10 1 2 1 1 0 , , , , , 2 2 2 2 2 2 15 2 3 1 0 1 , , , , , 3 3 3 3 3 3
cj c
B
X
5 0
a1
1/2 1/2 2 -1
a2
1 0 2
a3
1/2 -1 -1 -5
a4
1/2 -3 -5 -7
a5
0 1 2
2 3
a4 a5
fj f j cj
10
0 j = 1,5 STOP
b) Metoda perturbaiilor Vom exemplifica aceast metod pe modelul precedent. Pasul 1 Fie (0,1) arbitrar de mic. Se va trece de la II.3.2, la o problem
perturbat, de forma:
[max] f = c j x j
j =1 n
II.3.3
a j x j + ja j = b + ja j
j =1 j =1 j =1
x j 0, j = 1, n Dac soluia admisibil de baz corespunde bazei format din primii m vectori, atunci restriciile din II.3.3 se mai pot scrie:
II.3.4
(x
m s =1
+ s as +
j = m +1
a j = b( ) ,
unde b( ) = b + j a j .
j =1
a1
a2
a3
a4
a5
n particular:
= min
10 + 4 + + 2 2 + 3 15 + 5 + 2 + 3 2 + 3 = , 2 3
2 3 4 3 5 = min 5 + + 2 + + ,5 + + 2 + + 2 2 2 3 3 3
+ 2 +
3
2
4
2
< 5+
3 5 2 +2 + + 3 3 3
Observaia 1: Metodele au fost date n cazul n care raportul minim este realizat pentru doi indici s I , dar se pot aplica i n situaia n care se pot
elimina mai mult de doi vectori din baz.
Observaia 2: Se poate trece de la o SAB degenerat la o SAB cu valorile variabilelor bazice strict pozitive (nedegenerat), aa cum se va vedea i din exemplul urmtor: Se dorete realizarea unui amestec din trei tipuri de benzin. Acest amestec este de multe ori condiionat de cantitile de care dispunem din fiecare produs. Se nelege c avem analizele de laborator ale tuturor produselor i cunoatem caracteristicile chimice ale produselor pe care le amestecm, de aceea, dac amestecm benzina de 92 cu benzina de 88 i cu nafta o facem pentru a obine benzin de 92. Cantitatea de benzin de 92 trebuie s reprezinte cel puin 50% din ntregul amestec, iar nafta trebuie s fie cuprins ntre 25% i 30% din ntregul amestec. Preurile unitare ale sortimentelor sunt de 30$ barilul de nafta, 40$ barilul de benzin de 88 i 50$ barilul de benzin de 92. S determinm ce cantiti se amestec astfel nct valoarea amestecului rezultat s fie maxim.
Notm cu x1 cantitatea de nafta, cu x 2 cantitatea de benzin de 92 i cu x3 cantitatea de benzin de 88. Restriciile privind disponibilul sunt:
x1 100 x 2 90 3 x1 + x 2 + x3 0 . 7 x1 3x 2 3 x3 0 x1 x 2 + x3 0 Forma standard este: [max] f = 4 x1 + 5 x 2 + 3 x3 x1 + x 4 = 100 x + x = 90 5 2 3 x1 + x 2 + x3 + x6 = 0 7 x 3 x 3 x + x = 0 2 3 7 1 x1 x 2 + x3 + x8 = 0 x j 0, j = 1,8
Calculele implicate de aplicarea algoritmului simplex primal sunt prezentate n tabelul urmtor: cj cB
0 0 0 0 0 B 4 5 3 0 0 0 0 0
XB
100 90 0 0 0 0
a1
1 0 -3 7 1 0 -4
a2
0 1 1 -3 -1 0 -5 0 0 1 0 0 5 0 0 1 0 0 50 0 0
a3
0 0 1 -3 1 0 -3 0 -1 1 0 2 5 2 1/3 -1/3 0 -2/3 4/3 -4/3 -13/3 0 0
a4
1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0
a5
0 1 0 0 0 0 0 1 0 0 0 0 -1/3 1/3 1 2/3 2/3 19/3 19/3 -1/2 1/2
a6
0 0 1 0 0 0 0 -1 1 3 1 5 5 1/3 -1/3 0 7/3 1/3 -4/3 -4/3 1/4 -1/4
a7
0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
a8
0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 1 0 -1/4 1/4
90 0 -
a4 a5
a6 a7 a8 fj f j cj
0 0 5 0 0
a4 a5 a2 a7
100 90 0 0 0 0
1 3 -3 -2 -2 -15 -19
100 30 -
a8 fj fj c
0 4 5 0 0
a4 a1 a2 a7
70 30 90 60 60 570
0 1 0 0 0 40
210 45
a8 fj f j cj
0 4
a4 a1
55 45
0 1
220 -
5 0 3
a2 a7
90 90 45 765
0 0 0 4
1 0 0 5
0 0 1 3
0 0 0 0
0 1 0 0 0
36 180
a3 fj f j cj
cj cB
0 4 5 0 3 B
XB
46 54 90 36 36 774
a1
0 1 0 0 0 4
a2
0 0 1 0 0 5
a3
0 0 0 0 1 3
a4
1 0 0 0 0 0
a5
-3/5 3/5 1 2/5 2/5 43/5 43/5
a6
0 0 0 1 0 0
a7
a8
a4 a1 a2 a6
a3 fj f j cj
benzin de 88. Astfel, se vor obine 180 de barili cu valoarea total de 774 10 dolari. Preul unui baril de amestec va fi de 42$. Benzina nafta va reprezenta 54 100 = 30% din amestec, benzina auto de 92 va reprezenta 180 50% din amestec, iar benzina auto de 88 reprezint 30% din amestec. Se observ astfel c, dei la iteraia 2 soluia admisibil de baz este degenerat, la urmtoarea iteraie soluia admisibil devine nedegenerat.
c) Ciclare Dac valoarea funciei scop nu se modific pe parcursul ctorva iteraii succesive, este posibil s apar fenomenul de ciclare, adic s se revin la una dintre soluiile admisibile de baz prin care s-a trecut deja.
Degenerarea este o condiie necesar, dar nu i suficient, de ciclare. Dei foarte multe procese economice sunt modelate prin programe liniare cu soluii admisibile de baz degenerate, la nici una pn acum nu a aprut fenomenul de ciclare. E. Beale [] a gsit i a publicat un astfel de model.
[min] f = 3 1 x 4 + 20 x 5 x 6 + 6 x 7 4 2
1 x1 + 4 x 4 8 x 5 x 6 + 9 x 7 = 0 x + 1 x 12 x 1 x + 3x = 0 . 5 6 7 2 2 4 2 x + x = 1 6 3 x j 0 , j = 1,6 Prezentm n continuare rezultatele sub form de tabel a apte iteraii. Se va observa c primul tabel coincide cu ultimul.
cj
-3/4
20
-1/2
cB
0 0 0
XB
0 0 1 0
a1
1 0 0 0
a2
0 1 0 0
a3
0 0 1 0
a4
1/4 1/2 0 0 3/4
a5
-8 -12 0 0 -20
a6
-1 -1/2 1 0 1/2
a7
9 3 0 0 -6
0 0 -
a1 a2 a3
fj
f j cj
cj
-3/4
20
-1/2
XB
0 0 1 0
a1
4 -2 0 -3 -3
a2
0 1 0 0
a3
0 0 1 0
a4
1 0 0 -3/4
a5
-32 4 0 24 4
a6
-4 3/2 1 3 7/2
a7
36 -15 0 -27 -33
0 -
-3/4 0 0
a4 a2 a3
fj f j cj
cj
-3/4
20
-1/2
X
0 0 1 0
a1
-12 -1/2 0 -1 -1
a2
8 1/4 0 -1 -1
a3
0 0 1 0
a4
1 0 0 -3/4
a5
0 1 0 20
a6
8 3/8 1 3/2 2
a7
-84 15/4 0 -12 -18
0 0 1
-3/4 20 0
a4
a5 a3 fj f j cj
cj
-3/4
20
-1/2
XB
0 0 1 0
a1
-3/2 1/16 3/2 2 2
a2
1 -1/8 -1 -3 -3
a3
0 0 1 0
a4
1/8 -3/64 -1/8 -1 -1/4
a5
0 1 0 20
a6
1 0 0 -1/2
a7
-21/2 3/16
-1/2 20 0
a6 a5 a3 fj f j cj
21/2 2/21 9 3
cj
-3/4
20
-1/2
XB
0 0 1 0
a1
2 1/3 -2 1 1
a2
-6 -2/3 6 -1 -1
a3
0 0 1 0
a4
-5/2 -1/4 5/2 -1/4 1/2
a5
56 16/3 -56 4 -16
a6
1 0 0 -1/2
a7
0 1 0 6
0 0 -
-1/2 6 0
a6 a7 a3
fj
f j cj
cj
-3/4
20
-1/2
X
0 0 1 0
a1
1 0 0 0
a2
-3 1/3 0 2 2
a3
0 0 1 0
a4
-5/4 1/6 0 1 7/4
a5
28 -4 0 -24 -44
a6
1/2 -1/6 1 -1 -1/2
a7
0 1 0 6
0 1
0 6 0
a1 a7
a3 fj f j cj
cj
-3/4
20
-1/2
cB
0 0 0
XB
0 0 1 0
a1
1 0 0 0
a2
0 1 0 0
a3
0 0 1 0
a4
1/4 1/2 0 0 3/4
a5
-8 -12 0 0 -20
a6
-1 -1/2 1 0 1/2
a7
9 3 0 0 -6
4 0 -
a1 a2 a3
fj f j cj
n tabelele precedente, dei criteriul de intrare n baz ne-a dat posibilitatea de a alege ntre dou variabile, am ales ntotdeauna prima variabil din partea de sus a tabelelor. Dac ns vom alege la un moment dat alte variabile care ies din baz dect cele alese anterior putem ajunge la
soluia optim, evitnd n acest fel ciclarea, aa cum se vede din urmtoarele dou iteraii: cj cB
0 -3/4 0 B 0 0 0 -3/4 20 -1/2 6
XB
0 0 1 0
a1
1 0 0 0
a2
-1/2 2 0 -3/2 -3/2 0
a3
0 0 1 0 0
a4
0 1 0 -3/4 -3/4
a5
-2 -24 0 18 -2 20
a6
-3/4 -1 1 3/4 5/4 -1/2
a7
15/2 6 0 -9/2 -21/2 6
a1 a4 a3
fj f j cj
cj
X
1 1
a1
1 0 0 0
a2
-1/2 2 0 -3/2 -3/2
a3
3/4 1 1 -5/4 -5/4
a4
0 1 0 -3/4
a5
-2 -24 0 18 -2
a6
0 0 1 -1/2
a7
15/2 6 0 -9/2 -21/2
T
0 -3/4 -1/2
a1 a4 a6
3/4
fj f j cj
-5/4
Astfel, soluia optim este dat de X = (3 / 4 0 0 1 0 1 0 ) , valoarea minim a funciei obiectiv fiind f ( X ) = 5 / 4 . Dei n problemele practice nu s-a observat fenomenul de ciclare, teoretic exist posibilitatea de a aprea i, ca urmare, este bine s cunoatem o cale de a-l evita.
o matrice invers, se vor calcula c B B 1 , X B = B 1b i f j c j , n funcie de care se ia decizia de a opri algoritmul sau de a-l continua trecnd la o soluie admisibil de baz mai bun.
II.4.1
{AX = b
X 0
unde A M m,n (R ) , rangA = m n b R m , c, X R n . Pentru aplicarea algoritmului simplex revizuit, se construiete completata problemei II.4.1: min f 1 ( x) = x 0 x cX = 0 II.4.2 0 . AX = b X 0, x 0 R 1 cB Aici, matricea sistemului de restricii va fi: A1 = 0 B cR , R
Dac
B
B11
1
B11b1 f
B
B11 a 1 * k f kB c k
x0
u B = c B B 1
AX = b , X 0 , [max] f (x ) = cX
Datele iniiale:
rangAmn = m n , b R m , c R n
Se determin o baz primal admisibil pentru problema II.4.1 i se calculeaz apoi B1 , B11b1 , u B , B11 a 1j
B j
c j 0 DA
j = 1, n
NU
B 1b f 0 = [min] f ; X B = 0 .
f j c j >0
max ( f jB c j ) = f kB c k > 0 . B
f
B
y kB 0 ?
DA
NU
xiB x rB = B . B y ik y rk
~
Se nlocuiete coloana a cu coloana a , i se formeaz noua baz primal admisibil, B1 . Se calculeaz B11b1 , u B , B11 a 1j .
Pas 1 Se calculeaz f jB c j = u B a j c j , j R .
Dac f jB c j 0 , j { ,.., n} B = R soluie optim. 1 Dac nu, se trece la Pasul 2.
Se calculeaz y kB = B 1 a k . Dac y kB 0 , problema are optim nemrginit ( ). Dac nu, se trece la Pasul 3. xiB x rB = B . Se nlocuiete coloana a r cu i| yik y B y rk ik ~ coloana a k , i se formeaz noua baz primal admisibil, B1 . Se revine la
Pasul 1.
S rezolvm cu algoritmul simplex revizuit urmtoarea problem de programare liniar: [min] f = 2 x1 x 2 x1 x 2 4 3 x1 x 2 18 x + 2 x 6 2 1 x i 0 , i = 1,2 .
primul
rnd,
aducem,
problema
la
forma
standard:
B = I3 = a3
a4
cR . R
B11
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
B11b1
0 4 18 6
x0 x3
x4 x5
f 1B
f 2B
Soluia curent nu este optim i nici cazul optim nemrginit nu este ndeplinit. Trecem la schimbarea bazei. Deoarece, f 1B c1 = 2 > 1 = f 2B c 2 , variabila x1 va intra n noua baz. Completm tabelul de mai sus cu ultima coloan:
Variabilele de baz
B11
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
B11b1
0 4 18 6
B11 a11
2 1 3 -1
x0 x3
x4 x5
4 18 4 Deoarece min , = , variabila x 3 va iei din baz. Pivotul 1 3 1 este, desigur, valoarea aflat n csua colorat, adic 1. Tabelul simplex revizuit urmtor se obine din cel precedent, dup aceleai reguli care se aplic tabelului simplex obinuit.
~ B11
1 -2 0 0 0 0 1
~ B11b1
-8 4 6 10
~ B11 a12
* 3 -1 2 1
f 2B
nu este optim).
1 0 0 1 1 ~ 1 B a 2 = 3 1 0 1 = 2 (rezult de aici c nu avem optim 1 0 1 2 1
infinit), 0 ~ c3 1 B c3 = 1 u a = (1 2 0 0 ) 0 = 2 < 0 . 3 0
f 3B
Singura variabil care poate intra n baz este x 2 . Completm ultima 6 10 6 coloan. Cum min , = , rezult c variabila x 4 iese din baz. 2 1 2 Pivotul este 2.
~ ~ B11
0 0 0 1
~ ~ B11b1
-17 7 3 7
~ ~ B11 a13 **
5/2 -1/2 -3/2 5/2
1 5/2 -3/2 x0 0 -1/2 1/2 x1 0 -3/2 1/2 x2 0 5/2 -1/2 x5 ** Ultima coloan se va completa ulterior.
f 3B
~ ~
optim).
1 / 2 1 / 2 0 1 1 / 2 ~ 1 ~ B a 3 = 3 / 2 1 / 2 0 0 = 3 / 2 (rezult de aici c nu avem 5 / 2 1 / 2 1 0 5 / 2
optim infinit),
0 ~ ~ 0 B f 4 c4 = (1 5 / 2 3 / 2 0) = 3 / 2 < 0 . 1 0
Variabil care intr n baz este x 3 . Completm ultima coloan. Se observ imediat c singura variabil care poate iei din baz este x5 . Pivotul este 5/2. La aceast iteraie baza curent este notat prin B1 .
Variabilele de baz
B11
1 0 0 0 0 0 0 1 -1 2/5 1/5 -1/5 -1 1/5 3/5 2/5
B11b1
-24 42/5 36/5 14/5
x0 x1 x2 x3
Cum f 4B
0 0 c 4 = (1 0 1 1) = 1 < 0 i 1 0
f 5B
x = (42 / 5 36 / 5 14 / 5 0 0) este optim, unic i nedegenerat. Din exemplificarea aplicrii algoritmului simplex revizuit, rezult urmtoarele:
Memoria calculatorului este eficient folosit, prin reducerea volumului de
infomaii stocate.
Datele reinute la o iteraie sunt suficiente pentru a obine toate
Cnd s-a aplicat algoritmul simplex primal s-a apelat pe tot parcursul algoritmului la soluii admisibile de baz (SAB) i regulile sale au fost stabilite impunndu-se condiia de nenegativitate a variabilelor din model.
Cu ajutorul teoriei dualitii se poate formula un nou algoritm de rezolvare a problemelor de programare liniar, pornind de la o soluie de baz care nu respect - total sau parial - condiia de nenegativitate, i anume, algoritmul simplex dual. Conceptul de baz cu care se opereaz este cel de soluie dual realizabil (SDR).
Definiie: Se numete soluie dual realizabil a unei probleme de
programare liniar o soluie de baz care are cel puin o component strict negativ i care verific criteriul de optimalitate al modelului liniar. Algoritmul simplex-dual este o procedur de explorare orientat a soluiilor dual-admisibile pn la obinerea soluiei optime sau pn la evidenierea faptului c problema nu admite soluii. Aplicarea sa presupune cunoaterea unei soluii dual-realizabile (sau dual-admisibile) dar nu i admisibile, deoarece, dac toate variabilele ar avea valori pozitive, cum este verificat criteriul de optimalitate, ar rezulta c soluia este optim. n general, stabilirea unei soluii dual-admisibile este greu de realizat, motiv pentru care acest algoritm se aplic atunci cnd o soluie dual realizabil se poate stabili cu un volum mic de calcule, cnd restriciile sunt cu precdere de forma , sau cnd aceasta se obine prin modificarea unor caracteristici numerice din model. Acest algoritm poate fi privit ca dualul algoritmului simplex-primal, deoarece reflect aplicarea acestuia la problema dual. Pentru algoritmul simplex dual, valorile funciei scop descresc cnd aceasta se cere maximizat i cresc cnd se cere minimizat, pn cnd este atins valoarea optim, dac programul liniar admite soluie optim finit.
[max] f
f j c j = c B B 1 a j c j 0 , j = 1, n
x k < 0 a.
DA
y kj 0 , j = 1, n
NU Alege xl = min{x s } (C.E.B);
s| x s < 0
STOP
al ;
(C.I.B);
Se calculeaz elementele noului tabel; dup regulile aplicate n cazul algoritmului simplex primal, avnd ca pivot elementul y lk < 0 . Dac nu apare fenomenul de ciclare, dup efectuarea calculelor se ajunge la una din situaiile: 1. X 2.
B1
optim finit.
cu algoritmul simplex-primal. 3. Exist cel puin o variabil bazic cu valoare strict negativ i f j c j 0 ,
j = 1, n
Observaie: Cele dou criterii de eliminare i respectiv de intrare n baz, sub aceast form, sunt invariante la tipul de optim.
Pentru o mai bun nelegere a modalitilor de operare a celor doi algoritmi duali, se vor sumariza principalele lor elemente dup cum urmeaz:
Algoritmul simplex primal Soluie de start, B baz curent Algoritmul simplex dual
X SAB :
X B = B 1 b 0 ;
variabil
X SDR : X B = B 1 b ; X R = 0 x s < 0 , s J f j c j 0 j f j c j 0 j
B
a..
X R = 0; f s c s = 0 , x s Obs:
bazic a) Dac
f j c j 0 j
respectiv
f j c j 0 j
are pentru nebazic i
f j c j 0 j
B
respectiv
f j c j 0 j
a k f k ck < 0
y sk 0 , s (pt. f k ck > 0
[min]) funcia i
[max]),
respectiv
xs < 0 , s J B
y sj 0 ,
y sk 0 ,
s (pt.
program cu nemrginit.
f j cj 0 ,
respectiv
atunci se continu pentru cel puin o valoare s J . Se cu simplex dual, deoarece s-a generat o Algoritmul continu cu simplex primal. SDR. se continu Pt. [min]: f k c k > 0 i y sk > 0 Dac pt. [max] f k c k < 0 , respectiv dac
B
Pt. [max]:
f k ck < 0
y sk > 0
pt.
[min]
f j cj 0 ,
j ,
xs < 0 , s J B ,
sJ B .
Se pt. [min] i
f k ck > 0 ,
cu
ak nebazic,
atunci se
xs 0 , s J B ,
continu cu simplex primal, deoarece s-a generat o SAB. Pivot Criterii pentru schimbarea bazei
ylk > 0
a) b) C.I.B. C.E.B.
ylk < 0
a) b) C.E.B C.I.B.
Pentru a nelege mai bine modul de aplicare a algoritmului simplexdual, precum i diferenele fa de aplicarea algoritmului simplex-primal, vom da cteva exemple numerice.
4 x1 x 2 x3 2 2 x1 + x 2 x3 6 x + x 2x 3 1 2 3 x j 0, j = 1,3 Se aduce problema la forma standard [min] f = 6 x1 + 5 x 2 + 6 x3 4 x1 x 2 x3 + x 4 = 2 2 x1 + x 2 x3 + x5 = 6 . x + x 2x + x = 3 1 2 3 6 xi 0, i 1,6 4 1 1 1 0 0 Dup scrierea matricii A = 2 1 1 0 1 0 , rangA=3<6, 1 1 2 0 0 1 se constat c bazei (a 4 a5 a 6 ) i corespunde o soluie bazic X = (0 0 0 2 6 3) , care nu respect condiia de nenegativitate.
T
Pentru a stabili dac satisface criteriul de optimalitate, trebuie construit primul tabel de tip simplex: cj cB
0 0 0 B 6 5 6 0 0 0
XB
-2 -6 3 0
a1
4 -2 -1 0 -6
a2
-1 1 1 0 5
a3
-1 -1 -2 0 -6
a4
1 0 0 0
a5
0 1 0 0
a6
0 0 1 0
0 j = 1,6 ? DA
a4 a5
a6 fj f j cj
Soluia bazic construit este dual realizabil, deoarece verific criteriul de optimalitate. Conform schemei de rezolvare vor fi efectuate urmtoarele operaii: Se verific dac n liniile valorilor strict negative ale variabilelor bazice exist i componente strict negative. Rspunsul fiind afirmativ, se vor aplica cele dou criterii: - Criteriul de eliminare din baz (C.E.B): min{ 2,6} = 6 a5 prsete baza. Criteriul de intrare n baz (C.I.B):
a1 va fi al doilea
Se efectueaz calculele implicate de scrierea vectorilor b i a j , j = 1,6 n noua baz (a 4 a1 a 6 ) i a diferenelor f j c j , j = 1,6 .
c
0 6 0
XB
-14 3 6 18
a1
0 1 0 6
a2
1 -1/2 1/2 -3 -8
a3
-3 1/2 -3/2 3 -3
a4
1 0 0 0
a5
2 1/2 -1/2 -3 -3
a6
0 0 1 0
a4 a1 a6 fj f j cj
0 j = 1,6 ? DA
Noua soluie de baz se menine dual realizabil, ca urmare se vor aplica criteriile algoritmului simplex-dual: C.E.B: -14 unic a 4 eliminat; C.I.B: a3 va nlocui vectorul a 4 , -3 fiind singura component strict negativ din linia vectorului eliminat. Se va efectua o nou pivotare. cj
6 5 6 0 0 0
cB
6 6 0
XB
14/3 2/3 13 32
a1
0 1 0 6
a2
-1/3 -1/3 0 -4 -9
a3
1 0 0 6
a4
-1/3 1/6 -1/2 -1 -1
a5
-2/3 -1/6 -3/2 -5 -5
a6
0 0 1 0
a3
a1 a6
fj f j cj
0 j = 1,6 ?
DA
Din acest ultim tabel rezult: X B 0 ; f j c j 0 , j = 1,6 , deci algoritmul 2 X* = 3 0 se 14 3 oprete. Problema
T
admite
soluia
optim
finit
0 0 13 cu [min] f = 32 .
Observaie: Spre deosebire de algoritmul simplex primal, unde valoarea funciei obiectiv scade n cazul problemelor de minim de la o iteraie la alta, pn la valoarea minim, n algoritmul simplex dual valoarea funciei obiectiv crete pn la valoarea minim admisibil (n cazul studiat, de la 0 la 18, i apoi la 32).
[max] f = 3 x1 + 2 x 2 + 6 x3 x1 + 3x 2 + 4 x3 105 Exemplul 2 Se consider programul liniar: 2 x1 + 5 x 2 + x3 70 4 x + x + 2 x 175 2 3 1 x j 0, j 1,3 Aflati soluia optim. S se scrie duala programului liniar dat. S se afle soluia sa optim X aplicnd algoritmul simplex dual.
Soluie:
Mai nti aducem problema la forma standard: [max] f = 3 x1 + 2 x 2 + 6 x3 x1 + 3 x 2 + 4 x3 + x 4 = 105 2 x1 + 5 x 2 + x3 + x5 = 70 . 4 x + x + 2 x + x = 175 2 3 6 1 x j 0, j 1,6
Rezolvarea acestei probleme este complet prezentat prin cele 3 tabele simplex de mai jos, corespunztoare iteraiilor parcurse pn la aflarea soluiei optime: cj cB
0 0 0 B 3 2 6 0 0 0
XB
105 70 175 0
x1
1 2 4 0 -3
x2
3 5 1 0 -2 3/4 17/4 -1/2 9/2 5/2 1 0 0 6
x3
4 1 2 0 -6 1 0 0 6 2/7 -1/7 0 9/7 9/7
x4
1 0 0 0 1/4 -1/4 -1/2 3/2 3/2 -1/7 4/7 -2 6/7 6/7
x5
0 1 0 0 0 1 0 0 0 0 1 0
x6
0 0 1 0 0 j = 1,6 ? NU 0 0 1 0
x4 x5 x6 fj f j cj
6 0 0
x3 x5 x6 fj f j cj
0 j = 1,6 ?
NU
6 3 0
x3
x1 x6
20 25 35 195
0 1 0 3
fj f j cj
de B = (a3
a1
B
a 6 ) , a crei invers
1
2 / 7 1 / 7 0 = 1 / 7 4 / 7 0 0 2 1
poate fi citit n dreptul vectorilor care au format baza iniial. Se construiete duala: [max] f = 3 x1 + 2 x 2 + 6 x3 [min]g = 105u1 + 70u 2 + 175u 3
[min]g = 105u1 + 70u 2 + 175u 3 u1 + 2u 2 + 4u 3 u 4 = 3 3u1 + 5u 2 + u 3 u 5 = 2 4u + u + 2u u = 6 2 3 6 1 u i 0, i 1,6 rezult c matricea A conine matricea unitate, din R 3 , cu semn schimbat, ca urmare toate restrictiile dualei vor fi nmulite cu ( 1) : [min]g = 105u1 + 70u 2 + 175u 3 u1 2u 2 4u 3 + u 4 = 3 3u1 5u 2 u 3 + u 5 = 2 4u u 2u + u = 6 1 2 3 6 u i 0, i 1,6 .
Rezolvarea problemei, prin algoritmul simplex dual, este prezentat mai jos: cj
105
70
175
u1
-1 -3 -4 0 -105
u2
-2 -5 -1 0 -70 -7/4 -17/4 1/4 105/4
u3
-4 -1 -2 0 -175 -7/2 -1/2 1/2 105/2
u4
1 0 0 0 1 0 0 0 -4/7 -17/7 1/7 -25 -25
u5
0 1 0 0 0 1 0 0 0 1 0 0
u6
0 0 1 0 0 j = 1,6 -1/4 -3/4 -1/4 -105/4 -105/4 0 j = 1,6 1/7 -1/7 -2/7 -20 -20 0 j = 1,6
0 0 0
u4 u5
-3 -2 -6 0
u6 fj f j cj
0 0 105
u4 u5 u1 fj
0 0 1 105
f j cj
70 0 105
u2 u5 u1 fj
0 0 1 105
f j cj
Se observ imediat c [max] f = [min]g = 195 . Soluia optim a dualei este 9 U* = 7 Se verific uor c
* x1 4 / 7 0 1 / 7 25 * (70 0 15) 17 / 7 1 1 / 7 = 0 = x2 . x* 1/ 7 0 2 / 7 20 3
6 7
43 0 . 7
[min] f = 3 x1 + 5 x 2 + 4 x3 2 x1 + x 2 x 4 = 12 a) Forma standard: . x1 + 2 x 2 + x3 x5 = 20 x j 0, j = 1,5 2 1 0 1 0 Matricea sistemului de restricii: A = 1 2 1 0 1 . 12 Vectorul termenilor liberi: b = . 20
x3 x1 R = , X = x 4 . Sistemul de x 2 x 5
x3 1 0 x1 2 / 3 1 / 3 0 1 0 2 / 3 1 / 3 12 0 1 x + 1 / 3 2 / 3 1 0 1 x 4 = 1 / 3 2 / 3 20 2 x 5 , sau x3 x1 1 / 3 2 / 3 1 / 3 4 / 3 + x 2 / 3 1 / 3 2 / 3 x 4 = 28 / 3 . x 2 5
4/3 Deoarece B 1b = 28 / 3 > 0 se poate construi o soluie admisibil de baz, i anume x1 = funciei obiectiv va fi 4 28 , x2 = , x3 = x 4 = x5 = 0 , pentru care valoarea 3 3
152 . 3
Baza generat de coloanele 2 i 3 din matricea sistemului de 1 0 1 0 1 restricii, B = 2 1 , cu inversa B = 2 1 , conduce la urmtoarea explicitare a sistemului de restricii ale problemei:
x1 1 0 x 2 2 1 0 12 2 1 x + 1 0 1 x 4 = 20 , 3 x 5
Dup efectuarea calculelor apare scrierea explicit a sistemului de restricii n raport cu baza (a 2 a3 ) din spaiul bunurilor: x1 2 x1 + x 2 x 4 = 12 x 2 2 1 0 12 + x 3 2 1 x 4 = 4 sau 3 x + x + 2 x x = 4 . x 1 3 4 5 3 5
12 Se observ c B 1b = nu are toate componentele pozitive. 4 Dac se vor anula variabilele nebazice x1 = x 4 = x5 = 0 i cele bazice vor lua valorile x 2 = 12 , x3 = 4 , se va obine o soluie a problemei care are dou componente nenule (rangA=2) i vectorii ataai variabilelor bazice sunt liniar independeni ( a 2 i a3 formeaz baza). n aceste condiii, vectorul X 1 = (0 12 4 0 0 )
T
XB
12 -4 48
a1
2 -3 1 -2
a2
1 0 5 0
a3
0 1 3 0
a4
-1 2 1 1
a5
0 -1 -3 -3
a2 a3 fj f j cj
nu este
soluie dual realizabil, este doar soluie pentru modelul scris sub forma standard. 2 Observaie: n tabel, vectorul trecut n coloana lui a1 reprezint 3 scrierea acestuia n baza (a 2 a3 ) . ntr-adevr, 2 1 0 2 a1 = = 2a 2 3a3 = 2 3 = 1 2 1 4 3 . b) Construim acum duala problemei din enun. [min] f = 3 x1 + 5 x 2 + 4 x3 2 x1 + x 2 12 x1 + 2 x 2 + x3 20 x j 0, j = 1,3
[max]g = 12u1 + 20u 2 2u1 + u 2 3 , de unde rezult duala u1 + 2u 2 5 u2 0 u + u 4 1 2 u1 , u 2 0
u1
Se observ c orice cuplu (u1 , u 2 ) care verific primele dou restricii ale problemei duale, o verific i pe a treia. Mulimea soluiilor admisibile ale acestei probleme este dat de intersecia dintre semiplanele
determinate de inecuaiile: 2u1 + u 2 3 , u1 + 2u 2 5 i u 2 4 , n condiiile u1 , u 2 0 , i este o mulime mrginit i convex. Atunci (vezi teorema programrii liniare), problema admite soluie optim finit. c) Fie baza dat de coloanele 1 i 2 din matricea sistemului de restricii ale problemei primale: B = (a1
a 2 ) . Atunci
1 f1 = c B B 1 a1 = (3 5) = 3 , 0 0 f 2 = c B B 1 a 2 = (3 5) = 5 . 1 n problema dual, acestei baze i corespunde un sistem de restricii saturate, i anume, restriciile cu termenii liberi 3 i 5:
2u1 + u 2 = 3 u1 + 2u 2 = 5 1 u1 = 3 . 7 u 2 = 3
d) Soluia de start pentru algoritmul simplex-dual este o soluie dual realizabil (SDR). Se observ c matricea A conine matricea unitate de ordinul 2 cu semnul schimbat: B = (1)(a 4 a5 ) . Restriciile scrise sub forma standard se vor nmuli cu (-1): 2 x1 x 2 + x 4 = 12 x1 2 x 2 x3 + x5 = 20 apoi se va scrie sistemul sub forma matriceal:
x1 2 1 0 1 0 x 4 12 1 2 1 x 2 + 0 1 x = 20 . x 5 3
Vectorul
X1
de componente
x1 = x 2 = x3 = 0 ,
x 4 = 12
x5 = 20 verific sistemul de restricii din forma standard, are dou componente nenule (rangA=2), cel puin una strict negativ, i corespunde
bazei B = (a 4
a5 ) . cj
cB
0 0
XB
-12 -20 0
a1
-2 -1 0 -3
a2
-1 -2 0 -5 0 1 5 0 0 1 5 0
a3
0 -1 0 -4 1/2 1/2 5/2 -3/2 -1/3 2/3 7/3 -5/3
a4
1 0 0 0 1 0 0 0 -2/3 1/3 -1/3 -1/3
a5
0 1 0 0 -1/2 -1/2 -5/2 -5/2 1/3 -2/3 -7/3 -17/3
a4 a5 fj f j cj
5 3
a4 a2 fj f j cj
a1 a2 fj
-2 10 50
5 3
1 0 3 0
Observaia 1: Matricea B 1 se citete din ultimul tabel, n dreptul vectorilor ce au format prima baz, dar, atenie, elementele vor fi luate cu
2 / 3 1 / 3 semn schimbat: B 1 = 1/ 3 2 / 3 .
soluiilor admisibile ale problemei. Aa cum tim, mulimea soluiilor admisibile este generat de restriciile programului liniar de mai sus, i se afl la intersecia semiplanelor definite de aceste restricii. Pentru a gsi semiplanele i apoi interesecia acestora, vom reprezenta mai nti dreptele
d1 : x1 + x 2 = 4 , d 2 : 2 x1 + x 2 = 3 i d 3 : 3 x1 + x 2 = 5 .
Semiplanul determinat de prima restricie a problemei este cel mrginit de dreapta d 1 i care nu conine originea. Semiplanul determinat de a doua restricie este determinat de d 2 i nu conine originea. n fine, semiplanul determinat de cea de-a treia restricie este mrginit de d 3 i nu
include
originea.
Dac
notm
d1 I d 2 = {A} ,
d 1 I d 3 = {B}
x1 + x 2 = 4 2 x1 + x 2 = 3 i , gsim coordonatele punctelor A, B i C, i 3 x1 + x 2 = 5 3 x1 + x 2 = 5 1 11 2 19 1 7 anume: A , , B , i C , . Astfel, poriunea haurat din 2 2 3 3 5 5 grafic reprezint mulimea soluiilor admisibile. Se tie faptul c soluia optim se gsete ntr-unul din vrfurile mulimii soluiilor admisibile. 2 19 Astfel, este foarte uor de realizat faptul c C , reprezint punctul de 5 5 minim. Valoarea funciei obiectiv n acest punct, valoarea minim a funciei, este 5 2 19 67 + 3 = . 5 5 5
x2 d2 C
A
B
d1 x1
O
d3
Observaie: Acelai lucru ar fi fost observat cu uurin i dac am fi construit dreapta de nivel corespunztoare funciei obiectiv,
d : 5 x1 + 3 x 2 = 0 . Ducnd paralele la aceast dreapt, se vede c prima
paralel care intersecteaz mulimea soluiilor admisibile ale problemei este 2 19 cea care trece prin C , i se afl la cea mai mic distan de origine. 5 5
Soluie analitic: Vom utiliza algoritmul simplex dual (punctul a)), apoi
Aducem mai nti problema la forma standard: [min] f = 5 x1 + 3 x 2 x1 + x 2 x3 = 4 2 x1 + x 2 x 4 = 3 . 3x + x x = 5 2 5 1 x j 0, j 1,5 a) Pentru a aplica algoritmul simplex dual, vom nmuli mai nti fiecare [min] f = 5 x1 + 3 x 2 x1 x 2 + x3 = 4 1 1 1 0 0 restricie cu ( 1) : 2 x1 x 2 + x 4 = 3 , cu A = 2 1 0 1 0 . 3 x x + x = 5 3 1 0 0 1 1 2 5 x j 0, j 1,5 Baza de start pentru algoritmul simplex dual trebuie s fie dual admisibil. O astfel de baz este format din vectorii a3 , a 4 , a5 . Cunoscnd toate aceste date, putem trece la aplicarea algoritmului menionat anterior:
cj cB
0 0 0 B
XB
-4 -3 -5 0
a1
-1 2 -3 0 -5
a2
-1 -1 -1 0 -3 -2/3 -5/3 1/3 5/3 -4/3 0 1 0 3
a3
1 0 0 0 1 0 0 0 1 0 0 0
a4
0 1 0 0 0 1 0 6 -2/5 -3/5 -1/5 -4/5 -4/5
a5
0 0 1 0 -1/3 2/3 -1/3 -1/3 -1/3 -3/5 -2/5 -1/5 -1/5 -11/5
a3
a4 a5
fj f j cj
0 0 5
0 j ? DA SDR
a3
a4 a1 fj
0 0 1 5
f j cj
0 3 5
0 j ? DA SDR
a3
a2 a1 fj
0 0 1 5
f j cj
0 j ? DA soluie optim
a2
modelul studiat. Din tabelul optimal obinem cel puin dou informaii: funcia de eficien are valoarea minim
b) S relum modelul de la forma standard, deoarece aceast form ne sugereaz folosirea metodei bazei artificiale (sau metoda celor dou faze), n cazul n care se impune rezolvarea prin algoritmul simplex primal.
a6
1 0 0
0 1 0
0 0 1
cB
XB
4 3 5 14
a1
1 -2 3 2 2 -5
a2
1 1 1 3 3 -3 0 1 0 3 0 1 0 3 0 1 0 3
a3
-1 0 0 - - -1 0 0 - - -1/3 -2/3 5/3
a4
0 -1 0 - - 1 -1 1 - - 1/3 -1/3 -2/3
a5
0 0 -1 - - 0 0 -1 - - 0 0 -1 - - -1/5 -2/5 -3/5 -11/5 -11/5
a 7 a8
a6 a7 a8
fj
-1 0 0
0 0 1
f j cj a6
a2 a8
1 3 2 3 +9
3 -2 5 8 8 -5
fj f j cj
5 3
0 0 1
a1 a2 a8
1 0 0 5
fj f j cj
5 3 0
(5 -11)/3 (2-2 )/3 (5 -11)/3 (2-2 )/3 0 0 1 0 1/5 -3/5 -2/5 -4/5 -4/5
a1 a2 a3
1 0 0 5
fj f j cj
Prin rezolvarea acestui model liniar prin cei doi algoritmi am vrut s evideniem, nc o dat, comportarea dual a acestora n ceea ce privete atingerea minimului funciei f : f 01 = 14
Algoritmul simplex primal
f 02 = 3 + 9 f 03 = (58 + ) / 3 [min] f = 67 / 5
f 02 = 25 / 3 f 01 = 0