Sunteți pe pagina 1din 11

Elemente de programare liniar

Unitatea de nvare nr. 11


Elemente de programare liniar.
Cuprins
Obiectivele unitii de nvare nr. 11

Pagina

11.1 Forma general a unei probleme de programare liniar

11.2 Soluii admisibile ale unei probleme de programare liniar PPL

11.3 Forma canonic i forma standard a unei PPL

11.4 Lucrare de laborator

Lucrare de verificare unitatea de nvare nr. 11

Rspunsuri i comentarii la ntrebrile din testele de autoevaluare

10

Bibliografie unitatea de nvare nr. 11

11

METODE NUMERICE Curs i aplicaii

Elemente de programare liniar

OBIECTIVELE unitii de nvare nr. 11


Principalele obiective ale Unitii de nvare nr. 11 sunt:
Identificarea variabilelor modelului matematic, a funciei obiectiv,
a restriciilor crora le sunt supuse variabilele i ntocmirea unui
tabel de date
Determinarea modelului matematic asociat problemei de
programare liniar
Aducerea problemei de programare liniar la forma standard

11.1

Forma general a unei probleme de programare liniar

Problemele de maxim i de minim apar frecvent n cele mai diferite domenii ale matematicilor
pure sau aplicate, n domeniul economic, transport unde firmele ncearc s maximizeze profitul i s
minimizeze costurile. Consumatorii doresc s cheltuiasc venitul lor ntr-un mod care s le maximizeze
satisfacia material dar i spiritual.
Programarea liniar se ocup de o clas special de probleme de optimizare care constau n:
(i) maximizarea sau minimizarea unei funcii liniare, numit funcie obiectiv sau funcie de eficien cu
n variabile x1 , x2 ,..., xn de forma f = z = c1 x1 + c2 x2 + ... + cn xn , ale crei variabile trebuie s satisfac:
(ii) un sistem de m ecuaii liniare sau inecuaii liniare nestricte denumite generic restricii

a11 x1 + a12 x2 + ... + a1n xn / b1


a x + a x + ... + a x / b
21 1 22 2
2n n
2

.................

am1 x1 + am 2 x2 + ... + amn xn / bm


(iii) variabilele x j , j = 1, n pot fi nenegative, nepozitive sau oarecare, cerina fiind de a le transforma
astfel nct s avem numai valori numerice nenegative ( 0 ) .
a11

a
A = 21
.

am1

a12 ... a1n

a22 ... a2 n
=
, x
.
.
.

am 2 ... amn

c1

c
c = 2 R n cT =
...

cn

( c1

x1

x2 R n=
,b
...

xn

b1

b2 R m , A = (a )
ij 1i m , A x / b ,
...
1 j n

bm

c2 ... cn ) , f = cT x = z .

METODE NUMERICE Curs i aplicaii

Elemente de programare liniar

11.2

Soluii admisibile ale unei probleme de programare liniar PPL

Considerm o PPL notat (P) cu m restricii egaliti i/sau inegaliti nestricte, n variabile i cu funcia
obiectiv f.
Definiie: Un ansamblu de n valori numerice care satisfac restriciile se va numi soluie a
programului (P). Dac, n plus, sunt verificate i condiiile de nenegativitate ansamblul se numete
soluie admisibil. O soluie admisibil care maximizeaz sau minimizeaz dup caz funcia obiectiv
se va numi soluie optim.
Vom nota cu A mulimea soluiilor admisibile. Problema (P) se scrie: s se determine x* A cu
proprietatea f ( x* ) = max(min) f ( x) .
x A

Observaii:
(1)
Este posibil ca (P) s aib soluii dar niciuna din ele sa fie admisibil A =
i spunem c
(P) este incompatibil.
(2)
Chiar dac A , este posibil ca funcia obiectiv s fie nemrginit pe A, adic s existe un
ir de soluii admisibile pentru care funcia obiectiv tinde spre + sau , dup caz. n aceast situaie
spunem c (P) are optim infinit.
(3)
Daca (P) are (cel puin) o soluie optim spunem c (P) are optim finit.
Deoarece eventualele restricii inegaliti sunt nestricte mulimea A este nchis (n topologia uzual a
spaiului R n ), adic o dat cu un ir convergent de puncte conine i limita acestuia. Aceast
proprietate este esenial pentru existena unei soluii optime a (P). Dac A este mrginit atunci
funcia f i atinge extremele pe A i deci (P) are optim finit. Dac (P) are optim infinit, cu siguran A
este nemrginit. Reciproca nu este, n general, adevrat : Este posibil ca A s fie nemrginit i totui
(P) s aib optim finit.

