Sunteți pe pagina 1din 3

Nume: Oprescu Vlad

Grupa: S.I.T.
Algoritmul simplex dual

Considerăm problema de programare liniară în forma standard


c T x  min (1)

 Ax  b
 (2)
x  0
unde A este o matrice de dimensiunea m  n, rang A  m  n.
Problema duală pentru (1) – (2) va fi la fel o problemă de programare liniară
b T y  max (3)

 AT y  c
 (4)
 y  oarecare
Algoritmul simplex de rezolvare a problemelor de programare liniară este o metodă
iterativă care pornind de la o bază primal admisibilă B (det B  0, B-1b  0) după un număr finit
de paşi ne conduce la soluţia optimă (în ipoteza că ea există). Acestei soluţii optime îi
corespunde o bază optimă.
Se ştie că valoarea optimă a funcţiei obiectiv din problema primală coincide cu valoarea
optimă a funcţiei obiectiv din problema duală.
c T x  bT y (5)
x este soluţia optimă a problemei primale (1) – (2), iar y - soluţia optimă a problemei duale
(9.3) – (9.4). Soluţiei y îi corespunde o bază duală admisibilă. Astfel, pornind de la o bază
primal admisibilă, algoritmul simplex ne conduce la o bază dual admisibilă.
Putem încerca şi un demers invers:
Pornind de la o bază dual admisibilă a problemei primale (1) – (2), după un număr de paşi, să
ajungem la o bază primal admisibilă (şi optimă).
Această idee conduce la un nou algoritm pentru rezolvarea problemei primale (1) – (2)
care se numeşte algoritmul simplex dual.
Remarcă. Schematic procedurile de rezolvare a problemelor (1) – (2) şi (3) – (4) pot fi
interpretate astfel:
Problema duală Problema primală
 max min 

Realizarea algoritmului începe cu o soluţie (bază) dual admisibilă care verifică criteriul
de optimalitate în problema primală (1) – (2), însă nu este primal admisibilă (soluţia nu are şi
componente negative). Pas cu pas, ne apropiem de o soluţie admisibilă a problemei primale care
va fi şi cea optimă.
Notăm prin a j coloanele matricei A:
a j  (a1 j ; a 2 j ;  ; a mj ) T , j  1, 2,  , n.

Considerăm mulţimile de indici:


B  {i : a i  B};
S  { j : a j  B};
B
B  {i : i  B; xi  0} (5)

Evident, atunci când B  , baza B este şi primal admisibilă, iar programul de bază

asociat x B  B 1b; x S  0 este optim pentru problema primală (1) – (2).


La baza algoritmului simplex dual stau următoarele două teoreme:
Teorema 1. Fie B o bază dual admisibilă în problema (1) – (2) şi B  .
B
Dacă există i  B , astfel încât y ij  0 pentru orice j  S , atunci problema primală (1) – (2)
nu are soluţii.
Teorema 2. Fie B o bază dual admisibilă pentru problema (1) – (2) şi B  . Dacă
B
pentru orice i  B , există j  S , astfel încât y ij  0. Dacă alegem lB arbitrar, iar kS, din
condiţia
B
zj cj zk
B
 ck
min B
 , (6)
B
j: ylj  0 y lj y lk
~ obţinută din B prin substituirea coloanei a cu coloana a este dual admisibilă
Atunci baza B l k

şi avem b T y B~  b T y B .

Remarcă. Relaţia (6) furnizează indicele k  S a variabilei x k care va intra în noua


~ , de aceea se numeşte criteriu de intrare în bază.
bază B
Pentru a arăta indicele l , a variabilei x l care iese din bază, folosim relaţia
B
xl  min xi (7)
i B

Care se numeşte criteriu de ieşire din bază.


Rezultatele enunţate mai sus ne dau posibilitatea să enunţăm algoritmul simplex dual.
Pasul 0. Determinăm o bază dual admisibilă B. Calculăm cantităţile
B B
x B ; z B ; y j ; z j ,1 j  n.
Trecem la pasul 1.
B
Pasul 1. Determinăm mulţimea B  {i : x i  0}. Dacă B    atunci x B este
program optim al problemei (1) – (2). STOP.
Dacă B  , atunci trecem la pasul 2.
B
Pasul 2. Dacă există i  B  astfel încât y ij  0 pentru orice j , 1  j  n, rezultă

că problema (1) - (2) nu are soluţii. STOP.


B
Dacă pentru fiecare i  B  există j  S încât y ij  0 , atunci trecem la pasul 3.

Pasul 3. Determinăm l  B  aplicând criteriul de ieşire din bază (7), apoi determinăm
k  S , aplicând criteriul de intrare în bază (6).
~ ~ ~ ~
B B ~ , obţinute
Calculăm cantităţile x B ; z B ; y j ; z j  c j , corespunzătoare bazei noi B

din B prin substituirea coloanei a l cu coloana a k . Trecem la pasul 1.


Remarcă. Pentru a putea aplica algoritmul simplex dual e nevoie de o bază dual
admisibilă. Există metoda generală de a face acest lucru, însă aici nu o vom expune.
Remarcă. Metoda algoritmului simplex dual devine destul de eficace atunci când în
restricţiile problemei intervin unele schimbări, în special, după ce soluţia optimă a fost obţinută.
Fie că restricţiilor problemei se alătură una nouă, iar aceasta nu este verificată de soluţia optimă
obţinută anterior. În asemenea caz, algoritmul simplex dual ne dă posibilitatea să aflăm o soluţie
optimă nouă care să fie aproape de cea aflată în condiţiile vechi.

S-ar putea să vă placă și