Documente Academic
Documente Profesional
Documente Cultură
- programare cu restricii -
Pusuc
Claudiu-Marius
Ungureanu
Marian-Gheorghe
An 3
Grupa 7211
Specializarea Informatic
Scurt istoric
Rdcinile cercetrii operaionale se regsesc n ncercrile timpurii de a folosi
abordarea tiinific n conducerea organizaiilor.
Cercetarea Operaional este o ramur a matematicii aplicate aprut de cteva
decenii (n anii 40) i se ocup de stabilirea soluiilor optime n cazul proceselor,
fenomenelor n care se impunea luarea unei decizii. Din cauza efortului de rzboi a
existat o necesitate urgent de alocare a unor resurse limitate n diferite operaii militare
ntr-un mod ct mai profitabil. Este de altfel denumit tiina optimizrii deciziilor.
Ca tiin integratoare se bazeaz pe alte ramuri ale matematicii (algebra, analiza,
matematica, probabiliti etc.), dar s-a structurat n forma oarecum asemntoare celei
cunoscut astzi naintea celui de-al doilea razboi mondial i a fost utilizat de S.U.A. i
Anglia pentru stabilirea cursului optim al aciunilor militare, de unde i denumirea de
cercetare operaional.
Plecnd de la succesul Cercetrilor Operaionale n domeniul militar, economia a
devenit i ea treptat interesat n noul domeniu. Dezvoltarea economic spectaculoas de
dup rzboi a fcut ca problemele cauzate de creterea complexitii i a specializrii
organizaiilor s se acutizeze. Pentru muli specialiti care lucraser n echipele de
cercetare operaional n timpul rzboiului a devenit foarte repede evident c noile
probleme semnau pn la identitate cu problemele cu care fuseser confruntai n rzboi.
Acesta a fost momentul n care cercetarea operaional a nceput s se strecoare n
industrie, afaceri i administraie. n anul 1951 lucrurile erau deja clare n Marea Britanie
i n curs de cristalizare n S.U.A. De atunci domeniul s-a dezvoltat extrem de rapid, cel
puin doi factori jucnd n acest sens un rol decisiv: progresul substanial n
perfecionarea tehnicilor utilizate i, respectiv, dezvoltarea sistemelor de calcul i
prelucare automat a datelor.
Prin urmare aceast tiin este nscut din raiuni militare, aplicabilitatea ei este
cert, verificat n numeroase aciuni militare i avantajele aduse de utilizarea ei a
determinat preluarea i de ctre alte domenii a metodelor acesteia, de exemplu n
economie, industrie, agricultur, domeniul social etc.
Curentul gndirii matematice n tiina conducerii s-a nscut n timpul celui de-al
doilea rzboi mondial datorit necesitilor strategice i logistice puse de rezolvarea
problemelor de o anvergur i o complexitate nemaintlnite pn atunci, circumstanele
care au marcat originea sa fiind excepionale i semnalate prin:
O mobilizare considerabil a resurselor care niciodat nu se produce n
situaii normale;
Recursul, pentru prima dat n economia firmei, la o gndire strin de
firm i de administraie, aceast gndire fiind esenial teoretic;
Crearea unor echipe interdisciplinare compuse din matematicieni, ingineri,
economiti.
Astfel diferitele tipuri de gndire (empiric sau pragmatic, calitativ sau
psihosociologic, matematic sau cantitativ) care s-au manifestat de-a lungul timpului n
tiina managerial au dus la apariia mai multor coli.
2
... ...........................................................
x1 (, =, ) x2 (, =, ) ... , xn (, =, )
Relaiile (1), (2) i (3) constituie mpreun modelul general al unei probleme de
programare liniar, avnd fiecare un rol specific:
1. relaia (1), unde este denumit funcia obiectiv de eficien a problemei, evalueaz
eficiena/performana fiecrei variabile x. c1,c2,...,cn formeaz vectorul
coeficieniilor din funcia obiectiv, iar x1,x2,...,xn formeaz vectorul
necunoscutelor X;
2. relaiile (2) reprezint restricii de tip resurse. Coeficienii a11, a12, ..., a1n, a21, ...,a2n,
, am1, am2, ...,amn formeaz matricea A, iar b1, b2, ...,bm formeaz vectorul liber B,
astfel nct A*X (, =, ) B.
3. relaia (3) xj (, =, ) 0 j = 1,...,n, asigur obinerea unei soluii realizabile din
punctul de vedere al logicii.
Sunt dou tipuri de probleme de programare: liniar i neliniar. Ne vom ocupa doar
de problema de programare liniar.
Programare liniar
Programarea liniar (PL) este o metod matematic de optimizare cu aplicaii n
diverse domenii ca: industrie, agricultur, probleme de transport i repartiie, investiii,
reclame, finane.
Scopul principal const n determinarea alocrii optime a unor resurse, de care se
dispune n cantitai limitate, pentru a se obine valoarea optim a unui anumit obiectiv, de
exemplu minimizarea costurilor de producie sau maximizarea profitului.
Pentru rezolvarea oricrei probleme de programare liniar trebuie creat un model
matematic.
Definiie: Dac ntr-o problem de programare matematic funcia obiectiv f i
restriciile sunt funcii liniare atunci problema se numete problem de programare
liniar. O problem de programare liniar este, deci, un caz particular al problemelor de
programare matematic i, innd cont de forma oricrei funcii liniare, rezult c forma
general a oricrei probleme de programare liniar este:
a i1 x1 a i2 x 2 ... a in x n b i
x1 , x 2 ,..., x n
i 1,..., n
oarecare
Algoritmul Simplex
Reamintim c presupunem c problema este la forma standard de maxim i c
dispunem de o soluie de baz admisibil.
Ca s putem folosi metoda simplex mai nti trebuie ndeplinite urmatoarele
condiii:
i.
Toi termenii liberi trebuie s fie pozitivi.
ii.
Restriciile trebuie sa formeze un sistem de ecuaii, adic A*x=b.
iii.
n matricea A (fiecare coloan fiind format din coeficienii unei variabile
din toate ecuaiile) trebuie s se gseasc matricea I n, unde n este numrul
de restricii.
Pasul 1. Se construiete tabelul simplex corespunztor bazei de care dispunem n ordinea
urmtoare:
1. se construiete baza B, ordinea coloanelor fiind cea n care apar ele n
matricea A, baza este format din variabilele alor cror coeficieni
formeaz n matricea A matricea In;
2. se trec n prima coloan coeficienii corespunztori variabilelor principale
(variabilele din baz) din funcia obiectiv, fiecare n dreptul variabilei
corespunztoare, dac nu se gsete variabila n funcia obiectiv atunci
coeficientul acesteia este 0;
3. se trec variabilele din baz n a doua coloan;
7
3. Variabila xj ce va avea cel mai negativ j va fi cea care intr n noua baz.
Dac minimul este multiplu atunci alegem, la ntmplare, unul dintre acetia
(cei minimi). Ea va lua locul unei variabile din baz.
Pasul 3. Se analizeaz elementele coloanei aj din matricea A din tabel, corespunztoare
variabilei alese la pasul 2.
Dac toate sunt mai mici sau egale cu 0 atunci problema are optim
infinit i algoritmul ia sfrit;
Dac exist componente strict pozitive, pentru acestea se calculeaz
xs
urmtoare (adic s determine numrul calculatoarelor PC1 i PC2 care se vor asambla)
astfel ca profitul total s fie maxim.
Se consider c toate calculatoarele asamblate vor fi vndute, iar restul resurselor
(ambalaje, monitoare pentru PC1, etc. ) sunt disponibile la firma.
Pentru obinerea modelului matematic este util sintetizarea datelor n tabelul
urmtor:
Resurse
Consumuri pentru o
Disponibil
unitate din:
PC1
PC2
Resursa 1 (R1)
3ore
5 ore
150 ore
Asamblare (ore)
Resursa 2 (R2)
0,8 m2
0,5 m2
30 m2
Spaiu de depozitare (m2)
Profit unitar (um)
50 um
40 um
Etapele de creare a modelului matematic sunt:
Etapa 1. Identificarea variabilelor i a unitilor de msur
Variabilele de decizie sunt necunoscutele problemei.
Se cere planul de producie, adic numarul calculatoarelor de fiecare fel care se
vor asambla. Deci variabile sunt:
x1 = numrul de calculatoare PC1
x2 = numrul de calculatoare PC2 care se vor asambla sptmna
urmtoare.
Cu ajutorul variabilelor se construiete modelul matematic.
Etapa 2. Exprimarea profitului total, ce trebuie maximizat, prin funcia obiectiv, deci
criteriul de performan.
Deoarece profitul pentru un PC1 este 50 um, iar firma produce un numar x1
calculatoare PC1, profitul pentru toate cele x1 calculatoare este 50*x1. Similar, profitul
pentru toate cele x2 calculatoare PC2 este de 40*x2.
Deci functia obiectiv este:
I. f (x) = 50*x1 + 40*x2 = MAX (um)
Etapa 3. Exprimarea restriciilor, adic exprimarea condiiilor n care se desfoar
procesul studiat.
II. Restricii:
Restricia privitoare la asamblare (resursa 1)
1. 3*x1 + 5*x2 150 (ore)
Restricia privind spaiul de depozitare (resursa 2)
2. 0.8*x1 + 0.5*x2 30 (m2)
Restricia privind numrul de monitoare pentru PC 2 (resursa 3), care
condiioneaza numrul de PC2 ce se vor asambla:
3. x2 20
Etapa 4. Condiii de nenegativitate:
III. x1 0, x2 0
Rezult c modelul matematic al problemei este:
I. Functia obiectiv:
f(x) = 50*x1 + 40*x2 = MAX (um)
10
II. Restricii:
1. 3*x1 + 5*x2 150 (ore)
2. 0.8*x1 + 0.5*x2 30 (m2)
3. x2 20 (nr. de monitoare)
III. Condiii de negativitate:
x1 0, x2 0
Aplicaia:
Vom ncerca s rezolvm aceast problem cu ajutorul unei aplicaii ce folosete
algoritmul Simplex. La implementarea acestei aplicaii am folosit limbajul Java +
JavaFX.
Pasul 1:
La deschiderea aplicaiei vom avea urmtorul ecran:
n acest ScrollPane
vom afia tabele de la
fiecare iteraie a
algoritmului Simplex
de aici vom putea
alege ce problem de
programare matematic
avem: MAX sau MIN
n acest TextField
vom trece funcia obiectiv,
iar aici numrul de
restricii.
Problema noastr este de MAX, deci vom lsa setat pe Max acel ComboBox.
n TextField-ul Funcia Obiectiv vom trece: 50x1+40x2, iar ca restricii avem 3.
Pasul 2 :
Dup ce vom completa funcia obiectiv i numrul de restricii vom apsa
butonul Introdu restrictii i vom avea urmtorul ecran:
11
12
Bibliografie:
1. Cercetri operaionale I - Programare Liniar, Problema de Transport,
Teoria Jocurilor / Vasile NICA, Floare MUSTA, Gheorghe CIOBANU,
Virginia MRCINE, Bucuresti : Editura Matrix Rom , 1998.
2. Revista A.F.T. 3/2000 / Alexandru HAMPU, Vasile CRUAU
3. Bazele Cercetrii Operaionale / Eugen IGNESCU, Dorin MITRU
4. Cercetri Operaionale / Adina RUSU, Iai, 2007
13