11.3

Forma canonic i forma standard a unei PPL

Definiie: O restricie a unei PPL spunem c este concordant dac este o inegalitate de tipul
cnd funcia obiectiv se maximizeaz i de tipul cnd funcia obiectiv se minimizeaz. O
restricie(inegalitate) care nu este concordant se va numi neconcordant. Restriciile egaliti nu fac
obiectul acestei clasificri.
Definiie: Spunem c o PPL este n forma canonic dac toate restriciile ei sunt inegaliti
concordante i toate variabilele sunt nenegative.
O problem n forma canonic de maximizare arat astfel:
n

max(
f
cjxj )
=

j =1

n
sau matriceal
1, m
aij x j bi , i =
=
1
j

x 0, j =
1, n
j

O problem n forma canonic de minimizare arat astfel:

METODE NUMERICE Curs i aplicaii

max ( =
f cT x )

A x b
x 0

Elemente de programare liniar


n

min( f = c j x j )
j =1
min ( =
f cT x )

n
sau matriceal
1, m
aij x j bi , i =
A x b
j =1
x 0

x 0, j =
1, n
j

Orice PPL se poate pune sub forma canonic de maximizare sau minimizare fr modificarea mulimii
soluiilor admisibile prin folosirea transformrilor echivalente:
- o egalitate se poate nlocui cu dou inegaliti de sens contrar;
- o restricie neconcordant devine concordant prin nmulirea cu -1;
- putem schimba sensul optimizrii funciei obiectiv astfel: min f ( x) =
max( f ( x)) ;
x A

x A

- o variabil x 0 se transform ntr-o variabil nenegativ prin substituia x ' = x ;


- o variabil oarecare x (adic o variabil creia nu i se impun condiii asupra semnului) se poate
nlocui cu dou variabile nenegative x ' i x '' , folosind substituia x= x ' x '' cu x ', x '' 0 .
Exemplu: S se aduc la forma canonic problema:
max(3 x1 + 5 x2 2 x3 )
5 x + 2 x x 0
2
3
1
2 x1 x2 + x3 3

2 x1 + x3 4
x1 + x2 =
6

x1 0, x2 oarecare( f .r.s.), x3 0
not
Deoarece x1 0 x1 0
x1 =
u1 , deci u1 0 .

x2 oarecare( f .r.s.) x2 = u2 u3 , unde u2 , u3 0 .


u4 u4 0 .
x3 0 x3 =,
max(3u1 + 5u2 5u3 2u4 )
5u + 2u 2u u 0
2
3
4
1
2u1 u2 + u3 + u4 3

2u1 + u4 4
u1 + u2 u3 =
6

1, 4
ui 0, i =
Trecem la restricii concordante i obinem forma canonic a problemei:

METODE NUMERICE Curs i aplicaii

Elemente de programare liniar

max(3u1 + 5u2 5u3 2u4 )

5u1 2u2 + 2u3 + u4 0


2u + u u u 3
1 2 3 4
(F.C.) 2u1 + u4 4
u + u u 6
1 2 3
u1 u2 + u3 6

1, 4
ui 0, i =
Definiie: Spunem c o PPL este n forma standard dac toate restriciile ei sunt egaliti
(ecuaii) i toate variabilele sunt nenegative.
min(max)cT x

(FS) Ax = b
x 0

Importana acestei forme particulare rezult din faptul c metoda de rezolvare a PPL care va fi
expus mai departe cere ca problema s fie n aceast form, care se construiete astfel:
- o restricie inegalitate din problema original (P) de tipul , respectiv , se transform n
egalitate prin adugarea, respectiv scderea, unei variabile nenegative n membrul stng numit
variabil ecart de abatere sau compensare;
- restriciile egaliti nu se modific;
- noile variabile introduse nu apar n funcia obiectiv a problemei originale (alternativ, putem spune c
ele apar cu coeficieni nuli).
Exemple: S se aduc la forma standard problemele:

