Professional Documents
Culture Documents
MODELE SI
, ALGORITMI
DE OPTIMIZARE
Matematica
(
Editura AGIR
Seria „Matematică”
MODELE ŞI ALGORITMI
DE OPTIMIZARE
OPTIMIZATION MODELS AND ALGORITHMS
This book presents a set of optimization methods, models and algorithms. After
the Introduction, where the reader is familiarized with the object of optimization
and some applications of it, the book includes Graphs in Optimization, Convex
Programming, Linear Programming, the Transportation Problem, Quadratic
Programming, Dynamic Programming, Basics of Queuing Theory, Basics of
Inventory Theory, and an Appendix.
These chapters provide a minimum of knowledge for practical activities in
engineering and economics.
Many of the results are being formally established, but some theorems are listed
without a proof, while providing a reference where the proof can be found. The
methods and corresponding algorithms are illustrated by examples. Also, the solutions
obtained by using the following software are included: Management Scientist, Excel,
and MathCAD. Almost all chapters end with suggested problems.
This book is aimed at engineers, economists, mathematicians and students of
technical and economic faculties, being a useful tool for solving practical problems.
8
Romică Trandafir
MODELE ŞI ALGORITMI
DE OPTIMIZARE
Seria „Matematică”
Editura AGIR
Bucureşti, 2004
ASOCIAŢIA GENERALĂ A INGINERILOR DIN ROMÂNIA
Referenţi ştiinţifici:
● prof. univ. dr. Ion Văduva;
● prof. univ. dr. Ştefan Mititelu
Lucrarea de faţă este o reuşită sinteză, care tratează în mod concis, dar şi
riguros din punct de vedere matematic, problemele de optimizare.
După o Introducere în care se formulează conceptele de bază ale con-
strucţiei modelelor matematice şi ale descrierii problemelor de optimizare, lu-
crarea tratează sistematic o mare varietate de modele şi algoritmi de optimiza-
re, care intervin în rezolvarea diverselor tipuri de probleme ridicate de practica
inginerească, în particular în construcţii. Astfel, un prim capitol este dedicat
formulării şi tratării unor modele şi algoritmi de optimizare din teoria
grafurilor, legate de determinarea drumurilor minime, a fluxurilor mini-
me/maxime sau a arborilor de acoperire de cost minim. Apoi, în cinci capitole dis-
tincte, sunt tratate la nivel teoretic evoluat, diverse probleme de programare ma-
tematică, cum sunt: programarea convexă programarea liniară, problema de
transport, programarea pătratică şi programarea dinamică. În aceste capitole se
fac remarcate construcţia şi analiza aprofundată a numeroşi algoritmi generali,
dar şi a unor particularităţi ale acestora de un real interes practic.
Un capitol special este dedicat analizei unor modele de teoria matematică
a aşteptării, modele care au ca scop reglarea aşteptărilor şi fluxurilor în sistemele
de servire în condiţii de incertitudine. Sunt tratate modele de aşteptare pentru sis-
teme cu o staţie de servire, cu coada finită sau infinită, sau sisteme de aşteptare cu
mai multe staţii paralele. În toate aceste modele se presupune că venirile şi durate-
le serviciilor sunt aleatoare, de repartiţii cunoscute.
În sfârşit, ultimul capitol al cărţii tratează modelele reprezentative de teo-
ria matematică a stocurilor. Sunt tratate modele clasice care determină politici de
reaprovizionare optime pentru stocarea unuia sau mai multor produse, precum şi
unele modele aleatoare.
Aproape toate metodele şi algoritmii descrişi sunt ilustrate prin exemple
preluate cu precădere din practica activităţilor de construcţii, exemple ce sunt pre-
lucrate cu ajutorul unor pachete de programe, fapt care măreşte mult utilitatea şi
atractivitatea lucrării.
Întrucât în tratarea unor modele intervin noţiuni şi metode ale teoriei pro-
babilităţilor şi statisticii matematice, anexa cărţii prezintă tocmai noţiunile de bază
necesare înţelegerii acelor modele.
În concluzie, avem de-a face cu o carte bine construită, interesantă prin
acurateţea, claritatea şi rigurozitatea problemelor tratate şi care oferă posibilităţi
de aplicare la rezolvarea multor probleme practice, ea prezentând deci un interes
deosebit pentru o clasă largă de cititori.
1. Introducere .....................................................................................................................11
1.1. Obiectul optimizării ..................................................................................................11
1.1.1. Construcţia modelului.....................................................................................11
1.1.2. Concepte de bază în modelare ........................................................................12
1.2. Tipuri de probleme ...................................................................................................14
1.2.1. Dimensiunea problemelor...............................................................................16
1.2.2. Algoritmi iterativi şi convergenţă ...................................................................16
2. Grafuri în optimizare.....................................................................................................17
2.1. Definiţii şi algoritmi..................................................................................................17
2.1.1. Grafuri orientate..............................................................................................17
2.1.2. Grafuri neorientate..........................................................................................19
2.2. Căutarea unui arbore de acoperire de lungime minimă ............................................20
2.2.1. Algoritmul lui Kruskal....................................................................................21
2.2.2. Algoritmul lui Prim.........................................................................................22
2.3. Algoritmul lui Dijkstra .............................................................................................25
2.4. Metoda PERT ...........................................................................................................29
2.5. Probleme propuse .....................................................................................................35
5. Problema de transport.................................................................................................102
5.1. Fundamentele algoritmului de transport .................................................................102
5.2. Enunţul algoritmului de transport ...........................................................................107
5.3. Determinarea soluţiei iniţiale de bază.....................................................................108
5.4. Exemplu..................................................................................................................109
5.5. Problema atribuirii sarcinilor ..................................................................................119
5.6. Probleme propuse ...................................................................................................119
Anexă.................................................................................................................................233
A.1. Câmp de evenimente. Axioma lui Kolmogorov ....................................................233
A.1.1. Evenimente. Probabilităţi.............................................................................233
A.1.2. Probabilitate .................................................................................................233
A.1.3. Câmp de probabilitate complet aditiv ..........................................................233
A.1.4. Probabilitate condiţionată ............................................................................234
A.1.5. Evenimente independente ............................................................................234
A.2. Variabile aleatoare .................................................................................................234
A.2.1. Funcţia de repartiţie .....................................................................................235
A.2.2. Densitate de repartiţie ..................................................................................236
A.2.3. Variabile aleatoare independente .................................................................236
în sensul Steinhaus−Kaç .........................................................................................236
A.2.4. Valoare medie. Dispersie. Momente............................................................236
A.3. Câteva repartiţii clasice..........................................................................................237
A.3.1. Repartiţia uniformă ......................................................................................237
A.3.2. Repartiţii Markov.........................................................................................237
A.3.3. Repartiţia normală unidimensională a lui Gauss..........................................238
A.3.4. Repartiţia Beta .............................................................................................239
A.4. Procese aleatoare....................................................................................................239
A.5. Teste de concordanţă .............................................................................................241
A.5.1. Etapele verificării ipotezelor statistice .........................................................242
A.5.2. Testul de concordanţă χ ..........................................................................243
2
Bibliografie .......................................................................................................................245
Un manager vrea să aleagă acel curs al activităţii sale care va fi cel mai
performant în atingerea scopului firmei sale. În judecarea eficienţei diferitelor decizii
posibile, trebuie să se folosească anumite criterii pentru măsurarea performanţei
activităţii în discuţie. Este indicat să se urmărească etapele (Bonini et al, 1997):
1. Stabilirea criteriului de eficienţă
2. Selectarea unei mulţimi de alternative posibile
3. Determinarea unui model care să fie folosit şi a valorilor parametrilor procesului
4. Determinarea alternativei care optimizează criteriul stabilit la etapa 1.
Deoarece problemele lumii reale devin extrem de complicate este necesar să se
facă o abstractizare şi o simplificare a realităţii într-un model. Să considerăm de
exemplu problema construirii unei clădiri. Este necesară o durată îndelungată
pentru culegerea de informaţii privind locul unde se amplasează, caracteristicile
fizice ale clădirii, studiul detaliat al condiţiilor climatice şi de sol, influenţa asupra
costurilor, sursele de finanţare şi costurile. Decidentul poate hotărî să considere în
mod deosebit şi în detaliu toate celelalte potenţiale folosite în această perioadă şi în
perioadele viitoare. Dacă decidentul adoptă strategia colectării tuturor informaţiilor
înainte de a acţiona, atunci nici o acţiune nu va avea loc. Mintea umană nu poate
considera toate aspectele empirice ale problemei. Anumite atribute ale problemei
trebuie ignorate ca să se poată lua o decizie. Decidentul trebuie să identifice
factorii cei mai relevanţi pentru problemă. Abstracţia şi simplificarea sunt paşi
necesari în rezolvarea oricărei probleme umane.
*
* *
A face « cel mai bine posibil » este sensul oricărei atitudini naturale în viaţa de
zi cu zi. Dar aceasta nu are decât un sens relativ în raport cu nişte restricţii impuse
din exterior sau acceptate de bunăvoie (Cohen, 2000).
Pentru un inginer « a face cel mai bine posibil » ar trebui să fie un obiectiv
permanent atunci când are de conceput o clădire, de dimensionat o instalaţie etc.
Expresia este relativizată în funcţie de buget, de securitate, sau altele, restricţii al
căror nivel a făcut la rândul său obiectul deciziilor prealabile şi adesea exterioare.
Prin schimbarea
max f ( x ) = − min{− f ( x )} ,
problema de maximizare devine o problemă de minimizare, aşa că în continuare se
vor considera numai probleme de minimizare.
Dacă toate funcţiile gi(x) care dau restricţiile sunt liniare şi funcţia obiectiv
este liniară, problema (1.1) se numeste problemă de programare liniară, iar dacă
funcţia obiectiv este pătratică atunci problema (1.1) se numeşte problemă de
programare pătratică.
Teoria algoritmilor iterativi poate fi împarţită în trei părţi. Prima parte se ocupă
cu crearea de algoritmi. A doua parte, numită şi analiza convergenţei globale,
analizează convergenţa unui algoritm către soluţia optimă atunci când se
iniţializează cu un punct depărtat de soluţia optimă. Cea de-a treia componentă se
numeşte analiza convergenţei locale şi studiază rata de convergenţă a şirului către
soluţia optimă. Este esenţial când se recomandă un algoritm să se menţioneze şi
o estimare a timpului necesar pentru obţinerea soluţiei. Lucrarea de faţă
argumentează convergenţa majorităţii algoritmilor prezentaţi.
2. GRAFURI ÎN OPTIMIZARE
Exemple de grafuri:
a) o reţea rutieră (cu drumuri având sens unic) – vârfurile sunt intersecţiile,
iar arcele sunt drumurile.
b) ordinea lucrărilor într-un
şantier. 2
c) relaţiile stabilite între
indivizi (situaţie întâlnită
în psihologia de grup) – 1
de exemplu: X={1, 2,
3, 4} , U={(1, 2), (3, 4) ,
(4, 2), (4, 3)}. Grafic se 4
poate reprezenta ca în
Figura 2.1. Individul 1 îl
apreciază pe individul 2,
individul 2 nu îl apreciază 3
pe individul 1, individul 4
îl apreciază pe individul Figura 2.1
2, iar indivizii 3 şi 4 se
apreciază reciproc.
Exemplu. În Figura 2.1 (1, 2, 4, 3) este un drum, iar (1, 2, 3) nu este drum.
Vârful y este adiacent vârfului x dacă (x, y)∈U sau (y, x)∈U .
Fie G=(X,U) un graf orientat şi A⊂X. Arcul u ∈ U este incident mulţimii A
spre exterior dacă extremitatea sa finală aparţine lui A, iar extremitatea iniţială nu
aparţine lui A. Arcul u ∈ U este incident mulţimii A spre interior dacă este
incident spre exterior mulţimii A = X − A .
Definiţia 2.6. Graful se numeşte tare conex dacă pentru orice perechi de vârfuri
x, y ∈ X există un drum din x plecând la y .
Exemple:
a) l(x,y) = lungimea tronsonului de drum, (x,y) care uneşte localităţile x şi y;
b) l(x,y) = capacitatea tronsonului de drum (x,y).
Definiţia 2.12. Un graf neorientat, G=(X, U), se numeşte graf complet dacă
pentru (∀ )x, y ∈ X avem ( x, y ) ∈ U .
Definiţia 2.14. Un graf G=(X,U) se numeşte simplu conex sau conex dacă pentru
orice pereche de vârfuri x, y ∈ X există un lanţ de extremităţi x şi y .
Definiţia 2.16. Se numeşte ponderea unui lanţ, drum, ciclu sau circuit valoarea
P= ∑ l ( x, y ) .
( x , y )∈( x1 , x 2 ,..., x n )
De exemplu, în cadrul metodei PERT, ponderea unui drum este durata sa totală.
Definiţia 2.17. Un lanţ, drum, ciclu sau circuit se numeşte hamiltonian dacă el
trece o dată şi numai o dată prin toate vârfurile grafului. Un lanţ, drum, ciclu sau
circuit se numeşte eulerian dacă el trece o dată şi numai o dată prin toate arcele
grafului.
Se disting la un arbore două tipuri de vârfuri : vârfuri la care mai multe muchii
sunt incidente şi alte vârfuri la care o singură muchie este incidentă. Acestea din
urmă se numesc vârfuri pendante sau frunze.
Fie G=(X, U, l) un graf conex (ipoteză necesară pentru a asigura existenţa cel
puţin a unui arbore) ponderat neorientat. Să notăm cu n = X (numărul
elementelor lui X). Se pune problema găsirii arborelui de acoperire de lungime
minimă, adică, folosind arce ale grafului să se lege între ele toate nodurile astfel
încât lungimea totală a arcelor folosite (suma ponderilor) să fie minimă. O astfel de
problemă apare în proiectarea reţelelor de comunicaţii, unde obiectivul este să se
minimizeze lungimea cablului necesar conectării tuturor nodurilor care trebuie să
comunice între ele, în proiectarea reţelelor de drumuri, benzi rulante, sisteme de
canalizare etc. În continuare sunt prezentaţi doi algoritmi care rezolvă această
problemă.
2. Grafuri în optimizare 21
Algoritmul Kruskal
Pas 1. Se consideră v1 – muchia de lungime cea mai mică. Apoi v2 – muchia de
lungime cea mai mică dintre cele rămase şi se notează V2={v1, v2} ;
k :=2 ;
Pas 2. Repetă
k :=k+1 ; vk – muchia de lungime cea mai mică dintre cele rămase
astfel încât Vk−1 ∪vk să nu formeze ciclu
până când k=n−1 ;
Pas 3. Stop. {Vn−1 este un graf de n−1 muchii şi nu are cicluri}.
l(v1)<l(v2)<…< l(vk−1)
V ∪vk conţine un singur ciclu (graful este conex şi dacă se adaugă o muchie el
va conţine un singur ciclu şi numai unul). Acest ciclu conţine cel puţin o muchie
up∉ Vk−1 . Din construcţia lui Vk , vk nu creează un ciclu cu Vk−1. Deoarece lista
muchiilor lui V este ordonată crescător după lungimile muchiilor l(uk)≤l(up),
avem de asemenea l(vk)<l(uk) deoarece vk≠uk, şi atunci l(vk)<l(up). Graful V∪vk−
up are n−1 muchii şi este fără cicluri deoarece suprimarea lui up înlătură singurul
ciclu al lui V∪vk . Acesta este, aşadar, un arbore şi lungimea sa este inferioară
aceleia a lui V , ceea ce contrazice faptul că V≠Vn−1 este arborele de lungime
minimă. Rezultă astfel că Vn−1 este arborele minim.
1
1
16 16 15
15
14
5
2 3
2
19
18 14
17 10
3 4 5 4
10
Pas 2. k=2. Se alege din U-V1, v2=[2,5], muchia cu cea mai mică pondere
( l[2,5] = min {l (v)} ) şi care adăugată la V1 să nu formeze cicluri. Se obţine
v∈U −V1
V2={[3,4]; [2,5]}.
k=3. Se alege din U-V2, v3=[1,3], muchia cu cea mai mică pondere
( l[1,3] = min { l (v)} ) şi care adăugată la V2 să nu formeze cicluri. Se obţine
v∈U −V2
Algoritmul Prim
Pas 1. Se iniţializează cu 0 cei trei vectori. Se dă nodul de start s ( 1 ≤ s ≤ n ) şi
χ s = 1 ; A={ s } arborele parţial.
Pas 2. Repetă
Determină muchia [i,j], cu ponderea minimă, care are o extremitate în
arborele parţial, i ∈ A şi cealaltă j ∈ X − A . Atunci χ j = 1 , pj=i şi
cj=l([i,j]) .
până când χ i = 1 (∀) i = 1, n .
Pas 3. Arborele de acoperire de lungime minimă este dat de muchiile [pi,i] , iar
n
lungimea minimă este Lmin = ∑ ci . Stop!
i =1
nodul 1 2 3 4 5
χ 1 0 0 0 0
p 0 0 0 0 0
c 0 0 0 0 0
Pas 2.
Iteraţia I: min{l([1,2]), l([1,3]), l([1,4])}= l([1,3])=15
nodul 1 2 3 4 5
χ 1 0 1 0 0
p 0 0 1 0 0
c 0 0 15 0 0
24 Modele şi algoritmi de optimizare
Figura 2.4
2. Grafuri în optimizare 25
După apăsarea butonului OK apare o fereastră din care se selectează File şi, de
aici, New. Apar succesiv ferestrele din Figura 2.5 în care se introduc numărul de
noduri, numărul de muchii şi apoi muchiile şi ponderile lor.
Figura 2.5
Figura 2.6
Algoritmul Dijkstra
Pas 1. {Iniţializări}
S :={s} ; s nodul de start, ∏(s) :=0 ;
Pentru orice x ∈ X − S dacă x ∈ Γ(s ) atunci ∏(x) :=l(s,x) altfel
∏(x) :=+∞ ;
Pas 2. {Iteraţia curentă}
Repetă
Determină y ∈ X − S astfel încât ∏(y) = min ∏(z) ;
z∉S
4 2
1 4 5
9 2 7
2
1 5 6 7
1
2 3 6
4 3
Figura
2. Grafuri în optimizare 27
y 1 2 3 4 5 6 7
∏(y) 0 1 ∞ 4 ∞ ∞ ∞
Pas 2.
Iteraţia I . {Π ( y )} = min {Π ( z )} = min{Π(2), Π(3), Π (4), Π (5), Π(6), Π(7)} = Π (2) ,
z∈ X − S
y 1 2 3 4 5 6 7
∏(y) 0 1 5 3 ∞ ∞ ∞
Iteraţia a II-a
Π( y ) = min {Π ( z )} = min{Π(3), Π (4), Π (5), Π (6), Π(7)} = Π(4) , y=4, S={1,2,4},
z∈X − S
Γ(4) = {1,2,3,5,6} .
∏(3)=min{∏(3), ∏(4)+l([3,4])}=min{5,3+5}=5
∏(5)=min{∏(5), ∏(4)+l([4,5])}=min{∞,3+2}=5
∏(6)=min{∏(6), ∏(4)+l([4,6])}=min{∞,3+9}=12
y 1 2 3 4 5 6 7
∏(y) 0 1 5 3 5 12 ∞
Iteraţia a III-a
{Π( y )} = min {Π( z )} = min{Π(3), Π(5), Π(6), Π(7)} = Π(3) , y=3, S={1,2,3,4},
z∈X − S
Γ(3) = {2,4,5,6} .
∏(5)=min{∏(5), ∏(3)+l([3,5])}=min{5,5+2}=5
∏(6)=min{∏(6), ∏(3)+l([3,6])}=min{12,5+3}=8
y 1 2 3 4 5 6 7
∏(y) 0 1 5 3 5 8 ∞
Iteraţia a IV-a
{Π( y)} = min {Π( z )} = min{Π(5), Π(6), Π(7)} = Π(5) , y=5, S={1,2,3,4,5},
z∈ X − S
Γ(5) = {3,4,6,7} .
∏(6)=min{∏(6), ∏(5)+l([5,6])}=min{8,5+6}=8
∏(7)=min{∏(7), ∏(5)+l([5,7])}=min{∞,5+7}=12
y 1 2 3 4 5 6 7
∏(y) 0 1 5 3 5 8 12
28 Modele şi algoritmi de optimizare
Iteraţia a V-a
{Π( y)} = zmin
∈X − S
{Π( z )} = min{Π(6), Π(7)} = Π(6) , y=6, S={1,2,3,4,5,6},
Γ(6) = {3,4,5,7} .
∏(7)=min{∏(7), ∏(6)+l([6,7])}=min{12,8+1}=9
y 1 2 3 4 5 6 7
∏(y) 0 1 5 3 5 8 9
Iteraţia a VI-a
{Π( y)} = zmin
∈X − S
{Π( z )} = min{Π(7)} = Π(7) , y=7, S={1,2,3,4,5,6,7},
Algoritmul se opreşte deoarece S=X. Vectorul ∏(y) conţine cele mai mici
distanţe de la nodul 1 la celelalte noduri. Drumul cel mai scurt între nodurile 1 şi 7
se obţine din muchiile (marcate cu litere îngroşate) D={[1,2], [2,3]; [3,6]; [6,7]} şi
este de 9 ore.
Figura 2.8
2. Grafuri în optimizare 29
Figura 2.9
Rezultatele sunt afişate după selectarea din meniul Solution a opţiunii Solve
(Figura 2.10).
Figura 2.10
Sunt necesare două tipuri de informaţii pentru fiecare activitate din proiect:
a) succesiunea activităţilor care preced o activitate,
b) timpul necesar realizării activităţii, care poate fi determinist sau aleatoriu.
Drumul critic este o mulţime de activităţi din proiect care are cea mai mare
durată de timp asociată.
Exemplu. În Tabelul 2.1 sunt trecute activităţile unui proiect şi duratele lor. Graful
corespunzător este dat în Figura 2.11. În acest exemplu, pentru o înţelegere mai
uşoară, se vor nota activităţile şi duratele lor în noduri, săgeţile indicând
succesiunea activităţilor.
Talelul 2.1
Activitate Timpul necesar
Activitate
precedentă realizării (în zile), ti
A Nici una 2
B A 3
C A 4
D B, C 6
E Nici una 2
F E 8
B3
D
A
6
2
C
4
STO
START
P
E F
2 8
Figura 2.11
2. Grafuri în optimizare 31
Sunt posibile doar trei drumuri: l (ABD)=11 zile , l (ACD)=12 zile, l (EF)=10
zile. Drumul critic este cel care are cea mai mare durată, şi anume ACD.
Lungimea drumului critic determină timpul minim în care proiectul poate fi
terminat.
Drumul critic este important pentru că arată că:
− timpul necesar pentru realizarea completă a proiectului nu poate fi redus sub
valoarea dată de drumul critic,
− orice întârziere în realizarea activităţilor de pe drumul critic va produce întârziere
în realizarea proiectului.
Pentru reducerea duratei totale a proiectului trebuie reduse duratele activităţilor
incluse în drumul critic.
Tabelul 2.2
Activitate Durata D DF TS TF M
S
A 2 0 2 0 2 0
B 3 2 5 3 6 1
C 4 2 6 2 6 0
D 6 6 12 6 12 0
E 2 0 2 2 4 2
F 8 2 10 4 12 2
Figura 2.12
Figura 2.13
Figura 2.14
S−au obţinut aceleaşi rezultate ca şi prin aplicarea procedeului descris mai sus.
Analiza numai sub aspectul duratei poate fi completată cu costuri asociate
activităţilor. De exemplu, durata unei activităţi poate fi redusă dacă se alocă resurse
suplimentare. Aceasta implică şi costuri suplimentare. Se introduce astfel şi o
funcţie de cost în luarea deciziei.
34 Modele şi algoritmi de optimizare
Tabelul 2.3
Activitate ai bi mi ti σi σ i2
A 1 3 2 2 0.33 0.11
B 1 5 3 3 0.67 0.45
C 2 6 4 4 0.67 0.45
D 4 8 6 6 0.67 0.45
E 1 3 2 2 0.33 0.11
F 1 15 8 8 2.33 5.43
4 6
3
Sediul firmei (1)
4
10
4 2
3 5 6
Figura 2.15
R. Lmin=22 , obţinută pe traseul D={[1,3], [3,5], [5,6], [6,7]} .
3 4
1
Serverul
4 3
central (1)
4
2
6
Figura 2.16
R. Arborele de acoperire
36 Modele şi algoritmi de optimizare
de lungime minimă este dat de muchiile {[1,2], [1,4], [4,6], [4,3], [4,5]} (Figura
2.17), iar lungimea minimă a cablurilor este de Lmin=11.
3
1 3 5
4
3
2
6
1
2
2
Figura 2.17
3 8
9
11
2 5
2 3
5 8 9 12
8 11 4
2 4
1 3 6 6 14
5 7 3
3 8
6 9 9 10 13
6
5
4 7 4
11
Figura 2.18
A B4
E4
C D F2
Figura 2.19
Tabelul 2.5
Activitate DS DF TS TF
A 0 5 0 5
B 5 9 5 9
C 0 7 3 10
D 9 12 10 13
E 9 13 9 13
F 13 15 13 15
R. a) Nu, deoarece activitatea C are o marjă de 3 zile, iar creşterea duratei este
doar de 2 zile.
b) Da, şi drumul critic este compus din activităţile C, D, F şi durata proiectului
este de 16 zile.
Tabelul 2.6
Activitate Timpul necesar
Activitate Descriere activitate
precedentă Realizării (în săptămâni), ti
A Proiectul de arhitectură Nici una 5
B Identificarea chiriaşilor potenţiali Nici una 6
C Dezvoltarea prospectului A 4
D Selectarea antreprenorului A 3
E Pregătirea autorizaţiei de A 1
construcţie
F Obţinerea autorizaţiei de E 4
construcţie
G Construcţia D,F 14
H Finalizarea contractelor cu B,C 12
chiriaşii
I Instalarea chiriaşilor G,H 2
Tabelul 2.7
Activităţi
Activitate precedent ai bi mi
e
A – 2 6 4
B – 6 10 8
C A 1 15 5
D C 1 9 5
E B 6 10 8
unde:
− ai – cea mai optimistă durată pentru activitatea i,
− bi – cea mai pesimistă durată pentru activitatea i,
2. Grafuri în optimizare 39
Tabelul 2.8
Activitate ti σ i2
A 4 0.44
B 8 0.44
C 6 5.44
D 5 1.78
E 8 0.44
A4 C6 D5
STO
STAR
B8 E
Figura 2.20
⎛ 16 − 15 ⎞
P (TBE < 16) = F ⎜ ⎟ = 0.50.
⎝ 0,94 ⎠
2. Grafuri în optimizare 41
Tabelul 2.9
Activitate Timpul necesar
Activitate
precedentă realizării (în luni), ti
A Nici una 10
B Nici una 4
C Nici una 8
D A, B, C 5
E C 6
B4 D5
STAR A1 STO
C8 E6
Figura 2.21
42 Modele şi algoritmi de optimizare
Tabelul 2.10.
Activitate DS DF TS TF M
A 0 10 0 10 0
B 0 4 6 10 6
C 0 8 2 10 2
D 10 15 10 15 0
E 8 8 15 15 7
Tabelul 2.11
Durata
Activitate realizării (în săptămâni)
Activitate Descriere activitate
precedentă cea mai cea mai cea mai
pesimistă probabilă optimistă
Proiectarea
A Nici una 4 5 12
produsului
Cercetarea pieţei de
B Nici una 1 1.5 5
defacere
Stabilirea procesului
C A 2 3 4
tehnologic
Construirea
D A 3 4 11
prototipului
Pregătirea broşurii cu
E instrucţiuni de A 2 3 4
folosire
F Estimarea costurilor C 1.5 2 2.5
G Testarea prototipului D 1.5 3 4.5
H Inspectarea pieţei B, E 2.5 3.5 7.5
Stabilirea preţului şi
I H 1.5 2 2.5
estimarea vânzărilor
J Raportul final F, G, I 1 2 3
Să se precizeze activităţile critice, duratele: cea mai optimistă, cea mai probabilă şi
cea mai pesimistă de realizare a acestui proiect.
În acest capitol sunt prezentate câteva noţiuni şi rezultate (Fletcher, II, 1981) pe
care se bazează metodele şi algoritmii următoarelor trei capitole.
Definiţia 3.2. xθ din Definiţia 3.1 se numeşte combinaţia liniară a punctelor x0,
x1 etc.
⎪⎩ i =1 ⎪⎭
{ ( ) }
un con ( C = x ∈ R n A x − x * ≥ 0 , A ∈ M m ,n (R ) , x* vârful conului) etc.
m
Lema 3.1. Fie Ki , i=1,2,…,m, m mulţimi convexe. Atunci K = I K i este tot o
i =1
mulţime convexă.
44 Modele şi algoritmi de optimizare
Exemple: vârfurile unui poligon regulat, punctele circumferiţei unui cerc sunt
puncte de extrem pentru poligon, respectiv disc.
Corolar 3.1.
( x1 − x 0 )′ ∇f ( x1 ) ≥ ′
f ( x1 ) − f ( x 0 ) ≥ ( x1 − x 0 ) ∇f ( x 0 ) (3.5)
Cu alte cuvinte, panta unei funcţii convexe este nedescrescătoare de-a lungul
oricărei drepte.
convexă pe K.
′
Lema 3.3. Dacă g = (g1 ,..., g n ) este convexă pe R n , atunci
R (a) = { x ∈ R n g ( x ) ≤ a }
este convexă.
Demonstraţie. Fie x1 , x 2 ∈ R (a ) şi xθ = (1 − θ ) x 0 + θ x1 , θ ∈ [0, 1] . Din
convexitatea lui g avem
g ( xθ ) ≤ (1 − θ ) g ( x 0 ) + θ g ( x1 ) ≤ (1 − θ ) a + θ a = a , adică g ( xθ ) ∈ R ( a ) .
mai sus contrazice proprietatea de optim local a lui x*. Astfel, soluţia locală este şi
globală.
Corolar 3.2. Dacă f este strict convexă pe R , atunci orice soluţie globală este
unică.
Demonstraţie. Fie x 0 ≠ x1 ∈ R şi θ ∈ (0,1) . Atunci
xθ ∈ R şi f ( xθ ) ≥ f ( x 0 ) = f ( x1 ) ,
iar din convexitatea strictă a lui f avem
f ( xθ ) < (1 − θ ) f ( x 0 ) + θf ( x1 ) = f ( x 0 ) = f ( x1 )
şi s-a obţinut o contradicţie. Aşadar, nu pot exista două soluţii globale distincte în
R pentru problema (3.6).
3. Programare convexă 47
⎛
( ′
) ⎞
m
+ ∑ λ*i ⎜ g i ( x * ) + x − x * ∇g i ( x * ) ⎟ =
i =1 ⎝ ⎠
⎛ m
⎞
⎝
∑
= f ( x * ) + ( x − x * )′⎜⎜ ∇f ( x * ) + λ*i ∇g i ( x * ) ⎟⎟ = f ( x * ) .
i =1 ⎠
Aşadar, f ( x ) ≥ f ( x ) şi astfel x este soluţie globală.
* *
Teorema 3.3. Dacă x* este o soluţie a problemei (3.6), atunci x* este şi o soluţie
a problemei restrânse
⎧min f ( x )
⎨ * (3.6’)
⎩gi ( x) ≤ 0 , i ∈E ,
{
unde E * = i ∈ E ∪ I g i ( x * ) = 0 . }
Demonstraţie. Presupunem că x* nu este soluţie a problemei (3.6’), adică
(∃)x ∈ R n , soluţie a problemei (3.6’), astfel încât
()
g i ( x ) ≤ 0 , i ∈ E * şi f x < f ( x ) , (∀)x ∈ R . (3.8)
Fie xθ = θ x + (1 − θ )x , 0 < θ < 1 . Să arătăm că pentru θ suficient de mic xθ
*
este o soluţie pentru problema (3.6) ‘mai bună’ decât x*, adică f ( xθ ) < f ( x * ) .
48 Modele şi algoritmi de optimizare
(realizabilă) în x * .
Notăm
Ca={s∈Rn ⎥ s este direcţie admisibilă în x*}
conul direcţiilor admisibile în x * , şi
{
C t = s ∈ R n s ′∇g i ( x * ) ≤ 0 , i ∈ E * }
conul tangent în x * la R.
Ipoteza de calificare a restricţiilor într-un punct de extrem este dată de relaţia
Ca = Ct . (3.10)
Considerăm că :
E ≠ φ , I ≠ φ şi ⎪E⎪+⎪I⎪=m≤n ,
x* punct admisibil dă un minim local,
f, gi sunt diferenţiabile şi
{ } {
vectorii ∇g i ( x * ) , i ∈ E ∪ ∇g j ( x * ) g j ( x * ) = b j , j ∈ I } sunt independenţi.
Teorema 3.5. (Condiţiile Kuhn-Tucker) În ipotezele de mai sus, condiţia necesară
şi suficientă pentru ca x* să fie o soluţie a problemei (3.6) este să existe
multiplicatorii λ i ∈ R + , i = 1, m , astfel încât
(i) ∂f ( x * ) ∂g ( x * ) ∂g ( x * )
+ ∑ λk k + ∑ λk k = 0 , (∀)i = 1, n
∂xi k∈E ∂xi k∈I ∂xi
(ii) ( )
λk g k ( x * ) − bk = 0 , (∀)k ∈ I
Demonstraţie. Condiţiile Kuhn-Tucker sunt necesare. Din ipoteza de calificare a
restricţiilor în x* rezultă că s′∇g i ( x* ) ≤ 0 , i ∈ E şi deoarece pentru (∀)s ∈ C a
avem
f ( x ( k ) ) = f ( x * ) + δ ( k ) s ( k ) ∇f ( x * ) + O (δ ( k ) ) , (∀)x ( k ) ∈ Br ( x * ) .
Dar
f ( x ( k ) ) ≥ f ( x * ) ⇒ δ ( k ) s ( k ) ∇f ( x * ) + O (δ ( k ) ) ≥ 0 .
Împărţim relaţia de mai sus la δ ( k ) > 0 şi trecem la limită pentru k → ∞ şi
obţinem că s′∇f ( x * ) ≥ 0 . În Lema Farkas-Minkowski, înlocuind x cu s şi A
cu ∇gE ( x * ) , rezultă că (∃)λ E ≥ 0 , astfel încât ∇f ( x* ) = −λE ∇gE ( x* ) , unde
∇gE ( x * ) este matricea care are ca linii ∇g i ( x* ) , i ∈ E . Considerăm vectorul
λ = [λE ,0 ]∈ R n şi ∇f ( x* ) = −λ ′∇g ( x* ) cu proprietatea că λ ′∇g ( x* ) = 0 ,
egalitate evidentă, deoarece
g i ( x * ) = 0 , i ∈ E * , λ j = 0 , (∀ ) j ∈ I − E * .
Condiţiile Kuhn-Tucker sunt suficiente. În Teorema 3.2 se consideră b=0 şi
rezultă că x* este soluţia problemei (3.6) .
∑a
j =1
ij x j ≤ bi , i∈{1, 2,..., m}. (4.1)
∑c
j =1
j x j − ∑ d j x j = ∑ (c j − d j )x j
j =1 j =1
(4.3)
Problema care se pune acum este de a determina acea variantă de plan, adică
acea soluţie a sistemului de inegalităţi (4.1), (4.2) care dă pentru profitul (4.3)
valoarea maximă. În acest moment, din acea problemă economică s-a obţinut
următoarea problemă matematică:
⎧ n
⎪ max ∑ (c j − d j ) x j
⎪ n j =1
⎪
⎨∑ a ij x j ≤ bi (4.4)
⎪ j =1
⎪x j ≥ 0
⎪
⎩
Aceasta este o problemă de programare liniară, sau program liniar.
∑∑ c
i =1 j =1
ij xij .
∑a = ∑b
i =1
i
j =1
j ,
∑x j =1
ij = ai , 1 ≤ i ≤ m (4.9)
m
∑x i =1
ij = bj , 1 ≤ j ≤ n (4.10)
xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n, (4.11)
care se numeşte program de transport.
în condiţiile
n
∑x
j =1
ij ≤ ai , 1 ≤ i ≤ m (4.13)
m
∑x i =1
ij ≥ bj , 1 ≤ j ≤ n (4.14)
∑a ≥ ∑b
i =1
i
j =1
j .
n
max ∑ a j x j (4.16)
j =1
în condiţiile:
n
∑x
j =1
j =S (4.17)
xj ≥ 0, 1≤j≤n. (4.18)
⎧ xi +1 = xi + d i − bi , i = 1, n − 1
⎪ (4.19)
⎪ xn + d n − bn = 0
⎨
⎪ xi + d i ≤ S
⎪x = 0 , x , d , b ≥ 0
⎩ 1 i i i
Modelarea problemei
Se notează cu xi numărul de unităţi din alimentul i conţinut în dietă. Trebuie
minimizat costul total al dietei
min {c1x1+ c2x2+...+ cnxn}
supus la restricţiile următoare date de conţinutul în ingrediente nutriţionale
⎧ a11 x1 + a12 x 2 + ... + a1n x n ≥ b1
⎪ a x + a x + ... + a x ≥ b2
⎪ 21 1 22 2 2n n
⎪ M M
⎨
⎪a x + a x + ... + a x ≥ b
⎪ m1 1 m2 2 mn n m
⎪⎩ x i ≥ 0 , i = 1, n
Problema care a rezultat este tot o problemă de programare liniară. Acelaşi tip
de problemă poate apărea în realizarea amestecurilor de tip mortar, beton etc.
56 Modele şi algoritmi de optimizare
Scrisă matriceal, cea mai generală problemă de programare liniară are forma
(Zidăroiu, 1983)
min [ c1′ x 1 + c ′2 x 2 + c 3′ x 3 ]
⎧ A11 x 1 + A12 x 2 + A13 x 3 ≥ b1
⎪
⎨ A21 x + A22 x + A23 x = b2
1 2 3
(4.20)
⎪A x + A x + A x ≤ b
1 2 3
⎩ 31 32 33 3
x ≥ 0, x oarecare, x ≤ 0
1 2 3
⎧max c ′x
⎪
⎨ Ax ≤ b (4.22’)
⎪x ≥ 0
⎩
Observaţia 4.1. Orice problemă de forma (4.20) poate fi adusă la forma standard
(4.21) sau forma canonică (4.22) folosind următoarele transformări:
i) transformarea maximului în minim şi invers se bazează pe următoarea
egalitate:
max f ( x ) = − min{− f ( x )}
x∈X x∈X
x B = x − ∑ y Bj x j
B
(4.31)
j∈S
sau pe componente
xiB = xiB − ∑ y ijB x j , i∈ B, (4.31’)
j∈S
unde
x B = B −1 b (4.32)
y Bj = B −1 a j (4.33)
iar: aj este coloana j a matricei A ,
S={indicii variabilelor secundare},
B={indicii variabilelor de bază}.
unde
z B = ∑ ci xiB = c ′B ⋅ x B , (4.35)
i∈B
z Bj = ∑ ci y ij = c ′B ⋅ y Bj , (4.36)
i∈B
şi atunci z > z B .
Teorema 4.3. Dacă (∃)k∈ S cu zk−ck > 0, atunci programul asociat bazei B nu
este optim (cu excepţia cazului în care programul este degenerat) şi poate fi
îmbunătăţit dacă xk ia valori pozitive.
Demonstraţie. Dacă există k ∈ S cu proprietatea că zk−ck>0, atunci programul
asociat bazei B nu este optim
( )
∑ z Bj − ci x j > 0 , iar z < z B
j∈S
(cu excepţia cazului în care programul este degenerat) şi poate fi îmbunătăţit dacă
xk>0.
Teorema 4.4. Dacă (∃)k∈ S , cu zk−ck > 0, şi dacă yik ≤ 0, pentru (∀) i∈B,
atunci problema are optim infinit.
Demonstraţie. Dacă yik ≤ 0 (∀) i∈B atunci xiB = xiB − y ik x k , ( xj=0 pentru
j∈S – {k}), iar creşterea lui xk nu face negativă nici o componentă de bază.
Atunci
z = z B − ( z k − c k ) x k ⎯⎯ ⎯→ −∞
xk →∞
Teorema 4.5. Dacă zk−ck > 0, dar (∃) yik > 0, atunci xk poate creşte până la
valoarea:
x x
min i = l , (4.37)
i yik > 0 y y lk
ik
~
pentru care se obţine un nou program de bază, asociat bazei B , dedusă din B
prin înlocuirea coloanei al cu coloana ak.
Demonstraţie. Dacă yik > 0 (∀)i∈B, atunci pentru a păstra xi ≥ 0 , ştiind că
x i = x i − y ik x k ≥ 0 ,
x
atunci x k ≤ i , (∀)i ∈ B cu proprietatea că yik > 0 . Atunci creşterea maximă a
y ik
lui xk este dată de (4.37).
Observaţia 4.3. Dacă există mai mulţi indici k pentru care zk−ck > 0, ar fi
preferabil să se aleagă acela pentru care
xl
(z k − c k )
y lk
62 Modele şi algoritmi de optimizare
are cea mai mare valoare, ceea ce asigură, în general, o scădere mai rapidă a
funcţiei obiectiv şi dă un număr mai mic de iteraţii (o iteraţie reprezintă o trecere
de la un program de bază la altul).
Fie problema de programare liniară sub forma standard (4.21). Pentru această
problemă algoritmul simplex are următorul enunţ.
Pas 0. Se determină o bază B în matricea A, se calculează x B = B −1 b ,
z B = c ′B x B , y Bj = B −1 a j (aj − coloanele din A), z Bj −cj, 1 ≤ j ≤ n.
Pas 1. a) Criteriu de intrare în bază
1) dacă toţi z Bj −cj ≤ 0, j∈B, programul este optim. Stop.
2) dacă (∃) z Bj −cj > 0, se determină k astfel încât:
zk−ck= max{zj−cj}.
b) Criteriu de ieşire din bază
1) dacă toţi yik ≤ 0, problema are optim infinit.
2) dacă (∃) yik > 0, se determină l astfel încât:
xl ⎧x ⎫
= min ⎨ i ⎬ .
>
y lk i y ik 0
⎩ y ik ⎭
Pas 2. Se înlocuieşte în baza B vectorul al cu vectorul ak , obţinându-se baza
~ ~ ~ ~ ~
B , şi se calculează x B , z B , y Bj , 1 ≤ j ≤ n, z Bj − c j , 1 ≤ j ≤ n,
conform cu (4.31), (4.34), (4.33) apoi se trece la pasul 1, înlocuind baza B
~
cu baza B .
z B = z B − (z k − c k ) l ; z Bj − c j = (z j − c j ) − ( z k − c k )
~ x ~ y lj
(4.40)
y lk y lk
64 Modele şi algoritmi de optimizare
Tabelul 4.1
Coeficienţii funcţiei obiectiv
xi
CVB VB VVB x1 xl xm xm+1 xk xn
y ik
M M M M M M M M M
funcţia obiectiv
M M M M M M M M M
⎛ 1 0 L 0 v1 0 L 0⎞
⎜ ⎟
⎜ 0 1 L 0 v2 0 L 0⎟
⎜ L L L L L L L L⎟
⎜ ⎟
⎜ 0 0 L 1 v l −1 0 L L⎟
E =⎜ ⎟.
⎜ 0 0 L 0 vl 0 L 0⎟
⎜ 0 0 L 0 v l +1 1 L 0 ⎟
⎜ ⎟
⎜L L L L L 0 L 0 ⎟
⎜0 0 L L v 0 L 1 ⎟⎠
⎝ m
~
Astfel, yk − coloana a k-a din noua bază B − va fi calculată direct cu formula
yk=(Ep.Ep-1…E1ak)’ .
4.7. Exemplu
Rezolvare
a) Modelarea problemei. Fie x1, x2 cantităţile din produsele P1 şi P2 ce trebuie
fabricate. Formularea matematică a problemei este
⎧max z = max{4 x1 + 3x2 } ⎧max z = 4 x1 + 3 x 2
⎪3 x + 2 x ≤ 24 ⎪2 x + x + x = 8
⎪⎪ 1 2 ⎪⎪ 1 2 3
⎨ 1
x + 3 x 2 ≤ 18 sau ⎨ 1
3 x + 2 x 2 + x 4 = 24
⎪x , x ≥ 0 ⎪ x + 3 x + x = 18
⎪ 1 2 ⎪ 1 2 5
⎩⎪2 x1 + x2 ≤ 8 ⎩⎪ xi ≥ 0, i ∈1,5
după adăugarea variabilele de compensare
66 Modele şi algoritmi de optimizare
Tabelul 4.3
4 3 0 0 0 alegem min
xi
CVB VB VVB x1 x2 x3 x4 x5
y ik
8
0 x3 8 2 1 1 0 0 =4
2
24
0 x4 24 3 2 0 1 0 =8
3
18
0 x5 18 1 3 0 0 1 = 18
1
1 1
4 x1 4 1 0 0 8
2 2
1 1
0 x4 12 0 − 1 0 24
2 2
5 1 28
0 x5 14 0 − 0 1
2 2 5
La prima iteraţie a ieşit din bază x3 şi a intrat x1 , iar la iteraţia a doua a ieşit
din bază x5 şi a intrat x2 . Iteraţia a doua este prezentată în Tabelul 4.4.
Tabelul 4.4
4 3 0 0 0 alegem min
xi
CVB VB VVB x1 x2 x3 x4 x5
yik
6 3 1
4 x1 1 0 0 − 8
5 5 5
46 2 1
0 x4 0 0 − 1 − 24
5 5 5
28 1 2 28
3 x2 0 1 − 0
5 5 5 5
Figura 4.1
Figura 4.2
După ce s−au introdus datele, pentru rezolvare se apasă butonul Solve şi apare
fereastra cu rezultate ca în Tabelul 4.5.
Tabelul 4.5
Objective Function Value = 21.600
Aceeaşi problemă poate fi rezolvată şi utilizând Solver-ul din Excel. Mai întâi
se creează foaia electronică de calcul cu datele de intrare, ca în Figura 4.3.
Celulele D13−D14 sunt considerate necunoscutele x1 – x2 , celulele H7−H9
conţin restricţiile problemei H7= B7*D13+C7*D14, H8= B8*D13+C8*D14, H9=
B9*D13+C9*D14, iar celula D3 = B10*D13+C10*D14, funcţia de optimizat.
Figura 4.3
70 Modele şi algoritmi de optimizare
Figura 4.4
Figura 4.5
Tabelul 4.6
Microsoft Excel 10.0 Answer Report
Worksheet: [Programare liniara.xls]Sheet1
Report Created: 7/23/2002 7:38:01 AM
Target Cell (Max)
Original
Cell Name Value Final Value
Functia de
$D$3 optimizat 0 21.6
AdjusTable Cells
Original
Cell Name Value Final Value
$B$13 x1 Produsul P1 0 1.2
$B$14 x2 Produsul P1 0 5.6
Constraints
Cell Name Cell Value Formula Status Slack
$G$13 2x1+x2<=8 8 $G$13<=$D$7 Binding 0
Not
$G$14 3x1+2x2<=24 14.8 $G$14<=$D$8 Binding 9.2
$G$15 x1+3x2<=18 18 $G$15<=$D$9 Binding 0
Not
$B$13 x1 Produsul P1 1.2 $B$13>=$E$13 Binding 1.2
Not
$B$14 x2 Produsul P1 5.6 $B$14>=$E$14 Binding 5.6
Tabelul 4.7
Microsoft Excel 10.0 Sensitivity Report
Worksheet: [Programare liniara.xls]Sheet1
Report Created: 7/23/2002 7:38:02 AM
AdjusTable Cells
Final Reduced Objective Allowable Allowable
Cell Name Value Cost Coefficient Increase Decrease
x1 Produsul
$B$13 P1 1.2 0 4 2 3
x2 Produsul
$B$14 P1 5.6 0 3 9 1
72 Modele şi algoritmi de optimizare
Constraints
Final Shadow Constraint Allowable Allowable
Cell Name Value Price R.H. Side Increase Decrease
$G$13 2x1+x2<=8 8 1.8 8 6.57142857 2
$G$14 3x1+2x2<=24 14.8 0 24 1E+30 9.2
$G$15 x1+3x2<=18 18 0.4 18 6 14
Tabeleul 4.8
Microsoft Excel 10.0 Limits Report
Worksheet: [Programare liniara.xls]Limits Report 1
Report Created: 7/23/2002 7:38:02 AM
Target
Cell Name Value
$D$3 Functia de optimizat 21.6
AdjusTable Lower Target Upper Target
Cell Name Value Limit Result Limit Result
$B$13 x1 Produsul P1 1.2 0 16.8 1.2 21.6
$B$14 x2 Produsul P1 5.6 0 4.8 5.6 21.6
Vom demonstra prin reducere la absurd că regula lui Bland înlătură ciclarea.
Presupunem că, deşi aplicăm regula, apare ciclarea. În timpul ciclului un număr
finit de coloane intră şi ies din bază. Fiecare dintre aceste coloane intră la nivelul 0
şi funcţia obiectiv nu-şi schimbă valoarea. Ştergem coloanele şi liniile care nu
conţin pivotul în timpul unui ciclu, obţinând o nouă problemă de programare
liniară redusă care, de asemenea ciclează. Presupunem că această nouă problemă
are m linii şi n coloane şi că suntem în situaţia ca să înlocuim coloana n cu
coloana p. Fără a restrânge generalitatea, presupunem că baza curentă este situată
pe ultimele m coloane. Putem considera problema de programare liniară redusă
ca având matricea coeficienţilor restricţiilor A , iar vectorul coeficienţilor funcţiei
obiectiv c. Notăm pivotul cu amp >0. Din partea b) a regulii lui Bland, an poate
părăsi baza numai dacă nu există egalitatea în testul raportului din criteriul de ieşire
74 Modele şi algoritmi de optimizare
din bază şi atunci b=0, deoarece toate coloanele sunt în ciclu, iar aip≤0 , (∀ )i ≠ n .
Să considerăm cazul când an este în situaţia de a intra în bază. Partea a) a regulii
lui Bland ne asigură că rn = z n − c n > 0 şi ri = z i − c i ≤ 0 pentru (∀ )i ≠ n .
Aplicăm formula
′
( )
ri = ⎛⎜ c B B −1 S ⎞⎟ − c i
⎝ ⎠i
′
ultimelor m coloane ca să arătăm că fiecare componentă λ = (c B ) B −1 ≤ 0 cu
excepţia lui λ m > 0 . Atunci r p = λ ′a p − c p > c p > 0 .
Contradicţie cu faptul că r p ≤ 0 .
Tabelul 4.9
Produsul
Consum specific Disponibil
Materia
primă P1 P2
M1 2 2 12
M2 1 2 8
M3 4 0 16
M4 0 4 12
Profit unitar 2 3
Să se determine cantităţile x şi y care trebuie realizate din produsele P1 ,
respectiv, P2 , pentru ca profitul total să fie maxim.
4. Programare liniară 75
Rezolvare
Funcţia de optimizat (obiectiv) este f(x,y) = 2x + 3y . Restricţiile problemei,
aşa cum rezultă din Tabelul 4.8, sunt:
⎧ 2x + 2 y ≤ 12
⎪ x + 2y ≤ 8
⎪⎪
⎨ 4 x + 0 y ≤ 16
⎪ 0 x + 4 y ≤ 12
⎪
⎪⎩ x ≥ 0 , y ≥ 0
Se cere să se determine necunoscutele x0 , y0 , astfel încât să se verifice
restricţiile, iar f(x0 , y0) să ia valoarea maximă. Considerăm restricţiile cu egalităţi
şi reprezentăm grafic dreptele ale căror ecuaţii rezultă (Figura 4.6).
x
x+y=6 ⇒ y=6−x (d1) , x+2y=8 ⇒ y=4− (d2) , 4x=16 ⇒ x=4 (d3) , 4y=12 ⇒
2
y=3 (d4) , x≥0 , y≥0 .
Reprezentarea grafică a
d1 restricţiilor conduce la
poligonul OABCD, ale cărui
fmax puncte constituie soluţii ale
problemei de programare
4
liniară (mulţimea R a
d4 punctelor admmisibil e). Din
D C
acest motiv se numeşte
poligonul soluţiilor. Rezultă
g că realizarea practică a
2
B
producţiei celor două produse
din cele patru materii prime
d3 se poate face într-o infinitate
de moduri. Să alegem dintre
A aceste soluţii pe cele care dau
O
0 2 4 6 valoarea maximă pentru
funcţia obiectiv. Punem funcţia
Figura 4.6 obiectiv sub forma
f 2
(d) y = − x ,
3 3
care reprezintă un fascicul de drepte, considerând f ca parametru ( (g) o dreaptă
din fascicul). Funcţia f va avea maximul o dată cu ordonata la origine a dreptei (d).
Astfel, trebuie găsită acea dreaptă din fasciculul (d) care are ordonata la origine
cea mai mare şi care trece printr-un punct din poligonul soluţiilor. Se observă că
acea dreaptă trebuie să treacă prin punctul B, un vârf al poligonului soluţiilor.
76 Modele şi algoritmi de optimizare
{B} = ⎧⎨ y = 4 − x ⎫⎬ I {y = 6 − x} ⇒ 4−
x
=6−x ⇒ x=4 , y=2
⎩ 2⎭ 2
Valoarea funcţiei obiectiv este f(4, 2)=14 . În Tabelul 4.10 se prezintă starea
sistemului de restricţii şi gradul de utilizare a resurselor pentru soluţia optimă.
Tabelul 4.10
Materia Cantitatea folosită pentru Cantitatea Gradul de
primă programul optim disponibilă folosinţă
M1 2⋅4+2⋅2=12 12 100%
M2 1⋅4+2⋅2=8 8 100%
M3 4⋅4+0⋅2=16 16 100%
M4 0⋅4+4⋅2=8 12 66.67%
Problema are soluţie unică, deoarece dreapta (d) nu este paralelă cu nici o latură a
poligonului soluţiilor. Dacă, de exemplu, se modifică profitul unitar pentru
produsul P2 , devenind 4, atunci dreapta (d) devine
f x
(d’) y = − ,
4 2
fiind paralelă cu dreapta corespunzătoare celei de-a doua restricţii (latura BC a
poligonului soluţiilor). În acest caz, toate punctele segmentului BC sunt soluţii
optime ale problemei date. Avem de-a face cu o problemă cu o infinitate de soluţii
optime. Se pot introduce alte criterii suplimentare pentru a putea selecta o soluţie.
Metoda geometrică s-ar mai putea aplica şi în cazul a trei necunoscute, în locul
poligonului soluţiilor obţinându-se poliedrul soluţiilor. Pentru n > 3 nu mai pot fi
reprezentate grafic hiperpoliedrele soluţiilor şi deci metoda devine impracticabilă.
Metoda celor două faze permite obţinerea unui program de bază de plecare în
rezolvarea problemei de programare iniţială sub forma standard, adică (Zidăroiu,
1983) :
⎧min c ′x
⎪
⎨ Ax = b (4.41)
⎪x ≥ 0
⎩
Se poate presupune că bi ≥ 0, 1≤ i ≤ m ; dacă nu, se înmulţeşte linia
respectivă cu −1. Se adăugă la fiecare ecuaţie câte o variabilă artificială x ia şi se
obţine:
⎧ Ax + Ix a = b
⎪
⎨x ≥ 0 (4.42)
⎪x a ≥ 0
⎩
Problema (4.41) are programe dacă (4.42) are programe (x, xa), cu xa = 0.
Dacă se obţine un astfel de program de bază cu xa = 0, atunci x corespunzător
este un program de bază pentru (4.41).
78 Modele şi algoritmi de optimizare
⎨ (4.43)
⎪ x i ≥ 0, 1 ≤ i ≤ n
⎪ x aj ≥ 0, 1 ≤ j ≤ m
⎩
folosind algoritmul simplex obişnuit.
Se observă că pentru problema (4.43) dispunem de programul de bază iniţial
x=0, xa = b ( ≥ 0 ), corespunzător bazei I din matricea acestui sistem [A,I].
Deoarece x ia ≥ 0 ⇒ ∑ x ia ≥ 0 , şi deci min W ≥ 0. Sunt posibile 2 cazuri:
(i) dacă min W > 0, atunci problema (4.41) nu are program de bază (dacă ar avea,
atunci (4.43) ar avea programe cu xa = 0 şi deci min W = 0)
(ii) dacă min W = 0, am obţinut un program cu xia = 0, 1 ≤ i ≤ m, deci un
program de bază al problemei (4.43), şi se trece la faza a II-a pentru rezolvarea
problemei (4.41) (după eliminarea liniilor redundante). Matricea A este acum
transformată aşa cum a ieşit din faza I.
⎧min c ′x
⎪
⎨ Ax = b . Faza a II−a
⎪x ≥ 0
⎩
Observaţia 4.9. Faza I constă din eliminarea din bază a variabilelor artificiale x ia
şi înlocuirea lor cu variabilele xj. Când toate variabilele au fost eliminate din
bază, adică la sfârşitul fazei I, coloanele acestora sunt şterse din tabelul simplex
şi se începe faza a II-a, pornind de la acest tabel simplex, în care calculăm doar
elementele liniei zj−cj corespunzătoare funcţiei obiectiv din faza a II−a.
Exemplu. O balastieră are 3 linii de sortare S1, S2, S3, pentru 2 tipuri de agregate
A1, A2 şi trebuie să sorteze 300 tone din primul tip şi 372 tone din al doilea tip.
Profitul încasat de pe urma sortării materialelor diferă de la o linie la alta precum
diferă şi cantităţile ce pot fi sortate conform cu Tabelul 4.11.
Tabelul 4.11
Agregat
Linie A1 A2 Profit
de sortare
S1 2 1 5 u.
m.
S2 3 2 4 u.
m.
S3 1 2 6 u.
m.
Cantitatea ce 300 372
trebuie sortată tone tone
Rezolvare
a) Modelarea problemei
Fie x1, x2 , x3 cantităţile sortate pe liniile S1 , S2 , S3 respectiv. Atunci funcţia
de optimizat este f = 5x1+4x2+6x3 .
80 Modele şi algoritmi de optimizare
La prima iteraţie a ieşit din bază x1a şi a intrat x2 , iar la iteraţia a doua a ieşit
⎛3 1⎞
din bază x 2a şi a intrat x3. Baza obţinută B = ⎜⎜ ⎟⎟ are inversa în tabelul final
⎝ 2 2⎠
⎛ 1 1⎞
⎜ − ⎟
al fazei I sub variabilele artificiale, B = ⎜ 2
-1 4⎟ .
⎜− 1 3 ⎟
⎜ ⎟
⎝ 2 4 ⎠
ii) Faza a II-a
Se aplică algoritmul simplex problemei
max {5x1+4x2+6x3 }
⎧ 3
⎪ 4 x1 + x 2 = 57
⎪⎪ 1
⎨− x1 + x3 = 129
⎪ 4
⎪ x1 , x 2 , x3 ≥ 0
⎪⎩
Calculele fazei a II−a sunt trecute în Tabelul 4.13.
Tabelul 4.12
0 0 0 1 1 alegem min
xi
CVB VB VVB x1 x2 x3 x1a x 2a
y
ik
300
1 x1a 300 2 3 1 1 0 = 100
3
372
1 x 2a 372 1 2 2 0 1 = 186
2
100
2 1 1 = 300
0 x2 100 1 0 1
3 3 3
3
4 172
1 2 = 129
1 x 2a 172 − 0 3 − 1 4
3 3
3
3 1 1
0 x2 57 1 0 − 8
4 2 4
1 1 3
0 x3 129 − 0 1 − 24
4 2 4
Tabelul 4.13
5 4 6 alegem min
xi
CVB VB VVB x1 x2 x3
y
ik
3 228
4 x2 57 1 0 = 76
4 3
1
6 x3 129 − 0 1
4
4
5 x1 76 1 0
3
1
6 x3 148 0 1
3
(
⎧max b1 u1 + b2 u 2 + b3 u 3)
⎪ t 1
⎪ A11 u + A21 u + A31 u ≤ c1
t 2 t 3
⎪ t 1
⎨ A12 u + A22 u + A32 u = c 2
t 2 t 3
(4.44)
⎪ A t u1 + A t u 2 + A t u 3 ≤ c
⎪ 13 23 33 3
⎪⎩u1 ≥ 0, u 2 − arbitrar, u 3 ≤ 0
Duala dualei este chiar problema iniţială. De aceea, (4.20) şi (4.44) formează
un cuplu de probleme duale.
este următoarea problemă de programare liniară, care are tot forma canonică:
⎧max b ′u
⎪ t
⎨A u ≤ c . (4.48)
⎪u ≥ 0
⎩
Problemele (4.47) şi (4.48) formează un cuplu de probleme duale simetrice, în
timp ce problemele (4.45) şi (4.46) formează un cuplu de probleme duale
asimetrice.
− duala unei probleme mixte
⎧min c ′x
⎪⎪ A1 x ≥ b1
⎨ (4.49)
⎪ A2 x = b2
⎪⎩ x ≥ 0
este problema
⎧max(b1′u1 + b2′ u 2 )
⎪ t 1
⎨ A1 u + A2 u ≤ c
t 2
(4.50)
⎪u1 ≥ 0 , u 2 − arbitrar
⎩
− duala problemei de transport (4.8)-(4.11) este problema
⎧ ⎛ m n ⎞
⎪max⎜⎜ ∑ a i u i + ∑ b j v j ⎟⎟ ,
⎪⎪ ⎝ i =1 j =1 ⎠
⎨u i + v j ≤ c ij , 1≤ i ≤ m ; 1≤ j ≤ n , (4.51)
⎪u , v oarecare .
⎪ i j
⎪⎩
Această lemă arată că o soluţie admisibilă a oricăreia dintre cele două probleme
este o limită pentru valoarea funcţiei obiectiv a celeilalte probleme.
Corolarul 4.1 arată că dacă poate fi găsită o pereche de soluţii admisibile care
să producă aceeaşi valoare pentru funcţiile obiectiv ale problemelor (4.45) şi
(4.46), atunci acestea sunt amândouă optime.
Teorema fundamentală a dualităţii. Dacă una dintre problemele (4.45) sau (4.46)
are o soluţie optimă finită, atunci şi cealaltă are soluţie optimă finită şi valorile
corespunzătoare ale funcţiilor obiectiv sunt egale. Dacă una dintre cele două
probleme are optim infinit, atunci cealaltă problemă nu are nici o soluţie admisibilă.
Demonstraţie. A doua afirmaţie este o consecinţă a lemei slabe a dualităţii. Dacă
problema primală are optim infinit şi u este o soluţie admisibilă a problemei
duale, atunci în mod necesar u’ b≤ −M pentru un M suficient de mare, ceea ce
este imposibil.
Observăm că, deşi cele două probleme nu formează un cuplu de probleme
duale simetrice, pentru a demonstra prima afirmaţie este suficient să presupunem că
problema primală are o soluţie optimă finită şi apoi să arătăm că problema duală
are o soluţie cu aceeaşi valoare pentru funcţia obiectiv. Acest lucru este posibil
deoarece ambele probleme pot fi rescrise în formă standard şi rolurile celor două
probleme se pot inversa.
Să presupunem că problema (4.46) are o soluţie optimă z* finită. Considerăm
următoarea mulţime convexă în spaţiul Rm+1 :
{ }
C = (r , w ) r = tz * − c' x , w = tb − Ax , x ≥ 0, t ≥ 0 .
86 Modele şi algoritmi de optimizare
Se poate arăta că C este un con convex închis. Vom arăta că vectorul (1, 0,
…, 0) nu este în C.
x
Dacă w= t0b−Ax0 = 0 , unde t0>0 şi x0 ≥ 0 , atunci x = 0 este o soluţie
t0
admisibilă pentru problema (4.46) şi deci
r
= z * − c' x ≤ 0 ,
t0
ceea ce implică r≤0 (nu poate astfel să ia valoarea 1).
Dacă w= −Ax0 = 0 (t=0), unde x0 ≥ 0 şi c’x0 = −1 şi dacă x este o soluţie
admisibilă oarecare a problemei (4.46), atunci x+α x0 este o soluţie admisibilă
pentru problema (4.45) pentru orice α ≥ 0 şi dă valori din ce în ce mai mici pentru
funcţia obiectiv, pe măsură ce α creşte. Aceasta contrazice ipoteza existenţei unui
optim finit şi rezultă că un astfel de x0 nu există. Deci (1, 0,…, 0) nu aparţine lui
C.
Cum C este o mulţime convexă închisă, există un hiperplan care separă
vectorul (1,0,…,0) de C. Aşadar, există un vector nenul (s, u)∈Rm+1 şi o
constantă c astfel încât :
s < c = inf {sr + u' w (r , w ) ∈ C }.
C fiind con, rezultă că c≥0. Altfel, dacă ar exista (r,w)∈C astfel încât sr+u’w<0,
atunci α⋅(r,w) nu ar verifica inegalitatea hiperplanului pentru valori mari ale lui
α. Pe de altă parte, deoarece (0,0)∈C, trebuie ca să avem c≤0. Aşadar, c=0. Prin
urmare s<0 şi putem presupune, fără a restrânge generalitatea, că s = −1. Astfel
am demonstrat că există u∈Rm cu proprietatea
–r+u’w ≥ 0
pentru orice (r,w)∈C. Din definiţia lui C avem că
(c−u’A)x−tz*+tu’b ≥ 0
oricare ar fi x≥0 şi t≥0.
Alegând t=0 rezultă u’A≤c’, ceea ce înseamnă că u este o soluţie admisibilă
pentru problema duală.
Punând x=(0,0,…,0) şi t=1, obţinem că u’b ≥ z*. Din lema slabă a dualităţii
şi din corolarul său rezultă că u este o soluţie optimă a problemei duale.
Corolarul 4.2. Dacă într-un cuplu de probleme duale, una dintre probleme are un
program optim, atunci şi cealaltă problemă are un program optim şi valorile
optime ale funcţiilor obiectiv sunt egale.
Fie problema de programare liniară sub forma standard (4.45) şi duala sa (4.46)
şi x=(xB,0) o soluţie optimă de bază corespunzătoare bazei B , iar xB=B−1b şi
xS=0. Atunci vectorul costurilor relative
r = c ′B B −1 S − c ′S ≤ 0 ⇒ c ′B B −1 S ≤ c ′S .
Considerăm u = c ′B B −1 şi arătăm că acest u este soluţie a problemei duale:
[ ]
u ′A = [u ′B u ′S ] = c ′B c ′B B −1 S ≤ [c ′B c ′S ] = c ′ ⇒ u ′A ≤ c ′ ,
adică u’A este soluţie admisibilă pentru problema duală. Pe de altă parte
4. Programare liniară 87
u ′b = c ′B B −1 b = c ′B x
şi astfel valoarea funcţiei obiectiv a problemei duale este pentru acest u egală cu
valoarea funcţiei obiectiv a problemei primale. Atunci, din Corolarul 4.1 rezultă că
u este soluţia optimă a problemei duale. Am demonstrat următoarea teoremă.
Teorema 4.6. Dacă problema de programare standard are soluţie de bază optimă
corespunzătoare bazei B, atunci u ′ = c ′B B −1 este soluţie optimă a problemei
duale asociate. Valorile optime ale funcţiilor obiectiv corespunzătoare celor două
probleme asociate sunt egale.
{ }
Să notăm cu B− = i ∈ B x iB < 0 , B fiind o bază dual admisibilă. Dacă
B−≠φ atunci baza B este şi primal admisibilă şi x B = B −1 b este program optim al
problemei primale (Zidăroiu, 1983).
Teorema 4.7. Fie B o bază dual admisibilă pentru problema (4.45) şi B−≠φ. Dacă
(∃) i ∈ B− astfel încât y ijB ≥ 0 , (∀) j ∈ S atunci problema (4.45) nu are programe.
88 Modele şi algoritmi de optimizare
′
Demonstraţie. Fie u′B = c ′B B −1 programul dual asociat cu baza B− , a i linia de
rang i din matricea B−1 şi fie u(δ ) = u B − δ ⋅ α i , unde δ ≥ 0 . Atunci
u(δ ) ′a j = u′B a j − δ ⋅ α i′a j = z Bj − δ ⋅ y ijB ≤ z Bj ≤ c j pentru 1≤ j ≤ n . Aşadar,
A t u ≤ c . Însă u(δ ) ′b = u ′B b − δ ⋅ α i′b = z B − δ ⋅ x iB şi atunci lim u(δ ) ′ ⋅ b = +∞ ,
δ →∞
adică problema duală are optim infinit şi din Teorema fundamentală a dualităţii,
rezultă că şi problema primală are optim infinit.
∑λ
i =1
2
i ≠ 0 şi ∑λ a
i =1
i
i
+ λr b = 0 .
i≠r
∑ (λ )
n
i + ci λ r a i + λ r c r a r = 0 ,
i =1
i≠r
a i = Be i , i = 1, n , i ≠ r , rezultă că A = BE r (η ) , sau B −1 = E r (η ) E −1 .
4. Programare liniară 89
Teorema 4.8. Fie B o bază dual admisibilă pentru problema primală (4.45) şi
B−≠φ. Dacă pentru (∀) i ∈ B− , (∃) j ∈ S astfel încât y ijB < 0 şi alegem l∈B−
arbitrar, iar k∈S asfel încât să fie satisfăcută condiţia
⎧⎪ z Bj − c j ⎫⎪ z kB − c k
min ⎨ ⎬=
j yljB <0 ⎪
⎩ y lj ⎪⎭
B
y lkB
~
atunci matricea B obţinută din matricea B prin înlocuirea coloanei al cu
coloana ak este o bază dual admisibilă, iar programul dual asociat u B~ este cel
puţin la fel de bun ca uB,, adică u ′B~ b ≥ u ′B b .
~
Demonstraţie. B astfel obţinută este o bază (deoarece y lkB ≠ 0 şi se verifică
ipotezele Lemei substituţiei). Conform cu relaţiile (4.40) avem
y rjB
~
( ) (
z j − c j = z j − c j − z k − ck B , j ∈ S .
B B B
)
y lk
(∀) j ∈ S
~
B fiind o bază dual admisibilă, rezultă că z Bj − c j ≤ 0 pentru pentru
care y ≥ 0 .
B
lj
(∀) j ∈ S
~
Din definiţia lui k∈S rezultă că şi z Bj − c j ≤ 0 pentru pentru care
y < 0 . Pentru j=l avem
B
lj
~
(
z lB − c l = − z kB − c k )1 <0.
y lkB
(∀) j ∈ S~ , adică ~
~
Aşadar, z Bj − c j ≤ 0 are loc pentru B este o bază dual
admisibilă.
B
Algoritmul simplex dual explorează bazele dual admisibile ale problemei (4.46)
până la obţinerea unei baze dual admisibile care să fie şi primal admisibilă ( B −1b ≥ 0 ),
sau până la punerea în evidenţă a faptului că problema duală nu are programe.
În algoritmul simplex primal se obţine o succesiune de programe de bază
−1
( B b ≥ 0 ), iar în algoritmul simplex dual se obţine o succesiune de soluţii de bază
care nu sunt programe (B−1b nu are toate componentele nenegative).
Pentru o problemă de minimizare în algoritmul simplex funcţia obiectiv descreşte
spre minim, în timp ce în algoritmul simplex dual funcţia obiectiv creşte spre maxim.
De asemenea,
u ′b = u′b − ε xiB (4.56)
Pentru cuplul de probleme duale
4. Programare liniară 91
⎧min c ′x ⎧ max bu ′
⎪ ⎪ t
⎨ Ax = b ⎨ A u≤c
⎪ x≥0 ⎪u arbitrar
⎩ ⎩
algoritmul simplex dual constă din următorii paşi.
valoarea totală a resurselor consumate pentru realizarea unei unităţi din sortimentul j.
Tabelul 4.14
4. Programare liniară 93
3 4 5 0 0 alegem min
zj −cj
CVB VB VVB x1 x2 x3 x4 x5 min
yij <0 y ij
0 x4 −5 −1 −2 −3 1 0
−3 −4 −5
0 x5 −6 −2 −2 −1 0 1 , ,
− 2 − 2 −1
valoarea
funcţiei 0 −3 −4 −5 0 0
obiectiv z
5 1
0 x4 −2 0 −1 − 1 −
2 2
1 1
3 x1 3 1 1 0 −
2 2
7 1
valoarea − −
7 3 −1 2, 2
funcţiei 9 0 −1 − 0 − ,
2 2 −1 5 1
obiectiv z − −
2 2
5 1
4 x2 2 0 1 −1
2 2
3 x1 1 1 0 −2 1 −1
Valoarea
funcţiei 11 0 0 −1 −1 −1
obiectiv z
Dacă toţi coeficienţii funcţiei obiectiv sunt nenegativi, atunci variabilele ecart
formează o soluţie de bază dual admisibilă, deoarece în acest caz
zi−ci= −ci ≤ 0.
Dacă nu toţi coeficienţii funcţiei obiectiv sunt nenegativi, se introduce o
restricţie nouă (Maliţa şi Zidăroiu, 1971)
x n +1 + xν 1 + xν 2 + ... + xν k = M ,
cu M suficient de mare, xn+1 o nouă variabilă, iar xν r , 1 ≤ r ≤ k , fiind
variabilele care corespund coeficienţilor cν r < 0 .
{ }
Dacă cν f = max c j c j < 0 , se înlocuieşte xν f din restricţia suplimentară
în funcţia obiectiv. Se obţine o mulţime de n variabile (xn+1 înlocuieşte xν f )
astfel încât toţi coeficienţii funcţiei obiectiv să fie nenegativi şi numărul restricţiilor
a crescut cu o unitate.
Exemplu
⎧min(− x 3 − 2 x 4 + x5 )
⎪ x + 3x + x − x = −4
⎪ 1 3 4 5
⎨
⎪ x 2 − x3 − 4 x 4 + x5 = 1
⎪⎩ x i ≥ 0 , 1 ≤ i ≤ 5
x1, x2 formează o bază care nu este primal admisibilă pentru că x1= − 4 . Pentru a
face pozitivi toţi coeficienţii funcţiei obiectiv, introducem relaţia suplimentară
{ }
x 6 + x 3 + x 4 = M . Atunci cν f = max c j = c 4 = −2 şi x4=M−x3−x6. Se obţine o
j c j <0
⎧min(−2 M + x 3 + x 5 + 2 x 6 )
⎪
⎪⎪ x1 + 2 x 3 − x 5 − x 6 = −4 − M
⎨ x 2 + 3x3 + x5 + 4 x 6 = 1 + 4M
⎪ x3 + x 4 + x 6 = M
⎪
⎪⎩ x i ≥ 0 , 1 ≤ i ≤ 6
unde M este suficient de mare astfel încât –4–M < 0 . Se obţine o soluţie dual
admisibiă x1= –4–M , x2 = 1+4M , x4 = M .
1. Într-o staţie de betoane se pot produce 3 tipuri de betoane (B150, B200, B300).
Staţia este organizată astfel încât fiecare betonieră poate produce orice marcă de
betoane, capacitatea zilnică maximă a staţiei este de 600 m3 . Betonul se transportă
cu ajutorul a 20 de autobetoniere de 5 m3 capacitate fiecare, duratele ciclurilor de
transport pentru cele 3 mărci de betoane fiind de 0.1 ; 0.2 şi 0.1 zile respectiv.
Consumurile normate de ciment pe cele trei mărci de beton sunt respectiv 200, 300
şi 400 kg/m3 . Staţia este aprovizionată zilnic cu o cantitate de 180 tone de ciment .
Ca urmare a organizării staţiei se obţin următoarele economii pe mărci de beton: 1;
1.2 şi 0.8 u.m. / m3 .
Se cere găsirea soluţiei care aduce maximum de profit staţiei, ştiind că se cere
beton în cantităţi mai mari decât posibilităţile de preparare.
Rezolvare
a) Modelarea problemei
Notăm cu x1 , x2 , x3 , cantităţile de beton din fiecare marcă ce se cer a fi
determinate astfel încât funcţia obiectiv
z = f(x1 , x2 , x3 ) = 1·x1 + 1.2·x2 + 0.8·x3 ,
să fie maximă sub restricţiile
x1 + x2 + x3 ≤ 600 (nu se poate depăşi capacitatea de producţie a staţiei)
0.1·x1 +0.2·x2 +0.1·x3 ≤ 20·5 (nu se poate depăşi capacitatea zilnică de
transport)
200·x1 +300·x2 + 400·x3 ≤ 600 (nu se poate depăşi cantitatea de ciment cu
care este aprovizionată zilnic staţia)
S-a obţinut următoarea problemă de programare liniară:
⎨ 1x + 2 x 2 + x 3 ≤ 1000 ⎨ 1x + 2 x 2 + x 3 + x 5 = 1000
⎪2 x + 3x + 4 x ≤ 1800 ⎪2 x + 3x + 4 x + x = 1800
⎪ 1 2 3
⎪ 1 2 3 6
⎪⎩ x i ≥ 0 , i = 1, 2, 3 ⎪⎩ x i ≥ 0 , i = 1,6
Tabelul 4.15
Tip produs
P1 P2 P3 Disponibil
Rezerve
F 2 3 2 15
B 1 2 3 12
Profit 1.5 4 3
care conţine şi consumurile din aceste rezerve la unitatea de produs pentru fiecare
tip, precum şi beneficiile aduse de o unitate de fiecare tip de produs. Datorită
condiţiilor impuse de stocare întreaga producţie nu trebuie să depăşească 8 unităţi.
Să se determine planul optim de producţie care în condiţiile date să dea un
profit total maxim pe secţie.
Tabelul 4.16
Materie primă Nr. necesar de
P SB D C
Stand panouri
S1 1 1 0 1 2
S2 1 2 1 0 4
S3 0 1 1 1 3
Cheltuieli de muncă 6 8 12 10
Tabelul 4.17
Produs
P1 P2 P3 P4 P5 P6 P7
Materie
M1 3 4 2 3 5 2 3
M2 5 3 1 4 2 4 3
Profit 6 5 2 6 6 5 6
Datorită unei cereri mari de produse P1 , P2 s-a propus ca măcar 25% din
întreaga producţie a secţiei să fie reprezentată de aceste produse. Să se determine
un plan de producţie care să respecte condiţiile impuse şi care să aducă un profit
total maxim în secţia respectivă.
R. Trebuie rezolvată următoarea problemă de programare liniară:
max f = max{6x1+5x2+2x3+6x4+6x5+5x6+6x7}
98 Modele şi algoritmi de optimizare
⎧3 x1 + 4 x 2 + 2 x 3 + 3x 4 + 5 x 5 + 2 x 6 + 3x 7 ≤ 200
⎪5 x + 3 x + x + 4 x + 2 x + 4 x + 3 x ≤ 300
⎪ 1 2 3 4 5 6 7
⎨
⎪ − 3 x1 − 3 x 2 + x 3 + x 4 + x 5 + x 6 + x 7 ≤ 0
⎪⎩ x i ≥ 0 , i = 1,7
Se obţine max f =430.77 pentru
x1=19.23 ; x2= x3= x4= x5=0 ; x2=30.77 ; x2=26.92 .
Tabelul 4.18
Aliment A1 A2 A3 Necesar
Substanţă
S1 4 3 2 24
S1 5 7 2 35
S1 1 5 4 40
Preţ 8 7 5
⎪3 x 2 + 4 x 4 ≥ 25
⎪
⎨5 x1 + 3x 3 + x 4 ≥ 25
⎪x ≥ 3
⎪ 1
⎪x2 ≥ 2
⎪
⎩ x i ≥ 0 , i = 1,4 .
Pentru a reduce numărul restricţiilor problemei liniare obţinute se poate face
schimbarea de variabile y1 = x1−3 , y2 = x2−2 , y3 = x3 , y4 = x4 .
Se obţine problema
min g =min {6y1+3y2+4y3+5y4+24}
⎧3 y1 + 2 y 2 + y 3 + 3 y 4 ≥ 15
⎪4 y + 3 y + y ≥ 18
⎪⎪ 1 3 4
⎨3 y 2 + 4 y 4 ≥ 19 .
⎪5 y + 3 y + y ≥ 10
⎪ 1 3 4
⎪⎩ y i ≥ 0 , i = 1,4
După aducerea la forma standard, se aplică metoda în două faze şi, după
revenirea la variabilele xi , se obţine soluţia:
min f =65.416 , pentru x1=3 , x2=2 , x3=4.416 , x4=4.75 .
100 Modele şi algoritmi de optimizare
7. O întreprindere doreşte să producă un nou aliaj format din 30% metal A şi 70%
metal B. Pentru aceasta are la dispoziţie alte 5 aliaje ale căror preţuri şi compoziţii
sunt date în Tabelul 4.20.
Tabelul 4.20
Aliaj 1 2 3 4 5
1 2 5 7
%A 95
0 5 0 5
9 7 5 2
%B 5
0 5 0 5
Preţ/kg 5 4 3 2 1.5
Aliajul dorit va fi produs prin combinarea unor cantităţi din celelalte 5 aliaje. Să se
determine cantităţile necesare realizării noului aliaj cu cost minim.
care are soluţia: x1=0 , x2=0.9 , x3=0 , x4=1 , x5=0 , iar valoarea funcţiei obiectiv
este min f = 3.8 .
8. O rafinărie de petrol are două surse de aprovizionare cu petrol brut: petrol brut
uşor la 35$/baril şi petrol brut greu la 30 $/baril. Rafinăria produce benzină, petrol
lampant şi benzină superioară, obţinând dintr-un baril de petrol brut cantităţile din
Tabelul 4.21.
Tabelul 4.21
Produs finit Petrol Benzină
Benzină
Materie primă lampant superioară
Rafinăria s-a angajat să producă 900 000 barili de benzină, 800 000 barili de petrol
lampant şi 500 000 barili de benzină superioară. Ce cantităţi de petrol brut uşor şi
greu trebuie achiziţionate pentru a se realiza angajamentul cu un cost minim?
9. O firmă produce cinci tipuri de piese de schimb pentru automobile. Fiecare piesă
este turnată în oţel la turnătorie şi apoi este trimisă la secţia de finisaj. Numărul de
ore muncă necesare pentru 100 de unităţi din fiecare tip de piesă în cele două secţii
sunt date în Tabelul 4.22.
Tabelul 4.22
Tip piesă 1 2 3 4 5
Secţie
Turnătorie 2 1 3 3 1
Finisaj 3 2 2 1 1
Profit / 100 unităţi 3 2 4 2 1
0 0 0 5 0
rezultă că una dintre restricţii este redundantă. Orice restricţie se poate exprima în
funcţie de celelalte m+n−1 rămase.
∑ xij = ai ;
j =1
∑x
i =1
ij = b j ; x ij ≥ 0
(
c ij − u i − v j ≥ 0 ; x ij c ij − u i − v j = 0. )
(rezultă din Teorema ecarturilor complementare).
Definiţia 5.1. O matrice pătratică se numeşte triunghiulară dacă prin permutări ale
liniilor şi coloanelor sale poate fi pusă sub forma unei matrice inferior triunghiulară.
Dacă această procedură poate fi continuată până când toate liniile au fost
eliminate, atunci matricea este triunghiulară. Ea poate fi pusă sub forma inferior
triunghiulară prin aranjarea liniilor şi coloanelor în ordinea în care au fost
determinate prin procedura de mai sus.
Corolar 5.1. Dacă sumele liniilor şi coloanelor unei probleme de transport sunt
întregi, atunci variabilele de bază în orice soluţie de bază sunt întregi.
Corolar 5.2. Dacă toate costurile unitare din problema de transport sunt întregi,
atunci, dând o valoare întreagă la un multiplicator oarecare, multiplicatorii
simplex asociaţi cu orice bază sunt întregi.
Teorema 5.4. Fie B o bază extrasă din A (după ignorarea unei linii) şi fie d o
coloană a lui A care nu este inclusă în B. Atunci, componentele vectorului
y = B −1 d sunt fie − 1 , 0 sau +1.
Demonstraţie. Fie y soluţia sistemului By=d. Atunci, y este reprezentarea lui d
în baza B . Acest sistem de ecuaţii poate fi rezolvat cu regula lui Cramer
det B k
yk = ,
det B
unde Bk este matricea obţinută prin înlocuirea în matricea B a coloanei k cu
coloana d . Atât B cât şi Bk sunt submatrice ale lui A. Matricea B poate fi
pusă sub forma triunghiulară cu toate elementele diagonalei egale cu +1. Atunci,
detB=+1 sau − 1 , după cum liniile sau coloanele au fost permutate. Analog
detBk=+1 , 0 sau − 1 . Concluzionăm că fiecare componentă a lui y este fie 0, +1
sau − 1 .
Din Teorema 5.4 rezultă că atunci când o nouă variabilă este adăugată la
soluţie la un nivel unitar, variabilele de bază curente se vor schimba cu +1, − 1 sau
0. Dacă noua variabilă are valoarea θ , atunci, corespunzător, variabilele de bază
se vor schimba cu +θ, −θ, sau 0. Este, aşadar, necesar să determinăm semnul
schimbării fiecărei variabile de bază.
5. Problema de transport 107
costului minim a lui H. S. Houthakker (se selectează la fiecare pas celula (i,j)
corespunzătoare costului minim cij ).
5.4. Exemplu
Tabelul 5.1
Bloc
Staţie B1 B2 B3 B4 Disponibil ( ai )
betoane
S1 8 3 5 2 10
S2 4 1 6 7 15
S3 1 9 4 3 25
Necesar (bj) 5 10 20 15
Rezolvare
a) Modelarea problemei
multiplicatorii ⎧ 3 4
v2 → ⎪ 12
x + x 22 + x 32 = 10
⎪
v3 → ⎪ x13 + x23 + x33 = 20
v4 → ⎪ x14 + x24 + x34 = 15
⎪
⎪⎩ xij ≥ 0 , 1 ≤ i ≤ 3 , 1 ≤ j ≤ 4
110 Modele şi algoritmi de optimizare
Matricea restricţiilor
⎛1 1 1 1 0 0 0 0 0 0 0 0⎞
⎜ ⎟
⎜0 0 0 0 1 1 1 1 0 0 0 0⎟
⎜0 0 0 0 0 0 0 0 1 1 1 1⎟
⎜ ⎟
A = ⎜1 0 0 0 1 0 0 0 1 0 0 0⎟
⎜ ⎟
⎜0 1 0 0 0 1 0 0 0 1 0 0⎟
⎜0 0 1 0 0 0 1 0 0 0 1 0⎟
⎜ ⎟
⎝0 0 0 1 0 0 0 1 0 0 0 1⎠
Tabelul 5.2
Bloc
Staţie B1 B2 B3 B4 Disponibil( ai )
betoane
S1 5 5 10 5
S2 5 10 15 10
S3 10 15 25 15
Necesar (bj) 5 10 5 20 10 15
⎛1 1 0 0 0 0⎞
⎜ ⎟
⎜0 0 1 1 0 0⎟
⎜0 0 0 0 1 1⎟
B=⎜ ⎟
⎜1 0 0 0 0 0⎟
⎜ ⎟
⎜0 1 1 0 0 0⎟
⎜0 0 ⎟⎠
⎝ 0 0 1 1
c) Algoritmul de transport
Iteraţia I
Pas 1. Începem algoritmul cu soluţia de bază obţinută în etapa precedentă. Se
consideră v4=0 şi se rezolvă sistemul
λ ′B = c ′B ⇒ λ = ( B T ) −1 c B , unde c ′B =(8 3 1 6 4 3)’ ,
′ ′
rezultând λ ′ = (u1 u 2 u 3 v1 v 2 v 3 ) = (7 5 3 1 − 4 1) .
Obţinem pentru celulele nebazice coeficienţii de cost redus, α ij = u i + v j − c ij ,
(∀) (i, j ) ∈ S
valorile:
α13=u1+v3−c13=7+1−5=3; α14=u1+v4−c14=0+7−2=5; α21=u2+v1−c21=−5+1−4=2;
α24=u2+v4−c24=5−7=−2; α31=u3+v1−c31=3+1−1=3; α32=u3+v2−c32=3−4−9=−10.
Cum nu toţi αij ≤ 0 , (∀) (i, j ) ∈ S , continuăm cu determinarea celulei care intră în
bază α sk = max{α ij (i,j )∈ S } = α 14 = 5 .
α ij ≥ 0
′ ′
y = − B −1 d = − B −1 (1 0 0 0 0 0 ) = (0 − 1 1 − 1 1 − 1)
{
C1 = (1,4) , (1,2) , (2,2 ) , (2,3) , (3,3) , (3,4 ) , (1,4) . }
Se determină celula care iese din baza B1 cu criteriul
x i0 j o = min { xij }= x12 = 5
(i , j )∈{ (1, 2 ) , (2 , 3 ) , (3, 4 )}
(minimul s-a luat după toate celulele de ordin par (poziţiile cu semn minus) din
ciclul C1) .
~
Pas 3. Aşadar, iese din bază celula (1,2) şi se obţine baza B1 cu celulele:
~
B1 = { (1,1) , (1,4 ) , (2 ,2) , (2,3) , (3,3) , (3,4 ) } .
Se calculează
⎧ xij − xrt dacã celula (i,j ) este de rang par în ciclul C1 , semnul −
⎪
xij = ⎨ xij + xrt dacã celula (i,j ) este de rang impar în ciclul C1 , semnul +
~
⎪x dacã celula (i,j )∉ C1
⎩ ij
şi se trec în Tabelul 5.4
112 Modele şi algoritmi de optimizare
Tabelul 5.4
8 3 5 2
5+0 5−5 5
4 1 6 7
5+5 10−5
1 9 4 3
10+5 15−5
′ ′
λ ′ = (u1 u 2 u 3 v1 v 2 v3 ) = (2 5 3 6 − 4 1) ,
şi obţinem pentru celulele nebazice coeficienţii de cost redus,
α12=u1+v2−c12=2−4−3=−5; α13=u1+v3−c13=2+1−5=−2; α21=u2+v1−c21=5+6−4=7
α24=u2+v4−c24=5−7=−2; α31=u3+v1−c31=3+6−1=8; α32=u3+v2−c32=3−4−9=−10.
Deoarece nu toţi αij ≤ 0 , (∀)(i, j ) ∈ S 1 , continuăm cu determinarea celulei care
intră în bază α sk = max{α ij (i,j )∈ S 1 } = α 31 = 8 .
α ij ≥ 0
10 5
1 9 4 3
5 15 10−5
′ ′
λ ′ = (u1 u 2 u 3 v1 v 2 v3 ) = (2 5 3 − 2 − 4 1) ,
şi obţinem pentru celulele nebazice coeficienţii de cost redus,
α11=u1+v1−c11=2−2−8=−8; α12=u1+v2−c12=2−4−3=−5; α31=u3+v1−c31=2+1−5=−2;
α21=u2+v1−c21=5−2−4=−1; α24=u2+v4−c24=5−7=−2; α32=u3+v2−c32=3−4−9=−10.
Deoarece αij ≤ 0 , (∀) (i, j ) ∈ S 2 , soluţia x14=10 , x22=10 , x23=5 , x31=5 ,
x33=15 , x34=5 este optimă, dă pentru funcţia obiectiv valoarea f=140 şi algoritmul
se opreşte.
Figura 5.1
Figura 5.2
Figura 5.3
În celula D3 introducem funcţia de optimizat D3 =C7*B13+C8*B14+
5. Problema de transport 115
C9*B15+D7*D13+D8*D14+D9*D15+E7*F13+E8*F14+E9*F15+F7*H13+F8
*H14+F9*H15. Celulele cu necunoscutele problemei sunt B13−B15, D13−D15,
F13−F15 şi H13−H15. Celulele B18−B24 conţin restricţiile problemei conform cu
comentariile din celulele A18−A24, apoi se adaugă condiţiile de nenegativitate. De
exemplu, celula B18 conţine =B13+D13+F13+H13, având în vedere cum sunt
introduse datele problemei. Analog celelalte celule (B19−B24). După apăsarea
butonului Solve se obţin rezultatele problemei şi rapoartele ca în Tabelele 5.6−5.8.
Remarcăm că rezultatele sunt aceleaşi cu cele obţinute cu Management Scientist. .........
Tabelul 5.6
Microsoft Excel 10.0 Answer Report
Worksheet: [Problema de transport.xls]Sheet1
Report Created: 6/24/2002 11:39:27 PM
Tabelul 5.7
Microsoft Excel 10.0 Sensitivity Report
Worksheet: [Problema de transport.xls]Sheet1
Report Created: 7/10/2002 11:30:45 PM
Adjustable Cells
Final Reduced Objective Allowable Allowable
Cell Name Value Cost Coefficient Increase Decrease
x11= Solutia
$B$13 problemei 0 8 8 1E+30 8
x21= Solutia
$B$14 problemei 0 1.00 4.00 1E+30 1.00
x31= Solutia
$B$15 problemei 5 0 1 1.00 1E+30
$D$13 x12= B2 0 5 3 1E+30 5
$D$14 x22= B2 10 0 1 5 1E+30
$D$15 x32= B2 0 10 9 1E+30 10
$F$13 x13= B4 0 2 5 1E+30 2
$F$14 x23= B4 5 0 6 1.00 5
$F$15 x33= B4 15 0 4 2 1.00
$H$13 X14= 10 0 2 2 1E+30
$H$14 X24= 0 2 7 1E+30 2
$H$15 X34= 5 0 3 2 2
Constraints
Final Shadow Constraint Allowable Allowable
Cell Name Value Price R.H. Side Increase Decrease
x11+x12+x13+x14=
Restrictiile
$B$18 problemei 10 −3 10 5 0
5. Problema de transport 117
x21+x22+x23+x24=
Restrictiile
$B$19 problemei 15 0 15 0 1E+30
x31+x32+x33+x34=
Restrictiile
$B$20 problemei 25 −2 25 5 0
x11+x21+x31=
Restrictiile
$B$21 problemei 5 3 5 0 5
x12+x22+x32=
Restrictiile
$B$22 problemei 10 1 10 0 10
x13+x23+x33=
Restrictiile
$B$23 problemei 20 6 20 0 5
x14+x24+x34=
Restrictiile
$B$24 problemei 15 5 15 0 5
Tabelul 5.8
Microsoft Excel 10.0 Limits Report
Worksheet: [Problema de transport.xls]Limits Report 1
Report Created: 7/11/2002 8:23:41 AM
Target
Cell Name Value
$D$3 Functia de optimizat 140
Adjustable Lower Target Upper Target
Cell Name Value Limit Result Limit Result
x11= Solutia
$B$13 problemei 0 0 140 0 140
x21= Solutia
$B$14 problemei 0 0 140 0 140
x31= Solutia
$B$15 problemei 5 5 140 5 140
$D$13 x12= B2 0 0 140 0 140
$D$14 x22= B2 10 10 140 10 140
$D$15 x32= B2 0 0 140 0 140
$F$13 x13= B4 0 0 140 0 140
$F$14 x23= B4 5 5 140 5 140
118 Modele şi algoritmi de optimizare
Teorema 5.5. Orice soluţie de bază admisibilă pentru problema de atribuire (5.1)
are toate componentele, xij , egale fie cu 0, fie cu 1.
Demonstraţie. Din corolarul 5.1 toate variabilele de bază în orice soluţie de bază
sunt întregi. Variabilele xij nu pot fi mai mari decât 1 şi cum sunt nenegative, nu
pot lua decât valorile 0 sau 1 .
Astfel, sunt cel mult n variabile de bază care au valoarea 1, deoarece există
cel mult un singur 1 pe fiecare linie şi fiecare coloană. Într-o problemă de transport
de această dimensiune o soluţie de bază nedegenerată ar avea 2n−1 componente
pozitive. Problema atribuirii sarcinilor are soluţia admisibilă de bază puternic
degenerată având n−1 componente de bază nule.
Pentru rezolvarea problemei de atribuire se poate folosi algoritmul de transport
sau algoritmul primal−dual pentru problema de programare liniară.
2. O firmă textilă are două fabrici, doi furnizori de materii prime şi trei centre de
desfacere. Costurile de transport pentru o tonă de încărcătură între furnizor şi
fabrici şi între fabrici şi centrele de desfacere sunt date în Tabelul 5.10 .
Tabelul 5.10
Fabrică Centru de
A B desfacere 1 2 3
Furnizor Fabrică
1 1 1.5 A 4 2 1
2 2 1.5 B 3 4 2
3. O firmă are nevoie să angajeze în trei posturi vacante trei persoane cu calificări
diferite. Pentru aceste posturi sunt trei pretendenţi, fiecare putând ocupa oricare loc
vacant cu acelaşi salariu, dar datorită deosebirii de aptitudini, studii şi experienţă,
utilitatea fiecărui candidat pentru firmă depinde de postul pe care este angajat.
Veniturile anuale ale firmei de pe urma fiecărui candidat, angajat pe unul din cele
trei posturi vacante, sunt trecute în Tabelul 5.11.
5. Problema de transport 121
Tabelul 5.11
Funcţie
1 2 3
Candidat
1 5 4 7
2 6 7 3
3 8 11 2
4. Un centru de proiectare are de realizat trei contracte pentru trei beneficiari (câte
unul pentru fiecare beneficiar în parte) şi timpii necesari realizării acestor proiecte
(în săptămâni) pentru cele trei echipe de proiectare sunt trecuţi în Tabelul 5.12.
Tabelul 5.12
Client
Echipa de proiectare
A B C
1 10 15 9
2 9 18 5
3 6 14 3
Dacă fiecărei echipe i se atribuie un singur proiect, care va fi cea mai eficientă
atribuire în sensul celui mai mic număr de săptămâni necesare pentru realizarea
celor trei proiecte?
5. O firmă care organizează mese festive trebuie să servească în fiecare seară câte
un banchet, timp de 4 zile. Pentru fiecare zi i sunt necesare ri feţe de mese curate,
r1=100 , r2=130 , r3=150 , r4=140 . Feţele de mese murdare se trimit la curăţătorie,
care le poate spăla rapid (de pe o zi pe alta) cu un preţ c1=6 u.m., sau normal (la
două zile), cu un preţ c2=4 u.m. Firma poate şi să cumpere feţe de mese la un preţ
c0=12 . Stocul iniţial de feţe de mese este s=200. Să se determine costul minim
pentru a asigura feţe de mese curate în fiecare seară.
6. PROGRAMARE PĂTRATICĂ
⎪ ⎣ j =1 j =1 ⎦
⎪m
⎨∑ a ij ⋅ x j ≤ bi 1≤ i ≤ m (6.2)
⎪ j =1
⎪ x j ≥ 0 j = 1,n
⎪
⎩
Funcţia obiectiv a acestui model este o formă pătratică. Modelul (6.2) poate fi
extins în sensul că şi costul unitar de producţie di poate depinde de nivelul de
′
producţie xj , astfel d j = d j − γ j ⋅ x j cu γ j ≥ 0 , iar preţul unitar de vânzare yj
depinde de volumul de producţie constituit din mai multe produse
n
y j = β j − ∑ α jk ⋅ x k .
k =1
6. Programare pătratică 123
j =1
⎪min ∑ b j ⋅ ⎜⎜ y j − ∑ a i ⋅ xij ⎟⎟
⎪ ⎝ ⎠
⎨ n j =1 i =1 .
⎪ α ⋅ a ≤ c , 1 ≤ r ≤ p sau a ≤ a ≤ a
⎪⎩∑
- +
ri i r i i i
i =1
unde: x=(x1, ..., xn)’ , C ∈ M n ,n (R ) şi Cij=Cji (în caz contrar, adică dacă Cij≠Cji,
(C ij + C ji )
n n n n
1
definim d ij =
2
şi atunci ∑∑ C
i =1 j =1
ij ⋅ xi ⋅ x j = ∑∑ d ij ⋅ xi ⋅ x j
i =1 j =1
şi
ştie că funcţia Q(x) se poate pune sub formă de sumă algebrică de pătrate de
expresii liniare, omogene şi independente (reducerea la forma canonică a formelor
pătratice cu metoda lui Gauss). Dacă notăm cu n+ şi cu n− numărul pătratelor care
au coeficienţii pozitivi şi respectiv negativi, atunci avem n+ + n− ≤ n .
Definiţia 6.2. Q(x) se numeşte formă pătratică pozitiv semidefinită dacă n+<n şi
n−=0 .
Definiţia 6.4. Q(x) se numeşte formă pătratică negativ semidefinită dacă n−< n şi
n+ = 0 .
Propoziţia 6.1. Dacă Q( x ) = x ′Cx este pozitiv semidefinită, atunci Q(x)=0 dacă
şi numai dacă Cx=0 .
Demonstraţie. Arătăm că Q(x)=0 implică Cx=0 . Fie (∀) y ∈ R n şi (∀)λ ∈ R ,
atunci
Q ( y + λx ) = ( y + λx ) ′C ( y + λx ) = y ′Cy + 2λy ′Cx + λ 2 x ′Cx = y ′Cy + 2λy ′Cx ≥ 0 .
Cum inegalitatea are loc pentru (∀)λ ∈ R , rezultă că y ′Cx = 0 . Dar cum
această egalitate are loc pentru orice y , rezultă că Cx=0.
Implicaţia inversă este evidentă !
Proprietăţi
1. Dacă Q este pozitiv definită, atunci
det(C)>0 şi Q(x)>0, (∀)x ∈ R n \ {0} , iar Q(0)=0 .
2. Dacă Q este pozitiv semidefinită, atunci
det(C)=0 şi Q(x)=0,
pentru o mulţime de vectori x≠0 .
3. Dacă Q este negativ definită, atunci
det(C)<0 şi Q(x)<0, (∀)x ∈ R n \ {0} , iar Q(0)=0
4. Dacă Q este negativ semidefinită, atunci
det(C)=0 şi Q(x)=0,
pentru o mulţime de vectori x≠0 .
Demonstraţie
n
1. Q fiind pozitiv definită se poate reduce la forma canonică Q (ξ ) = ∑ λ i ξ i2 cu
i =1
n
λi > 0 , i = 1, n . Atunci det(C ) = ∏ λi > 0 . Afirmaţia a doua rezultă din
i =1
Q[λ ⋅ x + (1 − λ ) ⋅ y ] ≤ λ ⋅ Q( x ) + (1 − λ ) ⋅ Q( y ) .
Prin urmare, orice formă pătratică pozitiv definită este o funcţie strict convexă şi
orice formă pătratică pozitiv semidefinită este o funcţie convexă.
⎪
⎨∑ aij ⋅ x j ≤ bi 1 ≤ i ≤ m
⎪ j =1
⎪ x j ≥ 0 1 ≤ j ≤ n (restricþii de semn)
⎪
⎩
(6.4)
sau matriceal
⎧ ⎧1 ⎫
⎪min f ( x) = min ⎨ 2 x ′Cx + c ′x ⎬
⎪⎪ ⎩ ⎭
⎨ Ax ≤ b
⎪x ≥ 0
⎪
⎩⎪ x ∈ R , b ∈ R , A ∈ M mn (R ) , C ∈ M n (R )
n m
unde
1
f ( x) = x ′Cx + c ′x
2
este convexă. Numim această formă a problemei de programare pătratică forma
canonică. În inegalităţile (6.4), valorile bi sunt strict pozitive (dacă ar fi negative,
inegalităţile respective se înmulţesc cu –1).
(
Teorema 6.1. (Condiţiile Kuhn−Tucker). Vectorul x * = x1* , ..., x n* ) este soluţia
problemei de programare pătratică (6.4) dacă şi numai dacă există
( ) ( ) ( )
u * = u1* , ..., u m* , v * = v1* , ..., v n* şi y * = y1* , ..., y m* astfel încât
⎧n
⎪∑ aij x j + yi = b 1≤ i ≤ m
* *
⎪ jn=1
⎪ C x * − u * a − v * = −c
m
⎪∑ jk k ∑ i ij 1≤ j ≤ n
⎨ k =1
j j
i =1
⎪ x * ≥ 0 , u* ≥ 0 , v * ≥ 0 , y * ≥ 0 (6.5)
⎪n n
⎪∑ x*j v*j = 0 , ∑ u*i y*i = 0
⎪⎩ j =1 i =1
sau matriceal
128 Modele şi algoritmi de optimizare
⎧ Ax + y = b
⎪Cx - A t u - v = -c
⎪
⎨
⎪ x ′v = 0, u ′y = 0
⎪⎩ x * ≥ 0 , u * ≥ 0 , v * ≥ 0 , y * ≥ 0
Observaţia 6.2. yi sunt variabilele ecart care apar în Ax+y=b, vi sunt variabilele
ecart în C⋅x−ATu−v=−c .
Din condiţiile de nenegativitate rezultă că xjvj=0 şi uiyi=0 ,
1 ≤ j ≤ n , 1 ≤ i ≤ m , adică din cele 2⋅m+2⋅n necunoscute care apar în sistemul
(6.5) de m+n ecuaţii, interesează numai soluţiile nenegative, care au cel mult
m+n componente nenule, adică soluţiile admisibile de bază ale sistemului (6.5) .
Teorema 6.2. Problema (6.4’) admite soluţie optimă x* dacă şi numai dacă
(∃)u ∈ R m astfel încât
( )( ′
x* ≥ 0 ; Ax* = b ; c + Cx* − At u* ≤ 0 ; x* c + Cx* − At u = 0 . )
Demonstraţie. Din Teorema 6.1 rezultă că x* este soluţie a problemei (6.4’) dacă
şi numai dacă (∃) u* ∈ R m , astfel încât
′
x* ≥ 0 , ∇ u L(x* , u* ) = 0 , ∇ x L(x* , u* ) ≤ 0 , ( x * ) ∇ x L(x* , u* ) = 0 .
⎧ Ax * = b
⎪ *
⎨Cx − A u + v = -c
t * *
(6.7)
⎪ x * ≥ 0 , u* ≥ 0 ,
⎩
este incompatibil.
Demonstraţie. Presupunem că min f ( x ) = −∞ şi să arătăm că sistemul (6.7) este
incompatibil. Fie x∈ R . Prin absurd, presupunem că sistemul (6.7) are soluţia
(x*, u*, v*). Deoarece f este convexă avem
( )( ) (
′
)( ) ( ′
)(
′
f ( x ) − f ( x* ) ≥ ∇ x f ( x* ) x − x* = Cx* + c x − x* = At u* − v x − x* = )
( ) ( ) ( ) ( )
′ ′ ′
= u* Ax - v* x - u* Ax + v* x*
′
Dar
′
( )
Ax * = Ax = b şi v * x * ≥ 0 ,
de unde rezultă că
( ) ′
f ( x ) ≥ f ( x* ) - v * x ,
adică minf(x) nu poate fi - ∞ . Contradicţie!
Să arătăm că dacă sistemul (6.7) este incompatibil atunci minf(x)= – ∞.
Sistemul fiind incompatibil, rezultă că problema (6.4’) nu are soluţii. Da, cum
R≠φ, rezultă că min f ( x ) = −∞ .
⎛ x1 ⎞ ⎛v 1 ⎞
⎜ 2⎟ ⎜ ⎟
x = ⎜ x ⎟ , v = ⎜v 2 ⎟ .
⎜ 3⎟ ⎜ 3⎟
⎝x ⎠ ⎝v ⎠
⎪⎩ x, v, z ≥ 0 , x 3 = 0 , v 1 = 0
admite soluţie optimă (x*, v*, u*, z*) cu x*1>0 , v*3>0 , atunci există µ ∗ ∈ R n
Aµ * = 0 , Cµ * = 0 , µ * ≥ 0 , g ′z * = h′µ * .
2
astfel încât
Demonstraţie. Rearanjând restricţiile, problema (6.8) se poate pune sub
forma
130 Modele şi algoritmi de optimizare
min g ′z
⎧ ⎡ x1 ⎤
⎪ ⎢ 2⎥
⎪[A1 A2 A3 ] ⎢ x ⎥ = b
⎪ ⎢0⎥
⎪⎪ ⎣ ⎦
(6.9)
⎨⎛ C11 C12 C13 ⎞ ⎡ x ⎤ ⎡0⎤
1
⎪⎜ C ⎟⎢ 2 ⎥
C 22 C 23 ⎟ ⎢ x ⎥ − A u + ⎢⎢v 2 ⎥⎥ + Dz = h
⎪⎜ 21
t
⎪⎜⎝ C 31 C 32 C 33 ⎟⎠ ⎢⎣ 0 ⎥⎦ ⎢⎣v 3 ⎥⎦
⎪ 1 2 2 3
⎪⎩ x , x , v , v , z ≥ 0
Duala problemei (6.9) este problema de programare liniară
max {b′λ + h′µ }
⎧ At λ + C11
t
µ 1 + C 21
t
µ 2 + C 31
t
µ3 ≤ 0
⎪ t1
⎪ A2 λ + C12 µ + C 22 µ + C 33 µ ≤ 0
t 1 t 2 t 3
(6.10)
⎨ t
⎪D µ ≤ g
⎪ Aµ = 0 , µ 2 ≥ 0 , µ 3 ≥ 0 .
⎩
Din Teorema fundamentală a dualităţii (§4.13) există o soluţie optimă
( )
λ , µ ∗ pentru problema duală (6.10) astfel încât b ′λ ∗ + h′µ ∗ = g ′z * . Deoarece
∗
*1 *3
x , v > 0 , restricţiile corespunzătoare variabilelor x 1 , v 3 sunt verificate cu
egalitate de către soluţia optimă a problemei duale (din Teorema ecarturilor
complementare, §4.13), adică
⎧ A t λ ∗ + C t µ ∗1 + C t µ ∗ 2 = 0
⎪⎪ 1 11 21
⎨ A2 λ + C12 µ + C 22 µ ≤ 0
t ∗ t ∗1 t ∗2
(6.11)
⎪ Aµ ∗ = 0 , µ ∗ 2 ≥ 0 , µ ∗ 3 = 0 ,
⎪⎩
Înmulţind prima relaţie (6.11) cu µ ∗1 , iar pe cea de-a doua cu µ *3 ≥ 0 şi
adunându-le, avem
1 ′
( ) ( )
1 ′ 1 ′
µ ∗ A1t λ ∗ + µ ∗ C11t µ ∗ + µ ∗ C 21t µ ∗ +
1 2
( )
+ (µ ) A λ + (µ ) C + (µ ) C
′ ′ ′
∗2 ∗2
µ∗ µ∗ ≤ 0 .
t ∗ t 1 ∗2 t 2
2 12 22
Ţinem seama că Aµ ∗ = 0 şi atunci putem scrie relaţiile de mai sus sub forma
( ) ( )′ ⎤⎥⎛⎜⎜ CC
⎡ ∗1 ′ C12 ⎞⎛⎜ µ ∗ ⎞⎟
1
⎢µ µ∗ ⎟
2
2 ≤0.
11
⎣ ⎦⎝ 12 C 22 ⎟⎠⎜⎝ µ ∗ ⎟⎠
6. Programare pătratică 131
′
( )
Deoarece µ ∗ = 0 , relaţia de mai sus se mai poate scrie µ ∗ Cµ ∗ ≤ 0 . Cum C
3
′
( )
este pozitiv semidefinită, rezultă că µ ∗ Cµ ∗ = 0 , iar din Propoziţia 6.2 avem
Cµ ∗ = 0 . Relaţiile (6.11) devin A1t λ ∗ = 0 şi A2t λ ∗ ≤ 0 . Ţinem seama de aceste
relaţii în evaluarea produsului b ′λ şi avem
′ ′ ′
( ) ( ) ( )
b′λ = λ ∗ Ax * = λ ∗ A1 x * + λ ∗ A2 x * = λ ∗ A2 x * = 0 ,
1 2 2
Propoziţia 6.3. Dacă R ≠ φ , atunci problema (6.4’) are optim infinit dacă şi
numai dacă (∃)µ ∗ ∈ R n soluţie a sistemului
⎧ Aµ = 0
⎪Cµ ≤ 0
⎪
⎨ (6.12)
⎪c ′µ < 0
⎪⎩µ ≥ 0
Demonstraţie. Dacă min f ( x ) = −∞ , atunci sistemul (6.7) este incompatibil,
adică problema de programare liniară
⎧min e ′z
⎪ Ax = b
⎪⎪
⎨Cx − A u + v + Dz = -c
t
(6.13)
⎪ x≥0 , u≥0 ,
⎪
⎪⎩
⎧0 dacã i ≠ j
unde D = (d ij )1 ≤
⎪
, d ij = ⎨1 dacã i = j , ci ≤ 0 , iar e ′ = (1, ...,1) are optim
i, j≤n
⎪− 1 dacã i = j , c > 0
⎩ i
nenul. Fie (x*, v*, u *, z*) o soluţie optimă pentru (6.13). Sistemul (6.12) este
compatibil, aşa cum rezultă din Lema 6.1, în care luăm
g = e = (1,1,...,1) , h = -c , I 1 = I 3 = φ
şi ţinând seama că e’z>0.
Dacă (∃)µ ∗ ∈ R n soluţie a sistemului (6.12) şi x ∈R , atunci pentru
(∀)α ≥ 0 , astfel încât ( )
x + αµ * ≥ 0 avem A x + αµ * = Ax + αAµ * = b . De aici
rezultă că x + αµ ∈ R pentru (∀)α ≥ 0 . Calculăm
*
′
( ) ( )
f x + αµ * = f ( x ) + 2αx ′Cµ * + α 2 µ ∗ Cµ * + αc ′µ * = f ( x ) + αc ′µ *
şi pentru că c ′µ * < 0 , rezultă că f (x + αµ ) ⎯⎯⎯→ −∞ .
*
α →∞
132 Modele şi algoritmi de optimizare
Algoritmul lui Wolfe în forma scurtă constă din două etape. În etapa întâi se
rezolvă următoarea problemă de programare liniară (Ştefănescu, 1989):
{
⎧min z 1 + z 2 }
⎪
⎪ Ax = b
⎨ (6.14)
⎪Cx − A u + v + z − z = -c
t * 1 2
⎪ x, v, z 1 , z 2 ≥ 0
⎩
unde x, v, z1 , z 2 ∈ R n , iar u ∈ R m , împreună cu următoarea regulă
suplimentară:
Pentru (∀)i = 1, n , xi , vi nu pot fi simultan nenuli (6.15)
⎪ x, x , v, u , u , z , z ≥ 0
⎪ m−r
⎩ x, v, z , z ∈ R , x ∈ R , u , u ∈ R
1 2 r a 1 2 m
unde
⎛ x⎞
~
( )
A = A, e r +1 ,...e m , ~x = ⎜⎜ a ⎟⎟ ,
⎝x ⎠
6. Programare pătratică 133
respectând regula (6.15). Baza iniţială este baza canonică din Rm+n , iar soluţia de
bază iniţială este
⎧ ⎧bi 1 ≤ i ≤ r
⎪ xi = ⎨ ⎧⎪ z 1j = -c j , z 2j = 0 dacã c j ≤ 0 ,
⎨ ⎩0 r + 1 ≤ i ≤ m , ⎨ 1 (6.17)
⎪⎩ z j = 0 , z j = −c j dacã cj ≥ 0 .
2
⎪x a = b r ≤ i ≤ m
⎩ i i
Teorema 6.4
1. Dacă se realizează a) din Teorema 6.3, atunci problemma (6.4’) nu are
soluţii admisibile.
1 2
2. Dacă se realizează b) din Teorema 6.3, adică z * = z * = 0 , atunci x* este
soluţie optimă a problemei (6.4’).
( )
3. Dacă se realizează b) din Teorema 6.3 şi e ′ z 1 + z 2 > 0 , problema (6.4’)
are optim infinit.
1 2
4. Dacă se realizează c) din Teorema 6.3 şi dacă z * = z * = 0 , atunci x* este
soluţie optimă pentru problema (6.4’).
Demonstraţie. Dacă se realizează a) din Teorema 6.3, atunci sistemul
Ax = b , x ≥ 0 este incompatibil deoarece nu s-au eliminat în faza I toate
variabilele artificiale xa din bază. Dacă se realizează b) şi c) din Teorema 6.3,
rezultă că sistemul Ax = b , x ≥ 0 este compatibil şi astfel rezultă concluziile 2, 3
şi 4 şi demonstraţia se încheie.
Comentarii
1. Variabilele z i2 se introduc doar dacă ci>0.
2. La încheierea fazei întâi s-au eliminat toate variabilele artificiale xa . În
1 2
faza a doua nu se mai introduc variabilele z i* , z i* nebazice.
3. Nu se poate trage o concluzie în situaţia c) din Teorema 6.3, deoarece
regula (6.15) nu face parte din algoritmul simplex.
4. Dacă A are o bază unitară, faza I nu mai este necesară.
⎪ x, v, z ≥ 0
⎩
unde D = (d ii ` )1 ≤ i ≤ n este o matrice diagonală ale cărei elemente sunt date de relaţiile
⎧1 dacã zib1 este variabilã bazicã
⎪
d ii = ⎨− 1 dacã z ib 2 este variabilã bazicã ,
⎪0 altfel
⎩
pornind de la soluţia de bază (xb, vb, ub, zb) , unde
⎧ z b1 dacã z ib1 este variabilã de bazã
⎪
z ib = ⎨ z b 2 dacã zib 2 este variabilã de bazã
⎪0 altfel.
⎩
{ } { }
Fie I 1 = i x i* > 0 şi I 3 = i v i* > 0 , unde (x*, v*, u*, z*) este soluţia finală a
problemei (6.14’), obţinută cu algoritmul simplex modificat cu regula suplimentară
(6.15). Atunci (x*, v*, u*, z*) este soluţie optimă şi a problemei
⎧min ∑ z i
⎪ i
⎪⎪ Ax = b
⎨Cx − A t u + v + Dz = -c (6.14”)
⎪ 3
⎪x = 0 , v = 0
1
⎪⎩ x, v, z ≥ 0
Presupunem că (x , v*, u*, z*) nu este soluţie optimă a problemei (6.14’) şi
*
′
În Lema 6.1, luând g ′ = (1, ...,1) şi h = – c , obţinem existenţa vectorului
µ ∈ R n cu proprietăţile Aµ * = 0 , Cµ * = 0 , g ′z * = c ′µ * .
Din i) rezultă că g’z= 0 şi atunci z= 0 .
Din ii) şi Cµ*= 0 rezultă că µ*= 0 şi g’z= 0 şi atunci din nou z= 0 .
Problema (6.4) poate fi adusă la forma (6.4”), similară formei (6.4’), prin
introducerea variabilelor ecart w, astfel
⎧ ⎧ 1 ~ ~~ ~ ~ ⎫
⎪min ⎨ 2 x ′Cx + c ′x ⎬
⎪ ~ ⎩ ⎭
⎨ A x = b (6.4”)
⎪~x ≥0
⎪
⎩
⎛ x⎞ ⎛ c ⎞ ~ ⎛C 0⎞
unde: ~ x = ⎜⎜ ⎟⎟ ∈ R n+ m , c~ = ⎜⎜ ⎟⎟ , C = ⎜⎜ ⎟⎟ .
⎝w⎠ ⎝ 0⎠ ⎝ 0 0⎠
Adăugarea variabilelor ecart nu afectează faptul că matricea C din funcţia
obiectiv este pozitiv definită.
~ ~ ~
Din iii) C este pozitiv semidefinită şi aplicând Lema 6.1 pentru A , C
⎛ µ∗ ⎞
rezultă că există µ~ ∗ = ⎜⎜ ∗w ⎟⎟ cu Cµ~ * = 0 . De aici rezultă că Cµ*=0 şi, ca mai
⎝µ ⎠
sus, µ =0 şi g’z=0 şi atunci din nou z=0.
*
În toate cele trei situaţii soluţia (x*, v*, u*, z*) are z=0 şi teorema este
demonstrată.
Observaţia 6.3
a) Forma scurtă a algoritmului lui Wolfe se aplică atunci când se verifică
incluziunea
{ } {
µ ∈ R n Aµ = 0 , Cµ = 0 ⊆ µ ∈ R n c′µ = 0 } (6.18)
b) Incluziunea (6.18) are loc dacă se verifică unul din următoarele cazuri:
i) c=0 ,
ii) C este pozitiv definită,
[ ]
iii) Matricea C, A t are rangul n ,
iv) Sistemul Cx + At u = c are soluţii,
v) Problema standard (6.4’) poate fi scrisă sub forma canonică
⎧ ⎧1 ⎫
⎪min ⎨ 2 x ′C x + (c )′ x ⎬
* *
⎪⎪ * ⎩ * ⎭
⎨A x = b
⎪x ≥ 0
⎪
⎪⎩
*
cu C pozitiv definită.
136 Modele şi algoritmi de optimizare
Demostraţie
i) Incluziunea (6.18) este evidentă deoarece membrul drept coincide cu R n .
ii) şi iii) au membrul stâng format numai din vectorul nul şi atunci incluziunea
(6.18) este evidentă.
[ ]
iv) c este o combinaţie liniară a liniilor matricei C, A t şi incluziunea (6.18)
este evidentă.
v) Demonstraţia este dată în Teorema 6.5 .
⎜0 0 0 1 ⎟ 0 0 1
⎝ ⎠
6. Programare pătratică 137
⎨
⎪ x ≥ 0, v ≥ 0, z ≥ 0, z ≥ 0, w ≥ 0
1 2
⎪u oarecare
⎩
Pentru a avea o bază, acestor variabile li se atribuie valori astfel:
z 1j = −c j dacã c j ≤ 0 ; z 2j = 0 sau
z 2j = c j dacã c j ≥ 0 ; z 1j = 0 .
În soluţia de bază luăm: x =0 , v = 0 , u = 0, xa = b .
Pentru ca şi asupra lui u să existe condiţii de nenegativitate, îl desfacem în doi
vectori nenegativi astfel: u = u1−u2 (u corespunzând restricţiei cu egalitate, nu
are resţricii de semn).
Matriceal, restricţiile Kuhn−Tucker devin:
⎧ Ax + x a = b ⎛1 0 0⎞
⎜ ⎟
⎪
( )
⎨Cx − v + A u − u + Dz = −c , unde D = ⎜ 0 − 1 0 ⎟
t 1 2
⎪ x , v , u1 , u 2 , z 1 , z 2 , w ≥ 0 ⎜ 0 0 − 1⎟
⎩ ⎝ ⎠
Pe componente avem:
⎧ x1 − 2 x 2 + x3 + x a =4
⎪
⎪ x1 − v1 + u − u + z1 =2
1 2 1
⎪
⎨ x 2 − v 2 − 2u − 2u − z1 = −3 .
1 2 2
⎪− v + u 1 − u 2 − z 2 = −1
⎪ 3 2
⎪⎩ x, v, u , u , z , z , w ≥ 0
1 2 1 2
⎧ x1 − 2 x 2 + x 3 + x a =4
⎪
⎪ x1 − v1 + u1 − u1 + z1 =2
1 2 1
⎪
⎨− x 2 + v 2 + 2u 2 + 2u 2 + z1 =3
1 2 2
⎪v − u 1 + u 2 + z 2 =1
⎪ 3 3 3 2
⎪⎩ x , v , u1 , u 2 , z 1 , z 2 , x a ≥ 0 .
În această fază u = 0, v = 0, deci nu pot intra în bază. Calculele sunt date în
Tabelul 6.1 . Algoritmul simplex se opreşte cu min xa=0.
Tabelul 6.1
138 Modele şi algoritmi de optimizare
0 0 0 0 0 0 0 0 0 0 0 1
CVB VB VVB x1 x2 x3 v1 v2 v3 u1 u2 z11 z 22 z 23 xa
1 xa 4 1 −2 1° 0 0 0 0 0 0 0 0 1
0 z 1 2 1 0 0 −1 0 0 1 −1 1 0 0 0
1
0 z 22 3 0 −1 0 0 1 0 2 −2 0 1 0 0
0 z 3 1 0 0 0 0 0 1 −1 1 0 0 1 0
2
4 1 −2 1* 0 0 0 0 0 0 0 0 0
0 x3 4 1 −2 1 0 0 0 0 0 0 0 0
0 z11 2 1 0 0 −1 0 0 1 −1 1 0 0
0 z 22 3 0 −1 0 0 1 0 2 −2 0 1 0
0 z 23 1 0 0 0 0 0 1 −1 1 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0
Tabelul 6.2
0 0 0 0 0 0 0 0 1 1 1
CVB VB VVB x1 x2 x3 v1 v2 v3 u1 u2 z 1
z 2
z 23
1 2
0 x3 4 1 −2 1 0 0 0 0 0 0 0 0
1 z11 2 1 0 0 −1 0 0 1 −1 1 0 0
1 z 22 3 0 −1 0 0 1 0 2° −2 0 1 0
1 z 3
2
1 0 0 0 0 0 1 −1 1 0 0 1
6 1 −1 0 −1 1 1 2* −2 0 0 0
0 x3 4 1 −2 1 0 0 0 0 0 0 0 0
1 z11 1/2 1° 1/2 0 −1 −1/2 0 0 0 1 0
0 u1 3/2 0 −1/2 0 0 1/2 0 1 −1 0 0
1 z 3
2
5/2 0 −1/2 0 0 1/2 1 0 0 0 1
3 1* −1 0 −1 0 1 0 0 0 0
0 x3 7/2 0 −5/2 1 1 1/2 0 0 0 0
0 x1 1/2 1 1/2 0 −1 −1/2 0 0 0 0
0 u1 3/2 0 −1/2 0 0 1/2° 0 1 −1 0
1 z 23 5/2 0 −1/2 0 0 1/2 1 0 0 1
Figura 6.1
140 Modele şi algoritmi de optimizare
Tabelul 6.3
Microsoft Excel 10.0 Answer Report
Worksheet: [Programare patratica.xls]Sheet1
Report Created: 7/10/2002 8:09:27 PM
Target Cell (Min)
Original
Cell Name Value Final Value
Functia de
$D$4 optimizat 0 −0.5
Adjustable Cells
Original
Cell Name Value Final Value
$B$15 x1= 0 3
$B$16 x2= 0 0
$B$17 x3= 0 1
Constraints
Cell Name Cell Value Formula Status Slack
$A$12 x1−2x2+x3= 4 $A$12=$B$11 Not Binding 0
$B$15 x1= 3 $B$15>=$B$7 Not Binding 3
$B$16 x2= 0 $B$16>=$B$8 Binding 0
$B$17 x3= 1 $B$17>=$B$9 Not Binding 1
Tabelul 6.4
Microsoft Excel 10.0 Sensitivity Report
Worksheet: [Programare patratica.xls]Sheet1
Report Created: 7/10/2002 8:09:27 PM
Adjustable Cells
Final Reduced
Cell Name Value Gradient
$B$15 x1= 3 0
$B$16 x2= 0 5.000000477
$B$17 x3= 1 0
Constraints
Final Lagrange
Cell Name Value Multiplier
$A$12 x1−2x2+x3= 4 1
6. Programare pătratică 141
Tabelul 6.5
Microsoft Excel 10.0 Limits Report
Worksheet: [Programare patratica.xls]Limits Report 1
Report Created: 7/10/2002 8:09:27 PM
Target
Cell Name Value
Functia de
$D$4 optimizat −0.5
Targe
Adjustable Lower Target Upper t
Cell Name Value Limit Result Limit Result
$B$15 x1= 3 3 −0.5 3 −0.5
$B$16 x2= 0 0 −0.5 0 −0.5
$B$17 x3= 1 1 −0.5 1 −0.5
{
⎧min x12 − x1 x 2 + x12 − 3 x1 } {
⎧min 2 x12 − 2 x1 x 2 + x 22 − 4 x1 − 2 x1 }
⎪
⎪ ⎪ x1 + 2 x 2 + x 3 = 6
a) ⎨ x1 + x 2 ≤ 4 b) ⎨
⎪ x≥0 ⎪3 x1 + x 2 + x 4 = 9
⎩ ⎪x ≥ 0
⎩
142 Modele şi algoritmi de optimizare
7.1. Generalităţi
Să notăm ri(xi; di) câştigul parţial dobândit în urma luării deciziei δi în etapa
a i-a, când sistemul trece din starea xi−1 în starea xi.
Câştigul total pentru un orizont de N etape poate fi reprezentat ca o funcţie
de câştigurile parţiale r1, r2, ..., rN asociate diferitelor etape ale sistemului.
Această funcţie se poate scrie sub forma
f [r1 (x1 ; d 1 ), r2 ( x 2 ; d 2 ),..., rN (x N ; d N )]
şi constituie funcţia obiectiv ataşată procesului de decizii considerat.
( )
1 N 0 N i i
este optimă.
Demonstraţie. Notăm V(x0,xN) valoarea câştigului optim global. Din
~
decompozabilitate avem că f N (rN ( x N ; d N ),VN −1 ( x0 , x N −1 )) este optimă dacă xN =
τN(xN-1, dN) . Optimalitatea subpoliticii x0,…, xN-1 rezultă din monotonia funcţiei
~
f N şi demonstraţia se încheie.
( ) ( ) ( )
f [rN x N , dˆ N , rN −1 x N −1 , dˆ N −1 ,. . . , r1 x1 , dˆ1 ] = max R ' N (x N ; d1 ,..., d N ) .
d i ∈∆ i (7.5)
1≤ i ≤ N
Considerăm funcţia obiectiv în cazul aditiv (7.1) şi, înlocuind în (7.4), obţinem :
⎧ N
⎪ d i ∈∆ i
max ∑ ri (xi , d i )
⎨ 1≤i ≤ N i =1 (7.6)
⎪ x = τ (x , d ) , 1 ≤ i ≤ N .
⎩ i −1 i i i
⎪. . . . . . . . . . . . . . . . . . . . . . . . . . .
⎨ i i d i ∈∆ i
i i i {
d i ∈∆ i
i i i i −1 i[
⎪ f (x ) = max Q (x , d ) = max r (x , d ) + f τ (x , d ) , 2 ≤ i ≤ N − 1
i i ]}
⎪. . . . . . . . . . . . . . . . . . . . . . . . . . . (7.9)
⎪
{ [
⎪ f N (x N ) = max QN (x N , d N ) = max rN ( x N , d N ) + f N −1 τ N (x N , d N ) .
⎩ d N ∈∆ N d N ∈∆ N
]}
Aceste relaţii se numesc ecuaţiile de recurenţă ale programării dinamice.
Se determină dˆ N = d N (xˆ N ) ;
Pas 1. Pentru i:=N ,2
( )
determină xˆi −1 = τ i xˆi , dˆi ; dˆi −1 = d i −1 (xˆi −1 ) ;
Pas 2. Reţine: dˆ1 , dˆ 2 , ... , dˆ N ; xˆ1 , xˆ 2 , ... , xˆ N ; f N ( xˆ N ) . Stop !
Având o sumă de 5.109 lei cu care trebuie cumpărate acţiuni la 4 societăţi, care
în funcţie de suma investită asigură profituri conform cu Tabelul 7.1, să se
stabilească o repartiţie optimă a sumelor investite la fiecare societate, astfel încât
profitul obţinut în urma aplicării acestei politici de investiţii să fie maxim
(Kaufmann, 1967).
Se cere să se determine repartiţia optimă a investiţiilor în acţiuni la cele 4
societăţi, adică acea repartiţie care dă profitul total maxim.
7. Programare dinamică 149
Tabelul 7.1
Societatea Profitul în procente
Suma investită
(în miliarde de lei) S1 S2 S3 S4
0 0 0 0 0
1 0.28 0.25 0.15 0.20
2 0.45 0.41 0.25 0.33
3 0.65 0.55 0.40 0.42
4 0.78 0.65 0.50 0.48
5 0.90 0.75 0.62 0.53
Rezolvare
Modelarea problemei
Notaţii : di –numărul de miliarde investite în acţiuni la societatea i.
xi –numărul total de miliarde investite în acţiuni la primele i
societăţi, 1 ≤ i ≤ 4 .
x4 – mărimea totală a investiţiilor, care este de cel mult S=5·109.
ri(di)− profitul adus de suma di investită în acţiunile la societatea i.
Problema are următoarea formulare:
⎧ 4
⎪ max ∑ ri (d i )
⎪ 4 i =1
⎪
⎨∑ d i ≤ x4 ≤ S
⎪ i =1
⎪d i ≥ 0 1≤ i ≤ 4
⎪
⎩
Precizarea funcţiilor fi (suntem în cazul analizei retrospective).
Pentru orice 1 ≤ i ≤ 4, 0 ≤ xi ≤ x4 şi xi −1 = xi − d i = τ i ( xi , d i ), 2 ≤ i ≤ 4 şi
0 ≤ d i ≤ xn , 1 ≤ i ≤ 4 . Am precizat astfel domeniul de admisibilitate:
∆ i = [0, xi ] , d i ∈ ∆ i .
Pentru analiza prospectivă xi +1 = xi + d i = τ i ( xi , d i ), 1 ≤ i ≤ 3 .
4 4
Deoarece ∑ d i = ∑ ( xi − xi −1 ) = xi ≤ x4 luând x0=0, cu notaţiile din modelul
i =1 i =1
x2=0
f 2 (0) = max[r2 (d 2 ) + f1 (0 − d 2 )] = 0 cu 0 ≤ d 2 ≤ 0 . Deoarece r2(0)=0 şi f1(0)=0
rezultă d2=0.
x2=1
f 2 (1) = max[r2 (d 2 ) + f1 (1 − d 2 )] cu 0 ≤ d 2 ≤ 1 , d 2 ∈ { 0, 1 } .
f 2 (1) = max[r2 (0) + f1 (1) ; r2 (1) + f1 (0)] = max[0 + 0.28; 0.25 + 0] = 0.28
valoare obţinută pentru dˆ (1) = 0 . 2
x2=2
f 2 (2) = max[r2 (d 2 ) + f1 (2 − d 2 )] cu 0 ≤ d 2 ≤ 2 , d 2 ∈ { 0,1, 2}
f 2 (2) = max[g 2 (0) + f1 ( 2) ; r2 (1) + f1 (1); r2 (2) + f1 (0) ] =
= max[0 + 0.45; 0.25 + 0.28; 0.41 + 0] = 0.53
valoare obţinută pentru d=1; rezultă dˆ (2) = 1 . 2
x2=3
f 2 (3) = max[r2 ( d 2 ) + f1 (3 − d 2 )] cu 0 ≤ d 2 ≤ 3 , d 2 ∈ { 0,1, 2, 3}
f 2 (3) = max[r2 (0) + f1 (3) ; g 2 (1) + f1 (2); r2 (2) + f1 (1) ; r2 (3) + f1 (0)] =
= max[0 + 0.65; 0.25 + 0.45; 0.41 + 0.28; 0.55 + 0] = 0.70
rezultat obţinut pentru d=1 şi astfel dˆ (3) = 1 . 2
x2=4
f 2 (4) = max[r2 (d 2 ) + f1 (4 − d 2 )] cu 0 ≤ d 2 ≤ 4 , d 2 ∈ { 0,1, 2, 3, 4}
f 2 (4) = max[r2 (0) + f1 (4) ; r2 (1) + f1 (3); r2 (2) + f1 (2) ; r2 (3) + f1 (1); r2 (4) + f1 (0)] =
= max[0.78; 0.90; 0.86; 0.83; 0.65] = 0.90
valoare obţinută pentru d=1, rezultă dˆ (4) = 1 . 2
x2 = 5
f 2 (5) = max[r2 (d 2 ) + f1 ( x2 − d 2 )] ; d 2 ∈ { 0,1,...5}
= max[r2 (0) + f1 (5); r2 (1) + f1 (4 ); r2 (2 ) + f1 (3); g 2 (3) + f1 (2 ); r2 (4 ) + f1 (1);
r2 (5) + f1 (0)] =
= max[0 + 0.9; 0.25 + 0.78; 0.41 + 0.65; 0.55 + 0.45; 0.65 + 0.28; 0.75 + 0] =
= max[0.9; 1.03; 1.06; 1.00; 0.93; 0.75] = 1.06 obţinut pentru d2=2 . Astfel
d (5) = 2 .
ˆ
2
x3 = 0
f 3 (0) = max[r3 (d 3 ) + f 2 (0 − d 3 )] cu 0 ≤ d 3 ≤ 0 . Deoarece r3(0)=0 şi f3(0)=0
rezultă d3=0. dˆ (0) = 0 .
3
x3 = 1
f 3 (1) = max[r3 (d 3 ) + f 2 (1 − d 3 )] cu 0 ≤ d 3 ≤ 1 , d 3 ∈ { 0,1} .
f 3 (1) = max[r3 (0) + f 2 (1) ; r3 (1) + f 2 (0)] = max[0 + 0.28; 0.15 + 0] = 0.28
obţinută pentru dˆ (1) = 0 .
3
7. Programare dinamică 151
x3=2
f 3 (2) = max[r3 (d 3 ) + f 2 (2 − d 3 )] cu 0 ≤ d 3 ≤ 2 , d 3 ∈ {0, 1, 2}
f 3 (2) = max[r3 (0) + f 2 (2) ; r3 (1) + f 2 (1); r3 (2) + f 2 (0) ] = max[0.53; 0.43; 0.25]= 0.53
obţinută pentru dˆ (2) = 0 .
3
x3=3
f 3 (3) = max[r3 (d 3 ) + f 2 (3 − d 3 )] cu 0 ≤ d 3 ≤ 3 , d 3 ∈ { 0,1, 2, 3}
f 3 (3) = max[r3 (0) + f 2 (3) ; r3 (1) + f 2 (2); r3 (2) + f 2 (1); r3 (3) + f 2 (0) ] =
= max[0.70; 0.68; 0.53;0.40] = 0.70
Aşadar, pentru d=0 s-a obţinut valoarea maximă şi rezultă dˆ 3 (3) = 0 .
x3=4
f 3 (4) = max[r3 (d 3 ) + f 2 (4 − d 3 )] cu 0 ≤ d 3 ≤ 4 , d 3 ∈ { 0,1, 2, 3, 4}
f 3 (4) = max[r3 (0) + f 2 (4) ; r3 (1) + f 2 (3); r3 (2) + f 2 (2); r3 (3) + f 2 (1); r3 (3) + f 2 (1) ] =
= max[0.90; 0.85; 0.78; 0.68; 0.5] = 0.90
valoare obţinută pentru d=0; rezultă dˆ 3 (4) = 0 .
x3=5
f 3 (4) = max[r3 (d 3 ) + f 2 (4 − d 3 )] cu 0 ≤ d 3 ≤ 4 , d 3 ∈ { 0,1, 2, 3, 4}
f 3 (5) = max[r3 (0) + f 2 (5) ; r3 (1) + f 2 (4); r3 (2) + f 2 (3); r3 (3) + f 2 ( 2); r3 ( 4) + f 2 (1);
r3 (5) + f 2 (0)] = max[1.06; 1.05; 0.95; 0.93; 0.78; 0.60] = 1.06
obţinut pentru d=0; rezultă dˆ 3 (5) = 0 .
Analog, găsim pentru f4 valorile: f4(0)=0 şi dˆ 4 (0) = 0 , f4(1)=0.28 şi dˆ 4 (1) = 0 ,
f4(2)=0.53 şi dˆ 4 (2) = 0 , f4(3)=0.73 şi dˆ 4 (3) = 1 , f4(4)=0.9 şi
dˆ 4 (4) = 0 sau dˆ 4 (4) = 1 , f4(5)=1.1 şi dˆ 4 (5) = 1 . Centralizăm în Tabelul 7.2
valorile găsite pentru f şi d .
Tabelul 7.2
x d1 ( x) f1(x) d 2 ( x) f2(x) d 3 ( x) f3(x) d 4 ( x) f4(x)
0 0 0 0 0 0 0 0 0
1 1 0.28 0 0.28 0 0.28 0 0.28
2 2 0.45 1 0.53 0 0.53 0 0.53
3 3 0.65 1 0.70 0 0.70 1 0.73
Atunci
xˆ 3 = xˆ 4 − dˆ 4 ( x 4 ) = 4 .
Dar
dˆ 3 ( xˆ 3 ) = dˆ 3 (4) = 0 şi atunci xˆ 2 = xˆ 3 − dˆ 3 ( x3 ) = 4 .
În continuare avem:
dˆ 2 ( xˆ 2 ) = dˆ 2 (4) = 1 , iar xˆ1 = xˆ 2 − dˆ 2 ( x 2 ) = 3 ; dˆ1 ( xˆ1 ) = dˆ1 (3) = 3 .
( )
Astfel, politica optimă este dˆ1 , dˆ 2 , dˆ 3 , dˆ 4 = (3,1, 0, 1) ceea ce înseamnă că din
cele 5 miliarde se vor investi 3 miliarde în acţiuni la prima societate, 1 la cea de-a
doua şi 1 la cea de-a patra. Nu se vor achiziţiona acţiuni de la societatea a treia.
Într-un şir optimal de decizii, oricare ar fi prima decizie luată, deciziile următoare
formează un subşir care este optimal, ţinând seama de rezultatele primei decizii.
Tabelul 7.3
Perioada i 1 2 3 4 5
Cererea bi 2 3 4 3 2
Preţul ci 13 15 20 11 12
Rezolvare. Notăm :
7. Programare dinamică 153
Tabelul 7.4
b1 x1 d1 f(d) min
3 5 65
2 2 4 52
1 3 39
0 2 26
Tabelul 7.5
b2 x2 x1 d2 f(d) min
0 3 26+45=71
0 1 2 39+30=69
2 1 52+15=67
3 0 65+0=65 *
0 4 26+60=86
1 1 3 39+45=84
3 2 2 52+30=82
3 1 65+15=80 *
0 5 26+75=101
2 1 4 39+60=99
2 3 52+45=97
3 2 65+30=95 *
Tabelul 7.6
b3 x3 x2 d3 f(d) min
0 4 65+80=145
0 1 3 80+60=140
4 2 2 95+40=135 *
0 5 65+100=165
1 1 4 80+80=160
2 3 95+60=155 *
Tabelul 7.7
b4 x4 x3 d4 f(d) min
0 0 3 135+33=168 *
1 2 155+22=177
3 1 0 4 135+44=179 *
1 3 155+33=188
2 0 5 135+55=190 *
1 4 155+44=199
La sfârşitul perioadei a cincea (Tabelul 7.8) avem x5=0 şi, deoarece x4+d5=b5=2,
rezultă
Tabelul 7.8
b5 x4 d5 f(d) min
0 2 168+24=192
2 1 1 179+12=191
2 0 190 *
⎧ ⎧ ⎧ ⎧ x1 = 3
⎪ ⎪ ⎪ ⎪
⎪ ⎪ ⎪⎪ x 2 = 2 ⇒ ⎨d 1 = 5
⎪ ⎪ x3 = 0 ⇒ ⎨ ⎪ f (d ) = 65
⎪ ⎪ ⎩
x = 2 ⇒ ⎨ ⎪d = 2
⎪⎪ 4
⎪ 2
d5 = 0 ⇒ ⎨ ⎪ ⎪⎩ f (d ) = 95
⎪ ⎪
⎪ ⎪d 3 = 2
⎪ ⎪ f (d ) = 135
⎩
⎪d = 5
⎪ 4
⎪⎩ f (d ) = 190
sau: d5=0 ; d4=5 ; d3=2 ; d2=2 ; d1=5 cu costul minim,
f(d)=0×12+5×11+2×20+2×15+5×13=190 .
7. Programare dinamică 155
unde d k ( x) = {d k bk + bk −1 + x − 5 ≤ d k ≤ x + bk } .
Rezumăm calculele precedente în Tabelul 7.9.
Tabelul 7.9
x z1(x) d1(x) d2(x) d2(x) d3(x) d3(x) d4(x) d4(x) d5(x) d5(x)
0 26 2 65 0 135 2 168 3 190 0
1 36 3 80 1 155 3 179 4 * *
2 52 4 95 2 * * 190 5 * *
3 65 5 * * * * * * * *
Tabelul 7.10
Noile probabilităţi de eşec pentru
Nr. cercetători noi alocaţi echipe
A B C
0 0.4 0.6 0.8
1 0.2 0.4 0.5
2 0.15 0.2 0.3
Rezolvare
Fie dA, dB, dC numărul de cercetători afectaţi echipelor A, B, C ,
rA(dA), rB(dB), rC(dC) funcţiile care dau probabilităţile de eşec pentru fiecare echipă,
xA numărul cercetătorilor alocaţi proiectului A ;
xB numărul cercetătorilor alocaţi proiectelor A şi B , şi
xC numărul cercetătorilor alocaţi proiectelor A, B şi C.
Probabilitatea de eşec – toate echipele eşuează – este
f ( x) = rA (d A ) ⋅ rB ( d B ) ⋅ rC (d C ) , d A + d B + d C ≤ 2 .
Fie f i (x ) , probabilitatea minimă atunci când se utilizează x cercetători
suplimentari pentru proiectele A, B, C.
Tabelul 7.11
x fA(x) * dˆ A ( x) fB(x)* d B (x) fC(x)* d C (x)
0 0.4 0 0.24 0 0.192 0
1 0.2 1 0.12 0 0.096 0
2 0.15 2 0.08 2 sau 1 0.06 1
1. O firmă de construcţii are 4 000 000 euro pe care vrea să-i investească în
construirea a 3 tipuri de locuinte B1, B2, B3. Profitul adus de fiecare tip de locuinţă
este dat de Tabelul 7.12.
Tabelul 7.12
Suma investită (mil) B1 B2 B3
0 0 0 0
1 35% 28% 26%
2 43% 32% 34%
3 47% 45% 40%
4 49% 47% 51%
Tabelul 7.13
x r1 r2 r3 f1 d̂1 f2 d̂ 2 f3 d̂ 3
0 0 0 0 0 0 0 0 0 0
1 35 28 26 35 1 35 0 35 1
2 43 32 34 43 2 63 1 63 2
3 47 45 40 47 3 71 1 89 2
4 49 47 51 49 4 80 3 97 2 sau 3
158 Modele şi algoritmi de optimizare
Culegerea rezultatelor:
a) dˆ3 = 2 , xˆ3 = 4 , xˆ 2 = xˆ3 − dˆ3 = 2 , dˆ2 = d 2 ( xˆ 2 ) = 1 , xˆ1 = xˆ 2 − dˆ2 = 1 ,
dˆ = d ( xˆ ) = 1 ;
1 1 1
Rezolvare
1) Formularea problemei în programare liniară (vom renunţa la două zerouri la
⎧ x1 = 2
⎪ x = x + d − b (∀)i
⎪
preţuri şi cantităţi) are restricţiile : ⎨ i +1 i i i
⎪ xi + d i ≤ 9
⎪⎩ xi , d i ≥ 0
7. Programare dinamică 159
Ţinând seama de relaţiile de mai sus, funcţia obiectiv se poate scrie ca funcţie de d
astfel: f=33d1+54d2+39d3+51d4+60d5+30d6 , iar problema obţinută este
p
f p (d ) =min ∑ ci d i
i =1
⎧ x1 = 2
⎪ x = x + d − b i = 1,6
⎪ i +1 i i i
⎨
⎪ xi + d i ≤ 9
⎪⎩ xi , d i ≥ 0 .
Funcţia de minimizat se scrie :
f i (d i +1 ) =min(fi−1(xi+1+bi−di)+cidi).
Transformările τi fiind inversabile se poate aplica atât analiza prospectivă cât şi
retrospectivă.
2) Calculele sunt rezumate în Tabelul 7.15.
Tabelul 7.15
xi f1(d) dˆ1 ( x) f2(d) dˆ 2 ( x) f3(d) dˆ 3 ( x) f4(d) dˆ 4 ( x) f5(d) dˆ 5 ( x) f6(d) dˆ 6 ( x)
0 198 6 447 4 564 3 642 0 951 0 1071 4
1 231 7 501 5 603 4 681 0 1011 1 1101 5
2 555 6 642 5 720 0 1071 2 1161 6
3 609 7 681 6 759 0 1191 7
4 663 8 720 7 798 0 1221 8
5 759 8 849 1 9
6 798 9 900 2
7 951 3
8
B E
2 3 4 6
1
4 2 H
A C F
1 8 3
7
D 5 G
Figura 7.1
Teoria aşteptării (sau teoria firelor de aşteptare sau teoria cozilor) se ocupă
cu studiul evoluţiei sistemelor care prezintă aglomerări (sistemele de aşteptare).
Un astfel de sistem este compus dintr-una sau mai multe staţii de servire (în număr
finit) care servesc clienţii ce sosesc în sistem pentru a solicita servicii. Modul de
dispunere sau condiţionare a staţiilor de serviciu dintr-un sistem de aşteptare
constituie topologia sistemului. Astfel, staţiile pot fi în serie sau în paralel sau acest
serviciu se realizează de către una din staţii sau de către un grup de staţii.
Studiul unui sistem de aşteptare se face cu ajutorul unui model de aşteptare.
Elementele cunoscute ale unui model de aşteptare sunt (Văduva et al, I, 1974):
• fluxul intrărilor în sistem
• mecanismul serviciului.
Intrările sunt caracterizate fie de numărul de clienţi pe unitatea de timp care
sosesc, fie de intervalele de timp dintre două veniri consecutive.
Oricare dintre aceste două mărimi este o variabilă aleatoare cu repartiţia
cunoscută.
Cunoaşterea mecanismului serviciului presupune cunoaşterea topologiei
sistemului, regula după care se face serviciul, numită şi disciplina serviciului (de
exemplu: FIFO (First−In First−Out) – primul sosit – primul servit, sau o ordine
bazată pe priorităţi), precum şi repartiţia numărului de clienţi serviţi pe unitatea de
timp sau repartiţia duratei serviciului.
Mecanismul serviciului este caracterizat de asemenea şi de capacitatea
sistemului presupusă cunoscută, adică numărul maxim de clienţi ce pot exista la un
moment dat în sistem, sau, echivalent, lungimea maximă a cozii.
Numărul N(t) de clienţi din sistem ia valori întregi 0,1,2,..., şi este, în general,
un proces stochastic discret. Cunoaşterea repartiţiei acestui proces permite
determinarea multor caracteristici ale sistemului.
∑ P (t ) = 1 , (∀)t
n =0
n (8.3)
(nu poate fi coadă pentru n ≤ c, adică mai puţini clienţi decât numărul staţiilor de
serviciu),
c) timpul mediu de aşteptare la coadă
M [WT ] = M [Lc ] ,
1
µ (1 − p 0 )
1
unde este timpul mediu de servire şi se presupune cunoscut.
µ (1 − p 0 )
∑N ρ
1
n
= ⇒ 1 − ρ = p0
n∈ 1− ρ
când ρ < 1 şi atunci
pn = ρ n( 1 − ρ) . (8.6)
Se pot determina elementele necunoscute ale modelului în funcţie de ρ. De
asemenea, se pot găsi:
− pn maxim
d
dρ
[ ]
ρ n (1 − ρ ) = 0 ⇒ ρ =
n
n +1
şi atunci
n
⎛ n ⎞ 1
p n (t ) = ⎜ ⎟ ⋅ .
⎝ n + 1⎠ n + 1
8. Elemente de teoria aşteptării 167
eveniment este
(µ t )n −1 − µ t
e ;
(n − 1) !
c) evenimentul ca în intervalul de timp dt să fie servit şi să plece un client,
condiţionat de evenimentele de la a) şi b). Probabilitatea acestui eveniment este
µ dt . Prin urmare,
60 min
cea a ieşirilor (serviciilor) din sistem este µ = . Intensitatea de trafic
1 min 30 s
3
este ρ = . Din relaţia (8.6) avem p 0 = 1 − ρ = 0.25 , p1=0.1875 ş.a.m.d.
4
Se pot determina acum conform cu relaţiile (8.7)−(8.11) elementele necunoscute
ale modelului:
− numărul mediu de autobasculante din sistem M[N(t)]=3.
− numărul mediu de autobasculante din şirul de aşteptare M[L1(t)]=2.25.
− timpul mediu de aşteptare în sistem M[W]=6 min.
− timpul mediu de aşteptare în şirul de aşteptare M[WT]=4 min şi 30 s.
Din relaţia (8.12) avem P( N( t ) > 2) = ρ 2+1=0.42187 .
Figura 8.1
Selectând Solve obţinem soluţia modelului care, aşa cum se vede din Tabelul 8.1,
coincide cu cea obţinută mai sus.
170 Modele şi algoritmi de optimizare
Tabelul 8.1
WAITING LINES
*************
NUMBER OF CHANNELS = 1
POISSON ARRIVALS WITH MEAN RATE = 30
EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 40
OPERATING CHARACTERISTICS
-------------------------
THE PROBABILITY OF NO UNITS IN THE SYSTEM 0.2500
THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE 2.2500
THE AVERAGE NUMBER OF UNITS IN THE SYSTEM 3.0000
THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE 0.0750
THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM 0.1000
THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT 0.7500
Pentru acest model, lungimea maximă a cozii este m<∞. În acest caz,
probabilitatea ca în intervalul de timp de lungime ∆t>0 să sosească un client în
sistem este proporţională cu mărimea intervalului; coeficientul de proporţionalitate
depinde de numărul n de unităţi aflate în sistem la momentul respectiv şi rămâne
λn ; analog, coeficientul legat de servicii rămâne µn . În ecuaţiile de stare (8.4)
facem presupunerea că probabilitatea ca în intervalul de timp ∆t să sosească în
sistem un client este cu atât mai mică cu cât numărul clienţilor rămaşi din numărul
total este mai mic, (m − n )λ ∆t = λ n ∆t şi atunci λ n = (m − n )λ .
Coeficientul µn nu depinde de numărul de clienţi din sistem la un moment dat,
deoarece există o singură staţie, şi îl notăm cu µ .
În ecuaţiile de stare (8.4), înlocuind λn şi µn şi considerând µn+1 = 0,
obţinem ecuaţia
λ
− mλ p 0 + µ p1 = 0 ⇒ p1 = m p0 .
µ
8. Elemente de teoria aşteptării 171
⎛λ⎞
⇒ p 2 = m(m − 1)⎜⎜ ⎟⎟ p 0 .
⎝µ⎠
Luând n = 2, obţinem
(m − 1)λ p1 − [( m − 2)λ + µ ] p 2 + µ p 3 = 0 ⇒
2
λ ⎛λ⎞
⇒ ( m − 1)λ ⋅ m p 0 − (m − 2)λ m(m − 1)⎜⎜ ⎟⎟ p 0 + µ p 3 −
µ ⎝µ⎠
2 3
⎛λ⎞ ⎛λ⎞
− µ m(m − 1)⎜⎜ ⎟⎟ p 0 = 0 ⇒ p 3 = m(m − 1)(m − 2)⎜⎜ ⎟⎟ p 0 .
⎝µ⎠ ⎝µ⎠
Prin inducţie rezultă
n
⎛λ⎞
p n = A ⎜⎜ ⎟⎟ p 0
n
⎝µ⎠
m
⎛ 0 1 2 K m ⎞ m
N (t ) : ⎜⎜ ⎟ şi
p 2 (t ) K p m (t ) ⎟⎠
∑p k (t ) = 1 ⇒
⎝ p 0 (t ) p1 (t ) k =0
n
m
⎛λ⎞ 1
⇒ ∑ Amn p 0 ⎜⎜ ⎟⎟ = 1 ⇒ p 0 = , Am0 = 1 .
⎝µ⎠
n
n =0 m
⎛λ⎞
∑A n
⎜⎜ ⎟⎟
⎝µ⎠
m
n =0
⎝µ⎠ ⎝µ⎠
m
n =0 n =0 n =0
n n n +1
m
⎛λ⎞ m
⎛λ⎞ µ m −1 ⎛λ⎞
= m∑ A ⎜⎜ ⎟⎟ p 0 − ∑ ( m − n) Amn ⎜⎜ ⎟⎟ p 0 = m − ∑ Amn +1 ⎜⎜ ⎟⎟ p 0 =
n
µ⎠
m
⎝µ⎠ λ n =0 µ⎠
n =0
1 44⎝24 43 n =0 144 4⎝24 44
3
1 1 − p0
µ µ
=m− (1 − p 0 ) ; deci M [ N (t )] = m − (1 − p 0 ) ,
λ λ
• numărul mediu de clienţi serviţi la un moment dat
⎛ 0 1 ⎞
n s (t ) : ⎜⎜ ⎟⎟ ⇒ M [n s (t )] = 0 p 0 + 1 − p 0 = 1 − p 0 .
⎝ p 0 (t ) 1 − p 0 (t ) ⎠
172 Modele şi algoritmi de optimizare
Rezolvare
1
1 1 1 λ 48 1
λ= = ; µ = maşini pe oră , = = , atunci
8 ⋅ 6 48 4 µ 1 12
4
1 1
p0 = n
= = 0.19857 ,
n ⎛ 1 ⎞
12 5.03607
∑n=0
A12 ⎜ ⎟
⎝ 12 ⎠
8. Elemente de teoria aşteptării 173
Figura 8.2
Tabelul 8.2
WAITING LINES
*************
NUMBER OF CHANNELS = 1
POISSON ARRIVALS WITH MEAN RATE = 0.02083
EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 0.25
FINITE CALLING POPULATION OF SIZE = 12
OPERATING CHARACTERISTICS
-------------------------
THE PROBABILITY OF NO UNITS IN THE SYSTEM 0.1986
THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE 1.5808
THE AVERAGE NUMBER OF UNITS IN THE SYSTEM 2.3822
THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE 7.8907
THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM 11.8907
THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT 0.8014
pc+k = ⎜ ⎟ p0 , k ≥ 0 .
⎝ c ⎠ c!
ρ
Pentru acest model notăm ρ* = intensitatea de trafic a sistemului de
c
aşteptare.
Am obţinut soluţia sistemului (8.17)
⎧ ρn
⎪⎪ p n = p0 , 1≤ n < c
n!
⎨ (8.18)
⎪ pn = ρ
n
p0 , n ≥ c .
⎪⎩ c! c n −c
∞
Deoarece ∑p
n=0
n = 1 , rezultă că
⎛ c −1 ρ n
p0 ∑
∞ n
( )
ρ * c ⎞⎟
⎜ n=0 n! ∑
⎜ + = 1,
⎝ n =c c! ⎟⎠
de unde obţinem
1
p0 = .
ρ c c −1
ρn
+∑
( )
c! 1 − ρ * n=0 n!
Cunoscând repartiţia variabilei aleatoare N( t ), se poate determina repartiţia
variabilei aleatoare Lc( t )
⎛ 0 1 2 L⎞
Lc : ⎜⎜ ⎟⎟ .
⎝ p 0 (t ) + ... + p c (t ) p c +1 (t ) p c + 2 (t ) L⎠
Notăm c + k = n ⇒ k = n − c . Atunci
∞ ∞
ρn
M [ Lc ] = ∑ (n − c) p n =
n = c +1
∑
n = c +1
(n − c)
c!c n −c
p0 =
178 Modele şi algoritmi de optimizare
cc ⎡ ⎛ λ ⎞ c +1 ⎛ λ ⎞
c +2
⎛ λ ⎞
c +3
⎤
= p 0 ⎢1⎜⎜ ⎟⎟ + 2⎜⎜ ⎟⎟ + 3⎜⎜ ⎟⎟ + ...⎥ =
c! ⎢ ⎝ µc ⎠ ⎝ µc ⎠ ⎝ µc ⎠ ⎥⎦
⎣
cc ⎛ λ ⎞
c +1
⎡ ⎛ λ ⎞ ⎛ λ ⎞ ⎤
2
(1 − x) 2
=
, x <1.
⎜⎜1 − ⎟⎟
⎝ cµ ⎠
de unde rezultă că
c
λµ
⎛λ⎞
M [ Lc ] = ⎜⎜ ⎟⎟ p 0 .
⎝µ⎠
(c − 1)!(cµ − λ ) 2
• Pentru determinarea numărului mediu de clienţi din sistem, vom considera
numărul de clienţi aflaţi în serviciu la un moment dat, care este acelaşi lucru
cu numărul de staţii ocupate ns , ca fiind o variabilă aleatoare discretă cu
repartiţia
⎛ 0 1 2 K c −1 c ⎞
n s : ⎜⎜ ⎟⎟ .
⎝ p 0 (t ) p1 (t ) p 2 (t ) K p c −1 (t ) p c (t ) + p c +1 (t ) + ... ⎠
c c ∞
M [n s ] = ∑ np n (t ) + c( p c (t ) + p c +1 (t ) + ...) = ∑ np n (t ) + c ∑ p n (t ) =
n =0 n =0 n = c +1
n n
c
1 ⎛λ⎞ ∞
1 ⎛λ⎞
= ∑n ⎜⎜ ⎟⎟ p 0 (t ) + c ∑ ⎜⎜ ⎟⎟ p 0 (t ) .
n =0 n! ⎝ µ ⎠ n = 0 c! c
n −c
⎝µ⎠
De aici rezultă că
λ
M [n s ] = ,
µ
iar cum
M[N( t )] = M[Lc] + M[ns],
obţinem că
c
λµ
⎛λ⎞ λ
M [ N (t )] = ⎜⎜ ⎟⎟ p 0 + .
⎝µ⎠
(c − 1)!(cµ − λ ) 2µ
• numărul mediu de servicii făcute efectiv în unitatea de timp
λ
µ M [n s ] = ⋅µ =λ .
µ
• timpul mediu de aşteptare la coadă
8. Elemente de teoria aşteptării 179
c
M [ Lc ] µ ⎛λ⎞
M [WT ] = = ⋅ ⎜⎜ ⎟⎟ p 0 (t ) .
λ (c − 1)!(cµ − λ ) 2 ⎝µ⎠
• timpul mediu de aşteptare în sistem
1
M [W ] = M [WT ] + .
µ
• numărul mediu de staţii de servire care lenevesc (neocupate)
c −1
M [ SL] = ∑ (c − j ) p j (t ) = c − ρ .
j =0
Rezolvare
60 6
Pentru acest exemplu avem λ = 6 , µ = = 4 , ρ = > 1 . Cum ρ > 1 , nu este
15 4
suficient un singur lucrător. Vom considera următoarele situaţii:
a) c = 2 (2 lucrători)
1 3
p0 = 2
= 0.14286 , p1 = p 0 = 0.21429 ,
⎛3⎞ 1 3 2
⎜ ⎟ +1+
⎝ 2 ⎠ 2!⎛1 − 3 ⎞ 2
⎜ ⎟
⎝ 4⎠
2
⎛3⎞ 1
p2 = ⎜ ⎟ p 0 = 0.16072 etc
⎝ 2 ⎠ 2!
3
⎛3⎞ 1 1
M [ L2 ] = 0.14286 ⋅ ⎜ ⎟ = 1.92861 ,
⎝ ⎠
2
2 2!2 ⎛ 3⎞
⎜1 − ⎟
⎝ 4⎠
3 1
M [ SL] = c − ρ = 2 − = ,
2 2
3
⎛3⎞ 1 1 3
M [ N (t )] = 0.14286 ⋅ ⎜ ⎟ + = 3.4261 ,
⎝ 2 ⎠ 2!2 ⎛
2
3⎞ 2
⎜1 − ⎟
⎝ 2⎠
M [ Lc ] 1.92861
M [WT ] = = = 0.32143 = 19 min 17 s .
λ 6
b) c = 3 (3 lucrători)
180 Modele şi algoritmi de optimizare
1
p0 = 3 2
= 0.21053 ,
⎛3⎞ 1 3 ⎛3⎞ 1
⎜ ⎟ +1+ + ⎜ ⎟
⎝ 2 ⎠ 3!⎛1 − 3 ⎞ 2 ⎝ 2 ⎠ 2!
⎜ ⎟
⎝ 2⎠
3
p1 = p 0 = 0.3158 etc .
2
M [ L3 ] = 0.23685 ; M [ N (t )] = 1.73685 ;
M [ SL] = 1.5 ; M [WT ] = 0.03946 ore = 2 min 22 s .
Figura 8.3
Tabelul 8.3
WAITING LINES
*************
NUMBER OF CHANNELS = 2
POISSON ARRIVALS WITH MEAN RATE = 6
EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 4 PER CHANNEL
OPERATING CHARACTERISTICS
-------------------------
THE PROBABILITY OF NO UNITS IN THE SYSTEM 0.1429
THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE 1.9286
THE AVERAGE NUMBER OF UNITS IN THE SYSTEM 3.4286
THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE 0.3214
THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM 0.5714
THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT 0.6429
Number of Units in the System Probability
----------------------------- -----------
0 0.1429
1 0.2143
2 0.1607
3 0.1205
4 0.0904
5 0.0678
6 0.0509
7 0.0381
8 0.0286
9 0.0215
10 0.0161
11 0.0121
12 0.0091
13 0.0068
14 0.0051
15 0.0038
16 0.0029
17 OR MORE 0.0086
staţie de servire 1
coada
staţie de servire 2
Veniri O O ... O
şir de M
aşteptare
numărul zilelor lucrăt
Figura 8.4
182 Modele şi algoritmi de optimizare
⎨ 1 ≤ n < c
⎪ p ′ (t ) = −[cµ + (m − n)λ ] p (t ) + cµ p (t ) + λ (m − n + 1) p (t )
⎪ n n n +1 n −1
⎪⎩ c ≤ n ≤ m.
În cazul staţionar, ecuaţiile de stare sunt
⎧λ mp 0 = µ ⋅ p1
⎪
⎨(n + 1) µ ⋅ p n +1 = [nµ + (m − n)λ ] p n − λ (m − n + 1) p n −1 1 ≤ n < c
⎪cµ ⋅ p = [cµ + ( m − n)λ ] p − λ (m − n + 1) p c≤n<m
⎩ n +1 n n −1
⎪ c! Am ⎜ c ⎟ p 0 , c ≤ n ≤ m .
⎩ ⎝ ⎠
Înlocuind pn de mai sus în (8.3) rezultă
1
p0 = .
cc m n ⎛ ρ ⎞
c −1 n
∑
n =0
Cm ρ +
n n
∑ Am ⎜ ⎟
c! n = c ⎝ c ⎠
Aici pn este probabilitatea ca, la un moment dat, să existe în sistem n
autobasculante, p0 este probabilitatea ca în sistem să nu existe nici o
ρ
autobasculantă la un moment dat, iar < 1 pentru evitarea supraaglomerării.
c
Aplicaţie numerică
Balastiera are 2 excavatoare care trebuie să încarce 20 autobasculante. S-a constatat
că sosirile autobasculantelor sunt poissoniene cu parametrul λ = 0.3
autobasculante pe oră, iar timpul de încărcare este exponenţial de parametru µ = 4
autobasculante pe oră pentru fiecare excavator. Să se determine elementele
necunoscute ale fenomenului de aşteptare.
Rezolvare
λ 0.3
ρ= = = 0.075 ; c = 2 ; m = 20
µ 4
1
p0 = n
= 0.18756
1
22 20
⎛ 0.075 ⎞
∑
n =0
n
C
20( 0 . 075n
) +
2!
∑
n=2
A ⎜
n
20
⎝ 2 ⎠
⎟
Figura 8.5
Tabelul 8.4
WAITING LINES
*************
NUMBER OF CHANNELS = 2
POISSON ARRIVALS WITH MEAN RATE = 0.3
EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 4 PER CHANNEL
FINITE CALLING POPULATION OF SIZE = 20
OPERATING CHARACTERISTICS
-------------------------
THE PROBABILITY OF NO UNITS IN THE SYSTEM 0.1876
THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE 0.7424
THE AVERAGE NUMBER OF UNITS IN THE SYSTEM 2.0859
THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE 0.1381
THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM 0.3881
THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT 0.5311
Number of Units in the System Probability
----------------------------- -----------
0 0.1876
1 0.2813
2 0.2005
3 0.1353
4 0.0863
5 0.0518
6 0.0291
7 0.0153
8 0.0075
9 0.0034
10 0.0014
11 0.0005
12 0.0002
13 0.0001
14 0.0000
8.7. Simulare
Simulare probabilistă
Vom ilustra această metodă printr-un exemplu de model de aşteptare adaptat
după Bonini et al. (1997).
Considerăm un depozit care are o rampă de descărcare a vagoanelor.
Vagoanele sosesc noaptea şi descărcarea unui vagon durează o jumătate de zi. Dacă
sunt mai mult de două vagoane la rând pentru descărcare, atunci unele dintre ele
rămân să fie descărcate în ziua următoare. S-a constatat că numărul de vagoane
care sosesc noaptea urmează repartiţia din Tabelul 8.5 şi este independent de
numărul de vagoane sosite în oricare altă noapte.
Tabel 8.5
Nr. vagoane Probabilitatea
0 0.23
1 0.30
2 0.30
3 0.10
4 0.05
5 0.02
cel puţin 6 0.00
Numărul mediu de sosiri pe noapte este de 1.5 vagoane. Suntem în cazul unui
model de aşteptare cu o singură staţie de servire, FIFO, coadă infinită, cu rata
serviciilor µ=2 şi rata sosirilor λ=1.5 . Se poate arăta că sosirile nu sunt
poissoniene şi din acest motiv nu se poate aplica nici unul din modelele clasice. În
vederea simulării avem nevoie de un eşantion de sosiri aleatoare pentru un număr
de nopţi. Pentru aceasta se poate folosi o tabelă de numere aleatoare sau un
generator de astfel de numere. Vom folosi generatorul de numere aleatoare din
Microsoft Excel pentru a genera numere uniform repartizate între 0 şi 99, pe care le
vom asocia cu un număr de sosiri ca în Tabelul 8.6.
Tabelul 8.6
Număr de Număr aleatoriu Frecvenţa
sosiri generat relativă
0 0-22 0.23
1 23-52 0.30
2 53-82 0.30
3 83-92 0.10
4 93-97 0.05
5 98-199 0.02
Tabelul 8.7.
Număr Număr Total de
Ziua Amânate Descărcate
aleatoriu sosiri descărcat
x 99 5 0 0 0
x 6 0 0 0 0
x 15 0 0 0 0
x 62 2 2 0 2
x 86 3 3 1 2
1 12 0 1 0 1
2 39 1 1 0 1
3 39 1 1 0 1
4 16 0 0 0 0
5 24 1 1 0 1
6 45 1 1 0 1
7 88 3 3 1 2
8 81 2 3 1 2
9 53 2 3 1 2
10 26 1 2 0 2
11 56 2 2 0 2
12 77 2 2 0 2
13 31 1 1 0 1
14 34 1 1 0 1
15 94 4 4 2 2
16 11 0 2 0 2
17 15 0 0 0 0
18 92 4 4 2 2
19 38 1 3 1 2
20 14 0 1 0 1
21 36 1 1 0 1
22 9 0 0 0 0
23 56 2 2 0 2
24 84 3 3 1 2
25 12 0 1 0 1
26 79 2 2 0 2
27 25 1 1 0 1
28 81 2 2 0 2
29 1 0 0 0 0
30 65 2 2 0 2
Total 40 9 41
Media 1,33 0,3 1,36
188 Modele şi algoritmi de optimizare
− λ ⋅ t ( λ⋅ t )
n 3
P( n , t) := e
n!
f( t) := ∑ P( n , t)
n =0
3. La o staţie de betoane sosesc bene care sunt încărcate şi părăsesc imediat staţia.
S-a constatat că la intervale de o oră pe o perioadă de o săptămână benele au sosit
conform cu Tabelul 8.8 . În aceeaşi perioadă s-au notat şi timpii de încărcare a
benelor, iar rezultatele sunt trecute în Tabelul 8.9 .
Tabelul 8.8
Nr bene sosite/ora (xi) 0 1 2 3 4 5 6 7
Frecvenţa (Ni) 8 23 24 21 14 6 3 1
Tabelul 8.9
1 1 2 2 3 3 4 4 5 5 6
Minute/benă (tj) 5
0 5 0 5 0 5 0 5 0 5 0
5 3 2 1 1 1
Frecvenţa(Nj) 8 6 4 6 3 3
0 4 9 9 4 3
6 7 7 8 8 9 9 10 10 11 11 12
Minute/benă (tj)
5 0 5 0 5 0 5 0 5 0 5 0
Frecvenţa(Nj) 4 2 0 0 2 0 0 0 0 2 0 1
a) Să se testeze că sosirile la staţia de betoane sunt repartizate Poisson.
190 Modele şi algoritmi de optimizare
Rezolvare
a) Vom folosi testul χ 2 pentru a verifica ipoteza H0 : „Sosirile sunt repartizate
8
∑x N i i 8
( N i − N i′ ) 2
Po(λ)” , cu λ = i =1
8
= 2.45 . Determinăm statistica χc2 = ∑ ,
Ni
∑N i =1
i
i =1
N i′ = N i e − λxi
, (∀)i = 1,8 . Obţinem χ c = 0.52657 . Din tabela repartiţiei
2
unde
χ2 găsim, pentru pragul α = 0.05 şi numărul gradelor de libertate,
l = (8 − 1) − 1 = 6 (deoarece avem un parametru λ, media sosirilor),
χ 02.05; 6 = 12.592 . Cum χ c2 < χ 02.05; 6 admitem ipoteza H0 cu pragul de
semnificaţie 0.05 ;
b) Vom folosi testul Kolmogorov pentru a verifica ipoteza H0: „Timpii de servire
sunt repartizaţi Exp(µ)”. Pentru aceasta calculăm un estimator pentru media
24
∑ (t
i =1
i − 2.5) N i
timpilor de servire t= 24
= 19.5 minute (am considerat mijlocul
∑ Ni
i =1
∑N
j =1
j
−0.05128 t i
teoretică Fi = 1 − e , funcţia de repartiţie empirică Fei = 24
,
∑N
j =1
j
6. Proprietarul unui service auto doreşte să înfiinţeze propria spălătorie auto, astfel
ca în atelierul de reparaţii să intre autoturismele care au fost spălate. Ştiind că
sosirile autoturismelor pentru service care trebuie şi spălate sunt poissoniene, cu
rata medie de 3 autoturisme pe oră, iar un muncitor are nevoie în medie de 20 de
192 Modele şi algoritmi de optimizare
λ 15
R. λ=15 automobile/oră , µ=6 automobile/oră, ρ = = = 2.5 > 1 şi dacă ar fi un
µ 6
singur poliţist ar fi supraaglomerare.
ρ
a) Alegem numărul c de poliţişti astfel încât < 1 , adică c=3 . Modelul de
c
aşteptare devine Po(λ)/Exp(µ)/3:( ∞, FIFO) ;
b) p0=0.0449;
5
c) P (n > 5) = 1 − P (n ≤ 5) = 1 − ∑ p i =
i =0
d) ştiind că pentru o oră chiria pentru un camion este de 20 u.m., care este suma
medie orară plătită pentru nefolosirea unui camion?
Eficienţa unui stoc de-a lungul unui interval de timp este dată de o funcţională
de forma
196 Modele şi algoritmi de optimizare
I(t)
T0 T1 T2 T3 T*
t0 L t1 t2 t3 t’ t
Figura 9.1
În Figura 9.1, variaţia stocului este reprezentată prin segmentele oblice, rata
cererii fiind presupusă constantă. Se observă că pe intervalul de timp (t’, T *)
există lipsă de stoc. Cantităţile a(ti) reprezintă valorile comenzilor care intră în
stoc la momentele ti, iar între aceste momente de timp au loc numai ieşiri din stoc,
care micşorează nivelul stocului.
În diferite modele ale teoriei stocurilor, ciclurile de reaprovizionare Ti, i = 0, 1,
2, ..., pot fi egale sau nu, pot fi constante sau aleatoare.
În ceea ce priveşte mărimea loturilor de reaprovizionare a(ti), acestea pot fi
egale sau nu, pot depinde sau nu de Ti.
În unele modele ale teoriei stocurilor din optimizarea funcţiei de eficienţă se
poate deduce ciclul optim de reaprovizionare, Topt.
Aşadar, modelele de teoria stocurilor determină mărimea lotului de
reaprovizionare optim, aopt, şi/sau ciclul de reaprovizionare optim, Topt.
Reaprovizionarea la anumite momente de timp impune utilizarea şi a altor
variabile care au importanţă practică.
9. Elemente de teoria stocurilor 197
Parametrii cunoscuţi:
− intrările au loc în mod continuu cu rata p – constantă,
− ieşirile au loc în mod continuu cu rata r – constantă; p > r,
− costul de stocare h este constant pe unitatea de stoc / unitatea de timp,
− costul de lansare a comenzii a este s = constant,
− L = 0.
Parametrii necunoscuţi:
− cantitatea comandată a (mărimea lotului de reaprovizionare),
− mărimea ciclului de reaprovizionare T.
Ipoteze:
− nu se admite lipsa de stoc,
− nu există stoc de rezervă sau stoc intangibil, I0 = 0.
I(t)
a
I(t) = (p − r) t
I(t) = a − rt
a a
0 T= t
p r
Figura 9.2
Astfel,
200 Modele şi algoritmi de optimizare
⎧ ⎛ a⎞
⎪( p − r )t , t ∈ ⎜⎜ 0, ⎟⎟
⎪ ⎝ p⎠
I (t ) = ⎨
⎪ a − rt , t ∈ ⎜ a , a ⎞⎟
⎛
⎪⎩ ⎜p r⎟
⎝ ⎠
Costul total pe perioada T este CT = Ch,T + s, unde Ch,T este costul de stocare,
dat de
a
r ⎡ ( p − r) a2 ⎛ 1 1 ⎞ ra 2 ⎛ 1 1 ⎞⎤ ha 2 ( p − r )
C h ,T = h ∫ I (t )dt = h ⎢ ⋅ 2 + a 2 ⎜⎜ − ⎟⎟ − ⎜⎜ 2 − 2 ⎟⎟⎥ = .
0 ⎣ 2 p ⎝r p⎠ 2 ⎝r p ⎠⎦ 2 pr
Costul total de stocare şi de lansare pe unitatea de timp este
C h , T ⎡ ha 2 ( p − r ) ⎤ r ha ( p − r ) rs
C (a) = =⎢ + s⎥ ⋅ = + .
T ⎣ 2 pr ⎦ a 2p a
Figura 9.3 reprezintă costul total, costul de păstrare şi costul de lansare, abscisa
punctului de intersecţie a ultimelor două constituind mărimea optimă a comenzii (Q
reprezintă cantitatea necesară pe un întreg an).
totale,dedelansare,
Costurile total, lansare,
dede păstrare
pastrare
CT ( Q , a , s , h)
CL( Q , a , s)
Ch( Q , a , h)
a
marimeacomenzii
mărimea comenzii
Figura 9.3
Rezolvarea modelului
9. Elemente de teoria stocurilor 201
În anumite situaţii cererea este exprimată prin valoarea în bani. Se disting două
cazuri (Turban şi Meredith, 1988):
1. Se dă preţul unitar al produsului. În acest caz se află numărul de produse şi astfel
se ajunge la situaţia studiată mai înainte.
2. Preţul unitar nu se cunoaşte şi atunci trebuie să se dea costul de stocare ca un
procent din valoarea cererii de produse. În acest caz modelul dă valoare optimă a
unei cereri de reaprovizionare. Costul total anual
a Q
CT = h + s (9.4)
2 a
Q
unde Q este cantitatea (sau valoarea acesteia) necesară pe un an, iar
a
reprezintă numărul de comenzi de reaprovizionare lansate într-un an. Atunci
2 sQ
a opt = . (9.5)
h
Rezolvare
Se consideră modelul de stocare al lotului economic şi, utilizând formulele
(9.1)−(9.3), se obţin rezultatele de mai jos:
120000
r= = 400 – rata ieşirilor zilnice,
300
2rs 400 ⋅ 30000000
I
a opt = = 2⋅ = 6928.20 ,
h 500
2s 2 ⋅ 30000000
I
Topt = = = 17.32 zile ,
hr 500 ⋅ 400
I
C opt = 2rsh = 2 ⋅ 400 ⋅ 30000000 ⋅ 500 = 3464101.61 lei/zi.
Costul total anual este 1 039 230 484.51 lei, iar costul de lansare a comenzilor
de reaprovizionare pe un an este 5196×108.
9. Elemente de teoria stocurilor 203
Figura 9.5
Figura 9.6
INVENTORY MODEL
204 Modele şi algoritmi de optimizare
***************
INVENTORY POLICY
****************
OPTIMAL ORDER QUANTITY 6,928.20
ANNUAL INVENTORY HOLDING COST $519,615,242.27
ANNUAL ORDERING COST $519,615,242.27
TOTAL ANNUAL COST $1,039,230,484.54
MAXIMUM INVENTORY LEVEL 6,928.20
AVERAGE INVENTORY LEVEL 3,464.10
REORDER POINT 1,200.00
NUMBER OF ORDERS PER YEAR 17.32
CYCLE TIME (DAYS) 17.32
Rotunjirea rezultatelor
Rezultatul obţinut în urma rezolvării unui model de stocare poate să nu fie un
număr întreg, ca în exemplul de mai sus (mărimea optimă a comenzii de
reaprovizionare, numărul de zile ale ciclului optim de reaprovizionare). Atunci, se
evaluează funcţia obiectiv pentru [aopt] şi pentru [aopt]+1 şi se reţine valoarea
care dă „cea mai bună” valoare pentru costul total ( [x]=partea întreagă a lui x).
Aşa cum arată şi numele, în acest model se acceptă lipsa de stoc, adică se
păstrează cererile care nu au putut fi satisfăcute după epuizarea stocului, iar după
reaprovizionare, acestea vor fi satisfăcute (Văduva et al, II, 1974). Există şi cazuri
în care cererea nesatisfăcută, pe perioada epuizării stocului, se pierde. În continuare
se consideră numai primul caz.
Parametrii cunoscuţi:
− intrările au loc în mod continuu cu rata p – constantă,
− ieşirile au loc în mod continuu cu rata r – constantă, p > r,
− costul de stocare h, pe unitatea de stoc / unitatea de timp, este constant,
− d – costul (deficitul) datorat lipsei unei unităţi de stoc pe unitatea de timp este
constant,
9. Elemente de teoria stocurilor 205
Parametrii necunoscuţi:
− cantitatea comandată a,
− S – nivelul maxim la care trebuie adus stocul la intrarea în stoc a comenzii,
− mărimea lotului de aprovizionare T.
Ipoteze:
− se admite lipsa de stoc şi cererea pe perioada lipsei de stoc se păstrează şi se
reportează pe perioada ciclului de reaprovizionare următor,
r
− =0.
p
Formularea problemei
I(t)
Să se determine cantitatea
a care trebuie introdusă în
stoc după timpul T (care
trebuie de asemenea
determinat), presupunând
că după ce se epuizează
stocul S în intervalul de S
timp (0, t’ ), poate să mai a
treacă un interval de timp
(t’, T ) până când intră t”
t’ T
cantitatea a în stoc.
Figura 9.7 arată 0 t
comportarea acestui
model de stocare. După ce
se recuperează lipsa de Figura 9.7
stoc, stocul a ajuns la nivelul S. Parametrii necunoscuţi ai modelului trebuie
determinaţi astfel încât costul total, provenit din costul de depozitare, costul de
lansare şi costul lipsei de stoc, să fie minim.
Construcţia modelului
Considerând modelul anterior, se stabileşte funcţia de minimizat astfel :
- costul de depozitare a cantităţii S pe intervalul de timp (0, t’ ) este
S
C h ,t ' = h ⋅ ⋅ t '
2
- costul lipsei de stoc este
a−S
C d ,t " = d ⋅ ⋅ t" .
2
Astfel, costul unitar total este
206 Modele şi algoritmi de optimizare
1⎛ S a−S ⎞
C= ⎜ s + h ⋅ ⋅ t '+ d ⋅ ⋅ t"⎟ .
T⎝ 2 2 ⎠
Se exprimă membrul drept al relaţiei precedente în funcţie de S, T ţinând seama că
a S S Tr − S
T = , t ' = , t" = T − = ,
r r r r
astfel că
s hS 2 d (rT − S ) 2
C (S , T ) = + + .
T 2rT 2rT
Se determină min C(S,T):
⎧ ∂C ⎧ hS d (rT − S )
⎪ ∂S = 0 ⎪⎪ rT − rT
=0
⎨ ∂C ⇒ ⎨
1 ⎛ hS 2 ⎞ d 2r (rT − S )T − (rT − S ) 2
⎪ =0 ⎪− 2 ⎜⎜ s + ⎟+ ⋅ =0
⎩ ∂T ⎪⎩ T ⎝ 2r ⎟⎠ 2r T2
2s h+d 2rs d d
⇒ Topt
II
= II
, S opt = II
, C opt = 2rsh .
rh d h h+d h+d
Deoarece
⎛ ∂ 2C ∂ 2C ⎛ ∂ 2C ⎞ 2 ⎞ ⎛ ∂ 2C ⎞
⎜ ⋅ − ⎜ ⎟ ⎟ > 0 şi ⎜⎜ 2 ⎟⎟ >0
⎜ ∂ 2 S ∂ 2 T ⎜⎝ ∂S∂T ⎟⎠ ⎟ ⎝ ∂ S ⎠ (S optII ,ToptII )
⎝ ⎠ (S opt ,Topt )
II II
Deoarece
II II II
S opt S opt S opt
= ρ ⋅r ⇒ ρ = =
II
Topt r ⋅ Topt
II
a
ρ se numeşte şi indice de lipsă de stoc. În (1–ρ)% din cazuri, pe perioada T,
stocul se epuizează.
Probabilitatea epuizării stocului este
h 1−α
α =1− ρ = ⇒ d= h.
d +h α
Această relaţie arată că, dacă se acceptă drept cunoscută probabilitatea epui-
zării stocului, atunci costul lipsei de stoc este proporţional cu cel al stocării. Acest
fapt nu concordă totdeauna cu realitatea, şi de aici rezultă un inconvenient al
modelului, deoarece costurile h şi d sunt practic independente.
Comparând cele două modele se obţine
I
1 Topt
II
S opt = S opt
I
ρ , a opt
II
= a opt
I II
, Topt = ,
ρ ρ
adică
II
S opt < S opt
I II
, a opt > a opt
I II
, Topt > Topt
I
.
Rezolvare
3500 10141.85
ρ= = 0.875 ; ρ = 0.93541 ; II
a opt = ≈ 7407 ;
500 + 3500 0.93541
I
Topt
S II
= a ρ ≈ 6481 ; Topt
II II
= ≈ 18.51 ; Copt
II
= Copt
I
ρ ≈ 3 240 370.34 .
ρ
opt opt
Figura 9.8
Apăsând butonul Solve se obţine soluţia modelului sub forma dată în Tabelul 9.2.
Tabelul 9.2
INVENTORY MODEL
***************
ECONOMIC ORDER QUANTITY WITH PLANNED SHORTAGES
**********************************************
YOU HAVE INPUT THE FOLLOWING DATA:
**********************************
ANNUAL DEMAND = 120000 UNITS PER YEAR
ORDERING COST = $30000000 PER ORDER
INVENTORY HOLDING COST = $150000 PER UNIT PER YEAR
BACKORDER COST = $1050000 PER UNIT PER YEAR
WORKING DAYS PER YEAR = 300 DAYS
LEAD TIME FOR A NEW ORDER = 3 DAYS
INVENTORY POLICY
****************
OPTIMAL ORDER QUANTITY 7,406.56
ANNUAL INVENTORY HOLDING COST $425,298,608.33
ANNUAL ORDERING COST $486,055,552.38
ANNUAL BACKORDER COST $60,756,944.05
TOTAL ANNUAL COST $972,111,104.76
MAXIMUM INVENTORY LEVEL 6,480.74
AVERAGE INVENTORY LEVEL 2,835.32
MAXIMUM BACKORDERS 925.82
REORDER POINT 274.18
NUMBER OF ORDERS PER YEAR 16.20
CYCLE TIME (DAYS) 18.52
⎪u , dacã u ≤ a . kc a , i
⎩ i i i
Vânzătorii oferă deseori reduceri de preţ pentru cumpărarea unui lot mai mare
de produse. Există preţuri pentru intervale ale numărului de produse cumpărate.
Această practică este larg răspândită pentru că oferă avantaje atât cumpărătorului
cât şi vânzătorului, avantaje prezentate în Tabelul 9.3 .
Tabelul 9.3
Avantaje Dezavantaje
-preţuri reduse -stocuri mari
-mai puţine hârtii de completat -cheltuieli sporite de stocare
-transport mai ieftin -riscul deteriorării
Cumpărător -mai puţine momente cu lipsă de stoc -învechirea produselor
-produse uniforme
-securitate sporită (ar putea să crească
preţurile)
-transport mai ieftin -preţ unitar scăzut
Vânzător -mai puţine hârtii de completat -putere scăzută de
-producţie mai mare tranzacţionare cu clienţii
Se disting două cazuri :
9. Elemente de teoria stocurilor 211
Rezolvare
i) Vom folosi modelul lotului economic fără lipsă de stoc şi nu vom lua în seamă
reducerea furnizorului. Pentru acest caz avem : Q=100×12=1200 becuri pe an,
h=0.25×8=2 u.m. , s=27 u.m. , p=8 u.m. (p=preţul de achiziţie al unui bec).
Folosind formulele (9.4)-(9.5) obţinem valoarea optimă pentru comanda de
reaprovizionare
2Qs 2 ⋅ 27 ⋅ 1200
a opt = = = 180 ,
h 2
costul total anual de stocare
Q a opt 27 ⋅ 1200 180 ⋅ 2
CT = s+ h= + = 180 ,
a opt 2 180 2
iar costul becurilor este Q×p=1200×8=9600.
Aşadar, fără reducere, municipalitatea ar cheltui 9600+360=9960 u.m.
ii) Vom reface calculele ţinând seama de reducerea oferită de furnizor pentru un lot
de 600 becuri. În acest caz vor fi doar două lansări de comenzi de reaprovizionare
şi atunci costul de lansare total ar fi de 54 u.m. Costul unitar anual de păstrare
devine h’=0.98×0.25×8=1.96 u.m., iar costul total anual de păstrare este
600 ⋅ 1.96
= 588 . Costul de achiziţie devine 9600 − 9600 ⋅ 0.02 = = 9408 . În acest
2
caz municipalitatea ar plăti 9408+588+54=1050 u.m. În concluzie, oferta de
reducere trebuie respinsă pentru că, dacă ar fi acceptată, municipalitatea ar fi în
dezavantaj !
212 Modele şi algoritmi de optimizare
Cererea spitalului este de 50 000 unităţi pe an. Costul lansării unei comenzi de
reaprovizionare este de 50 u.m. şi costul de păstrare este 20% din costul
medicamentului pe an. Nu se admite lipsă de stoc şi se presupune că onorarea
comenzii se face imediat ce a fost lansată. Să se stabilească politica optimă a
spitalului de achiziţionare a medicamentelor.
Vom utiliza modelul lotului economic fără lipsă de stoc şi vom rezolva
problema în următorii paşi.
Pas 1. Cu modelul lotului economic fără lipsă de stoc, stabilim pentru cel mai mic
preţ mărimea optimă a comenzii de reaprovizionare. Costul unitar anual de păstrare
este h1=2.5×0.02=0.5 u.m.
2Qs 2 ⋅ 50 ⋅ 50000
(1)
a opt = = = 10000000 = 3163
h 0 .5
(1) (1)
Pas 2. Se compară a opt cu intervalul corespunzător preţului 2.50. Dacă a opt ar fi
în interval, soluţia este fezabilă şi optimă în acelaşi timp şi problema este
rezolvată. Altfel, soluţia nu este fezabilă şi se caută mărimea optimă a comenzii de
reaprovizionare pentru preţul 2.60 u.m.
Pas 3. În acest caz costul de păstrare este h2=2.6×0.02=0.52 u.m. Atunci,
2Qs 2 ⋅ 50 ⋅ 50000
(2)
a opt = = = 9615385 = 3101 .
h 0.52
( 2 `)
Se compară a opt cu intervalul corespunzător preţului 2.60.
( 2)
Pas 4. Dacă a opt ar fi în interval, soluţia este fezabilă şi optimă în acelaşi timp şi
problema este rezolvată. Altfel, soluţia nu este fezabilă şi se caută mărimea optimă
a comenzii de reaprovizionare pentru preţul 2.75 u.m.
Pas 5. Costul de păstrare este h3=2.75×0.02=0.55 u.m. Atunci,
2Qs 2 ⋅ 50 ⋅ 50000
( 3)
a opt = = = 9090910 = 3015 .
h 0.55
9. Elemente de teoria stocurilor 213
( 3)
Pas 6. a opt este în intervalul corespunzător preţului 2.75 şi soluţia găsită este
fezabilă.
Pas 7. {Compararea costurilor} Costul total anual este
Q a
CT (a ) = s + h + Q ⋅ p .
a 2
Aplicăm formula pentru cele trei valori ale marginii din stânga intervalului
pentru categoriile de preţ şi avem :
CT(1) (10 000) = 127 750 , CT( 2 ) (5000) = 131 800 , CT(3) (5000) = 139 158 .
Deoarece o cerere de 10 000 de unităţi o dată conduce la cel mai mic preţ, se va
adopta această politică.
Algoritm general
Pas 1. {Iniţializări}
Intrare: necesarul anual Q, costul de lansare s, costul unitar de stocare h,
intervalele pentru care se acordă reduceri q = (qk ,1 , qk , 2 )1≤k ≤n , n numărul
acestor intervale, preţurile unitare reduse ( pu )1≤k ≤n .
Pas 2. k:=n;
Determină cantitatea optimă aopt comandată cu modelul lotului economic pen-
tru pun .
Dacă aopt ≥qk,1 , determină Cn+1, costul total optim cu modelul lotului
economic pentru aopt; sw:=0; an+1:=aopt ;
Pas 3. Dacă sw≠0, atunci
Cât timp (k≥0 şi sw≠4) execută
Calculează ak:=aopt ;
Dacă a k ∉ [q k ,1 , q k , 2 ] atunci sw:=1; an+1:=qk,1 ; k:=k-1;
Dacă a k ∈ [q k ,1 , q k , 2 ] atunci sw:=4; an+1:=aopt ; Cn+1, costul total
optim cu modelul lotului economic pentru aopt ;
Dacă sw=4, atunci
Pentru k:=1,n
Calculează Ck costul total optim cu modelul lotului economic
Determină C n +1 := min C k ; a n +1 := min a k ;
1≤ k ≤ n +1 1≤ k ≤ n +1
⎛ 1 4999 ⎞ ⎛ 2.75 ⎞
⎜
q := ⎜ 5000 9999 ⎟ pu := ⎜ 2.60
⎜ 10000 106 ⎜
⎝ ⎠ ⎝ 2.50 ⎠
s
Lotul optim de reaprovizionare aopt ( h ) := 2⋅ Q⋅
h
Mn ( x) := m← x
1
i←1
for k ∈ 1 .. last ( x)
if m > x
k
m← x
k
i←k
⎛ m⎞
⎜
⎝i⎠
9. Elemente de teoria stocurilor 215
Discount ( Q , s , pu , ρ ) := k ← last ( pu )
n←k
sw ← 1
Q qk, 1
CT n+ 1 ← ⋅ s + pu k⋅ ρ ⋅ + Q⋅ pu k
qk, 1 2
a n+ 1 ← aopt ( pu k⋅ ρ )
sw ← 0 if a n+ 1 ≥ q k , 1
if sw ≠ 0
while ( k ≥ 1) ∧ ( sw ≠ 4)
h k ← pu k⋅ ρ
a k ← aopt ( h k)
if ¬( q k , 1 ≤ a k ≤ q k , 2)
ak ← q k , 1
k←k−1
if q k , 1 ≤ a k ≤ q k , 2
Q ak
CT n+ 1 ← ⋅ s + h k⋅ + Q ⋅ pu k
ak 2
a n+ 1 ← a k
sw ← 4
if sw = 4
for k ∈ 1 .. n
Q qk, 1
CT k ← ⋅ s + h k⋅ + Q⋅ pu k
qk, 1 2
Ao ← Mn ( CT )
CT n+ 1 ← Ao1
i ← Ao2
a n+ 1 ← ai
⎛ a n+ 1 ⎞
⎜
⎝ CT n+ 1 ⎠
Discount ( Q , s , pu , ρ ) =
.
216 Modele şi algoritmi de optimizare
Într-un model aleatoriu, pe lângă variabilele de decizie d1, ... , dn (de exemplu,
mărimi de comenzi, cicluri de reaprovizionare) intervin şi variabile aleatoare A1,
..., An, a căror repartiţie se presupune cunoscută.
Funcţia de eficienţă C(d1, ... , dn, A1, ... , An) va fi o variabilă aleatoare, iar
valorile optime ale variabilelor de decizie vor fi determinate din condiţia ca
eficienţa medie să fie optimă.
Printre elementele aleatoare ale unui model de teoria stocurilor, cel mai
important este cererea pe unitatea de timp. Repartiţia cererii în cazul cererii
continue poate fi: normală, log-normală, Weibull etc., iar în cazul cererii discrete,
9. Elemente de teoria stocurilor 217
poate fi: Poisson, Pascal, binomială etc. Dacă cererea este un proces aleatoriu,
atunci modelul de stocare este un model stochastic dinamic.
Timpul de avans, L, şi stocul intangibil (de siguranţă),
I S = P0 − R ,
R fiind cererea medie pe perioada timpului de avans, pot fi variabile aleatoare
continue sau discrete.
Mărimea stocului de siguranţă şi, corespunzător, nivelul de reaprovizionare
reduc şansa apariţiei lipsei de stoc, şi invers. Tabelul 9.5 dă efectul creşterii sau
reducerii nivelului de reaprovizionare asupra costurilor.
Tabelul 9.5
Acţiune Rezultat
Reducerea nivelului de Scade costul de stocare al stocului de siguranţă şi creşte
reaprovizionare costul lipsei de stoc
a
Reducerea lotului de Scade costul de stocare al stocului mediu ( ) şi cresc costul
reaprovizionare 2
lipsei de stoc şi costul total de lansare comenzi
Creşterea nivelului de Creşte costul de stocare al stocului de siguranţă şi scade
reaprovizionare costul lipsei de stoc
Creşterea lotului de Creşte costul de stocare al stocului mediu şi descreşte costul
reaprovizionare total de lansare comenzi
Creşterea cos-
turilor
Q
(1 − F ( P0 )) ⋅ d ⋅
a
Costul neadăugării
unei unităţi
O
P0 opt P0
Figura 9.9
∫ (R − P ) f ( R)dR
P0
0 numărul mediu de unităţi de stoc lipsă din stoc pe un ciclu
de reaprovizionare,
f(x) densitatea de repartiţie a cererii.
Se determină P0 opt şi aopt din condiţia impusă costului total dat de (9.6), să
fie minim:
⎧
⎪h − a d ⋅ P0 ⋅ f ( P0 ) + a d ⋅ [F ( P0 ) + P0 ⋅ f ( P0 ) − 1] = 0
⎧ ∂CT Q Q
⎪⎪ ∂P = 0 ⎪
⎨ 0 ⇒⎨
Q⎛ ⎞ h
∞ . (9.7)
⎪ ∂CT = 0 ⎪− 2 ⎜ s + d ∫ (R − P0 ) f ( R )dR ⋅ ⎟ + = 0
⎪⎩ ∂a ⎪⎩ a ⎜⎝ P0
⎟ 2
⎠
Prima relaţie (9.7) se poate rescrie astfel:
Q Q
h − d + d F ( P0 ) = 0 .
a a
Atunci
a⋅h
F ( P0 ) = 1 − ⇒ P0 opt . (9.8)
d ⋅Q
⎛ ∞ ⎞
2Q⎜ s + d ∫ (R − P0 opt ) f ( R )dR ⎟
⎜ ⎟ (9.9)
a opt = ⎝ P0 ⎠
.
h
220 Modele şi algoritmi de optimizare
Particularizări
1) Dacă timpul de avans, L, este constant şi cunoscut şi cererea, r, este o
variabilă aleatoare repartizată N (m,σR), atunci R=L⋅r este o variabilă aleatoare
( )
repartizată N L ⋅ m, L ⋅ σ R . Notând cu –zα , α – cuantila inferioară a
variabilei aleatoare N (0,1) , adică
− zα u2
1 −
α=
2π
∫e
−∞
2
du ,
P0 = L ⋅ m + z α Lσ R .
R = r1 + ... + rL a Erlang (λ , L)
P0
∫ f ( x)dx = 1 − α = P( R < P )
0
0
Exemplu. La un service auto sunt necesare 1800 bidoane de ulei de motor pe an.
Costul de lansare a unei comenzi de reaprovizionare cu ulei este de s=10 u.m.,
costul de păstrare h=0.6 u.m./an, iar timpul de avans este de 20 zile. Cererea
medie pe timpul de avans este R = 30 bidoane, R a N ( R, σ R ) . Costul lipsei
din stoc a unui bidon de ulei este d=5 u.m. Să se determine cantitatea optimă de
reaprovizionare şi punctul optim de reaprovizionare.
de sezon (costume de baie, hainele de iarnă), ziare etc. Cum comanda se face o
singură dată pe perioada considerată, singura decizie de stoc care trebuie luată este: ce
cantitate din produsul respectiv să se comande la începutul perioadei ? O astfel de
problemă este cunoscută sub numele de problema vânzătorului de ziare.
Tabelul 9.6
Funcţia empirică
Număr kilograme Număr de Probabilitatea
de
vândute (x) săptămâni cererii
repartiţie (P(x≤a))
160 4 0.08 0.08
170 10 0.2 0.28
180 12 0.24 0.52
190 15 0.3 0.82
200 9 0.18 1
Total 50
Rezolvare
În rezolvarea acestui tip de probleme este indicată folosirea metodei analizei
incrementale. Analiza incrementală compară câştigul sau pierderea realizată prin
comandarea unui articol suplimentar pentru care nu ar fi existat cerere, cu câştigul
sau pierderea realizată prin necomandarea unui articol pentru care ar fi existat cerere.
Fie: a cererea de aprovizionare cu roşii pentru o săptămână,
c+ costul unitar al supraestimării cererii, adică pierderea datorată
comandării unui kilogram suplimentar care apoi se constată că nu se poate vinde,
c- costul unitar al subestimării cererii, adică pierderea datorată necomandării
unui kilogram suplimentar care apoi se constată că s-ar fi putut vinde,
D+ pierderea totală datorată supraestimării comenzii de aprovizionare,
D+(a)=c+⋅P(a≤aopt)
D- pierderea totală datorată subestimării comenzii de aprovizionare,
D-(a)=c-⋅ P(a>aopt )= c- (1-P(a≤aopt)) .
Din egalitatea D+(a)= D-(a) se determină cantitatea optimă comandată astfel:
c_
P (a ≤ a opt ) = . (9.10)
c+ + c−
9. Elemente de teoria stocurilor 223
c_ 11 − 6
Pentru această problemă = = 0.5555 . Din Tabelul 9.6
c + + c − (6 − 2) + (11 − 6)
se constată că P (a ≤ a opt ) = 0.5555 şi se obţine aopt=190 kg .
Exemplu de cerere cu repartiţie continuă
O reţea de magazine comandă la o fabrică de încăţăminte un nou model de pantofi
bărbăteşti de primăvară-vară. La sfârşitul sezonului (30 septembrie) patronul
magazinelor va avea lichidare de stoc pentru ce nu s-a vândut până la acea dată.
Preţul de achiziţie de la fabrică este de 40 u.m. perechea, iar magazinul îi vinde cu
60 u.m. Preţul de lichidare de stoc este de 30 u.m. perechea şi se aşteaptă ca la
acest preţ stocul să fie lichidat. Câte perechi de pantofi ar trebui să comande
patronul magazinelor pentru a obţine profit maxim (pierderi minime) ? (Anderson
et al, 1994)
Rezolvare
Din experienţa anilor trecuţi, cererea pentru pantofi bărbateşti, măsura 42, este
uniformă şi cuprinsă între 350 şi 650 perechi, având media 500. Se apelează la
analiza incrementală pentru rezolvarea acestei probleme.
Fie: a cererea de aprovizionare cu pantofi bărbăteşti mărimea 42,
c+ costul unitar al supraestimării cererii, adică pierderea datorată comandării
unei perechi de pantofi suplimentare, care apoi se constată că nu se poate vinde,
c- costul unitar al subestimării cererii, adică pierderea datorată necomandării
unei perechi de pantofi suplimentare, care apoi se constată că s-ar fi putut vinde,
D+ pierderea totală datorată supraestimării comenzii de aprovizionare
D- pierderea totală datorată subestimării comenzii de aprovizionare.
Tabelul 9.7
Mărimea Pierderea
Cazul Pierderea produsă dacă Probabilitatea
comenzii posibilă
Cererea este supraestimată şi o
I 501 c+=10 P(a≤500)
unitate nu poate fi vândută
Cererea este subestimată şi o
II 500 c-=20 P(a>500)
unitate ar fi putut să fie vândută
iar aopt=550.
Ipotezele modelului
− stocul este unic (un singur tip de produse, c=1),
− variaţia stocului este discretă,
− intervalul de timp dintre două intrări în stoc este o variabilă aleatoare
exponenţială negativă de parametru λ,
− fiecare cerere este egală cu unitatea (r=1),
− τ – intervalul de timp dintre două cereri este o variabilă aleatoare exponenţială
negativă de parametru µ,
− intrările în stoc pot avea loc indefinit,
− N(t) – numărul unităţilor din stoc este un proces aleatoriu staţionar descris de
un proces de naştere şi deces.
Cu notaţiile de la modelele de aşteptare avem
9. Elemente de teoria stocurilor 225
ρ λ
M [N (t )] = , ρ= , p0 = 1 − ρ .
1− ρ µ
Construcţia funcţiei de cost. Notăm cu:
cu – costul unei unităţi din stoc,
α − fracţiunea pe care o reprezintă costul de stocare din costul unităţii de stoc,
(h=αcu) ,
d – costul unitar al lipsei de stoc,
p0 – probabilitatea de a avea lipsă de stoc.
Atunci obţinem
• costul mediu de stocare = cu⋅α⋅M[N(t)],
• costul mediu al lipsei de stoc = d⋅p0,
• funcţia de eficienţă (costul mediu ce trebuie optimizat) =C(ρ), unde
ρ
+ d ⋅ (1 − ρ ) .
C ( ρ ) = c u ⋅ α ⋅ M [ N (t )] + d ⋅ p 0 = c u ⋅ α ⋅
1− ρ
Din condiţia ca C(ρ) să fie minim ( C ′( ρ ) = 0 , C ′′( ρ ) > 0) , se obţine
cu ⋅ α
ρ opt = 1 −
d
şi astfel se pot determina elementele necunoscute ale modelului.
Practic se cunoaşte cererea τ a Exp( µ ) şi astfel numărul de unităţi cerute pe
unitatea de timp este o variabilă aleatoare Poisson de parametru µ, µ fiind
intensitatea cererii, presupusă cunoscută.
Se cere determinarea parametrului λ opt = intensitatea optimă de încărcare a
stocului.
Dar
⎛ c u ⋅ α ⎞⎟
λ = µ ⋅ ρ = µ ⋅ ⎜1 − .
⎜ d ⎟⎠
⎝
Se poate determina probabilitatea ca nivelul stocului să depăşească o anume
valoare ν ,
∞ ∞
P(N (t ) ≥ ν ) = ∑ p n = (1 − ρ ) ⋅ ρ ν ⋅ ∑ ρ j = ρ ν
n =ν j =0
deoarece
p n = ρ n ⋅ (1 − ρ ) .
⎧ρ n ⋅ p 0 pentru 1 ≤ n ≤ m
pn = ⎨
⎩0 pentru n > m
m
şi deoarece ∑p
n =1
n = 1 se obţine
1− ρ
p0 = .
1 − ρ m +1
Astfel
m m
ρ ⋅ (1 − ρ ) m
M [N (t )] = ∑ n ⋅ p n = ∑ n ⋅ ρ n ⋅ p 0 = ⋅ ∑ n ⋅ ρ n −1 .
n =1 n =1 1 − ρ m +1 n =1
Însă
m
1− ρm
∑ρn = ρ
n =1 1− ρ
de unde rezultă că
m
[1 − (m + 1) ⋅ ρ ]⋅ (1 − ρ ) + ρ − ρ
m m +1
∑ n ⋅ ρ n−1 =
n =1 (1 − ρ )2
.
Obţinem
ρ (1 − ρ ) [1 − (m + 1) ⋅ ρ m ]⋅ (1 − ρ ) + ρ − ρ m +1
N = M [N (t )] = ⋅ =
1 − ρ m +1 (1 − ρ )2
=
[1 − (m + 1) ⋅ ρ m + m ⋅ ρ m+1 ]⋅ ρ .
(1 − ρ ) ⋅ (1 − ρ m+1 )
Înlocuind M[N(t)] în funcţia de cost şi punând condiţia de minim se obţine
ρopt cu ajutorul căruia se pot determina elementele modelului.
De exemplu, numărul mediu de cereri ce urmează a fi satisfăcute (adică
lungimea medie a cozii)
R = M [N (t ) − 1] =
[
ρ 2 ⋅ 1 − m ⋅ ρ m +1 + (m − 1) ⋅ ρ m ]
(1 − ρ ) ⋅ 1 − ρ m+1
.
( )
Se obţine o nouă funcţie de cost dacă se consideră valorile medii N , R astfel
ρ
C1 ( ρ ) = c u ⋅ α ⋅ N + d ⋅ R = ⋅
(1 − ρ ) ⋅ (1 − ρ m+1 )
⋅ {cu ⋅ α ⋅ [1 − (m + 1) ⋅ ρ m + m ⋅ ρ m+1 ] + d ⋅ ρ ⋅ [1 − m ⋅ ρ m−1 + (m − 1) ⋅ ρ m ]} .
Din condiţia de optim (min C1(ρ) ) rezultă ρopt şi acum se pot calcula
elementele modelului.
Ipotezele modelului
• în momentul când se scoate o unitate din stoc se comandă alta, astfel încât
numărul de unităţi din stoc plus cele comandate să fie S=constant,
• fiecare cerere este egală cu unitatea (r=1); numărul de cereri pe unitatea de
timp este o variabilă aleatoare Poisson, de parametru λ,
• timpul de avans L este o variabilă aleatoare exponenţială negativă de
parametru µ.
iar
c! 1
pn = ⋅ p0 = ρ c − n p c , 1 ≤ n ≤ c,
(c − n)!⋅ρ n
(c − n ) !
unde
228 Modele şi algoritmi de optimizare
λ
ρ= .
µ
c
c−n n
M[N(t)] = p c ∑ ρ .
n =0 n
M[R] = c−M[N(t)].
1
p0 = m +1
⎛ρ⎞
1− ⎜ ⎟
c −1
ρ n
ρ c
⎝c⎠ (9.12)
∑ n !
+
c !
⋅
ρ
n =0
1−
c
Se pot determina acum:
− numărul mediu de unităţi existente în stoc
230 Modele şi algoritmi de optimizare
c
M[N+(t)] = ∑ (c − n ) p
n=0
n ,
Atunci
c +1 c +1+ m
C ′(c) ≈ C (c + 1) − C (c) = h ⋅ ∑ (c + 1 − n) ⋅ p n − d ⋅ ∑ (c + 1 − n ) ⋅ p n −
n =0 n =c + 2
S S+L
− h ⋅ ∑ ( S − n) ⋅ p n + d ⋅ ∑ ( S − n) ⋅ p n =
n =0 n = S +1
c c+m
= h ⋅ ∑ (c + 1 − n − c + n ) ⋅ p n − d ⋅ ∑ (c + 1 − n − c + n ) ⋅ p n −
n =0 n = c +1
Pas 0. Intrare m, d, h, ρ;
d
k := , c := 0 ;
d +h
Pas 1. c:=c+1;
Calculează p0 conform cu (9.12) şi pn, 1 ≤ n ≤ c + m , conform cu (9.11);
Σ := p 0 ; i := 0 ;
Pas 2. i:=i+1 ; Σ:= Σ+pi ;
dacă Σ<k şi i<c+m mergi la Pasul 2;
Pas 3. Dacă Σ<k şi i=c+m mergi la Pasul 1 ;
Pas 4. Dacă Σ ≥ k şi i ≤ c + mL atunci c este optim. Stop!
1. Din experienţa anilor trecuţi, universitatea are nevoie pentru consumurile curente
de 1200 de cutii de hârtie A4 pentru un an. Costul de lansare a unei comenzi de
reaprovizionare cu hârtie este de 150 000 lei, iar pentru depozitarea unei cutii se
consideră că se cheltuiesc 35 000 lei pe un an. Să se stabilească un plan optim de
aprovizionare cu hârtie A4, care să conducă universitatea la cheltuieli minime. Se
consideră că anul are 300 zile lucrătoare şi că nu se admite lipsa hârtiei în depozit.
R. Pentru un an avem: aopt=101.42 cutii ≈ 101 cutii, costul total anual este de
3 549 647.87, numărul de comenzi lansate într-un an este 12, Topt ≈ 25 zile.
Tabelul 9.8
Cantitate Preţ unitar
0 – 99 36
100 – 199 32
200-299 30
≥300 28
ANEXĂ
Noţiuni generale de probabilităţi şi statistică
matematică
A.1.2. Probabilitate
Proprietăţi
Teorema 1. Fie X o variabilă aleatoare şi b un număr finit. Atunci:
a) X + b
b) b⋅ X
c) X
d) X 2
1
e) , pentru X ≠ 0
X
sunt de asemenea variabile aleatoare.
Anexă 235
Exemplu. Dacă X este o variabilă aleatoare discretă (ia numai un număr finit sau o
infinitate numărabilă de valori), atunci funcţia de repartiţie este suma
probabilităţilor valorilor lui X (ω) situate la stânga lui x.
x 0 1 2 3 4
p 0.2 0.3 0.1 0.3 0.1
⎧0 x≤0
⎪0.2 0 < x ≤1
⎪
⎪⎪0.2 + 0.3 1< x ≤ 2
F ( x) = ⎨
⎪0.2 + 0.3 + 0.1 2< x≤3
⎪0.2 + 0.3 + 0.1 + 0.3 3< x ≤ 4
⎪
⎪⎩1 4< x
Deci, pentru variabila aleatoare discretă, F ( x) = P( X < x) = ∑ P ( X = x i ) .
xi < x
Proprietăţi
Teorema 3. Fie X o variabilă aleatoare, F funcţia sa de repartiţie şi x1, x2 ∈ R.
Atunci:
a) P( x1 ≤ X < x2 ) = F( x2 ) − F( x1 ) ;
b) P( x1 < X < x2 ) = F( x2 ) − F( x1 ) − P(X = x1 ) ;
c) P( x1 < X < x2 ) = F( x2 ) − F( x1 ) − P(X = x1 ) + P(X = x2 ) ;
d) P( x1 ≤ X ≤ x2 ) = F( x2 ) − F( x1 ) + P(X = x2 ) .
Teorema 4. Fie X o variabilă aleatoare şi F funcţia sa de repartiţie. Atunci:
236 Modele şi algoritmi de optimizare
a) F( x1 ) ≤ F( x2 ) , x1 < x2 ;
b) lim F ( x) = F (+∞) = 1 ; lim F ( x) = F (−∞) = 0 ;
x →∞ x → −∞
c) F( x − 0) = F( x ) (continuitate la stânga).
x
Dacă există o funcţie nenegativă f( y ) astfel încât F ( x) = ∫ f ( y )dy ,
−∞
Proprietăţi
a) f ( x ) ≥ 0 , (∀) x ∈ R ;
x2
b) (∀) x1 , x2 ∈ R , P(x1 ≤ X < x 2 ) = ∫ f ( x)dx ;
x1
∞
c) ∫−∞
f ( x ) dx = 1 .
a) M[ a X + b] = aM[X] + b ;
b) M[ X + Y] = M[X] + M[Y] ;
c) M[ X ⋅ Y] = M[ X] ⋅ M[ Y] numai dacă X şi Y sunt independente.
Proprietăţi
Fie X , Y – variabile aleatoare independente, iar a, b – constante reale. Atunci:
a) D[ a X + b] = a2D[X] ;
b) D[ X + Y] = D[X] + D[Y] .
Repartiţia Poisson
O variabilă aleatoare discretă X urmăreşte repartiţia Poisson de parametru λ
dacă
λn
P ( X = n) = f ( n) = e −λ ,
n!
unde λ>0 , iar n=0, 1, 2, ... Pentru acest tip de variabilă aleatoare M[X]= λ şi
D2[X]= λ..
Repartiţia exponenţială
O variabilă aleatoare are repartiţia exponenţială dacă are densitatea de
probabilitate
f (t ) = λe − λxt , t ≥ 0 , λ > 0 ,
iar funcţia de repartiţie este
F (t ) = 1 − e − λt , t ≥ 0 .
2
1 ⎛1⎞
Dacă Y a Exp(λ ) , atunci M [Y ] = , iar D 2 [Y ] = ⎜ ⎟ .
λ ⎝λ⎠
Repartiţia Erlang(λ,n)
Fie Y1, Y2,..., Yn , n variabile aleatoare repartizate Exp(λ) şi independente, iar
n
X = ∑ Yi . Variabila aleatoare X este repartizată Erlang(λ,n) şi are densitatea de
i =1
repartiţie
λn
f ( x) = x n−1e −λx ,
Γ ( n)
iar Γ este funcţia gama (funcţia lui Euler de speţa a II-a)
∞
Γ(a) = ∫ x a −1 e − x dx .
0
n n3
Dacă X a Erlang (λ ) atunci M [ X ] = , iar D 2 [ X ] = .
λ λ2
A.3.3. Repartiţia normală unidimensională a lui Gauss
Anexă 239
unde M[X]=µ, iar D2[X]=σ2. Când µ=0 şi σ=1 , variabila X se numeşte variabilă
aleatoare normală standard (sau redusă), iar pentru aceasta F(x) este tabelată.
P(ξ (t ) − ξ ( s ) = n ) = e −λ (t − s )
[λ (t − s ]
n
, (∀)n ∈ N * .
n!
Se poate considera că ξ (t ) înregistrează numărul de apariţii ale unui
eveniment în intervalul de timp [0, t] .
Media şi dispersia procesului Poisson sunt M [ξ (t )] = λt , D 2 [ξ (t )] = λt .
Într-un proces Poisson probabilitatea apariţiei unui eveniment este constantă şi
apariţia unui eveniment este independentă de ceea ce s-a întâmplat imediat înaintea
observaţiei curente. Pot fi considerate procese Poisson: numărul erorilor de tipar
dintr-o carte, ziar etc., numărul pieselor defecte dintr-un lot de fabricaţie, vânzările
unui produs etc. Repartiţia probabilităţii Poisson aplicată procesului Poisson dă
probabilitatea numărului de evenimente pe un interval, [0, t] , date fiind:
a) numărul mediu de evenimente pe unitatea de timp, λ=rata sau intensitatea
procesului,
b) lungimea intervalului, t .
Atunci, probabilitatea apariţiei a n evenimente în intervalul [0, t] este
e − λt (tλ ) n
P( X = n λ , t ) = .
n!
Anexă 241
1. Enunţarea ipotezei;
2. Se specifică α şi β . Pe baza acestora se va determina numărul de observaţii
care trebuie făcute pentru a calcula statistica aleasă;
3. Se determină care valori ale unei anumite statistici, valori ce formează regiunea
critică, determină respingerea ipotezei şi care determină acceptarea ipotezei;
4. Se calculează valoarea statisticii de selecţie;
5. Se acceptă sau nu ipoteza, după cum valoarea obţinută pentru statistică este în
afara sau în interiorul regiunii critice.
Acest test este datorat lui K. Pearson care a arătat că, în cazul unui sondaj
nonexhaustiv în populaţia chestionată, când probabilităţile pi nu sunt aproape de 0
sau 1, iar produsele N i′ = Np i , unde p i = f ( x i ) , (∀)i = 1, n , calculate după
n
(N i − N i′ )2
estimarea parametrilor, nu sunt prea mici ( N i′ > 5 ), atunci χ c2 = ∑
i =1 N i′
are repartiţia χν cu ν = n − 1 − k , n fiind numărul de valori observate, iar k ,
2
n←∞
⎝ n ⎠ −∞
244 Modele şi algoritmi de optimizare
Funcţia K(u) se numeşte funcţia lui Kolmogorov şi există tabele cu cuantilele ei.
uα
Pas 7. Dacă d < , se acceptă ipoteza H0 , altfel se respinge. Stop!
n
BIBLIOGRAFIE
I SBN 9 7 3 - 8 4 6 6 - 7 6 - 8
9 789738 466760