Documente Academic
Documente Profesional
Documente Cultură
Cuprins Pagina
1
METODE NUMERICE – Curs şi aplicaţii
Algoritmul simplex
Pentru rezolvarea problemelor de programare liniară s-a impus algoritmul simplex datorat
matematicianului american G.B. DANTZIG (1951). Metoda simplex garantează convergenţa
procesului iterativ în sensul că o bază admisibilă cercetată la un moment dat nu mai revine în iteraţiile
ulterioare. Cum numărul bazelor este finit, urmează ca într-un număr finit de paşi să ajungem fie la
soluţia optimă fie la concluzia că programul are optim infinit.
Metoda permite explorarea sistematică a mulţimii programelor prin trecerea de la un program
de bază la alt program de bază vecin care este cel puţin la fel de bun ca programul iniţial şi pentru
aceasta trebuie să parcurgem etapele:
max(min) ( =
z cT ⋅ x )
1- Trecem problema de programare liniară în forma standard: A⋅ x =b , unde
x ≥ 0
b1 c1
b c2 ∈ R n ⇒ cT =
A ∈ M m ,n ( R ) , A = (aij )1≤i ≤ m =, b 2 ∈ Rm , c= ( c1 c2 ... cn ) , =
z cT ⋅ x ,
1≤ j ≤ n ... ...
bm cn
x1
x
=x 2 ∈ Rn .
...
xn
2
METODE NUMERICE – Curs şi aplicaţii
Algoritmul simplex
z
B
z1B − c1 z2B − c2 z3B − c3 ....... znB − cn
B
a) x = B −1b - soluţia sistemului în care am făcut x S = 0 (ceea ce nu face parte din bază);
∑c x
B B B
b)=
z c=
T
Bx i i ;
i∈B
4- TESTUL DE OPTIMALITATE
( B
)
j = 1, n , atunci problema are optim finit. Soluţia optimă este x = B −1b, 0 , iar valoarea optimă a
B B
funcţiei obiectiv este z = cBT x . În caz contrar se continuă algoritmul.
Dacă există j pentru care z Bj − c j < 0 în problema de max, respectiv > 0 în problema de
min, şi yij ≤ 0, ( ∀ ) i ∈ Β , atunci problema are optim infinit. În caz contrar se continuă algoritmul.
Dacă există j astfel încât z Bj − c j < 0 în problema de max, respectiv > 0 în problema de
min, şi yij > 0 , atunci soluţia se îmbunătăţeşte astfel:
3
METODE NUMERICE – Curs şi aplicaţii
Algoritmul simplex
respectiv zkB −
= ck max( z Bj − c j ) pentru problema de min.
j
B B
xl x
Iese din bază a , cu l stabilit astfel încât
l
B
= min i B indiferent dacă este o cerinţă de
ylk iy∈Β>0 yik
ik
( )
7. - Se construieşte o nouă baza B = B \ {a l } {a k } şi reluăm algoritmul corespunzător noii baze cu
un nou tabel simplex. Trecerea la noua bază se face astfel:
a) Linia pivotului se împarte la pivot ( ylkB );
b) Coloana pivotului se completează cu 0, doar pe locul pivotului rămânând valoarea 1;
a ... p
c) Toate celelalte elemente se determina cu regula dreptunghiului . .,
x ... b
xp − ab ab
x→ =
x− .
p p
Observaţii: i) Orice coloană a tabelului care conţine 0 pe linia pivotului rămâne neschimbată;
ii) Orice linie a tabelului care conţine 0 pe coloana pivotului rămâne neschimbată.
max(3 x1 + 4 x2 )
x + 4 x ≤ 28
1 2
Exemplu: 3 x1 + x2 ≤ 21 .
x + x ≤ 10
1 2
x1 , x2 ≥ 0
max(3 x1 + 4 x2 )
x1 + 4 x2 + x3 =28
Aducem problema la forma standard: 3 x1 + x2 + x4 = 21 , x3 , x4 , x5 variabile ecart. Scriem matricea
x + x + x = 10
1 2 5
xi ≥ 0, i =
1,5
1 4 1 0 0 1 0 0 28
sistemului, A = 3 1 0 1 0 de unde avem: B= I=
3 0 1 0 şi cum=b 21 > 0 ,
1 1 0 0 1 0 0 1 10
B −1b= b > 0 , deci avem bază primal admisibilă.
4
METODE NUMERICE – Curs şi aplicaţii
Algoritmul simplex
Determinarea unei baze primal admisibile la etapa 2 a algoritmului simplex constituie uneori o
parte importantă a rezolvării modelului, pentru care există metode speciale ca metoda celor doua faze
sau metoda bazei artificiale.
Nu se aleg la întâmplare m coloane din cele n ale matricei A, pentru că ele ar putea fi liniar
dependente sau soluţia de bază corespunzătoare ar putea fi neadmisibilă. În cazul în care nu există o
bază iniţială se construieşte o problemă auxiliară derivată din problema dată şi care va furniza o bază
de început pentru problema dată.
max(min)cT x
Fie problema de programare liniară în forma standard (PPL1) Ax = b .
x≥0
- presupunem b ≥ 0 , în caz contrar se înmulţeşte cu -1 ecuaţia al cărei termen liber este negativ;
- scriem coloanele matricei A şi se pun în evidenţă vectorii unitate ei = (0,...,1,...0)T care se
găsesc printre coloanele ei;
- dacă există toţi cei m vectori unitari ei , i = 1, m , atunci aceştia formează o baza B = I m care este
şi primal admisibilă pentru că B −1b= b ≥ 0 ;
- dacă nu există toţi cei m vectori unitari, vom introduce unele variabile suplimentare numite şi
variabile artificiale, totdeauna cu coeficientul 1, în anumite restricţii, convenabil alese, până
5
METODE NUMERICE – Curs şi aplicaţii
Algoritmul simplex
când matricea sistemului de restricţii conţine m vectori unitari, obţinându-se astfel un model
extins.
Observaţie: Pentru a putea extrage din soluţia modelului extins o soluţie pentru modelul dat trebuie
ca, în această soluţie, variabilele artificiale să ia valoarea zero. Astfel, vom căuta să forţăm
anularea variabilelor artificiale într-o prima fază de rezolvare în care considerăm drept funcţie
obiectiv, suma tuturor variabilelor artificiale, care trebuie să devină minimă: (PPL2)
min( xna+1 + xna+ 2 + ...xna+ m )
Ax + x =
a
b
’
x ≥ 0, x a ≥ 0
xi ≥ 0, i =1, 6
6
METODE NUMERICE – Curs şi aplicaţii
Algoritmul simplex
x1 x2 x3 x4 x5 x6
1 1 1 1 0 0
= A 2 1 3 0 −1 0
0 1 2 0 0 −1
Avem una din coloanele matricei unitate, deci trebuie să le construim pe celelalte două, introducând
două variabile artificiale x7a , x8a . Trecem la faza întâi cu problema de minim:
min( x7a + x8a )
x1 x2 x3 x4 x5 x6 x7 x8
a a
x1 + x2 + x3 + x4 = 60 1 1 1 1 0 0 0 0
2 1 3 0 −1 0 1 0
Faza I) 2 x1 + x2 + 3 x3 − x5 + x7 =
a
=
90 , A
0 1 2 0 0 −1 0 1
x2 + 2 x3 − x6 + x8 =
a
40
x =
i ≥ 0, i 1, 6, x7 , x8 ≥ 0
a a
Se observă coloanele matricei unitate de ordin trei deci putem să trecem la aplicarea algoritmului
simplex pentru aceasta primă faza, în cazul problemei de minim.
cB xB xB 5 5 4 0 0 0 0 0
0 0 0 0 0 0 1 1
a
x1 x2 x3 x4 x5 x6 x7 x8a
0 x4 60 1 1 1 1 0 0 0 0
1 x7a 90 2 1 3 0 -1 0 1 0
1 x8a 40 0 1 2 0 0 -1 0 1
130 2 2 5 0 -1 -1 0 0
0 x4 40 1 1/2 0 1 0 1/2 0 -1/2
1 x7a 30 2 -1/2 0 0 -1 3/2 1 -3/2
0 x3 20 0 1/2 1 0 0 -1/2 0 1/2
30 2 -1/2 0 0 -1 3/2 0 -5/2
0 0 x4 25 0 3/4 0 1 1/2 -1/4 -1/2 1/4
5 0 x1 15 1 -1/4 0 0 -1/2 3/4 1/2 -3/4
4 0 x3 20 0 1/2 1 0 0 -1/2 0 1/2
0 0 0 0 0 0 0 -1 -2
FAZA 155 0 -17/4 0 0 -5/2 7/4 - -
II
5 x2 100/3 0 1 0 4/3 2/3 -1/3 - -
5 x1 70/3 1 0 0 1/3 -1/3 2/3 - -
4 x3 10/3 0 0 1 -2/3 -1/3 -1/3 - -
890/3 0 0 0 17/3 1/3 1/3 - -
7
METODE NUMERICE – Curs şi aplicaţii
Algoritmul simplex
Exemplu: 3 x1 + x2 ≤ 21 .
x + x ≤ 10
1 2
x1 , x2 ≥ 0
Determinăm min(− 3x1 + 4 x2 ) .
>> f=[-3; -4]
f=
-3
-4
>> a=[1 4;3 1; 1 1]
a=
1 4
3 1
1 1
>> b=[28;21;10]
b=
28
21
10
>>lb=zeros(2,1)
lb=
0
0
>> [x,fval]=linprog(f,a,b,lb)
Optimization terminated.
x=
4.0000
6.0000
fval =
-36.0000.
Astfel s-a obţinut soluţia x1 = 4 , x2 = 6 şi max f = 36 .
min ( f = C ⋅ x )
A ⋅ x ≤ b
Pentru problemele de tipul , folosim comanda: [x,fval]=linprog(f,A,b,Aeq,beq,lb,ub).
Aeq ⋅ x = beq
lb ≤ x ≤ ub
8
METODE NUMERICE – Curs şi aplicaţii
Algoritmul simplex
9
METODE NUMERICE – Curs şi aplicaţii
Algoritmul simplex
De reţinut!
Etapele celor două metode.
Test de autoevaluare
Să se rezolve problemele:
a) max(x2 − x1 ) b) min(3x1 − x2 + x3 )
3 x1 = x2 + 5 5 x1 − x2 + x3 ≥ 5
x1 + x2 ≤ 2 x1 + 2 x2 + 3 x3 ≤ 7
x ≥ 0, x ≥ 0 x ≥ 0, x ≥ 0, x ≥ 0
1 2 1 2 3
Recapitulare
1. Trecem problema de programare liniară în forma standard
2. Se determina B-baza primal admisibilă
3. Se formează tabelul simplex
4. Testul de optimalitate
5. Testul pentru infinitudinea soluţiei
6. Criteriul de îmbunătăţire a soluţiei
7. Se construieşte o nouă bază şi reluăm algoritmul corespunzător
noii baze cu un nou tabel simplex
10
METODE NUMERICE – Curs şi aplicaţii
Algoritmul simplex
Concluzii
Pentru rezolvarea modelelor liniare, au apărut, începând cu 1948, mai multe
metode, dintre care amintim: metoda simplex cu variantele sale, metoda
Kantorovici, metoda relaxării. Dintre toate metodele apărute în literatura de
specialitate, cea mai răspândită este cea elaborată de G. B. Dantzig.
Algoritmul propus de Dantzig permite determinarea unei soluţii admisibile
de bază optime, dacă există, prin examinarea parţială dirijată a mulţimii
soluţiilor admisibile de bază; mai precis, vor fi testate o parte din soluţiile
admisibile de bază. În mod empiric, pe baza unor experienţe de calcul efectuate
timp de 10 ani, s-a stabilit că soluţia optimă, dacă există, se obţine după cel
mult 3m iteraţii (m = rangA). Fiecare dintre aceste noi iteraţii constă în găsirea
unei noi soluţii admisibile de bază căreia îi corespunde o valoare mai bună a
funcţiei obiectiv decât în situaţia precedentă.
Bibliografie
11
METODE NUMERICE – Curs şi aplicaţii