min(7 x1 + 9 x2 + 8 x3 )
min(7 x1 + 9 x2 + 8 x3 )

x4 , x5
4
5 x1 + 2 x2 x3 x4 =
5 x1 + 2 x2 x3 4
var iabile

ecart

( FS ) 3 x1 + x2 + x3 = 5
5
1) (P) 3 x1 + x2 + x3 =
x + 2 x 3x + x =
x + 2 x 3x 9
9
2
3
5
2
3
1
1
xi 0, i =
xi 0, i =
1,5
1,3
max(3u1 + 5u2 5u3 2u4 )
max(3 x1 + 5 x2 2 x3 )
5u + 2u 2u u 0
5 x + 2 x x 0
2
3
4
2
3
1
1
x1 =
u1
x2= u2 u3

2 x1 x2 + x3 3

+
+

3
u
u
u
u
2
1
2
3
4

x3 =u4
2) (P)

2u1 + u4 4
2 x1 + x3 4
u1 + u2 u3 =
x1 + x2 =
6
6

1, 4
x1 0, x2 oarecare( f .r.s.), x3 0
ui 0, i =

METODE NUMERICE Curs i aplicaii

Elemente de programare liniar


max(3u1 + 5u2 5u3 2u4 )
5u + 2u 2u u u =
0
2
3
4
5
1
u5 ,u6 ,u7
var iabile
2u1 u2 + u3 + u4 u6 =
3
ecart

(FS)
4
2u1 + u4 + u7 =
u1 + u2 u3 =
6

1, 7
ui 0, i =

11.4

Lucrare de laborator

Calcule simbolice cu matrice, polinoame, expresii matematice, funcii


Datele de tip simbolic se declar cu comanda syms sau cu funcia sym.
Exemple.
syms x y z
d=sym(2)
n exemplul de mai sus x,y,z sunt declarate ca simboluri, iar d are valoarea 2 dar este simbol nu numr.
Pentru a nelege deosebirea dintre 2 ca simbol i 2 ca numr prezentm urmtorul exemplu:
>> 1/2+1/3
ans = 0.8333
>> sym(1)/sym(2)+sym(1)/sym(3)
ans =5/6
Se remarc faptul c datele numerice duc la rezultate efective, iar datele simbolice dau un rezultat
simbolic (aici o fracie). Interesant aici este c forma simbolic este un reprezentant exact n timp ce
forma numeric a fraciei 5/6 are un numr infinit de zecimale dup virgul.
Funcia collect(p,v) ne ajut s ordonm n raport cu puterile lui v o expresie p. Dac variabila v
lipsete se consider implicit x. Exemple:
syms x y
>> collect((x+y)*(x^2+y^2+1))
ans =x^3+y*x^2+(y^2+1)*x+y*(y^2+1)
>> collect((x+y)*(x^2+y^2+1),y)
ans = y^3+x*y^2+(x^2+1)*y+x*(x^2+1)
Funcia expand(p) conduce la scrierea expresiei p cu elementele ei constitutive. Exemple:
>> expand((x-2)*(x-4))
ans = x^2-6*x+8
>> expand(cos(x+y))
ans =cos(x)*cos(y)-sin(x)*sin(y)
Se observ c aceast funcie calculeaz produse de polinoame, dar i desface expresii trigonometrice,
exponeniale sau logaritmice.
Funcia factor(p) factorizeaz expresia p. Dac p este un numr ntreg, face descompunerea lui p
n numere prime. Exemple:
>> factor(x^3-y^3+x^2-y^2)
ans =
METODE NUMERICE Curs i aplicaii

Elemente de programare liniar


