Cristian OARA
Introducere
Exemple de Probleme de Programare Liniara
Teorema Fundamentala a Programarii Liniare
Relatii cu Convexitatea
Exercitii
Problema de programare liniara : problema matematica in care functia obiectiv este liniara
in necunoscute si constrangerile constau din egalitati liniare si inegalitati liniare (Totul este liniar !).
Forma concreta a inegalitatilor poate in general diferi dar, asa cum vom arata putin mai tarziu,
orice program liniar se poate aduce in urmatoarea forma standard:
unde bi, ci si aij sunt constante reale fixate si xj sunt numere reale ce trebuie determinate.
minimizati cT x
(2)
atunci cand Ax = b si x ≥ 0
in care x este un vector n–dimensional (coloana), cT este un vector n–dimensional (linie), A este o
matrice de dimensiune m × n, b este un vector m–dimensional (coloana) iar inegalitatea vectoriala
x ≥ 0 inseamna ca fiecare componenta in parte a lui x este semipozitiva (mai mare sau egala cu
zero).
Multe alte forme aparent diverse de programe liniare pot fi convertite in forma standard:
Aceasta noua problema considerata in n + m necunoscute x1, . . . xn, y1, . . . , ym este in forma
standard iar matricea
de tip “A” ce descrie acum multimea de constrangeri de tip egalitate are
forma speciala A I .
Exemplul 2. Daca inegalitatile liniare de la Exemplul 1 sunt reversate (i.e. sunt de tipul
Din Exemplele 1 si 2 este clar ca prin multiplicare cu -1 si introducerea unor variabile suplimentare
Exemplul 3. Fie un program liniar dat in forma standard cu exceptia faptului ca una sau mai
multe variabile necunoscute nu trebuie sa fie semipozitive (ci arbitrare).
x1 = u1 − v1 (3)
Este usor de observat aparitia unei redundante introduse de aceasta tehnica (o constanta aditiva
!).
Schema de lucru prevede rezolvarea acestui din urma program si obtinerea in final a lui x1 pe
baza ecuatiei eliminate (4).
x1 = 5 − 2x2 − x3 (5)
care inlocuit in functia obiectiv si intr–a doua constrangere genereaza problema echivalenta in forma
atunci cand x2 + x3 = 4
si x2 ≥ 0, x3 ≥ 0.
Dupa ce se rezolva aceasta problema (avand solutia x2 = 4, x3 = 0), valoarea lui x1 = −3 se
obtine din ecuatia (5).
Exemplul 6. [Problema dietei economice] Se pune problema sa determinam o dieta cat mai
economica care sa acopere insa in totalitate substantele nutritive necesare organismului uman –
problema tipica de alocat resurse pentru dieteticianul unei mari armate ! Ipotezele sunt: exista pe
piata n alimente care se vand la pretul ci per bucata, si exista m ingrediente nutritionale de baza
pe care fiecare om trebuie sa le consume intr-o cantitate de minim bj unitati (din elementul j ). In
plus, fiecare aliment contine aji unitati din elementul nutritional j .
Fie xi numarul de unitati din alimentul i din dieta. Problema este atunci sa selectam xi care
Pn
minimizeaza costul total i=1 ci xi atunci cand avem constrangerile nutritionale
• Sunt mai multe variabile decat ecuatii (avem unde optimiza !!!)
• Ecuatiile sunt liniar independente (problema are solutie si nu are ecuatii redundante !!! )
Definitia 10. Fie B orice m × m matrice nesingulara (numita si matrice baza) formata din
coloane ale lui A, fie xb unica solutie a ecuatiei Bxb = b si x ∈ Rn obtinuta extinzand xb cu
zerouri corespunzatoare componentelor ce nu sunt asociate coloanelor lui B . Atunci x se numeste
solutie fundamentala a ecuatiei (6) in raport cu baza B iar componentele sale asociate cu
coloanele lui B sunt numite variabile fundamentale.
Observatia 11. Sub ipoteza fundamentala facuta sistemul (6) are intotdeauna o solutie si cel
putin o solutie fundamentala ! Solutiile fundamentale nu sunt neaparat nenule !
CAPITOLUL 8: Proprietati de Baza ale Programarii Liniare 10 Teorema Fundamentala a Programarii Liniare
Definitia 12. Daca o solutie fundamentala are macar una dintre variabilele fundamentale nule
atunci solutia se numeste degenerata.
Observatia 13. Intr-o solutie fundamentala nedegenerata se pot deosebi imediat variabilele
fundamentale de celelalte (pozitiv vs. zero) pe cand in cele degenerate variabilele fundamentale
nule se pot interschimba cu cele nefundamentale !
Ax = b,
(7)
x ≥ 0.
Deci putem avea solutii fundamentale fezabile si nefezabile, si o solutie fundamentala fezabila
poate fi degenerata sau nu.
Teorema centrala a programarii liniare pune in evidenta caracterul primordial jucat de solutiile
fundamentale fezabile. Esentialmente, teorema afirma ca este necesar sa consideram doar solutii
fundamentale fezabile atunci cand cautam optimul unui program liniar pentru ca valoarea optima
este intotdeauna obtinuta intr-o astfel de solutie !
CAPITOLUL 8: Proprietati de Baza ale Programarii Liniare 11 Teorema Fundamentala a Programarii Liniare
Corespunzator unui program in forma standard
minimizati cT x
(8)
atunci cand Ax = b si x ≥ 0
Teorema 15. [Teorema fundamentala a programarii liniare] Fie A o m×n matrice surjectiva
si fie (8) programul liniar asociat.
m n!
Cn =
m!(n − m)!
CAPITOLUL 8: Proprietati de Baza ale Programarii Liniare 12 Teorema Fundamentala a Programarii Liniare
solutii fundamentale (corespunzatoare modalitatilor diverse de a alege m coloane din n coloane).
Prin urmare sarcina calculatorie se termina intr-un numar finit de pasi (chiar daca mare) prin
intermediul unui algoritm foarte simplu dar extrem de ineficient !
CAPITOLUL 8: Proprietati de Baza ale Programarii Liniare 13 Teorema Fundamentala a Programarii Liniare
4. Relatii cu Convexitatea
Definitia 17. Un punct x apartinand unei multimi convexe C se numeste punct extrem al lui C
daca nu exista doua puncte distincte x1 si x2 in C a.i.
x = αx1 + (1 − α)x2
Ax = b,
(9)
x ≥ 0.
Atunci x este un punct extrem al lui K daca si numai daca x este solutie fundamentala
fezabila a lui (9).
Corolarul 19. Daca politopul corespunzator lui (9) este nevid atunci are cel putin un punct extrem.
Corolarul 20. Daca o problema de programare liniara are o solutie finita optimala atunci are si o
solutie finita optimala care este un punct extrem al multimii constrangerilor.
Corolarul 21. Multimea constransa K definita de (9) are cel mult un numar finit de puncte
extreme.
In final, prezentam un caz special ce este caracteristic problemelor de programare liniara bine
formulate: K este nevid si marginit.
Corolarul 22. Daca politopul K definit de (9) este marginit, atunci K este un poliedru convex,
i.e., K consta din puncte ce sunt combinatii convexe ale unui numar finit de puncte.
x1 + x2 + x3 = 1,
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
si ilustrata in Figura 1.
x1
x2
Figura 1: Multimea Fezabila ptr. Exemplul 23
Aceasta multime are trei puncte extreme, corespunzand celor C32 = 3 solutii fundamentale ale
lui x1 + x2 + x3 = 1.
x1 + x2 + x3 = 1,
2x1 + 3x2 = 1,
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
si ilustrata in Figura 2.
x1
x2
Figura 2: Multimea Fezabila ptr. Exemplul 24
Aceasta multime are doua puncte extreme corespunzand celor doua solutii fundamentale fezabile.
Observati deasemenea ca sistemul de ecuatii are trei solutii fundamentale
1 1 1 2
(2, −1, 0), ( , 0, ), (0, , ),
2 2 3 3
x1 + 83 x2 ≤ 4,
x1 + x2 ≤ 2,
2x1 ≤ 3,
x1 ≥ 0, x2 ≥ 0
si ilustrata in Figura 3.
x2
2
x5=0
x3=0
1 x4
=
0
x1=0
x2=0 1 2 x1
x1 + 83 x2 + x3 = 4,
x1 + x2 + x4 = 2,
2x1 + x5 = 3,
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0, x5 ≥ 0.
Solutiile fundamentale pentru acest sistem se obtin punand oricare doua variabile egale cu zero si
rezolvand pentru obtinerea celorlalte trei, in total un numar de C53 = 10 combinatii. Dintre acestea
doar 5 sunt fezabile corespunzand celor 5 colturi ale poligonului din Figura 3. Alternativ, laturile
poligonului corespund unei variabile egale cu zero iar colturile (punctele extreme) sunt punctele in
care doua variabile sunt egale cu zero.
Exemplul 26. Ultimul exemplu indica ca si atunci cand nu sunt exprimate in forma standard,
punctele extreme ale multimii definite de constrangerile unui program liniar corespunde posibilelor
puncte solutie. Ilustram acest fapt pe constrangerile din exemplul precedent avand functia de
minimizat
−2x1 − x2.
Multimea punctelor satisfacand −2x1 − x2 = z pentru z fixat este o dreapta. Cand z variaza se
obtin diverse drepte paralele asa cum este prezentat in Figura 4.
z=-1.5
2 z=-2
z=-1
1 2 x1
Valoarea optimala a problemei de programare liniara este cea mai mica valoare a lui z pentru
care dreapta respectiva are un punct in comun cu multimea fezabila. Este clar, macar in doua
dimensiuni, ca punctele solutie vor include intotdeauna un punct extrem ! Observati din figura ca
aceasta se intampla in punctul ( 32 , 12 ) cu z = −3 12 !