Vous êtes sur la page 1sur 252

Romică TRANDAFIR

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.

MODÈLES ET ALGORITHMES D’OPTIMISATION

Cet ouvrage présente un ensemble de modèles, de méthodes et d’algorithmes


d’optimisation. Le premier chapitre, Introduction, où l’objet de l’optimisation et les
principaux domaines d’application sont fournis, est suivi de Graphes en optimisation,
Programmation convexe, Programmation linéaire, le Problème de transport,
Programmation dynamique, Programmation quadratique, Éléments de la théorie files
d’attente, Éléments de la théorie de stockes et une Annexe.
Ces chapitres représentent un minimum de connaissances nécessaires dans les
activités pratiques de management des ingénieurs et économistes.
La plupart des résultats sont démontrés, mais il y a des résultats (théorèmes,
propositions) qui sont acceptés sans démonstration, pour lesquelles on indique
l’ouvrage où ils sont démontrés. Les méthodes et les algorithmes correspondants sont
illustrés par exemples complètement résolus. On a donné également les solutions
obtenues en utilisant les logiciels Management Scientist, Excel et MathCAD. Presque
tous les chapitres finissent par des problèmes proposés à résoudre.
L’ouvrage s’adresse aux ingénieurs, économistes, mathématiciens et étudiants des
facultés techniques et économiques, étant un outil pour résoudre les problèmes
pratiques.

8
Romică Trandafir

MODELE ŞI ALGORITMI
DE OPTIMIZARE
Seria „Matematică”

Editura AGIR
Bucureşti, 2004
ASOCIAŢIA GENERALĂ A INGINERILOR DIN ROMÂNIA

Copyright © EDITURA AGIR, 2004


Editură acreditată de CNCSIS

Toate drepturile pentru această ediţie sunt rezervate.


All rights reserved.

Adresa: Calea Victoriei nr. 118, sector 1, Bucureşti, cod 010071;


telefon: 40 21 212 81 04; 40 21 212 81 06 (redacţie);
40 21 211 83 50 (difuzare); fax: 40 21 312 55 31;
e-mail: editura@agir.ro; Internet: http://www.agir.ro

Referenţi ştiinţifici:
● prof. univ. dr. Ion Văduva;
● prof. univ. dr. Ştefan Mititelu

Redactor: ing. Adina Negoiţă


Coperta: Răzvan Drăghici
Bun de tipar: 25.08.2004; Coli de tipar: 15,5
ISBN 973-8466-76-8
Imprimat în România
PREFAŢĂ

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.

Bucureşti, 20 iulie 2004


Prof. univ. dr. Ion Văduva
6 Modele şi algoritmi de optimizare
CUPRINS

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

3. Programare convexă ......................................................................................................43


3.1. Mulţimi şi funcţii convexe........................................................................................43
3.2. Extreme condiţionate ................................................................................................45
3.2.1. Cazul restricţiilor egalităţi...............................................................................48
3.2.2. Cazul restricţiilor inegalităţi ...........................................................................49

4. Programare liniară ........................................................................................................51


4.1. Exemple de probleme de programare liniară ............................................................51
4.1.1. Utilizarea optimă a resurselor .........................................................................51
4.1.2. Problema de transport .....................................................................................52
4.1.3. Alocarea optimă a fondurilor financiare .........................................................54
4.1.4. Gestionarea optimă a unui depozit..................................................................54
4.1.5. Problema dietei ...............................................................................................55
4.2. Diferite forme ale problemelor de programare liniară ..............................................56
4.3. Algoritmul simplex ...................................................................................................57
4.4. Fundamentele algoritmului simplex .........................................................................59
4.5. Enunţul algoritmului simplex ...................................................................................62
4.6. Tabelul simplex şi transformarea sa .........................................................................63
4.7. Exemplu....................................................................................................................65
4.8. Convergenţa algoritmului simplex. Degenerare şi ciclare ........................................72
4.9. Interpretarea geometrică a algoritmului simplex ......................................................74
4.10. Interpretarea economică a algoritmului simplex.....................................................76
4.11. Metoda celor două faze...........................................................................................77
4.12. Dualitatea în programarea liniară............................................................................82
4.13. Teorema fundamentală a dualităţii..........................................................................84
8 Modele şi algoritmi de optimizare

4.14. Algoritmul simplex dual .........................................................................................89


4.15. Interpretarea economică a algoritmului simplex dual.............................................92
4.16. Determinarea unei soluţii dual admisibile ..............................................................94
4.17. Probleme propuse ...................................................................................................95

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

6. Programare pătratică ..................................................................................................122


6.1. Exemple de probleme care conduc la programare pătratică ......................................122
6.1.1. Utilizarea optimă a resurselor .......................................................................122
6.1.2. Problema investiţiei ......................................................................................123
6.1.3. Regresii liniare..............................................................................................123
6.2. Definiţii. Proprietăţi................................................................................................124
6.3. Fundamentarea algoritmului lui Wolfe...................................................................127
6.4. Forma scurtă a algoritmului lui Wolfe....................................................................132
6.5. Probleme propuse ...................................................................................................141

7. Programare dinamică ..................................................................................................143


7.1. Generalităţi .............................................................................................................143
7.2. Analiza retrospectivă ..............................................................................................146
7.2.1. Rezolvarea în cazul aditiv.............................................................................147
7.2.2. Problema repartiţiei investiţiilor ...................................................................148
7.2.3. Problema gestiunii stocului...........................................................................152
7.2.4. Problema alocării optime a resurselor...........................................................155
7.3. Probleme propuse ...................................................................................................157

8. Elemente de teoria aşteptării.......................................................................................161


8.1. Introducere în teoria aşteptării ................................................................................161
8.2. Caracterizarea procesului N(t) ca proces de naştere şi deces..................................162
8.3. Modelul Po(λ)/Exp(µ)/1:(∞,FIFO)........................................................................165
8.4. Modelul Po(λ)/Exp(µ)/1:(m, FIFO).......................................................................170
8.5. Modelul Po(λ)/Exp(µ)/c:(∞, FIFO) ........................................................................174
8.6. Modelul P0(λ)/Exp(µ)/c:(m,FIFO).........................................................................180
8.7. Simulare..................................................................................................................185
8.8. Probleme propuse ...................................................................................................188

9. Elemente de teoria stocurilor ......................................................................................194


9.1. Introducere în teoria stocurilor ...............................................................................194
9.1.1. Punerea problemei ........................................................................................194
9.1.2. Concepte utilizate în teoria stocurilor ...........................................................195
9.2. Modelul clasic al lotului economic .........................................................................199
9.3. Modelul clasic al lipsei de stoc ...............................................................................204
Cuprins 9

9.3.1. Modelul de stocare considerând influenţa preţului de cumpărare ................209


9.3.2. Modelul de stocare considerând influenţa costului de producţie ..................209
9.4. Extensii ale modelului clasic al lotului economic...................................................210
9.5. Model pentru stocarea mai multor tipuri de produse ..............................................216
9.6. Modele stochastice de stocare.................................................................................216
9.6.1. Determinarea nivelului optim de reaprovizionare.........................................217
9.6.2. Modele de stocare pe o singură perioadă cu cerere aleatoare .......................221
9.6.3. Modele stochastice de stocare bazate pe modele de aşteptare ......................224
9.6.4. Modelul P0(λ)/Exp(µ)/1:(∞, FIFO)...............................................................224
9.6.5. Modelul cu mai multe staţii paralele şi cu timp de avans L aleatoriu ...........226
9.7. Probleme propuse ...................................................................................................230

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

A.5.3. Testul Kolmogorov ......................................................................................243

Bibliografie .......................................................................................................................245

Index alfabetic ..................................................................................................................247


10 Modele şi algoritmi de optimizare
1. INTRODUCERE

1.1. Obiectul optimizării

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.

1.1.1. Construcţia modelului

După ce decidentul a identificat factorii critici ai problemei concrete pe care o


are de rezolvat, aceştia trebuie combinaţi în mod logic formând astfel modelul. Un
model este reprezentarea simplificată a problemei reale. Prin modelare, fenomenului
natural complex i se reproduce comportarea esenţială cu mai puţine variabile şi care
sunt legate între ele mai simplu. Avantajele unui model simplu sunt:
1) economia de timp de concepere
2) poate fi înţeleasă realitatea de către decident
3) dacă este necesar, modelul poate fi modificat repede şi eficient.
12 Modele şi algoritmi de optimizare

Un model cât mai apropiat de realitate cere un timp excesiv în construcţie.


Decidentul doreşte ca modelul simplificat să prezică rezultate rezonabile şi să fie
consistent cu acţiunea efectivă. După ce modelul a fost construit se pot obţine
concluziile prin intermediul acţiunilor logice. Decidentul îşi bazează acţiunile sau
deciziile pe aceste concluzii. Dacă deducerea concluziilor din modelul abstract este
corectă şi dacă variabilele importante au fost abstractizate atunci soluţia modelului
ar servi ca o soluţie efectivă pentru problema empirică.

Există două surse de erori în folosirea modelului pentru factorul de decizie:


1) omiterea unor variabile importante din model
2) erori în definirea relaţiilor dintre variabile.

Tehnica abordată pentru descrierea şi stabilirea legăturilor variabilelor selectate


depinde de natura variabilelor. Dacă variabilele pot fi date în reprezentare
cantitativă atunci modelele matematice sunt cele mai indicate. Matematica
împreună cu calculatoarele moderne fac posibilă rezolvarea problemelor care cer
modele de mare complexitate şi atunci când analiza cantitativă se poate aplica ea
facilitează procesul de luare a deciziilor.
În luarea unei decizii, se stabileşte criteriul de decizie, se selectează
alternativele, se construieşte un model, se evaluează alternativele folosind modelul
apoi se selectează cea mai bună alternativă.
Un model este o abstracţie şi o simplificare a unei probleme reale, încorporând
ideal elementele esenţiale şi relaţiile din problema reală.
Rezolvarea unui model înseamnă obţinerea concluziilor logice care rezultă,
concluzii ce constituie un ghid efectiv în luarea deciziei dacă modelul este proiectat
şi rezolvat corect. Luarea deciziei implică informaţia cantitativă obţinută din model
cu judecarea intuitivă a factorilor calitativi.

1.1.2. Concepte de bază în modelare

Primul pas în construirea unui model este stabilirea factorilor şi variabilelor pe


care decidentul le consideră importante. Acestea pot fi clasificate în cinci categorii:
variabile de decizie, variabile exogene, restricţii, măsuri ale performanţei şi
variabile intermediare.
Variabilele de decizie sunt acele variabile pe care le controlează decidentul, ele
reprezentând alegerile alternative pentru decident. De exemplu: trebuie să se
introducă un nou produs în fabricaţie. Decidentul poate alege: să se introducă sau
nu, preţul, culoarea, suma alocată reclamei etc.
Variabilele exogene sau externe sunt acelea care sunt importante în problema
de decizie, dar sunt controlate de factori externi sferei decidentului. De exemplu:
preţul materiilor prime pentru realizarea noului produs.
1.Introducere 13

Restricţiile pot fi legate de capacităţile de producţie, resurse, limitări


legislative, politica firmei etc.
Măsuri ale performanţei. În luarea unei decizii decidentul are un scop, un
obiectiv pe care încearcă să-l atingă. Criteriile sau măsurile performanţei sunt
expresii cantitative ale acestor obiective.
Variabilele intermediare sunt necesare pentru includerea tuturor factorilor
importanţi în problema de decizie. Adesea ele leagă factorii de cost şi de câştig. Se
folosesc să lege variabilele de decizie şi exogene de măsurile de performanţă.

*
* *

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.

Cuvintele « a optimiza, optimizare etc. » sunt presupuse să reflecte această idee


de « cel mai bine posibil ». În viaţa curentă alegerile posibile se limitează adesea la
două (atunci le numim alternative) sau câteva unităţi, de tipul că algoritmul care ia
decizia se reduce la a înfăţişa, explicit sau nu, toate posibilităţile, să considere şi să
evalueze consecinţele lor probabile şi să reţină pe cea care pare « cea mai bună »
(dar cea mai bună are sens doar în măsura în care un criteriu de alegere a fost
definit mai înainte).
În problemele tehnice, alegerile posibile reprezintă adesea un continuu (de
exemplu: ce dimensiune să se dea unei grinzi ?) şi o enumerare exhaustivă a
posibilităţilor este de neconceput. Atunci trebuie găsit un algoritm mai performant,
adică o metodă pentru a găsi drumul spre soluţia cea mai bună dintre toate soluţiile
posibile.

Optimizarea poate fi definită ca ştiinţa determinării «celei mai bune» soluţii la


anumite probleme definite matematic, care sunt adesea modele ale realităţii fizice.
Ea implică studiul criteriilor de optimalitate pentru probleme, determinarea soluţiei
cu metode algoritmice, studiul structurii acestor metode şi experimentarea pe
calculator a metodelor cu date experimentale şi cu date reale.

Metodele de optimizare au o largă aplicabilitate în aproape orice activitate în


care sunt prelucrate informaţiile numerice: ştiinţă, inginerie, matematică, economie,
comerţ etc.
O selecţie a domeniilor în care apar probleme de optimizare ar cuprinde:
proiectarea reactoarelor chimice, a aparatelor aerospaţiale, a clădirilor, a podurilor,
în comerţ în probleme de alocarea resurselor, planificarea producţiei, a stocurilor,
în diferite ramuri ale analizei numerice, în ajustarea datelor, principii variaţionale
14 Modele şi algoritmi de optimizare

în sisteme de ecuaţii diferenţiale şi cu derivate parţiale, funcţii de penalitate etc.


(Cohen, 1995).

Se optimizează o funcţie obiectiv care cuantifică produsul unui proces


economic sau profitul rezultat în urma aplicării sistemului.

Conceptul de optimizare este bine încetăţenit ca principiul de bază în analiza


problemelor complexe de decizie sau alocare. Folosirea optimizării se bazează pe
concentrarea atenţiei asupra unui singur obiectiv conceput să cuantifice performanţa
şi calitatea deciziei într-o problemă ce ar necesita determinarea valorilor unui număr
mare de variabile interconectate. Acest obiectiv este maximizat sau minimizat supus
unor restricţii care să limiteze alegerea variabilelor de decizie. Dacă un aspect al
problemei poate fi identificat şi caracterizat printr-un obiectiv (de exemplu: profitul
într-o afacere) atunci optimizarea poate să ofere un cadru adecvat pentru o astfel de
analiză. Optimizarea ar trebui privită ca un instrument de concepere şi analiză, şi nu
ca un principiu care să ducă la soluţia corectă din punct de vedere filozofic.
Formularea problemei implică întotdeauna găsirea unui echilibru între
construirea unui model suficient de complex pentru a descrie cât mai bine
problema şi uşurinţa de rezolvare a acestuia.

1.2. Tipuri de probleme

Termenul programare, în această lucrare va fi sinonim cu optimizare şi îşi are


originea în planificarea optimală.
Când variabilele sunt supuse unor restricţii (relaţii) avem de-a face cu
programare cu restricţii, care face obiectul acestei lucrări. În lipsa restricţiilor
spunem că avem programare fară restricţii (Luenberger, 1989).

Problemele fără restricţii par lipsite de proprietăţi structurale astfel încât


aplicabilitatea lor în probleme practice este redusă.

Problemele cu restricţii permit modelarea fenomenelor complexe prin


descompunerea în subprobleme şi fiecare subproblemă având mai multe restricţii.
Forma generală a unei probleme de programare cu restricţii este
⎧min f ( x ) x ∈ R n

⎨g i ( x) = 0 i ∈ E (1.1)
⎪ g ( x) ≤ 0 i ∈ I
⎩ i
unde: f este funcţia obiectiv,
gi sunt funcţiile care dau restricţiile asupra variabilelor x1, x2, …, xn,
E este mulţimea indicilor pentru restricţiile cu egalitate, iar
I este mulţimea indicilor pentru restricţiile cu inegalitate.
Restricţiile de forma g i ( x ) ≤ bi pot fi puse sub forma g i ( x ) − bi ≤ 0 .
1.Introducere 15

Definiţia 1.1. Un punct x ∈ R n care verifică restricţiile (1.1) se numeşte punct


admisibil (realizabil) sau soluţie admisibilă şi mulţimea tuturor acestor puncte R,
formează regiunea admisibilă (realizabilă).

Definiţia 1.2. O soluţie admisibilă x * ∈ R este o soluţie optimă pentru problema


(1.1) dacă f ( x * ) ≤ f ( x ) , (∀)x ∈ R .

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ă.

Programarea liniară permite rezolvarea unei game largi de probleme cu un efort


redus. Popularitatea programării liniare se datorează în principal etapei de
formulare, şi nu celei de rezolvare numerică, deoarece multe dintre restricţiile şi
obiectivele care apar în practică sunt liniare prin definiţie.

Optimizarea sistemelor reale cu evoluţie în etape constituie obiectul


programării dinamice, care are la bază pricipiul de optimalitate al lui Bellman
(Kaufmann, II, 1967), care poate fi exprimat astfel: Orice politică optimă nu poate
fi alcătuită decât din subpolitici optime.

Fenomenele de aşteptare se optimizează cu modele de aşteptare care dau


informaţii asupra organizării sistemului în vederea reducerii timpilor de aşteptare în
sistem, a reducerii cheltuielilor de funcţionare a sistemului de aşteptare etc.

Asigurarea unui regim optim de funcţionare a unui proces de producţie sau


aprovizionarea optimă cu anume sortimente a cererilor pieţei se realizează cu
ajutorul modelelor de stocare.

Ca o aplicaţie practică a teoriei grafurilor este prezentată organizarea şi


planificarea proiectelor complexe şi stabilirea duratei minime de realizare a acestora.
Toate aceste modele fac obiectul acestei lucrări, fiind prezentate soluţiile
modelelor, exemple practice rezolvate fie manual, fie cu ajutorul Solver-ului din
EXCEL, fie cu ajutorul pachetului de programe specializat în rezolvarea
problemelor de optimizare, Management Scientist (MS), fie cu ajutorul pachetului
de programe MathCAD.
16 Modele şi algoritmi de optimizare

1.2.1. Dimensiunea problemelor

O măsură a complexităţii problemei de programare este dimensiunea acesteia


exprimată prin numărul de necunoscute şi de restricţii (Luenberger, 1989).
Dimensiunea problemelor care pot fi rezolvate a crescut o dată cu dezvoltarea
teoriei şi a tehnicilor de calcul.
Se pot distinge acum trei categorii de probleme: de dimensiune redusă (cu cel
mult 5 variabile sau restricţii), de dimensiune medie (între 5 şi 100 de variabile sau
restricţii) şi de dimensiuni mari (cu peste 100 de variabile şi restricţii). Această
clasificare reflectă nu numai diferenţe de dimensiuni, dar şi de abordare. Astfel
problemele de dimensiuni mici pot fi rezolvate de mână sau cu un calculator de
buzunar. Problemele de dimensiuni medii pot fi rezolvate pe un calculator, folosind
programe matematice generale. Problemele de dimensiuni mari necesită programe
sofisticate care exploatează caracteristicile particulare ale problemei şi de obicei se
rulează pe calculatoare de mare capacitate.

Teoria iniţială a optimizării s-a concentrat asupra obţinerii rezultatelor teoretice,


ignorând aspectele de calcul ale metodelor propuse. Abordările recente se axează pe
exploatarea caracteristicilor calculatoarelor, obţinând soluţia prin metode iterative.

1.2.2. Algoritmi iterativi şi convergenţă

Cea mai importantă caracteristică a calculatoarelor este capacitatea lor de a


efectua operaţii repetitive într-un mod eficient şi din această cauză majoritatea
algoritmilor de rezolvare a problemelor de optimizare sunt iterativi (Luenberger,
1989). În căutarea unei soluţii se alege un vector iniţial x0 şi algoritmul determină
un vector x1 care conduce la o valoare mai bună a funcţiei obiectiv; procesul se
repetă obţinându-se un şir de vectori x0, x1, …, xk, …, fiecare îmbunătăţind
valoarea funcţiei obiectiv, faţă de precedentul. Acest şir converge către x* , soluţia
problemei. În problemele de programare liniară soluţia se obţine după un număr
finit de paşi. În probleme de programare neliniară şirul nu atinge niciodată soluţia,
dar converge către ea. Practic, algoritmul se opreşte când s-a obţinut un punct
suficient de aproape de soluţie.

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

2.1. Definiţii şi algoritmi

2.1.1. Grafuri orientate

Definiţia 2.1. Se numeşte graf orientat o pereche de mulţimi G=(X,U), unde: X


este o mulţime finită şi nevidă, ale cărei elemente se numesc noduri (vârfuri) , iar
U este o mulţime formată din perechi ordonate (x,y), x, y ∈ X , numită mulţimea
arcelor (muchii). Dacă ( x, y ) ∈ U , x se numeşte extremitatea iniţială (originea) a
arcului, iar y, extremitatea finală (extremitatea).

Grafurile permit modelarea unui număr mare de situaţii (Henry-Labordere, 1995).

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.

Definiţia 2.2. Se numeşte drum într-un graf orientat un şir de arce


{ }
D = u1 ,..., uk ui ∈ U , i = 1, k − 1 cu proprietatea că extremitatea finală a arcului ui
coincide cu extremitatea iniţială a arcului ui+1 , i = 1, k − 1 .
18 Modele şi algoritmi de optimizare

Dacă extremitatea finală a arcului uk coincide cu extremitatea iniţială a arcului


u1 atunci drumul se numeşte circuit.
Un circuit format dintr-un singur arc se numeşte buclă.
Dacă nodurile arcelor drumului sunt distincte două câte două, drumul se numeşte
elementar.

Exemplu. În Figura 2.1 (1, 2, 4, 3) este un drum, iar (1, 2, 3) nu este drum.

Definiţia 2.3. Un nod x dintr-un graf orientat G se numeşte precedentul altui


nod y din G dacă există arcul (x, y ) ∈ U .
Un nod y dintr-un graf orientat G se numeşte succesorul altui nod x din G
dacă există arcul (x, y ) ∈ U .
Un nod x dintr-un graf orientat G se numeşte ascendentul altui nod y din G
dacă există un drum de origine x şi extremitate y.
Un nod y dintr-un graf orientat G se numeşte descendentul altui nod x din G
dacă există un drum de origine x şi extremitate y.

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.4. Se numeşte gradul exterior al lui x şi se notează d +(x) numărul de


noduri succesoare lui x.
Se numeşte gradul interior al lui x şi se notează d − (x) numărul de noduri
precedente lui x.
Se numeşte gradul lui x şi se notează cu d(x) numărul d +(x)+ d − (x),
(d(x)=d +(x)+ d − (x)).

Definiţia 2.5. Fie G=(X,U) un graf orientat şi fie U ′ ⊂ U , G ′ = ( X , U ′) se


numeşte graf parţial al lui G.
Fie A ⊂ X şi UA={u∈U astfel încât cele două extremităţi ale lui u să fie în A} .
GA =(A, UA) se numeşte subgraf al lui G.

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 .

Definiţia 2.7. Se numeşte arborescenţă un graf tare conex şi fără cicluri,


orientat, a cărui orientare este astfel încât fiecare vârf al său cu excepţia unuia
singur, numit rădăcină, este extremitatea terminală a unui arc şi numai unul.
2. Grafuri în optimizare 19

Definiţia 2.8. Se numeşte graf ponderat sau valuat şi se notează G=(X, U, l) un


graf (X, U) căruia i se asociază o funcţie l : U → R + numită ponderea arcelor.

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.9. Se numeşte reţea de transport un graf orientat, G=(X,U), fără


bucle, cu proprietăţile următoare:
• există un nod x0 unic, numit originea reţelei, şi care nu are ascendenţi;
• există un nod xf unic, numit destinaţia reţelei, şi care nu are descendenţi;
• fiecărui arc u ∈ U îi este asociat un număr l (u ) ≥ 0 numit capacitatea
arcului u .

2.1.2. Grafuri neorientate

Definiţia 2.10. Se numeşte graf neorientat şi se notează G=(X,U) o pereche de


mulţimi, unde: X este o mulţime finită şi nevidă, iar U este o mulţime de perechi
neordonate (x, y) cu x, y∈X . Elementele lui X se numesc vârfurile (nodurile)
grafului, iar elementele lui U se numesc muchiile (arcele) grafului. Dacă
u = (x, y )∈ U , x şi y se numesc extremităţile muchiei u.

Definiţia 2.11. Un graf G=(X, U), în care, dacă ( x, y ) ∈ U atrage ( y, x )∈ U , se


numeşte graf simetric.

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.13. Într-un graf neorientat, G=(X,U), se numeşte lanţ o mulţime de


vârfuri {
L = x1 ,..., xk xi ∈ X , i = 1, k } cu proprietatea că oricare două vârfuri

consecutive sunt adiacente, adică (xi , xi +1 )∈U , i = 1, k − 1 . Vârfurile x1 , xk se


numesc extremităţile lanţului, iar numărul de muchii care intră în componenţa sa
se numeşte lungimea lanţului. Dacă x1,..., xk sunt distincte două câte două, lanţul
se numeşte elementar, altfel se numeşte neelementar.
20 Modele şi algoritmi de optimizare

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.15. Se numeşte ciclu într-un graf G=(X,U), un lanţ


{
L = x1 ,..., xk xi ∈ X , i = 1, k } cu proprietatea că x =x 1 k şi muchiile (x1, x2), ... , (xk-
1, xk) sunt distincte două câte două.

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.

Definiţia 2.18. Un arbore este un graf conex şi fără cicluri.

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.

2.2. Căutarea unui arbore de acoperire de lungime minimă

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

2.2.1. Algoritmul lui Kruskal

Algoritmul lui Kruskal permite căutarea unui arbore de acoperire de lungime


minimă. Vom presupune că graful G are lungimile muchiilor diferite două câte
două (dacă u≠v , u, v – muchii, atunci l(u)≠l(v) ).

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}.

Demonstrăm prin absurd că Vn−1 este arborele minim căutat (Henry-


Labordere, 1995). Fie V≠Vn−1 arborele minim şi să presupunem că are cele n−1
muchii ordonate astfel încât lungimile lor sunt în ordine crescătoare la fel ca şi cele
ale lui Vn−1 şi că uk este prima muchie a lui V care nu este în Vn−1 .

Vn−1 v1 v2 … vk−1 vk vk+1 … vp … vn


Vn v1 v2 … vk−1 uk uk+1 … up … un

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.

Exemplu. Fie G=(X, U, l) un graf conex ponderat neorientat, ca în Figura 2.2,


X = 5 şi U = 7 . Pe arce sunt trecute ponderile. Să se construiască un arbore de
acoperire de lungime (pondere) minimă, folosind algoritmul lui Kruskal.
22 Modele şi algoritmi de optimizare

1
1
16 16 15
15
14
5
2 3
2
19
18 14
17 10
3 4 5 4
10

Figura 2.2 Figura 2.3

Pas 1. Se consideră V1={v1=[3,4]} deoarece l ([3,4]) = min{l (vi )} .


1≤ i≤ 7

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

V3={[3,4]; [2,5]; [1,3]}.


k=4. Dintre muchiile rămase cea care are pondere minimă şi care nu formează
cicluri prin adăugare la V3 este [1,2]. Se obţine V4={[3,4]; [2,5]; [1,3]; [1,2]}
arborele de lungime minimă. Lungimea minimă a grafului este Lmin=l([3,4])+
l([2,5])+ l([1,3])+ l([1,2])=10+14+15+16=55 .
Algoritmul se încheie furnizând arborele de acoperire de lungime minimă V4
(Figura 2.3) şi lungimea minimă a arborelui găsit Lmin=55.

2.2.2. Algoritmul lui Prim

Algoritmul lui Prim determină arborele de acoperire de lungime minimă


într-un graf conex ponderat G=(X, U, l) şi, spre deosebire de algoritmul lui
Kruskal, nu cere ca ponderile a două muchii diferite să fie diferite. Se notează
nodurile lui G cu numere de la 1 la n . Sunt folosiţi trei vectori de
dimensiune n astfel:
χ = ( χ 1 , χ 2 ,..., χ n ) , cu componentele
2. Grafuri în optimizare 23

⎧1 dacã nodul iniþial i este în arbore


χi = ⎨
⎩0 altfel ,
⎧ j dacã muchia [i, j ] este în arbore
p = ( p1 , p 2 ,..., p n ) , cu componentele pi = ⎨
⎩0 pentru nodul iniþial
⎧l ([i, pi ]) ponderea muchiei [i, pi ]
c = (c1 , c 2 ,..., c n ) , cu componentele ci = ⎨ ,
⎩0 pentru nodul iniþial
pentru i = 1, n .

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

Algoritmul furnizează arborele de acoperire de lungime minimă prin înlocuirea


muchiilor unui arbore oarecare obţinut cu vârfurile grafului G cu muchiile
arborelui de lungime minimă.

Exemplu. Să se aplice algoritmul lui Prim grafului din exemplul precedent.


Pas 1. s=1; A={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

Iteraţia a II-a: min{ l([1,2]), l([1,4]), l([3,2]), l([3,4]) , l([3,5]) }= l([3,4])=10


nodul 1 2 3 4 5
χ 1 0 1 1 0
p 0 0 1 3 0
c 0 0 15 10 0

Iteraţia a III-a: min{ l([1,2]), l([3,2]), l([3,5])}= l([1,2])=16


nodul 1 2 3 4 5
χ 1 1 1 1 0
p 0 1 1 3 0
c 0 16 15 10 0

Iteraţia a IV-a: min{ l([2,5]), l([3,5]) }= l([2,5])=14


nodul 1 2 3 4 5
χ 1 1 1 1 1
p 0 1 1 3 2
c 0 16 15 10 14

χ i = 1 , i = 1,4 şi se trece la pasul următor.


Pas 3. Arborele de acoperire de lungime minimă este {[1,2]; [2,5]; [1,3]; [3,4]} şi
are lungimea Lmin=55 .

Problema găsirii arborelui de acoperire de lungime minimă este rezolvată în


Management Scientist de modulul Minimal Spanning Tree (arbore de acoperire de
lungime minimă). Pentru aplicarea acestui modul exemplului de mai sus se
procedează astfel. După lansarea pachetului de programe se selectează modulul
Minimal Spanning Tree ca în Figura 2.4.

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

Pentru rezolvare şi afişarea rezultatului se selectează Solution şi, de aici, Solve.


Rezultatele sunt date de Figura 2.6 .

Figura 2.6

2.3. Algoritmul lui Dijkstra

Se pune adesea problema determinării unui plan de transport printr-o reţea


rutieră (de transport) astfel încât cheltuielile de transport sau duratele de transport
să fie minime. Este necesar să se determine drumul cel mai „scurt” dintre două
noduri oarecare ale reţelei rutiere. Acest tip de problemă se mai întâlneşte şi în
proiectarea reţelelor de calculatoare, în stabilirea traseelor mijloacelor de transport
în comun etc. (Henry-Labordere, 1995).
Algoritmul lui Dijkstra permite calcularea lungimilor celor mai scurte drumuri
de la un vârf s la toate vârfurile x ale unui graf conex G=(X,U,l), dacă lungimile
tuturor arcelor sunt nenegative.
26 Modele şi algoritmi de optimizare

Fie ∏(x) lungimea celui mai scurt drum de la s la x . Fie S mulţimea


def
vârfurilor pentru care se calculează ∏. Atunci, ∏(x) = {lungimea celui mai scurt
drum de la s la x , care are toate vârfurile în S cu excepţia lui x }. Se notează cu
Γ + (x) = {mulţimea arcelor care pornesc din nodul x}, iar cu Γ − (x) = { mulţimea
arcelor care intră în nodul x}. Dacă graful este neorientat Γ + (x) = Γ − ( x) = Γ( x) =
mulţimea arcelor incidente în nodul x.

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

Dacă ∏(y)<∞ atunci S := S ∪ { y} ;


Pentru z ∈ Γ + ( y) ∏(z) :=min {∏(z), ∏(y)+l(z,y)} ;
până când S=X sau ∏(y)=∞.
Pas 3. Stop.

Se observă că valorile ∏(z) rămân nemodificate pentru z ∈ S , lucru ce poate


fi exploatat în transpunerea pe calculator a algoritmului.

Exemplu. În Figura 2.7 sunt date 7 localităţi numerotate de la 1 la 7 şi timpul (în


ore) necesar parcurgerii distanţei pe arterele care le leagă. Să se determine ruta pe
care se realizează timpul minim între localităţile 1 şi 7.

Rezolvare. Se aplică algoritmul Dijkstra grafului reprezentat de Figura 2.7.

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

Pas 1. s=1, S={1}, Γ(1) = {2,4} ,

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=2, S={1,2}, Γ(2) = {1,3,4} . ∏(2)=l([1,2])=1


∏(3)=min{∏(3), ∏(2)+l([2,3])}=min{∞,1+4}=5
∏(4)=min{∏(4), ∏(2)+l([2,4])}=min{4,1+2}=3

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},

Pentru nodurile din mulţimea S ∩ Γ( y ) nu s-au mai evaluat ∏(y).

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.

În Management Scientist modulul Shortest Route determină cel mai scurt


drum dintre două noduri ale reţelei şi precizează muchiile care realizează acest
drum. Pentru rezolvarea problemei din exemplul precedent cu Management
Scientist, după lansarea sistemului se selectează modulul Shortest Route (Figura
2.4) şi se introduc datele în ferestrele prezentate în Figurile 2.8. şi 2.9 .

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

2.4. Metoda PERT

Metoda PERT (Program Evaluation and Review Technique) sau CPM


(Critical Path Method – metoda drumului critic) este un instrument pentru
gestionarea (planificarea şi controlul) proiectelor mari cu multe activităţi separate
care necesită coordonare. În realizarea unui proiect unele activităţi trebuie să aibă o
anume succesiune, altele se defăşoară în paralel. Tehnica PERT a fost concepută
pentru a oferi factorului de decizie un ajutor în planificarea şi controlul unui astfel
de proiect. Ea permite stabilirea timpului necesar realizării întregului proiect,
asigurând controlul evoluţiei procesului şi atrage atenţia asupra acelor întârzieri în
realizarea activităţilor care ar determina o întârziere în realizarea proiectului
(Bonini et al, 1997).
30 Modele şi algoritmi de optimizare

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.

Diagrama activităţilor este reprezentarea grafică a întregului proiect (graf


orientat valuat). Activităţile sunt arcele, iar nodurile, momentele de început şi
sfârşit ale activităţilor.

Drumul critic este o mulţime de activităţi din proiect care are cea mai mare
durată de timp asociată.

Pentru prezentarea metodei se va considera un exemplu simplu în care duratele


activităţilor sunt presupuse deterministe şi cunoscute.

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.

Aflarea drumului critic


O cale de aflare a drumului critic este descrisă în continuare. Se notează cu:
DSi – momentul cel mai devreme de începere a activităţii i,
DFi – momentul cel mai devreme de terminare a activităţii i,
TSi – momentul cel mai târziu de începere a activităţii i,
TFi – momentul cel mai târziu de terminare a activităţii i.
Momentul cel mai devreme de începere a unei activităţi este cel mai devreme
moment posibil la care acea activitate poate să înceapă, presupunând că toate
activităţile care o preced au început la cel mai devreme moment posibil.
Momentul cel mai devreme de terminare a unei activităţi este suma
momentului de început cel mai devreme posibil cu timpul necesar realizării
activităţii respective.
Momentul cel mai târziu de terminare a unei activităţi reprezintă cel mai târziu
moment posibil de terminare a activităţii respective fără întârzierea proiectului,
presupunând că toate activităţile sunt desfăşurate conform planului iniţial.
Momentul cel mai târziu de începere a unei activităţi este diferenţa dintre cel
mai târziu moment posibil de terminare a activităţii respective şi timpul necesar
realizării acestei activităţi.

Procedeu pentru determinarea momentelor DS , DF , TS şi TF


1. Pentru prima activitate se ia DS egal cu zero. Dacă se adaugă la DS timpul t
necesar realizării primei activităţi se obţine DF pentru prima activitate.
2. Pentru o activitate oarecare i, care pentru toate activităţile care o preced imediat
are determinate DS şi DF , se ia
DSi=max{DFk | activitatea k precede imediat activitatea i} şi DFi=DSi+ti,
deoarece activitatea i nu poate începe până când toate activităţile care o preced
nu s−au terminat.
3. Pentru ultima activitate se ia TF=DF al acestei activităţi. Atunci TS=TF−tn , tn
fiind timpul necesar realizării ultimei activităţi.
4. Pentru o activitate oarecare i, având pentru activităţile care o succed imediat
determinate TS şi TF , se ia
TFi=min{TSk | activitatea k succede imediat activitatea i} şi TSi=TFi−ti,.
32 Modele şi algoritmi de optimizare

Marja, M, a unei activităţi reprezintă numărul de zile cu care o activitate


poate întârzia fără ca termenul de încheiere al proiectului să fie afectat. După
determinarea valorilor DS, DF, TS, TF pentru toate activităţile, se pot calcula
marjele ca fiind
Mi= DSi – TSi sau Mi= DFi – TFi .
Dacă proiectul are termenul de finalizare egal cu lungimea drumului critic,
atunci orice întârziere în realizarea unei activităţi incluse în drumul critic va cauza
întârziere în finalizarea proiectului. În schimb, activităţile care au marja pozitivă
pot fi decalate cu un număr de zile egal cu marja, fără ca termenul de finalizare a
proiectului să se modifice.
Pentru exemplul de mai sus se consideră că proiectul durează 12 zile şi s-a luat
TF pentru activitatea D egal cu 12. În Tabelul 2.2 sunt trecute momentele DS,
DF, TS, M şi TF pentru acest exemplu obţinute în urma aplicării procedeului de
mai sus.

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

Exemplul de mai sus poate fi rezolvat şi cu ajutorul pachetului de programe


Management Scientist. După lansarea pachetului de programe se selectează
modulul PERT/CPM (Figura 2.4). Din fereastra care apare se selectează File, apoi
New şi se precizează faptul că duratele activităţilor sunt deterministe şi numărul
acestor activităţi, ca în Figura 2.12.

Figura 2.12

Se afişează o fereastră în care se introduc duratele activităţilor şi activităţile


care le preced imediat, ca în Figura 2.13. Activităţile se codifică folosind literele
alfabetului în ordine crescătoare. O activitate care precede o alta trebuie să fie deja
definită atunci când este definită ca precedenţă.
2. Grafuri în optimizare 33

Figura 2.13

Selectând Solution, şi de aici Solve, se obţine soluţia sub forma dată de


Figura 2.14.

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

În continuare se consideră cazul, mai apropiat de realitate, când duratele


activităţilor sunt aleatoare. Atunci, trebuie să se cunoască despre aceste variabile
aleatoare care sunt densităţile lor de probabilitate. În practică se cunosc anumite
date despre duratele activităţilor, cum ar fi:
− ai – cea mai optimistă durată pentru activitatea i,
− bi – cea mai pesimistă durată pentru activitatea i,
− mi – cea mai probabilă durată pentru activitatea i (modul repartiţiei).
Repartiţia Beta(a,b) ar putea caracteriza aceste durate deoarece este o
repartiţie continuă, unimodală şi cu valori în intervalul (a,b). Un estimator pentru
valoarea medie a unei variabile aleatoare Beta(a,b) este t = (a + 4m + b ) şi
1
6
pentru abaterea medie standard σ = (b − a ) .
1
6
Pentru exemplul precedent, în Tabelul 2.3, sunt trecute duratele activităţilor
cele mai optimiste, cele mai pesimiste, cele mai probabile (ca rezultat al
experienţelor anterioare), estimările duratelor medii, ale abaterilor medii pătratice
şi ale dispersiilor.
Se caută drumul critic cu duratele activităţilor ti şi se obţine acelaşi drum
critic (duratele medii ti coincid cu duratele activităţilor în cazul determinist).

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

Dacă se presupune că duratele activităţilor sunt variabile aleatoare independente,


atunci dispersia drumului critic ACD este suma dispersiilor activităţilor
componente, adică σ ACD
2
= 0.11 + 0.45 + 0.45 = 1.01 , iar abaterea medie standard
este σ ACD = 1.01 = 1.005 .
Dacă drumul critic conţine multe activităţi (peste 30) durata totală poate fi
considerată repartizată normal. Se va considera şi în acest caz repartiţia duratei
drumului critic ca fiind N (12, 1.005) şi atunci se poate să se determine
probabilitatea ca durata drumului critic să fie mai mică decât o valoare (de
exemplu, 14 zile), folosind tabela repartiţiei normale standard, astfel:
⎛T − µ ⎞ ⎛ 14 − 12 ⎞
P(T < 14) = F ⎜ ⎟ = F⎜ ⎟ = F (2) = 0.977 .
⎝ σ ⎠ ⎝ 1.005 ⎠
2. Grafuri în optimizare 35

2.5. Probleme propuse

1. O firmă de construcţii are şantiere în 6 locuri diferite. Transportul zilnic de oameni,


utilaje, materiale de la sediu la şantiere şi invers este destul de costisitor. Reţeaua
arătată în Figura 2.15 prezintă străzile şi distanţa dintre şantiere şi sediul firmei.
Nodurile reprezintă şantierele numerotate de la 1 la 6, iar muchiile, străzile. Numerele
de pe muchii reprezintă distanţa în kilometri. Dacă se doreşte minimizarea distanţei
dintre sediul firmei şi şantierul 6, care este drumul care trebuie parcurs şi lungimea sa?
17
2 7
15
6 5

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]} .

2. O firmă de Internet Cafe trebuie să aibă linii speciale pentru legarea


calculatoarelor instalate la cele 5 centre ale sale în diferite locuri din oraş la
serverul central. Deoarece liniile sunt scumpe, proprietarul doreşte ca lungimea
totală a cablurilor folosite să fie minimă. În Figura 2.16 sunt prezentate cele
5 centre şi serverul central (în noduri), iar muchiile reprezintă traseele posibile şi
lungimile cablurilor între server şi centrele firmei. Să se stabilească legăturile care
să conducă la cel mai mic cost (lungimea totală a cablurilor să fie minimă).
2 5
4
2
5 3
3
4

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. Trebuie să se construiască o autostradă care să treacă prin apropierea localităţilor


notate în Figura 2.18 cu numere de la 1 la 14.

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

Costurile (lucrărilor propriu-zise, lucrărilor de artă, de expropriere, sociale etc.)


sunt trecute pe muchiile acestui graf.
Să se stabilească traseul autostrăzii care uneşte localităţile 1 şi 14 şi care să
implice costuri minime (Kaufmann, 1967).

R. Traseul de cost minim care leagă localitatea 1 de localitatea 14 trece prin


localităţile 1, 3, 5, 9, 12, 14 şi costă 19 u. m (unităţi monetare).

4. Fie un proiect ale cărui date sunt trecute în Tabelul 2.4.


Tabelul 2.4
2. Grafuri în optimizare 37

Activitate Timpul necesar


Activitate
precedentă realizării (în zile), ti
A Nici una 5
B A 4
C Nici una 7
D B, C 3
E B 4
F D, E 2

a) Să se traseze diagrama grafului asociat proiectului.


b) Să se calculeze DS, DF, TS, TF pentru fiecare activitate, presupunând că DF
şi TF pentru ultima activitate coincid.
c) Să se precizeze activităţile incluse în drumul critic.

R. a) Diagrama grafului asociat este dată în Figura 2.19.

A B4

E4

C D F2

Figura 2.19

b) În Tabelul 2.5 sunt trecute valorile corespunzătoare. Durata proiectului este de


15 zile.

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

c) Drumul critic este format din activităţile A, B, E, F.

5. În problema 4 se consideră că timpul necesar realizării activităţii C este de


9 zile.
38 Modele şi algoritmi de optimizare

a) Să se precizeze dacă se modifică drumul critic în acest caz.


b) Dar dacă activităţii C îi sunt necesare 11 zile, se modifică drumul critic?

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.

6. Un depozit angro doreşte să se modernizeze şi să se extindă. Activităţile


necesare sunt trecute în Tabelul 2.6 . Să se stabilească durata minimă şi care sunt
activităţile critice ale acestei iniţiative.

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

R. Activităţile critice sunt A, E, F, G, I, iar durata minima a iniţiativei este de


26 săptămâni.

7. Se consideră un proiect având datele despre activităţi trecute în Tabelul 2.7

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

− mi – cea mai probabilă durată pentru activitatea i (modul repartiţiei).


a) Să se calculeze timpul mediu ti şi dispersia σ i2 pentru timpul necesar realizării
fiecărei activităţi.
b) Să se traseze diagrama grafului asociat. Care este lungimea medie a drumului
critic?
c) Presupunând că duratele activităţilor drumului critic sunt independente şi că
durata drumului critic este repartizată normal, să se calculeze probabilitatea ca
durata drumului ACD să fie mai mică decât 16 zile.
d) Care este probabilitatea ca proiectul să se termine în mai puţin de 16 zile ?

R. a) Media duratelor şi dispersia sunt trecute în Tabelul 2.8.

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

b) Diagrama asociată grafului este dată de Figura 2.20

A4 C6 D5

STO
STAR

B8 E

Figura 2.20

Lungimea drumului critic este 16 zile.


c) Pentru drumul ACD lungimea medie este 15 zile, iar dispersia este
0.44+5.44+1.78=7.67 , iar abaterea medie pătratică este 2.77 .
⎛ 16 − 15 ⎞
P(TACD < 16) = F ⎜ ⎟ = 0.64 .
⎝ 2 ⋅ 77 ⎠
Pentru drumul BE dispersia este de 0.44+0.44=0.88 , iar abaterea medie pătratică
este 0.94 .
40 Modele şi algoritmi de optimizare

⎛ 16 − 15 ⎞
P (TBE < 16) = F ⎜ ⎟ = 0.50.
⎝ 0,94 ⎠
2. Grafuri în optimizare 41

d) Probabilitatea ca durata proiectului să fie mai mică de 16 zile este


P (T proiect < 16 ) = 0.64 ⋅ 0.50 = 0.32 .
8. Exploatarea unei cariere implică următoarele acţiuni:
− construirea drumurilor de acces (A)
− cumpărarea şi livrarea utilajelor de excavare pentru înlăturarea zonei fertile (B)
− angajarea de personal: conductori de utilaje şi mineri (C)
− adâncirea excavaţiei (D)
− pregătirea minerilor angajaţi în mineritul de suprafaţă (E).
Restricţiile impuse de ordinea acţiunilor:
− excavarea nu poate începe decât dacă:
– utilajele au fost livrate;
– conductorii de utilaje au fost angajaţi.
În Tabelul 2.9 sunt date duratele şi condiţionările acţiunilor acestui proiect.

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

a) Să se traseze diagrama grafului asociat proiectului.


b) Să se calculeze DS, DF, TS, TF şi marja pentru fiecare activitate, presupunând
că DF şi TF pentru ultima activitate coincid.
c) Să se precizeze lungimea drumului critic şi activităţile incluse în drumul critic.

R. a) Diagrama este dată de Figura 2.21.

B4 D5

STAR A1 STO

C8 E6

Figura 2.21
42 Modele şi algoritmi de optimizare

b) Valorile cerute sunt conţinute în Tabelul 2.10.

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

c) Drumul critic conţine activităţile A, D şi are lungimea 15.

9. O firmă producătoare de aspiratoare îşi propune să introducă în fabricaţie


aspiratoare portabile. Pentru aceasta iniţiază un proiect ale cărui activităţi şi durate
sunt trecute în Tabelul 2.11 .

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.

R. Activităţile critice sunt A, E, H, I, J şi duratele cea mai optimistă 14.28 , cea


mai probabilă 17 şi cea mai pesimistă 19.72 .
3. PROGRAMARE CONVEXĂ

3.1. Mulţimi şi funcţii convexe

Î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.1. O mulţime K ⊂ R n se numeşte convexă dacă (∀ )x 0 , x1 ∈ K şi


(∀)θ ∈ [0, 1] , atunci
xθ = (1 − θ )x 0 + θ x1 ∈ K (3.1)
sau, în general: (∀ )x 0 , x1 ,..., x m ∈ K , atunci
m m
xθ = ∑ θ i x i ∈ K , (∀)θ i ∈ [0,1] şi ∑θ i =1 (3.2)
i =0 i =0

Definiţia 3.2. xθ din Definiţia 3.1 se numeşte combinaţia liniară a punctelor x0,
x1 etc.

Definiţia 3.3. Fie x 0 , x1 , ..., x n ∈ K . Mulţimea punctelor xθ date de (3.2) se


numeşte înfăşurătoarea convexă a mulţimii {x 0 , x1 ,..., x n } .

Exemple de mulţimi convexe: mulţimea formată dintr-un singur punct, o dreaptă,


⎧ n

un segment de dreaptă, un hiperplan (adică ⎨ x ∈ R n ∑ ai xi = b ⎬ ), un semiplan
⎩ i =1 ⎭
⎧ n

(adică ⎨ x ∈ R n ∑ ai xi ≥ b ⎬ ), o bilă închisă de centru a şi rază r,
⎩ i =1 ⎭
⎪⎧ ⎪⎫
{ }
n
Br (a) = x ∈ R n x − a 2 ≤ r = ⎨ x ∈ R n ∑ (xi − ai ) ≤ r ⎬ ,
2

⎪⎩ 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

Demonstraţie. Fie (∀ )x 0 , x1 ∈ K , atunci rezultă că x 0 , x1 ∈ K i pentru


(∀) i = 1, m . Atunci xθ dat de (3.2) este în fiecare mulţime Ki , deci şi în
intersecţia lor. ‰

Consecinţa 3.1. Mulţimea punctelor admisibile într-o problemă de programare


(1.1) cu restricţii liniare este o mulţime convexă.

Definiţia 3.4. Fie K ⊂ R n , o mulţime convexă. x se numeşte punct de extrem


pentru K dacă, având x=(1−θ ) x0+θ x1 , x 0 , x1 ∈ K şi θ ∈ (0, 1) , atunci rezultă
că x=x0=x1, sau, altfel spus, x nu cade în interiorul nici unui segment din K.

Exemple: vârfurile unui poligon regulat, punctele circumferiţei unui cerc sunt
puncte de extrem pentru poligon, respectiv disc.

Definiţia 3.5. Fie K ⊂ R n , o mulţime convexă şi f : K → R o funcţie


continuă. Funcţia f se numeşte convexă dacă (∀ )x 0 , x1 ∈ K are loc relaţia
f ((1 − θ ) x 0 + θ x1 ) ≤ (1 − θ ) f ( x 0 ) + θ f ( x1 ) , (∀ )θ ∈ [0, 1] . (3.3)

Dacă f este diferenţiabilă pe K şi K este deschisă, atunci se poate da


următoarea definiţie a funcţiei convexe.

Definiţia 3.5’. Funcţia f este convexă pe K dacă (∀ )x 0 , x1 ∈ K are loc relaţia


f ( x1 ) ≥ f ( x 0 ) + ( x1 − x 0 )' ∇f ( x 0 ) (3.4)
unde cu prim s-a notat transpunerea, iar ∇f este gradientul lui f.

Exerciţiu. Să se demonstreze echivalenţa Definiţiilor 3.5 şi 3.5’.

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.

Definiţia 3. 5 ′′ . Fie f : K → R , o funcţie dublu diferenţiabilă pe K, mulţime


deschisă şi convexă în R n. Funcţia f este convexă dacă d 2 f ( x 0 ) este pozitiv
semidefinită (Definiţia 6.2) pentru (∀ )x 0 ∈ K .

Definiţia 3.6. Fie K ⊂ R n , o mulţime convexă şi f : K → R o funcţie continuă.


f se numeşte strict convexă dacă
f ((1 − θ ) x 0 + θx1 ) < (1 − θ ) f ( x 0 ) + θ f ( x1 ) , (∀ )θ ∈ (0, 1) , x 0 ≠ x1 (3.4’)
3. Programare convexă 45

Definiţia 3.7. Fie K ⊂ R n , o mulţime convexă şi f : K → R o funcţie


continuă. f se numeşte concavă dacă –f este convexă şi f se numeşte strict
concavă dacă –f este strict convexă.

Exemple de funcţii convexe: funcţiile liniare (sunt şi concave), funcţiile pătratice


1
de forma f ( x ) = x ' Cx + c ' x + c 0 , unde C este o matrice pozitiv semidefinită
2
(x’Cx≥0 , ).

Lema 3.2. Fie K ⊂Rn, o mulţime convexă şi funcţiile convexe


m
f i : K → R , i = 1, m . Dacă λi ≥ 0 , i = 1, m , atunci f = ∑ λi f i este o funcţie
i =1

convexă pe K.

3.2. Extreme condiţionate

Problema minimizării unei funcţii convexe f pe o mulţime convexă K se


numeşte problema de programare convexă şi se poate scrie sub forma
⎧⎪min f ( x )
⎪⎩ {
⎨ x ∈ R = x ∈ R n g ( x ) ≤ 0 , i = 1, m
i }(3.6)

unde: f şi gi sunt funcţii convexe pe Rn .


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 ) . ‰

Vom nota R (0) = R . Mulţimea R se mai numeşte şi domeniul problemei


de programare convexă (3.6) sau mulţimea soluţiilor admisibile (regiunea
realizabilă) pentru problema de programare convexă (3.6).

Consecinţa 3.2. Regiunea realizabilă R dată de (3.6) este o mulţime convexă.

Definiţia 3.8. Fie K ⊂ R n , o mulţime nevidă şi o funcţie f : K → R .


46 Modele şi algoritmi de optimizare

Punctul x * ∈ K este un maxim (minim) global pentru f pe K dacă pentru


(
(∀)x ∈ K avem f ( x ) ≤ f( x * ) f ( x) ≥ f ( x * ) . )
Punctul x ∈ K este un maxim (minim) local sau relativ pentru f dacă (∃)r > 0
*

astfel încât pentru


(∀)x ∈ Br ( x* ) = {x ∈ R n x - x* < r ⊂ K}
avem
(
f ( x ) ≤ f( x * ) f ( x ) ≥ f ( x * ) . )
Un minim global (local) pentru problema (3.6) se numeşte soluţie globală (locală)
pentru problema (3.6) .

Teorema 3.1. Orice soluţie locală x* a unei probleme de programare convexă


(3.6) este o soluţie globală şi mulţimea soluţiilor globale, R, este convexă.
Demonstraţie. Fie x* o soluţie locală pentru problema (3.6), dar nu globală.
Atunci (∃)x1 ∈ R astfel încât f ( x1 ) < f ( x * ) . Pentru θ ∈ [0, 1] se consideră
xθ = (1 − θ ) x * + θ x1 ∈ R
(din convexitatea lui R ). Din convexitatea lui f rezultă
( )
f ( xθ ) ≤ (1 − θ) f ( x * ) + θf ( x1 ) = f ( x * ) + θ f ( x1 ) − f ( x * ) < f ( x * ) .
Pentru θ suficient de mic, xθ se află în vecinătatea lui x şi inegalitatea de *

mai sus contrazice proprietatea de optim local a lui x*. Astfel, soluţia locală este şi
globală.

Pentru a arăta că R este convexă, se consideră


x 0 , x1 ∈ R şi θ ∈ [0, 1] , xθ = (1 − θ ) x 0 + θx1 .
Deoarece x0 , x1 sunt soluţii globale, au loc relaţiile
f(x0)=f(x1) şi f ( xθ ) ≤ (1 − θ) f ( x0 ) + θf ( x1 ) = f ( x0 ) ,
adică f ( xθ ) = f ( x 0 ) şi astfel xθ ∈ R , ceea ce arată că R este convexă. ‰

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

Teorema 3.2. În problema (3.6) dacă f şi gi, i = 1, m sunt de clasă C1(R ) şi


dacă
∇ xL ( x * , λ * ) = 0 , gi ( x* ) = 0 , i ∈ E ; g j ( x* ) ≤ 0 , j ∈I ;
(3.7)
λ j * ≥ 0, j ∈ I ; λi * g i ( x * ) = 0 ; (∀)i ∈ E ∪ I
unde : L ( x , λ ) = f ( x ) + ∑ λi g i ( x ) este funcţia lagrangian, E este mulţimea
i

indicilor restricţiilor egalităţi, I este mulţimea indicilor restricţiilor inegalităţi


din (3.7), atunci x* este o soluţie globală pentru problema (3.6).
Demonstraţie. Fie x ∈ R , x ≠ x * . Atunci, deoarece λ ∗ ≥ 0 şi g ( x ) ≤ 0 , f şi
m
g sunt convexe, din ipoteză avem că ∇f ( x * ) + ∑ λ*i ∇g i ( x * ) = 0 , λ*i g i ( x * ) = 0
i =1
şi, ţinând cont şi de relaţia (3.4), avem
m
f ( x ) ≥ f ( x ) + ∑ λ*i g i ( x ) ≥ f ( x * ) + ( x − x * )′∇f ( x * ) +
i =1


( ′
) ⎞
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ă.
* *
‰

Definiţia 3.9. O restricţie inegalitate g i ( x ) ≤ 0 se numeşte activă într-un punct


admisibil x* dacă g i ( x * ) = 0 şi inactivă dacă g i ( x * ) < 0 .

Următoarea teoremă afirmă că optimalitatea unei soluţii a problemei de


programare convexă (3.6) nu se modifică dacă se înlătură restricţiile pe care soluţia
le transformă în inegalităţi stricte.

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

Mai întâi să arătăm că xθ ∈ R , adică este un punct admisibil pentru problema


(3.6’). Din convexitatea funcţiilor g i , i = 1, m , pentru orice θ ∈ (0, 1) avem
() ( )
g i ( xθ ) ≤ θg i x + (1 − θ )g i x * ≤ 0 , (∀)i ∈ E * şi
g ( x ) ≤ θg (x ) + (1 − θ )g (x ) < 0 , (∀) j ∉ E
j θ j j
* *
,
() ( )
deoarece g j x ≤ 0 , g j x* < 0 , (∀) j ∉ E * . Din convexitatea funcţiei f şi din
(3.8) rezultă
() ( ) ( )
f ( xθ ) ≤ θf x + (1 − θ ) f x * < f x * (3.9)
*
Inegalitatea (3.9) este în contradicţie cu proprietatea punctului x de a fi
soluţie optimă pentru problema (3.6). Aşadar, un astfel de punct x nu există. ‰

Convenim ca orice restricţie (3.6) cu egalitate, în punctele admisibile este o


restricţie activă. Restricţiile active într-un punct admisibil x restrâng domeniul de
admisibilitate în vecinătatea punctului x , în timp ce restricţiile inactive nu au
influenţă în vecinătatea punctului x . Aşadar, în studiul proprietăţilor unui extrem
local atenţia se poate concentra numai asupra restricţiilor active. Dacă s-ar cunoaşte
care restricţii sunt active pentru rezolvarea problemei (3.6), soluţia ar fi un minim
local al problemei obţinute din (3.6) prin ignorarea restricţiilor inactive şi tratarea
restricţiilor active ca egalităţi. Astfel, pentru soluţii locale, problema (3.6) poate fi
privită numai cu restricţii egalităţi.

Definiţia 3.10. Un punct x * ∈ K care satisface restricţiile g i ( x ) = 0 , i ∈ E se


numeşte regulat dacă vectorii ∇g i ( x ) , i ∈ E sunt liniar independenţi.
*

3.2.1. Cazul restricţiilor egalităţi

Acest caz reprezintă bine cunoscuta problemă a extremelor cu legături (sau


extreme condiţionate).

Teorema 3.4. În problema (3.6) considerăm că gi(x)=0, i = 1, m şi că f şi gi


sunt diferenţiabile, iar matricea jacobiană
⎛ ∂g 1 ( x * ) ∂g 1 ( x * ) ⎞
⎜ L ⎟
⎜ ∂x1 ∂x n ⎟
J =⎜ O ⎟
⎜ ∂g ( x * ) * ⎟
∂g m ( x ) ⎟
⎜ m L
⎜ ∂x ∂x n ⎟⎠
⎝ 1
3. Programare convexă 49

are în x* rangul m , x* fiind un punct regulat care realizează un minim local.


m
Atunci există numerele λm ∈ R , asfel încât ∇f ( x * ) + ∑ λ*i ∇g i ( x * ) = 0 .
i =1

Numerele λ1 ,..., λ m se numesc multiplicatorii lui Lagrange.

3.2.2. Cazul restricţiilor inegalităţi

Un rol esenţial în rezolvarea problemei (3.6) cu I ≠ φ îl au condiţiile Kuhn-


Tucker.
Pentru demonstrarea condiţiilor Kuhn-Tucker (cunoscute şi sub denumirea de
condiţii optimale de ordinul I) avem nevoie de lema Farkas-Minkowski a cărei
demonstraţie o omitem (Henry-Labordere, 1995).

Lema 3.4. (Farkas-Minkowski) Fie A ∈ M m,n (R ) , rang ( A) = m şi presupunem



(∀)x ∈ R m Ax ≥ 0 şi c ′x ≥ 0 .
Atunci există multiplicatorii λi ≥ 0 , i = 1, n astfel încât vectorul c se scrie sub

forma c = A t λ , unde λ = (λ1 ,λ2 ,..., λn ) .

Definiţia 3.11. Fie un punct x * ∈ R de extrem local (global) pentru problema


( ) ( ) ⎯→ x , x ( k ) − x = δ (k) s ( k ) , iar
(3.6) şi un şir x ( k ) k ≥1 ⊂ R astfel încât x ( k ) ⎯k⎯
→∞

s ( k ) = 1 , δ ( k ) > 0 . Vectorul s = lim s ( k ) se numeşte direcţie admisibilă


k →∞

(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)

Se poate demonstra următoarea propoziţie (Fletcher, 1981).

Propoziţia 3.1. Ipoteza de calificare a restricţiilor (3.10) are loc dacă :


i) restricţiile cu indicele i ∈ E * sunt liniar independente, sau
ii) vectorii ∇g i ( x * ) , i ∈ E * sunt liniar independenţi.
50 Modele şi algoritmi de optimizare

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) . ‰

Se observă că pentru suficienţa condiţiilor Kuhn-Tucker nu mai este necesară


ipoteza calificării restricţiilor.

În capitolele 4, 5 şi 6 funcţiile obiectiv sunt cazuri particulare de funcţii


convexe, iar restricţiile sunt liniare, deci convexe. Algoritmii prezentaţi în aceste
capitole se bazează pe particularităţile fiecărui tip de problemă.
4. PROGRAMARE LINIARĂ

4.1. Exemple de probleme de programare liniară

4.1.1. Utilizarea optimă a resurselor

Un manager de agent economic trebuie să rezolve destul de des următoarea


problemă (Zidăroiu, 1983):
Resursele pe care le are la dispoziţie (materie primă, forţă de muncă, maşini-
unelte, resurse financiare etc.) sunt în cantităţi limitate. Fie i numărul de ordine al
resursei şi fie bi cantitatea disponibilă din resursa i. Cu ajutorul acestor resurse se
pot desfăşura mai multe activităţi (de exemplu: procese de producţie).
Fie j numărul de ordine al activităţii desfăşurate şi fie xj nivelul (necunoscut)
la care trebuie să se desfăşoare această activitate. De exemplu, pentru procesul de
producţie j, care constă în fabricarea unui anumit produs, se notează cu xj
cantitatea ce va fi produsă. Fie aij cantitatea din resursa i necesară producerii
unei unităţi din produsul j. Se presupune că ai j nu depinde decât de tipul resursei
(i) şi de tipul produsului realizat (j) şi nu de cantităţile produse, ceea ce constituie
evident o simplificare a situaţiei reale.
Cu aceste notaţii se pot determina mărimile următoare:
− cantitatea din resursa i folosită pentru producerea cantităţii xj, care este aij xj;
− cantitatea totală din resursa i folosită pentru producţia totală formată din n
produse:
ai1 x1+ai2 x2+...+ain xn .
Deoarece nu se poate consuma din resursa i mai mult decât cantitatea de care
se dispune, trebuie să fie respectate condiţiile:
ai1 x1+ai2 x2+...+ain xn ≤ bi , (∀) 1 ≤ i ≤ m,
sau
n

∑a
j =1
ij x j ≤ bi , i∈{1, 2,..., m}. (4.1)

xj reprezentând cantitatea ce trebuie produsă din sortimentul j, ea nu poate fi


un număr negativ:
xj ≥ 0, j∈{1, 2,..., m}. (4.2)
Inecuaţiile (4.1) se numesc restricţiile problemei, iar (4.2), condiţiile de
nenegativitate.
52 Modele şi algoritmi de optimizare

Sistemul de inecuaţii liniare (4.1) şi (4.2) poate avea o infinitate de soluţii, o


soluţie sau nici una. Pentru problemele corect puse, cel mai frecvent este cazul cu o
infinitate de soluţii.
Adoptarea unei variante de plan (luarea unei decizii) se face pe baza unui
criteriu economic, ca de exemplu venitul sau profitul să fie maxim.
Dacă se notează cu cj preţul de vânzare al unei unităţi din produsul j şi cu dj
costul unitar pentru acelaşi produs (se presupune, pentru simplificarea problemei,
că atât preţul de vânzare cât şi costul nu depind de cantitatea produsă, ceea ce nu
n
prea este în concordanţă cu realitatea), atunci venitul total va fi: ∑c
j =1
j x j , iar
n
cheltuielile de producţie ∑d
j =1
j x j , şi deci profitul obţinut va fi:
n n n

∑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.

4.1.2. Problema de transport

Se consideră că există m centre de aprovizionare (depozite) şi n centre de


consum (puncte de lucru, uzine, magazine etc.). Se pune problema să se determine
un plan de transport pentru un produs omogen care se află în cantitatea ai la
depozitul i (1 ≤ i ≤ m) şi este cerut în cantitatea bj la centrul j (1 ≤ j ≤ n). Se
notează cu xij cantitatea necunoscută ce va fi transportată de la depozitul i la
centrul de consum j şi cu cij costul transportului unei unităţi din produsul
considerat de la depozitul i la centrul j (pentru simplificare se presupune că acest
cost unitar nu depinde de cantitatea transportată pe ruta respectivă).
Se pot exprima atunci următoarele mărimi:
– cantitatea cerută de la depozitul i la toate cele n centre de consum
ai = xi1 + xi2 + ... + xin = cantitatea aflată la depozitul i, (4.5)
– cantitatea transportată de la toate cele m depozite la centrul de consum j
4. Programare liniară 53

bj = x1j + x2j + ...+ xmj = necesarul la centrul de consum j, (4.6)


– costul transportului de la depozitul i la centrul de consum j este cijxij.
O condiţie evidentă este
xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n . (4.7)
Costul total al transportului de la toate cele m depozite la toate cele n centre
de consum este
m n

∑∑ c
i =1 j =1
ij xij .

Pentru a putea efectua transportul este necesar ca


m n

∑a = ∑b
i =1
i
j =1
j ,

egalitate numită şi condiţia de balansare sau de echilibru.


Sistemul de ecuaţii (4.5), (4.6) are o infinitate de soluţii. Dintre acestea trebuie
alese cele care dau costului total de transport valoarea minimă. Se obţine astfel un
program liniar:
m n
min ∑∑ c ij x ij (4.8)
i =1 j =1
n

∑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.

Programe liniare de acelaşi tip pot să apară şi în următoarea situaţie.


Trebuie aprovizionat un grup de uzine dirijate de un centru comun, având la
dispoziţie m centre de aprovizionare, n puncte de consum şi se cere determinarea
unui plan de transport (xij), 1 ≤ i ≤ m, 1 ≤ j ≤ n, care să minimizeze cheltuielile
totale de transport:
m n
min ∑∑ c ij x ij , (4.12)
i =1 j =1

î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)

xij ≥ 0, 1≤i≤m, 1 ≤ j ≤ n, (4.15)


54 Modele şi algoritmi de optimizare

unde ai , 1 ≤ i ≤ m, sunt capacităţile centrelor de depozitare, bj , 1 ≤ j ≤ n, sunt


cantităţile necesare uzinelor, iar cij este costul unitar de transport de la depozitul i
la uzina j. Pentru a avea soluţii trebuie ca
m n

∑a ≥ ∑b
i =1
i
j =1
j .

Problema se poate pune şi invers, considerând problema unui plan de transport


de la mai multe uzine i la punctele de desfacere j.
Dacă ai , 1 ≤ i ≤ m, reprezintă acum capacităţile de producţie ale uzinelor, bj ,
1 ≤ j ≤ n, capacităţile de depozitare ale punctelor de desfacere, se obţine un model
similar în care grupurile de inecuaţii (4.13), (4.14) îşi schimbă sensul.

4.1.3. Alocarea optimă a fondurilor financiare

Având la dispoziţie o sumă totală S care poate fi investită în diverse activităţi


j, 1 ≤ j ≤ n, fiecare producând un anumit profit unitar aj , 1 ≤ j ≤ n, se pune
problema determinării sumei xj , 1 ≤ j ≤ n, investită pentru activitatea j, astfel
încât să se obţină un profit maxim, adică:

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)

Problema mai poate fi complicată dând anumite reguli suplimentare în legătură


cu posibilitatea de investiţie, cu existenţa unui risc al investiţiilor şi neliniaritatea
profitului total.

4.1.4. Gestionarea optimă a unui depozit

Să considerăm problema funcţionării unui depozit care cumpără şi vinde un


anumit produs cu scopul maximizării profitului pe o anumită durată de timp.
Depozitul are o anumită capacitate fixă S şi un cost unitar de stocare h . Preţul
produsului fluctuează de-a lungul perioadei de analiză, dar pe durata unei unităţi de
timp preţul de achiziţie şi preţul de vânzare sunt aceleaşi. Depozitul este iniţial gol
şi trebuie să rămână gol la sfârşitul perioadei de analiză.
Modelarea problemei. Fie
4. Programare liniară 55

− xi stocul din depozit la începutul perioadei i,


− di cantitatea achiziţionată în perioada i,
− bi cantitatea vândută în perioada i şi
− pi preţul pe perioada i.
Dacă sunt n intervale de timp avem:
n
max ∑ ( pi bi − hxi )
i =1

⎧ 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

Se obţine astfel o problemă de programare liniară.

4.1.5. Problema dietei

Se presupune că există n alimente diferite, cu preţul unitar ci pentru


alimentul i, din care trebuie să se pregăteacă o dietă. Dieta trebuie să conţină
zilnic m ingrediente nutritive şi din fiecare ingredient j, minimum bj unităţi. Se
presupune că o unitate din alimentul i conţine aji unităţi din ingredientul j. Să
se determine cea mai economică dietă care satisface minimul nutriţional cerut.

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

4.2. Diferite forme ale problemelor de programare liniară

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

unde x1 este vectorul variabilelor asupra cărora se impun condiţii de


nenegativitate, x2 − vectorul variabilelor asupra cărora nu se impun condiţii de
semn, x3 − vectorul variabilelor asupra cărora se impun condiţii de nepozitivitate,
Aij − submatrice a matricei A , ale cărei elemente sunt coeficienţii componentelor
vectorului xj , iar bi sunt subvectori ai vectorului b (1 ≤ i, j ≤ 3) . Prin x≥ 0 se
va înţelege că fiecare componentă a vectorului x este nenegativă.
Se spune că o problemă are forma standard dacă toate restricţiile sunt ecuaţii
şi tuturor variabilelor li se impun condiţii de nenegativitate
⎧min(max)c ′x

⎨ Ax = b
⎪x ≥ 0
⎩ (4.21)
n
c′x = ∑ ci xi
i =1
Se spune că o problemă are forma canonică dacă toate restricţiile sunt inegalităţi
de acelaşi sens şi tuturor variabilelor li se impun condiţii de nenegativitate
⎧min c ′x

⎨ Ax ≥ b (4.22)
⎪x ≥ 0

⎧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

ii) transformarea sensului unei inegalităţi se realizează prin înmulţirea cu −1


4. Programare liniară 57

iii) o variabilă x căreia nu i se impun condiţii de semn se înlocuieşte cu


diferenţa a două variabile nenegative
x = x1−x2 , x1 ≥ 0 , x2 ≥ 0
iv) o variabilă x ≤ 0 se înlocuieşte cu o variabilă nenegativă −x
v) transformarea ecuaţiilor în inecuaţii
⎧a ′x ≤ b
a ′x = b ⇔ ⎨
⎩a ′x ≥ b
vi) transformarea inecuaţiilor în ecuaţii
a'x ≤ b se poate scrie ca o ecuaţie
a'x+y=b,
introducând o variabilă y ≥ 0 numită variabilă ecart;
a'x ≥ b se poate scrie ca o ecuaţie
a' x− y=b, y ≥ 0.

Variabilele ecart nu apar în funcţia obiectiv (sau apar cu coeficienţi nuli).

4.3. Algoritmul simplex

Acest algoritm (datorat lui G. B. Dantzig, 1951) se aplică problemelor de


programare liniară sub forma standard. Sunt necesare câteva noţiuni de bază pentru
prezentarea algoritmului (Zidăroiu, 1983).
Fie sistemul de ecuaţii Ax = b, A∈Mm,n(R), rang A = m. Fie B∈Mm,n(R) o
matrice pătratică nesingulară extrasă din A şi notăm xB vectorul variabilelor
corespunzătoare coloanelor lui B. Notăm cu S partea din matricea A care mai
rămâne şi cu xS variabilele corespunzătoare. Sistemul Ax = b devine:
⎡ B⎤
[BS ] ⋅ ⎢ x S ⎥ = b sau BxB + SxS = b. (4.23)
⎣x ⎦
Astfel, în (4.23) luăm xB variabile principale şi celelalte xS , variabile
secundare şi avem
xB = B−1b−B−1S xS . (4.24)
Anulând variabilele secundare avem
xB = B−1b , xS=0. (4.25)
O astfel de soluţie se numeşte soluţie de bază (deoarece B fiind nesingulară,
coloanele sale constituie o bază în R m).
Variabilele principale se numesc variabile de bază.
Se numeşte soluţie nedegenerată o soluţie de bază care are exact m
componente nenule.
Se numeşte soluţie degenerată o soluţie de bază care are şi componente nule.
Se numeşte soluţie admisibilă sau program o soluţie a sistemului de ecuaţii
şi inecuaţii (4.1) ce verifică şi condiţia de nenegativitate (4.2).
Notăm R = {x∈ R n x program}, z* = min{c'x⏐x∈ Rn } .
58 Modele şi algoritmi de optimizare

Convenim să punem z* = +∞ dacă R = φ.


Dacă z* = −−∞, spunem că problema are optim infinit.
Dacă z* este finit, atunci x*∈ R cu proprietatea că z* = c' x* se numeşte
soluţie optimă sau program optim.
Notăm cu R * mulţimea soluţiilor optime.
Soluţia de bază a problemei de programare liniară sub forma standard se
numeşte program de bază (x = 0 este program de bază dacă x=0 este program).
Teorema fundamentală a programării liniare stă la baza algoritmului simplex
(Luenberger, 1989).
Teorema 4.1.
(i) Dacă problema de programare liniară sub forma standard (4.21) are un
program, atunci are cel puţin un program de bază.
(ii) Dacă problema de programare liniară sub forma standard (4.21) are un
program optim, atunci are şi un program de bază optim.
Demonstraţie.
(i) Se notează coloanele matricei A cu a1, a2, …, an şi se presupune că x’=(x1, x2,
…, xn)’ este o soluţie admisibilă şi atunci are loc relaţia
x1a1+x2a2+…+xnan=b.
Se presupune că exact p≤ m dintre variabilele xi sunt diferite de zero şi că acestea
sunt chiar primele. Atunci
x1a1+x2a2+…+xpap=b. (4.26)
Coloanele a1, a2, …, ap pot fi liniar independente sau liniar dependente.
Cazul I. Presupunem că a1, a2, …, ap sunt liniar independente. Dacă p=m
atunci soluţia este de bază şi demonstraţia se încheie. Dacă p<m , atunci, deoarece
A are rangul m, se pot găsi m−p coloane din cele n−p rămase, astfel încât cele
m coloane să fie liniar independente. Atribuim valoarea zero variabilelor
corespunzătoare celor m−p componente şi obţinem o soluţie de bază degenerată.
Cazul II. Presupunem că a1, a2, …, ap sunt liniar dependente. Atunci există o
combinaţie liniară a acestor vectori egală cu zero
y1a1+y2a2+…+ypap=0 (4.27)
în care cel puţin o constantă yi este pozitivă. Scădem din relaţia (4.26) relaţia
(4.27) înmulţită cu ε şi avem
(x1−εy1)a1+(x2−εy2)a2+…+(xp−εyp)ap=b (4.28)
Notând cu y’=(y1, y2,…,yp, 0, 0,…,0) observăm că pentru orice ε
x−εy (4.29)
este o soluţie a sistemului de ecuaţii Ax=b. Pentru ε=0 aceasta se reduce la
soluţia iniţială admisibilă. Deoarece am presupus că măcar o componentă yi este
pozitivă, atunci cel puţin o componentă va deveni zero o dată cu creşterea lui ε.
Alegem
⎧x ⎫
ε = min ⎨ i y i > 0⎬ .
⎩ yi ⎭
Pentru orice valoare ε soluţia dată de (4.29) este admisibilă şi are cel mult
p−1 componente pozitive. Repetând acest proces dacă este necesar, putem elimina
4. Programare liniară 59

componentele pozitive până când avem o soluţie admisibilă corespunzătoare


coloanelor care sunt liniar independente. Am ajuns în cazul I şi se poate aplica
acesta în continuare.
(ii) Fie x’=(x1, x2, …, xn) o soluţie admisibilă optimală care are exact p
componente pozitive x1, x2, …, xp . Din nou pot fi două cazuri: coloanele
corespunzătoare componentelor nenule pot fi liniar independente sau liniar
dependente.
Cazul I. Coloanele sunt liniar independente. Este exact ca şi la (i).
Cazul II. Coloanele sunt liniar dependente. Este ca şi în cazul II de la (i) numai
că trebuie să arătăm că pentru orice ε soluţia dată de (4.29) este optimală. Pentru
această soluţie, valoarea funcţiei obiectiv este
c’x−εc’y (4.30)
Pentru ε suficient de mic, x−εy este o soluţie admisibilă pentru valori
pozitive sau negative ale lui ε. Astfel putem concluziona că c’y=0. Dacă c’y≠0
se poate determina un ε mic şi semnul acestuia, astfel încât (4.30) să conducă la o
valoare mai mică pentru funcţia obiectiv. Contradicţie cu faptul că x este soluţie
optimală şi astfel trebuie să presupunem că c’y=0. Având stabilit că noua soluţie
admisibilă cu mai puţine componente pozitive este optimală, restul demonstraţiei
este ca la (i). ‰

4.4. Fundamentele algoritmului simplex

Din Teorema 4.1 rezultă că putem determina soluţia problemei de programare


liniară sub forma standard astfel: pentru toate bazele B din matricea A (acestea
sunt, evident, în număr finit), calculăm soluţia de bază corespunzătoare B −1 b ,
reţinem dintre acestea doar pe acelea care sunt programe de bază (B−1b ≥ 0) şi
alegem pe aceea care dă funcţiei obiectiv valoarea optimă (cea mai mică sau cea
mai mare).
Dezavantajul ce apare constă în volumul mare de calcule, chiar şi atunci când
problemele sunt de dimensiuni mici.
Algoritmul simplex dă o metodă de explorare sistematică şi economică a
programelor de bază, mai precis de trecere de la un program de bază la altul care dă
funcţiei obiectiv o valoare mai mare sau mai mică, după cum problema este de
maximizare sau minimizare. De asemenea, algoritmul furnizează criterii pentru
cazurile în care problema de programare liniară nu are programe sau are optim
infinit.
Astfel, dacă B este o bază (să presupunem că B−1b ≥ 0), sistemul Ax=b se
poate scrie (Zidăroiu, 1983)
xB=B−1b−B−1SxS
sau
60 Modele şi algoritmi de optimizare

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ă}.

Observaţie 4.2. Pentru j∈ B, y Bj = B −1 a j = e j , ej fiind vectorul unitate.

Folosind (4.31), putem exprima funcţia obiectiv cu ajutorul variabilelor


secundare xS astfel
n ⎛ ⎞ ⎛ ⎞
z = ∑ c j x j = ∑ c j x j + ∑ ci ⎜⎜ xiB − ∑ yijB x j ⎟⎟ = ∑ ci xiB − ∑ ⎜⎜ ∑ ci yijB − c j ⎟⎟ x j
j =1 j∈S i∈B ⎝ j∈S ⎠ i∈B j∈S ⎝ i∈B ⎠
sau
(
z = z B − ∑ z Bj − c j x j , ) (4.34)
j∈S

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

α j = −( z j − c j ) sunt numiţi coeficienţi de cost redus sau coeficienţi de cost


relativ.
Pentru simplificarea scrierii renunţăm la indicele superior B, înţelegându-se că
este vorba de elementele corespunzătoare bazei.
La baza algoritmului simplex stau următoarele observaţii ce rezultă din
teoremele prezentate în continuare (Zidăroiu, 1983).

Teorema 4.2. Dacă zj−cj ≤ 0, (∀) j∈ S, atunci programul de bază corespunzător


bazei B, (xB=B−1b, xS =0) este optim.
4. Programare liniară 61

Demonstraţie. Pentru acest program valoarea funcţiei obiectiv este z B . Pentru


orice alt program x , deoarece xj≥0 rezultă că
( )
∑ z Bj − ci x j ≤ 0
j∈S

ş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).

Practic, se ia drept criteriu de alegere a lui k , acel k pentru care


zk−ck=maxim.
Acest criteriu se mai numeşte şi criteriu de intrare în bază.
Criteriul dat de (4.37) reprezintă criteriul de ieşire din bază.

4.5. Enunţul algoritmului simplex

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 .

Observaţia 4.4. Pentru o problemă de maximizare:


⎧max c ′x

⎨ Ax = b
⎪x ≥ 0

trebuie modificat criteriul de intrare în bază astfel:
a'1) dacă toţi zj−cj ≥ 0, programul este optim.
a'2) dacă (∃)j pentru care zj−cj < 0, se determină k astfel încât
zk−ck= min{zj−cj}.
4. Programare liniară 63

4.6. Tabelul simplex şi transformarea sa

Presupunem că pentru o bază B am calculat x i , z , zj−cj, yij şi le dispunem


într-un tabel numit tabel simplex (Tabelul 4.1). Presupunem că baza B este
formată din primele m coloane ale matricei A.
Prima coloană (CVB) conţine coeficienţii din funcţia obiectiv ai variabilelor de
bază.
A doua coloană (VB) conţine variabilele de bază.
A treia coloană (VVB) conţine valorile variabilelor de bază, ultima linie fiind
valoarea funcţiei obiectiv pentru programul de bază corespunzător bazei B, adică
zB.
Coloanele următoare conţin vectorii y Bj (având grijă ca pentru variabilele de
bază y Bj =ej), iar ultima linie conţine diferenţele zj−cj= c ′B yi−cj.

Observaţia 4.5. Pentru variabilele de bază, zj−cj= c′B ej−cj=cj−cj=0.

Pentru calculul elementelor z Bj −cj şi zB ale primului tablou este util să


trecem coeficienţii cj din funcţia obiectiv în partea de sus a coloanelor respective.
Să presupunem că ak trebuie să intre în bază în locul lui al. Elementul ylk se
numeşte pivot şi îl evidenţiem încercuindu-l.
Pentru fiecare bază se alcătuieşte câte un tabel simplex (Tabelul 4.1).

Cum se calculează elementele noului tablou corespunzător noii baze ?


Elementele liniei k se împart la pivot
~ x ~ y lj
x kB = l ; y kjB = (4.38)
y lk y lk
Elementele celorlalte linii se calculează cu regula dreptunghiului cu diagonala
principală cea a pivotului.
x y lj
x iB = x i − y ik l (i ≠ l ) ; y ijB = y ij − y ik (i ≠ l )
~ ~
(4.39)
y lk y lk
Modificarea funcţiei obiectiv se face după formulele de mai jos.

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

c1 cl cm cm+1 ck cn alegem min

xi
CVB VB VVB x1 xl xm xm+1 xk xn
y ik

c1 x1 x1 1 ... 0 ... 0 y1,m+1 ... y1,k ... y1,n


Coeficienţii variabilelor de bază în

M M M M M M M M M
funcţia obiectiv

cl xl xl 0 ... 1 ... 0 yl,m+1 ... yl,k ... yl,n

M M M M M M M M M

cm xm xm 0 ... 0 ... 1 ym,m+1 ... ym,k ... ym,n

valoarea alegem max


funcţiei z 0 0 0 zm+1−cm+1
obiectiv zj−cj>0

În noul tabel în loc de xl este trecut xk în coloana VB.


~ ~
Deoarece xk este variabilă de bază, y kB = e k , z kB − c k = 0 , aşa cum rezultă şi
din (4.39) şi (4.40).

În problemele practice m, numărul liniilor matricei A, este mult mai mic


decât n, numărul coloanelor, şi atunci efortul de calcul trebuie redus la coloanele
care sunt necesare în găsirea soluţiei optime.
În algoritmul simplex revizuit se fac calcule doar pentru elementele tabloului
strict necesare.

O variantă a algoritmului simplex revizuit se bazează pe reprezentarea inversei


matricei de bază B ca un produs de matrice elementare E (Luenberger, 1989),
obţinute din matricea unitate, care au elementele coloanei p date de relaţiile:
y 1
vi = ik , i ≠ l şi v l = ,
yl k yl k
yl k fiind pivotul.
Înmulţirea lui E la dreapta cu orice coloană a tabelului simplex este
echivalentă cu aplicarea regulii dreptunghiului. Dacă baza iniţială în algoritmul
simplex este cea canonică (B=In), atunci la iteraţia a p-a, inversa matricei B este
B −1 = E p E p −1 ...E 2 E1 , unde Ep este o matrice elementară de forma dată mai jos
4. Programare liniară 65

⎛ 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

S-a observat că în fiecare lună, maşinile M1, M2, M3 , ce lucrează într-o


secţie a unei întreprinderi, nu sunt folosite 8 ore, 24 de ore şi respectiv 18 ore
(Văduva et al, I, 1974). Se ia hotărârea să se folosească şi acest timp, punându-le să
lucreze la fabricarea a 2 produse suplimentare, P1 şi P2 , ca produse anexe ale
secţiei, care aduc un profit la unitatea de produs fabricat de 4 şi respectiv 3 u. m.
Timpul necesar de lucru la fiecare maşină este, pe fiecare produs, dat de Tabelul
4.2.
Tabelul 4.2
Maşina P1 P2
M1 2 1
M2 3 2
M3 1 3
Să se determine planul de producţie al secţiei pentru produsele P1 şi P2 care
să dea un profit maxim.

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

b) Tabelul simplex şi calculele aferente


Calculele corespunzătoare primei iteraţii sunt pezentate în Tabelul 4.3.

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

valoarea alegem min


funcţiei 0 –4 –3 0 0 0
obiectiv z zj−cj<0

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

valoarea alegem min


funcţiei 16 0 –1 2 0 0
obiectiv z zj−cj<0

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.

c) Culegerea rezultatelor din tabelul simplex final


Maximul funcţiei de optimizat este 21.6 şi se obţine pentru
x1=1.2 ; x2=5.6 ; x3=0 .
Soluţia de bază este nedegenerată. Valorile variabilelor auxiliare
x3=0 ; x4=9.2 ; x5=0 ,
arată că soluţia optimă face egalităţi doar restricţiile 1 şi 3 , adică se foloseşte
integral timpul la aceste maşini, iar cea de-a doua inegalitate arată că prin această
soluţie nu se utilizează integral timpul celei de-a doua maşini.
4. Programare liniară 67

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

valoarea alegem min


9 2
funcţiei 21.6 0 0 0
obiectiv z 5 5 zj−cj < 0

Vom rezolva această problemă utilizând pachetul de programe Management


Scientist. La lansarea programului se afişează pe ecran fereastra de prezentare apoi
după apăsarea butonului Continue apare fereastra care permite selectarea modulului
pentru rezolvarea problemelor de programare liniară ca în Figura 2.4.
Selectăm acest modul şi în fereastra care apare din submeniul File alegem
New. În fereastra Problem Features precizăm numărul de variabile, de restricţii şi
tipul problemei, ca în Figura 4.1.

Figura 4.1

După apăsarea butonului OK, apare fereastra în care se introduc coeficienţii


funcţiei obiectiv şi restricţiile problemei, ca în Figura 4.2.
68 Modele şi algoritmi de optimizare

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

Variable Value Reduced Costs


-------------- --------------- ------------------
X1 1.200 0.000
X2 5.600 0.000

Constraint Slack/Surplus Dual Prices


-------------- --------------- ------------------
1 0.000 1.800
2 9.200 0.000
3 0.000 0.400

OBJECTIVE COEFFICIENT RANGES

Variable Lower Limit Current Value Upper Limit


------------ --------------- --------------- ---------------
X1 No Lower Limit 4.000 No Upper Limit
X2 No Lower Limit 3.000 No Upper Limit

RIGHT HAND SIDE RANGES

Constraint Lower Limit Current Value Upper Limit


------------ --------------- --------------- ---------------
1 No Lower Limit 8.000 No Upper Limit
2 No Lower Limit 24.000 No Upper Limit
3 No Lower Limit 18.000 No Upper Limit

Rezultatele sunt cele obţinute şi în urma aplicării algoritmului simplex.

Informaţia din coloana Reduced Costs arată cu cât ar trebui să se modifice


coeficientul variabilei respective în funcţia obiectiv pentru ca variabila să fie
pozitivă în soluţia optimă (Anderson et al, 1998). Astfel, dacă o variabilă este deja
pozitivă, atunci costul redus este zero.
4. Programare liniară 69

Informaţiile despre restricţii (Constraint) din Tabelul 4.5 se referă la:


− Slack/Surplus – această coloană dă valorile variabilelor auxiliare. Dacă restricţiile
sunt verificate cu inegalităţi stricte, atunci variabilele auxiliare sunt nenule, altfel
vor fi nule.
− Dual prices – conţine informaţii despre valorile marginale ale resurselor. În
Management Scientist un preţ dual înseamnă « îmbunătăţirea valorii optime a
funcţiei obiectiv corespunzătoare creşterii cu o unitate a termenului liber al
restricţiei » . Pentru restricţiile verificate cu egalitate aceste preţuri vor fi nenule.
Pentru restricţiile cu inegalităţi stricte aceste preţuri sunt nule, din cauza nefolosirii
integrale a resurselor disponibile.
Secţiunea Objective Coefficient Ranges (intervalele coeficienţilor în funcţia
obiectiv) dă intervalul în care pot varia coeficienţii funcţiei obiectiv astfel încât
soluţia să rămână optimă.
Ultima secţiune Right Hand Side Ranges (intervalele termenilor liberi) conţine
intervalele în care ar trebui să se menţină termenii liberi pentru ca preţul dual
asociat restricţiei să rămână nemodificat.

Observaţia 4.6. Analiza sensibilităţii prezentată mai sus se bazează pe faptul că un


singur termen liber variază la un moment dat, ceilalţi rămânând la valorile
iniţiale.

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

Pentru rezolvarea acestei probleme folosind Solver-ul trebuie urmăriţi paşii:


1. Se selectează celula conţinând formula cu funcţia de optimizat (D3).
2. Se selectează din meniul bară principal Tools (Instrumente) şi, de aici,
Solver (Rezolvitor). Apare caseta de dialog Solver Parameters
(Parametrii Rezolvitor), care are în caseta de text Set Target Cell
(Setare Celulă ţintă) celula de optimizat (D3).
Se selectează tipul de optim max sau min; pentru acest caz, max.
3. În caseta de text By Changing Cells (Prin modificarea celulelor) se
selectează celulele care reprezintă variabilele problemei (D13−D14).
4. În caseta de text Subject to the constraints (Se supune restricţiilor) se
impune condiţia de nenegativitate asupra variabilelor x1 – x2 şi
celelate restricţii ale modelului, astfel (Figura 4.4):

Figura 4.4

5. Se apăsă butonul Add (Adăugare) şi apare caseta de dialog Add


Constraint (Adăugare restricţie), Figura 4.5. Se selectează celule
D13−D14 în Cell Reference, apoi se alege simbolul ≥ , iar în caseta
Constraint (Restricţii) celulele F7−F8. Se apasă butonul OK.

Figura 4.5

6. Adăugarea celorlalte restricţii se face apăsând butonul Add, iar în


caseta Add Constraint se trec celulele în care s-au înscris formulele cu
restricţiile (H7−H9). Se alege semnul ≤ şi se selectează în caseta
Constraint celulele cu termenii liberi (D7−D9). Când s-au introdus
toate restricţiile se selectează butonul OK.
7. Se apasă butonul Solve (Rezolvare) şi apare caseta de dialog Solver
Results (Rezultate rezolvitor), iar în Reports (Rapoarte) se pot alege
4. Programare liniară 71

formele de prezentare a rezultatelor. Se apasă butonul OK după


precizarea tipurilor de rapoarte.
Se creează Answer Report (Raport răspuns), Sensitivity Report (Raport
sensibilitate), Limits Report (Raport limite) ca în Tabelele 4.6, 4.7 şi
respectiv 4.8.

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

Se obţin aceleaşi rezultate pentru funcţia obiectiv şi pentru valorile


necunoscutelor ca şi cu Management Scientist.

4.8. Convergenţa algoritmului simplex. Degenerare şi ciclare

Dacă în cursul aplicării algoritmului simplex valoarea funcţiei obiectiv scade la


fiecare iteraţie, atunci nici o bază nu se poate repeta (fiecărei baze îi corespunde un
program de bază, deci o valoare bine determinată a funcţiei obiectiv). Deoarece
numărul bazelor este finit (cel mult C nm ), rezultă (Zidăroiu, 1983) că într-un
număr finit de iteraţii se ajunge la una din situaţiile a.1) sau b.1) din enunţul
algoritmului simplex.
Dacă valoarea funcţiei obiectiv nu se modifică în cursul câtorva iteraţii
succesive, este posibil să revenim la una din bazele prin care am trecut deja, şi
atunci procesul devine infinit fără a conduce la soluţie. Această situaţie se numeşte
ciclare.
xl
Variaţia funcţiei obiectiv la o iteraţie este (z k − c k ) şi această expresie
y lk
este nulă dacă şi numai dacă x l =0, adică dacă programul este degenerat.
4. Programare liniară 73

Pentru o problemă nedegenerată, convergenţa algoritmului simplex, mai precis


faptul că el conduce la o soluţie într-un număr finit de iteraţii, este asigurată.
Pentru o problemă degenerată, adică având cel puţin un program degenerat,
este posibilă, în principiu, ciclarea.

Observaţia 4.7. Degenerarea nu implică în mod necesar ciclarea: cu toate că


foarte multe probleme practice sunt degenerate, exemplele de ciclare se
construiesc cu destulă dificultate (exemplul dat de Beale în Hadley G. 1962 Linear
Programming, Addison−Wesley, Reading, Mass.).

Degenerarea apare, în afara cazului în care vectorul b are componente nule,


atunci când criteriul de ieşire al algoritmului simplex, mai precis minimul (4.37),
nu defineşte în mod unic variabila care iese din bază. Presupunem că acest minim
se atinge pentru doi indici, l şi h, adică
xl x
= h ,
y lk y hk
şi presupunem că alegem variabila xl să părăsească baza. Atunci
~ y
x hB = x h − xl hk = 0 ,
y lk
şi deci noul program de bază va fi degenerat.
Dacă programul iniţial nu va fi degenerat, degenerarea poate apărea numai în
acest caz.

Pentru demonstrarea valabilităţii generale a algoritmului simplex este totuşi


necesară o regulă care să facă posibilă înlăturarea ciclării.

Regula lui Bland de înlăturare a ciclării (Luenberger, 1989):


{ }
a) se selectează coloana q = min q z q − c q > 0 , adică, cel mai mic indice
de coloană favorabilă pentru a intra în noua bază,
b) pentru ieşirea din bază se ia coloana candidată cu indicele cel mai mic.

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 .

Îndepărtarea situaţiei de ciclare se poate face şi cu metoda perturbării a lui A.


Charnes, sau cu cea lexicografică a lui Dantzig şi Wolfe .

Observaţia 4.8. O regulă practică de evitare a ciclării este următoarea: se divid


liniile corespunzătoare variabilelor nule din Tabelul simplex prin pivoţii posibili,
mergând de la stânga spre dreapta; în momentul când unul dintre rapoarte este
mai mic decât celelalte, precizăm variabila care iese din bază ca fiind cea care
corespunde raportului minim (Zidăroiu, 1983).

4.9. Interpretarea geometrică a algoritmului simplex

Rezolvarea problemelor simple de programare liniară (n=2 sau n=3) se poate


face şi geometric. Pentru exemplificare considerăm următoarea problemă (Mihăilă,
Popescu, 1978).
Realizarea a două produse P1 şi P2 se face folosind patru materii prime M1, M2,
M3, M4 . Disponibilul de materii prime, consumul specific şi profitul unitar pentru
fiecare tip de produs sunt date de tabelul 4.9.

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ă.

4.10. Interpretarea economică a algoritmului simplex

Revenim la problema "utilizarea optimă a resurselor" şi presupunem că


restricţiile sunt sub formă de egalităţi, Ax=b (Dragomirescu şi Maliţa, 1968).
Observăm că cele n activităţi de producţie se asociază câte m, în grupe de
activităţi de bază, corespunzătoare programelor de bază. Deoarece programul optim
este un program de bază, rezultă concluzia interesantă că într-o organizare optimă a
producţiei nu se vor desfăşura toate cele n activităţi posibile (deci, nu se vor
produce toate cele n sortimente), ci cel mult m (cazul programului nedegenerat).
Această concluzie este dedusă din considerente pur matematice şi în afara oricăror
considerente economice.
Presupunem că activitatea k nu face parte din grupul activităţilor de bază
corespunzătoare unei baze B (adică xk nu este variabilă de bază, xk=0, adică în
această variantă sortimentul nu se produce). Dacă dorim să mărim nivelul acestei
4. Programare liniară 77

activităţi, adică să producem sortimentul k în cantitatea xk > 0, producţiile


celorlalte sortimente de bază se vor modifica în conformitate cu (4.39); unele vor
trebui reduse şi, cum nu pot fi reduse decât cel mult până la 0, rezultă că xk poate
creşte cel mult până la valoarea dată de (4.37), pentru care activitatea de bază l
atinge nivelul 0. Aceasta este interpretarea criteriului de ieşire.

Creşterea lui xk cu o unitate implică variaţii de −yik ale celorlalte activităţi şi


deci şi o variaţie a funcţiei obiectiv
∆z = c k + ∑ ci (− y ik ) = c k − z k ,
i∈B
adică o creştere a lui xk cu o unitate aduce, în acelaşi timp, un profit suplimentar
ck−zk. Dacă zk−ck < 0 (pentru problema de maximizare a beneficiilor), atunci
∆ z>0 şi, deci, introducerea activităţii k în bază, adică producerea sortimentului
k, aduce o îmbunătăţire a funcţiei obiectiv, ceea ce revine la o sporire a profitului
total. Regăsim astfel criteriul de intrare în bază al algoritmului simplex.

Aplicarea algoritmului simplex constă astfel într-o explorare sistematică a


diverselor variante de m activităţi de bază; la fiecare iteraţie se înlocuieşte o
activitate l printr-o activitate k, obţinându-se o creştere a profitului total, până
când, pentru toate activităţile care nu sunt în bază, avem zk−ck ≥ 0, şi deci nici o
creştere a profitului nu mai este posibilă.

4.11. Metoda celor două faze

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

În faza I pentru a obţine un program de bază al sistemului (4.41) se rezolvă


problema de programare liniară
⎧min ∑ x ia = W

⎪ Ax + Ix = b
a

⎨ (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.

În cele prezentate până acum am presupus că rang A = m. Introducerea


variabilelor artificiale face ca rangul matricei [A, I] să fie sigur m.
Dacă rang A < m sau dacă problema este degenerată, atunci când se ajunge la
min ∑ x ia = 0, este posibil să mai rămână în bază câteva variabile artificiale,
desigur cu valoarea 0. Faza I se consideră încheiată atunci când toate variabilele
x ia au fost eliminate, şi anume:
(i) dacă rang A = m (dar problema este degenerată), variabilele x ia = 0 pot fi
întotdeauna înlocuite cu variabilele xj care intră în bază tot cu valoarea 0, fără
să producă vreo modificare în funcţia obiectiv.
(ii) dacă rangA < m, nu este posibilă eliminarea tuturor variabilelor x ia (câteva
rămân în bază cu valoarea 0). În acest caz, liniile corespunzătoare ale matricei
4. Programare liniară 79

A sunt combinaţii ale celorlalte, adică restricţiile corespunzătoare a'i x = bi


sunt consecinţe ale celorlalte şi se pot elimina.

Această discuţie arată că nu este necesar să se impună rang A = m.

Dacă în problema (4.42) cu b ≥ 0 există xj care apare într-o singură ecuaţie şi


cu coeficient pozitiv, adică matricea A conţine un vector unitate, atunci în ecuaţia
respectivă nu este necesară introducerea unei variabile auxiliare, variabila xj putând
fi luată în baza iniţială. Desigur că dacă există k astfel de variabile, vom introduce
doar n−k variabile artificiale, ceea ce scurtează faza I.

Uneori este necesară cunoaşterea inversei bazei curente a problemei de


programare. În acest caz, la sfârşitul fazei I nu mai înlăturăm din tabel coloanele
corespunzătoare variabilelor artificiale. În fiecare tabel al fazei a II−a, în aceste
coloane se găseşte matricea B−1I = B−1, adică inversa bazei curente B.

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

Să se determine repartiţia optimă pe liniile de sortare a agregatului astfel încât


profitul obţinut să fie maxim.

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

Trebuie determinat maximul acestei funcţii cu restricţiile


⎧2 x1 + 3x 2 + x3 = 300

⎨ x1 + 2 x 2 + 2 x3 = 372 .
⎪x , x , x ≥ 0
⎩ 1 2 3
⎛ 2 3 1⎞
Deoarece matricea A = ⎜⎜ ⎟⎟ a restricţiilor nu are o bază evidenţiată, se
⎝ 1 2 2⎠
aplică metoda celor două faze.

b) Metoda celor două faze


i) Faza I
Se aplică algoritmul simplex problemei
{
min x1a + x 2a }
⎧ 2 x1 + 3 x 2 + x3 + x = 300
a
1

⎨ x1 + 2 x 2 + 2 x3 + x = 372
a
2
⎪ x , x , x , xa , xa ≥ 0
⎩ 1 2 3 1 2

Calculele fazei I sunt trecute în Tabelul 4.12 .

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.

c) Culegerea şi interpretarea rezultatelor


Algoritmul se opreşte cu optim finit, anume, profitul maxim este 1268,
obţinut pentru x1=76 , x2=0 , x3=148 , care constituie o soluţie de bază
nedegenerată.
4. Programare liniară 81

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

valoarea alegem max


funcţiei 672 3 5 3 0 0
obiectiv z zj−cj>0

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

valoarea 1 4 alegem max


5
funcţiei 172 − 0 − 0
3 3 3
obiectiv z zj−cj>0

3 1 1
0 x2 57 1 0 − 8
4 2 4

1 1 3
0 x3 129 − 0 1 − 24
4 2 4

valoarea alegem max


funcţiei 0 0 0 0 −1 −1
obiectiv z zj−cj>0
82 Modele şi algoritmi de optimizare

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

valoarea 7 alegem min



funcţiei 1002 2 0 0
obiectiv z zj−cj<0

4
5 x1 76 1 0
3

1
6 x3 148 0 1
3

Valoarea alegem min


14
funcţiei 1268 0 0
obiectiv z 3 zj−cj<0

4.12. Dualitatea în programarea liniară

Oricărei probleme de programare liniară (numită problemă primală) i se


asociază o problemă de programare liniară duală pornind de la aceleaşi costuri şi
coeficienţi ai restricţiilor, dar în timp ce o problemă este de minim, cealaltă este de
maxim. Vom demonstra că dacă valorile optime ale funcţiilor obiectiv sunt finite,
atunci ele sunt egale.Variabilele problemei duale pot fi interpretate ca preţuri
asociate cu restricţiile problemei primale şi această asociere permite o interpretare
economică a problemei duale.
Fie problema de programare liniară sub forma generală (4.20).
Problema duală asociată problemei (4.20) este următoarea problemă de
programare liniară
4. Programare liniară 83

(
⎧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.

Din examinarea cuplului de probleme duale rezultă că una dintre probleme se


obţine în următorul mod:
a) termenii liberi din problema primală devin coeficienţi ai funcţiei obiectiv în
problema duală,
b) coeficienţii funcţiei obiectiv din problema primală devin termeni liberi în
problema duală,
c) o problemă de maximizare (minimizare) se transformă într-o problemă de
minimizare (maximizare),
d) matricea coeficienţilor sistemului de restricţii pentru problema duală este
transpusa matricei coeficienţilor sistemului de restricţii ale problemei primale,
e) variabilele duale (primale) asociate unor restricţii primale (duale) concordante
sunt supuse condiţiei de nenegativitate,
f) variabilele duale (primale) asociate unor restricţii primale (duale), care sunt
ecuaţii, nu sunt supuse nici unei condiţii privind semnul.

Din definiţia dată rezultă că:


− duala unei probleme de programare sub forma standard
⎧min c ′x

⎨ Ax = b (4.45)
⎪x ≥ 0

este problema de programare liniară


⎧max b′u
⎪ t
⎨A u ≤ c (4.46)
⎪u − arbitrar

− duala unei probleme de programare sub forma canonică
⎧max c ′x

⎨ Ax ≤ b (4.47)
⎪x ≥ 0

84 Modele şi algoritmi de optimizare

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

⎪⎩

În continuare sunt prezenate teoremele care stabilesc conexiunile fundamentale


între cele două probleme duale.

4.13. Teorema fundamentală a dualităţii

Fie problema primală sub forma standard (4.45) şi duala sa (4.46).

Definiţia 4.1. O bază B din matricea A se numeşte primal admisibilă pentru


problema (4.45) dacă verifică relaţia
B −1 b ≥ 0 (4.52)
O bază B din matricea A se numeşte dual admisibilă pentru problema (4.45)
dacă verifică relaţia
c ′B −1 A − c ′ ≤ 0 (4.53)
4. Programare liniară 85

Nu vom presupune că A are rangul maxim. Lema următoare stabileşte o


relaţie importantă între cele două probleme.

Lema slabă a dualităţii. Dacă x şi u sunt soluţii admisibile pentru problemele


(4.45) şi respectiv (4.46), atunci x’c ≥ b’u (Luenberger, 1989).
Demonstraţie. Deoarece
b’u =(Ax)’u =xAtu , dar Atu≤ c’ şi x≥0 ,
atunci rezultă că
b’u ≤ x’c.
‰

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. Dacă x0 şi u0 sunt soluţii admisibile pentru problemele (4.45) şi


respectiv (4.46) şi dacă c’x0 = u’0 b , atunci x0 şi u0 sunt soluţii optime pentru
problemele respective.

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.

Vom enunţa şi demonstra Teorema fundamentală a dualităţii, care afirmă că şi


reciproca Corolarului 4.1 este adevărată (Luenberger, 1989). Pentru aceasta avem
nevoie de următorul rezultat (demonstrat în Fletcher, II, 1981).

Lema de separare. Există un hiperplan care separă un con convex închis C de un


vector nenul v ∉ C .

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.

Teorema ecarturilor complementare pentru cuplu de probleme duale asimetrice.


O condiţie necesară şi suficientă ca programele x* şi u* să fie optime pentru
problemele duale (4.45) şi (4.46) este ca pentru orice i să avem:
a) xi > 0 ⇒ u ′a i = ci
b) u ′a i < ci ⇒ xi = 0 .
Demonstraţie. Dacă au loc relaţiile a) şi b) atunci (u’A−c’)x=0, adică u’b=c’x ,
şi, din Corolarul 4.1, rezultă că x şi u sunt soluţii optime pentru perechea de
probleme (4.45) şi (4.46). Invers, dacă x şi u sunt soluţii optime pentru perechea
de probleme (4.45) şi (4.46), atunci din Teorema fundamentală a dualităţii rezultă
că u’b= c’x şi astfel (u’A−c’)x=0. Deoarece fiecare componentă a lui x este
nenegativă şi fiecare componentă a lui u’A−c’ este nepozitivă, rezultă condiţiile
a) şi b) din teoremă. ‰

Teorema ecarturilor complementare pentru cuplu de probleme duale simetrice. O


condiţie necesară şi suficientă ca programele x* şi u* să fie optime pentru un cuplu
de probleme duale simetrice este ca pentru orice i şi j să avem:
a) xi > 0 ⇒ u ′a i = ci
b) u ′a i < c i ⇒ xi = 0
c) u j > 0 ⇒ a j x = b j
d) a j x > b j ⇒ u j = 0 ,
unde a j reprezintă linia j din matricea A.
Demonstraţia este similară demonstraţiei teoremei precedente.

{ }
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. ‰

Lema substituţiei. Fie A o matrice pătratică nesingulară A ∈M n (R ) şi B o


matrice obţinută din A prin înlocuirea coloanei ar cu vectorul nenul b ∈ R n şi
c = A −1 b . Atunci:
a) condiţia necesară şi suficientă ca să existe B-1 este ca c r ≠ 0 ;
b) Dacă c r ≠ 0 , atunci B −1 = E r (η ) A −1 , unde E r (η ) se obţine din
matricea unitate de ordinul n prin înlocuirea coloanei r cu vectorul
η ′ = cr−1 (− c1 ,...,−cr −1 ,1,−cr +1 ,...,−cr )′ .
Demonstraţie. Din forma lui c rezultă că
(
b = c1 a 1 + ... + c n a n . ) (4.54)
a) Necesitatea condiţiei. Dacă cr=0 , atunci din definiţia lui c rezultă că
{ }
vectorii a 1 ,..., a r −1 , b, a r +1 ,..., a n sunt liniar dependenţi şi B nu este inversabilă.
Suficienţa condiţiei. Presupunem că B nu este inversabilă şi atunci rangul ei
este mai mic decât n, adică vectorii coloană ai matricei B sunt liniar dependenţi.
Fie λi , i = 1, n , astfel încât
n n

∑λ
i =1
2
i ≠ 0 şi ∑λ a
i =1
i
i
+ λr b = 0 .
i≠r

Însă din (4.54) avem

∑ (λ )
n

i + ci λ r a i + λ r c r a r = 0 ,
i =1
i≠r

ceea ce înseamnă că A are coloanele liniar dependente şi astfel nu este inversabilă.


Atunci, trebuie ca c r λ r = 0 . Sunt posibile două cazuri.
i) cr=0 şi suntem în cazul a) al lemei, sau
ii) λ r = 0 şi atunci din (4.54) rezultă că vectorii a1,…, ar-1, ar+1,…, an, sunt
liniar dependenţi , iar matricea A nu este inversabilă. Contradicţie!
n
b) Din (4.54) avem a r = c r−1 b − ∑ c r−1 ci a i , adică a r = Bη . Cum
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

Din relaţiile (4.40) rezultă că


~
z = z − z − ck
B B
( B
k ) xr
. Dar z B = u ′B b şi
y lkB
~
z B = u′B~ b şi atunci u B~ este cel puţin la fel de bun ca şi uB. ‰

4.14. Algoritmul simplex dual

Prin aplicarea algoritmului simplex la problema duală se obţine un nou


algoritm pentru problema iniţială, numit algoritmul simplex dual.
Algoritmul simplex primal explorează bazele primal admisibile ale problemei
(4.45) până la obţinerea unei baze primal admisibile care să fie şi dual admisibilă
( z Bj − c j ≤ 0 , 1 ≤ j ≤ n ), sau până la punerea în evidenţă a faptului că problema
primală are optim infinit.
90 Modele şi algoritmi de optimizare

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.

Adesea, pentru problema de programare liniară se cunoaşte o soluţie de bază,


dar care nu este şi admisibilă şi pentru care multiplicatorii simplex sunt admisibili
pentru problema duală asociată. În tabelul simplex această situaţie corespunde stării
în care ultima linie (zj−cj) nu are elemente pozitive, dar soluţia nu este admisibilă.
O astfel de situaţie apare, de exemplu, atunci când o problemă de programare
liniară este rezolvată şi din aceasta se construieşte o problemă nouă prin
schimbarea vectorului termenilor liberi b (postoptimizare sau reoptimizare). În
această situaţie, dispunând de o soluţie admisibilă de bază pentru problema duală
este de preferat să continuăm să rezolvăm problema duală.
Considerăm problema de programare liniară sub forma standard şi fie B o
bază cunoscută a acestei probleme, iar u′ = c ′B B −1 este admisibilă pentru
problema duală. Dacă xB=B−1b≥0, această soluţie este primal admisibilă şi atunci
ea este optimă. Vectorul u este admisibil pentru problema duală şi atunci are loc
inegalitatea u’aj≤cj pentru j = 1, n . Presupunând că baza este formată cu primele
m coloane ale lui A, atunci au loc egalităţile u’aj=cj , j = 1, m şi, cu excepţia
degenerării, inegalităţile u’aj<cj , j = m + 1, n . Într-o iteraţie a metodei simplex
duale vom găsi un nou vector u , astfel încât una din egalităţile de mai sus devine
inegalitate, iar una din inegalităţi devine egalitate, în acelaşi timp valoarea funcţiei
obiectiv pentru problema duală creşte. Cele m egalităţi în noua soluţie determină o
nouă bază. Notăm linia i a matricei B−1 cu α i . Atunci, pentru u ′ = u ′ − ε α i
avem u ′a j = u ′a j − εα i a j . Astfel, notând zj=u’aj şi observând că u’aj=yij ,
(elementele (i, j) din tabelul simplex), avem:
u ′a j = c j , j = 1, m , j≠i
u ′a i = c i − ε (4.55)
u ′a j = z j − εy ij , j = m + 1, n , j≠i

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.

Pas 0. Se determină o bază dual admisibilă B , în matricea A , se calculează


B B B B
x = B -1b , z = c ′B x , y Bj = B -1a j , z j − c j , 1 ≤ j ≤ n
aj fiind coloane ale matricei A.
Pas 1. a) Criteriu de ieşire din bază
1) dacă toţi x i ≥ 0 , atunci programul este optim. Stop!
2) dacă (∃)xi < 0 , atunci se determină l astfel încât
{
x l = min x i x i < 0 }.
b) Criteriu de intrare în bază
1) dacă toţi ylj ≥ 0 , atunci problema nu are programe. Stop!
2) dacă (∃) y lj < 0 , atunci se determină k astfel încât
z k − ck zj − cj
ε0 = = min (4.57)
y lk j ylj <0 y lj
Pas 2. Se înlocuieşte în baza B coloana l cu coloana k , obţinându-se noua bază
~
B . Se calculează
~ y lj
B x ~ ~ x ~ x
x l = l , y ijB = , x iB = x i − y ik i (i ≠ l ) , y ijB = y ij − y ik i (i ≠ l )
y lk y lk y lk y lk
~
xl ~ y lj
z = z B -( z k − c k ) 1 ≤ i ≤ n , z j − c j = z j − c j − (z k − c k )
B B
, ,
y lk y lk
1≤ j ≤ n
~
şi se trece la pasul 1, înlocuind B cu B .

În continuare sunt prezentate câteva observaţii privind algoritmului de mai sus.


a) alegerea lui k în relaţia (4.57) ne permite să afirmăm că noua soluţie va fi
din nou dual admisibilă;
b) din relaţia (4.56) şi din alegerea lui x l < 0 (conform cu a2 din algoritmul
simplex dual) valoarea funcţiei obiectiv pentru problema duală va creşte;
c) algoritmul nu se termină decât cu soluţia optimă şi valoarea corespunzătoare
pentru funcţia obiectiv sau dacă problema duală are valoarea nemărginită pentru
funcţia obiectiv;
d) deoarece există numai un număr finit de baze, optimul trebuie să fie obţinut
într-un număr finit de iteraţii.
Exemplu. Să considerăm problema dietei §4.1.5. particularizată astfel:
92 Modele şi algoritmi de optimizare

min {3x1+4x2+5x3} min {3x1+4x2+5x3}


⎧ x1 + 2 x 2 + 3x 3 ≥ 5 ⎧ x1 + 2 x 2 + 3 x 3 − x 4 = 5
⎪ ⎪
⎨2 x1 + 2 x 2 + x 3 ≥ 6 ⎨2 x1 + 2 x 2 + x 3 − x 5 = 6
⎪x ≥ 0 i = 1,3 ⎪x ≥ 0 i = 1,5
⎩ i ⎩ i
forma standard duala corespunzătoare

şi aplicăm algoritmul simplex dual problemei


min {3x1+4x2+5x3}
⎧− x1 − 2 x 2 − 3x 3 + x 4 = −5

⎨− 2 x1 − 2 x 2 − x 3 + x 5 = −6
⎪x ≥ 0 i = 1,5
⎩ i
obţinută din precedenta prin înmulţirea primelor două restricţii cu –1.
Coloanele 4 şi 5 din matricea coeficienţilor restricţiilor dau o bază dual
admisibilă, deoarece valorile pentru x4 şi x5 sunt negative, iar zj−cj sunt
nepozitive. La prima iteraţie iese din bază x5 şi intră x1, iar la iteraţia a doua iese
din bază x4 şi intră x2. Rezultatele sunt trecute în Tabelul 4.14.
Valoarea funcţiei obiectiv este min f=10, obţinută pentru x1=1 şi x2=2 .

4.15. Interpretarea economică a algoritmului simplex dual

Pentru exemplificare ne vom referi la problema utilizării eficiente a resurselor


(Dragomirescu şi Maliţa, 1968)
⎧max c ′x

⎨ Ax ≤ b
⎪x ≥ 0

n
unde: xj este numărul de unităţi din sortimentul j care trebuie produse şi ∑a
j =1
ij xj

reprezintă cantitatea din resursa i care se consumă în procesul de producţie.


Problema duală asociată acesteia este
⎧min b ′u
⎪ T
⎨ A u ≤ c′
⎪u ≥ 0

m
unde: ui este costul unitar intern (shadow price) al resursei i, iar ∑a
i =1
ij u i reprezintă

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

Problema duală se poate enunţa astfel:


Să se determine costurile interne unitare ale resurselor astfel încât profitul unitar
al fiecărei resurse să nu depăşească valoarea resurselor consumate pentru
realizarea lui, iar costul total al resurselor să fie minim.
Inegalitatea dată de Lema slabă a dualităţii pentru acest cuplu de probleme
duale ( c ′x ≤ b ′u ) are aici următoarea semnificaţie: pentru nici un plan de
94 Modele şi algoritmi de optimizare

producţie x şi nici un sistem de costuri interne u profitul total al întreprinderii nu


poate depăşi costul total al resurselor; egalitatea se realizează doar pentru
programele optime de producţie şi pentru costuri interne optime.
Relaţiile Teoremei ecarturilor complementare scrise sub forma
⎛ n ⎞ ⎛ m ⎞
u i ⎜⎜ bi − ∑ a ij x j ⎟⎟ = 0 , 1 ≤ i ≤ m şi x j ⎜⎜ ∑ a ij u i − c j ⎟⎟ = 0 , 1 ≤ j ≤ n
⎝ j =1 ⎠ ⎝ i =1 ⎠
în acest caz au următoarea interpretare: într-un plan de producţie optim nu se pot
produce sortimente pentru care consumurile de resurse – calculate pe baza
costurilor interne – depăşesc profiturile. În plus, costurile interne nenule se atribuie
numai resurselor folosite integral în cadrul acestui plan.

4.16. Determinarea unei soluţii dual admisibile

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

nouă problemă care are toţi coeficienţii funcţiei obiectiv nenegativi:


4. Programare liniară 95

⎧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 .

4.17. Probleme propuse

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ă:

Forma canonică Forma standard


96 Modele şi algoritmi de optimizare

⎧max{x1 + 1.2 x 2 + 0.8 x 3 } ⎧max{x1 + 1.2 x 2 + 0.8 x 3 }


⎪ x + x + x ≤ 600 ⎪ x + x + x + x = 600
⎪⎪ 1 2 3 ⎪⎪ 1 2 3 4

⎨ 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

după introducerea variabilelor ecart

Se obţin următoarele rezultate:


max f=680 realizat pentru x1=200 , x2=400 , x3=0 .
Variabilele auxiliare x4=0 , x5=0 , x6=200 , arată că primele două restricţii se
verifică pentru soluţia de mai sus cu egalităţi, iar cea de-a treia cu inegalitate.
Profitul este maxim dacă nu se produce beton de tipul B300.

2. Într-o secţie a unei întreprinderi se produc trei tipuri de produse P1, P2 , P3 ,


folosind rezerve de forţă de muncă (F) şi resurse financiare (B) limitate conform
Tabelul 4.15.

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.

R. În urma modelării acestei probleme se obţine următorul program liniar:


max f = max{1.5x1+4x2+3x3}
⎧2 x1 + 3x 2 + 2 x 3 ≤ 15
⎪ x + 2 x + 3 x ≤ 12
⎪ 1 2 3
⎨ .
⎪ 1x + x 2 + x 3 ≤ 8
⎪⎩ x i ≥ 0 , i = 1,3
Se obţine soluţia max f=20.4 pentru x1 = 0 , x2 = 4.2 , x3 = 1.2 .
3. La o secţie de producţie a unei întreprinderi de construcţii, unde se lucrează în
flux continuu de bandă, sunt necesare pentru fabricarea de panouri pentru cofraje 4
tipuri de materii prime (panel (P), scândură de brad (SB), dulapi (D), cuie (C)) care
4. Programare liniară 97

sunt prelucrate la 3 standuri. Repartiţia materiilor prime şi a cheltuielilor de muncă


necesare prelucrării pe cele 3 standuri este dată de Tabelul 4.16.

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

Să se determine un plan de producţie astfel încât cheltuielile să fie minime.

R. Modelând problema se obţine următorul program liniar:


min f = min {6x1+8x2+12x3+10x4}
⎧ x1 + x 2 + x 4 = 2
⎪x + 2x + x = 4
⎪ 1 2 4
⎨ .
⎪ x 2 + x3 + x 4 = 3
⎪⎩ x i ≥ 0 , i = 1,4
Se obţine soluţia min f = 29 , pentru nivelurile de consum de materiale
x1=0 , x2=1.5 , x3=1 , x4=0.5 .

4. O secţie a unei întreprinderi are în fabricaţie 7 tipuri de produse, P1−P7 . Două


materii prime (M1 , M2 ) necesare realizării acestor produse sunt în cantităţi limitate,
200 şi respectiv 300 unităţi, celelalte fiind în cantităţi suficiente oricărui plan de
producţie. Consumurile de materii prime M1 , M2 pe unitatea de produs pentru
fiecare tip, precum şi beneficiile nete aduse de producerea unei unităţi din fiecare
tip de produs sunt date în Tabelul 4.17.

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 .

5. Problema dietei alimentare (problemă de amestec)


Un meniu trebuie să asigure necesarul în substanţele S1 , S2 , S3 , cu ajutorul
alimentelor A1 , A2 , A3 . Cantităţile de substanţele S1 , S2 , S3 , ce se găsesc într-o
unitate de aliment de fiecare fel, cantităţile minime necesare organismului în cele 3
substanţe, precum şi preţurile celor 3 alimente sunt trecute în Tabelul 4.18.

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

Să se determine cantităţile ce trebuie incluse în meniu din cele 3 alimente,


astfel încât costul total al meniului să fie minim .

R. În urma modelării se obţine problema de programare liniară sub forma canonică


min f = min{8x1+7x2+5x3}
⎧4 x1 + 3 x 2 + 2 x 3 ≥ 24
⎪5 x + 7 x + 2 x ≥ 35
⎪ 1 2 3
⎨ .
⎪ x1 + 5 x 2 + 4 x 3 ≥ 40
⎪⎩ x i ≥ 0 , i = 1,3
După introducerea variabilelor de compensare se obţine problema sub forma
standard, dar nu are o bază canonică evidenţiată. De aceea se aplică metoda în două
faze.
min f = min{8x1+7x2+5x3}
⎧4 x1 + 3x 2 + 2 x 3 − x 4 = 24
⎪5 x + 7 x + 2 x − x = 35
⎪ 1 2 3 5
⎨ .
⎪ x1 + 5 x 2 + 4 x 3 − x 6 = 40
⎪⎩ x i ≥ 0 , i = 1,6
Se obţine min f = 56 , meniul constă din 8 unităţi din alimentul al doilea şi
conţinutul în substanţa S2 depăşeşte minimul necesar cu 21 unităţi, adică
x1=0 , x2=8 , x3=0 , x4=0 , x5=21 , x6=0 .
4. Programare liniară 99

6. Substanţele S1 , S2 , S3 , S4 conţin în cantităţi diferite elementele E1 , E2 , E3 , E4.


Din cele 4 substanţe trebuie făcut un amestec care să conţină cel puţin 28, 30, 25 şi
respectiv 25 unităţi din cele 4 elemente. Câte o unitate din fiecare tip de substanţă
costă 6, 3, 4 şi respectiv 5 u. m.
Conţinutul unei unităţi din fiecare substanţă în cele 4 elemente este dat de Tabelul
4.19.
Tabelul 4.19
Substanţă S1 S2 S3 S4
Element
E1 3 2 1 3
E2 4 0 3 1
E3 0 3 0 4
E4 5 0 3 1

Conţinutul substanţelor S1 , S2 în alte elemente ce aduc amestecului anumite


proprietăţi speciale cer ca acest amestec să conţină cel puţin 3 unităţi din S1 şi cel
puţin 3 unităţi din S2 . Să se determine cantităţile ce trebuie amestecate din cele 4
substanţe astfel încât să fie îndeplinite toate condiţiile impuse, iar costul total al
amestecului să fie minim.

R. Modelând problema se obţine


min f = min {6x1+3x2+4x3+5x4}
⎧3 x1 + 2 x 2 + x 3 + 3 x 4 ≥ 28
⎪4 x + 3x + x ≥ 30
⎪ 1 3 4

⎪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.

R. Notăm cu xi – cantitatea din aliajul i (i=1,2,...,5) care intră în alcătuirea noului


aliaj. Trebuie rezolvată următoarea problemă de programare liniară:
min {5x1+4x2+3x3+2x4+1.5x5 }
⎧10 x1 + 25 x 2 + 50 x 3 + 75 x 4 + 95 x 5 = 30

⎨90 x1 + 75 x 2 + 50 x 3 + 25 x 4 + 5 x 5 = 70
⎪ x ,..., x ≥ 0
⎩ 1 5

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ă

Petrol brut uşor 0.3 0.2 0.3


Petrol brut greu 0.3 0.4 0.2

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?

R. Notăm cu x1 , x2 , x3 cantităţile de petrol brut uşor folosite pentru obţinerea de


benzină, petrol lampant şi respectiv benzină superioară, şi analog x4 , x5 , x6 ,
cantităţile de petrol brut greu. Se ajunge la următoarea problemă de programare
liniară:
min {35(x1 + x2 + x3 ) + 30(x4 + x5 + x6 )}
4. Programare liniară 101

⎧0.3 x1 + 0.3x4 = 900 000


⎪0.2 x + 0.4 x = 800 000
⎪ 2 5

⎪0.3 x3 + 0.2 x6 = 500 000
⎪⎩ x1 , x2 , x3 , x4 , x5 , x6 ≥ 0
Pentru realizarea planului de producţie sunt necesare cantităţile 1 666 666.67
barili petrol brut uşor şi 5 000 000 barili petrol brut greu, costul minim fiind
208 333 333.33 .

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

Capacitatea de turnare şi finisare pe parcursul unei luni este de 700, respectiv


1000 ore muncă. Să se determine numărul de piese din fiecare tip care trebuie
produse pentru a se obţine un profit maxim.

R. Notând cu xi numărul de sute de piese de tipul i, i = 1,5 , obţinem următoarea


problemă de programare liniară
max {30x1+20x2+40x3+25x4+10x5}
⎧2 x1 + x 2 + 3 x 3 + 3 x 4 + x 5 ≤ 7

⎨3 x1 + 2 x 2 + 2 x 3 + x 4 + x 5 ≤ 10
⎪ x ≥ 0 , i = 1,5
⎩ i
care are maximul egal cu 120, obţinut pentru x1=0 , x2=4 , x3=1 , x4=0 , x5=0 .

10. O firmă producătoare de calculatoare prognozează că în următoarele n luni


cererea va fi di , i = 1, n . Într-o lună firma poate produce r unităţi cu un cost b.
Lucrând peste program, firma poate produce calculatoare la un cost c > b . Costul
unitar de stocare al calculatoarelor de la o lună la alta este s . Să se determine
planul de producţie care minimizează costul.
5. PROBLEMA DE TRANSPORT

5.1. Fundamentele algoritmului de transport

Problema de transport (4.8) − (4.11) are totdeauna o soluţie admisibilă, anume


ai b j m n
xi j = , unde S = ∑ a i = ∑ b j şi care este o soluţie mărginită de ai şi bj .
S i =1 j =1

Există în total n+m restricţii (m ecuaţii corespunzătoare restricţiilor date de


centrele de aprovizionare şi cele n ecuaţii corespunzătoare restricţiilor date de
m n
centrele de consum) la care se adaugă condiţia de echilibru ∑a = ∑b
i =1
i
j =1
j . De aici

rezultă că una dintre restricţii este redundantă. Orice restricţie se poate exprima în
funcţie de celelalte m+n−1 rămase.

Teorema 5.1. Problema de transport are totdeauna soluţie şi o restricţie este


redundantă. Înlăturând oricare dintre restricţii, cele n+m−1 rămase formează un
sistem liniar independent (Luenberger, 1989).
Demonstraţie. Existenţa soluţiei şi redundanţa rezultă din observaţia de mai sus.
Deoarece suma restricţiilor date de centrele de aprovizionare este egală cu suma
restricţiilor date de centrele de consum, rezultă că orice restricţie poate fi exprimată
ca o combinaţie liniară de celelalte m+n−1 . Astfel, orice restricţie poate fi
eliminată. Să presupunem că am eliminat o restricţie, fie ea ultima. Presupunem că
există o combinaţie liniară a ecuaţiilor rămase egală cu zero. Să notăm cu
α i , i = 1, m , coeficienţii acestei combinaţii liniare corespunzători primelor ecuaţii
din problema de transport şi cu β j , j = 1, n − 1 coeficienţii corespunzători
ultimelor n−1 ecuaţii. Fiecare variabilă xin , i = 1, m , apare numai în a i - a
ecuaţie, deoarece ultima ecuaţie a fost înlăturată. Astfel, α i = 0 , i = 1, n . În restul
ecuaţiilor x ij apare numai într-o ecuaţie şi astfel β j = 0, j = 1, n − 1 . Aşadar,
sistemul de n+m−1 ecuaţii este liniar independent. ‰

Din Teorema 5.1 rezultă că o bază pentru problema de transport este


formată din m+n−1 vectori liniar independenţi, iar soluţia de bază admisibilă are
m+n−1 variabile. Problema duală asociată problemei de transport este dată de
(4.51) . Are loc următoarea teoremă.
5. Problema de transport 103

Teorema 5.2. Cuplul de soluţii duale (x ) ij şi (u , v )


i j este optim pentru
problemele (4.8)-(4.11), respectiv (4.51), dacă şi numai dacă
n m

∑ 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).

Din ultima condiţie rezultă că pentru x ij > 0 se obţine c ij = u i + v j .


În cele ce urmează prin celulă se înţelege o pereche de indici (i,j), iar prin
ciclu se înţelege un şir de celule notate
(i1 , j1 ) , (i1 , j 2 ) , (i2 , j1 ) , L , (it , jt ) , (it , j1 ) .
În continuare vom evidenţia cea mai importantă proprietate structurală a
problemei de transport: toate bazele sunt triunghiulare. Această proprietate
simplifică rezolvarea unui sistem de ecuaţii liniare a cărui matrice a coeficienţilor
are o astfel de bază şi aceasta conduce la implementarea eficientă a metodei
simplex pentru problema de transport.

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ă.

O matrice inferior triunghiulară este triunghiulară în sensul definiţiei de mai


sus. O matrice nesingulară superior triunghiulară este de asemenea triunghiulară
deoarece prin schimbarea ordinii liniilor şi coloanelor sale devine inferior
triunghiulară.

Algoritm pentru a determina dacă o matrice este triunghiulară.


Pas 1. Se găseşte linia care are un singur element nenul.
Pas 2. Se formează o submatrice din matricea dată prin tăierea liniei şi coloanei
elementului nenul din pasul 1. Se reia pasul 1 cu submatricea obţinută.

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.

Exemplu. Folosind algoritmul de mai sus, să stabilim dacă matricea


⎛1 1 0 0 0⎞
⎜ ⎟
⎜ 0 0 1 0 0⎟
B = ⎜0 0 0 1 1⎟
⎜ ⎟
⎜1 0 0 1 0⎟
⎜ ⎟
⎝0 0 1 0 1⎠
este triunghiulară.
104 Modele şi algoritmi de optimizare

Notăm în partea stângă a matricei B ordinea în care au fost găsite liniile cu un


singur element nenul, iar sub matricea B, ordinea coloanelor corespunzătoare
elementului nenul.
⎛1 1 0 0 0⎞ 5
⎜ ⎟
⎜ 0 0 1 0 0⎟ 1
B = ⎜0 0 0 1 1⎟ 3
⎜ ⎟
⎜1 0 0 1 0⎟ 4
⎜ ⎟
⎝0 0 1 0 1⎠ 2
4 5 1 3 2
Permutăm liniile în ordinea dată de coloana din dreapta matricei B şi obţinem
matricea
⎛ 0 0 1 0 0⎞
⎜ ⎟
⎜0 0 1 0 1⎟
B1 = ⎜ 0 0 0 1 1 ⎟ .
⎜ ⎟
⎜1 0 0 1 0⎟
⎜ ⎟
⎝1 1 0 0 0⎠
Permutăm coloanele în matricea B1 în ordinea dată de linia de sub matricea B
şi obţinem matricea
⎛1 0 0 0 0⎞
⎜ ⎟
⎜1 1 0 0 0⎟
B2 = ⎜ 0 1 1 0 0 ⎟
⎜ ⎟
⎜ 0 0 1 1 0⎟
⎜ ⎟
⎝0 0 0 1 1⎠
care este inferior triunghiulară şi astfel matricea iniţială este triunghiulară.

Această proprietate a matricelor este importantă şi are aplicaţii în rezolvarea


sistemelor de ecuaţii liniare prin metoda substituţiei (eliminării) a lui Gauss.
Sistemul de ecuaţii Ax=b , cu A inferior triunghiulară permite determinarea lui x1
din prima ecuaţie, apoi x2 din cea de-a doua ecuaţia ş.a.m.d.

Teorema 5.3. Orice bază a problemei de transport este triunghiulară.


Demonstraţie. Considerăm sistemul de restricţii din problema de transport:
⎧n
⎪⎪∑ x ij = a i (− 1) i = 1, m
j =1
⎨m
⎪∑ x ij = b j j = 1, n
⎪⎩ i =1
Schimbăm semnul la primele m ecuaţii şi atunci matricea coeficienţilor este
formată numai din − 1 , 0, +1. Din Teorema 5.1, ştergând oricare dintre ecuaţiile de
mai sus, se elimină redundanţa. Din matricea coeficienţilor care rezultă se formează o
5. Problema de transport 105

bază nesingulară, B, prin selectarea unei mulţimi de m+n−1 coloane. Fiecare


coloană a matricei B conţine cel mult două elemente nenule, unul egal cu +1 şi
altul egal cu − 1 . Astfel există cel mult 2(m+n−1) elemente nenule în bază.
Totuşi, dacă orice coloană ar conţine două elemente nenule, atunci suma lor ar fi
zero şi s-ar contrazice nesingularitatea lui B . Astfel, cel puţin o coloană a lui B
trebuie să conţină numai un element nenul. Aceasta înseamnă că numărul total de
elemente nenule din B este mai mic decât 2(m+n−1) . Rezultă că trebuie să fie o
linie cu numai un element nenul, altfel, dacă orice linie ar avea două sau mai multe
elemente nenule, numărul total al elementelor nenule ar fi cel puţin 2(m+n−1).
Deducem că primul pas al procedurii de verificare a triunghiularităţii se verifică şi
raţionamentul se poate continua pentru submatricea obţinută din B prin tăierea
liniei şi coloanei corespunzătoare elementului nenul. Se continuă raţionamentul,
stabilind că B este triunghiulară. ‰

Deoarece orice matrice bază în problema de transport este triunghiulară şi toate


elementele nenule sunt egale cu 1, rezultă că, prin rezolvarea sistemului de ecuaţii
liniare Bx=b cu metoda substituţiei, dacă toate datele iniţiale sunt numere întregi,
soluţia va fi formată din numere întregi. Acest lucru poate fi dat ca un corolar la
Teorema 5.3.

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.

Metoda simplex aplicată problemei de transport, ţinând seama de rezultatele de


mai sus, este o versiune a algoritmului simplex revizuit şi poartă numele de
algoritmul de transport (datorat lui Kantorovich).

Multiplicatorii simplex asociaţi cu ecuaţiile restricţiilor îi notăm cu λ=(u,v) ,


u∈Rm, v∈Rn . Deoarece o restricţie este redundantă, vom considera de exemplu că
vn=0 . Dată o bază B , multiplicatorii simplex se găsesc ca soluţii ale sistemului
λ ′B = c ′B .
Ca să-i determinăm în mod explicit din această ecuaţie, ne referim din nou la
sistemul iniţial de restricţii. Dacă xij este necunoscută de bază, atunci coloana
corespunzătoare din A va fi inclusă în B. Această coloană are exact două
elemenete nenule egale cu +1: unul în pozitia i din partea superioară şi altul în
poziţia j din partea inferioară. Această coloană generează pentru multiplicatorii
simplex ecuaţia
ui+vj=cij ,
deoarece ui şi vj sunt componentele corespunzătoare ale vectorului
multiplicatorilor simplex. În general, ecuaţiile multiplicatorilor simplex sunt
ui+vj=cij (∀)i, j
pentru care xij sunt bazice. Matricea coeficienţilor acestui sistem este transpusa
matricei bazei, aşadar este triunghiulară şi sistemul poate fi rezolvat prin metoda
substituţiei.
106 Modele şi algoritmi de optimizare

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.

Dacă multiplicatorii simplex sunt cunoscuţi, coeficienţii costurilor relative


pentru variabilele nebazice pot fi calculaţi cu relaţiile
α ′S = λS − c ′S .
În acest caz coeficienţii costurilor relative sunt
α ij = u i + v j − cij , (∀) i = 1, m , (∀) j = 1, n .
Pentru variabilele bazice α ij = 0 . Dată o bază, calculul multiplicatorilor
simplex este asemănător cu calculul variabilelor de bază.
Conform cu algoritmul simplex general, dacă o variabilă nebazică are un
coeficient de cost relativ pozitiv, atunci acea variabilă este candidată să intre în
bază. Cum valoarea acestei variabile este crescătoare, valorile variabilelor de bază
curente vor fi schimbate astfel încât să se menţină admisibilitatea soluţiei. Valoarea
noii variabile va creşte exact până la valoarea pentru care vechea variabilă de bază
devine zero.
Dacă noul vector de bază este d , atunci schimbarea în celelalte variabile de
bază este dată de − B −1d , unde B este baza curentă. Din nou avem de-a face cu
o problemă de rezolvare a unui sistem cu bază triunghiulară şi din nou soluţia are
proprietăţi speciale.

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

Determinarea acestor semne se face prin parcurgerea tabelului de trasport. Se


atribuie un semn + celulei corespunzătoare variabilei care intră în bază,
reprezentând o schimbare cu +θ, unde θ nu este încă determinat. Atunci,
plusurile, minusurile şi zerourile sunt atribuite unul câte unul celulelor anumitor
variabile de bază, indicând schimbări cu +θ, −θ, sau 0 ca să se menţină soluţia
admisibilă. La fiecare pas, există o relaţie − B −1 d , care determină în mod unic
semnul care va fi atribuit celorlalte variabile de bază. Rezultatul va fi o succesiune
de plusuri şi minusuri atribuite celulelor care formează un ciclu iniţiat de celula
variabilei care va intra în bază. De fapt, noua schimbare este o parte a unui ciclu de
redistribuire a fluxului mărfii în sistemul de transport. După ce succesiunea de
plusuri, minusuri şi zerouri a fost determinată, se obţine o nouă soluţie admisibilă
prin modificarea nivelului variabilelor cu +θ, −θ, sau 0. θ trebuie determinat
asfel încât vechea variabilă de bază să ia valoarea 0. Se examinează variabilele
cărora li s-a atribuit semnul minus pentru a determina minimul valorilor acestor
variabile, iar valoarea găsită va fi atribuită lui θ. Această valoare se adaugă
celulelor care au semnul plus şi se scade din cele cu semnul minus. Rezultatul va fi
o nouă soluţie admisibilă.

5.2. Enunţul algoritmului de transport

Pe baza rezultatelor de mai sus, se poate enunţa algoritmul de transport sub


următoarea formă.

Pas 0. Se determină o soluţie de bază admisibilă x ij , corespunzătoare bazei B,


formată cu m+n−1 coloane liniar independente din matricea A şi fie B
mulţimea celulelor de bază;
Pas 1. Se rezolvă sistemul de ecuaţii
u i + v j = c ij , (∀) (i, j ) ∈ B .
Se obţine o soluţie particulară luând vn=0 şi se calculează pentru această
soluţie coeficienţii de cost redus,
α ij = u i + v j − cij , (∀) (i, j ) ∈ S ,
S fiind mulţimea celulelor corespunzătoare coloanelor matricei A care nu
se află în B (celule secundare).
Dacă α ij ≤ 0 pentru (∀) (i, j ) ∈ S , atunci soluţia de bază x ij este
optimă. Stop!
Altfel, se determină ( s, k ) ∈ S , luând drept criteriu de intrare în bază
α sk = max{ α ij (∀)(i, j ) ∈ S } .
Pas 2. Se determină ciclul format de ( s, k ) ∈ S cu o parte din celulele lui B şi
se numerotează celulele alegând un sens de parcurgere a ciclului.
108 Modele şi algoritmi de optimizare

Se determină celula (r , t ) ∈ B care va ieşi din bază , luând drept criteriu


{ },
de ieşire din bază x rt = min x ij minimul fiind luat după toate celulele
de ordin par din ciclul determinat mai sus.
~
Pas 3. Se formează, pornind de la baza B, baza B , prin înlocuirea coloanei art
cu coloana ask . Se determină soluţia de bază admisibilă ~
x ij
~
corespunzătoare bazei B , folosind pentru schimbarea bazei formulele:
⎧ xij − xrt dacã (i,j ) este de rang par în ciclu

xij = ⎨ xij + xrt dacã (i,j ) este de rang impar în ciclu
~
⎪x dacã (i,j ) nu face parte din ciclu
⎩ ij
~
Se înlocuieşte B cu B , x ij cu ~ x ij şi se trece la Pas 1.

5.3. Determinarea soluţiei iniţiale de bază

Algoritmul prezentat mai înainte necesită la pornire un program de bază iniţial.

Metoda generală de obţinere a acestui program este următoarea (Maliţa şi


Zidăroiu, 1971):
a) Se dă unei variabile de bază oarecare xij valoarea
x ij = min {a l , bk } .
1≤ l ≤ m
1≤ k ≤ n

b) Se înlocuiesc ai şi bj cu a i − x ij şi respectiv cu b j − x ij şi se suprimă linia


i , dacă x ij = ai , sau coloana j , dacă x ij =bj . Dacă ai=bj se suprimă fie
linia i , fie coloana j .
c) Se repetă operaţiile de la a) şi b) până când toate cererile sunt satisfăcute.

Să demonstrăm că algoritmul de mai sus produce o soluţie de bază. De fiecare


dată când apare un xij>0 se suprimă o linie şi/sau o coloană. La sfârşit, vor rămâne
o coloană şi o linie nesuprimate. Până în acest moment au fost suprimate m+n−2
linii şi coloane. Cantitatea rămasă în linia nesuprimată este egală cu cantitatea
rămasă în coloana nesuprimată, aşa cum rezultă din condiţia de echilibru.
Satisfăcând şi ultima linie, se obţine o nouă variabilă xij>0 , adică sunt cel mult
m+n−1 variabile xij>0.
Există diferite metode de determinare a programului de bază iniţial obţinute din
metoda generală prezentată mai sus, după cum se particularizează xij cu care se
începe metoda, cum ar fi de exemplu: metoda colţului nord-vest a lui G. B. Dantzig
(se selectează celula (i,j) situată în prima linie şi prima coloană) şi metoda
5. Problema de transport 109

costului minim a lui H. S. Houthakker (se selectează la fiecare pas celula (i,j)
corespunzătoare costului minim cij ).

5.4. Exemplu

O întreprindere de construcţii are în lucru 4 blocuri de locuinţe în diferite locuri


în oraş şi se aprovizionează cu mortar de la 3 staţii de betoane de asemenea
amplasate în diferite locuri. Prin contract, prima staţie de betoane asigură 10 m3 , a
doua 15 m3 , iar a treia 25 m3 . Necesarul zilnic de mortar pentru fiecare bloc este
de 5 m3 pentru primul, 10 m3 pentru al doilea, 20 m3 pentru al treilea şi 15 m3
pentru al patrulea. Preţul de transport pentru 1 m3 de la o staţie de betoane la un
bloc este dat de Tabelul 5.1.

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

Să se găsească un plan de transport care să determine cantităţile zilnice xij de


mortar ce trebuie aduse de la staţia de betoane i la blocul j, astfel încât
cheltuielile de transport să fie minime.

Rezolvare
a) Modelarea problemei
multiplicatorii ⎧ 3 4

⎪min ∑∑ cij xij


simplex ⎪ i =1 j =1
u1 → ⎪ 11 x12 + x13 + x14 = 10
x +
u2 → ⎪ x + x + x + x = 15
⎪ 21 22 23 24

u3 → ⎪⎪ x31 + x32 + x33 + x34 = 25


v1 → ⎨x + x + x = 5
⎪ 11 21 31

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⎠

b) Determinarea unei soluţii iniţiale de bază


Determinarea soluţiei iniţiale de bază se face cu metoda colţului nord-vest, pornind
de la Tabelul 5.1, obţinându-se Tabelul 5.2.
min {a1,b1}= min {10,5}=5=b1 , x11=5 se suprimă coloana 1
min {a1,b2}= min {5,10}=5=a1 , x12=5 se suprimă linia 1
min {a2,b2}= min {10,5}=5=b2 , x22=5 se suprimă coloana 2
min {a2,b3}= min {10,20}=10=a2 , x23=100 se suprimă linia 2
min {a3,b3}= min {25,10}=10=b3 , x33=10 se suprimă coloana 3
min {a3,b4}= min {15,15}=15=b4 , x34=15 se suprimă linia 3 şi coloana 4

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

Mulţimea celulelor de bază este următoarea


B= {(1,1), (1,2 ), (2,2), (2,3), (3,3), (3,4)} .
Valoarea funcţiei obiectiv pentru baza dată de metoda colţului nord-vest este
f=5⋅8+5⋅3+5⋅1+10⋅6+10⋅4+15⋅3=205
după cum rezultă din Tabelul 5.3.
Tabelul 5.3
8 3 5 2
5 5
4 1 6 7
5 10
1 9 4 3
10 15

În Tabelul 5.3 celulele cu diagonală sunt celulele de bază. Matricea bazei


corespunzătoare este
x11 x12 x22 x23 x33 x34
5. Problema de transport 111

⎛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

Intră în bază celula (1,4) . Vectorul d corespunzător este d’=(1 0 0 0 0 0)’ .


Pas 2. Se determină ciclul iniţiat de celula (1,4)
x11 x12 x22 x23 x33 x34

′ ′
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

Valoarea funcţiei obiectiv f=5⋅8+5⋅2+10⋅1+5⋅6+15⋅4+10⋅3=180 .


Iteraţia a II−a
Pas 1. Considerând din nou v4=0 se rezolvă sistemul
~ ~T
λ ′B1 = c ′B~ ⇒ λ = ( B1 ) −1 c B~1 , unde c ′B~ =(8 2 1 6 4 3)’
1 1

′ ′
λ ′ = (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

Intră în bază celula (3,1) . Vectorul d corespunzător este d 1′ =(0 0 1 1 0 0)’ .


Pas 2. Se determină ciclul iniţiat de celula (3,1)
x11 x14 x22 x23 x33 x34
′ ′
−1
y = − B1 d 1 = − B1
−1
(0 0 1 1 0 0) = (− 1 1 0 0 0 − 1)
{
C2 = (3,1) , (1,1) , (1,4) , (3,4 ) , (3,1) } .
~
Se determină celula care iese din baza B 1 cu criteriul
x i0 j 0 = min {x }= x
(i , j )∈{ (1,1) , (3, 4 ) } ij 11 =5
(minimul s-a luat după toate celulele de ordin par din ciclul C2) .
~
Pas 3. Acum iese din bază celula (1,1) şi se obţine baza B 2 cu celulele:
~
B 2 = { (3,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 C2

~xij = ⎨ xij + xrt dacã celula (i,j ) este de rang impar în ciclul C2
⎪x dacã celula (i,j )∉ C2
⎩ ij
şi se trec în Tabelul 5.5.
Tabelul 5.5
8 3 5 2
5−5 5+5
4 1 6 7
5. Problema de transport 113

10 5
1 9 4 3
5 15 10−5

Valoarea funcţiei obiectiv f=10⋅2+10⋅1+5⋅6+5⋅1+15⋅4+5⋅3=140 .


Iteraţia a III−a
Pas 1. Din nou luăm v4=0 şi rezolvăm sistemul
~ ~T
λ ′B 2 = c ′B~ ⇒ λ = ( B 2 ) −1 c B~21 , unde c ′B~ =(1 2 1 6 4 3)’
1 1

′ ′
λ ′ = (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.

Rezolvăm această problemă şi cu ajutorul pachetului de programe Management


Scientist. După lansarea pachetului de programe alegem modulul Transportation
din fereastra prezentată în Figura 2.4. Din fereastra care apare se selecteză din
submeniul File, New – pentru crearea unei noi probleme de transport, se introduc
numărul de depozite şi numărul de centre de consum, apoi costurile unitare de
transport ca în Figura 5.1.

Figura 5.1

Pentru rezolvarea problemei, din submeniul Solution se selectează Solve, se


alege din fereastra Select Optimization Criteria, Maximization Objective . Se
afişează fereastra cu rezultatele problemei. Rezultatele obţinute, aşa cum se văd în
Figura 5.2, coincid cu cele obţinute aplicând algoritmul de transport.
114 Modele şi algoritmi de optimizare

Figura 5.2

Să rezolvăm aceeaşi problemă utilizând Solver-ul din Excel. Pentru aceasta


creăm foaia de calcul cu datele de intrare ca în Figură 5.3, efectuând paşii descrişi
în continuare.

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

Target Cell (Min)


Original Final
Cell Name
Value Value
$C$3 Functia de optimizat 140 140
Adjustable Cells
Original Final
Cell Name
Value Value
$B$15 Solutia problemei 0 0
$C$15 B2 0 0
$D$15 B3 0 0
$E$15 B4 10 10
$B$16 Solutia problemei 0 0
$C$16 B2 10 10
$D$16 B3 5 5
$E$16 B4 0 0
$B$17 Solutia problemei 5 5
$C$17 B2 0 0
$D$17 B3 15 15
$E$17 B4 5 5
Constraints
Cell Name Cell Value Formula Status Slack
$B$23 Restrictiile problemei 10 $B$23=$F$7 Not Binding 0
$B$24 Restrictiile problemei 15 $B$24=$F$8 Not Binding 0
$B$25 Restrictiile problemei 25 $B$25=$F$9 Not Binding 0
$B$26 Restrictiile problemei 5 $B$26=$B$10 Not Binding 0
$B$27 Restrictiile problemei 10 $B$27=$C$10 Not Binding 0
$B$28 Restrictiile problemei 20 $B$28=$D$10 Not Binding 0
116 Modele şi algoritmi de optimizare

$B$29 Restrictiile problemei 15 $B$29=$E$10 Not Binding 0


$B$15 Solutia problemei 0 $B$15>=0 Binding 0
$C$15 B2 0 $C$15>=0 Binding 0
$D$15 B3 0 $D$15>=0 Binding 0
$E$15 B4 10 $E$15>=0 Not Binding 10
$B$16 Solutia problemei 0 $B$16>=0 Binding 0
$C$16 B2 10 $C$16>=0 Not Binding 10
$D$16 B3 5 $D$16>=0 Not Binding 5
$E$16 B4 0 $E$16>=0 Binding 0
$B$17 Solutia problemei 5 $B$17>=0 Not Binding 5
$C$17 B2 0 $C$17>=0 Binding 0
$D$17 B3 15 $D$17>=0 Not Binding 15
$E$17 B4 5 $E$17>=0 Not Binding 5

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

$F$15 x33= B4 15 15 140 15 140


$H$13 x14= 10 10 140 10 140
$H$14 x24= 0 0 140 0 140
$H$15 x34= 5 5 140 5 140
5. Problema de transport 119

5.5. Problema atribuirii sarcinilor

Să se determine atribuirea optimă a n sarcini la n specialişti ştiind că:


• unui specialist i se atribuie o singură sarcină,
• sarcina este executată de un singur specialist, iar
• profitul executării sarcinii j de către specialistul i este cij .
Atribuirea este optimă dacă profitul obţinut este maxim (Luenberger, 1989).
Trebuie să determinăm xij , i = 1, n , j = 1, n astfel încât
⎧ n n

⎪max ∑∑ cij xij


⎪ n j =1 1=1
⎪ x = 1 , i = 1, n
⎪∑ ij
⎨ j =1 (5.1)
⎪n
⎪∑ xij = 1 , j = 1, n
⎪ j =1
⎪ xij ≥ 0 , i = 1, n , i = 1, n

În această formulare fiecare variabilă xij trebuie să ia numai valorile 0 sau 1 .

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ă.

5.6. Probleme propuse

1. Trei staţii de betoane, Si, se aprovizionează cu ciment de la trei rampe de


descărcare, Ri . Cantităţile necesare fiecărei staţii şi cele oferite de fiecare rampă de
descărcare, precum şi costurile de transport de la fiecare rampă la fiecare staţie de
betoane sunt trecute în Tabelul 5.9 .
Tabelul 5.9
120 Modele şi algoritmi de optimizare

Staţie Costuri (u.m.) Ofertă


Rampă
S1 S2 S3 (tone)
R1 7 2 5 17
R2 3 6 3 21
R3 4 5 6 23
Necesar
19 28 14
(tone)

Să se precizeze planul de transport care să conducă la costul minim de transport şi


cât este acest cost.

R. Transportând de la R1 pentru S2 17 tone, de la R2 pentru S1 7 tone şi pentru


S3 14 tone, de la R3 pentru S1 12 tone şi pentru S2 11 tone, se obţine costul
minim Cmin=200 u.m.

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

Sunt disponibile 10 tone de la furnizorul 1 şi 15 tone de la furnizorul 2. Cele trei


centre de desfacere necesită 8, 14 respectiv 3 tone de produse finite. Cele două
fabrici au capacitate de producţie nelimitată.
a) Să se reducă problema la o problemă de transport cu două surse şi trei destinaţii
şi să se determine un plan de transport care să minimizeze cheltuielile totale.
b) Dacă fabrica A are o capacitate de producţie de 8 tone şi fabrica B de 7 tone, să
se descompună problema în două probleme de transport şi să se rezolve.

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

Să se decidă cea mai bună repartizare pe funcţii a candidaţilor, astfel încât


câştigurile firmei să fie maxime.

R. Repartizând candidatul 1 pentru funcţia 3, candidatul 2 pentru funcţia 1 şi


candidatul 3 pentru funcţia 2, firma obţine un câştig maxim de 24 .

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?

R. Echipei 1 i se va repartiza proiectul 2, echipei 2 i se va repartiza proiectul 3,


echipei 3 i se va repartiza proiectul 1, iar timpul minim necesar realizării celor trei
proiecte este de 26 săptămâni.

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Ă

6.1. Exemple de probleme care conduc la programare pătratică

6.1.1. Utilizarea optimă a resurselor

Considerăm, ca şi în cazul programării liniare, că avem la dispoziţie m resurse


în cantităţile bi , i = 1, m . Cu ajutorul acestor resurse se pot desfăşura n activităţi
de producţie şi să notăm cu xj , j = 1, n , nivelul fiecărei activităţi j. Fie aij
cantitatea din resursa i necesară pentru producerea unei unităţi din produsul j, ci
preţul de desfacere şi di costul de producţie.
Se pune problema determinării unui program de lucru astfel încât profitul
obţinut să fie maxim. Pentru a obţine profitul maxim trebuie ca toată producţia
realizată să se vândă la preţurile cj , ceea ce este greu de acceptat. Este natural să
presupunem că volumul de producţie xj care se vinde descreşte o dată cu creşterea
preţului de vânzare yj , astfel:
yj=βj−αj⋅ xj ( αj≥0 , βj≥0 ). (6.1)
Dependenţa liniară a preţului yj de nivelul de producţie xj vândut este de
asemenea o simplificare a realităţii, dar mai realistă decât faptul că preţurile y j
nu depind de xj . Astfel se obţine următorul model (Maliţa şi Zidăroiu, 1971):
⎧ ⎡ n ⎤
⎪max ⎢− ∑ α j ⋅ x j + ∑ (− d j + β j ) ⋅ x j ⎥ = f ( x)
n
2

⎪ ⎣ 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

6.1.2. Problema investiţiei

Să presupunem că există mai multe domenii în care se pot face investiţii,


anume D1, ..., Dn . Presupunem că investind suma xj în domeniul Dj se obţine un
venit cj(xj) care depinde liniar de suma investită xj
cj =α j + β j ⋅ xj .
Să notăm cu f venitul total adus de planul de investiţii adoptat
f ( x) = ∑ (α j + β j ⋅ x j ) ⋅ x j
n

j =1

şi astfel se obţine modelul


⎧ ⎡ n ⎤
⎪ max ⎢∑ (α j + β j ⋅ x j ) ⋅ x j ⎥ = f ( x)
⎪ ⎣ j =1 ⎦
⎪m
⎨∑ a ij ⋅ x j ≤ bi 1≤ i ≤ m (6.3)
⎪ j =1
⎪ x j ≥ 0 j = 1,n


Am obţinut din nou o problemă de optimizare în care funcţia obiectiv este o
formă pătratică, iar restricţiile sunt liniare.

6.1.3. Regresii liniare

Presupunem că avem o mărime y care depinde liniar de variabilele x1, ..., xn ,


astfel
y=a1⋅ x1+ ...+ an⋅ xn.
Se pune problema estimării parametrilor a1, ..., an , presupunând cunoscute k
observaţii asupra lui y şi xi , i = 1, m
x1j ,..., x mj , j = 1,k
⎛ ⎞
în sensul minimizării sumei pătratelor abaterilor ⎜ y j − ∑ a i ⋅ xij ⎟ eventual
⎜ ⎟
⎝ ⎠
ponderat cu nişte factori bj>0
2
m
⎛ n

min ∑ b j ⋅ ⎜⎜ y j − ∑ a i ⋅ xij ⎟⎟ .
j =1 ⎝ i =1 ⎠
Asupra parametrilor a1, ..., an se impun condiţii suplimentare, de tipul
n
a i− ≤ a i ≤ a i+ sau ∑α
i =1
ri ⋅ ai ≤ c r 1≤ r ≤ p .
124 Modele şi algoritmi de optimizare

Se obţine din nou o problemă de programare cu funcţia obiectiv o formă


pătratică şi cu restricţii liniare
⎧ m
⎛ n

2

⎪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

Mai înainte de a trece la rezolvarea problemei de programare pătratică să


amintim câteva noţiuni referitoare la formele pătratice.

6.2. Definiţii. Proprietăţi

Fie f o funcţie de gradul al doilea în x1, ..., xn


n n n
f ( x ) = ∑∑ C ij ⋅ xi ⋅ x j + ∑ c j ⋅ x j + c 0
i =1 j =1 j =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

dij=dji ) , iar c ′ = (c1 ,..., cn ) .


n n
Fie Q( x ) = ∑∑ Cij ⋅ xi ⋅ x j = xCx ′ grupul termenilor de gradul al doilea. Se
i =1 j =1

ş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.1. Q(x) se numeşte formă pătratică pozitiv definită dacă n+ = n şi


n– = 0 .

Definiţia 6.2. Q(x) se numeşte formă pătratică pozitiv semidefinită dacă n+<n şi
n−=0 .

Definiţia 6.3. Q(x) se numeşte formă pătratică negativ definită 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 .

Dacă n+ > 0 şi n−> 0, atunci forma pătratică este nedefinită.


6. Programare pătratică 125

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

Propoziţia 6.1 , astfel Q( x ) = x ′Cx = 0 ⇒ Cx = 0 . Dar, C este nesingulară şi


unica soluţie este x=0.
n+
2. Dacă Q este pozitiv semidefinită Q(ξ ) = ∑ λi ξ i2 cu λi > 0 , i = 1, n + ,
i =1
n
λi = 0 , i = n + + 1, n . Atunci det(C ) = ∏ λ i = 0 . Din Propoziţia 6.1 rezultă
i =1

Q( x ) = x ′Cx = 0 ⇒ Cx = 0 . Dar, C este singulară şi soluţia x=0 nu este unică.


Analog se demonstrează afirmaţiile 3 şi 4. ‰

Observaţia 6.1. Pentru (∀) x, y ∈ R n , x ≠ y şi (∀)λ ∈ (0,1) avem


( )
Q[λ ⋅ x + (1 − λ ) ⋅ y ] = λ ⋅ Q( x ) + (1 − λ ) ⋅ Q( y ) + λ2 − λ ⋅ Q( x − y ) .

Deci, dacă Q este pozitiv definită avem


Q[λ ⋅ x + (1 − λ ) ⋅ y ] < λ ⋅ Q( x ) + (1 − λ ) ⋅ Q( y )
şi dacă Q este pozitiv semidefinită avem
126 Modele şi algoritmi de optimizare

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ă.

O problemă de programare pătratică este acea problemă în care trebuie


determinat un vector x* care minimizează o formă pătratică convexă sau
maximizează o formă pătratică concavă şi în care variabilele mai trebuie să
verifice un sistem de inegalităţi liniare şi eventual unele restricţii de semn.

Forma generală a problemei de programare pătratică este


⎧ 1 n n n

⎪min f ( x ) = min 2 ∑∑ Cij ⋅ xi ⋅ x j + ∑ ci ⋅ xi


⎪n i =1 j =1 i =1


⎨∑ 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).

Exemplu. În două variabile o formă pătratică pozitiv definită este paraboloidul


eliptic,
x2 x2
f ( x1 , x 2 ) = 12 + 22 , a, b ≠ 0 ,
a b
şi admite un minim unic (Figura 6.1), iar o formă pătratică semidefinită este
cilindrul parabolic,
f ( x1 , x 2 ) = a 2 x12 , a ≠ 0 ,
cu concavitatea îndreptată în sus (în acest caz nu avem un punct de extrem unic, ci
o dreaptă paralelă cu planul x1Ox2) (Figura 6.2).
6. Programare pătratică 127

Figura 6.1 Figura 6.2

6.3. Fundamentarea algoritmului lui Wolfe

În cele ce urmează sunt prezentate teoreme ce permit trecerea de la problema


de programare pătratică la o problemă de programare liniară echivalentă, fiind
astfel posibilă utilizarea algoritmului simplex pentru obţinerea soluţiei
problemei de programare pătratică. Algoritmul care se obţine este cunoscut sub
numele de algoritmul lui Wolfe, cu cele două forme ale sale : scurtă şi lungă.

Teorema 3.5 (care dă condiţiile Kuhn-Tucker) pentru această problemă are


formularea următoare.

(
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) .

Fie problema de programare pătratică


⎧ 1 n n n
⎧ ⎧1 ⎫
⎪ min f ( x ) = min ∑∑ ij i i ∑
2 i =1 j =1
C x x + ci xi ⎪min f ( x ) = min ⎨ 2 x ′Cx + c ′x ⎬
⎩ ⎭
⎪n i =1

⎪ ⎨ Ax = b
⎨∑ aij x j = bi 1 ≤ i ≤ m ⎪x ≥ 0
⎪ j =1 (6.4’)

⎪x j ≥ 0 1≤ j ≤ n ⎩

⎩ (matriceal)

Numim această formă a problemei de programare pătratică forma standard.

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 . ‰

Corolar 6.2. x* este soluţie a problemei (6.4’) dacă şi numai dacă


( )
(∃)v * ∈ R n , u* ∈ R m , astfel încât x * , v * , u* este soluţie pentru sistemul
⎧ Ax = b

⎨Cx − A u + v = -c
t
(6.6)
⎪ x′v = 0 , x ≥ 0 , u ≥ 0 .

Demonstraţie. În Teorema 6.2 luăm v = -c - Cx + A t u . ‰
Propoziţia 6.2. Dacă R = { x∈R ⏐ A⋅x=b ; x≥0 }≠φ, atunci (6.4’) are optim
n

infinit dacă şi numai dacă sistemul


6. Programare pătratică 129

⎧ 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 ) = −∞ . ‰

Să considerăm o partiţie, (I i )1≤i ≤3 , a mulţimii indicilor { 1, 2,..., n} astfel


{ }
I i = j x i = (x j ) j∈I , i=1,2,3 şi să rescriem vectorii x şi v sub forma
i

⎛ x1 ⎞ ⎛v 1 ⎞
⎜ 2⎟ ⎜ ⎟
x = ⎜ x ⎟ , v = ⎜v 2 ⎟ .
⎜ 3⎟ ⎜ 3⎟
⎝x ⎠ ⎝v ⎠

Lema 6.1. Dacă următoarea problemă de programare liniară


min g ′z
⎧ Ax = b
⎪Cx − A t u + v + Dz = -h
⎪ (6.8)

⎪ x, v, z, g ∈ R , u, h ∈ R
n m

⎪⎩ 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

adică b′λ = 0 şi g ′z * = h′µ * . Astfel, lema este demonstrată. ‰

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

6.4. Forma scurtă a algoritmului lui Wolfe

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)

Teorema 6.3. Prin aplicarea algoritmului simplex problemei (6.14) împreună cu


regula suplimentară (6.15) se ajunge la una din situaţiile:
a) problema (6.14) nu are soluţii admisibile, R = φ ;
b) se obţine soluţia optimă (x*, v*, u *, z*1, z*2) pentru problema (6.14);
c) se obţine o soluţie de bază a problemei (6.14) care nu mai poate fi
îmbunătăţită fără încălcarea regulii (6.15).
Demonstraţie. Se aplică algoritmul simplex, faza I, problemei (6.14), ţinându-se
seama de regula (6.15) . Întrucât nu s-au pus condiţii de semn asupra vectorului u,
îl vom descompune în u= u 1- u 2 , u1 ≥ 0 , u 2 ≥ 0 . Semnul pentru z i1 , z i2 se alege
astfel încât să fie acelaşi cu cel al termenului liber ci . De aceea aceste variabile
sunt iniţial variabile de bază. Se completează baza cu variabilele artificiale xa,
adăugate primelor m ecuaţii. Fie r = rang ( A) < m şi se consideră că primele r
⎡ A⎤
coloane ale matricei ⎢ ⎥ sunt primii r vectori unitari din Rm+n.
⎣C ⎦
Faza I se aplică problemei
⎧ ⎧ a⎫
⎪min ⎨∑ xi ⎬
⎪~ ⎩ i ⎭
⎪ A~x =b
⎨ * (6.16)
⎪Cx a− A u 1 + A2 u 1 + v2+ z − z = -c
t 1 t 2 1 2

⎪ 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

Deoarece coeficienţii variabilelor vi şi z i1 coincid, două astfel de variabile nu


pot fi simultan în bază şi atunci regula (6.15) se poate aplica în această fază fără a
se altera rezultatul. De fiecare dată când o variabilă z i1 are şansa să intre în bază o
vom înlocui cu vi , păstrând astfel v=0 în faza 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ă.

Următoarea teoremă stabileşte condiţii suficiente pentru cazul în care se poate


aplica algoritmul simplex, completat cu regula suplimentară (6.15), pentru
rezolvarea problemei de programare pătratică (6.4’).

Teorema 6.5. Pentru ca prin aplicarea algoritmului simplex, modificat cu regula


(6.15), problemei (6.14) să se ajungă în una din situaţiile:
a) problema (6.14) nu are soluţii admisibile, R = φ ;
b) se obţine soluţia optimă (x*, v*, u *, z*1, z*2) pentru problema (6.14);
134 Modele şi algoritmi de optimizare

c) se obţine o soluţie de bază a problemei (6.14) care nu mai poate fi


îmbunătăţită fără încălcarea regulii (6.15),
sunt suficiente următoarele condiţii:
i) c=0 ,
ii) C este pozitiv definită,
iii) C din problema (6.4) este pozitiv definită.
Demonstraţie. Dacă în urma aplicării fazei I se ajunge fie în cazul b), fie în cazul
c), s-a obţinut o soluţie de bază (xb, vb, ub, zb1, zb2) pentru problema (6.14).
Faza a II-a a metodei simplex va rezolva următoarea problemă de programare
liniară
⎧min ∑ z i
⎪ i
⎪ Ax = b
⎨ (6.14’)
⎪Cx − A u + v + Dz = -c
t

⎪ 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
*

atunci, la următorul pas, algoritmul simplex produce o nouă soluţie de bază


îmbunătăţită pentru problema (6.14”). Deoarece x *j = 0 , i ∈ I 2 ∪ I 3 , v *j = 0 ,
i ∈ I 1 ∪ I 2 şi cum problema (6.14”) impune condiţiile x 3 = 0 , v 1 = 0 , este
posibil ca în noua soluţie de bază cu valori nenule, cel mult una din variabilele
x i , v i , i ∈ I 2 . În acest fel noua soluţie satisface condiţia (6.15) şi este o soluţie
mai bună decât (x*, v*, u*, z*). Contradicţie !
6. Programare pătratică 135


Î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 . ‰

Comentarii. Faza I rezolvă problema (6.16) pentru eliminarea variabilelor auxiliare


xa din bază, luând u=0 , v=0 . Dacă problema (6.4’) are optim, atunci minimul din
problema (6.16) este zero şi variabilele x ia au fost înlociute cu x i . Dacă nu s-au
eliminat din bază toate variabilele x ia (caz de degenerare), se înlocuiesc xia cu
x i , lucru posibil când rang ( A) = m . Dacă rang ( A) < m , variabilele x ia
rămase în bază se elimină o dată cu liniile şi coloanele corespunzătoare din A,
deoarece restricţiile corespunzătoare sunt consecinţe ale celorlalte. Baza cu care se
iese din faza I conţine numai una din variabilele z i1 z i2 , deoarece coloanele
corespunzătoare acestor variabile sunt egale şi de semn contrar. Aşadar, din faza I
se iese cu o bază formată din m variabile xi (dacă rang ( A) = m ) şi n variabile
z i1 sau z i2 .
Faza a II-a foloseşte programul obţinut în faza I pentru rezolvarea problemei
(6.14’), ţinând seama de regula (6.15) care poate fi formulată şi astfel :
dacă una din variabilele xi şi vi este în bază, atunci cealaltă nu poate fi
introdusă în bază la iteraţia respectivă.
Se asigură astfel respectarea condiţiei xivi=0.

Exemplu. Să se rezolve următoarea problemă de programare pătratică :


⎧1 1 ⎫ 1
min ⎨ x12 + x 22 − 2 x1 + 3 x 2 + x 3 ⎬ = min x' Cx + c' x
⎩2 2 ⎭ 2
⎧ x1 − 2 x 2 + x 3 = 4
⎨ .
⎩ x1 , x 2 , x 3 ≥ 0
Rezolvare. Vom aplica algoritmul lui Wolfe în forma scurtă.
⎛1 0 0⎞ ⎛ − 2⎞
⎜ ⎟ ⎜ ⎟
f(x)= x' Cx + c' x ; C = ⎜ 0 1 0 ⎟ , c = ⎜ 3 ⎟ , A = (1 − 2 1) .
1
2 ⎜ 0 0 0⎟ ⎜ 1 ⎟
⎝ ⎠ ⎝ ⎠
Verificăm dacă se poate aplica algoritmul Wolfe, forma scurtă.
⎛1 0 0 1 ⎞ 1 0 1
[ ] ⎜ ⎟
rang C A = rang ⎜ 0 1 0 − 2 ⎟ = 3 deoarece 0 1 − 2 = 1 .
t

⎜0 0 0 1 ⎟ 0 0 1
⎝ ⎠
6. Programare pătratică 137

Aşadar, se poate aplica algoritmul deoarece incluziunea (6.18) este verificată,


fiind îndeplinită condiţia iii) din Comentarii.
Introducem variabilele artificiale nenegative xa, z1, z2 şi condiţiile
Kuhn−Tucker devin:
⎧ Ax + x a = b

⎪Cx − v + A u + z − z = −c1
t 1 2


⎪ 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

Faza I. Se aplică algoritmul simplex următoarei probleme de programare liniară:


n
min ∑ x iA = min x a (trebuie ca x a = 0)
i =1

⎧ 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

5/2 0 −1/2 0 0 1/2* 1 0 0 0


0 x3 2 0 −2 1 1 0 0 1 0
0 x1 2 1 0 0 −1 0 0 −1 0
0 v2 3 0 −1 0 0 1 0 −2 0
1 z 23 1 0 0 0 0 0 1 1° 1
1 0 0 0 0 0 1 1* 0
0 x3 1 0 −2 1 1 0 0 0
0 x1 3 1 0 0 −1 0 0 0
0 v2 5 0 −1 0 0 1 0 0
0 u3 1 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0
6. Programare pătratică 139

Faza a II-a . Folosind tabelul simplex rezultat din faza I şi renunţând la


coloana corespunzătoare variabilei xa, se aplică din nou algoritmul simplex
{ }
pentru minimizarea funcţiei min z11 + z 22 + z 32 . Calculele sunt prezentate în
Tabelul 6.2 .
Faza a II−a se încheie cu eliminarea din bază a vectorilor z1 şi z2 şi
{ }
min z11 + z 22 + z 32 =0.
1
Deci, soluţia este x1=3, x2=0, x3=1, şi f(x1, x2, x3) = − .
2
Multiplicatorii lui Lagrange sunt: v1=0, v2=5, v3=0; u=u1−u2=0−1= −1 .

Vom considera, ca exemplificare a folosirii Solver-ului din Excel pentru


rezolvarea problemelor de programare pătratică, problema de mai sus. Se creează
foaia electronică de calcul cu datele problemei ca în Figura 6.1. Celula D4 conţine
funcţia de minimizat =((1/2)*D7^2+(1/2)*D8^2−2*D7+3*D8+D9, celulele D7−D9
conţin necunoscutele problemei, iar restricţia D7−2*D8+D9 este depusă în celula
B11. Condiţiile de nenegativitate ale necunoscutelor sunt D7:D9 ≥B7:B9.
Selectând Solve se rezolvă problema, obţinându-se aceleaşi valori pentru funcţia de
optimizat şi pentru necunoscute ca şi cele obţinute în urma aplicării algoritmului lui
Wolfe forma scurtă, aşa cum se vede din rapoartele din Tabelele 6.3-6.5 .

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

6.5. Probleme propuse

1. Scrieţi condiţiile Kuhn-Tucker pentru următoarele probleme de programare


pătratică:
⎧ ⎧1 2
( 2 2
) ⎫
⎪min ⎨ 2 x1 + 5 x 2 + 2 x 3 + 4 x1 x 2 − 2 x1 x 3 − 4 x 2 x 3 − x1 + 3x 2 + 4 x 3 ⎬
⎪ ⎩ ⎭
⎪2x1 + 3x 2 − x 3 ≤ 2

a) ⎨ x1 + x 2 + 2 x 3 ≤ 4
⎪ x1 − 2 x 2 + x 3 ≤ 6

⎪x2 ≥ 1
⎪x ≥ 0

{
⎧min x12 + 2 x 22 + 3x 32 − 2 x1 x 2 + 2 x1 x 3 − 2 x 2 x 3 − x1 + 2 x 2 − x 3 }

⎪ x + 2 x 2 − 3x3 = 6
b) ⎨ 1
⎪ x1 − 2 x 2 + 4 x 3 = 8
⎪x ≥ 0

2. Să se rezolve următoarele probleme de programare pătratică

{
⎧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

arătând că se poate aplica algoritmul lui Wolfe în forma scurtă.


′ ′
R. a) x ′ = (2, 1) , v ′ = (0, 0) , u=0 .
′ ′ ′
⎛ 24 27 18 ⎞ ⎛ 10 ⎞ ⎛ 10 ⎞

b) x = ⎜ , ′ ′
, 0 , ⎟ , v = ⎜ 0, 0, , 0 ⎟ , u = ⎜ , 0 ⎟ .
⎝ 13 13 13 ⎠ ⎝ 13 ⎠ ⎝ 13 ⎠
3. Să se determine valoarea optimă şi punctul în care se atinge această valoare
pentru problemele 1 şi 2, folosind MathCAD.
7. PROGRAMARE DINAMICĂ

7.1. Generalităţi

Să considerăm un sistem a cărui evoluţie în timp poate fi controlată, chiar şi


parţial, de acţiunile unui factor decident. În orice moment i al evoluţiei, starea
sistemului se poate descrie printr-un vector x i ∈ R s numit vectorul stărilor, sau
vector de stare. Pe fiecare perioadă decidentul ia o decizie δ i , care provoacă o
modificare a stării sistemului, reflectată de un vector de decizie, d i ∈ R m .
Vectorii de decizie di pot lua valori admisibile în domeniile de
admisibilitate ∆i ⊂ R m , 1 ≤ i ≤ N . Cei doi vectori, de stare şi de decizie de la
momentul i, determină starea sistemului de la momentul i+1, conform unei
legi de evoluţie
xi +1 = τ i ( x i , d i ) .

Programarea dinamică este o metodă de optimizare a sistemelor în care se


operează pe faze sau secvenţe. Baza acestei metode o constituie Principiul de
optimalitate al lui Bellman, care se enunţă astfel (Kaufmann, 1967):

Orice politică optimă nu poate fi formată decât din subpolitici optime.

O politică este alcătuită dintr-o succesiune de decizii. Multe fenomene sau


probleme sunt de natură secvenţială, adică permit descompunerea lor în etape (faze),
fiecare etapă depinzând de cele apropiate, de etapa anterioară şi cea următoare.
Vom introduce în continuare câteva concepte cu care se operează în teoria
deciziilor (Zidăroiu, 1975). Considerăm s=1 şi m=1 şi atunci vectorul de stare
devine variabila de stare, iar cel de decizie devine variabila de decizie.
Etapele procesului sunt momentele în care trebuie luate deciziile. În problemele
secvenţiale ele formează un şir crescător, pe care îl vom nota cu 1, 2, ..., N .
Spunem că avem o problemă de decizie cu orizont finit sau infinit, după cum N
este finit sau nu.
În cazul unui orizont finit de N etape, o politică este reprezentată de un şir
format din deciziile luate în cele N etape.
Dacă orizontul este infinit, orice politică va fi reprezentată printr-un şir infinit,
având aceeaşi interpretare ca şi în cazul finit.
Schematic, cele prezentate mai sus se pot reprezenta astfel:
144 Modele şi algoritmi de optimizare

Etapa 0 1 2 ... N−1 N


Starea sistemului x0→ x1→ x2→ ... xN−1→ xN
Decizia luată δ1 δ2 ... δ N −1 δN

unde x0 este starea iniţială, xN este starea finală.


O problemă de decizii secvenţiale constă în determinarea unui şir finit sau nu
de decizii, după cum problema este cu orizont finit sau infinit. În urma luării unei
decizii se modifică starea sistemului conform cu o lege de evoluţie în funcţie de
starea actuală a sistemului :
xi = τi(xi-1, di)
unde di este o variabilă de decizie având domeniul de admisibilitate ∆i, iar τi
este o transformare dată, 1 ≤ i ≤ N.
Dacă ne interesează evoluţia sistemului din starea iniţială x0 până în starea
finală xN, atunci se observă că se poate scrie succesiv
x N = τ N ( x N −1 ; d N ) = τ N [τ N −1 ( x N − 2 ; d N −1 ); d N ] = ... = TN ( x 0 ; d 1 ,..., d N )
TN reprezentând rezultatul final al înlocuirilor de mai sus.
Se poate spune că politica (δ1, δ2,..., δN) are ca efect transformarea sistemului
din starea iniţială x0 în starea finală xN :
xN = TN(x0; d1, ..., dN) .
Această relaţie permite analiza prospectivă a procesului, deoarece se pleacă din
starea x0 şi se ajunge în starea xN .

Dacă funcţiile τi , 1 ≤ i ≤ N, sunt inversabile, se poate face şi o analiză


retrospectivă a procesului, inversând schema precedentă, astfel

Etapa N N−1 N−2 ... 1 0


Starea sistemului xN→ xN−1→ xN−2→ ... x1→ x0
Decizia luată δN δ N −1 δ N −2 ... δ1

Dacă notăm cu τ i inversele transformărilor τi , putem scrie


x0 = τ i ( x1 ; d1 ) = τ 1[τ 2 ( x 2 ; d 2 ); d1 ] = ... = T N ( x N ; d1 , d 2 ,..., d N )
unde: T N se obţine înlocuind xi prin τ i +1 ( xi +1 ; d i +1 ) , 1 ≤ i ≤ N−1 .
Această relaţie arată că starea finală xN şi politica aleasă δ1, δ2,..., δN determină
starea iniţială x0 .
Diferenţa dintre analiza prospectivă şi cea retrospectivă constă în modul în care
se priveşte evoluţia sistemului (de la x0 către xN sau invers) . Există situaţii în
care este mai eficientă folosirea analizei retrospective în rezolvarea unor probleme.

Decidentul are preferinţe în ceea ce priveşte evoluţia sistemului, preferinţe ce


pot fi descrise printr-o funcţie obiectiv. Problema cu care se confruntă decidentul
este de a alege o evoluţie a variabilelor de decizie astfel încât să optimizeze funcţia
obiectiv cu restricţiile de admisibilitate şi starea iniţială (finală) date.
7. Programare dinamică 145

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.

Definiţia 7.1. O funcţie f i : R i → [0, ∞ ) se numeşte decompozabilă prospectiv


dacă există o funcţie f i : R 2 → [0, ∞ ) monotonă (crescătoare pentru probleme de
~

maxim şi descrescătoare pentru probleme de minim) în a doua variabilă astfel


încât
~
f i (r1 ,..., ri ) = f i (ri , f i −1 ( r1 ,..., ri −1 )) .

Definiţia 7.2. O funcţie f i : R i → [0, ∞ ) se numeşte decompozabilă retrospectiv


dacă există o funcţie f i : R 2 → [0, ∞ ) monotonă (crescătoare pentru probleme de
~

maxim şi descrescătoare pentru probleme de minim) în a doua variabilă astfel


încât
~
f N − i +1 (ri ,..., rN ) = f N − i +1 (ri , f N − i (ri +1 ,..., rN )) .

Cu schimbarea de variabilă xi′ = x N −i se poate trece de la decompozabilitate


prospectivă la cea retrospectivă şi invers.
Cazul cel mai frecvent de decompozabilitate este cazul aditiv, când funcţia obiectiv
este de forma
N
f [r1 (x1 ; d 1 ), r2 ( x 2 ; d 2 ),..., rN ( x N ; d N )] = ∑ ri (x i ; d i ) . (7.1)
i =1

Se întâlnesc şi probleme în care funcţia obiectiv se exprimă multiplicativ


N
f [r1 (x1 ; d 1 ), r2 ( x 2 ; d 2 ),..., rN (x N ; d N )] = ∏ ri ( x i ; d i ) .
i =1

În cazul analizei retrospective se pot scrie succesiv egalităţile


ri (xi , d i ) = ri [τi +1 (xi +1 , d i +1 ); d i ] = ... = ri′(xi ; d N ,..., d i )
pentru (∀)i = 1, N , obţinându-se pentru funcţia obiectiv forma
f [r (x ; d ), r (x ; d ),..., r (x ; d )] = R ′ (x ; d ,..., d )
N N N N −1 N −1 N −1 1 1 1 N N 1 N (7.2)
adică funcţia obiectiv depinde de starea finală xN şi de variabilele de decizie dN ,
dN—1 , ... , d1 . Astfel, cunoscând starea finală şi politica aleasă se poate calcula
câştigul asociat politicii considerate.
În cazul analizei prospective, câştigul total se exprimă în funcţie de starea
iniţială x0 şi de variabilele de decizie d1 , d2 , ... , dN , astfel
146 Modele şi algoritmi de optimizare

f [r1 (x1 ; d1 ),..., rN −1 (x N −1 ; d N −1 ), rN (x N ; d N )] = RN (x0 ; d1 ,..., d N ) .


(7.3)
Printre politicile posibile care fac ca sistemul să evolueze din starea x0 în
starea xN , există una (sau mai multe) care optimizează funcţia obiectiv; aceste
politici se numesc politici optime.
Vom nota politica optimă cu ( )
δˆ1 ,..., δˆN , iar variabilele de decizie
( )
corespunzătoare cu dˆ ,..., d̂ . Mulţimea stărilor xˆ ,..., xˆ , xˆ = τ ( xˆ , dˆ ) , i −1 i −1

( )
1 N 0 N i i

1 ≤ i ≤ N corespunzătoare deciziilor dˆ1 ,..., dˆ N constituie traiectoria optimă.


Deoarece câştigul total depinde de starea iniţială (finală) şi de politica aleasă
este necesar să se considere mai multe valori posibile pentru starea iniţială x0 sau
starea finală x N (spunem că simulăm evoluţia sistemului în mai multe situaţii ). În
aceste cazuri politicile optime sunt funcţii de x0 sau xN , adică
dˆ i = dˆ i (x 0 ) sau dˆ i = dˆ i (x N ) , 1 ≤ i ≤ N .

Teorema de optimalitate a lui Bellman. Date stările iniţială x0 şi finală xN ,


traiectoria x0,…, xN este optimă dacă traiectoria x0,…, xN-1 este optimă şi xN-1
este astfel încât
f N (rN ( x N ; d N ), f N −1 (r1 ( x1 ; d1 ),..., rN −1 ( x N −1; d N −1 )) )
~

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. ‰

În continuare vom prezenta relaţiile de recurenţă şi rezolvarea problemei de


programare dinamică în cazul analizei retrospective, trecerea la analiza prospectivă
fiind imediată atunci când legile de evoluţie a sistemului analizat sunt inversabile.

7.2. Analiza retrospectivă

Presupunem că avem de rezolvat următoarea problemă: Să se afle decizia


( )
optimă dˆ1 , dˆ 2 , . . ., dˆ N astfel încât

( ) ( ) (
⎪ f [rN x N , dˆ N , rN −1 x N −1 , dˆ N −1 ,. . . , r1 x1 , dˆ1 ] =

)
⎨= max f [rN (x N , d N ) , rN −1 (x N −1 , d N −1 ) ,. . . , r1 (x1 , d 1 )] (7.4)
d ∈∆
⎪ 1≤i i ≤ N
⎪x = τ ( x ; d ) , 1 ≤ i ≤ N
⎩ i −1 i i i

sau dacă ţinem seama de (7.2),


7. Programare dinamică 147

( ) ( ) ( )
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

În formularea (7.5) intervin efectiv numai xN şi variabilele de decizie d1, d2 ,


... , dN, deoarece variabilele x0, x1, ..., xN−1 se determină cu ajutorul precedentelor,
ţinând seama de relaţiile x i −1 = τ i ( x i ; d i ) , 1 ≤ i ≤ N − 1 .

7.2.1. Rezolvarea în cazul aditiv

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

Notând cu fN(xN) valoarea maximului (7.6) obţinem


⎧ f N (x N ) = max[rN (x N , d N ) + rN −1 (x N −1 , d N −1 ) + . . . + r1 (x1 , d 1 )] =
⎪ d i ∈∆ i
1≤ i ≤ N
⎪⎪
⎨= dmax {rN (x N , d N ) + max [rN −1 ( x N −1 , d N −1 ) + rN − 2 (x N − 2 , d N − 2 ) + . . . + r1 (x1 , d 1 )]}
∈∆ d i ∈∆ i
⎪ N N 1≤ i ≤ N −1

⎪⎩ x i −1 = τ i (x i , d i ) , 1 ≤ i ≤ N
sau, prin aplicarea Teoremei de optimalitate a lui Bellman
⎧ f N (x N ) = max[rN (x N , d N ) + f N −1 (x N −1 )]
⎪ d i ∈∆ i
⎨ 1≤i ≤ N (7.7)
⎪⎩ x N −1 = τ N (x N , d N ) .
[
Dacă notăm QN (x N , d N ) = rN (x N , d N ) + f N −1 τ(x N , d N ) , putem scrie ]
f N (x N ) = max QN (xn , d N ) (7.8)
d N ∈∆ N

şi maximul nu se mai ia după restricţii (restricţiile fiind incluse în expresia funcţiei


QN) .
Relaţia (7.7) poate fi justificată astfel: dacă δˆ ,..., δˆ (
este o politică optimă
1 N )
pentru un orizont de N etape şi cu xN ca stare finală, atunci subpolitica
( )
δˆ1 ,..., δˆN −1 este optimă pentru un orizont de N−1 etape cu x N −1 = τ N (x N , d N ) ca
stare finală.
Relaţia (7.8) permite determinarea funcţiei fN(xN) în ipoteza că se cunoaşte
funcţia fN−1(xN−1) .
Pornind de la relaţia (7.8), procedând analog, obţinem:
148 Modele şi algoritmi de optimizare

⎧ f1 (x1 ) = max Q1 (x1 , d1 ) = max r1 (x1 , d1 )


⎪ d1∈∆1 d1∈∆1

⎪. . . . . . . . . . . . . . . . . . . . . . . . . . .
⎨ 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.

Rezolvarea problemei iniţiale înseamnă calcularea funcţiilor


f1(x1), f2(x2), ..., fN(xN) şi dˆ = d (xˆ ) . N N N

Funcţiile fi(xi) , 1 ≤ i ≤ N , se determină din relaţiile de recurenţă (7.8), iar


dˆ N = d N (xˆ N ) din ultima din aceste relaţii.

Algoritmul pentru rezolvarea problemei de programare dinamică în cazul aditiv


Pas 0. Se determină x̂ N cu f (x̂ N ) = max f (x N ) ;
xN

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 !

Procedeul de mai sus presupune cunoaşterea expresiilor analitice ale funcţiilor


fi , d i .
Vom prezenta câteva situaţii în care metodele programării dinamice conduc la
obţinerea optimului fără a se apela la evidenţierea tuturor soluţiilor posibile.

7.2.2. Problema repartiţiei investiţiilor

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

teoretic obţinem ecuaţiile de recurenţă:


f1 ( x1 ) = max r1 ( d1 ) ; coloana S1 din tabel este crescătoare şi reprezintă r1
0≤ d1 ≤ x1

f 2 (x2 ) = max[r2 (d 2 ) + f1 (x1 )] = max[r2 (d 2 ) + f ( x2 − d 2 )] ; 0 ≤ d 2 ≤ x2


f 3 (x3 ) = max[r3 (x3 ) + f 2 (x3 − d 3 )] ; 0 ≤ d 3 ≤ x3
f 4 (x4 ) = max[r4 (x4 ) + f 3 (x4 − d 4 )] ; 0 ≤ d 4 ≤ x4 ; x4 ≤ S .

Determinarea valorilor funcţiilor fi :


f1 ( x1 ) = max r1 ( x1 ) = r1 ( d1 ) , r1 fiind crescătoare 0 ≤ d 1 ≤ x1 deci: dˆ1 ( x1 ) = x1 .
150 Modele şi algoritmi de optimizare

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

4 4 0.78 1 0.90 0 0.90 0 sau 1 0.90

5 5 0.90 2 1.06 0 1.06 1 1.1


152 Modele şi algoritmi de optimizare

Culegerea rezultatelor. Se observă că


max f 4 ( x 4 ) = f 4 (5) = 1.1 şi xˆ 4 = 5 , iar dˆ 4 ( x 4 ) = 1 .
0 ≤ x4 ≤ 5

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.

7.2.3. Problema gestiunii stocului

Principiul de optimalitate al lui Bellman poate fi enunţat şi sub următoarea


formă, aşa cum va fi folosit în rezolvarea problemei ce urmează.

Î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.

În continuare vom rezolva următoarea problemă cunoscută sub numele de


problema gestiunii stocului.
Tabelul 7.3 dă pentru cinci perioade cantităţile unitare de produs di pe care
un vânzător le va furniza, precum şi preţurile ci cu care el poate achiziţiona aceste
produse pe care le va revinde la preţ constant. El cumpără la începutul perioadei
un număr întreg de produse, dispune de o capacitate de stocare gratuită de 5
unităţi.
Trebuie ca la începutul fiecărei perioade să dispună de suficiente produse
pentru a face faţă cererii, începe şi termină cu stoc nul. Cum trebuie să organizeze
aceste cumpărături astfel încât profitul său să fie maxim ?

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

di = cantitatea de produs cumpărată la începutul perioadei i , are rol de variabilă de


decizie ;
xi = cantitatea de produs rămasă în stoc la sfârşitul perioadei i , xi este în acest caz
variabila de stare, pentru că permite cunoaşterea perfectă a stării situaţiei la
sfârşitul fiecărei perioade.
Restricţiile sistemului sunt
⎧ b j ≤ x j −1 + d j ≤ 5

⎨ x j = x j −1 + d j − b j j = 1,5
⎪ x = 0 ; x = 0.
⎩ 0 5
5
Funcţia de optimizat este f (d ) = ∑ c j d j .
j =1

S-a obţinut astfel o problemă de programare în numere întregi.

Ţinând seama de cererea de la perioada întâi, se vede (Tabelul 7.4) că perioada


întâi se poate termina cu 0 ; 1 ; 2 sau 3 unităţi în stoc.

Tabelul 7.4
b1 x1 d1 f(d) min
3 5 65
2 2 4 52
1 3 39
0 2 26

Perioada a doua (Tabelul 7.5) se poate termina cu 0 , 1 sau 2 unităţi în stoc


(x1+d2=b2=3).

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 *

Perioada a treia (Tabelul 7.6) se poate termina cu 0 sau 1 unităţi în stoc


(x2+d3=b3=4).
154 Modele şi algoritmi de optimizare

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 *

Perioada a patra (Tabelul 7.7) se poate termina cu 0, 1 sau 2 unităţi în stoc


(x3+d4=b4=3).

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 *

Politica optimală de cumpărături este

⎧ ⎧ ⎧ ⎧ 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

Generalizare Clasa de probleme Pk(x). Să se determine o politică optimală de


cumpărături pe primele k perioade, putând termina cele k perioade cu x produse
în stoc. Problema iniţială poate să fie considerată ca P5(0). Vrem să punem în
evidenţă o relaţie de recurenţă între aceste diferite probleme şi să le rezolvăm de o
manieră mai economică în timp.
Notăm zk(x), valoarea optimului funcţiei obiectiv a problemei Pk(x). Avem
relaţia z k ( x) = min{c k d k + z k −1 ( x + bk − d k )} ,
dk ( x)

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 * * * * * * * *

În acest tablou coloanele au fost completate de la stânga la dreapta, calculând


d1(x) apoi z1(x) ş. a. m. d. Culegerea soluţiei optimale se face de la dreapta la
stânga. Ştiind că d5=0 şi b5=2, adică x4=2, căutăm soluţia pentru P4(2) . Găsim
d4=5, adică x3=0 şi atunci căutăm P3(0) . Din Tabelul 7.9 avem d3=2 şi, cum
b3=4, rezultă x2=2. Căutăm acum soluţia pentru P2(2) . Cum b2=3 şi din tabel
d2=2, rezultă că x1=3, şi acum ne interesează P1(3) . Din Tabelul 7.9 rezultă că
d1=5 şi astfel am ajuns la soluţia finală.

7.2.4. Problema alocării optime a resurselor

Trei echipe de cercetători A, B, C lucrează la un acelaşi proiect folosind


abordări diferite. Echipele au probabilităţile de eşec : P(A)=0.4 ; P(B)=0.6 ;
P(C)=0.8. Se decide alocarea a 2 noi cercetători la proiect în scopul minimizării
probabilităţii de eşec a proiectului. Pentru a decide alocarea cercetătorilor
suplimentari s-a stabilit Tabelul 7.10 (Henry-Labordere, 1995).

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

Care este alocarea optimală a cercetătorilor suplimentari astfel încât împreună


să aibă probabilitatea de eşec minimă ?
156 Modele şi algoritmi de optimizare

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.

f i (x ) = min{f pred (i ) (x − d i ) ⋅ ri (d i )}, i ∈ {A, B, C } , unde ∑d i = x , iar f pred ( A) = 1 .


i∈{A, B ,C }

Soluţia este analoagă soluţiei problemei repartiţiei investiţiilor.


Să determinăm valorile funcţiilor f i , i ∈ {A, B, C }.
f A ( x) = min rA ( x) , deoarece rA este descrescătoare, aşa cum se vede din coloana
A a Tabelului 7.10 şi atunci dˆ A ( x) = x .
x=0 , atunci 0 ≤ d B ≤ 0 şi
f B (0) = min{ rB (0) ⋅ f A (0)} = min{ 0.6 ⋅ 0.4} = 0.24 , iar dˆ B (0) = 0 .
x=1 , atunci 0 ≤ d B ≤ 1 şi
f B (1) = min{ rB (d B ) ⋅ f A (1 − d B )} = min{ rB (0) ⋅ f A (1); rB (1) ⋅ f A (0)} = 0.12 ,
d̂ B (1) = 0 .
x=2 , atunci 0 ≤ d B ≤ 2 şi
f B (2) = min{ rB (d B ) ⋅ f A (2 − d B )} = min{ rB (0) ⋅ f A (2); rB (1) ⋅ f A (1); rB (2) ⋅ f A (0) } =
= 0.08 , iar dˆ B (2) = 2 sau 1.
x=0 , atunci 0 ≤ d C ≤ 0 şi
f C (0) = min{ rC (0) ⋅ f B (0)} = min{ 0.8 ⋅ 0.24} = 0.192 , iar dˆC (0) = 0 .
x=1 , atunci 0 ≤ d B ≤ 1 şi
f B (1) = min{ rC (d C ) ⋅ f B (1 − d C )} = min{ rC (0) ⋅ f B (1); rC (1) ⋅ f B (0)} = 0.096 ,
dˆC (1) = 0 .
x=2 , atunci 0 ≤ d C ≤ 2 şi
f C (2) = min{ rC (d C ) ⋅ f B ( 2 − d C )} = min{ rC (0) ⋅ f B (2); rC (1) ⋅ f B (1); rC (2) ⋅ f B (0) } =
= min{ 0.8 ⋅ 0.8; 0.5 ⋅ 0.12; 0.3 ⋅ 0.24} = 0.06 , iar dˆ (2) = 1 . C

Datele obţinute sunt trecute în Tabelul 7.11


7. Programare dinamică 157

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

Valoarea soluţiei optimale este fC (x ) =0.06 pentru alocarea ambilor cercetători,


astfel:
xˆ C = 2 şi dˆC = 1 , adică se alocă un cercetător la proiectul C ;
xˆ B = xˆ c − dˆC = 1 , dar dˆ B = d B (1) = 0 , adică la proiectul B nu se mai alocă alt
cercetător;
xˆ A = xˆ B − dˆ B = 1 , însă dˆ A = d A (1) = 1 , adică se alocă un cercetător la proiectul A.

7.3. Probleme propuse

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%

Să se precizeze care este profitul maxim şi cum se obţine.

R. Trecem rezultatele calculelor în Tabelul 7.13

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

b) d̂ 3 = 3 , xˆ3 = 4 , xˆ 2 = xˆ3 − dˆ3 = 1 , dˆ 2 = d 2 ( xˆ 2 ) = 0 , xˆ1 = xˆ 2 − dˆ2 = 1 ,


dˆ1 = d1 ( xˆ1 ) = 1 .
Profitul maxim este de 97% , dacă se investeşte suma astfel:
a) (1, 1, 2) , adică 1 milion în primul tip de locuinţe, 1 milion în al doilea tip de
locuinţe şi 2 milioane în al treilea tip de locuinţe;
b) (1, 0, 3) , adică 1 milion în primul tip de locuinţe şi 3 milioane în al treilea
tip de locuinţe.

2. Problema achiziţionărilor de carburant


Serviciul de aprovizionare al municipalităţii trebuie să asigure motorina pentru
încălzirea oraşului, timp de 6 luni – noiembrie-aprilie. Preţurile de cumpărare
prevăzute pe tonă şi nevoile lunare sunt date de Tabelul 7.14 (Henry-Labordere,
1995):
Tabelul 7.14
Perioada (i) 1 2 3 4 5 6
Necesarul (bi) 800 500 300 200 700 400
Preţul tonei (ci) 3300 5400 3900 5100 6000 3000

Stocul iniţial la 1 noiembrie este de 200 t. Nu se poate depăşi capacitatea


rezervorului care este de 900 t. Se doreşte minimizarea cumpărăturilor, dar cu
satisfacerea cererii pe întreaga perioadă.
Fie: ci costul unei tone pe perioada i ,
xi stocul la sfârşitul perioadei i−1, începutul perioadei i, înainte de
cumpărarea cantităţii di ,
di cantitatea cumpărată la data de întâi a lunii i ,
bi necesarul pe perioda i.
Notând f i (xi +1 ) costul politicii optimale care lasă la sfârşitul perioadei i un stoc
xi+1, atunci :
• să se stabilească o relaţie între f i (xi +1 ) şi f i −1 (xi ) ,
• să se găsească soluţia optimală folosind programarea dinamică. Să se precizeze
cumpărăturile lunare şi stocul final.

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

Culegerea rezultatelor din tabel:


min f 6 (dˆ 7 ) = 1071 = f 6 (4) , dˆ 6 = d 6 ( xˆ 7 ) = d 6 (0) = 4 , xˆ 7 = 0 ,
xˆ 7 = xˆ 6 + dˆ 6 − b6 ⇒ xˆ 6 = b6 − dˆ 6 = 4 − 4 = 0 .
Cum dˆ5 = d 5 ( xˆ 6 ) = d 5 (0) = 0 , rezultă
xˆ 6 = xˆ 5 + dˆ5 − b5 ⇒ xˆ 5 = xˆ 6 + b5 − dˆ5 = 0 + 7 − 0 = 7 şi dˆ 4 = d 4 ( xˆ 5 ) = d 4 (7) = 3 .
Analog obţinem:
xˆ 5 = xˆ 4 + dˆ 4 − b4 ⇒ xˆ 4 = xˆ 5 + b4 − dˆ 4 = 7 + 2 − 3 = 6 şi dˆ3 = d 3 ( xˆ4 ) = d 3 (6) = 9 ,
xˆ 4 = xˆ 3 + dˆ3 − b3 ⇒ xˆ 3 = xˆ 4 + b3 − dˆ3 = 6 + 3 − 9 = 0 şi dˆ 2 = d 2 ( xˆ 3 ) = d 2 (0) = 4 ,
xˆ 3 = xˆ 2 + dˆ 2 − b2 ⇒ xˆ 2 = xˆ 3 + b2 − dˆ 2 = 0 + 5 − 4 = 1 şi dˆ1 = d1 ( xˆ 2 ) = d1 (1) = 7 ,
xˆ 2 = xˆ1 + dˆ1 − b1 ⇒ xˆ1 = xˆ 2 + b1 − dˆ1 = 1 + 8 − 7 = 2 .

Politica optimală de cumpărături este :


f6(4)=1071 cu cantităţile dˆ1 = 7 , dˆ 2 = 4 , dˆ3 = 9 , dˆ 4 = 3 , dˆ5 = 0 , dˆ6 = 4 .
160 Modele şi algoritmi de optimizare

3. La o balastieră s-au estimat cantităţile necesare de balast pentru trimestrul patru


în vederea încheierii contractului cu o carieră. Cantităţile şi preţurile sunt trecute în
Tabelul 7.16 .
Tabelul 7.16
Luna Octombrie Noiembrie Decembrie
Necesar (m3) 80 30 40
Cost (u.m.) 4 3 5

La începutul fiecărei luni se comandă o anumită cantitate de balast astfel încât


să fie satisfăcut necesarul de balast, dar să nu fie depăşită capacitatea de depozitare
a balastierei, limitată la 100 m3. Să se precizeze costul minim de aprovizionare şi
cum se obţine. Se presupune că la începutul şi sfârşitul semestrului depozitul este
gol.

R. Politica optimală de aprovizionare este :


f3(0)=690 cu cantităţile dˆ1 = 80 , dˆ2 = 70 , dˆ3 = 0 .

4. O firmă de transport de persoane trebuie să facă legătura între localităţile A şi H,


pe un drum ce poate trece prin localităţile A, B, C, D, E, F, G, H. Distanţele între
localităţi şi reţeaua de drumuri sunt trecute în graful din Figura 7.1. Ştiind că pentru
o persoană se plătesc 3.4 u.m., să se determine costul minim de transport pentru o
persoană şi traseul pentru care se obţine acest cost.

8
B E
2 3 4 6
1
4 2 H
A C F

1 8 3
7
D 5 G

Figura 7.1

R. Traseul minim A, D, G, H are lungimea 13 şi costul minim este


Cmin=3.4⋅13=44.2 u.m.

5. Construirea unei autostrăzi. (Kaufmann, 1967) Folosind analiza prospectivă să


se rezolve problema 3 din §2.5.

R. Se consideră că autostrada, care va uni localităţile 1 şi 14 (Figura 2.18), va fi


formată din cinci tronsoane.
8. ELEMENTE DE TEORIA AŞTEPTĂRII

8.1. Introducere în teoria aşteptării

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.

Elementele necunoscute ale modelului de aşteptare sunt:


• timpul de aşteptare
• timpul de neocupare a staţiilor
• lungimea cozii
• numărul de clienţi din sistem N(t) existenţi la momentul t .
Toate aceste necunoscute sunt variabile aleatoare şi, prin rezolvarea modelului
de aşteptare, se urmăreşte determinarea repartiţiei lor sau măcar a unei valori medii
în funcţie de elementele cunoscute.
162 Modele şi algoritmi de optimizare

Un model de aşteptare se notează A / S / c: (L, d) , unde:


A – repartiţia timpului dintre două veniri consecutive,
S – repartiţia duratei de serviciu,
c – numărul de staţii (canale) de serviciu,
L – lungimea maximă a cozii,
d – disciplina de serviciu.

Exemplu. Notaţia Exp(λ) / Exp(µ) / 1: (∞, FIFO) caracterizează un model cu:


− veniri cu repartiţia exponenţială negativă de parametru λ,
− servicii cu repartiţie exponenţială negativă de parametru µ,
− o singură staţie ( c=1 ),
− coada care poate creşte indefinit ( L=∞),
− disciplina de serviciu care este primul sosit−primul servit (First−In
First−Out).

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.

8.2. Caracterizarea procesului N(t) ca proces de naştere şi deces

O caracteristică a procesului N(t) este aceea că variaţia valorilor sale pe


intervale mici de timp nu este mare, în sensul că probabilitatea ca N(t) să prezinte
variaţii mari pe intervalul de timp (t, t + ∆t) depinde de valoarea lui N(t) şi este,
în general, mică. Variaţia procesului N(t) este determinată de intrările şi ieşirile
din sistem, adică de veniri şi servicii. Asemănător variază şi volumul populaţiilor
biologice; variaţia numărului de indivizi dintr-o astfel de populaţie pe un interval
mic de timp nu este prea mare şi ea depinde de natalitate (intrări) şi de deces
(ieşiri). Procesul stochastic N(t) este un caz particular de proces Markov şi se
numeşte proces de naştere şi deces (Văduva, 1977).

Definiţia 8.1. Procesul stochastic cu creşteri independente N(t) se numeşte proces


de naştere şi deces dacă satisface următoarele condiţii:
1) P [ N ( t + ∆t ) = n + 1 ⏐ N(t) = n ] =λn ⋅ ∆t + O (∆t ) ;
2) P [ N ( t +∆t ) = n −1 ⏐ N(t) = n ] = µn ⋅∆t + O (∆t ) ;
3) P [ N ( t + ∆t ) = n ± i ⏐ N(t) = n ] = O (∆t ), (∀) i > 1
unde P ( A⏐B ) este probabilitatea lui A condiţionată de B, {λn , n ≥ 0}, {µn , n ≥
0} sunt şiruri de numere pozitive date, iar O (∆t ) un element al unei clase de
O ( ∆t )
funcţii care satisface: lim O ( ∆t ) = 0, lim = 0, cO ( ∆t ) = O ( ∆t ), (∀)c ∈ R .
∆t →0 ∆t →0 ∆t
8. Elemente de teoria aşteptării 163

Procesul este cu creşteri independente în sensul că, oricare ar fi t1<t2<t3<t4


variabilele N(t2− t1), N(t3− t4) sunt independente stochastic, adică evoluţiile
procesului pe două intervale de timp disjuncte sunt independente.
Constantele λn , n ≥ 0 , se numesc intensităţi de natalitate, iar µn , n ≥ 1 , se
numesc intensităţi de deces.
Dacă pentru t1 < t 2 avem N (t2 − t1 ) = N (t2 ) − N (t1 ) , se spune că procesul N
este un proces de numărare.

Vom determina probabilităţile Pn(t) = P( N( t ) = n ), n = 0,1,2,... .


Din definiţia procesului de naştere şi deces şi ţinând seama că mulţimea
funcţiilor O (∆t) este închisă la adunare, scădere, înmulţire şi înmulţire cu un
scalar sau cu o funcţie de timp, avem:
Pn (t + ∆t ) = Pn (t )(1
1 − λ n ∆t + O ( ∆t ) )(1 − µ n ∆t + O (∆t ) ) +
44 42444 3 144 42444 3
nici o venire nici o plecare
+ Pn −1 (t )(λ n −1 ∆t + O ( ∆t ) )(1 − µ n −1 ∆t + O ( ∆t ) ) +
1442443 14442444 3
o venire nici o plecare
+ Pn +1 (t )(1 − λ n +1 ∆t + O (∆t ) )(µ n +1 ∆t + O (∆t ) ) +
14442444 3 1442443
nici o venire o plecare
+ ∑ Pn +i (t )(1 − O (∆t ) ) ⋅ O (∆t ) +
i >1
14243 123
nu are loc o venire are loc o plecare
de i indivizi de i indivizi
n
+ ∑ Pn −i (t ) O (∆t ) ⋅ (1 − O (∆t ) )
i >1
123 14243
are loc o venire nu are loc o plecare
de i indivizi de i indivizi

Ţinând seama de proprietăţile funcţiilor O (∆t) avem:


Pn (t + ∆t ) − Pn (t ) = −(λ n + µ n )Pn (t )∆t + λ n −1 Pn −1 (t )∆t +
, n≥1 .
+ µ n +1 Pn +1 (t )∆t + O ( ∆t )
Împărţim la ∆t , trecem la limită pentru ∆t → 0 şi obţinem ecuaţiile
Kolmogorov−Feller care guvernează procesul de naştere şi deces:
Pn′ (t ) = −(λ n + µ n )Pn (t ) + λ n −1 Pn −1 (t ) + µ n +1 Pn +1 (t ) , n ≥ 1 (8.1)
Asemănător deducem
P0′ (t ) = −λ 0 Po (t ) + µ1 P1 (t ) (8.2)
Sistemul de ecuaţii (8.1) şi (8.2) trebuie să aibă o soluţie care să fie un sistem
complet de probabilităţi, adică

∑ P (t ) = 1 , (∀)t
n =0
n (8.3)

Teoremele următoare dau condiţiile ca sistemele (8.1)-(8.3) să aibă soluţie.

Teorema 8.1. Dacă procesul N ( t ) este un proces de naştere pură (µn = 0,


(∀) n ≥ 1), şi dacă există i astfel încât Pi ( 0 ) = 1 şi Pn ( 0 ) = 0, n ≠ i (condiţiile
164 Modele şi algoritmi de optimizare

iniţiale sunt date), atunci condiţia necesară şi suficientă ca soluţia sistemului de


ecuaţii diferenţiale (8.1) şi (8.2) să fie un sistem complet de probabilităţi este ca

1
∑ =∞.
k =0 λk
Teorema 8.2. Dacă pentru procesul de naştere şi deces N ( t ) sunt date condiţiile
iniţiale ca în Teorema 8.1, atunci o condiţie suficientă ca sistemul de ecuaţii
diferenţiale (8.1) şi (8.2) să aibă ca soluţie un sistem complet de probabilităţi este
ca
∞ k
µi
∑∏ λ
k =1 i =1
=∞.
i −1

Ipoteză simplificatoare. Procesul N ( t ) se presupune staţionar, adică Pn ( t ) = pn =


constant, ipoteză justificată de faptul că, după perioade mari de timp de
funcţionare, sistemele se stabilizează.
În caz staţionar, sistemul (8.1) – (8.2) devine:
⎧− λ 0 p 0 + µ1 p1 = 0
⎨ (8.4)
⎩− (λ n + µ n ) p n + λ n −1 p n −1 + µ n +1 p n +1 = 0 , n ≥ 1
Notăm
z k = −λ k p k + µ k +1 p k +1
şi din ultima ecuaţie avem
zn = zn−1 ,
iar din prima ecuaţie
z0 = 0.
Astfel, în cazul staţionar
zn = 0, n ≥ 0,
sau
λn
p n +1 = pn , n ≥ 0 .
µ n +1
Deducem că
⎛ n −1 λ ⎞
p n = ⎜⎜ ∏ k ⎟⎟ p 0 , n ≥ 1 .
⎝ k = 0 µ k +1 ⎠
Din condiţia (8.3) rezultă că
1
p0 = .

λ
n −1
1 + ∑∏ k
n =1 k = 0 µ k +1

Cunoscând repartiţia procesului N ( t ), în cazul staţionar, adică a numărului


de clienţi din sistemul de aşteptare, se pot calcula unele elemente necunoscute ale
modelului, şi anume:

a) numărul mediu de clienţi din sistem M [N (t )] = ∑ np n ,
n =0
8. Elemente de teoria aşteptării 165

b) lungimea medie a cozii


L
M [Lc ] = ∑ ( n − c) p n ,
n=c

(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 )

Observaţia 8.1. µ (1 − p0) reprezintă numărul mediu de clienţi (unităţi) serviţi în


unitatea de timp. Atunci:
d) timpul mediu de aşteptare în sistem
M [W ] = M [N (t )] ,
1
µ (1 − p 0 )
e) numărul mediu de staţii neocupate
c
M [SL ] = ∑ (c − n) p n ,
n =0

f) timpul mediu de lenevire (neocupare) a unei staţii între două servicii


consecutive
M [ AT ]
M [TL ] = M [SL ] ⋅ ,
c
unde M[AT] este media intervalelor de timp dintre două veniri consecutive.

Aşadar, pentru a rezolva un model folosind procese de naştere şi deces trebuie


cunoscute intensităţile procesului λn , n ≥ 0, µn , n ≥ 1.
Pe baza acestor intensităţi se calculează probabilităţile
pn , n ≥ 0,
şi apoi elementele necunoscute ale modelului, conform cu formulele precedente.

8.3. Modelul Po(λ)/Exp(µ)/1:(∞,FIFO)

În acest model intrările se fac după repartiţia Poisson


( λ t ) n − λt
P ( N (t ) = n ) = e , n≥0,
n!
iar intervalul de timp dintre două sosiri consecutive are o repartiţie exponenţială de
parametru λ , cum se poate constata uşor.
166 Modele şi algoritmi de optimizare

Serviciile se fac după repartiţia exponenţială, adică durata serviciului ca


variabilă aleatoare are repartiţia exponenţială,
⎧1 − e − µx , pentru x ≥ 0
F ( x) = ⎨ .
⎩0 , pentru x < 0
λ
Raportul ρ = se numeşte intensitate de trafic sau factor de serviciu. El
µ
reprezintă, în medie, numărul de clienţi care vin în perioada unui singur timp de
serviciu.
Dacă ρ > 1, atunci durata serviciului pentru clienţii care îl solicită în unitatea
de timp este mai mică decât unitatea de timp, deci nu se va produce o aglomerare.
Dacă ρ < 1, numărul clienţilor din şirul de aşteptare va creşte necontenit.
Dacă ρ = 1, nu se va produce o coadă imensă – durata serviciilor coincide cu
unitatea de timp, însă evident în anumite momente va fi aglomeraţie.
În modelul precedent λn =λ şi µn = µ , (∀) n ∈ N * . În acest caz, ecuaţiile
Kolmogorov−Feller (8.4) devin, pentru cazul staţionar
⎧λp n −1 − (λ + µ ) p n + µ p n +1 = 0 , (∀) n ≥ 1
⎨ (8.5)
⎩− λ p 0 + µ p1 = 0
Ultima ecuaţie dă
λ
p1 = p0 = ρ ⋅ p0
µ
şi înlocuind în prima, avem
λ p 0 − (λ + µ ) p1 + µ p 2 = 0 ⇒ p 2 = ρ 2 p 0 .
Rezultă prin inducţie că
pn = ρ n p0 .
Dar

n∈N
pn = 1 ⇒ p0 ∑
ρn = 1 ,
n∈N
însă

∑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

[ ]
ρ 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

Aşadar, putem determina:


− numărul mediu de clienţi din sistem la momentul t
ρ
M [N (t )] = ∑ np (t ) = ∑N nρ n −1
(1 − ρ) = (8.7)
1− ρ
n
n∈
− numărul mediu al clienţilor din şirul de aşteptare – lungimea medie a cozii
∞ ∞
ρ2
M [L1 ] = ∑ (n − 1) p n = (1 − ρ )∑ ( n − 1) ρ n = (8.8)
n=2 n=2 1− ρ
− timpul mediu de aşteptare la coadă
ρ
M [WT ] = M [L1 ] =
1
(8.9)
µ (1 − p 0 ) µ (1 − ρ )
− timpul mediu de aşteptare în sistem
M [W ] = M [WT ] + =
1 1
. (8.10)
µ µ (1 − ρ )
Dacă este interesantă probabilitatea ca în sistem să fie mai mult de m persoane
şi dorim ca ea să nu depăşească o anumită valoare ε, atunci
1 − (1 − ρ ) − ρ (1 − ρ ) − ... − ρ m −1 (1 − ρ ) < ε ⇒ ρ m < ε (8.11)
Se pot determina astfel ε şi µ încât să nu existe aglomeraţie.

Propoziţia 8.1. Probabilitatea ca numărul clienţilor din sistem la un moment dat să


fie mai mare ca un număr dat k este
P( N( t ) > k ) = ρ k+1 . (8.12)
Demonstraţie. Calculăm această probabilitate, ţinând seama de notaţiile de mai
înainte, şi avem
∞ ∞
ρ k +1 ‰
P(N (t ) > k ) = ∑ p n (t ) = ∑ ρ n (1 − ρ ) = (1 − ρ ) = ρ k +1 .
n = k +1 n = k +1 1− ρ

Se poate determina probabilitatea ca un client să aştepte la rând un timp


superior unui timp dat t0 .
Deoarece timpul de aşteptare la coadă este o variabilă aleatoare continuă, vom
determina repartiţia complementară a acestei variabile aleatoare, adică P(WT >t0 )
(funcţia de repartiţie F(t0) = P(WT ≤ t0 )).
Determinăm această repartiţie prin intermediul unei probabilităţi elementare de
forma P( t < WT < t + dt ), care reprezintă probabilitatea evenimentului ca timpul
de aşteptare al unui client la coadă să fie cuprins în intervalul (t, t+dt).
Notăm cu Pn( t < WT < t + dt ) probabilitatea ca timpul de aşteptare la coadă
al unui client să fie cuprins în intervalul (t, t+dt) condiţionat de faptul că la sosirea
lui în sistem există deja n > 0 clienţi.

Observaţia 8.2. Dacă n = 0 la sosirea în sistem a clientului, acesta nu aşteaptă şi



intră direct în serviciu. P (t < WT < t + dt ) = ∑ Pn (t < WT < t + dt ) .
n =1
Cum se calculează Pn( t < WT < t + dt ) ?
168 Modele şi algoritmi de optimizare

Fiind o probabilitate condiţionată, se scrie ca un produs de probabilităţi pentru


următoarele trei evenimente:
a) evenimentul ca, la sosire, în sistem să existe n unităţi, Pn(0). Se ia momentul
sosirii clientului ca fiind t = 0 ;
b) evenimentul ca în intervalul de timp t să fie serviţi şi să plece din sistem n−1
clienţi, cu condiţia să fi existat iniţial n clienţi în sistem. Probabilitatea acestui

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,

Pn (t < WT < t + dt ) = Pn (0) ⋅


(µ t )n−1 e − µ t ⋅ µ dt .
(n − 1)!
Sistemul este presupus în regim staţionar şi atunci avem:

P (t < WT < t + dt ) = ∑ ρ (1 − ρ )
n (µ t )n −1 − µ t
e µ dt =
n =1 (n − 1)!

( ρµ t ) n −1
= (1 − ρ ) µ de − µ t ρ ∑ = ρ (1 − ρ ) µ e − µ t (1− ρ ) dt .
n =1 (n − 1 ) !
Aşadar,

∞ e − µ τ (1− ρ )
P (WT > t 0 ) = ∫ ρ (1 − ρ ) µ e − µ τ (1− − ρ ) dτ = ρ (1 − ρ ) µ =
t0 − µ (1 − ρ ) t0
− µ t 0 (1− ρ )
=ρe ,
pentru ρ < 1. Am obţinut P( WT > t0 ) = ρ e − µ t0 (1− ρ ) şi astfel am demonstrat
următoarea propoziţie.

Propoziţia 8.2. Probabilitatea ca un client să aştepte la rând un timp superior unui


timp dat t0 este
P( WT > t0 ) = ρ e − µ t0 (1− ρ ) .

Exemplu. La o bază de aprovizionare sosesc în medie 30 de autobasculante pe oră


pe care trebuie să le încarce un singur excavator. Timpul mediu necesar încărcării
unei autobasculante este de 1 min şi 30 s. Să se stabilească elementele modelului de
aşteptare care rezultă, dacă se consideră că sosirile sunt poissoniene, iar servirile,
exponenţiale. Să se determine probabilitatea ca în sistem să fie 3 sau mai mult de 3
autobasculante.

Rezolvare. Presupunem că prin observaţiile din teren ne situăm în cazul modelului


Po(λ)/Exp(µ)/1:(∞,FIFO) . Pentru acest caz intensitatea intrărilor este λ=30 , iar
8. Elemente de teoria aşteptării 169

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 .

Comentariu. Dacă s-ar pune problema ca în sistem să fie în medie 2 autobasculante în


ρ 2 λ
loc de 3, atunci din relaţia (8.7) obţinem = 2 şi ρ = = . Cum λ=30
1− ρ 3 µ
este o dată exterioară sistemului, trebuie modificată durata medie a serviciilor, şi
anume µ = 45 s . Pentru noile valori ale parametrilor ρ , µ se pot determina
elementele necunoscute ale modelului.

Să rezolvăm modelul pentru valorile iniţiale ale parametrilor λ şi µ cu


pachetul de programe Management Scientist. După lansarea pachetului de
programe selectăm modulul Waiting Lines şi din acesta Poisson Arrivals /
Exponential Service (Figura 2.4). Introducem datele de intrare ca în Figura 8.1.

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

Number of Units in the System Probability


----------------------------- -----------
0 0.2500
1 0.1875
2 0.1406
3 0.1055
4 0.0791
5 0.0593
6 0.0445
7 0.0334
8 0.0250
9 0.0188
10 0.0141
11 0.0106
12 0.0079
13 0.0059
14 0.0045
15 0.0033
16 0.0025
17 OR MORE 0.0075

8.4. Modelul Po(λ)/Exp(µ)/1:(m, FIFO)

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

În cea de-a doua ecuaţie din (8.4) luăm n = 1 şi obţinem


mλ p 0 − [(m − 1)λ + µ ] p1 + µ p 2 = 0 ⇒
λ λ
⇒ mλ p 0 − (m − 1)λ ⋅ m p0 − µ ⋅ m p0 + µ p2 = 0 ⇒
µ µ
2

⎛λ⎞
⇒ 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

Calculul elementelor necunoscute ale modelului


• numărul mediu de clienţi din sistem
n n
m
⎛λ⎞ m m
⎛λ⎞
M [ N (t )] = ∑ np n (t ) = ∑ nA ⎜⎜ ⎟⎟ p 0 = ∑ [m − (m − n)] Amn ⎜⎜ ⎟⎟ p 0 =
n

⎝µ⎠ ⎝µ⎠
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

Dacă µ este numărul mediu de clienţi ce pot fi serviţi pe unitatea de timp,


dacă staţia este ocupată tot timpul, atunci numărul mediu de clienţi serviţi efectiv
într-o unitate de timp este µ ( 1 − p0 ).
• lungimea medie a cozii M[Lc] = M[L1]
M[Lc] = numărul mediu de clienţi în sistem la un moment dat minus numărul
mediu de clienţi ce sunt serviţi la un moment dat =
=M[N( t )] − ( 1 − p0 ) =
µ µ+λ
= m − (1 − p 0 ) − (1 − p 0 ) ⇒ M [ Lc ] = m − (1 − p 0 ) .
λ λ
• timpul mediu de aşteptare la coadă
1 1⎡ m µ +λ⎤
M [WT ] = M [ L1 ] = ⎢ − ⎥ ⇒
µ (1 − p 0 ) µ ⎣1 − p 0 λ ⎦
1⎡ m µ +λ⎤
⇒ M [WT ] = ⎢ − ⎥ ,
µ ⎣1 − p 0 λ ⎦
• timpul mediu de aşteptare în sistem
1 1⎡ m µ⎤ 1⎡ m µ⎤
M [W ] = M [WT ] + = ⎢ − ⎥ ⇒ M [W ] = ⎢ − ⎥ .
µ µ ⎣1 − p 0 λ ⎦ µ ⎣1 − p 0 λ ⎦

Exemplu. O firmă de taximetre are 12 autoturisme şi un singur mecanic de


întreţinere. Ştiindu-se că repartiţia de probabilitate a timpului de funcţionare a unui
autoturism între două defecţiuni este exponenţială cu media de 6 zile, iar repartiţia
timpului necesar reparaţiei defecţiunii este exponenţială cu media 4 ore, să se
determine:
• probabilitatea ca la un moment dat toate autoturismele să funcţioneze,
• timpul mediu de aşteptare a unui autoturism defect până la momentul când
începe să fie reparat,
• timpul mediu de aşteptare a unui autoturism până în momentul în care
părăseşte atelierul de reparaţii,
• numărul mediu de autoturisme la coadă şi
• numărul mediu de autoturisme din atelier.
Se consideră ziua de lucru de 8 ore.

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

reprezintă probabilitatea ca la un moment dat toate autoturismele să funcţioneze.


1 1
+
µ +λ
M [ L1 ] = m − (1 − p 0 ) = 12 − 48 4 (1 − 0.19857) = 1.58141 ,
λ 1
48
1
µ
M [ N (t )] = m − (1 − p 0 ) = 12 − 4 (1 − 0.19857) = 2.38284 ,
λ 1
6⋅8
⎡ 1 1 ⎤
⎢ +
1
M [WT ] = ⎢
⎡ m

µ+λ ⎤
=
1 12
− 4 48 ⎥ = 7.89294 ,
⎥ ⎢ ⎥
µ ⎣1 − p 0 λ ⎦ 1 ⎢1 − 0.19857 1 ⎥
4 ⎣⎢ 48 ⎥⎦
⎡ 1 ⎤
1⎡ m µ⎤ 1 ⎢ 12 ⎥
M [W ] = ⎢ − ⎥= ⎢ − 4 ⎥ = 11.89294 .
µ ⎣1 − p 0 λ ⎦ 1 ⎢1 − 0.19857 1 ⎥
4 ⎢⎣ 48 ⎥⎦

Pentru rezolvarea acestei probleme cu Management Scientist, după lansarea


programului, selectăm Waiting Lines, apoi din meniul File alegem New şi din
fereastra care apare selectăm Poisson Arrivals/Exponential Service (Finite Pop.),
(Figura 2.4). În fereastra care apare introducem datele de intrare
1
λ= = 0.02083 , µ = 0.25
6⋅8
ca în Figura 8.2, apoi selectăm Solve

Figura 8.2

şi rezultatele sunt afişte pe ecran sub următoarea formă (Tabelul 8.2).


174 Modele şi algoritmi de optimizare

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

Number of Units in the System Probability


----------------------------- -----------
0 0.1986
1 0.1986
2 0.1820
3 0.1517
4 0.1137
5 0.0758
6 0.0442
7 0.0221
8 0.0092
9 0.0031
10 0.0008
11 0.0001
12 0.0000

8.5. Modelul Po(λ)/Exp(µ)/c:(∞, FIFO)

Aceste modele generalizează modelele de aşteptare cu o singură staţie de


servire, având c staţii de servire paralele (identice în ceea ce priveşte timpul de
servire).
Fie N( t ) numărul mediu de clienţi din sistem la momentul t . Atunci avem:
• probabilitatea unei veniri în intervalul ( t , t + ∆t ) este λ∆t + O (∆t), iar venirile
sunt independente între ele,
• probabilitatea unei ieşiri dintr-o staţie de servire în intervalul de timp (t , t +
+ ∆t) este µ∆t + O (∆t) ,
• probabilitatea rămânerii unui client în sistem este 1 − µ∆t + O (∆t) ,
• probabilitatea ca n ≤ c clienţi să rămână în staţiile de servire este
( 1 − µ ∆t+ O (∆t) )n = 1 − nµ∆t + O (∆t),
deoarece ieşirile din sistem sunt independente,
• probabilitatea ca în intervalul de timp ( t , t + ∆t ) un client să părăsească sistemul
atunci când n staţii de servire lucrează simultan este nµ ∆t + O(∆t) .
8. Elemente de teoria aşteptării 175

Notăm En evenimentul care constă în prezenţa a n clienţi în sistem şi cu pn(t)


probabilitatea producerii evenimentului En la momentul t.
Vom calcula Pn( t + ∆t ).
a) 0 < n < c . Vom neglija probabilităţile de ordin de mărime mai mic ca O (∆t).
Sunt posibile următoarele situaţii:
1) sistemul se găseşte la momentul t în starea En şi nu au loc nici o venire şi
nici o plecare în/din sistem în intervalul de timp (t, t + ∆t). Probabilitatea
corespunzătoare este
(1 − λ∆t + O (∆t ))(1 − nµ ∆t + O (∆t )) p n (t ) =
= [1 − (λ + nµ )∆t + O (∆t ))] p n (t ) ,
2) sistemul se găseşte la momentul t în starea En−1 şi au loc o venire şi nici
o plecare. Probabilitatea corespunzătoare este
(λ ∆t + O (∆t ) )(1 − µ ∆t ) p n −1 (t ) = λ p n −1 (t )∆t ,
3) sistemul se găseşte la momentul t în starea En+1 şi au loc o ieşire din
sistem şi nici o venire. Probabilitatea corespunzătoare este
(1 − λ ∆t + O (∆t ) )((n + 1) µ ∆t + O (∆t ) ) p n +1 (t ) =
= [(n + 1) µ ∆t + O ( ∆t ))] p n+1 (t ) .
Aşadar,
p n (t + ∆t ) = [1 − (λ + nµ )∆t + O (∆t )] p n (t ) + λ p n −1 (t )∆t +
+ [(n + 1) µ ∆t + O (∆t )] p n +1 (t )
(8.13)

b) n ≥ c . Apar următoarele eventualităţi:


1) sistemul se găseşte la momentul t în starea En şi nu au loc nici o venire şi
nici o plecare în/din sistem în intervalul de timp (t, t + ∆t). Ieşirile nu pot
avea loc decât din cele c staţii ocupate.
Probabilitatea corespunzătoare este
(1 − λ ∆t + O (∆t ) )(1 − cµ ∆t + O (∆t ) ) p n (t ) =
= [1 − (λ + cµ )∆t + O ( ∆t ))] p n (t ) ,
întrucât toţi cei c clienţi din staţiile de servire rămân în sistem (n-au terminat
serviciul).
2) sistemul se găseşte la momentul t în starea En−1 , are loc o intrare în
sistem şi nu se produce nici o ieşire. Probabilitatea corespunzătoare este
(λ ∆t + O (∆t ) )(1 − cµ ∆t + O (∆t ) ) p n −1 (t ) = λ p n −1 (t )∆t .
3) sistemul se găseşte la momentul t în starea En+1 , nu are loc nici o intrare
în sistem, dar are loc o ieşire. Probabilitatea corespunzătoare este
(1 − λ ∆t + O (∆t ) )(cµ ∆t + O (∆t ) ) p n +1 (t ) = cµ p n +1 (t )∆t ,
unde cµ ∆t + O (∆t ) este probabilitatea ca un client să părăsească sistemul atunci
când c staţii lucrează simultan.
Aşadar,
176 Modele şi algoritmi de optimizare

p n (t + ∆t ) = [1 − (λ + cµ )∆t + O (∆t )] p n (t ) + λ p n −1 (t )∆t +


(8.14)
+ cµ p n +1 (t )∆t .

c) n = 0 . Evidenţiem următoarele eventualităţi:


1) sistemul se găseşte la momentul t în starea E0 şi nu au loc nici o venire şi
nici o plecare în/din sistem în intervalul de timp (t, t + ∆t). Probabilitatea
corespunzătoare este ( 1 − λ ∆t + O (∆t ) ) p0 ( t ).
2) sistemul se găseşte la momentul t în starea E1 , are loc o ieşire din sistem
şi nu se produce nici o intrare. Probabilitatea corespunzătoare este
(1 − λ ∆t + O (∆t ) )(µ ∆t + O (∆t ) ) p1 (t ) = [µ ∆t + O (∆t )]p1 (t ) .
Am obţinut
p 0 (t + ∆t ) = [1 − λ ∆t + O (∆t )] p 0 (t ) + [µ ∆t + O (∆t )] p1 (t ) (8.15)

Din relaţiile (8.13), (8.14), (8.15), prin împărţire la ∆t şi ţinând seama de


proprietăţile funcţiilor O (∆t) , trecând la limită (∆t → 0), obţinem ecuaţiile de
stare pentru acest model:
⎧ p 0′ (t ) = −λ p 0 (t ) + µ p1 (t )

⎨ p ′n (t ) = −(λ + nµ ) p n (t ) + λ p n −1 (t ) + (n + 1) µ p n +1 (t ) , 1 ≤ n < c (8.16)
⎪ p ′ (t ) = −(λ + cµ ) p (t ) + λ p (t ) + cµ p (t ) , n≥c .
⎩ n n n −1 n +1

În cazul staţionar p n′ (t ) = 0 , n ≥ 0 , ecuaţiile de stare (8.16) devin


⎧λ p 0 = µ p1

⎨(λ + nµ ) p n = λ p n −1 + (n + 1) µ p n +1 1 ≤ n < c (8.17)
⎪(λ + cµ ) p = λ p + cµ p n ≥ c.
⎩ n n −1 n +1

Pentru rezolvarea sistemului (8.17) vom nota


zn = −λ⋅pn−1 + n⋅µ⋅pn .
Prima ecuaţie din (8.17) devine
z1 = −λ⋅p0 + µ⋅p1 = 0 .
Prelucrăm a doua ecuaţie din (8.17)
−λ⋅pn + ( n + 1)⋅µ⋅pn+1 = −λ⋅pn−1 + n⋅µ⋅pn ,
de unde rezultă că
zn+1 = zj = ... = z1 = 0 .
n
λ λ 1 1 ⎛λ⎞ 1 λ
p1 = p 0 ; p n = ⋅ p n −1 ⇒ p n = ⎜⎜ ⎟⎟ p 0 = ρ n p 0 ; ρ = .
µ µ n n! ⎝ µ ⎠ n! µ
Astfel,
1 n
ρ p0 , 1 ≤ n < c .
pn =
n!
Din ultima ecuaţie a sistemului (8.17) rezultă că
−λ⋅pn + c⋅µ⋅pn+1 = −λ⋅pn−1 + c⋅µ⋅pn .
De unde
8. Elemente de teoria aşteptării 177

zn = zn+1 , iar zc = −λ⋅pc−1 + c⋅µ⋅pc = 0.


Astfel
1 λ 1 ρc ρc
pc = ⋅ p c −1 = ⋅ p0 = p0 .
c µ c (c − 1)! c!
Aşadar,
⎛ρ⎞ ρ
c k

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⎠

Calculul elementelor necunoscute ale modelului


• lungimea medie a cozii

M [ Lc ] = 0 ⋅ [ p 0 (t ) + ... + p c (t )] + ∑ kp c + k (t ) .
k =1

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

= p 0 ⎜⎜ ⎟⎟ ⎢1 + 2⎜⎜ ⎟⎟ + 3⎜⎜ ⎟⎟ ...⎥ .


c! ⎝ cµ ⎠ ⎢⎣ ⎝ cµ ⎠ ⎝ µc ⎠ ⎥⎦
Se ştie că

1
k =1
∑ kx k −1

(1 − x) 2
=
, x <1.

Aplicând în relaţia de mai sus, obţinem


c +1
cc ⎛ λ ⎞ 1
M [ Lc ] = p 0 ⎜⎜ ⎟⎟ ,
c! ⎝ cµ ⎠ ⎛ λ ⎞
2

⎜⎜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

Exemplu. La o spălătorie auto se prezintă în medie 6 autoturisme pe oră. Un


lucător foloseşte pentru spălatul unui autoturism în medie 15 minute. Să se
determine elementele sistemului pentru cazurile în care se folosesc 2 şi respectiv
3 lucrători.

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 .

Concluzie. Din punctul de vedere al clienţilor, serviciul la spălătorie este mult


mai atractiv cu 3 lucrători, deoarece numărul mediu al autoturismelor care stau la
rând în acest caz este 0.23 şi aşteaptă în medie doar 2 min şi 22 s, faţă de cazul în
care ar fi doar 2 lucrători şi ar aştepta în medie 19 min şi 17 s. În cazul b) 21%
dintre solicitanţi au şansa să nu stea la rând.

Apelăm Management Scientist pentru rezolvarea acestui model. După lansarea


pachetului de programe, selectăm modulul Waiting Lines, apoi modelul Poisson
Arrivals / Exponential Service. Introducem datele de intrare pentru cazul cu 2
lucrători în fereastra corespunzătoare modelului selectat (Figura 8.3).

Figura 8.3

Selectând Solve se obţin rezultatele prezentate în Tabelul 8.3.


Analog se rezolvă şi cazul cu c=3.

8.6. Modelul P0(λ)/Exp(µ)/c:(m,FIFO)

Acest model reprezintă cazul sistemului de aşteptare cu sosiri poissoniene,


servicii exponenţiale, mai multe staţii de servire în paralel (identice în ceea ce
priveşte timpul de servire), număr limitat de clienţi, m, şi disciplina de servire FIFO.
8. Elemente de teoria aşteptării 181

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

Pentru prezentarea modelului (schematizat în Figura 8.4) vom considera următorul


exemplu.
La o balastieră vin m autobasculante pentru a fi încărcate de c excavatoare.
Autobasculantele formează o singură coadă şi sunt încărcate după metoda FIFO.
S-a observat că venirile autobasculantelor la coadă sunt repartizate P0(λ) , iar
timpii de încărcare sunt repartizaţi după legea Exp(µ).

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

Determinarea ecuaţiilor de stare


Notăm En evenimentul care constă în prezenţa a n autobasculante la
balastieră, iar pn( t ) probabilitatea producerii evenimentului En la momentul t .
Dacă n ≤ c , nu există coadă de aşteptare.
Dacă n> c , se formează coadă de aşteptare.
Fie Pn( t + ∆t ) probabilitatea ca la momentul t + ∆t să fie n autobasculante
la balastieră. La intervalul de timp t + ∆t pot avea loc următoarele situaţii:
1) sistemul este în starea En , nu vine şi nu pleacă nici o autobasculantă.
Probabilitatea corespunzătoare este:
(1 − nµ ∆t + O (∆t ) )(1 − (m − n)λ ∆t + O (∆t ) ) ,
dacă 1 ≤ n < c , sau
(1 − cµ ∆t + O (∆t ) )(1 − (m − n)λ ∆t + O (∆t ) ) ,
dacă n ≥ c .
2) sistemul se află în starea En+1 , nu are loc nici o venire, dar are loc o plecare în
intervalul de timp ( t , t + ∆t ). Probabilitatea corespunzătoare este
[(n + 1) µ ∆t + O (∆t )] ⋅ [1 − (m − n)λ ∆t + O (∆t )] = (n + 1) µ ∆t + O (∆t ) ,
dacă 1 ≤ n < c , sau
[1 − (m − n)λ ∆t + O (∆t )] ⋅ [cµ ∆t + O (∆t )] = cµ ∆t + O (∆t ) ,
dacă n ≥ c .
3) sistemul se află în starea En−1 şi au loc o venire şi nici o plecare în intervalul de
timp ( t , t + ∆t ). Probabilitatea corespunzătoare este:
[(m − n + 1)λ ∆t + O (∆t )] ⋅ [1 − (m − n) µ ∆t + O (∆t )] =
= (m − n + 1)λ ∆t + O (∆t ) ,
dacă 1 ≤ n < c , sau
[(m − n + 1)λ ∆t + O (∆t )] ⋅ [1 − cµ ∆t + O (∆t )] = (m − n + 1)λ ∆t + O (∆t ) ,
dacă n ≥ c .
Aşadar,
a) pentru n < c , avem:
p n (t + ∆t ) = {1 − [nµ + ( m − n)λ ]∆t + O ( ∆t )}p n (t ) +
+ [(n + 1) µ ∆t + O (∆t )] p n +1 (t ) +
+ [(m − n + 1)λ ∆t + O (∆t )] p n −1 (t )
b) pentru n ≥ c , avem
p n (t + ∆t ) = {1 − [cµ + (m − n)λ ]∆t + O ( ∆t )}p n (t ) +
+ [cµ ∆t + O (∆t )] p n +1 (t ) + [( m − n + 1)λ ∆t + O (∆t )] p n −1 (t )
c) pentru n = 0 , avem
p 0 (t + ∆t ) = [1 − λ ∆t + O (∆t )] p 0 (t ) +
+ [1 − λ ∆t + O (∆t )](µ ∆t + O (∆t ) ) p1 (t )
= [1 − mλ ∆t + O (∆t )] p 0 (t ) + [µ ∆t + O ( ∆t )] p1 (t )
8. Elemente de teoria aşteptării 183

Relaţiile a), b), c) le împărţim la ∆t , ţinem seama de proprietăţile funcţiilor


O ( ∆t ) când se trece la limită pentru ∆t → 0 , şi se obţin ecuaţiile de stare ale
modelului
⎧ p 0′ (t ) = µ p1 (t ) − mλ p 0 (t )
⎪ p ′ (t ) = −[nµ + (m − n)λ ] p (t ) + (n + 1) µ p (t ) + λ (m − n + 1) p (t )
⎪⎪ n n n +1 n −1

⎨ 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

deoarece pm+1( t ) = 0 , sistemul neputând avea mai mult de m autobasculante la


un moment dat.
Pentru rezolvarea sistemului, aplicăm aceeaşi metodă ca la modelul din § 8.5
şi, prin inducţie, avem
⎧C mn ρ n p 0 , n<c
⎪ c
pn = ⎨ c n⎛ ρ ⎞
n

⎪ 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

Calculul elementelor necunoscute ale modelului


După calcule laborioase se obţin pentru elementele necunoscute ale modelului
următoarele relaţii:
• numărul mediu de clienţi din sistem
⎡ cρ + c − mρ c−1 n n cρ c −1C mc ⎤ mρ − c
M [ N (t )] = p 0 ⎢ ∑ Cm ρ + 1 + ρ ⎥ + ρ
⎣ ρ (1 + ρ ) n=0 ⎦
• numărul mediu de clienţi de la coadă
⎡ c ⎤ ⎡ c −1

M [ Lc ] = ⎢m − − c ⎥ ⋅ ⎢1 − p 0 ∑ C mn ρ n ⎥ + cρ c−1C mc p 0
⎣ ρ ⎦ ⎣ n =0 ⎦
• numărul mediu de staţii în lucru
184 Modele şi algoritmi de optimizare

M[ns] = M[N(t)] − M[Lc]


• timpul mediu de aşteptare la coadă
M [ Lc ]
M [WT ] =
µ M [n s ]
• timpul mediu de aşteptare în sistem
1
M [W ] = M [WT ] + .
µ

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 ⎠

⎡ 2 ⋅ 0.075 + 2 − 20 ⋅ 0.075 1 n 2(0.075)1 C 202 ⎤


M [N (t )] = p 0 ⎢
0.075 ⋅ 1.075
∑ C 20 ( 0 .075) n
+ ⎥+
⎣ n =0 1.075 ⎦
20 ⋅ 0.075 − 2
+ = 2.08595
0.075
⎡ 2 ⎤ ⎡ 1

M [ L2 ] = ⎢20 − − 2⎥ ⋅ ⎢1 − p 0 ∑ C 20 n
(0.075) n ⎥ + + 2(0.075)1 C 20 2
p0 = 0.74239
⎣ 0.075 ⎦ ⎣ n =0 ⎦
M [n s ] = M [ N (t )] − M [ L2 ] = 1.34355
M [L2 ]
M [WT ] = = 0.13814 = 8 min 17 s
4 ⋅ M [ ns ]
1
M [W ] = M [WT ] + = 0.38814 = 23 min 17 s .
4

Rezolvăm modelul de mai sus şi cu Management Scientist. După lansarea


pachetului de programe selectăm modulul Waiting Lines, apoi modelul Poisson
Arrivals/Exponential Service (Finite Pop.) şi introducem datele ca în Figura 8.5.
După apăsarea butonului Solve obţinem rezultatele din Tabelul 8.4 care coincid
cu cele determinate anterior.
8. Elemente de teoria aşteptării 185

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

Modelele matematice corespunzătoare sistemelor reale sunt folosite pentru a


analiza rezultatele deciziilor înainte de implementare. Simularea nu determină
soluţia optimă a modelului matematic, ci compară rezultatele mai multor alternative
predefinite cu scopul de a o reţine pe cea mai avantajoasă. Modelul de simulare
urmăreşte evoluţia în timp a sistemului real şi ţine seamă şi de factorul aleatoriu. În
situaţia în care modelul matematic poate fi rezolvat analitic, această metodă este
preferabilă simulării, deoarece se obţine soluţia optimă. Simularea se foloseşte în
186 Modele şi algoritmi de optimizare

cazurile în care rezolvarea analitică a modelului matematic este imposibilă sau


destul de dificilă.

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

Vom considera comportarea sistemului de aşteptare pe o perioadă de 30 zile.


Pentru că simularea începe fără vagoane la descărcare, este necesară o perioadă de
8. Elemente de teoria aşteptării 187

iniţializare (o considerăm de 5 zile) pentru ca sistemul să se apropie de o situaţie


normală. Au fost generate 35 de numere, care sunt trecute în Tabelul 8.7, împreună
cu rezultatele simulării.

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

Observăm că a fost descărcat şi un vagon în plus faţă de cele sosite în cele 30


de zile care constituie perioada de simulare, deoarece atunci când începem
simularea pentru 30 de zile mai era un vagon de descărcat. Cunoscând care este
penalizarea pentru amânarea descărcării unui vagon, se poate calcula pierderea
cauzată pe perioada simulată. Se pot reface calculele pentru o capacitate de
descărcare sporită, de exemplu 3 vagoane pe zi, şi se compară pierderea cauzată de
vagoanele amânate, putând decide care este cea mai avantajoasă configuraţie
pentru acest sistem de aşteptare.
Rolul simulării manuale este de a înţelege în ce constă simularea unui model de
aşteptare, urmând ca pentru un eşantion mare să se folosească simularea cu
calculatorul. Există multe pachete de programe specializate în simulare, de
exemplu SIMUL8 care are o interfaţă grafică atrăgătoare şi se pot realiza destul de
comod simulări pentru modele de aşteptare. Se poate folosi şi EXCEL pentru
realizarea simulării modelelor de aşteptare sau de stocuri.

8.8. Probleme propuse

1. La un magazin de decoraţiuni interioare sosesc în medie 80 de clienţi pe oră, iar


solicitările unui client sunt satisfăcute în medie într-un minut şi jumătate.
Analizând statistic datele culese la acest sistem de aşteptare, s-a constatat că
sosirile clienţilor sunt poissoniene, iar serviciile, exponenţiale. Să se determine:
a) intervalul mediu dintre două sosiri consecutive
b) numărul mediu de persoane servite pe oră
c) probabilitatea ca într-un interval de 3 minute să nu soseacă nici un client
d) numărul vânzătorilor necesari pentru a se evita algomerarea.

R. Se consideră unitatea de timp minutul şi atunci, numărul mediu de sosiri într-un


80
minut este λ = = 1.333 .
60
1 60
a) Intervalul mediu dintre două sosiri consecutive este de = = 0.75 minute.
λ 80
60
b) Numărul mediu de persoane ce pot fi servite pe oră este de µ = = 40 .
1 .5
(λt ) n (3 ⋅ 0.75) 0
c) Deoarece Pn (t ) = e −λt , rezultă că P0 (3) = e −3⋅0.75 = 0.1054 .
n! 0!
d) Dacă sistemul de aşteptare are o singură staţie de servire (un singur vânzător),
λ 80
ρ= = = 2 > 1 şi se creează aglomeraţie. Considerând sistemul cu mai multe
µ 40
ρ
staţii ρ~ = <1 şi alegem c ca fiind cel mai mic întreg pentru care este
c
8. Elemente de teoria aşteptării 189

satisfăcută această inegalitate. Obţinem c=2. Ca să nu se creeze aglomeraţie, este


nevoie de 2 vânzători.

2. La ieşirea dintr-o staţie de betoane, sosesc pentru a li se spăla roţile în medie 15


autobasculante pe oră. Dacă repartiţia sosirii autobasculantelor pentru a li se spăla
roţile este poissoniană, să se determine timpul maxim în care, cu probabilitatea de
cel puţin 0.95, cel mult 3 autobasculante aşteaptă să li se spele roţile.

R. În următoarea secvenţă MathCAD, care rezolvă această problemă, se consideră


unitatea de timp minutul.
15
Media sosirilor λ :=
60
Probabilitatea ca innumărul zilelor
intervalul lucrătoare
de timp din an n autobasculante
t sa soseasca

− λ ⋅ t ( λ⋅ t )
n 3
P( n , t) := e
n!
f( t) := ∑ P( n , t)
n =0

f(0)=1 f(1)=0.99987 f(2)=0.99825 f(3)=0.99271

f(4)=0.98101 f(5)=0.96173 f(6)=0.934

În maximum 5 minute, cu probabilitatea 0.95, cel mult 3 autobasculante vor


aştepta să li se spele roţile.

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

b) Să se testeze că timpii de servire sunt repartizaţi exponenţial.


c) Să se determine numărul mediu de bene din sistemul de aşteptare care este dat de
staţia de betoane.
d) Să se determine numărul mediu de bene care aşteaptă să fie încărcate.
e) Să se determine timpul mediu de aşteptare la rând pentru a fi încărcate benele.
f) Să se determine timpul mediu petrecut de o benă în sistemul de aşteptare dat de
staţia de betoane.
g) Să se determine numărul punctelor de încărcare necesare pentru a evita
aglomerarea în perioada de vârf.

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

intervalului de referinţă). Atunci µ = 0.05128 . Calculăm funcţia de repartiţie


i

∑N
j =1
j
−0.05128 t i
teoretică Fi = 1 − e , funcţia de repartiţie empirică Fei = 24
,
∑N
j =1
j

(∀) i = 1,24 şi determinăm d = max Fi − Fei = 0.0283 . Pentru pragul de


1≤i ≤ 24

semnificaţie α = 0.01 , în tabela funcţiei K (u ) (testul asimptotic al lui


u
Kolmogorov) găsim u=1.63 . Deoarece d < = 0.33272 se admite ipoteza H0
23
cu pragul de semnificaţie α = 0.01 ;
c) Numărul benelor servite într-o oră 60 ⋅ 0.5128 = 3.0768 . Suntem în cazul
modelului Po(2.45)/Exp(3.07)/1:(∞,FIFO) şi atunci M[N(t)]=3.9;
8. Elemente de teoria aşteptării 191

d) M[L1]=3.11 ; e) M[WT]=3.7 min ; f) M[W]=23.24 min ;


λ 2.45
g) ρ = = < 1 şi astfel este suficient un singur punct de încărcare.
µ 3.07

4. La o carieră, care are un singur utilaj de încărcare a autobasculantelor, sosesc în


medie 15 autobasculante pe oră. În medie, utilajul poate să încarce 20
autobasculante pe oră. Din analiza statistică a datelor culese la faţă locului s-a
constatat că sosirile sunt poissoniene, iar servirile, exponenţiale. Să se determine:
a) probabilitatea ca o autobasculantă să nu aştepte pentru a fi încărcată
b) numărul mediu de autobasculante din sistemul de aşteptare creat la carieră
c) numărul mediu de autobasculante din şirul de aşteptare
d) timpul mediu de aşteptare al unei autobasculante în sistemul de aşteptare
e) timpul mediu de aşteptare al unei autobasculante în şirul de aşteptare pentru a fi
încărcată
f) probabilitatea ca în sistemul de aşteptare să existe mai mult de 2 autobasculante
g) probabilitatea ca autobasculanta să aştepte la rând să fie încărcată mai mult de
două minute.

R. Se consideră unitatea de timp minutul. Modelul corespunzător acestei probleme


3
este Po(λ)/Exp(µ)/1:(∞,FIFO) cu λ=10, µ=20 şi ρ = .
4
a) p0=0.25, b) M[N(t)]=3, c) M[L1]=2.25, d) M[WT]=0.15 min, e) M[W]=0.2 min,
f) P(N(t)>2)=1-p0-p1-p2=1-0.25-0.1875-0.1406=0.4219,
g) P(M[WT]>2)=0.0067 (extrem de rar se întâmplă ca autobasculanta să aştepte
mai mult de 2 minute la rând pentru a fi încărcată!).

5. La o cantină a unei firme de construcţii, cu autoservire, cu un singur ghişeu,


sosesc salariaţii la masă după legea Poisson cu rata 0.75 salariat/minut. Un
funcţionar ia comanda, stabileşte preţul şi încasează contravaloarea comenzii. Până
i se pregăteşte meniul, funcţionarul ia comanda următorului client aşezat la rând.
S-a constatat că timpul mediu de servire este de 1 min/salariat. Se apreciază că în
medie cei ce aşteaptă să ia masa sunt plătiţi cu 10 u.m./oră, iar funcţionarul de la
ghiseu cu 7 u.m./oră. Conducerea firmei este interesată să cunoască:
a) probabilitatea ca nici un salariat să nu fie în cantină,
b) numărul mediu de salariaţi aşteptând să dea comanda,
c) timpul mediu petrecut la rând de un salariat, aşteptând să dea comanda,
d) probabilitatea ca un salariat care vine în cantină să aştepte să dea comanda şi
e) costul orar al serviciului în cantină.

R. a) p0=0.25 , b) 2.25 , c) 3min , d) 0.75 , e) 37 u.m.

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

minute pentru spălarea unui autoturism şi probabilitatea de aşteptare pentru spălare să


nu depăşească 0.2, câţi muncitori pentru spălarea autoturismelor ar trebui angajaţi?

R. Trebuie ca P(N[t]>c)<0.2 , adică 1 − P ( N [t ] ≤ c) < 0.2 . Deoarece λ = 3 şi


60 λ
µ= = 3 , atunci ρ = = 1 şi astfel sunt necesari cel puţin 2 muncitori, c=2.
20 µ
Este cazul modelului Po(λ)/Exp(µ)/c:( ∞, FIFO). Luând pentru început c=2,
obţinem P(N[t]>c)=1–(p0+p1)=1–(0.3333+0.3333+1.6667)=0.1666<0.2
Aşadar, ar trebui angajaţi 2 muncitori.

7. La o secţie de poliţie de constatări accidente uşoare sosesc în medie 15


automobile pe oră, repartiţia sosirilor fiind poissoniană. Într-o oră, un poliţist
constatator întocmeşte actele pentru 6 automobile, iar timpul necesar acestei
operaţii este repartizat exponenţial. Secţia are rezervate 5 locuri de parcare, iar dacă
sunt ocupate aceste locuri, celelalte automobile parchează în alte locuri din
vecinătate. Să se determine:
a) numărul poliţiştilor necesari pentru a se evita supraaglomerarea
b) probabilitatea ca la secţie să nu fie automobile pentru constatare
c) probabilitatea ca să fie automobile parcate în alte locuri decât cele ale secţiei
d) numărul mediu de automobile care aşteaptă începerea întocmirii actelor
e) timpul mediu de aşteptare la rând până când un poliţist vine să înceapă constatarea.

λ 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

= 1 − (0.0449 + 0.1124 + 0.1404 + 0.1170 + 0.0975 + 0.0813) = 0.4065


d) M[L3]=3.5112 automobile ; e) M[WT]=14 minute .

8. Un depozit închiriază de la o firmă de transporturi 4 camioane pentru a se


aproviziona sau pentru a transporta marfa la clienţi. Depozitul are 2 rampe de
încărcare/descărcare care încarcă/descarcă un camion în medie în 20 minute. La
depozit sosesc în medie 4 camioane pe oră. S-a constatat că intervalele dintre sosiri
şi timpii de încărcare au repartiţia exponenţială. Să se determine:
a) probabilitatea ca ambele rampe să fie libere
b) numărul mediu de camioane de la depozit
c) probabilitatea ca un camion care vine la depozit să aştepte intrarea la rampă
8. Elemente de teoria aşteptării 193

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?

R. a) p0=0.0246 , b) M[N(t)]=2.6351 , c) P(M[N(t)]>2)=1-(p0+p1+p2)=0.5823 ,


d) S = M [WT ] ⋅ 20 = 2.986 u.m.

9. La o dană din port, proprietatea unei companii petroliere, sosesc pentru


descărcare tancuri petroliere la intervale de timp repartizate exponenţial, cu media
1.4 zile. Timpul mediu necesar descărcării este de asemenea presupus repartizat
exponenţial, cu media 0.8 zile. Să se determine:
a) numărul mediu de tancuri petroliere care aşteaptă la rând pentru descărcare
b) timpul mediu de aşteptare în port înainte de a începe descărcarea
c) timpul mediu de aşteptare în port din momentul sosirii şi până la plecarea
tancului petrolier
d) dacă se închiriază o dană cu 1500 u.m./zi, la care se lucrează la fel ca la prima şi
dacă tancurile petroliere se duc la dana liberă pentru descărcare, în ordinea sosirii
lor, care este timpul mediu de aşteptare până la începerea descărcării
e) în condiţiile de la d) care este numărul mediu de tancuri petroliere care aşteaptă
la rând pentru descărcare
f) este avantajoasă închirierea celei de-a doua dane dacă pentru fiecare zi pe care
tancul petrolier o petrece la rând aşteptând pentru descărcare compania pierde 4000
u.m. ?

R. a) M[L1]=7.4098 ; b) M[WT]=10.3779 ; c) M[W]=11.6279 ;


d) M[WT]=0.3108 ; e) M[L2]=0.2219 ;
f) Pierderea pentru primul caz 4000 ⋅ M [ L1 ] = 41511.6 , iar pentru cel de-al doilea
caz 4000 ⋅ M [ L2 ] + 1500 = 2387.6 . Da.

10. O firmă are 30 de instalaţii de aer condiţionat şi frigidere şi pentru întreţinerea


lor a angajat 2 specialişti. Ştiind că solicitările pentru intervenţii sosesc în medie
una pe zi şi sunt repartizate Poisson, iar un specialist reuşeşte să depaneze un aparat
(aer condiţionat sau frigider) în medie în 20 minute, timpul necesar depanării fiind
repartizat exponenţial, să se determine:
a) numărul mediu de aparate care aşteaptă să fie depanate
b) numărul mediu de aparate care nu funcţionează la un moment dat
c) probabilitatea ca să nu aibă de lucru cei doi specialişti
d) timpul mediu de aşteptare până când un specialist începe depanarea unui aparat
e) timpul mediu de nefuncţionare a unui aparat

R. a) M[L2]=0.5037 , b) M[N(t)]=1.6836 , c) p0=0.2524 , d) 8 min 32 s ,


e) 28 min 32 s .
9. ELEMENTE DE TEORIA STOCURILOR

9.1. Introducere în teoria stocurilor

9.1.1. Punerea problemei

În desfăşurarea unei activităţi de producţie intervin valori materiale care intră


în procesul de prelucrare (materii prime, fonduri băneşti etc.) şi valori care rezultă
în urma acestui proces (produse finite).
Pentru ca procesul de producţie într-o întreprindere să se desfăşoare
neîntrerupt, este necesar ca întreprinderea să dispună de un stoc de materiale care
să poată alimenta în mod sistematic producţia.
Există astfel o cerere din stocul de materiale care vine din partea producţiei.
Întreprinderea trebuie să investească o sumă de bani în aceste materiale pentru a fi
capabilă să satisfacă necesităţile procesului de producţie.
Imobilizarea unor sume mari de bani în stocurile de materiale poate să conducă
la pierderi pentru întreprindere.
Pe de altă parte, dacă investiţia în stocul de materiale va fi mică, adică, stocul
este subdimensionat, vor exista perioade când procesul de producţie încetează şi
întreprinderea înregistrează din nou pierderi datorate nefolosirii maşinilor şi
utilajelor în procesul de producţie.
Apare astfel necesitatea dimensionării optime a stocurilor de materii prime şi
materiale astfel încât costurile care rezultă din imobilizarea fondurilor sau
neutilizarea resurselor să fie minime.
Problemele care constau în dimensionarea optimă a stocurilor de materii prime
şi materiale se numesc probleme de stoc aprovizionare.

Produsele rezultate din procesul de producţie sunt cerute în afara întreprinderii


în diferite cantităţi care variază în timp.
Pentru ca întreprinderea să poată asigura întotdeauna satisfacerea cererii pe un
interval de timp dat, este necesar să se realizeze un stoc de produse rezultate în
urma procesului de producţie. Dacă întreprinderea menţine un stoc prea mare de
produse, poate apărea o pierdere, constând din imobilizarea fondurilor băneşti
investite în aceste produse, precum şi în eventuala depreciere a produselor sau
recondiţionarea lor periodică. Dacă stocul nu ar putea să satisfacă cererea
înregistrată de întreprindere pe o perioadă de timp, ar apărea din nou pierderi
datorate penalizărilor plătite, pentru nesatisfacerea comenzilor.
9. Elemente de teoria stocurilor 195

Se pune din nou problema dimensionării optime a stocului astfel încât


pierderile datorate imobilizării valorilor în stoc, precum şi pierderile rezultate din
nesatisfacerea cererilor (penalizările) să fie minime.
Problemele care constau în dimensionarea optimă a stocului de produse rezultate
din procesul de producţie se numesc probleme de stoc producţie (Văduva et al, II,
1974).

9.1.2. Concepte utilizate în teoria stocurilor

Rezolvarea problemelor legate de determinarea stocurilor optime se face cu


ajutorul unor modele matematice ale teoriei stocurilor.
Stocul sau inventarul este o resursă de orice fel care are o valoare economică şi
care se caracterizează prin intrări în resursă (reaprovizionarea stocului) şi ieşiri din
resursă.
Valoarea resursei I = I (t) este o funcţie de timp. Scopul menţinerii unui stoc
este acela de a satisface o cerere. În urma satisfacerii cererii stocul se micşorează şi,
de aici, nevoia reaprovizionării lui.
Fie a(t), rata intrărilor în resursă la momentul t şi b(t), rata ieşirilor din
resursă, iar r(t), rata cererii la momentul t.
Cererea nu se confundă întotdeauna cu ieşirea, deoarece există situaţii în care
materialele din stoc se depreciază în timp şi atunci la ieşirea din stoc la cerere se
adaugă şi materialele depreciate în acel interval de timp. De cele mai multe ori însă
b(t) = r(t) .
Fie I(0) = I0, nivelul stocului la momentul t = 0, considerat momentul iniţial
de la care se urmăreşte evoluţia stocului.
Variaţia stocului este dată de relaţia
t
I (t ) = I 0 + ∫ (a (t ) − b(t ) )dt .
0
Ieşirile din stoc, b(t), şi/sau cererea, r(t), pot fi deterministe sau aleatoare, iar
funcţia a(t) trebuie aleasă astfel încât să se realizeze un obiectiv sau o eficienţă dorită.
Eficienţa se defineşte în funcţie de costuri şi acestea pot fi:
• costul de depozitare, ce rezultă din imobilizarea fondurilor băneşti în materii
prime sau produse (cheltuieli de producţie) şi din cheltuielile pentru asigurarea
depozitării şi conservării stocului,
• costul de lansare, care rezultă din cheltuielile pentru lansarea comenzilor de
reaprovizionare şi introducerea lor în stoc sau lansarea fabricaţiei,
• costul lipsei de stoc, care se determină în funcţie de toate cheltuielile şi
pierderile cauzate de lipsa din stoc a materiilor prime sau produselor (inclusiv
penalizările rezultate din nelivrarea la timp a produselor fabricate).

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

C(t) = C[a(t), b(t), r(t)].


În general, r(t) este o funcţie cunoscută şi uneori se cunoaşte şi funcţia b(t).
În acest caz, trebuie determinată funcţia a(t) astfel încât eficienţa să fie optimă.
Dacă C este o variabilă aleatoare, atunci se determină funcţiile necunoscute
din condiţia ca valoarea medie a lui C să fie optimă. Pentru determinarea
optimului lui C pot să intervină uneori şi anumite restricţii legate de elementele
necunoscute.

În modelele de teoria stocurilor intervin şi variabile sau parametri legate în


special de mecanismul reaprovizionării, adică de mecanismul intrărilor în stoc. Din
motive practice, se presupune că intrarea în stoc, reaprovizionarea, se face la
momente discrete de timp. Astfel, a(t) ia valori nenule numai la anumite momente
de timp t0 < t1 < t2 < ... .
Intervalele de timp Ti = ti+1 − ti, i = 0, 1, 2, ..., se numesc cicluri de
reaprovizionare. Într-un interval de timp [0,T*] pot avea loc mai multe
reaprovizionări.

I(t)

a(t1) a(t2) a(t3)

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

Astfel, lotul de reaprovizionare optim nu intră în stoc în momentul când a fost


lansat, ci după un interval de timp L, numit timp de avans.
Comanda a(t1) a fost lansată la momentul t1 − L, când stocul avea valoarea
P0 = I(t1 − L).
Mărimea P0 se numeşte nivel de reaprovizionare şi se observă că ea este
strâns legată de timpul de avans L, în sensul că stocul P0 poate satisface cererea
pe perioada timpului de avans L.
În unele modele, L este presupus variabilă aleatoare, iar P0 este constant sau
variabil. Mărimile L şi P0 pot fi presupuse cunoscute sau pot fi variabile de
decizie, care trebuie alese de decident în vederea realizării eficienţei optime. De
obicei se cunoaşte una dintre aceste mărimi, cealaltă urmând a fi determinată cu
ajutorul modelului de stocare.
Intervalul de control este intervalul de timp dintre două lansări de comenzi
succesive.
Momentul lansării comenzii este momentul când nivelul stocului scade la
nivelul de reaprovizionare P0. Uneori, drept variabilă de decizie se consideră şi
nivelul S până la care trebuie încărcat stocul prin introducerea comenzii (nivelul
maxim al stocului).

Totalitatea elementelor care definesc mecanismul de reaprovizionare formează


o politică de reaprovizionare. Aceasta constă din:
• loturile de reaprovizionare,
• ciclurile de reaprovizionare,
• nivelul de reaprovizionare,
• timpul de avans.
Politica este optimă dacă elementele ce o caracterizează au fost determinate ca
elemente ce realizează eficienţa optimă pe un interval de timp dat.

Modelele de teoria stocurilor se pot clasifica după mai multe criterii.


1. După modul cum evoluează în timp
− modele dinamice,
− modele statice.
2. După natura aleatoare sau nu a elementelor sale
− modele stochastice,
− modele deterministe.
3. După valorile posibile ale unor variabile (de exemplu, cererea)
− modele cu cerere continuă,
− modele cu cerere discretă.
4. După numărul de stocuri de materiale distincte (se mai numesc şi staţii) –
criteriu topologic
− modele de stocare cu o singură staţie – stocarea unui singur tip de material,
produs etc.,
− modele de stocare cu mai multe staţii – stocarea mai multor tipuri de
materiale, produse etc.
198 Modele şi algoritmi de optimizare

Modelele de teoria stocurilor se aseamănă cu cele de teoria cozilor. Sosirile din


cadrul teoriei aşteptării corespund intrărilor în stoc, iar ieşirile corespund ieşirilor
din stoc.
Deosebirea dintre cele două tipuri de modele constă în aceea că, în timp ce în
teoria aşteptării se presupune că venirile şi serviciile sunt variabile aleatoare
cunoscute, în teoria stocurilor se cunoaşte numai cererea sau ieşirea şi se caută să
se determine intrarea optimă.
Aplicarea modelelor de teoria aşteptării în teoria stocurilor este posibilă numai
atunci când variabila I(t) este o variabilă discretă.

Pentru modelele ce vor fi prezentate în continuare se fac următoarele ipoteze.


1. Ipoteze referitoare la mecanismul de intrare/ieşire
a) Cererea este continuă, are rata r=const. şi poate fi satisfăcută dacă nivelul
curent al stocului I(t) > 0.
b) Intrările se realizează la intervale de timp T, constante sau nu. Între
lansarea comenzii şi sosirea ei (nu) există un interval L de timp, timpul
de avans.
c) Momentul lansării unei noi comenzi este semnalat de nivelul critic P0,
nivel de reaprovizionare.
d) În perioada T intră o cantitate a cu rata constantă p – ritmul de
reaprovizionare.
e) Parametrii P0, a, T sunt constanţi (modele statice).
f) Procesul de reaprovizionare continuă nedefinit.
2. Ipoteze privind costurile, pe baza cărora se poate defini eficienţa
a) Costul s de lansare a comenzii este constant.
b) Preţul ca de cumpărare a unei unităţi de materie primă sau produs poate
depinde de a.
c) Pentru I(t) > 0, există un cost de stocare, h, pentru unitatea de produs /
unitatea de timp.
d) Pentru I(t) < 0, există un cost al lipsei de stoc, d, pentru unitatea de
produs / unitatea de timp.

Problemele generale care se pun şi trebuie rezolvate de modelele de stocuri


sunt:
• determinarea valorilor optime pentru a şi T astfel încât costul total unitar pe
unitatea de timp să fie optim,
• determinarea nivelului de reaprovizionare P0 astfel încât costul total unitar pe
unitatea de timp să fie optim,
• nivelul maxim al stocului,
• nivelul mediu al stocului,
• numărul optim de cereri de reaprovizionare a stocului într-un an.
9. Elemente de teoria stocurilor 199

9.2. Modelul clasic al lotului economic

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.

Construcţia modelului (determinarea funcţiei obiectiv)

Figura 9.2 ilustrează comportarea stocului pe durata unui ciclu de reaprovizionare.


a
Din ipotezele modelului rezultă că funcţia I(t) este periodică cu perioada T = .
r
⎛ a ⎞
Este suficient să rezolvăm problema de optim pe intervalul ⎜ 0, ⎟ .
⎝ r ⎠
a ⎛ a⎞
Întreaga cantitate a va intra în stoc până la momentul , şi în intervalul ⎜⎜ 0, ⎟⎟ ,
p ⎝ p⎠
⎛ a a⎞
I(t) va creşte, iar în intervalul ⎜⎜ , ⎟⎟ , I(t) descreşte.
⎝p r⎠

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

Costul minim îl obţinem din relaţia C’(a) = 0 (deoarece C”(aopt)>0, rezultă că


aopt determinat realizează minimul pentru C(a) ), de unde rezultă cantitatea optimă
de reaprovizionare:
h( p − r ) rs 2 prs
− 2 = 0 ⇒ a opt = .
2p a h ( p − r)
Costul minim pe unitatea de timp este
h 2 ( p − r)2 2 prs r 2 s 2 h( p − r ) 2hrs ( p − r )
C opt = ⋅ + = .
4p 2
h( p − r ) 2 prs p
Astfel, avem costul unitar optim şi intervalul de reaprovizionare optim date de
relaţiile
2hrs ( p − r ) 2 ps
C opt = , Topt = .
p rh( p − r )
a opt
Se pot determina: nivelul mediu al stocului ca fiind şi numărul optim de
2
numarul zilelor lucratoare
numărul lucrătoare din
din an
an
reaprovizionări pe an dat de .
Topt
r
În practică se presupune că ≈0,
p
I(t)
adică p >> r ( se consideră p = ∞), a
r
ceea ce revine la a accepta că =0
p
(Figura 9.4).
Costul de stocare pe unitatea de timp
este
C h ,T ha 0 T 2T t
=
T 2
şi reprezintă costul de stocare al unui Figura 9.4
a
stoc mediu pe unitatea de timp.
2

Astfel, costul de stocare pe o perioadă de timp t0 este


ha
C h ,t 0 = t0 .
2
În acest caz
− mărimea optimă a comenzii de reaprovizionare a stocului este
2rs
I
a opt = (9.1)
h
− costul minim pe unitatea de timp este
202 Modele şi algoritmi de optimizare
I
C opt = 2rsh (9.2)
− ciclul optim de reaprovizionare este
2s
I
Topt = (9.3)
hr

Î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

Exemplu. O întreprindere de prefabricate primeşte o comandă de 120 000 de dale


pe care trebuie să le livreze municipalităţii, pentru pavarea trotuarelor. Cererea
firmei de construcţii care realizează pavarea este constantă. Costurile sunt:
• h = 500 lei o dală /zi – stocarea,
• s = 30 000 000 lei – lansarea unei comenzi pentru un lot de dale.
În ce ritm trebuie întreprinderea de prefabricate să-şi aprovizioneze stocul dacă nu i
se admite nici o întârziere în livrare ? Se consideră anul cu 300 zile lucrătoare.

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

Se poate rezolva problema din exemplul precedent cu Management Scientist.


După lansarea pachetului de programe, se selectează modulul Inventory, apoi, din
meniul File se alege New şi din fereastra care apare se selectează modelul
Economic Order Quantity, ca în Figura 9.5.

Figura 9.5

Se introduc datele de intrare ca în Figura 9.6, având în vedere că trebuie


introdus costul anual de stocare (500 lei/zi × 300 zile). Se presupune că sunt
necesare 3 zile pentru a se satisface o cerere de reaprovizionare (L=3). Atunci
trebuie să se determine şi nivelul optim de reaprovizionare.

Figura 9.6

Rezultatele obţinute sunt prezentate în Tabelul 9.1.


Tabelul 9.1

INVENTORY MODEL
204 Modele şi algoritmi de optimizare

***************

ECONOMIC ORDER QUANTITY


***********************

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
WORKING DAYS PER YEAR = 300 DAYS
LEAD TIME FOR A NEW ORDER = 3 DAYS

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).

9.3. Modelul clasic al lipsei de stoc

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

− costul de lansare a comenzii a este s.

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

valorile obţinute realizează minimul costului.


d
Se notează cu ρ = < 1 şi relaţiile de mai sus devin
h+d
2s 2rsρ
II
Topt = II
, S opt = II
, C opt = 2rshρ
rhρ h
de unde rezultă că
II
C opt = C opt
I
ρ.
Această relaţie arată că este mai convenabilă politica de aprovizionare care
admite lipsa de stoc !
Mărimea optimă a lotului de reaprovizionare este
2rs h + d
II
a opt = Tr =
h d
iar lipsa de stoc este
h
II
a opt − S opt
II
= a opt
II
.
h+d
Ultima relaţie arată că numărul articolelor din perioada lipsei de stoc creşte pentru
articolele cu cost unitar de stocare mare. Aceasta explică de ce articolele care au un
preţ de stocare unitar mai mare sunt tratate mai economic într-un model cu lipsă de
stoc. Pe de altă parte, când costul unitar al lipsei de stoc creşte, numărul articolelor
din perioada lipsei de stoc scade. Astfel, modelul arată intuitiv că articolele cu cost
mare pentru lipsă de stoc vor fi foarte puţine pe perioada lipsei de stoc.
9. Elemente de teoria stocurilor 207

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
.

Exemplu. În exemplul din §9.2. se consideră că lipsa dalelor din stoc va fi


penalizată cu 3500 lei/dală/zi (d = 3500) . Să se determine elementele optime ale
modelului de stocare în acest caz.

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

Modelul se poate rezolva şi utilizând Management Scientist. După lansarea


pachetului de programe se alege modulul Inventory. Din meniul File se selectează
New şi din fereastra arătată în Figura 9.5 se alege modelul Economic Order
Quantity with Planned Shortages.
În fereastra care apare după apăsarea butonului OK, se introduc datele de
intrare ca în Figura 9.8, unde costul de stocare şi cel de lipsă de stoc sunt
considerate pe întregul an (d× numărul de zile lucrătoare din an , respectiv, h×
numărul de zile lucrătoare din an). Se consideră că sunt necesare 3 zile pentru
satisfacerea comenzii de reaprovizionare din momentul lansării acesteia.
208 Modele şi algoritmi de optimizare

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

În continuare sunt prezentate alte două variante ale modelului clasic.


9. Elemente de teoria stocurilor 209

9.3.1. Modelul de stocare considerând influenţa preţului


de cumpărare

Acest model se referă la problemele de stoc-aprovizionare şi presupune că


preţurile de achiziţie a materiilor prime şi materialelor depind de mărimea
comenzii, adică ca = ca(a) (Văduva et al, II, 1974). În modelul lotului economic se
consideră
a r
C (a) = h + s + r ⋅ c a (a) ,
2 a
unde primul termen este costul stocării unei cantităţi medii pe unitatea de timp, al
doilea este costul lansării, iar cel de-al treilea termen este costul de cumpărare a
materiilor prime consumate din stoc. Se poate considera costul de stocare ca fiind o
fracţiune din costul de cumpărare, h = k⋅ca(a), şi atunci:
1 r
C (a) = kc a (a ) + s + r ⋅ c a ( a) .
2 a
De obicei, în practică, ca(a) este o funcţie în scară descrescătoare.
Ci (a ) = ca , i a + s + rca , i , pentru li ≤ a ≤ ui , (li = ui −1 ) , i = 1,2,..., m .
k r
2 a
Se determină minimul local al acestei funcţii, obţinut pentru:
⎧l i , dacã a i ≤ l i
⎪ 2rs
a i = ⎨a i , dacã l i < a i < u i , iar a i =
*

⎪u , dacã u ≤ a . kc a , i
⎩ i i i

Atunci, costul minim local este


⎧C (c a , i ) , dacã a i* = l i

C i opt = ⎨ 2rsk + c a , i r , dacã a i* = a i
⎪C (u ) , dacã a i* = u i .
⎩ i

Costul minim total va fi


a i*
C opt = min C i opt , iar Topt = .
1≤ i ≤ m r

9.3.2. Modelul de stocare considerând influenţa costului


de producţie

Acest model se referă la problemele de stoc−producţie şi consideră costul de


stocare h ca funcţie de costul de producţie unitar cp (Văduva et al, II, 1974)
h = k ⋅ cp,
210 Modele şi algoritmi de optimizare

iar cp depinde de cantitatea produsă a. Notând cu cf costul unitar de fabricaţie,


atunci costul de fabricaţie pentru întreaga cantitate este
s ⎛s ⎞
s + cf⋅a şi astfel c p = + c f , deci h = k ⎜ + c f ⎟ , 0 < k < 1 .
a ⎝a ⎠
Se presupune că nu se admite lipsa de stoc. Atunci costul total de lansare şi
stocare pe unitatea de timp este
sr ⎛s ⎞ a
C (a) = + k ⎜ + c f ⎟ ⋅ .
a ⎝a ⎠ 2
Din condiţia de minim, C’(a) = 0, rezultă
2rs ks 2s
a= , C = 2kc f rs + , T= .
kc f 2 kc f r

Comentariu. Mărimea lotului de reaprovizionare a depinde de costul unitar total


de producţie cf; dacă cf este mare, mărimea lotului se micşorează, adică nu este
indicat să se menţină stocuri mari din produse scumpe.
Se mai pot considera: modele cu costul stocării variabil, descris de o funcţie în
salturi, modele cu cererea depinzând de preţurile de vânzare etc. (Văduva et al, II,
1974) .

9.4. Extensii ale modelului clasic al lotului economic

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

i) Reduceri oferite pentru un singur nivel de preţ


ii) Reduceri oferite pentru mai multe niveluri de preţuri.

Reduceri oferite pentru un singur nivel de preţ

Vom prezenta metoda pe un exemplu.


Pentru iluminatul stradal al unui oraş sunt necesare 100 de becuri pe lună
pentru înlocuirirea celor care se defectează. Fiecare bec costă 8 u.m. Costul de
lansare a unei comenzi de reaprovizionare este de 27 u.m. indiferent de mărimea
comenzii, iar cel de păstrare al unui bec pe un an de zile este de 25% din valoare.
Onorarea comenzii se face în momentul lansării acesteia şi nu se acceptă lipsa de
stoc. Furnizorul oferă municipalităţii o reducere de 2%, dacă se cumpără 600 de
becuri deodată. Să se satabilească dacă municipalitatea acceptă sau nu oferta
furnizorului.

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

Reduceri oferite pentru mai multe niveluri de preţuri

Înainte de a da metoda generală vom considera un exemplu.


Un spital trebuie să achiziţioneze antibiotice de la un furnizor care face oferta
din Tabelul 9.4 .
Tabelul 9.4
Cantitate Preţ
1 – 4999 2.75
5000 – 9999 2.60
>10000 2.50

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ă.

Bazat pe acest exemplu putem scrie următorul algoritm general.

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

Pas 4. Reţine an+1 şi Cn+1. Stop!


214 Modele şi algoritmi de optimizare

În continuare este redat algoritmul de mai sus, programat în MathCAD şi


aplicat exemplului precedent.

Determinarea lotului optim de reaprovizionare si a costului


optim pentru preturi unitare cu discount-uri

Intervalele pentru care se acorda discount Preturile unitare de achizitionare

⎛ 1 4999 ⎞ ⎛ 2.75 ⎞

q := ⎜ 5000 9999 ⎟ pu := ⎜ 2.60
⎜ 10000 106 ⎜
⎝ ⎠ ⎝ 2.50 ⎠

Necesarul anual Q := 50000

Costul de lansare a comenzii de reaprovizionare s := 50

Costul unitar anual de stocare este o fractiune ρ


din costul de achizitionare ρ := 0.2

s
Lotul optim de reaprovizionare aopt ( h ) := 2⋅ Q⋅
h

Determinarea minimului elementelor unui sir si a pozitiei sale

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 ⎠

Apelul subprogramului MathCAD se face cu secvenţa

Discount ( Q , s , pu , ρ ) =
.
216 Modele şi algoritmi de optimizare

9.5. Model pentru stocarea mai multor tipuri de produse

Se presupune că stocul este format din p tipuri de produse. Atât parametrii


cunoscuţi cât şi cei necunoscuţi se referă la fiecare tip de produse aflate în stoc.
Parametrii cunoscuţi:
− rata cererii – ri,
− costurile de stocare unitare – hi,
− costurile de lansare – si, i = 1, p .
Parametrii necunoscuţi:
− mărimea optimă, ai, a lotului de reaprovizionare din produsul i ,
− ciclul optim de reaprovizionare, Ti, a stocului cu produsul i , i = 1, p .
Formularea problemei:
Să se determine elementele necunoscute astfel încât costul de stocare şi lansare
pe unitatea de timp pentru produsul i
ha sr
C i (ai ) = i i + i i
2 ai
să fie minim, şi deci şi costul total pe unitatea de timp
p
C (a1 ,..., a p ) = ∑ C i (a i )
i =1
să fie minim. Se obţin:
2ri s i 2s i
a i opt = , Ti opt = .
hi ri hi

Comentariu. Determinarea loturilor economice pentru mai multe produse revine la


determinarea lotului economic pentru fiecare produs în parte.

9.6. Modele stochastice de stocare

Î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

9.6.1. Determinarea nivelului optim de reaprovizionare

Pentru determinarea nivelului optim de reaprovizionare P0, aplicăm analiza


marginală (Bonini et al, 1997), adică se începe analiza costului total cu o valoare
iniţială pentru P0 , fie P0 = R .
Să vedem ce se întâmplă cu costul total dacă se adaugă o unitate de produs de
stoc la P0. Costul total pe perioada analizată (de exemplu, un an) va creşte cu
aproximativ h , deoarece IS creşte cu o unitate.
Dacă nu se adaugă o unitate la P0 , creşterea costului va rezulta din faptul că o
cerere cu o unitate mai mare pe perioada timpului de avans va mări probabilitatea
lipsei de stoc, astfel (Figura 9.9):
Creşterea costului prin neadăugarea unei unităţi la P0 este egală cu
⎡Q ⎤
(Probabilitatea unei unităţi de stoc cerute în plus) d· ⎢ ⎥
⎣a⎦
⎡Q ⎤
⎢ a ⎥ fiind numărul de cicluri de reaprovizionare pe perioada analizată.
⎣ ⎦
Se consideră următoarea ipoteză:
Cererea r, pe unitatea de timp, este o variabilă aleatoare cu repartiţia
cunoscută, F(x).
218 Modele şi algoritmi de optimizare

Creşterea cos-
turilor

Q
(1 − F ( P0 )) ⋅ d ⋅
a
Costul neadăugării
unei unităţi

O
P0 opt P0

Figura 9.9

Atunci, cererea R, pe perioada timpului de avans L, este de asemenea o


variabilă aleatoare cu funcţia de repartiţie cunoscută, F(x)=P(R<x).
Probabilitatea unei unităţi de stoc cerute în plus este 1 − F ( P0 ) . Figura 9.9
reprezintă costurile adăugării şi neadăugării unei unităţi de stoc la P0 . Din
egalitatea celor două costuri avem :
⎡Q ⎤ a⋅h a⋅h
h = (1 − F ( P0 ) ) ⋅ d ⋅ ⎢ ⎥ ⇒ 1 − F ( P0 ) = ⇒ F ( P0 ) = 1 − .
⎣a⎦ d ⋅Q d ⋅Q
P0 poate fi acum obţinut din tabela funcţiei de repartiţie F.

Se poate scrie următorul algoritm pentru determinarea nivelului optim de


reaprovizionare.

Algoritm pentru determinarea nivelului optim de reaprovizionare P0


Pas 1. Date de intrare : h, d, Q, s R , σ R ;
2⋅s ⋅Q a⋅h
Pas 2. Calculează a opt = ; α =1− ;
h d ⋅Q
Pas 3. Din tabela funcţiei de repartiţie a cererii pe perioada de avans R, se ia Zα.
Popt = R + Z α ⋅ σ R . Stop !
Observaţii
9. Elemente de teoria stocurilor 219

1. Stocul de siguranţă este I S = P0 − R = Z α ⋅ σ R .


2. Pentru un α ∈ (0, 1) , un risc asumat de a avea lipsă de stoc pe perioada
timpului de avans, se poate determina nivelul critic al stocului astfel :
α = P(R≥ P0)=1−F(P0) ⇒ F(P0)=1−α ,
relaţie ce permite determinarea nivelului critic al stocului P0.

Determinarea costului total


Costul total=Costul de lansare+Costul de stocare+Costul lipsei de stoc
Q ⎛a ⎞ ⎡ ∞ ⎤ Q
CT (a, P0 ) = s + ⎜ + P0 − R ⎟h + ⎢d ∫ (R − P0 ) f ( R )dR ⎥ ⋅ . (9.6)
a ⎝2 ⎠ ⎣⎢ P0 ⎦⎥ a
Q
unde: s reprezintă costul de lansare al tuturor comenzilor de reaprovizionare pe
a
perioada de timp analizată,
Q
numărul comenzilor de reaprovizionare pe perioada de timp analizată,
a
⎡ ∞ ⎤ Q
⎢d ∫ (R − P0 ) f ( R)dR ⎥ ⋅ costul lipsei de stoc pe perioada de timp analizată,
⎢⎣ P0 ⎥⎦ a

∫ (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

Se observă că P0 apare în exprimarea lui aopt (9.9) şi a apare în exprimarea


lui P0 opt (9.8). Pentru rezolvarea acestei probleme se poate folosi un procedeu
iterativ astfel :
- cu un a estimat, de exemplu dat de modelul lotului economic, se calculează P0,
din tabela funcţiei de repartiţie F din relaţia (9.8),
- apoi, cu acest P0 se calculează a cu relaţia (9.9) şi aşa mai departe, până când
cele două valori găsite satisfac relaţiile (9.7).

Dacă R a N ( R, σ R ) , atunci ∫ (R − P ) f ( R)dR = σ
P0
0 R N ( Z ) , unde N(Z) este

numărul mediu de comenzi de reaprovizionare a stocului pe perioada timpului de


avans. Astfel, relaţia (9.7) devine
2Q(s + dσ R N ( Z ) )
a opt = (9.9’)
h
şi costul total optim este
Q ⎛ a opt ⎞
C opt = CT (a opt , P0 opt ) = [s + dσ R N ( Z )] + ⎜⎜ + P0 opt − R ⎟⎟h . (9.6’)
a opt ⎝ 2 ⎠

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 −
α=

∫e
−∞
2
du ,

rezultă că în acest caz nivelul de reaprovizionare este

P0 = L ⋅ m + z α Lσ R .

2) Presupunând timpul de avans, L, constant şi cererea, r, variabilă aleatoare


repartizată Exp(λ), atunci cererea pe perioada timpului de avans este

R = r1 + ... + rL a Erlang (λ , L)

şi P0 se determină din relaţia

P0

∫ f ( x)dx = 1 − α = P( R < P )
0
0

(α riscul asumat fiind mic) folosind tabela repartiţiei Erlang(λ,L).


9. Elemente de teoria stocurilor 221

3) Dacă L este o variabilă aleatoare cu media M[L]=l, iar r este o variabilă


aleatoare repartizată N (m,σR), independentă de L, atunci R=L⋅r este o variabilă
(
aleatoare normală cu M[R] = l⋅m şi D2[R] = l⋅σR2, adică N l ⋅ m, l ⋅ σ R . În )
acest caz nivelul de reaprovizionare este
P0 = l ⋅ m + z α lσ R 

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.

Rezolvare. Consideră mărimea optimă a lotului de reaprovizionare


2 sQ 2 ⋅ 10 ⋅ 1800
a opt = = = 245 bidoane de ulei.
h 0 .6
Indicele de lipsă de stoc asumat este
h⋅a 0.6 ⋅ 245
Φ ( P0 ) = 1 − =1− = 0.9837 = α
d ⋅Q 5 ⋅ 1800
Φ fiind funcţia de repartiţie a unei variabile aleatoare normale.
Din tabelele repartiţiei normale luăm α – cuantila corespunzătoare, Z α = 2.14 .
Se obţine punctul optim de reaprovizionare P0=100+2.14·30=164 . Astfel, stocul
de siguranţă este I S = Popt − R = 164 − 100 = 64 bidoane de ulei.

În anumite ipoteze asupra repartiţiei ciclului de reaprovizionare, T a G (τ ) ,


numărului de cereri din intervalul de timp (0, t), n(t ) a Po(λ ⋅ t ) ,
mărimii unei cereri X, X a F ( x) ,
se poate determina repartiţia cererii totale pe intervalul de timp ( 0, t ).

9.6.2. Modele de stocare pe o singură perioadă


cu cerere aleatoare

Dacă rata cererii nu este deterministă, modelul de stocare cu cerere aleatoare


presupune cunoscută repartiţia acesteia. Modelele de stocare pe o singură perioadă
se referă la situaţia în care o singură comandă este lansată pentru un produs. La
sfârşitul perioadei produsul a fost fie epuizat, fie există un surplus de articole
nevândute care vor fi vândute la o valoare de lichidare de stoc. Modelul pentru o
singură perioadă este aplicabil în situaţii ce implică articole sezoniere sau perisabile
care nu pot fi păstrate în stoc şi vândute în perioada următoare. De exemplu: hainele
222 Modele şi algoritmi de optimizare

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.

Exemplu de cerere cu repartiţie discretă


Un magazin cumpără roşii o dată pe săptămână de la producător cu 6 u. m. / kg şi
le vinde cu 11 u. m. / kg. La sfârşitul săptămânii preţul de lichidare de stoc este de
2 u. m./kg. Din experienţa avută (reflectată în Tabelul 9.6) magazinul vinde între
160 şi 200 kg de roşii pe săptămână. Deoarece cererea este relativ stabilă, se
presupune că este continuă cu acea rată. Să se determine mărimea comenzii de
reaprovizionare pentru magazin, astfel ca profitul magazinului să fie maxim
(Turban şi Meredith, 1988) .

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.

Pentru această problemă c+=40–30=10, iar c-=60–40=20. Considerând


cererea egală cu media, analiza incrementală pentru două cazuri este arătată de
Tabelul 9.7.

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ă

P(a≤500)= P(a>500)=0.5, D+(a)=c+⋅0.5=5 u.m. , D-(a)=c-⋅0.5=10 u.m.


Este de preferat să se comande 501 perechi de pantofi. Se continuă investigarea
până când
D+(a)= D-(a) .
Ţinând seama de relaţia (9.4), se obţine pentru acest exemplu
a opt − 350 2
P (a ≤ a opt ) = = ,
650 − 350 3
224 Modele şi algoritmi de optimizare

iar aopt=550.

În situaţiile practice apare problema cunoaşterii repartiţiei cererii pentru


produsul respectiv şi cea a costurilor c+ şi c- .
c_
În modelele cu o singură perioadă, cantitatea are rol esenţial în
c+ + c−
determinarea cantităţii optime de reaprovizionare. Când c+<c- se recomandă să fie
mai mic lotul de reaprovizionare. Când c-<c+ se recomandă să fie mai mare lotul
de reaprovizionare. Când cele două costuri sunt egale, probabilitatea de a avea
surplus este egală cu probabilitatea de a avea lipsă de stoc şi atunci se recomandă
ca lotul de reaprovizionare să fie egal cu media.

9.6.3. Modele stochastice de stocare bazate


pe modele de aşteptare

Aplicarea modelelor de aşteptare la rezolvarea problemelor legate de gestiunea


stocurilor se poate prezenta astfel (Văduva et al, II, 1974):
1. cererile ce urmează a fi satisfăcute sunt considerate clienţi în modelul de
aşteptare. Pentru ca să fie satisfăcute cererile ar trebui ca în stoc să se afle o
cantitate practic infinită, ceea ce în realitate nu este posibil;
2. încărcarea stocului corespunde venirilor în sistemul de aşteptare şi satisfacerea
cererilor corespunde ieşirilor din sistemul de aşteptare.

În continuare vor fi prezentate două modele de stocare având la bază modele de


aşteptare.

9.6.4. Modelul P0(λ)/Exp(µ)/1:(∞, FIFO)

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 − ρ ) .

Problema se poate formula şi astfel:


Să se determine nivelul stocului care să fie atins şi/sau depăşit cu
probabilitatea π∈(0, 1) suficient de mică.
ln π
Atunci, din relaţia ρ ν = π obţinem ν π = .
ln ρ
Ipoteza că intrările în stoc pot avea loc în mod indefinit se poate înlocui cu alta,
rezultată din faptul că stocul are o limită a capacităţii, m. Atunci
226 Modele şi algoritmi de optimizare

⎧ρ 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.

9.6.5. Modelul cu mai multe staţii paralele


şi cu timp de avans L aleatoriu
9. Elemente de teoria stocurilor 227

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 µ.

A. Cererea nesatisfăcută nu se păstrează


Analogia cu modelul de aşteptare Exp( µ )/Exp(λ )/c : (∞, N d )
Se consideră
• cele c locuri din stoc drept staţiile de serviciu ale sistemului de aşteptare,
• Nd semnifică faptul că există clienţi nedisciplinaţi care, dacă nu pot fi serviţi,
părăsesc sistemul,
• N(t) − numărul de unităţi din sistem la momentul t este un proces finit,
• Pn(t)=P(N(t)=n) – probabilitatea de a avea n unităţi în stoc. Când sunt n
unităţi în stoc înseamnă că sunt lansate c−n comenzi.

Determinarea coeficienţilor λn , µn, n∈{1, 2, . . . , c}. Deoarece o comandă


soseşte după timpul aleatoriu L, care are repartiţia Exp(µ), rezultă că intensitatea
intrării în stoc a unuia din cele c articole este µ·c, adică, λ0= µ·c.
Dacă există n unităţi în stoc, atunci poate să sosească numai una din cele c−n
comenzi, deci
λn= µ·(c−n) , 1 ≤ n ≤ c , λc = 0.
Pentru a determina intensitatea ieşirii ţinem seama de faptul că ieşirea depinde
de cerere, deci µn = λ, 1 ≤ n ≤ c.
Se pot scrie ecuaţiile de stare ale modelului astfel
⎧ P0′(t ) = −cµ ⋅ P0 (t ) + λ ⋅ P1 (t )
⎪ P′(t ) = −[λ + (c − n) ⋅ µ ]P (t ) + λ ⋅ P (t ) + µ ⋅ (c − n + 1) P (t ) , 1 ≤ n ≤ c − 1
⎪ n n n +1 n −1

⎪ Pc′(t ) = −λ ⋅ Pc (t ) + µ ⋅ Pc −1 (t )
⎪⎩ Pn (t ) = 0 , n > c.
Rezolvarea pentru cazul staţionar conduce la soluţia
1
p0 = c
,
1
c!⋅∑
n = 0 (c − n)!⋅ρ
n

iar
c! 1
pn = ⋅ p0 = ρ c − n p c , 1 ≤ n ≤ c,
(c − n)!⋅ρ n
(c − n ) !
unde
228 Modele şi algoritmi de optimizare

λ
ρ= .
µ

Se poate determina stocul mediu

c
c−n n
M[N(t)] = p c ∑ ρ .
n =0 n

Numărul mediu de cereri pe unitatea de timp este λ, deci numărul mediu de


1 λ
cereri pe intervalul mediu de timp de avans, egal cu , va fi , iar numărul
µ µ
mediu de cereri satisfăcute pe intervalul de timp de avans este

M[R] = c−M[N(t)].

Stabilirea funcţiei obiectiv


Fie cv – preţul de vânzare al unei unităţi de stoc şi
1
h − costul de stocare pe intervalul de timp de avans mediu .
µ
Profitul pe perioada T este
c ⋅ E c ( ρ ) − ρE c −1 ( ρ )
B(c) = M[R]·cv−h·M[N(t)] = c v ⋅ c − (h + v) ⋅ ,
Ec (ρ )
unde
c
x n −x
E c ( x) = ∑ ⋅e .
n = 0 n!
c fiind o variabilă întreagă, condiţia B’(c) = 0, revine la
B(c+1)−B(c) = 0,
adică
h ⎡ E (ρ ) E (ρ ) ⎤
= ρ ⋅⎢ c − c −1 ⎥.
h + cv ⎣ E c +1 ( ρ ) E c ( ρ ) ⎦
Dându-se h, c, cv, ultima relaţie permite determinarea stocului optim pentru
obţinerea unui profit maxim.

B. Cererea nesatisfăcută se păstrează


Pot exista cel mult m cereri nesatisfăcute şi atunci numărul de unităţi din stoc
satisface relaţia −m≤ n ≤ c.

Analogia cu modelul de aşteptare Exp( µ )/Exp(λ )/c : (m, FIFO)


9. Elemente de teoria stocurilor 229

Formularea problemei. Să se determine nivelul optim al stocului c în funcţie de


ρ, L, costul unitar de stocare h şi costul unitar al lipsei de stoc d. În acest caz
N(t) reprezintă numărul de cereri înregistrate,
0 ≤ N(t) ≤ c+m.
În stoc vor exista j = c−N(t) unităţi.
Determinarea coeficienţilor λn, µn, 0 ≤ n ≤ c+m
Dacă există n cereri înregistrate, intensitatea cu care apare o nouă cerere este
λn = λ, 0 ≤ n ≤ c+m, λn = 0 pentru n > c+m.
Intensitatea satisfacerii cererilor µn se determină astfel.
Dacă există n cereri la un moment dat t, 1 ≤ n ≤ c, atunci ele se pot satisface
cu unităţile ce vor sosi în stoc cu intensitatea µ, deci
µn = n⋅µ , 1 ≤ n ≤ c.
Dacă c ≤ n ≤ c+m, nu pot sosi în stoc decât c unităţi ce au fost comandate,
care intră în stoc cu intensitatea µ, deci numai c din cele n cereri vor fi
satisfăcute, atunci
µn = c⋅µ , c ≤ n ≤ c+m.
Deoarece numărul maxim de cereri ce se pot realiza este c+m, rezultă că
µn = 0, pentru n > c+m.
Astfel, ecuaţiile de stare ale modelului sunt
⎧ P0′ (t ) = −λ ⋅ P0 (t ) + µ ⋅ P1 (t )
⎪ P ′ (t ) = −(λ ⋅ + n ⋅ µ ) ⋅ P (t ) + λ ⋅ P (t ) + µ ⋅ (n + 1) ⋅ P (t ) 1 ≤ n ≤ c
⎪ n n n −1 n +1
⎨ .
⎪ nP ′ (t ) = − ( λ ⋅ + S ⋅ µ ) Pn ( t ) + λ ⋅ Pn −1 (t ) + µ ⋅ S ⋅ Pn +1 (t ) c≤n≤c+m
⎪⎩ Pc′+ m (t ) = −c ⋅ µ ⋅ Pc + c (t ) + λ ⋅ Pc + m −1 (t ).
λ
Soluţia pentru cazul staţionar în funcţie de ρ = este
µ
⎧ρ n
⎪ ⋅ p0 1≤ n ≤ c
⎪ nn !
⎪ ρ
p n = ⎨ n−c ⋅ p0 c ≤ n ≤ c + m (9.11)
⎪ c!⋅c

⎪⎩0 n>c+m
c+m
Din ∑p
n =0
n = 1 deducem

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 ,

− numărul mediu de unităţi lipsă din stoc


c+m
M[N−(t)] = ∑ (c − n ) p
n = c +1
n .

Astfel, funcţia de cost care trebuie optimizată este


C(c)= M[N+(t)]·h− M[N−(t)]·d.
n
Notăm Q( n) = ∑ p j − funcţia de repartiţie a variabilei aleatoare discrete n.
j =0

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

− d ⋅ (c + 1 − c − m − 1) ⋅ p c +1+ m = h ⋅ Q(c) − d ⋅ (1 − Q(c) ) .


d
Din condiţia de optim, C’(c)=0, se obţine Q(c) = .
d +h
Pentru a găsi o soluţie întreagă a acestei ecuaţii se poate folosi următorul algoritm.

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!

Se observă că algoritmul determină acea valoare întreagă pentru care


d
Q (c − 1) < ≤ Q (c) .
d +h

9.7. Probleme propuse


9. Elemente de teoria stocurilor 231

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.

2. Firma care se ocupă cu semaforizarea intersecţiilor din Capitală are nevoie de


10 000 de becuri pe an. Costul de lansare a unei comenzi de reaprovizionare este de
1 500 000 lei, costul anual de păstrare a unui bec este de 3500 lei. Presupunând că
anul are 300 zile lucrătoare şi că nu se admite lipsa becurilor din depozit, să se
determine:
a) cantitatea optimă de reaprovizionare
b) costul total anual al stocării
c) câte comenzi de reaprovizionare vor fi lansate anual.

R. a) Qopt=2927.7 ≈ 2928 , b) CT =10 246 950.77 ≈ 10 246 951 , c) N=3.42 ≈ 3 .

3. RomTelecom cumpără anual consumabile în valoare de 500 000 euro.


Costul de lansare a unei comenzi de reaprovizionare este de 80 euro, iar costul
anual de păstrare este de 20% din valoarea consumabilelor păstrate. Să se
determine:
a) care este valoarea optimă a unei comenzi de reaprovizionare?
b) de câte ori într-un an se lansează cereri de reaprovizionare?
c) care este costul total anual de lansare a comenzilor?
d) care este costul total anual de stocare?

R. a) Valoarea optimă a comenzii de reaprovizionare este 20 000 euro; b) se


lansează într-un an 25 cereri de reaprovizionare; c) costul total anual de lansare a
comenzilor de reaprovizionare este de 2000 euro; d) costul total anual de stocare
este de 4000 euro.

4. O firmă de reparaţii aparatură electronică are o componentă pentru care poate


aplica modelul cu lipsă de stoc. Cererea nuală este de 2000 unităţi, costul anual
unitar de păstrare este h=10 u.m. , costul de lansare a unei comenzi de
reaprovizionare este de s=25 u.m. , costul anual unitar al lipsei de stoc este
d=30 u.m.. Se presupune că anul are 250 zile lucrătoare. Să se determine:
a) mărimea optimă a comenzii de reaprovizionare
b) numărul maxim de unităţi lipsă din stoc pe perioada lipsei de stoc.
c) nivelul maxim al stocului
d) ciclul optim de reaprovizionare
232 Modele şi algoritmi de optimizare

e) costul total anual

R. a) mărimea optimă a comenzii de reaprovizionare a opt = 115


b) numărul maxim de unităţi lipsă din stoc pe perioada lipsei de stoc, S=29.
c) nivelul maxim al stocului Imax= a opt − S =86
d) ciclul optim de reaprovizionare, Topt=11.4 zile lucrătoare
e) Ch=322, Cs=435, Cd=110 şi atunci, costul total anual, CT=867 .

5. O companie trebuie să asigure un produs chimic (soluţie) la fiecare 6 luni unui


client. Cum procesul de producţie durează două luni, producţia trebuie începută
înaintea formulării cererii de către client. Câţi litri trebuie produşi ştiind că : preţul
de vânzare este de 20 u. m. / litru, costul de producţie este de 15 u. m. / litru, lipsa
de stoc este rezolvată prin cumpărarea soluţiei de la altă firmă cu 19 u. m. / litru,
surplusul se vinde cu 5 u. m. / litru. Din experienţa care există cererea se consideră
ca fiind N (1000,100). Care este planul de producţie optim ?
4
Rezolvare. c-=19-15=4, c+=15-5=10, P (a ≤ a opt ) = = 0.29 . Din tabela
4 + 10
repartiţiei normale standard
z x2
1 −
P(a ≤ z ) = ∫ e dx = 0.29
2π − ∞
2

se ia z=0.55. Atunci aopt=µ-0.55σ=1000-0.55⋅100=0.945 litri. În acest caz, costul


de subestimare este mai mic decât cel de supraestimare şi atunci compania îşi
asumă un risc mai mare de apariţie a lipsei de stoc. La valoarea aopt obţinută,
probabilitatea de a avea surplus este 0.29, iar cea de a avea lipsă de stoc este 0.71 .

6. Folosind algoritmul general din §9.4. să se rezolve următoarea problemă :


Un magazin de încălţăminte bărbătească vinde în medie la fiecare 3 luni 500
perechi de pantofi negri. Făcând aprovizionarea în loturi de câte 500 perechi de
pantofi, magazinul obţine de la producător cel mai mic preţ petru o pereche, 28
u.m. Costul de depozitare este 20% din preţul de achiziţie. Ştiind că o lansare de
comandă de aprovizionare este de 30 u.m. şi că producătorul oferă şi alte reduceri
de preţuri în funcţie de mărimea comenzii, conform cu Tabelul 9.8, să se
stabilească mărimea optimă a comenzii de reaprovizionare a magazinului şi să se
precizeze dacă este mai avantajoasă vechea politică de reaprovizionare.

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. Câmp de evenimente. Axioma lui Kolmogorov

A.1.1. Evenimente. Probabilităţi

Fie Ω o mulţime nevidă dată, K o familie de submulţimi ale lui Ω,


K ⊂ P (Ω). Elementele lui K le numim subevenimente.
Familia K se numeşte câmp complet aditiv dacă sunt verificate următoarele axiome:
A1. (∀) X ∈ K , cX ∈ K (cX=Ω \ X)
A2. U X α ∈ K dacă Xα ∈ K , (∀) α∈ I , I familie de indici cel mult
α ∈I
numărabilă ( I – submulţime a lui N ).

A.1.2. Probabilitate

Funcţia de mulţime P : K → R se numeşte probabilitate dacă:


P1. (∀) X ∈ K , P(X) ≥ 0;
P2. (∀)I familie de indici cel mult numărabilă, este îndeplinită relaţia:
X α ∈ K , (∀)α ∈ I , X α ∩ X β = φ , α , β ∈ I , α ≠ β ⇒
⎛ ⎞
⇒ P⎜⎜ U X α ⎟⎟ = ∑ P ( X α ) ;
⎝ α ∈I ⎠ α ∈I
P3. P(Ω) = 1.

A.1.3. Câmp de probabilitate complet aditiv

Câmp de probabilitate complet aditiv este tripletul {Ω , K , P} , iar Ω se


numeşte evenimentul sigur şi φ – evenimentul imposibil.
P(Ω) = 1, P(φ ) = 0 .
234 Modele şi algoritmi de optimizare

A.1.4. Probabilitate condiţionată

Fie {Ω , K , P} un câmp de probabilitate complet aditiv, A, B∈ K cu


P(B)>0. Numim probabilitatea evenimentului A condiţionată de B şi notăm
P( A ∩ B)
PB(A) sau P(A⏐B) raportul .
P( B)

A.1.5. Evenimente independente

Fie {Ω , K , P} un câmp de probabilitate complet aditiv şi A, B ∈ K .


Spunem că evenimentele A şi B sunt independente dacă se verifică relaţia:
P ( A ∩ B) = P ( A) ⋅ P ( B ) .
Dacă evenimentele A şi B sunt independente, atunci au loc relaţiile:
P (cA ∩ B) = P (cA) ⋅ P ( B )
P ( A ∩ cB) = P( A) ⋅ P (cB)
P (cA ∩ cB) = P(cA) ⋅ P (cB).

Observaţie. Dacă A şi B sunt independente, atunci PB(A) = P(A).

A.2. Variabile aleatoare

Fie {Ω , K , P} un câmp de probabilitate complet aditiv sau câmp de


probabilitate şi X o funcţie, X : Ω → R. Aplicaţia X este variabilă aleatoare
dacă {ω ∈ Ω X (ω ) > c}∈ K , pentru (∀) c ∈ R. .

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

Teorema 2. Dacă X şi Y sunt două variabile aleatoare, atunci:


a) X − Y
b) X + Y
c) X ⋅ Y
X
d) , pentru Y ≠ 0
Y
sunt variabile aleatoare.

A.2.1. Funcţia de repartiţie

Fie x ∈ R şi X o variabilă aleatoare. Notăm F(x) = P( X (ω)) < x ) (de fapt,


F ( x) = P ( {ω ∈ R X (ω ) < x} ) . Funcţia F se numeşte funcţia de repartiţie a
variabilei aleatoare X .

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).

A.2.2. Densitate de repartiţie

x
Dacă există o funcţie nenegativă f( y ) astfel încât F ( x) = ∫ f ( y )dy ,
−∞

(∀)x∈R , atunci numim funcţia f densitate de repartiţie sau de probabilitate.

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.2.3. Variabile aleatoare independente


în sensul Steinhaus−Kaç

Fie ( X α )α∈I , I – familie oarecare de indici. Spunem că aceasta este o familie


independentă în sensul Steinhaus−Kaç dacă, (∀) J ⊂ I , J finită, avem:
⎛ ⎞
(
P⎜⎜ I X α−1 (−∞, aα ) ⎟⎟ = ∏ P X α−1 (−∞, aα ) . )
⎝ x∈J ⎠ α ∈J

A.2.4. Valoare medie. Dispersie. Momente

Fie {Ω , K , P} un câmp de probabilitate şi X o variabilă aleatoare. Se


numeşte media variabilei aleatoare X valoarea M [ X ] = ∫ X (ω )dP . Dacă

variabila aleatoare este discretă, atunci M [ X ] = ∑ a i P ( X = a i ) . Dacă variabila


i∈I

aleatoare are densitatea de probabilitate f, atunci M [ X [= ∫ xf ( x)dx .
−∞
Proprietăţi
Fie X , Y – variabile aleatoare, iar a, b – constante reale. Atunci:
Anexă 237

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.

Dispersia unei variabile aleatoare X este


[ ] [ ]
D 2 [ X ] = M ( X − M [X ]) = M X 2 − (M [ X ]) .
2 2

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] .

Abaterea medie pătratică se defineşte ca fiind σ [ X ] = D 2 [ X ] .


Momentul de ordinul r (r>1) al unei variabile aleatoare este

M r [ X ] = ∫ X r (ω )dP (ω ) = ∫ x r f ( x)dx
−∞

dacă X are densitatea de probabilitate f.

A.3. Câteva repartiţii clasice

A.3.1. Repartiţia uniformă

O variabilă aleatoare X urmează repartiţia uniformă pe intervalul [a,b] dacă


are densitatea de probabilitate
⎧ 1
⎪ dacã x ∈ [a,b]
f ( x) = ⎨ b − a
⎪⎩ 0 altfel .
Funcţia sa de repartiţie este
x−a
x
F ( x) = ∫ ρ (t )dt = , (∀)x ∈ [ a, b] .
a
b−a
Pentru variabila aleatoare uniformă X media şi dispersia sunt
1 1
M [ X ] = ( a + b) , D 2 [ X ] = (b − a ) 2 .
2 12
A.3.2. Repartiţii Markov
238 Modele şi algoritmi de optimizare

În modelele de aşteptare intervin repartiţia Poisson pentru modelarea sosirilor


în sistem şi repartiţia exponenţială pentru modelarea timpilor de servire. Cele două
repartiţii, prima discretă şi cea de-a doua continuă, sunt repartiţii complementare.
Ambele sunt numite repartiţii Markov.

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

O variabilă aleatoare X urmează repartiţia normală dacă are densitatea de


probabilitate
( x−µ )2

f ( x) =
1
e 2σ 2
(∀)x ∈ (− ∞, ∞ ) ,
σ 2π
iar funcţia de repartiţie
x (t − µ )2
1 −
F ( x) =
σ 2π −∞
∫e 2σ 2
dt ,

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ă.

A.3.4. Repartiţia Beta

O variabilă aleatoare X urmează repartiţia Beta de parametri a şi b dacă are


densitatea de repartiţie
⎧ 1
⎪ x a −1 (1 − x) b −1 (∀)x ∈ (0,1)
f ( x ) = ⎨ B ( a, b) ,
⎪⎩0 altfel
unde B(a,b) este funcţia beta (funcţia lui Euler de speţa I)
Γ(a )Γ(b)
B ( a , b) = , a>0 , b>0.
Γ ( a + b)
Pentru o variabilă aleatoare de acest tip,
2
a ⎛ a ⎞ 1
M[X ] = şi D 2 [ X ] = ⎜ ⎟ .
a+b ⎝ a + b ⎠ a + b +1

A.4. Procese aleatoare

Fie {Ω , K , P} un câmp de probabilitate şi


E = { X : Ω → R X variabilã aleatoare} ,
T o mulţime oarecare de numere reale. Se numeşte proces aleatoriu sau proces
stochastic cu mulţimea de parametri T o aplicaţie ξ : T → E .
Considerăm că variabilele din E descriu starea unui anumit sistem, iar
mulţimea T reprezintă timpul. Astfel, un proces aleatoriu reflectă evoluţia în timp a
unui real sistem dat. Dacă mulţimea T este finită, procesul aleatoriu este echivalent
cu un vector aleatoriu. Frecvent T=R, T=[0, ∞) sau T=[0, 1] şi se spune că
procesul aleatoriu este cu timp continuu. Dacă T=Z sau T=N termenul de
proces aleator se înlocuieşte cu cel de lanţ.
240 Modele şi algoritmi de optimizare

După cum o variabilă aleatoare se consideră determinată din punct de vedere


probabilistic atunci când i se cunoaşte funcţia de repartiţie, pentru definirea unui
proces aleatoriu ar trebui cunoscute toate funcţiile de repartiţie finit dimensionale,
adică (∀)n ∈ N , (∀)t1 , t 2 , ... , t n ∈ T şi (∀)x1 , x 2 , ... , x n ∈ R trebuie să fie
cunoscute probabilităţile
({ })
Ft1 , t2 ,...,tn ( x1 , x 2 , ..., x n ) = P ω ξ t1 (ω ) < x1 , ξ t2 (ω ) < x 2 ,..., ξ tn (ω ) < x n .

În cele ce urmează vom presupune că intervalul de interes este în timp.


Un proces aleatoriu ξ se numeşte proces Markov dacă pentru (∀)n ∈ N ,
(∀)t1 , t 2 , ... , t n ∈ T , t1 < t 2 < ... < t n şi (∀)a ∈ R are loc relaţia
P ({ξ (t ) ∈ B ξ (t1 ), ξ (t 2 ),..., ξ (t n )}) = P ({ξ (t ) ∈ B ξ (t n )}) ,
unde B = (− ∞, a ), sau (− ∞, a ], sau (a,−∞ ), sau [a,−∞ ). .
Din această definiţie rezultă că procesul dinamic descris de procesul Markov
are o evoluţie în viitor care depinde numai de starea precedentă şi nu de ceea ce s-a
petrecut cu el la momentele t1 , t 2 , ..., t n −1 .

Un proces aleatoriu ξ : [0, ∞ ) → E se numeşte cu creşteri independente dacă


pentru (∀)n ∈ N şi (∀)t1 , t 2 , ... , t n ≥ 0 cu proprietatea că t1 < t 2 < ... < t n ,
variabilele aleatoare ξ (t1 ) , ξ (t 2 ) − ξ (t1 ) , ξ (t 3 ) − ξ (t 2 ) ,..., ξ (t n ) − ξ (t n −1 ) sunt
independente.
Un proces aleatoriu cu creşteri independente şi satisfăcând condiţia ξ(0)=0 se
numeşte proces Poisson dacă ia numai valori întregi nenegative şi dacă pe orice
interval [s,t] , creşterile sale urmează repartiţii Poisson de parametru λ (t − s ) , adică

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

Notăm m = λt şi atunci m este numărul de evenimente care s-ar produce în


intervalul [0, t ] .
Într-un proces Poisson este interesant de cunoscut intervalul de timp dintre
două evenimente succesive. Vrem să ştim care este repartiţia de probabilitate
pentru aceste intervale. Aceasta este repartiţia exponenţială.
Pentru m de mai sus P (Y > t ) = e − m reprezintă probabilitatea ca timpul dintre
două evenimente să fie mai mare ca t este e-m , adică probabilitatea ca să nu apară
nici un eveniment în intervalul [0,t] . Astfel, repartiţia Poisson pentru evenimentele
petrecute pe unitatea de timp şi repartiţia exponenţială a intervalului dintre două
astfel de evenimente sunt două modalităţi alternative de a descrie acelaşi lucru. Se
poate spune că numărul de evenimente pe unitatea de timp este repartizat Poisson
cu media λ pe unitatea de timp, sau că intervalul dintre două evenimente este
1
exponenţial cu media µ = unităţi de timp.
λ

A.5. Teste de concordanţă

În practică apare necesitatea comparării a două procese tehnologice diferite, a


două metode de cercetare diferite etc. Este necesar să se cunoască dacă metodele
comparate dau rezultate identice, iar dacă nu, care este mai eficace.
În statistică o diferenţă semnificativă este aceea care nu poate fi pusă pe seama
întâmplării la un anumit nivel de probabilitate sau de încredere. De exemplu, cu cât
este mai mică diferenţa dintre două medii, cu atât este mai mare probabilitatea ca
ele să aparţină unei selecţii extrase din aceeaşi colectivitate de bază.

Se numeşte ipoteză statistică orice presupunere cu privire la caracteristicile


unei variabile aleatoare, faţă de legea ei de repartitie sau faţă de parametrii ce o
determină (Mihăilă şi Popescu, 1978).
Mijloacele de verificare a ipotezelor statistice se numesc teste statistice. Când
ipoteza se referă la natura repartiţiei, de exemplu afirmaţia că „o variabilă empirică
are o anumită repartiţie teoretică”, testul se numeşte test de concordanţă.
Afirmaţia H0 : „o variabilă empirică are o anumită repartiţie teoretică” este
numită ipoteza H0 , iar ipoteza alternativă: H1 : „variabila empirică poate avea
oricare altă repartiţie”.

Testul pentru verificarea ipotezei nule dă o regulă de descompunere a spaţiului


n-dimensional al selecţiilor Rn (n este volumul selecţiei) în două regiuni R1n , R0n
cu R n = R1n ∪ R0n şi R1n ∩ R0n = φ , astfel încât dacă valorile observate
( X 1 , X 2 ,..., X n ) ∈ R1n se acceptă ipoteza H0 , iar dacă ( X 1 , X 2 ,..., X n ) ∈ R0n se
242 Modele şi algoritmi de optimizare

respinge ipoteza H0 . R0n se numeşte domeniul critic sau regiunea critică a


testului.
Probabilităţile
α = P ( R0n H 0 ) = P(resping H 0 când H 0 este adevărată)
β = P( R1n H 1 ) = P (accept H 0 când H 0 este falsã )
se numesc riscul de genul întâi şi respectiv riscul de genul al doilea. α se mai
numeşte şi prag de semnificaţie şi de obicei se ia α=0.05 .

A.5.1. Etapele verificării ipotezelor statistice

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.

Concordanţa dintre repartiţia empirică şi cea teoretică se stabileşte cu ajutorul


unui test de concordanţă.
Se pune problema racordării unei variabile empirice Xe la o variabilă teoretică X,
⎛x x2 L xn ⎞ n
⎛ x ⎞
X e = ⎜⎜ 1 ⎟⎟ , ∑ N i = N , X = ⎜⎜ ⎟⎟ ,
⎝ N 1 N 2 L N n ⎠ i =1 ⎝ ρ (x) ⎠
adică se cercetează dacă şirul numeric al frecvenţelor absolute empirice Ni reflectă
legitatea ipotetică a variabilei aleatoare teoretice. Răspunsul respectiv este util în
aprecierea caracteristicilor variabilei empirice prin prisma legităţii variabilei
teoretice.

Rezolvarea acestei probleme se face în următoarele etape :


1. Estimarea parametrilor ţinând seama de semnificaţia pe care ar putea să o aibă în
legătură cu caracteristicile repartiţiei teoretice;
2. Se construieşte variabila pseudoteoretică:
~ ⎛x x2 L xn ⎞ n
X = ⎜⎜ 1 ⎟⎟ , ∑ N i′ = N
⎝ N 1′ N 2′ L N n′ ⎠ i =1
făcându-se astfel legătura între variabila empirică Xe şi cea teoretică X.
Determinarea frecvenţelor absolute N i′ , (∀)i = 1, n se face cu ajutorul funcţiei
N′
de probabilitate f ( x i ) = i ⇒ N i′ = Nf ( x i ) , (∀) i = 1, n .
N
Anexă 243

3. Verificarea concordanţei dintre repartiţia empirică şi cea teoretică, adică se


stabileşte dacă diferenţele dintre N i − N i′ , (∀)i = 1, n , sunt datorate întâmplării,
adică nu sunt semnificative, sau diferenţele sunt semnificative şi atunci există o
neconcordanţă între repartiţia teoretică şi cea empirică.

A.5.2. Testul de concordanţă χ 2

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

numărul parametrilor estimaţi (Văduva, 1977).

Observaţie. Numărul gradelor de libertate este strâns legat de cantitatea de informaţie


de care se dispune în cercetarea care se efectuează. Ea se reflectă în volumul n, de
n
date experimentale, n-1 informaţii sunt independente, deoarece ∑N
i=1
i = N , şi se

mai pierde informaţie pentru determinarea celor k parametri estimaţi.


Pentru ν < 30 şi α daţi se determină χ n2−1− k , α din tabela repartiţiei χ 2 ,
( )
( P χ 2 > χ n2−1− k , α = α ) şi dacă χ c2 < χ n2−1− k , α , atunci există concordanţă, iar dacă
χ ≥χ
2
c
2
n −1− k , α nu există concordanţă între cele două repartiţii.

A.5.3. Testul Kolmogorov

Acest test de concordanţă are la bază următoarea teoremă:

Teorema lui Kolmogorov (Văduva, 1977). Fie X o variabilă aleatoare a cărei


funcţie de repartiţie F(x) este continuă şi X1, X2, ..., Xn o selecţie efectuată asupra
sa. Fie Fn(x) funcţia de repartiţie empirică (sau de selecţie) asociată selecţiei
numãrul valorilor lui X i ≤ x
date, adică Fn ( x) = . Atunci
n
⎛ u ⎞ ∞
lim P⎜⎜ max Fn ( x) − F ( x) < ⎟⎟ = ∑ (−1) k e − 2u k = K (u ) .
2 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.

Algoritm pentru aplicarea testului Kolmogorov (Văduva, 1977)


Pas 1. Se formulează ipoteza H0: „Variabila aleatoare X are funcţia de repartiţie
F(x)”;
Pas 2. Se fixează un prag de semnificaţie α (de exemplu, α=0.05 , α=0.01 ,
α=0.025);
Pas 3. Se determină uα , din tabelele funcţiei K(u) , astfel K (uα ) = 1 − α ;
Pas 4. Se ordonează crescător X (1) ≤ X ( 2 ) ≤ ... X ( n ) ;
Pas 5. Se calculează d i = Fn ( X (i ) ) − F ( X i ) , (∀)i = 1, n ;
Pas 6. Se determină d = max d i ;
1≥ i≤ n


Pas 7. Dacă d < , se acceptă ipoteza H0 , altfel se respinge. Stop!
n
BIBLIOGRAFIE

Anderson, D. R. , Sweeney, D. J., Williams, Th. A. An Introduction to


Management Science. Quantitative Approaches to Decision Making, ediţia a
7−a. West Publishing Company, 1997.
Anderson, D. R. , Sweeney, D. J., Williams, Th. A., Joseph, D. A. The
Management Scientist, ediţia a 7−a. West Publishing Company, 1998.
Bergounioux, M. Optimization et Contrôle des systèmes linéaires. Ed. Dunod,
2001.
Bonini, C. P. , Hausman, W. H., Bierman, H. Jr. Quantitative Analysis for
Management, ediţia a 9−a. Irwin McGraw−Hill, 1997.
Cohen, G. Convexite et optimisation, ENPC, Paris, 2000
Cohen, V. La Recherche Opérationnelle. Presses Universitaires de France, 1995.
Dragomirescu, M., Maliţa, M. Programare pătratică. Editura Ştiinţifică,
Bucureşti, 1968.
Fletcher, R. Practical Methods of Optimization, vol. 1 – Unconstrained
Optimization şi vol. 2 – Constrained Optimization. John Wiley & Sons, 1981.
Fuente, Angel de la. Mathematical Methods and Models for Economists,
Cambridge University Press, 2000.
Henry-Labordere, A. Recherche Operationnelle. Presses de l’École Nationale des
Ponts et Chaussées, 1995.
Hsiao, J. C., Cleaver, D.S. Management Science. Houghton Mifflin Company,
1982.
Ionescu, H., Dinescu, C., Săvulescu, B. Probleme ale cercetării operaţionale.
Editura Didactică şi Pedagogică, Bucureşti, 1972.
Kaufmann, A. Metode şi modele ale cercetării operaţionale, vol. I, II. Editura
Ştiinţifică, Bucureşti, 1967.
Lee, A. M. Teoria aşteptării cu aplicaţii. Editura Tehnică, Bucureşti , 1976.
Lange, O. Decizii optimale − Bazele programării. Editura Ştiinţifică, Bucureşti,
1970.
Luenberger, D. G. Linear and Nonlinear Programming. Addison−Wesley, 1989.
Maliţa, M., Zidăroiu, C. Matematica organizării. Editura Tehnică, Bucureşti,
1971.
Mihăilă, N., Popescu, O. Matematici speciale aplicate în economie, Editura
Didactică şi Pedagogică, Bucureşti, 1978.
Popescu, O şi colectiv. Matematici aplicate în economie, Editura Didactică şi
Pedagogică, Bucureşti, 1997.
Popescu, O şi colectiv. Matematici aplicate în economie Culegere de probleme,
Editura Didactică şi Pedagogică, Bucureşti, 1996.
Preda, V şi Bad, M. Culegere de probleme de Cercetări Operaţionale, Tipografia
Universităţii din Bucureşti, 1978.
246 Modele şi algoritmi de optimizare

Turban, E., Meredith, J. R. Fundamentals of Management Science, Ediţia a 4−a.


Irwin, 1998.
Ştefănescu, A. Curs de Cercetări Operaţionale, Tipografia Universităţii din
Bucureşti, 1989.
Văduva, I. Modele de simulare cu calculatorul. Editura Tehnică, Bucureşti, 1977.
Văduva, I., Dinescu, C., Săvulescu, B. Modele matematice ale organizării şi
conducerii producţiei, vol. I, II. Editura Didactică şi Pedagogică, Bucureşti,
1974.
Vrănceanu, Gh. Gh., Mititelu, Şt. Probleme de cercetare operaţională. Editura
Tehnică, Bucureşti , 1983.
Zidăroiu, C. Programare dinamică discretă. Editura Tehnică, Bucureşti , 1975.
Zidăroiu, C. Programare liniară. Editura Tehnică, Bucureşti , 1983.
INDEX ALFABETIC

abaterea medie pătratică ........................... 235 coeficienţi


algoritmul de cost redus...................................59, 106
de transport .......................................... 104 coeficienţii funcţiei obiectiv .................62, 93
Dijkstra .................................................. 25 condiţia de balansare...................................52
Kruskal .................................................. 21 condiţiile
lui Prim .................................................. 23 de nenegativitate ....................................50
simplex .................................................. 61 Kuhn-Tucker ..................................49, 125
simplex dual........................................... 88 conul
simplex revizuit ..................................... 63 direcţiilor admisibile ..............................48
Wolfe................................................... 125 tangent....................................................48
alternativă ................................................... 13 costul de
analiza depozitare.............................................193
convergenţei lansare ..........................................193, 197
globale .............................................. 16 stocare ..................................................197
locale................................................. 16 costul lipsei de stoc ...........................193, 203
marginală ............................................. 215 costul total.................................................198
prospectivă........................................... 142 costul unitar
retrospectivă......................................... 142 al subestimării.......................................220
sensibilităţii............................................ 68 al supraestimării ...................................220
arbore .......................................................... 20 de fabricaţie..........................................208
de acoperire de lungime minimă............ 20 de transport ............................................53
arborescenţă ............................................... 18 costuri reduse ..............................................67
arc criteriu de
al grafului............................................... 17 ieşire din bază ..........................61, 90, 107
incident .................................................. 18 intrare în bază...........................61, 90, 106
bază cuantila inferioară .....................................218
dual admisibilă....................................... 83 cuplu de probleme duale .............................82
primal admisibilă ................................... 83 asimetrice ...............................................83
Bellman, principiul ..................... 15, 141, 150 simetrice.................................................83
Bland, regula lui ......................................... 72 degenerare...................................................72
câmp complet aditiv................................... 231 densitate de repartiţie ................................234
capacitatea sistemului de aşteptare ........... 159 diagrama activităţilor ..................................30
câştigul direcţie admisibilă.......................................48
parţial................................................... 143 disciplina de serviciu ................................160
total ...................................................... 143 dispersia variabilei aleatoare.....................235
celulă ........................................................ 102 domeniul de admisibilitate........................142
cerere ........................................................ 192 drum............................................................17
ciclare ......................................................... 71 critic .......................................................30
ciclu .......................................................... 102 eulerian ..................................................20
de reaprovizionare ............................... 194 hamiltonian ............................................20
eulerian .................................................. 20 ecuaţiile
hamiltonian ............................................ 20 de recurenţă..........................................146
ciclu într-un graf ......................................... 20 Kolmogorov−Feller..............................161
circuit.......................................................... 18 ecuaţiilor de stare......................................180
eulerian .................................................. 20 evenimentul
hamiltonian ............................................ 20 imposibil ..............................................231
clienţi ........................................................ 159 sigur .....................................................231
248 Modele şi algoritmi de optimizare

factor de serviciu ...................................... 164 lungimea cozii...........................................159


FIFO ......................................................... 159 lungimea maximă a cozii ..........................160
fluxul intrărilor în sistemul de aşteptare ... 159 lungimea medie a cozii ............. 163, 170, 175
formă pătratică mărimea optimă a comenzii de
negativ definită .................................... 122 reaprovizionare ....................................199
negativ semidefinită............................. 122 marja ...........................................................32
pozitiv definită..................................... 122 matrice triunghiulară..................................102
pozitiv semidefinită ............................. 122 maxim
funcţia lui Kolmogorov ............................ 242 global .....................................................45
funcţie local........................................................45
beta ...................................................... 237 mecanismul
convexă.................................................. 43 reaprovizionării ....................................194
de repartiţie .......................................... 233 serviciului.............................................159
decompozabilă media variabilei aleatoare .........................234
prospectiv........................................ 143 metoda
retrospectiv ..................................... 143 celor două faze .......................................76
gama .................................................... 236 colţului nord-vest .................................107
obiectiv .................................................. 14 costului minim .....................................108
pozitiv semidefinită ............................... 43 PERT......................................................29
strict concavă ......................................... 44 model ....................................................11, 12
strict convexă......................................... 43 de aşteptare ....................................15, 159
grad de stocare ...............................................15
exterior................................................... 18 modelare......................................................11
interior ................................................... 18 modele de
graf simulare................................................183
complet .................................................. 19 modele de stocare
neorientat ............................................... 19 cu cerere
orientat................................................... 17 continuă...........................................195
parţial..................................................... 18 discretă ............................................195
ponderat ................................................. 19 cu mai multe staţii................................195
simetric .................................................. 19 cu staţie ................................................195
simplu conex.......................................... 20 deterministe..........................................195
tare conex............................................... 18 dinamice...............................................195
indice de lipsă de stoc............................... 205 statice ...................................................195
înfăşurătoarea convexă ............................... 42 stochastice............................................195
intensitate de trafic ................................... 164 momentul lansării comenzii ......................195
intensitatea de trafic.................................. 175 muchiile grafului.........................................19
intensitatea optimă de încărcare a stocului223 mulţime convexă.........................................42
intensitatea procesului .............................. 238 multiplicatorii
intensităţi de deces.................................... 161 lui Lagrange ...........................................48
intensităţi de natalitate.............................. 161 simplex.................................................104
intervalul de control.................................. 195 nivel de reaprovizionare............................195
inventar ..................................................... 193 nivelul mediu al stocului...........................199
ipoteză nod
alternativă ............................................ 239 ascendent................................................18
statistică ............................................... 239 descendent..............................................18
lagrangean .................................................. 46 precedent................................................18
lanţ.............................................................. 19 succesor..................................................18
eulerian .................................................. 20 nodurile grafului .........................................17
hamiltonian ............................................ 20 numărul de clienţi din sistem ....................159
lege de evoluţie......................................... 142 numărul de staţii de serviciu .....................160
lema numărul mediu al clienţilor de la coadă ....165
Farkas-Minkowski ................................. 48 numărul mediu de clienţi de la coadă........181
substituţiei.............................................. 87 numărul mediu de clienţi din sistem 162, 165,
lot de reaprovizionare ............................... 194 .....................................................169, 181
Index alfabetic 249

numărul mediu de clienţi serviţi la un punct admisibil............................................15


moment dat .......................................... 169 punct de extrem...........................................43
numărul mediu de servicii ........................ 176 punct regulat ...............................................47
numărul mediu de staţii de servire care rata
lenevesc ............................................... 177 cererii ...................................................193
numărul mediu de staţii în lucru ............... 181 ieşirilor .................................................193
numărul mediu de staţii neocupate ........... 163 intrărilor ...............................................193
obiectiv ....................................................... 13 regiunea admisibilă .....................................15
optimizare............................................. 13, 14
regiunea critică a testului ..........................240
pivot............................................................ 62
regula dreptunghiului..................................62
poligonul soluţiilor.................................... 74
repartiţia
politică ...................................................... 141
de reaprovizionare ............................... 195 Beta ................................................34, 237
optimă .................................................. 144 Erlang...........................................218, 236
pondere ....................................................... 20 exponenţială .................................164, 236
ponderea arcelor ......................................... 19 normală ................................................237
prag de semnificaţie.................................. 240 Poisson .................................................236
preţ dual...................................................... 68 uniformă...............................................235
preţ umbră ................................................... 91 repartiţii Markov.......................................236
probabilitate.............................................. 231 restricţie
problemă activă......................................................46
de decizii.............................................. 142 inactivă...................................................46
cu orizont finit................................. 141 restricţii.......................................................13
cu orizont infinit ............................. 141 riscul de genul
de programare al doilea................................................240
convexă ............................................. 44 întâi ......................................................240
liniară ................................................ 15 rotunjirea rezultatelor................................202
pătratică .................................... 15, 124
simulare probabilistă.................................184
forma canonică........................... 124
soluţie
forma standard ........................... 126
duală ...................................................... 81 admisibilă.........................................15, 56
nedegenerată .......................................... 72 de bază ...................................................56
primală................................................... 81 degenerată ..............................................56
probleme de stoc globală....................................................45
aprovizionare ....................................... 192 locală......................................................45
producţie............................................... 193 nedegenerată ..........................................56
proces optimă ..............................................15, 57
aleatoriu ............................................... 237 starea
cu creşteri independente ...................... 238 finală ....................................................142
Markov ................................................ 238 iniţială ..................................................142
Poisson................................................. 238 staţie de servire ..........................................159
stochastic ...................... v. proces aleatoriu stoc....................................................192, 193
proces de naştere şi deces ......................... 160 stoc intangibil....................................197, 215
program subgraf ........................................................18
de bază ................................................... 57 tabel simplex...............................................62
de transport ............................................ 52
teoria
degenerat................................................ 71
aşteptării ..............................................159
optim...................................................... 57
grafurilor................................................15
program liniar ............................................. 51
forma canonică ....................................... 55 test de concordanţă ...................................239
forma standard ....................................... 55 testul
programare........................... 14, v. optimizare χ2 ........................................................241
P P

cu restricţii ............................................. 14 lui Kolmogorov....................................242


dinamică ................................................ 15 timpul de
fară restricţii........................................... 14 aşteptare ...............................................159
250 Modele şi algoritmi de optimizare

avans .................................................... 195 variabilă


neocupare a staţiilor............................. 159 aleatoare ...............................................232
timpul mediu de normală standard .............................237
aşteptare în sistem 163, 165, 170, 177, 182 artificială ................................................76
aşteptare la coadă 163, 165, 170, 177, 182 ecart........................................................56
lenevire ................................................ 163 variabile
servire .................................................. 163 de decizie ...............................................12
topologia sistemului de servire................... 159 externe....................................................12
traiectoria optimă...................................... 144 intermediare ...........................................13
vârf vector de
adiacent.................................................. 18 decizie ..................................................141
al grafului............................................... 19 stare......................................................141
MODELE ŞI ALGORITMI
DE OPTIMIZARE

Conf. univ. dr. Romică Trandafir,


membru al catedrei de Matematică-
Informatică din Universitatea Tehnică de
Construcţii din Bucureşti, este absolvent al
Facultăţii de Matematică a Universităţii din
Bucureşti, promoţia 1974 şi doctor în
matematici din anul 1994. Desfăşoară o
susţinută activitate de cercetare în domeniul
matematicilor aplicate. Cercetările sale,
materializate într-un număr semnificativ de
articole publicate în reviste interne şi
internaţionale, abordează teme privind
modelarea stochastică, teoria informaţiei şi
analiza numerică. Este coautor al monografiei Bazele Analizei
Numerice, Editura Printech, 2001.

Lucrarea conţine modele şi algoritmi pentru optimizarea


activităţilor economice, elemente de teoria grafurilor, programare
convexă, liniară, pătratică şi dinamică, problema de transport, modele
de aşteptare şi de stocuri, fiind utilă cercetătorilor din domeniu,
inginerilor, economiştilor, precum şi studenţilor de la facultăţile
tehnice şi economice.

I SBN 9 7 3 - 8 4 6 6 - 7 6 - 8

9 789738 466760

Vous aimerez peut-être aussi