(x-y)*(x^2+x+y*x+y+y^2)
>> factor(13482)
ans = 2 3 3 7 107
>> factor(sym(13482))
ans =(2)*(3)^2*(7)*(107)
Se remarc deosebirea de form a rspunsului dac se utilizeaz funcia sym sau nu.
Funcia simplify(p) simplific expresia p. Exemple:
>> simplify((x^2+x-2)/(x-1))
ans = x+2
>> simplify(sin(x)^2+cos(x)^2)
ans =1
Funcia [n1,n2]=numden(p) calculeaz p ca o expresie raional i calculeaz numrtorul n1 i
numitorul n2. Nu face ns i simplificri, de aceea pentru a afla valoarea final trebuie s utilizm i
funcia simplify(n1/n2). Exemple:
>> [n1,n2]=numden(x/(x*y-y^2)-y/(x^2-x*y))
n1 =x^2-y^2
n2 =y*(x-y)*x
>> simplify(n1/n2)
ans = (x+y)/y/x
Funcia [r,cum]=simple(p) caut s determine cea mai simpl (mai scurt) form a unei expresii.
n r va fi forma simpl gsit, iar n cum metoda, funcia cu care a fost gsit aceast form. Exemple:
>> [r,cum]=simple(cos(x)^2-sin(x)^2)
r = cos(2*x)
cum =combine(trig)
Unele funcii simbolice au primit acelai nume ca cel pentru calcule simbolice pentru simplicitate.
Astfel determinantul unei matrice simbolice se calculeaz cu funcia det, iar inversa unei matrice cu
funcia inv.
>> syms a b c d
det([a,b;c,d])
ans =a*d-b*c
>> inv([a,b;c,d])
ans =
[ d/(a*d-b*c), -b/(a*d-b*c)]
[ -c/(a*d-b*c), a/(a*d-b*c)]
>> B=sym([2/3 1/3;1 1]);
>> r=det(B)
r = 1/3
>> C=inv(B)
C=
[ 3, -1]
[ -3, 2]
Putem calcula limita unei funcii ntr-un punct cu ajutorul funciei limit. Aceasta are mai multe
forme.
METODE NUMERICE Curs i aplicaii

Elemente de programare liniar


Primul mod de calcul folosete forma limit(numef) unde numef este o expresie simbolic a unei
funcii de variabil x, sau numele unei astfel de funcii. Limita se calculeaz n 0.
Pentru a indica faptul c dorim limita n alt punct trebuie ca dup expresia simbolic sau numef s
indicm valoarea ctre care tinde x.
>> syms x
>> limit(sin(x)/x)
ans =1
>> limit((x^2-1)*log(x),2)
ans =3*log(2)
>> limit(1/(x-1)^2,1)
ans = Inf
De asemenea putem calcula limitele laterale indicnd left sau ,right. Trebuie declarat i
variabila ns.
>> limit(1/x,x,0,'left')
ans =-Inf
Astfel se pot calcula limitele n care variabila tinde la .
>> limit(1/x,x,0,'left')
ans = -Inf
>> limit((2-x-x^2)/(x^2+1),x,inf,'left')
ans = -1
>> limit((1-x^3)/(x^2+1),x,-inf,'right')
ans = Inf
Funcia derivat a unei funcii date se obine cu funcia diff. Variabila de derivat este considerat
implicit x.
>> diff(x^5*log(x^2+1))
ans =5*x^4*log(x^2+1)+2*x^6/(x^2+1)
Se pot calcula i derivatele de ordin superior indicnd ca argument al lui diff ordinul derivatei.
>> diff(x^4*exp(x),4)
ans =24*exp(x)+96*x*exp(x)+72*x^2*exp(x)+16*x^3*exp(x)+x^4*exp(x)
Pentru a calcula derivata n funcie de alt variabil se va indica acest lucru ca argument al funciei
diff :
>> syms t
>> diff(t*sin(t^2+1),'t')
ans = sin(t^2+1)+2*t^2*cos(t^2+1)
Putem utiliza faptul c putem deriva n raport cu alt variabil dect x la calculul derivatelor
pariale. Astfel

3 f
2 xy

pentru funcia f ( x, y ) = x 3 sin y se va calcula astfel:

>> syms x y
>> diff(diff(x^3*sin(y),2),'y')
ans =6*x*cos(y)
Primitiva unei funcii se calculeaz cu ajutorul funciei int. Integralele definite se calculeaz cu
aceeai comand n care se vor indica i limitele de integrare (care pot fi i simboluri).
METODE NUMERICE Curs i aplicaii

Elemente de programare liniar


>> int(5*x^4+2*x^6/(x^2+1))
ans =7/5*x^5-2/3*x^3+2*x-2*atan(x)
>> int(3*x^2,sin(t),cos(t))
ans = cos(t)^3-sin(t)^3

Acest lucru ne permite s facem diverse calcule complexe ca de exemplu s calculm 3x 2 dx dt .


