Documente Academic
Documente Profesional
Documente Cultură
Capitolul14 PDF
Capitolul14 PDF
PROGRAMARE LINIARA
4. Metoda simplex
Deoarece tim c dac programul n form standard (P) are optim finit
o soluie optim va fi cu necesitate o soluie de baz i deci va fi asociat unei
baze B*, este natural s ne ntrebm cum gsim aceast baz optimal
B*.Traducnd n termeni algebrici procedeul geometric naiv, descris n
finalul seciunii 3.2, rezult urmtoarea procedur:
f ( y) = f c j y j f = f ( x )
jJ
xk = 0 ; xj = 0 , j J , j k (4.1.1)
Rezult:
x i = b i a ik , i I (4.1.2)
40 I. PROGRAMARE LINIARA
Notm cu x () soluia ale crei componente sunt definite n (4.1.1) i
(4.1.2). Condiia enunului face ca x () A , () 0. Evalum funcia
obiectiv n soluia x () :
f ( x()) = f c k (4.1.3)
Rezult imediat c: lim f ( x()) = + .Deci f este nemrginit superior pe A i
ca urmare (P) are optim infinit.
br b
= min i (4.1.4)
a rk iI aik >0 a ik
A k = BA k = a ik A i + a rk A r
iI ,i r
a ik i 1 k
Ar = A + A
iI ,i k a rk a rk
br
Pentru i = r avem x r = b r a rk = 0 aa c soluia de mai sus poate fi
a rk
rescris astfel:
x j = 0 , j J , j k ; x r = 0
br br (4.1.6)
x i = b i a a ik , i I, i r ; x k = a
rk rk
- dac a ik 0 atunci xi 0;
br b b
- dac a ik > 0 atunci b i a ik 0 i r care are loc
a rk a ik a rk
conform alegerii indicelui r (vezi (4.1.4)).
n al doilea rnd remarcm c x este soluia asociat bazei B'. ntr-adevr, din
(4.1.6) rezult c n x toate variabilele secundare n raport cu baza B' au
valoarea 0. Afirmaia rezult acum din unicitatea soluiei asociate unei baze.
br
f ( x ) = f c k f = f ( x) (4.1.7)
a rk
max f = f c j x j c r x r
jJ , j k
x i + a ij x j + a ir x r = b i i I, i r
( PB' ) jJ , j k (4.1.8)
x k + a kj x j + a kr
x r = b k
jJ , j k
x1 , x 2 ,..., x n 0
(Vom remarca faptul c unele elemente din (4.1.8) sunt deja evaluate! Astfel,
termenii liberi, adic valorile noilor variabile bazice, sunt dai de (4.1.6) n
timp ce constanta f , care este valoarea funciei obiectiv n noua soluie de
baz x , a fost obinut n (4.1.7).)
x r + a rj x j + a rk x k = b r
j k
a rj a ik b
x i + ( a ij )x j x r = b i r a ik , i I, i r (4.1.10)
j k a rk a rk a rk
br a rj c
f = (f ck ) (c j ck )x j + k x r (4.1.11)
a rk j k a rk a rk
a rj i I, i r a
a ij = a ij a ik ; a ir = ik i I, i r
a rk j J, j k a rk
a rj 1
=
a kj j J , j k ; a kr
= (4.1.12)
a rk a rk
br a rj ck
f = f ck ; c j = c j ck j J , j k ; c r =
a rk a rk a rk
c k = min c j (4.2.1)
jJ
Pasul 3. Dac:
a ik 0 , i I ( A k 0)
br b
= min i (4.2.2)
a rk iI aik >0 a ik
b
f ( x ) f ( x) = r c k (4.2.3)
a rk
br
Cum 0 (vezi (4.2.2)) urmeaz c introducerea n baz a oricrei coloane
a rk
nebazice Aj cu c j < 0 mbuntete valoarea curent a funciei obiectiv.
Alegerea coloanei nebazice care va intra n baza curent dup formula (4.2.1)
asigur funciei obiectiv cea mai mare vitez de variaie i n general conduce
la terminarea algoritmului n mai puine iteraii.
2) Se poate arta uor c dac situaia descris n pasul 3 are loc atunci
vectorul w = (w1,w2,...,wn)T definit prin:
w i = a ik , i I ; w j = 0 , j J , j k ; w k = 1 (4.2.4)
(altfel spus, orice soluie optim este o combinaie convex a soluiilor optime
de baz)
max f = 2 x1 + x 2
( P) x1 x 2 4 ; 3x1 x 2 18 ; x1 + 2 x 2 6
x1 0 , x 2 0
x2
Figura 4.2.1
Aducem (P) la forma standard adugnd variabilele de abatere x3, x4, x5:
max f = 2 x1 + x 2
x1 x 2 + x 3 = 4
( FSP) 3x1 x 2 + x4 = 18
x + 2 x + x5 = 6
1 2
x j 0 , j = 1,...,5
1 = 0 , x2 = 0 , x3 = 4 , x4 = 18 , x5 = 6
48 I. PROGRAMARE LINIARA
2 1 0 0 0
cB B VVB A1 A2 A3 A4 A5
0 A3 4 1 -1 1 0 0 x 1 - x 2 + x3 = 4
0 A4 18 3 -1 0 1 0 3x1 - x2 +x4 = 18
0 A5 6 -1 2 0 0 1 -x1+2x2 +x5 = 6
f 0 -2 -1 * * * -2x1 -x2 +f = 0
1
22 A 4 1 -1 1 0 0 x1 -x2 + x3 = 4
0 A4 6 0 2 -3 1 0 2x2 -3x3 +x4 = 6
0 A5 10 0 1 1 0 1 x 2 + x3 +x5 = 10
f 8 * -3 2 * * -3x2 +2x3 +f = 8
2 A1 7 1 0 -1/2 1/2 0 x1 - 1/2x3+1/2x4 = 7
1 A2 3 0 1 -3/2 1/2 0 x2 -3/2x3+1/2x4 = 3
0 A5 7 0 0 5/2 -1/2 1 5/2x3 - 1/2x4 +x5 = 7
f 17 * * -5/2 3/2 * -5/2x3+3/2x4 +f = 17
1
2 A 42/5 1 0 0 2/5 1/5 x1 +2/5x4 +1/2x5 =
42/5
1 A2 36/5 0 1 0 1/5 3/5 x2 +1/5x4 +3/5x5 = 36/5
0 A3 14/5 0 0 1 -1/5 2/5 x3 -1/5x4 +2/5x5 =
14/5
f 24 * * * 1 1 x4 + x5 +f = 24
Componentele
soluiei de baz Soluia Valoarea
Soluia Baza generat de algoritm programului funciei
x1 x2 x3 x4 x5 (P) obiectiv
S0 B0 = [A3 , A4 , 0 0 4 18 6 (0 , 0) 0
A5]
S1 B = [A1 , A4 ,
1
4 0 0 6 10 (4 , 0) 8
A5]
S2 B2 = [A1 , A2 , 7 3 0 0 7 (7 , 3) 17
A5]
S3 B3 = [A1 , A2 , 42/5 36/5 14/5 0 0 (42/5 , 36/5) 24
A3]
4. Metoda simplex 49
Tabelul 4.2.5
programului (P), asociate prin corespondena din finalul seciunii 3.3 (vezi
tabelul 4.2.5).
Urmrind imaginea grafic (fig. 4.2.1), deducem sensul geometric al
algoritmului simplex: procedura pleac dintr-un vrf al mulimii soluiilor
admisibile apoi se deplaseaz ctre un vrf vecin mai bun .a.m.d. pn la
gsirea soluiei optime.
Vom spune c programul n form standard (P) este n form bun dac
matricea A conine o submatrice unitate de ordinul m (= numrul restriciilor)
iar termenii liberi sunt nenegativi. Dac este aa, (P) satisface condiia (3.5.1)
iar soluia asociat bazei unitare este admisibil i poate fi considerat ca
soluie de start pentru aplicarea algoritmului simplex. Dac (P) nu este n
form bun, el se poate aduce la aceast form, notat (FBP), n felul urmtor:
1. Forma bun are optim infinit. Atunci i programul iniial are optim
infinit.
2. Forma bun are optim finit dar n soluia optim cel puin o
variabil artificial are valoare nenul. Atunci programul original este
incompatibil.
3. Forma bun are optim finit i n soluia optim toate variabilele
artificiale au valoarea zero. Ignornd valorile acestor variabile se obine
soluia optim a programului iniial.
x 1 0 , x 2 0 x j 0 , j = 1,...,5
x j 0 , j = 1,...,7
x1 = x2 = x3 =x4 = 0 x5 = 30 , x6 = 40 , x7 = 30
Dup trei iteraii (vezi tabelele 4.3.1 - 4.3.4) se obine soluia optim a
programului (FBP) n care variabilele artificiale x6 , x7 au valoarea zero.
Ignornd aceste valori se obine soluia optim a formei standard (FSP) i
implicit soluia optim a programului original (P):
x1 = 10 , x 2 = 20 f max = 80
2 3 0 0 0 -M -M
cB B VVB A1 A2 A3 A4 A5 A6 A7
-M A6 40 2 1 -1 0 0 1 0
-M A7 30 1 3 0 -1 0 0 1
0 A5 30 1 1 0 0 1 0 0
f -70M -3M-2 -4M-3 M M * * *
-M A6 30 5/3 0 -1 1/3 0 1 -1/3
3 A2 10 1/3 1 0 -1/3 0 0 1/3
0 A5 20 2/3 0 0 1/3 1 0 -1/3
f -30M+30 -5/3M-1 * M -M/3-1 * * 4M/3+1
2 A1 18 1 0 -3/5 1///5 0 3/5 -1/5
3 A2 4 0 1 1/5 -2/5 0 -1/5 2/5
0 A5 8 0 0 2/5 1/5 1 -2/5 -1/5
f 48 * * -3/5 -4/5 * M+3/5 M+4/5
2 A1 10 1 0 -1 0 -1 1 0
3 A2 20 0 1 1 0 2 -1 0
0 A4 40 0 0 2 1 5 -2 -1
f 80 * * 1 * 4 M-1 M
x2
A
S1: x1=0 , x2=10 x1
Figura 4.3.1
unde E este matricea unitate de ordinul m = numrul restriciilor din (P). Dup
cum am vzut, E se ia ca baz de start n procesul rezolvrii programului (P)
1 0 1
B 1
= [A , A , A ] = 1
6 7 5
0 2
2 1 5
54 I. PROGRAMARE LINIARA
O calitate remarcabil a algoritmului simplex este aceea c produce
nu numai soluia optim a problemei creia i se aplic ci i soluia optim a
problemei duale.
max f ( x ) = cx min g( u ) = ub
( P ) Ax = b ( Q ) uA c
x0 u oarecare
care este dualul programului (P) rezolvat n exemplul 4.3.1. Dup adugarea
variabilelor de abatere i a celor artificiale, din (P) s-a obinut programul
(P1) = (FBP) al crui dual este:
1 0 1
u = c B = [ 2 3 0] 1 0
B 1
2 = [ 1 0 4]
2 1 5
adic: u1 = 1, u2 = 0, u3 = 4.
j = c B A j = c i a ij j J
iI
c j =j - cj j=1,,n
x1 + 14 x 4 8 x 5 x 6 + 9 x 7 = 0
x2 + 12 x 4 12 x 5 12 x 6 + 3x 7 = 0
x3 + x6 =1
(max)f = 4 x 20 x + 2 x 6 x
3 1
4 5 6 7
B5 = [A6,A2,A3] , B6 = [A4,A2,A3]
xf y dac x-y f 0
Prin urmare relaia f este o relaie de ordine total pe Rn care extinde relaia
de ordine natural din R n plus ea este compatibil cu structura liniar a
spaiului Rn n sensul c:
x f y x+z f y+z
x f y i > 0 x f y
Ax = b 0
( P) x 0
(max) f = cx
4. Metoda simplex 59
Putem presupune c problema (P) este n form bun, altfel spus c matricea A
conine o submatrice unitate de ordinul m, unde m este, ca de obicei, numrul
restriciilor. Renumerotnd convenabil variabilele problemei putem presupune
c primele m coloane din A sunt unitare, astfel c A are forma A = [E , S].
Atunci tabelul simplex asociat unei baze oarecare B, nu neaprat admisibil,
are urmtorul coninut:
VVB
B b B-1 B-1S
0
i este clar c toi q iB f 0 . Introducem vectorul q B = ( f , c ) n care f este
valoarea funciei obiectiv n soluia asociat bazei B iar c este vectorul
costurilor reduse corespunztoare (vezi seciunea 3.5).
Definiie Spunem c baza B' este lexicografic mai bun dect baza B
(n sensul maximizrii funciei obiectiv f ) i vom scrie B' f B dac qB' f qB.
Evident B' fB este o relaie de ordine total n mulimea bazelor problemei (P).
Se constat imediat c dac B' este lexicografic mai bun dect B atunci B' este
cel puin la fel de bun ca i B n sensul obinuit adic f ' f .
60 I. PROGRAMARE LINIARA
Ideea de modificare a algoritmului simplex descris n 4.2 const n a
pleca de la o baz B0 lexicografic admisibil i de a genera n continuare numai
baze lexicografic admisibile B1 , B2 ,... care s fie din ce n ce mai bune n sens
lexicografic, adic:
B0 p B1 p B2 p ...
Avnd n vedere c n irul de mai sus nu pot exista dou baze identice i c
numrul bazelor admisibile este finit urmeaz c ideea de modificare a
algoritmului simplex propus mai sus garanteaz convergena procedurii.
1 B 1
q r = minlex qiB (4.5.2)
a rk i ,aik >0 a
ik
n care qiB , i I sunt dai de (4.5.1) iar minimul din membrul drept este luat
n sens lexicografic. Acest minim se calculeaz astfel:
br b
= min i
a rk i ,aik >0 aik
1 B
Dac I0 se reduce la un singur indice r atunci q r realizeaz minimul
a rk
lexicografic din (4.5.2). Prin urmare dac minimul din (4.2.2) este unic cele
dou criterii de ieire din baz (4.2.2) i (4.5.2) coincid.
Dac I0 se compune din cel puin dou elemente, se determin mulimea I1 I0
a indicilor r cu proprietatea c:
ar1 a
= min i1
a rk i I 0 a ik
a ri a
= r 'i pentru toi i = 1,...,m
a rk a r 'k
aik B 1 B
qiB ' = qiB qr ir; q kB ' = qr
a rk a rk
1 B 1 B
qiB ' = aik qi qr f 0
aik a rk
ck B
n virtutea alegerii lui r, conform (4.5.2). n fine: q B ' = q B q r i deoarece
a rk
ck < 0 rezult q B ' f q B .
62 I. PROGRAMARE LINIARA
Aplicarea n calculul manual a criteriului de ieire din baz modificat
(4.5.2) este foarte simpl:
bi
Dac minimul rapoartelor , aik > 0 din criteriul uzual de ieire
aik
din baz nu este unic i se atinge pe o submulime de indici I0 se caut minimul
a
rapoartelor i1 , i I 0 n care numrtorii sunt luai din prima coloan a
aik
inversei bazei curente. Dac nici acesta nu este unic i se atinge pe o
a
submulime I1 I0 se caut minimul rapoartelor i 2 , i I 1 cu numrtorii din
aik
a doua coloan a inversei bazei .a.m.d. Dup cum am vzut acest proces se
termin ntr-un numr finit de pai cu gsirea unui unic indice r. Vectorul Ar
prsete baza.
Consideraiile de mai sus vor fi aplicate problemei din ex.4.5.1 (vezi tabelele
4.5.1 - 4.5.3)
La prima iteraie intr n baz A4. Se observ c:
b b
min 1 , 2 = min{0 , 0}
a14 a 24
nu este unic. Fie I0 = {1,2}. Prima coloan a inversei bazei curente este A1 i
ca urmare calculm:
a a 1 0 a 21
min 11 , 21 = min , =0=
a14 a 24 1 4 1 2 a 24
Plecnd cu baza unitar admisibil E = [A3, A4, A5] , n dou interaii se ajunge
la tabelul 4.6.1:
3 4 0 0 0
CB B VVB A 1
A 2
A 3
A4
A5
3 A1 4/5 1 0 1/5 -4/5 0
4 A2 18/5 0 1 2/5 -3/5 0
0 A5 42/5 0 0 3/5 -2/5 1
f 84/5 * * 11/5 -24/5 *
Tabelul 4.6.1
x2
v1+w1,0
v1
AP
w1=(4/5,3/5)
w2=(2,1)
v2+w2,0
v2
x1
Figura 4.6.1
Exemplu 4.6.2 (Incompatibilitate) Considerm programul:
(min) f = 6 x1 + x 2 2 x 3
5x x + x 6
1 2 3
( P ) 2 x1 + x 2 + 3 x 3 7
3x + x + 2 x = 2
1 2 3
x1 , x 2 , x 3 0
(min) f = 6 x1 + x 2 2 x 3 + Mx 6 + Mx 7 , M 0
5 x1 x 2 + x 3 x 4 + x6 =6
( FBP) 2 x1 + x 2 + 3x 3 + x5 =7
3x + x + 2 x + x7 = 2
1 2 3
xj 0 1 j 7
4. Metoda simplex 65
Tabelul 4.6.2
min f = 3x1 + 2 x 2
x1 + 2 x 2 2
( P)
3 x1 + x 2 3
x1 fara restrictii de semn, x 2 0
3 -3 2 0 0 M
CB B VVB (A1)' (A1)'' A2 A3 A4 A5
2 A2 3/5 0 0 1 -3/5 -1/5 3/5
-3 (A1)'' 4/5 -1 1 0 1/5 2/5 -1/5
f - 6/5 0 * * - 9/5 - 8/5 9/5 - M
Tabelul 4.6.3
x1* = 4 / 5, x 2* = 3/ 5
4. Metoda simplex 67
4.7 Interpretarea economic a algoritmului simplex
max f = cx
Ax = b
x0
Dup cum se vede, lista activitilor de baz determin n mod unic cantitile
de bunuri ce pot fi produse i ca atare detectarea unui program mai bun se
poate face numai studiind oportunitatea utilizrii unor activiti secundare care
68 I. PROGRAMARE LINIARA
s nlocuiasc o parte din activitile bazice curente. Pentru aceasta avem
nevoie de un criteriu care s permit compararea unei activiti secundare j cu
grupul activitilor de baz. S examinm coloana Aj a tabelului simplex
asociat bazei B. Conform (3.5.3) Aj = B-1Aj de unde Aj = B.Aj sau:
A j = a1 j A1 + a 2 j A 2 +....+ a mj A m (4.7.1)
[ ]
n ipoteza c B = A1 , A 2 ,..., A m . Sensul economic al egalitii (4.7.1) este
urmtorul: din punctul de vedere al consumului de resurse producerea unei
uniti din bunul j este echivalent cu producerea cantitilor a1 j , a 2 j ,..., a mj
din bunurile activitilor de baz. n consecin, dac se dorete producerea
unei uniti din bunul j, producia activitilor de baz trebuie diminuat cu
cantitile a1 j , a 2 j ,..., a mj .Analiza oportunitii introducerii n fabricaie a
bunului j se va face prin compararea aportului su la creterea venitului firmei
cu aportul valoric al cantitilor a1 j , a 2 j ,..., a mj .Astfel, realizarea unei uniti
din bunul j determin creterea valorii curente a funciei obiectiv cu preul su
cj n timp ce renunarea la producerea cantitilor a1 j , a 2 j ,..., a mj nseamn
diminuarea aceleiai valori cu suma c1a1 j + c2 a 2 j +...+ cm a mj .Prin urmare dac
diferena:
c j = c1a1 j + c2 a 2 j +...+ cm a mj c j
x1 = b1 a1k , x 2 = b2 a 2 k ,..., x m = bm a mk
4. Metoda simplex 69
Deoarece desfurarea unei activiti la un nivel negativ este lipsit de sens
va trebui s avem bi aik 0 i = 1,.., m de unde:
bi
0 = min
i ,a
ik
>0 aik
(max) f = cx
( P) x 0
Ax = b
1) Costurile reduse: c j = c B B 1 A j c j , j J
Dac testul de optimalitate nu este ndeplinit se determin kJ astfel ca:
ck = min c j
j J
k
Coloana A intr n baza curent.
2) Componentele coloanei:
k
A = B 1 A k
br = min bi
a rk a ik > 0 a ik
cj=cBAj-cj , jJ
=cBB-1
B b B-1
f f
cj=Aj-cj , jJ
ck = min c j ( ck < 0 !)
j J
br = min bi
a rk a ik > 0 a ik
72 I. PROGRAMARE LINIARA
(max) f = 3x1 + 4 x2 + x3 + 2 x4 + 2 x5 + x6
2 x1 4 x 3 + 2 x4 2 x6 5
2 x1 4 x2 + 4 x4 2 x5 + 2 x6 1
(P)
x2 + x3 =1
x4 + x5 + x6 = 1
xj 0 , 1 j 6
2 x1 4 x3 + 2 x4 2 x6 + x7 =5
2 x1 4 x 2 + 4 x 4 2 x5 + 2 x 6 x8 + x 9 =1
x2 + x3 + x10 =1
x 4 + x5 + x 6 + x11 =1
x j 0 , j = 1,...,11
w=x9+x10+x11
pe care o minimizm. Lum ca baz de start B=E=[A7, A9, A10, A11] creia i
corespunde soluia: x1=x2=x3=x4=x5=x6=x8=0 , x7=5 , x9=1 , x10=1 , x11=1. n
raport cu aceast baz cB=[0,1,1,1] astfel c =cBB-1=[0,1,1,1], w=b=3 .
Primul tabel simplex redus arat astfel:
A7 5 1 0 0 0
A9 1 0 1 0 0
A10 1 0 0 1 0
A11 1 0 0 0 1
w 3 0 1 1 1
74 I. PROGRAMARE LINIARA
Tabelul 4.8.1
(A4)T 2 4 0 1 A4
A7 5 1 0 0 0 2
A9 1 0 1 0 0 4
A10 1 0 0 1 0 0
A11 1 0 0 0 1 1
w 3 0 1 1 1 5=c4
Tabelul 4.8.2
(A2)T 0 -4 1 0 A2 (A3)T -4 0 1 0 A3
A7 9/2 1 -1/2 0 0 2 A7
3 1 0 0 -2 -4
A4 1/4 0 1/4 0 0 -1 A4 1 0 0 0 1 0
A10 1 0 0 1 0 1 A10 1/4 0 1/4 1 -1 1
A11 3/4 0 -1/4 0 1 1 A2 3/4 0 -1/4 0 1 0
w 7/4 0 -1/4 1 1 2=c2 w 1/4 0 1/4 1 -1 1=c3
cB (A1)T 2 2 0 0 A1
7
0 A 4 1 1 4 -6 4
2 A4 1 0 0 0 1 0
1 A3 1/4 0 1/4 1 -1 1/2
4 A2 3/4 0 -1/4 0 1 -1/2
w 0
f 21/4 0 -3/4 1 5 -9/2=c1
Tabelul 4.8.5
i facem produsele scalare ale lui (A4)T cu liniile matricei B-1; rezultatele le
nscriem n dreapta tabelului 4.8.2. Tot n dreapta jos nscriem costul redus c4.
Parcurgnd celelalte etape al algoritmului gsim c A9 prsete baza. Se
efectueaz pivotarea tabelului 4.8.2 cu pivotul ncadrat i se obine tabelul
(4.8.3). Tabelele 4.8.4 si 4.8.5 aparin deasemeni fazei I.
4. Metoda simplex 75
Tabelul 4.8.6
x1* = 11
2 , x 2* = 0 , x 3* = 1 , x 4* = x5* = 0 , x 6* = 1 ; (max) f = 37
2
(A8)T 0 -1 0 0 A8 (A6)T -2 2 0 1 A6
A5 1 0 0 0 1 0 A5 1 0 0 0 1 1
A3 1/4 -1/8 1/8 1/2 1/4 -1/8 A3 1 0 0 1 0 0
A1 3 1/4 1/4 1 1/2 -1/4 A1 9/2 1/2 0 2 0 -1
2
A 3/4 1/8 -1/8 1/2 -1/4 1/8 A2 6 1 -1 4 -2 -6
f 57/4 9/8 3/8 11/2 11/4 -3/8 =c8 f 33/2 3/2 0 7 2 -2 =c6
A6 1 0 0 0 1
A3 1 0 0 1 0
A1 11/2 1/2 0 2 1
A8 12 1 -1 4 4
f 37/2 3/2 0 7 4
Tabelul 4.8.11
***