Documente Academic
Documente Profesional
Documente Cultură
Programare liniară
Modelul matematic al problemei
de optimizare (programare) liniară.
Modelul matematic al problemei de
optimizare (programare) liniară
Să presupunem că o întreprindere confecţionează un număr de n produse
pentru care se folosesc un număr de m resurse (materii prime, resurse financiare,
etc.) limitate superior de cantităţile bi, 1 i m. Notăm cu xj, 1 j n numărul
(cantitatea) produsului de tipul j (necunoscut). Notăm cu aij cantitatea din
resursa i, 1 i m necesară producerii unei unităţi de produs de tipul j, 1 j n.
Ca atare cantitatea totală de resursă i care intră încompunerea tuturor produselor
va fi :
ai1x1+ ai2x2+....+ ainxn, 1 i m.
Fiind limitată cantitatea de resursă i putem serie:
ai1x1+ ai2x2+....+ ainxn bi, 1 i m.
xj fiind numărul total de produse de tipul j are loc
xj 0, 1 j n.
Notând cu cj, beneficiul unitar adus de produsul de tipul j, 1 j n,
beneficiul total pentru toate cele n produse va fi:
n
cj xj
j 1
Problema care se pune este de a determina ce cantitate xj trebuie produsă din
fiecare produs j, 1 j n astfel încât beneficiul total să fie maxim.
Problema de programare liniară
max(min) z c T x
• forma standard: Ax b
x 0
min z c T x max z c T x
• forma canonică:
Ax b Ax b
x 0 x 0
Trecerea unei probleme de la o formă la alta
Transformări echivalente
1) Restricţiile date sub formă de inegalităţi se pot transforma în egalităţi:
Ax b sau A x b
se transformă în ecuaţii prin aduarea sau scăderea unor variabile x(e) numite
variabile ecart obţinând
Ax + x(e) =b sau Ax - x(e) =b, unde x(e) 0;
Inecuaţia îşi schimbă semnul dacă o înmulţim cu -1.
2) O ecuaţie se poate transforma în două inegalităţi echivalente cu ea astfel:
Ax = b este echivalentă cu inecuaţiile Ax b şi A x b.
3) O variabilă x supusă condiţiei de nepozitivitate (x 0) se poate
transforma în una supusă condiţiei de nenegativitate făcând substituţia
x’ = -x.
4) O variabilă x asupra căreia nu se pun condiţii de semn se poate înlocui cu
două variabile nenegative făcând substituţia
x = x '- x ".
5) Are loc egalitatea: min z = - max (-z)
Exemplu
x1 3x2 2
2 x x 2 x 1
1 2 3
x1 0, x 2 oarecare, x 3 0
Exemplu - Forma standard
- variabila x2 fiind oarecare se înlocuieşte cu diferenţa a două variabile
nenegative: x2=x4-x5 ;
- x3 fiind negativă facem substituţia x3=-x6 ;
- se introduc variabilele ecart x7, x8 pentru transformarea inegalităţilor în
egalităţi. Obţinem forma standard a sistemului dat:
min z x1 x4 x5 3 x6
x 2x 2x 8
1 4 5
x1 3 x4 3x5 x7 2 .
2 x x x 2 x x8 1
1 4 5 6
xi 0, i 1, 4, ...,8
Exemplu - Forma canonică
Forma canonică se obţine transformând prima ecuaţie în două inecuaţii de
sens contrar; pentru ca toate inegalităţile să fie concordante înmulţim pe cele
care au semnul ,, " cu -1. Se obţine următoarea formă canonică:
min z x1 x4 x5 3x6
x 2x 2x 8
1 4 5
x1 2 x4 2 x5 8
.
x1 3x4 3x5 2
2 x1 x4 x5 2 x6 1
xi 0, i 1, 2, ...,6
Algoritmul simplex. Noţiuni fundamentale
Fie o problemă de programare liniară în forma standard:
minz cT x
Ax b (1)
x 0
Definiţie. Se numeşte soluţie a problemei, un vector x = (x1,...,xn) care
satisface relaţia Ax=b.
Definiţie. Soluţia x = (x1,...,xn) se numeşte soluţie de bază dacă vectorii
corespunzători componentelor xi din matricea A a sistemului sunt liniar
independenţi.
Definiţie. Se numeşte bază a sistemului de vectori A orice submulţime
formată din m vectori liniar independenţi dintre vectorii a1, a2,…,an ai
matricei A.
Fie o bază B a sistemului Ax=b. Notăm cu JB={i: ai B} şi JR={j: aj B}.
Definiţie. Vectorii ai se numesc vectori bazici, iar vectorii aj se numesc
vectori nebazici.
Definiţie. O soluţie se numeşte posibilă dacă are toate componentele
nenegative.
Definiţie. O soluţie se numeşte admisibilă sau program dacă satisface
condiţiile Ax=b şi x 0.
Algoritmul simplex. Noţiuni fundamentale
jJ R
Algoritmul simplex primal-justificare
m B
z c x = c j x j = ci xi + c j x j = ci xi
T
yijB x j + c j x j =
j 1 iJ B jJ R iJ B jJ R jJ R
= ci xi - ci yij ci x j
B B
jJ R jJ R
prin urmare nu s-a obţinut un program mai bun.
Algoritmul simplex primal-justificare
- dacă z Bj c j >0, pentru un anume k JR , atunci soluţia nu este optimă şi poate
fi îmbunătăţită dacă xk ia valori pozitive adică se obţine un program
z0=z- ( z k ck ) xk0 z
mai bun (funcţia obiectiv are valoare mai mică). Noul program obţinut nu este
însă un program de bază având m+1 componente xi (i JB) şi xk. Atunci se pune
întrebarea până la ce valoare poate creşte xk. Deoarece valoarea sa influenţează
B
xiB xi yijB xk , i J B
poate creşte până la valoarea
x x
l l min i , yik 0 ,
ylk jJ B yik
deoarece altfel xiB devine negativ. Valoarea cu care scade funcţia obiectiv este
xl
( z k ck ) şi se va alege acel indice care maximizează această descreştere.
ylk
Algoritmul simplex primal
b) z Bj c j , j JR.
Algoritmul simplex primal