sin t

>> int(int(3*x^2,sin(t),1),t)
ans =t+1/3*sin(t)^2*cos(t)+2/3*cos(t)
Putem rezolva simbolic o ecuaie cu ajutorul funciei solve. Se va indica doar eq din ecuaia eq=0.
Acest lucru nseamn c trebuie s ducem toi termenii ecuaiei n stnga. Dac se dorete rezolvarea
ecuaiei n raport cu alt variabil, aceasta se va preciza.
>> solve('x^3-2*t*x^2+t^3')
ans = t (1/2*5^(1/2)+1/2)*t
(1/2-1/2*5^(1/2))*t
>> solve('x^3-2*t*x^2+t^3',t)
ans =x
(1/2*5^(1/2)-1/2)*x
(-1/2-1/2*5^(1/2))*x

De reinut!
Problem de programare liniar
Soluie admisibil, forma standard, forma canonic

Test de autoevaluare
S se aduc la forma canonic i standard problemele:
a) max(x2 x1 )
b) min(3x1 x2 + x3 )
3 x1 = x2 5

x2 2
x 0
1

5 x1 x2 + x3 5

x1 + 2 x2 + 3 x3 7
x 0, x R , x 0
2
3
1

Lucrare de verificare la Unitatea de nvare nr. 11


S se aduc la forma canonic i standard problema de programare liniar:
max(2 x1 + 5 x2 3 x3 )

2 x1 + x2 x3 3

x1 + 3 x2 2 x3 5

x1 + 4 x2 + 3 x3 7
x1 0, x2 R , x3 0

METODE NUMERICE Curs i aplicaii

Elemente de programare liniar

Rspunsuri i comentarii la ntrebrile din testele de


autoevaluare
a) x1 = u1 , x2 = u 2 u3
max(u 2 u3 + u1 )

max(u 2 u3 + u1 + 0 u 4 + 0 u5 )

3u1 + u 2 u3 = 5

u3 u 2 2

u 2 u3 2
ui 0

3u1 + u 2 u3 = 5

u3 u 2 + u 4 = 2

u 2 u3 + u5 = 2
ui 0

b) x1 = u1 , x2 = u 2 u3 , x3 = u 4
min ( 3u1 u 2 + u3 + u 4 )

min ( 3u1 u 2 + u3 + u 4 + 0 u5 + 0 u6 )

5u1 u 2 + u3 + u 4 5

u1 2u 2 + 2u3 3u 4 7
u 0
i

5u1 u 2 + u3 + u 4 u5 = 5

u1 2u 2 + 2u3 3u 4 u6 = 7
u 0
i

Recapitulare
max ( =
f cT x )

forma canonic de maximizare A x b


x 0

min ( =
f cT x )

forma canonic de minimizare A x b


x 0

- o egalitate se poate nlocui cu dou inegaliti de sens contrar;


- o restricie neconcordant devine concordant prin nmulirea cu -1;
- putem schimba sensul optimizrii funciei obiectiv astfel:
min f ( x) =
max( f ( x)) ;
x A

x A

- o variabil x 0 se transform ntr-o variabil nenegativ prin substituia


x ' = x ;
- o variabil oarecare x (adic o variabil creia nu i se impun condiii asupra
semnului) se poate nlocui cu dou variabile nenegative x ' i x '' , folosind
substituia x= x ' x '' cu x ', x '' 0 .
n forma standard toate restriciile sunt egaliti i toate variabilele sunt
nenegative.

Concluzii

Programarea liniar, ca disciplin matematic, a aprut la mijlocul secolului


trecut, primele lucrri fiind publicate de L. Kantorovici (1939) i F. Hitchcock
(1941). Primele probleme se refereau la organizarea optim a transporturilor,
necesitile de aprovizionare ale frontului, planificarea misiunilor aviaiei de
bombardament.
METODE NUMERICE Curs i aplicaii

10

Elemente de programare liniar

Bibliografie
1. Constantinescu Eliodor, Mihai Bogdan, Matlab. Caiet de laborator, Editura
Crizon, Constana, 2008
2. Pelican Elena, Analiz numeric. Complemente, exerciii i probleme.
Programe de calcul, Editura MatrixRom, Bucureti, 2006

METODE NUMERICE Curs i aplicaii

11

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