MODELE SI ALGORITMI DE OPTIMIZARE
MODELE SI ALGORITMI DE OPTIMIZARE
MODELE SI ALGORITMI DE OPTIMIZARE
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Seria „Matematică”<br />
<strong>MO<strong>DE</strong>LE</strong> ŞI <strong>ALGORITMI</strong><br />
<strong>DE</strong> <strong>OPTIMIZARE</strong>
OPTIMIZATION MO<strong>DE</strong>LS AND ALGORITHMS<br />
This book presents a set of optimization methods, models and algorithms. After<br />
the Introduction, where the reader is familiarized with the object of optimization<br />
and some applications of it, the book includes Graphs in Optimization, Convex<br />
Programming, Linear Programming, the Transportation Problem, Quadratic<br />
Programming, Dynamic Programming, Basics of Queuing Theory, Basics of<br />
Inventory Theory, and an Appendix.<br />
These chapters provide a minimum of knowledge for practical activities in<br />
engineering and economics.<br />
Many of the results are being formally established, but some theorems are listed<br />
without a proof, while providing a reference where the proof can be found. The<br />
methods and corresponding algorithms are illustrated by examples. Also, the solutions<br />
obtained by using the following software are included: Management Scientist, Excel,<br />
and MathCAD. Almost all chapters end with suggested problems.<br />
This book is aimed at engineers, economists, mathematicians and students of<br />
technical and economic faculties, being a useful tool for solving practical problems.<br />
MODÈLES ET ALGORITHMES D’OPTIMISATION<br />
Cet ouvrage présente un ensemble de modèles, de méthodes et d’algorithmes<br />
d’optimisation. Le premier chapitre, Introduction, où l’objet de l’optimisation et les<br />
principaux domaines d’application sont fournis, est suivi de Graphes en optimisation,<br />
Programmation convexe, Programmation linéaire, le Problème de transport,<br />
Programmation dynamique, Programmation quadratique, Éléments de la théorie files<br />
d’attente, Éléments de la théorie de stockes et une Annexe.<br />
Ces chapitres représentent un minimum de connaissances nécessaires dans les<br />
activités pratiques de management des ingénieurs et économistes.<br />
La plupart des résultats sont démontrés, mais il y a des résultats (théorèmes,<br />
propositions) qui sont acceptés sans démonstration, pour lesquelles on indique<br />
l’ouvrage où ils sont démontrés. Les méthodes et les algorithmes correspondants sont<br />
illustrés par exemples complètement résolus. On a donné également les solutions<br />
obtenues en utilisant les logiciels Management Scientist, Excel et MathCAD. Presque<br />
tous les chapitres finissent par des problèmes proposés à résoudre.<br />
L’ouvrage s’adresse aux ingénieurs, économistes, mathématiciens et étudiants des<br />
facultés techniques et économiques, étant un outil pour résoudre les problèmes<br />
pratiques.<br />
8
Romică Trandafir<br />
<strong>MO<strong>DE</strong>LE</strong> ŞI <strong>ALGORITMI</strong><br />
<strong>DE</strong> <strong>OPTIMIZARE</strong><br />
Editura AGIR<br />
Bucureşti, 2004<br />
Seria „Matematică”
ASOCIAŢIA GENERALĂ A INGINERILOR DIN ROMÂNIA<br />
Copyright © EDITURA AGIR, 2004<br />
Editură acreditată de CNC<strong>SI</strong>S<br />
Toate drepturile pentru această ediţie sunt rezervate.<br />
All rights reserved.<br />
Adresa: Calea Victoriei nr. 118, sector 1, Bucureşti, cod 010071;<br />
telefon: 40 21 212 81 04; 40 21 212 81 06 (redacţie);<br />
40 21 211 83 50 (difuzare); fax: 40 21 312 55 31;<br />
e-mail: editura@agir.ro; Internet: http://www.agir.ro<br />
Referenţi ştiinţifici:<br />
● prof. univ. dr. Ion Văduva;<br />
● prof. univ. dr. Ştefan Mititelu<br />
Redactor: ing. Adina Negoiţă<br />
Coperta: Răzvan Drăghici<br />
Bun de tipar: 25.08.2004; Coli de tipar: 15,5<br />
ISBN 973-8466-76-8<br />
Imprimat în România
PREFAŢĂ<br />
Lucrarea de faţă este o reuşită sinteză, care tratează în mod concis, dar şi<br />
riguros din punct de vedere matematic, problemele de optimizare.<br />
După o Introducere în care se formulează conceptele de bază ale construcţiei<br />
modelelor matematice şi ale descrierii problemelor de optimizare, lucrarea<br />
tratează sistematic o mare varietate de modele şi algoritmi de optimizare,<br />
care intervin în rezolvarea diverselor tipuri de probleme ridicate de practica<br />
inginerească, în particular în construcţii. Astfel, un prim capitol este dedicat<br />
formulării şi tratării unor modele şi algoritmi de optimizare din teoria<br />
grafurilor, legate de determinarea drumurilor minime, a fluxurilor minime/maxime<br />
sau a arborilor de acoperire de cost minim. Apoi, în cinci capitole distincte,<br />
sunt tratate la nivel teoretic evoluat, diverse probleme de programare matematică,<br />
cum sunt: programarea convexă programarea liniară, problema de<br />
transport, programarea pătratică şi programarea dinamică. În aceste capitole se<br />
fac remarcate construcţia şi analiza aprofundată a numeroşi algoritmi generali,<br />
dar şi a unor particularităţi ale acestora de un real interes practic.<br />
Un capitol special este dedicat analizei unor modele de teoria matematică<br />
a aşteptării, modele care au ca scop reglarea aşteptărilor şi fluxurilor în sistemele<br />
de servire în condiţii de incertitudine. Sunt tratate modele de aşteptare pentru sisteme<br />
cu o staţie de servire, cu coada finită sau infinită, sau sisteme de aşteptare cu<br />
mai multe staţii paralele. În toate aceste modele se presupune că venirile şi duratele<br />
serviciilor sunt aleatoare, de repartiţii cunoscute.<br />
În sfârşit, ultimul capitol al cărţii tratează modelele reprezentative de teoria<br />
matematică a stocurilor. Sunt tratate modele clasice care determină politici de<br />
reaprovizionare optime pentru stocarea unuia sau mai multor produse, precum şi<br />
unele modele aleatoare.<br />
Aproape toate metodele şi algoritmii descrişi sunt ilustrate prin exemple<br />
preluate cu precădere din practica activităţilor de construcţii, exemple ce sunt prelucrate<br />
cu ajutorul unor pachete de programe, fapt care măreşte mult utilitatea şi<br />
atractivitatea lucrării.<br />
Întrucât în tratarea unor modele intervin noţiuni şi metode ale teoriei probabilităţilor<br />
şi statisticii matematice, anexa cărţii prezintă tocmai noţiunile de bază<br />
necesare înţelegerii acelor modele.<br />
În concluzie, avem de-a face cu o carte bine construită, interesantă prin<br />
acurateţea, claritatea şi rigurozitatea problemelor tratate şi care oferă posibilităţi<br />
de aplicare la rezolvarea multor probleme practice, ea prezentând deci un interes<br />
deosebit pentru o clasă largă de cititori.<br />
Bucureşti, 20 iulie 2004<br />
Prof. univ. dr. Ion Văduva
6<br />
Modele şi algoritmi de optimizare
CUPRINS<br />
1. Introducere .....................................................................................................................11<br />
1.1. Obiectul optimizării ..................................................................................................11<br />
1.1.1. Construcţia modelului.....................................................................................11<br />
1.1.2. Concepte de bază în modelare ........................................................................12<br />
1.2. Tipuri de probleme ...................................................................................................14<br />
1.2.1. Dimensiunea problemelor...............................................................................16<br />
1.2.2. Algoritmi iterativi şi convergenţă ...................................................................16<br />
2. Grafuri în optimizare.....................................................................................................17<br />
2.1. Definiţii şi algoritmi..................................................................................................17<br />
2.1.1. Grafuri orientate..............................................................................................17<br />
2.1.2. Grafuri neorientate..........................................................................................19<br />
2.2. Căutarea unui arbore de acoperire de lungime minimă ............................................20<br />
2.2.1. Algoritmul lui Kruskal....................................................................................21<br />
2.2.2. Algoritmul lui Prim.........................................................................................22<br />
2.3. Algoritmul lui Dijkstra .............................................................................................25<br />
2.4. Metoda PERT ...........................................................................................................29<br />
2.5. Probleme propuse .....................................................................................................35<br />
3. Programare convexă......................................................................................................43<br />
3.1. Mulţimi şi funcţii convexe........................................................................................43<br />
3.2. Extreme condiţionate ................................................................................................45<br />
3.2.1. Cazul restricţiilor egalităţi...............................................................................48<br />
3.2.2. Cazul restricţiilor inegalităţi ...........................................................................49<br />
4. Programare liniară ........................................................................................................51<br />
4.1. Exemple de probleme de programare liniară ............................................................51<br />
4.1.1. Utilizarea optimă a resurselor .........................................................................51<br />
4.1.2. Problema de transport .....................................................................................52<br />
4.1.3. Alocarea optimă a fondurilor financiare .........................................................54<br />
4.1.4. Gestionarea optimă a unui depozit..................................................................54<br />
4.1.5. Problema dietei ...............................................................................................55<br />
4.2. Diferite forme ale problemelor de programare liniară ..............................................56<br />
4.3. Algoritmul simplex...................................................................................................57<br />
4.4. Fundamentele algoritmului simplex .........................................................................59<br />
4.5. Enunţul algoritmului simplex ...................................................................................62<br />
4.6. Tabelul simplex şi transformarea sa .........................................................................63<br />
4.7. Exemplu....................................................................................................................65<br />
4.8. Convergenţa algoritmului simplex. Degenerare şi ciclare ........................................72<br />
4.9. Interpretarea geometrică a algoritmului simplex ......................................................74<br />
4.10. Interpretarea economică a algoritmului simplex.....................................................76<br />
4.11. Metoda celor două faze...........................................................................................77<br />
4.12. Dualitatea în programarea liniară............................................................................82<br />
4.13. Teorema fundamentală a dualităţii..........................................................................84
8<br />
Modele şi algoritmi de optimizare<br />
4.14. Algoritmul simplex dual .........................................................................................89<br />
4.15. Interpretarea economică a algoritmului simplex dual.............................................92<br />
4.16. Determinarea unei soluţii dual admisibile ..............................................................94<br />
4.17. Probleme propuse ...................................................................................................95<br />
5. Problema de transport.................................................................................................102<br />
5.1. Fundamentele algoritmului de transport .................................................................102<br />
5.2. Enunţul algoritmului de transport...........................................................................107<br />
5.3. Determinarea soluţiei iniţiale de bază.....................................................................108<br />
5.4. Exemplu..................................................................................................................109<br />
5.5. Problema atribuirii sarcinilor ..................................................................................119<br />
5.6. Probleme propuse ...................................................................................................119<br />
6. Programare pătratică ..................................................................................................122<br />
6.1. Exemple de probleme care conduc la programare pătratică ......................................122<br />
6.1.1. Utilizarea optimă a resurselor .......................................................................122<br />
6.1.2. Problema investiţiei ......................................................................................123<br />
6.1.3. Regresii liniare..............................................................................................123<br />
6.2. Definiţii. Proprietăţi................................................................................................124<br />
6.3. Fundamentarea algoritmului lui Wolfe...................................................................127<br />
6.4. Forma scurtă a algoritmului lui Wolfe....................................................................132<br />
6.5. Probleme propuse ...................................................................................................141<br />
7. Programare dinamică ..................................................................................................143<br />
7.1. Generalităţi .............................................................................................................143<br />
7.2. Analiza retrospectivă ..............................................................................................146<br />
7.2.1. Rezolvarea în cazul aditiv.............................................................................147<br />
7.2.2. Problema repartiţiei investiţiilor ...................................................................148<br />
7.2.3. Problema gestiunii stocului...........................................................................152<br />
7.2.4. Problema alocării optime a resurselor...........................................................155<br />
7.3. Probleme propuse ...................................................................................................157<br />
8. Elemente de teoria aşteptării.......................................................................................161<br />
8.1. Introducere în teoria aşteptării ................................................................................161<br />
8.2. Caracterizarea procesului N(t) ca proces de naştere şi deces..................................162<br />
8.3. Modelul Po(λ)/Exp(µ)/1:(∞,FIFO)........................................................................165<br />
8.4. Modelul Po(λ)/Exp(µ)/1:(m, FIFO).......................................................................170<br />
8.5. Modelul Po(λ)/Exp(µ)/c:(∞, FIFO) ........................................................................174<br />
8.6. Modelul P0(λ)/Exp(µ)/c:(m,FIFO).........................................................................180<br />
8.7. Simulare..................................................................................................................185<br />
8.8. Probleme propuse ...................................................................................................188<br />
9. Elemente de teoria stocurilor ......................................................................................194<br />
9.1. Introducere în teoria stocurilor ...............................................................................194<br />
9.1.1. Punerea problemei ........................................................................................194<br />
9.1.2. Concepte utilizate în teoria stocurilor ...........................................................195<br />
9.2. Modelul clasic al lotului economic.........................................................................199<br />
9.3. Modelul clasic al lipsei de stoc ...............................................................................204
Cuprins<br />
9.3.1. Modelul de stocare considerând influenţa preţului de cumpărare ................209<br />
9.3.2. Modelul de stocare considerând influenţa costului de producţie..................209<br />
9.4. Extensii ale modelului clasic al lotului economic...................................................210<br />
9.5. Model pentru stocarea mai multor tipuri de produse ..............................................216<br />
9.6. Modele stochastice de stocare.................................................................................216<br />
9.6.1. Determinarea nivelului optim de reaprovizionare.........................................217<br />
9.6.2. Modele de stocare pe o singură perioadă cu cerere aleatoare .......................221<br />
9.6.3. Modele stochastice de stocare bazate pe modele de aşteptare ......................224<br />
9.6.4. Modelul P0(λ)/Exp(µ)/1:(∞, FIFO)...............................................................224<br />
9.6.5. Modelul cu mai multe staţii paralele şi cu timp de avans L aleatoriu ...........226<br />
9.7. Probleme propuse ...................................................................................................230<br />
Anexă.................................................................................................................................233<br />
A.1. Câmp de evenimente. Axioma lui Kolmogorov ....................................................233<br />
A.1.1. Evenimente. Probabilităţi.............................................................................233<br />
A.1.2. Probabilitate .................................................................................................233<br />
A.1.3. Câmp de probabilitate complet aditiv ..........................................................233<br />
A.1.4. Probabilitate condiţionată ............................................................................234<br />
A.1.5. Evenimente independente ............................................................................234<br />
A.2. Variabile aleatoare .................................................................................................234<br />
A.2.1. Funcţia de repartiţie .....................................................................................235<br />
A.2.2. Densitate de repartiţie ..................................................................................236<br />
A.2.3. Variabile aleatoare independente.................................................................236<br />
în sensul Steinhaus−Kaç .........................................................................................236<br />
A.2.4. Valoare medie. Dispersie. Momente............................................................236<br />
A.3. Câteva repartiţii clasice..........................................................................................237<br />
A.3.1. Repartiţia uniformă ......................................................................................237<br />
A.3.2. Repartiţii Markov.........................................................................................237<br />
A.3.3. Repartiţia normală unidimensională a lui Gauss..........................................238<br />
A.3.4. Repartiţia Beta .............................................................................................239<br />
A.4. Procese aleatoare....................................................................................................239<br />
A.5. Teste de concordanţă .............................................................................................241<br />
A.5.1. Etapele verificării ipotezelor statistice .........................................................242<br />
2<br />
A.5.2. Testul de concordanţă χ ..........................................................................243<br />
A.5.3. Testul Kolmogorov ......................................................................................243<br />
Bibliografie .......................................................................................................................245<br />
Index alfabetic ..................................................................................................................247<br />
9
10<br />
Modele şi algoritmi de optimizare
1. INTRODUCERE<br />
1.1. Obiectul optimizării<br />
Un manager vrea să aleagă acel curs al activităţii sale care va fi cel mai<br />
performant în atingerea scopului firmei sale. În judecarea eficienţei diferitelor decizii<br />
posibile, trebuie să se folosească anumite criterii pentru măsurarea performanţei<br />
activităţii în discuţie. Este indicat să se urmărească etapele (Bonini et al, 1997):<br />
1. Stabilirea criteriului de eficienţă<br />
2. Selectarea unei mulţimi de alternative posibile<br />
3. Determinarea unui model care să fie folosit şi a valorilor parametrilor procesului<br />
4. Determinarea alternativei care optimizează criteriul stabilit la etapa 1.<br />
Deoarece problemele lumii reale devin extrem de complicate este necesar să se<br />
facă o abstractizare şi o simplificare a realităţii într-un model. Să considerăm de<br />
exemplu problema construirii unei clădiri. Este necesară o durată îndelungată<br />
pentru culegerea de informaţii privind locul unde se amplasează, caracteristicile<br />
fizice ale clădirii, studiul detaliat al condiţiilor climatice şi de sol, influenţa asupra<br />
costurilor, sursele de finanţare şi costurile. Decidentul poate hotărî să considere în<br />
mod deosebit şi în detaliu toate celelalte potenţiale folosite în această perioadă şi în<br />
perioadele viitoare. Dacă decidentul adoptă strategia colectării tuturor informaţiilor<br />
înainte de a acţiona, atunci nici o acţiune nu va avea loc. Mintea umană nu poate<br />
considera toate aspectele empirice ale problemei. Anumite atribute ale problemei<br />
trebuie ignorate ca să se poată lua o decizie. Decidentul trebuie să identifice<br />
factorii cei mai relevanţi pentru problemă. Abstracţia şi simplificarea sunt paşi<br />
necesari în rezolvarea oricărei probleme umane.<br />
1.1.1. Construcţia modelului<br />
După ce decidentul a identificat factorii critici ai problemei concrete pe care o<br />
are de rezolvat, aceştia trebuie combinaţi în mod logic formând astfel modelul. Un<br />
model este reprezentarea simplificată a problemei reale. Prin modelare, fenomenului<br />
natural complex i se reproduce comportarea esenţială cu mai puţine variabile şi care<br />
sunt legate între ele mai simplu. Avantajele unui model simplu sunt:<br />
1) economia de timp de concepere<br />
2) poate fi înţeleasă realitatea de către decident<br />
3) dacă este necesar, modelul poate fi modificat repede şi eficient.
12<br />
Modele şi algoritmi de optimizare<br />
Un model cât mai apropiat de realitate cere un timp excesiv în construcţie.<br />
Decidentul doreşte ca modelul simplificat să prezică rezultate rezonabile şi să fie<br />
consistent cu acţiunea efectivă. După ce modelul a fost construit se pot obţine<br />
concluziile prin intermediul acţiunilor logice. Decidentul îşi bazează acţiunile sau<br />
deciziile pe aceste concluzii. Dacă deducerea concluziilor din modelul abstract este<br />
corectă şi dacă variabilele importante au fost abstractizate atunci soluţia modelului<br />
ar servi ca o soluţie efectivă pentru problema empirică.<br />
Există două surse de erori în folosirea modelului pentru factorul de decizie:<br />
1) omiterea unor variabile importante din model<br />
2) erori în definirea relaţiilor dintre variabile.<br />
Tehnica abordată pentru descrierea şi stabilirea legăturilor variabilelor selectate<br />
depinde de natura variabilelor. Dacă variabilele pot fi date în reprezentare<br />
cantitativă atunci modelele matematice sunt cele mai indicate. Matematica<br />
împreună cu calculatoarele moderne fac posibilă rezolvarea problemelor care cer<br />
modele de mare complexitate şi atunci când analiza cantitativă se poate aplica ea<br />
facilitează procesul de luare a deciziilor.<br />
În luarea unei decizii, se stabileşte criteriul de decizie, se selectează<br />
alternativele, se construieşte un model, se evaluează alternativele folosind modelul<br />
apoi se selectează cea mai bună alternativă.<br />
Un model este o abstracţie şi o simplificare a unei probleme reale, încorporând<br />
ideal elementele esenţiale şi relaţiile din problema reală.<br />
Rezolvarea unui model înseamnă obţinerea concluziilor logice care rezultă,<br />
concluzii ce constituie un ghid efectiv în luarea deciziei dacă modelul este proiectat<br />
şi rezolvat corect. Luarea deciziei implică informaţia cantitativă obţinută din model<br />
cu judecarea intuitivă a factorilor calitativi.<br />
1.1.2. Concepte de bază în modelare<br />
Primul pas în construirea unui model este stabilirea factorilor şi variabilelor pe<br />
care decidentul le consideră importante. Acestea pot fi clasificate în cinci categorii:<br />
variabile de decizie, variabile exogene, restricţii, măsuri ale performanţei şi<br />
variabile intermediare.<br />
Variabilele de decizie sunt acele variabile pe care le controlează decidentul, ele<br />
reprezentând alegerile alternative pentru decident. De exemplu: trebuie să se<br />
introducă un nou produs în fabricaţie. Decidentul poate alege: să se introducă sau<br />
nu, preţul, culoarea, suma alocată reclamei etc.<br />
Variabilele exogene sau externe sunt acelea care sunt importante în problema<br />
de decizie, dar sunt controlate de factori externi sferei decidentului. De exemplu:<br />
preţul materiilor prime pentru realizarea noului produs.
1.Introducere<br />
Restricţiile pot fi legate de capacităţile de producţie, resurse, limitări<br />
legislative, politica firmei etc.<br />
Măsuri ale performanţei. În luarea unei decizii decidentul are un scop, un<br />
obiectiv pe care încearcă să-l atingă. Criteriile sau măsurile performanţei sunt<br />
expresii cantitative ale acestor obiective.<br />
Variabilele intermediare sunt necesare pentru includerea tuturor factorilor<br />
importanţi în problema de decizie. Adesea ele leagă factorii de cost şi de câştig. Se<br />
folosesc să lege variabilele de decizie şi exogene de măsurile de performanţă.<br />
*<br />
* *<br />
A face « cel mai bine posibil » este sensul oricărei atitudini naturale în viaţa de<br />
zi cu zi. Dar aceasta nu are decât un sens relativ în raport cu nişte restricţii impuse<br />
din exterior sau acceptate de bunăvoie (Cohen, 2000).<br />
Pentru un inginer « a face cel mai bine posibil » ar trebui să fie un obiectiv<br />
permanent atunci când are de conceput o clădire, de dimensionat o instalaţie etc.<br />
Expresia este relativizată în funcţie de buget, de securitate, sau altele, restricţii al<br />
căror nivel a făcut la rândul său obiectul deciziilor prealabile şi adesea exterioare.<br />
Cuvintele « a optimiza, optimizare etc. » sunt presupuse să reflecte această idee<br />
de « cel mai bine posibil ». În viaţa curentă alegerile posibile se limitează adesea la<br />
două (atunci le numim alternative) sau câteva unităţi, de tipul că algoritmul care ia<br />
decizia se reduce la a înfăţişa, explicit sau nu, toate posibilităţile, să considere şi să<br />
evalueze consecinţele lor probabile şi să reţină pe cea care pare « cea mai bună »<br />
(dar cea mai bună are sens doar în măsura în care un criteriu de alegere a fost<br />
definit mai înainte).<br />
În problemele tehnice, alegerile posibile reprezintă adesea un continuu (de<br />
exemplu: ce dimensiune să se dea unei grinzi ?) şi o enumerare exhaustivă a<br />
posibilităţilor este de neconceput. Atunci trebuie găsit un algoritm mai performant,<br />
adică o metodă pentru a găsi drumul spre soluţia cea mai bună dintre toate soluţiile<br />
posibile.<br />
Optimizarea poate fi definită ca ştiinţa determinării «celei mai bune» soluţii la<br />
anumite probleme definite matematic, care sunt adesea modele ale realităţii fizice.<br />
Ea implică studiul criteriilor de optimalitate pentru probleme, determinarea soluţiei<br />
cu metode algoritmice, studiul structurii acestor metode şi experimentarea pe<br />
calculator a metodelor cu date experimentale şi cu date reale.<br />
Metodele de optimizare au o largă aplicabilitate în aproape orice activitate în<br />
care sunt prelucrate informaţiile numerice: ştiinţă, inginerie, matematică, economie,<br />
comerţ etc.<br />
O selecţie a domeniilor în care apar probleme de optimizare ar cuprinde:<br />
proiectarea reactoarelor chimice, a aparatelor aerospaţiale, a clădirilor, a podurilor,<br />
în comerţ în probleme de alocarea resurselor, planificarea producţiei, a stocurilor,<br />
în diferite ramuri ale analizei numerice, în ajustarea datelor, principii variaţionale<br />
13
14<br />
Modele şi algoritmi de optimizare<br />
în sisteme de ecuaţii diferenţiale şi cu derivate parţiale, funcţii de penalitate etc.<br />
(Cohen, 1995).<br />
Se optimizează o funcţie obiectiv care cuantifică produsul unui proces<br />
economic sau profitul rezultat în urma aplicării sistemului.<br />
Conceptul de optimizare este bine încetăţenit ca principiul de bază în analiza<br />
problemelor complexe de decizie sau alocare. Folosirea optimizării se bazează pe<br />
concentrarea atenţiei asupra unui singur obiectiv conceput să cuantifice performanţa<br />
şi calitatea deciziei într-o problemă ce ar necesita determinarea valorilor unui număr<br />
mare de variabile interconectate. Acest obiectiv este maximizat sau minimizat supus<br />
unor restricţii care să limiteze alegerea variabilelor de decizie. Dacă un aspect al<br />
problemei poate fi identificat şi caracterizat printr-un obiectiv (de exemplu: profitul<br />
într-o afacere) atunci optimizarea poate să ofere un cadru adecvat pentru o astfel de<br />
analiză. Optimizarea ar trebui privită ca un instrument de concepere şi analiză, şi nu<br />
ca un principiu care să ducă la soluţia corectă din punct de vedere filozofic.<br />
Formularea problemei implică întotdeauna găsirea unui echilibru între<br />
construirea unui model suficient de complex pentru a descrie cât mai bine<br />
problema şi uşurinţa de rezolvare a acestuia.<br />
1.2. Tipuri de probleme<br />
Termenul programare, în această lucrare va fi sinonim cu optimizare şi îşi are<br />
originea în planificarea optimală.<br />
Când variabilele sunt supuse unor restricţii (relaţii) avem de-a face cu<br />
programare cu restricţii, care face obiectul acestei lucrări. În lipsa restricţiilor<br />
spunem că avem programare fară restricţii (Luenberger, 1989).<br />
Problemele fără restricţii par lipsite de proprietăţi structurale astfel încât<br />
aplicabilitatea lor în probleme practice este redusă.<br />
Problemele cu restricţii permit modelarea fenomenelor complexe prin<br />
descompunerea în subprobleme şi fiecare subproblemă având mai multe restricţii.<br />
Forma generală a unei probleme de programare cu restricţii este<br />
⎪<br />
⎪<br />
⎩<br />
g i (x)<br />
≤ 0 i ∈I<br />
min ⎧<br />
n<br />
f ( x) x ∈R<br />
⎨g<br />
i (x ) = 0 i ∈E<br />
(1.1)<br />
unde: f este funcţia obiectiv,<br />
gi sunt funcţiile care dau restricţiile asupra variabile lor x1, x2, …, xn,<br />
E este mulţimea indicilor pentru restricţiile cu egalitate, iar<br />
I este mulţimea indicilor pentru restricţiile cu inegalitate.<br />
Restricţiile de forma g i (x ) ≤ bi<br />
pot fi puse sub forma g i ( x ) − bi<br />
≤ 0 .
1.Introducere<br />
n<br />
Definiţia 1.1. Un punct x ∈R<br />
care verifică restricţiile (1.1) se numeşte punct<br />
admisibil (realizabil) sau soluţie admisibilă şi mulţimea tuturor acestor puncte R,<br />
formează<br />
regiunea admisibilă (realizabilă).<br />
*<br />
Definiţia 1.2. O soluţie admisibilă x ∈R<br />
este o soluţie optimă pentru problema<br />
(1.1) dacă ( x ) ≤ ( x)<br />
, ( ∀)<br />
x ∈R<br />
*<br />
f f<br />
.<br />
Prin schimbarea<br />
max f ( x) = − min{<br />
− f ( x)<br />
} ,<br />
problema de maximizare devine o problemă de minimizare, aşa că în continuare se<br />
vor considera numai probleme de minimizare.<br />
Dacă toate funcţiile gi(x) care dau restricţiile sunt liniare şi funcţia obiectiv<br />
este liniară, problema (1.1) se numeste problemă de programare liniară, iar dacă<br />
funcţia obiectiv este pătratică atunci problema (1.1) se numeşte problemă de<br />
programare pătratică.<br />
Programarea liniară permite rezolvarea unei game largi de probleme cu un efort<br />
redus. Popularitatea programării liniare se datorează în principal etapei de<br />
formulare, şi nu celei de rezolvare numerică, deoarece multe dintre restricţiile şi<br />
obiectivele care apar în practică sunt liniare prin definiţie.<br />
Optimizarea sistemelor reale cu evoluţie în etape constituie obiectul<br />
programării dinamice, care are la bază pricipiul de optimalitate al lui Bellman<br />
(Kaufmann, II, 1967), care poate fi exprimat astfel: Orice politică optimă nu poate<br />
fi alcătuită decât din subpolitici optime.<br />
Fenomenele de aşteptare se optimizează cu modele de aşteptare care dau<br />
informaţii asupra organizării sistemului în vederea reducerii timpilor de aşteptare în<br />
sistem, a reducerii cheltuielilor de funcţionare a sistemului de aşteptare etc.<br />
Asigurarea unui regim optim de funcţionare a unui proces de producţie sau<br />
aprovizionarea optimă cu anume sortimente a cererilor pieţei se realizează cu<br />
ajutorul modelelor de stocare.<br />
Ca o aplicaţie practică a teoriei grafurilor este prezentată organizarea şi<br />
planificarea proiectelor complexe şi stabilirea duratei minime de realizare a acestora.<br />
Toate aceste modele fac obiectul acestei lucrări, fiind prezentate soluţiile<br />
modelelor,<br />
exemple practice rezolvate fie manual, fie cu ajutorul<br />
Solver-ului din<br />
EXCEL,<br />
fie cu ajutorul pachetului de programe specializat în rezolvarea<br />
problemelor de optimizare, Management Scientist (MS), fie cu ajutorul pachetului<br />
de programe MathCAD.<br />
15
16<br />
1.2.1. Dimensiunea problemelor<br />
Modele şi algoritmi de optimizare<br />
O măsură a complexităţii problemei de programare este dimensiunea acesteia<br />
exprimată prin numărul de necunoscute şi de restricţii (Luenberger, 1989).<br />
Dimensiunea problemelor care pot fi rezolvate a crescut o dată cu dezvoltarea<br />
teoriei şi a tehnicilor de calcul.<br />
Se pot distinge acum trei categorii de probleme: de dimensiune redusă (cu cel<br />
mult 5 variabile sau restricţii), de dimensiune medie (între 5 şi 100 de variabile sau<br />
restricţii) şi de dimensiuni mari (cu peste 100 de variabile şi restricţii). Această<br />
clasificare reflectă nu numai diferenţe de dimensiuni, dar şi de abordare. Astfel<br />
problemele<br />
de dimensiuni mici pot fi rezolvate de mână sau cu un calculator de<br />
buzunar. Problemele de dimensiuni medii pot fi rezolvate pe un calculator, folosind<br />
programe matematice generale. Problemele de dimensiuni mari necesită programe<br />
sofisticate care exploatează caracteristicile particulare ale problemei şi de obicei se<br />
rulează<br />
pe calculatoare de mare capacitate.<br />
Teoria iniţială a optimizării s-a concentrat asupra obţinerii rezultatelor<br />
teoretice,<br />
ignorând<br />
aspectele de calcul ale metodelor propuse. Abordările recente se axează pe<br />
exploatarea<br />
caracteristicilor calculatoarelor, obţinând soluţia prin metode iterative.<br />
1.2.2. Algoritmi iterativi şi convergenţă<br />
vectori x0, x1, …, xk, …, fiecare îmbunătăţind<br />
aloarea funcţiei obiectiv, faţă de precedentul. Acest şir converge către x * Cea mai importantă caracteristică a calculatoarelor este capacitatea lor de a<br />
efectua operaţii repetitive într-un mod eficient şi din această cauză majoritatea<br />
algoritmilor de rezolvare a problemelor de optimizare sunt iterativi (Luenberger,<br />
1989). În căutarea unei soluţii se alege un vector iniţial x0 şi algoritmul determină<br />
un vector x1 care conduce la o valoare mai bună a funcţiei obiectiv; procesul se<br />
repetă obţinându-se un şir de<br />
v<br />
, soluţia<br />
problemei. În problemele de programare liniară soluţia se obţine după un număr<br />
finit de paşi. În probleme de programare neliniară şirul nu atinge niciodată soluţia,<br />
dar converge către ea. Practic, algoritmul se opreşte când s-a obţinut un punct<br />
suficient de aproape de soluţie.<br />
Teoria algoritmilor iterativi poate fi împarţită în trei părţi. Prima parte se ocupă<br />
cu crearea de algoritmi. A doua parte, numită şi analiza convergenţei globale,<br />
analizează convergenţa unui algoritm către soluţia optimă<br />
atunci când se<br />
iniţializează cu un punct depărtat de soluţia optimă. Cea de-a treia componentă se<br />
numeşte analiza convergenţei locale şi studiază rata de convergenţă a şirului către<br />
soluţia optimă. Este esenţial când se recomandă un algoritm să se menţioneze şi<br />
o estimare a timpului necesar pentru obţinerea soluţiei. Lucrarea de faţă<br />
argumentează convergenţa majorităţii algoritmilor prezentaţi.
2. GRAFURI ÎN <strong>OPTIMIZARE</strong><br />
2.1. Definiţii şi algoritmi<br />
2.1.1. Grafuri orientate<br />
Definiţia 2.1. Se numeşte graf orientat o pereche de mulţimi G=(X,U), unde: X<br />
este o mulţime finită şi nevidă, ale cărei elemente se numesc noduri (vârfuri) , iar<br />
U este o mulţime formată din perechi ordonate (x,y), x, y ∈ X , numită mulţimea<br />
arcelor (muchii). Dacă ( x,<br />
y)<br />
∈U<br />
, x se numeşte extremitatea iniţială (originea) a<br />
arcului, iar y, extremitatea finală (extremitatea).<br />
Grafurile permit modelarea unui număr mare de situaţii (Henry-Labordere, 1995).<br />
Exemple de grafuri:<br />
a) o reţea rutieră (cu drumuri având sens unic) – vârfurile sunt intersecţiile,<br />
iar arcele sunt drumurile.<br />
b) ordinea lucrărilor într-un<br />
şantier.<br />
c) relaţiile stabilite între<br />
2<br />
indivizi (situaţie întâlnită<br />
în psihologia de grup) –<br />
de exemplu: X={1, 2,<br />
3, 4} , U={(1, 2), (3, 4) ,<br />
1<br />
(4, 2), (4, 3)}. Grafic se<br />
poate reprezenta ca în<br />
Figura 2.1. Individul 1 îl<br />
4<br />
apreciază pe individul 2,<br />
individul 2 nu îl apreciază<br />
pe individul 1, individul 4<br />
3<br />
îl apreciază pe individul<br />
2, iar indivizii 3 şi 4 se<br />
apreciază reciproc.<br />
Figura 2.1<br />
Definiţia 2.2. Se numeşte drum într-un graf orientat un şir de arce<br />
{ u1,...,<br />
u u ∈U<br />
, i = 1,<br />
−1}<br />
D i<br />
= k k cu proprietatea că extremitatea finală a arcului ui<br />
coincide cu extremitatea iniţială a arcului ui+1 , i = 1, k −1<br />
.
18<br />
Modele şi algoritmi de optimizare<br />
Dacă extremitatea finală a arcului uk coincide cu extremitatea iniţială a arcului<br />
u1 atunci drumul se numeşte circuit.<br />
Un circuit format<br />
dintr-un singur arc se numeşte buclă.<br />
Dacă<br />
nodurile arcelor drumului sunt distincte două câte două, drumul se numeşte<br />
elementar.<br />
Exemplu. În Figura 2.1 (1, 2, 4, 3) este un drum, iar (1, 2, 3) nu este drum.<br />
Definiţia 2.3. Un nod x dintr-un graf orientat G se numeşte precedentul altui<br />
nod y din G dacă exist ă arcul ( x, y)<br />
∈U<br />
.<br />
Un nod y dintr-un graf orientat G se numeşte succesorul altui nod x din G<br />
dacă există arcul ( x, y)<br />
∈U<br />
.<br />
Un nod x dintr-un graf orientat G se numeşte ascendentul altui nod y din G<br />
dacă există un drum de origine x şi extremitate y.<br />
Un nod y dintr-un graf orientat G se numeşte descendentul altui nod x din G<br />
dacă există un drum de origine x şi extremitate y.<br />
Vârful y este adiacent vârfului x dacă (x, y)∈U sau (y, x)∈U .<br />
Fie G=(X,U) un graf orientat şi A⊂X. Arcul u ∈U este incident mulţimii A<br />
spre exterior dacă extremitatea sa finală aparţine lui A, iar extremitatea iniţială nu<br />
aparţine<br />
lui A. Arcul u ∈ U este incident mulţimii A spre interior dacă este<br />
incident spre exterior mulţimii A = X − A .<br />
Definiţia 2.4. Se numeşte gradul exterior al lui x şi se notează d + (x) numărul de<br />
noduri succesoare lui x.<br />
e numeşte gradul lui x şi se notează cu d(x) numărul d + (x)+ d − Se numeşte gradul interior al lui x şi se notează d<br />
(x),<br />
− (x) numărul de noduri<br />
precedente lui x.<br />
S<br />
(d(x)=d + (x)+ d − (x)).<br />
Definiţia 2.5.<br />
Fie G=(X,U) un graf orientat şi fie U ′ ⊂ U , G′<br />
= ( X , U ′ ) se<br />
numeşte<br />
graf parţial al lui G.<br />
Fie A ⊂ X şi UA={u∈U astfel încât cele două extremităţi ale lui u să fie în A} .<br />
GA<br />
=(A, UA) se numeşte subgraf al lui G.<br />
Definiţia 2.6. Graful se numeşte tare conex dacă pentru orice perechi de vârfuri<br />
x, y ∈ X există un drum din x plecând la y .<br />
Definiţia 2.7. Se numeşte arborescenţă un graf tare conex şi fără cicluri,<br />
orientat, a cărui orientare este astfel încât fiecare vârf al său cu excepţia unuia<br />
singur, numit rădăcină, este extremitatea terminală a unui arc şi numai unul.
2. Grafuri în optimizare 19<br />
Definiţia 2.8. Se numeşte graf ponderat sau valuat ş i se notează G=(X, U, l) un<br />
graf (X, U) căruia i se asociază o funcţie l : U → R numită ponderea arcelor.<br />
Exemple: a) l(x,y) = lungimea tronsonului de drum, (x,y) care<br />
uneşte localităţile x şi y;<br />
b) l(x,y) = capacitatea tronsonului de drum (x,y).<br />
Definiţia 2.9. Se numeşte reţea de<br />
transport un graf orientat, G=(X,U), fără<br />
bucle, cu proprietăţile următoare:<br />
• există un nod x0 unic, numit originea reţelei, şi care nu are ascendenţi;<br />
• există un nod xf unic, numit destinaţia reţelei, şi care nu are descendenţi;<br />
• fiecărui arc u ∈U îi este asociat un număr l(<br />
u)<br />
≥ 0 numit capacitatea<br />
arcului u .<br />
2.1.2. Grafuri neorientate<br />
Definiţia 2.10. Se numeşte graf neorientat şi se notează G=(X,U) o pereche de<br />
mulţimi, unde: X este o mulţime finită şi nevidă, iar U este o mulţime de perechi<br />
neordonate (x, y) cu x, y∈X . Elementele lui X se numesc vârfurile (nodurile)<br />
grafului, iar elementele lui U se numesc muchiile (arcele) grafului. Dacă<br />
u = x, y ∈ , x şi y se numesc extremităţile muchiei u.<br />
( ) U<br />
Definiţia 2.11. Un graf G=(X, U), în care, dacă ( x y)<br />
∈U<br />
numeşte<br />
graf simetric.<br />
+<br />
, atrage ( y x)<br />
∈U<br />
, , se<br />
Definiţia 2.12. Un graf neorientat, G=(X, U), se numeşte graf complet dacă<br />
pentru<br />
∀ x, y ∈ avem ( x, y)<br />
∈U<br />
.<br />
( ) X<br />
Definiţia 2.13. Într-un graf neorientat,<br />
G=(X,U), se numeşte lanţ o mulţime de<br />
vârfuri L { x1<br />
,..., xk<br />
xi<br />
∈ X , i = 1,<br />
k}<br />
= cu proprietatea că oricare două vârfuri<br />
consecutive sunt adiacente, adică ( , x 1) ∈U<br />
, i = 1,<br />
k −1<br />
xi i+<br />
. Vârfurile x 1 , xk<br />
se<br />
numesc extremităţile lanţului, iar numărul de muchii care intră în componenţa sa<br />
se numeşte lungimea lanţului. Dacă x1,..., xk sunt distincte două câte două, lanţul<br />
se numeşte elementar, altfel se numeşte neelementar.
20<br />
Modele şi algoritmi de optimizare<br />
Definiţia 2.14. Un graf G=(X,U) se numeşte simplu conex sau conex dacă pentru<br />
orice pereche de vârfuri x, y ∈ X există un lanţ de extremităţi x şi y .<br />
Definiţia 2.15. Se numeşte ciclu<br />
într-un graf G=(X,U), un lanţ<br />
{ x1 ,..., xk<br />
xi<br />
∈ X , i = 1,<br />
k}<br />
L = cu proprietatea că x1=xk şi muchiile (x1, x2), ... , (xk-<br />
1, xk) sunt distincte două câte două.<br />
Definiţia<br />
2.16. Se numeşte ponderea unui lanţ, drum, ciclu sau circuit valoarea<br />
∑<br />
P = l(<br />
x,<br />
y)<br />
.<br />
( x,<br />
y)<br />
∈ ( x1<br />
, x2<br />
,..., xn<br />
)<br />
De exemplu, în cadrul metodei PERT, ponderea unui drum este durata sa totală.<br />
Definiţia 2.17. Un lanţ, drum, ciclu sau circuit se numeşte hamiltonian dacă el<br />
trece o dată şi numai o dată prin toate vârfurile grafului. Un lanţ,<br />
drum, ciclu sau<br />
circuit se numeşte eulerian dacă el trece o dată şi numai o dată prin toate arcele<br />
grafului. Definiţia 2.18. Un arbore este un graf conex şi fără cicluri.<br />
Se disting la un arbore două tipuri de vârfuri : vârfuri la care mai multe muchii<br />
sunt incidente<br />
şi alte vârfuri la care o singură muchie este incidentă. Acestea din<br />
urmă se numesc vârfuri pendante sau frunze.<br />
2.2. Căutarea unui arbore de acoperire de lungime minimă<br />
Fie G=(X, U, l) un graf conex (ipoteză necesară pentru a asigura existenţa cel<br />
puţin a unui arbore) ponderat neorientat. Să notăm cu n = X (numărul<br />
elementelor lui X). Se pune problema găsirii arborelui de acoperire de lungime<br />
minimă, adică, folosind arce ale grafului să se lege între ele toate nodurile astfel<br />
încât lungimea totală a arcelor folosite (suma ponderilor) să fie minimă. O astfel de<br />
problemă apare în proiectarea reţelelor de comunicaţii, unde obiectivul este să se<br />
minimizeze lungimea cablului necesar conectării tuturor nodurilor care trebuie să<br />
comunice între ele, în proiectarea reţelelor de drumuri, benzi rulante, sisteme de<br />
canalizare etc. În continuare sunt prezentaţi doi algoritmi care rezolvă această<br />
problemă.
2. Grafuri în optimizare 21<br />
2.2.1. Algoritmul lui Kruskal<br />
Algoritmul lui Kruskal permite căutarea unui arbore de acoperire de lungime<br />
minimă. Vom presupune că graful G are lungimile muchiilor diferite două câte<br />
două (dacă u≠v , u, v – muchii, atunci l(u)≠l(v) ).<br />
Algoritmul Kruskal<br />
Pas 1. Se consideră v1 – muchia de lungime cea mai mică. Apoi v2 – muchia de<br />
lungime cea mai mică dintre cele rămase şi se notează V2={v1, v2} ;<br />
k :=2 ;<br />
Pas 2. Repetă<br />
k :=k+1 ; vk – muchia de lungime cea mai mică dintre cele rămase<br />
astfel încât Vk−1 ∪vk să nu formeze ciclu<br />
până când k=n−1 ;<br />
Pas 3. Stop. {Vn−1 este un graf de n−1 muchii şi nu are cicluri}.<br />
Demonstrăm prin absurd că Vn−1 este arborele minim căutat (Henry-<br />
Labordere, 1995). Fie V≠Vn−1 arborele minim şi să presupunem că are cele n−1<br />
muchii ordonate astfel încât lungimile lor sunt în ordine crescătoare la fel ca şi cele<br />
ale lui Vn−1 şi că uk este prima muchie a lui V care nu este în Vn−1 .<br />
Vn−1 v1 v2 … vk−1 vk vk+1 … vp … vn<br />
Vn v1 v2 … vk−1 uk uk+1 … up … un<br />
l(v1)
22<br />
2<br />
17<br />
16<br />
15<br />
1<br />
19<br />
3 4<br />
10<br />
Figura 2.2<br />
14<br />
18<br />
5<br />
Modele şi algoritmi de optimizare<br />
14<br />
2<br />
1<br />
16 15<br />
Figura 2.3<br />
3<br />
5 4<br />
Pas 1. Se consideră V1={v1=[3,4]} deoarece l ([ 3,<br />
4])<br />
= min{<br />
l(<br />
v )} .<br />
1≤i≤7<br />
Pas 2. k=2. Se alege din U-V1,<br />
v2=[2,5], muchia cu cea mai mică pondere<br />
l[<br />
2,<br />
5]<br />
min l(<br />
v)<br />
) şi care adăugată la V să nu formeze cicluri. Se obţine<br />
( { }<br />
= 1<br />
v∈U −V1<br />
V 2={<br />
[3,4]; [2,5]}.<br />
k=3. Se alege din U-V2, v3=[1,3], muchia cu cea mai mică pondere<br />
( l[<br />
1,<br />
3]<br />
= min l(<br />
v)<br />
) şi care adăugată la V2 să nu formeze cicluri. Se obţine<br />
v∈U −V2<br />
{ }<br />
V3={[3,4]; [2,5]; [1,3]}.<br />
k=4. Dintre muchiile rămase cea care are pondere minimă şi care nu formează<br />
cicluri prin adăugare la V3 este [1,2]. Se obţine V 4={[3,4];<br />
[2,5]; [1,3]; [1,2]}<br />
arborele de lungime minimă. Lungimea minimă a grafului este Lmin=l([3,4])+<br />
l([2,5])+ l([1,3])+ l([1,2])=10+14+15+16=55 .<br />
Algoritmul se încheie furnizând arborele de acoperire de lungime minimă V4<br />
igura 2.3) şi lungimea minimă a arborelui găsit L =55.<br />
(F min<br />
2.2.2. Algoritmul lui Prim<br />
Algoritmul lui Prim determină arborele de acoperire de lungime minimă<br />
într-un graf conex ponderat G=(X, U, l) şi, spre deosebire de algoritmul lui<br />
Kruskal, nu cere ca ponderile<br />
a două muchii diferite să fie diferite. Se notează<br />
nodurile lui G cu numere de la 1 la n . Sunt folosiţi trei vectori de<br />
dimensiune n astfel:<br />
χ = χ , χ ,..., χ ) , cu componentele<br />
( 1 2 n<br />
i<br />
10
2. Grafuri în optimizare 23<br />
⎧1<br />
χ i = ⎨<br />
⎩0<br />
dacã<br />
nodul<br />
iniþial i este în arbore<br />
altfel ,<br />
⎧ j<br />
p = ( p1,<br />
p2<br />
,..., pn<br />
) , cu componentele<br />
pi = ⎨<br />
⎩0<br />
dacã muchia [ i,<br />
j]<br />
este<br />
pentru nodul iniþial<br />
în arbore<br />
⎧l([<br />
i,<br />
pi<br />
])<br />
c = ( c1,<br />
c2<br />
,..., cn<br />
) , cu componentele<br />
c i = ⎨<br />
⎩0<br />
ponderea muchiei [ i,<br />
pi<br />
]<br />
,<br />
pentru nodul iniþial<br />
pentru<br />
i = 1,<br />
n .<br />
Algoritmul Prim<br />
P as 1. Se iniţializea ză cu 0 cei trei vectori. Se dă nodul de start s ( 1 ≤ s ≤ n ) şi<br />
χ = 1;<br />
A={ s } arborele parţial.<br />
s<br />
Pas 2. Repetă<br />
Determină muchia [i,j], cu ponderea minimă, care are o extremitate în<br />
arborele parţial, i ∈ A şi cealaltă j ∈ X − A . Atunci χ = 1 , pj=i şi<br />
cj=l([i,j]) .<br />
până când = 1 ( ∀)<br />
i 1,<br />
n<br />
χ = .<br />
i<br />
Pas 3. Arborele de acoperire de lungime minimă este dat de muchiile [pi,i]<br />
, iar<br />
lungimea minimă es<br />
te i c L n<br />
min = ∑<br />
i= 1<br />
. Stop!<br />
Algoritmul furnizează arborele de acoperire de lungime minimă prin înlocuirea<br />
muchiilor unui arbore oarecare obţinut<br />
cu vârfurile grafului G cu muchiile<br />
arborelui de lungime minimă.<br />
Exemplu. Să se aplice algoritmul lui Prim grafului din exemplul<br />
precedent.<br />
Pas<br />
1. s=1; A={1}<br />
nodul 1 2 3 4 5<br />
χ 1 0 0 0 0<br />
p 0 0 0 0 0<br />
c 0 0 0 0 0<br />
Pas 2.<br />
Iteraţia I: min{l([1,2]), l([1,3]), l([1,4])}= l([1,3])=15<br />
nodul 1 2 3 4 5<br />
χ 1 0 1 0 0<br />
p 0 0 1 0 0<br />
c 0 0 15 0 0<br />
j
24<br />
Modele şi algoritmi de optimizare<br />
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<br />
nodul 1 2 3 4 5<br />
χ 1 0 1 1 0<br />
p 0 0 1 3 0<br />
c 0 0 15 10 0<br />
Iteraţia a III-a: min{ l([1,2]), l([3,2]), l([3,5])}= l([1,2])=16<br />
nodul 1 2 3 4 5<br />
χ 1 1 1 1 0<br />
p 0 1 1 3 0<br />
c 0 16 15 10 0<br />
Iteraţia a IV-a: min{ l([2,5]), l([3,5]) }= l([2,5])=14<br />
nodul 1 2 3 4 5<br />
χ 1 1 1 1 1<br />
p 0 1 1 3 2<br />
c 0 16 15 10 14<br />
χ i = 1 , i = 1,<br />
4 şi se trece la pasul<br />
următor.<br />
Pas 3. Arborele de acoperire de lungime minimă este {[1,2]; [2,5]; [1,3]; [3,4]} şi<br />
are lungimea Lmin=55<br />
.<br />
Problema găsirii arborelui de acoperire de lungime minimă este rezolvată în<br />
Management Scientist de modulul Minimal Spanning Tree (arbore de acoperire de<br />
lungime minimă). Pentru aplicarea acestui modul exemplului de mai sus se<br />
procedează astfel. După lansarea pachetului de programe se selectează modulul<br />
Minimal Spanning Tree ca în Figura 2.4.<br />
Figura 2.4
2. Grafuri în optimizare 25<br />
După apăsarea butonului OK apare o fereastră din care se selectează File şi, de<br />
aici, New. Apar succesiv ferestrele din Figura 2.5 în care se introduc numărul de<br />
noduri, numărul de muchii şi apoi muchiile şi ponderile lor.<br />
Figura 2.5<br />
Pentru rezolvare şi afişarea rezultatului se selectează Solution şi, de aici, Solve.<br />
Rezultatele sunt date de Figura 2.6 .<br />
Figura 2.6<br />
2.3. Algoritmul lui Dijkstra<br />
Se pune adesea problema determinării unui plan de transport printr-o reţea<br />
rutieră (de transport) astfel încât cheltuielile de transport sau duratele de transport<br />
să fie minime. Este necesar să se determine drumul cel mai „scurt” dintre două<br />
noduri oarecare ale reţelei rutiere. Acest tip de problemă se mai întâlneşte şi în<br />
proiectarea reţelelor de calculatoare, în stabilirea traseelor mijloacelor de transport<br />
în comun etc. (Henry-Labordere, 1995).<br />
Algoritmul lui Dijkstra permite calcularea lungimilor celor mai scurte drumuri<br />
de la un vârf s la toate vârfurile x ale unui graf conex G=(X,U,l), dacă lungimile<br />
tuturor arcelor sunt nenegative.
26<br />
Modele şi algoritmi de optimizare<br />
Fie ∏(x) lungimea celui mai scurt drum de la s la x . Fie S mulţimea<br />
vârfurilor pentru care se calculează ∏. Atunci, ∏(x) def<br />
= {lungimea celui mai scurt<br />
drum de la s la x , care are toate vârfurile în S cu excepţia lui x }. Se notează cu<br />
+<br />
−<br />
Γ (x ) = {mulţimea arcelor care pornesc din nodul x}, iar cu Γ (x ) = { mulţimea<br />
arcelor care intră în nodul x}. Dacă graful este neorient at Γ = ( x) = Γ(<br />
x)<br />
=<br />
mulţimea arcelor incidente în nodul x.<br />
+<br />
(x) Γ −<br />
Algoritmul Dijkstra<br />
Pas 1. {Iniţializări}<br />
S :={s} ; s nodul de start, ∏(s) :=0 ;<br />
Pentru orice x ∈ X − S dacă x∈<br />
Γ(s)<br />
atunci ∏(x) :=l(s,x) altfel<br />
∏(x) :=+∞ ;<br />
Pas 2. {Iteraţia curentă}<br />
Repetă<br />
Determină y ∈ X − S astfel încât ∏( y) = min ∏(z) ;<br />
Dacă ∏(y)
2. Grafuri în optimizare 27<br />
Pas 1. s=1, S={1}, Γ(<br />
1)<br />
= { 2,<br />
4}<br />
,<br />
Pas 2.<br />
y 1 2 3 4 5 6 7<br />
∏(y) 0 1 ∞ 4 ∞ ∞ ∞<br />
Π( y = Π z ) = Π 2 Π Π Π Π Π = Π ,<br />
Iteraţia I . { ) } min { ( } min{<br />
( ), ( 3),<br />
( 4),<br />
( 5),<br />
( 6),<br />
( 7)<br />
} ( 2)<br />
z∈X<br />
−S<br />
y=2, S={1,2}, Γ ( 2)<br />
= { 1,<br />
3,<br />
4}<br />
. ∏(2)=l([1,2])=1<br />
∏(3)=min{∏(3),<br />
∏(2)+l([2,3])}=min{∞,1+4}=5<br />
∏(4)=min{∏(4), ∏(2)+l([2,4])}=m in{ 4, 1 +2 } =3<br />
y 1 2 3 4 5 6 7<br />
∏(y) 0 1 5 3 ∞ ∞ ∞<br />
Iteraţia a II-a<br />
Π( y) = min Π(<br />
z)<br />
= min Π(<br />
3),<br />
Π(<br />
4),<br />
Π(<br />
5),<br />
Π(<br />
6 Π(<br />
7)<br />
} = Π(<br />
4)<br />
, y=4, S={1,2,4},<br />
z∈X<br />
−S<br />
Γ ( 4)<br />
= { 1,<br />
2,<br />
3,<br />
5,<br />
6}<br />
.<br />
{ } { ),<br />
∏(3)=min{∏(3),<br />
∏(4)+l([3,4])}=min{5,3+5}=5<br />
∏(5)=min{∏(5), ∏(4)+l([4,5])}=m in{∞ ,3+2}= 5<br />
∏(6)=min{∏(6), ∏(4)+ l([4,6] )}=m in{∞ ,3+9}= 12<br />
y 1 2 3 4 5 6 7<br />
∏(y) 0 1 5 3 5 12 ∞<br />
Iteraţia a III-a<br />
Π(<br />
y)<br />
= min Π(<br />
z)<br />
= min Π(<br />
3),<br />
Π(<br />
5),<br />
Π(<br />
6),<br />
Π(<br />
7)<br />
= Π(<br />
3)<br />
, y=3, S={1,2,3,4},<br />
{ } { } { }<br />
z∈X<br />
−S<br />
Γ(<br />
3)<br />
= { 2,<br />
4,<br />
5,<br />
6}<br />
.<br />
∏(5)=min{∏(5), ∏(3)+l ([3,5] )}=m in{<br />
5,5+2}=5<br />
∏(6)=min{∏(6),<br />
∏(3)+l ([3,6]) }=min{12,5+3}=8<br />
y 1 2 3 4 5 6 7<br />
∏(y) 0 1 5 3 5 8 ∞<br />
Iteraţia a IV-a<br />
Π( y ) = min Π(<br />
z)<br />
= min Π(<br />
5),<br />
Π(<br />
6),<br />
Π(<br />
7)<br />
= Π 5)<br />
, y=5, S={1,2,3,4,5},<br />
{ } { } { } (<br />
z∈X<br />
−S<br />
Γ(<br />
5)<br />
= { 3,<br />
4,<br />
6,<br />
7}<br />
.<br />
∏(6)=min{∏(6), ∏(5)+ l([5,6] )}= min{8, 5 +6 } =8<br />
∏(7)=min{∏(7), ∏(5)+l([5,7])}=min{∞,5+7}=12<br />
y 1 2 3 4 5 6 7<br />
∏(y) 0 1 5 3 5 8 12
28<br />
Iteraţia a V-a<br />
{ Π y)<br />
} = min { Π(<br />
z)<br />
} = min{<br />
Modele şi algoritmi de optimizare<br />
( Π(<br />
6),<br />
Π(<br />
7)<br />
} = Π(<br />
6)<br />
, y=6, S={1,2,3,4,5,6},<br />
z∈X<br />
−S<br />
Γ ( 6)<br />
= { 3,<br />
4,<br />
5,<br />
7}<br />
.<br />
∏(7)=min{∏(7),<br />
∏(6)+l([6,7])}=min{12,8+1}=9<br />
Iteraţia a VI-a<br />
{ Π( y)<br />
} = min { Π(<br />
z)<br />
} = min{<br />
Π(<br />
7)<br />
} = Π(<br />
7)<br />
z∈X<br />
−S<br />
y 1 2 3 4 5 6 7<br />
∏(y) 0 1 5 3 5 8 9<br />
, y=7, S={1,2,3,4,5,6,7},<br />
Pentru nodurile din mulţimea<br />
S ∩ Γ(y)<br />
nu s-au mai evaluat ∏(y).<br />
Algoritmul se opreşte deoarece S=X. Vectorul ∏(y) conţine cele mai mici<br />
distanţe de la nodul 1 la celelalte noduri. Drumul cel mai scurt între nodurile 1 şi 7<br />
se obţine din muchiile<br />
(marcate cu litere îngroşate) D={[1,2], [2,3]; [3,6]; [6,7]} şi<br />
este<br />
de 9 ore.<br />
În Management Scientist modulul Shortest Route determină cel mai scurt<br />
drum dintre două noduri ale reţelei şi precizează muchiile care realizează acest<br />
drum. Pentru rezolvarea problemei din exemplul precedent cu Management<br />
Scientist, după lansarea sistemului se selectează modulul Shortest Route (Figura<br />
2. 4) şi se introduc datele în ferestrele prezentate în Figurile 2.8. şi 2.9 .<br />
Figura 2.8
2. Grafuri în optimizare 29<br />
Figura 2.9<br />
Rezultatele sunt afişate după selectarea din meniul Solution a opţiunii Solve<br />
(Figura<br />
2.10).<br />
Figura 2.10<br />
2.4. Metoda PERT<br />
Metoda PERT (Program Evaluation and Review Technique) sau CPM<br />
(Critical<br />
Path Method – metoda drumului critic) este un instrument pentru<br />
gestionarea (planificarea şi controlul) proiectelor mari cu multe activităţi separate<br />
care necesită coordonare. În realizarea unui proiect unele activităţi trebuie să aibă o<br />
anume succesiune, altele se defăşoară în paralel. Tehnica PERT a fost concepută<br />
pentru a oferi factorului de decizie un ajutor în planificarea şi controlul unui astfel<br />
de proiect.<br />
Ea permite stabilirea timpului necesar realizării întregului proiect,<br />
asigurând controlul evoluţiei procesului şi atrage atenţia asupra acelor întârzieri în<br />
realizarea activităţilor care<br />
ar determina o întârziere în realizarea proiectului<br />
(Bonini<br />
et al, 1997).
30<br />
Modele şi algoritmi de optimizare<br />
Sunt necesare două tipuri de informaţii pentru fiecare activitate din proiect:<br />
a) succesiunea activităţilor care preced o activitate,<br />
b) timpul necesar realizării activităţii, care poate fi determinist sau aleatoriu.<br />
Diagrama activităţilor este reprezentarea grafică a întregului proiect (graf<br />
orientat valuat). Activităţile sunt arcele, iar nodurile, momentele de început şi<br />
sfârşit ale activităţilor.<br />
Drumul critic este o mulţime de activităţi din proiect care are cea mai mare<br />
durată de timp asociată.<br />
Pentru prezentarea metodei se va considera un exemplu simplu<br />
în care duratele<br />
activităţilor sunt presupuse deterministe şi cunoscute.<br />
Exemplu. În Tabelul 2.1 sunt trecute activităţile unui proiect şi duratele lor. Graful<br />
corespunzător este d at în Figura 2.11. În acest exemplu,<br />
pentru o înţelegere mai<br />
uşoară, se vor nota activităţile şi duratele lor în noduri, săgeţile<br />
indicând<br />
succesiunea<br />
activităţilor.<br />
START<br />
Activitate<br />
Talelul 2.1<br />
Activitate<br />
precedentă<br />
Timpul necesar<br />
rii (în zile),<br />
A Nici una 2<br />
B A<br />
3<br />
C A<br />
4<br />
D B, C<br />
6<br />
E Nici una 2<br />
F E 8<br />
A<br />
2<br />
E<br />
2<br />
B3<br />
C<br />
4<br />
Figura 2.11<br />
realiză ti<br />
D<br />
6<br />
F<br />
8<br />
STO<br />
P
2. Grafuri în optimizare 31<br />
Sunt posibile doar trei drumuri: l (ABD)=11 zile , l (ACD)=12 zile, l (EF)= 10<br />
zile. Drumul critic este cel care are cea mai mare durată, şi anume<br />
ACD.<br />
Lungimea drumului critic determină timpul minim în care<br />
proiectul poate fi<br />
terminat.<br />
Drumul critic este important pentru că arată că:<br />
− timpul<br />
necesar pentru realizarea completă a proiectului nu poate fi redus sub<br />
valoarea dată de drumul critic,<br />
− orice întârziere în realizarea activităţilor de pe drumul critic va produce întârziere<br />
în realizarea proiectului.<br />
Pentru reducerea duratei totale a proiectului trebuie reduse duratele activităţilor<br />
incluse în drumul critic.<br />
Aflarea drumului critic<br />
O cale de aflare a drumului critic este descrisă în continuare. Se notează cu:<br />
DSi – momentul cel mai devreme de începere a activităţii i,<br />
DFi – momentul cel mai devreme de terminare a activităţii i,<br />
TSi – momentul cel mai târziu<br />
de începere a activităţii i,<br />
TF i – momentul cel mai târziu de terminare a activităţii i.<br />
Momentul cel mai devreme de începere a unei activităţi este cel mai devreme<br />
moment posibil la care acea activitate poate să înceapă, presupunând că toate<br />
activităţile<br />
care o preced au început la cel mai devreme moment posibil.<br />
Momentul cel mai devreme de terminare a unei activităţi este suma<br />
momentului de început cel mai devreme<br />
posibil cu timpul necesar realizării<br />
activităţii<br />
respective.<br />
Momentul cel mai târziu de terminare a unei activităţi reprezintă cel mai târziu<br />
moment posibil de terminare<br />
a activităţii respective fără întârzierea proiectului,<br />
presupunând că toate activităţile sunt desfăşurate conform planului iniţial.<br />
Momentul cel mai târziu de începere a unei activităţi<br />
este diferenţa dintre cel<br />
mai târziu moment posibil de terminare a activităţii respective şi timpul necesar<br />
realizării<br />
acestei activităţi.<br />
Procedeu pentru determinarea momentelor DS , DF , TS şi TF<br />
1. Pentru prima activitate se ia DS egal cu zero. Dacă se adaugă la DS timpul t<br />
necesar realizării primei activităţi se obţine DF pentru prima activitate.<br />
2. Pentru o activitate<br />
oarecare i, care pentru toate activităţile care o preced imediat<br />
are determinate DS şi DF , se ia<br />
DSi=max{DFk | activitatea k precede imediat activitatea i} şi DFi=DSi+ti,<br />
deoarece activitatea i nu poate începe până când toate activităţile care o preced<br />
nu s−au terminat.<br />
3. Pentru ultima activitate se ia TF=DF al acestei activităţi. Atunci TS=TF−tn , tn<br />
fiind timpul necesar realizării<br />
ultimei activităţi.<br />
4. Pentru<br />
o activitate oarecare i, având pentru activităţile care o succed imediat<br />
determinate TS şi TF , se ia<br />
TFi=min{TSk | activitatea k succede imediat activitatea i} şi TSi=TFi−ti,.
32<br />
Modele şi algoritmi de optimizare<br />
Marja, M, a unei activităţi reprezintă numărul de zile cu care o activitate<br />
poate întârzia fără ca termenul de încheiere al proiectului să fie afectat. După<br />
determinarea valorilor DS, D F, TS, T F pentru t oate activităţile, se pot calcula<br />
marjele ca fiind<br />
Mi= DSi – TS i sau M i= D Fi – TFi .<br />
Dacă proiectul are termenul de finaliz are egal cu lungimea drumului critic,<br />
atunci orice întârziere în realizarea unei activităţi incluse în drumul<br />
critic va cauza<br />
întârziere în finalizarea proiectului. În schimb, activităţile c are au marja pozitivă<br />
pot fi decalate cu un număr de zile egal cu m arja, f ără ca termenul de finalizare a<br />
proiectului<br />
să se modifice.<br />
Pentru exemplul de mai sus se consideră că proiectul durează 12 zile şi s-a luat<br />
TF pentru activitatea D egal cu 12. În Tabelul 2.2 sunt trecute momentele DS,<br />
DF, TS, M şi TF pentru acest exemplu obţinute în urma aplicării procedeului de<br />
mai sus.<br />
Tabelul 2.2<br />
Activitate Durata D<br />
S<br />
DF TS TF M<br />
A 2 0 2 0 2 0<br />
B 3 2 5 3 6 1<br />
C 4 2 6 2 6 0<br />
D 6 6 12 6 12 0<br />
E 2 0 2 2 4 2<br />
F 8 2 10 4 12 2<br />
Exemplul de mai sus poate fi rezolvat şi cu ajutorul pachetului de programe<br />
Management Scientist. După lansarea pachetului de programe se selectează<br />
modulul PERT/CPM (Figura 2.4). Din fereastra care apare se selectează File, apoi<br />
New şi se precizează faptul că duratele activităţilor sunt deterministe şi numărul<br />
acestor activităţi, ca în Figura 2.12.<br />
Figura 2.12<br />
Se afişează o fereastră în care se introduc duratele activităţilor şi activităţile<br />
care le preced imediat, ca în Figura 2.13. Activităţile se codifică folosind literele<br />
alfabetului în ordine crescătoare. O activitate care precede o alta trebuie să fie deja<br />
definită atunci<br />
când este definită ca precedenţă.
2. Grafuri în optimizare 33<br />
Figura 2.13<br />
Selectând Solution, şi de aici Solve, se obţine soluţia sub form a dată de<br />
Figura 2.14.<br />
Figura 2.1 4<br />
S−au obţinut aceleaşi rezultate ca şi prin aplicarea procedeului descris mai sus.<br />
Analiza numai sub aspectul duratei poate fi completată cu costuri asociate<br />
activităţilor. De exemplu, durata unei activităţi poate fi redusă dacă se alocă resurse<br />
suplimentare. Aceasta implică şi costuri suplimentare.<br />
Se introduce astfel şi o<br />
funcţie<br />
de cost în luarea deciziei.
34<br />
Modele şi algoritmi de optimizare<br />
În continuare se consideră cazul, mai apropiat de realitate, când duratele<br />
activităţilor sunt aleatoare. Atunci, trebuie să se cunoască despre aceste variabile<br />
aleatoare care sunt densităţile lor de probabilitate. În practică se cunosc anumite<br />
date despre duratele activităţilor, cum ar fi:<br />
− ai – cea mai optimistă durată pentru activitatea i,<br />
− bi – cea mai pesimistă durată pentru activitatea i,<br />
− mi – cea mai probabilă durată pentru activitatea i (modul repartiţiei).<br />
Repartiţia<br />
Beta(a,b) ar putea caracteriza aceste durate deoarece este o<br />
repartiţie continuă, unimod ală şi cu valori în intervalul (a,b). Un estimator pentru<br />
1<br />
valoarea<br />
medie a unei variabile aleatoare Beta(a,b) este t = ( a + 4m<br />
+ b)<br />
şi<br />
6<br />
1<br />
pentru abaterea medie standard σ = ( b − a)<br />
.<br />
6<br />
Pentru exemplul precedent, în Tabelul 2.3, sunt trecute duratele activităţilor<br />
cele mai optimiste, cele mai pesimiste, cele mai probabile (ca rezultat al<br />
experienţelor<br />
anterioare), estimările duratelor medii, ale abaterilor medii pătratice<br />
şi ale dispersiilor.<br />
Se caută drumul critic cu duratele activităţilor ti şi se obţine acelaşi drum<br />
critic<br />
(duratele medii ti coincid cu duratele activităţilor în cazul determinist).<br />
Tabelul 2.3<br />
Activitate ai bi mi ti<br />
σ i<br />
2<br />
σ i<br />
A 1 3 2 2 0.33 0.11<br />
B 1 5 3 3 0.67 0.45<br />
C 2 6 4 4 0.67 0.45<br />
D 4 8 6 6 0.67 0.45<br />
E 1 3 2 2 0.33 0.11<br />
F 1 15 8 8 2.33 5.43<br />
Dacă se presupune că duratele activităţilor sunt variabile aleatoare independente,<br />
atunci dispersia drumului critic ACD este suma dispersiilor activităţilor<br />
2<br />
componente, adică σ = 0.<br />
11+<br />
0.<br />
45 + 0.<br />
45 = 1.<br />
01,<br />
iar abaterea medie standard<br />
ACD<br />
este σ = 1 . 01 = 1.<br />
005 .<br />
ACD<br />
Dacă drumul critic conţine multe activităţi (peste 30) durata totală poate fi<br />
considerată repartizată normal. Se va considera şi în acest caz repartiţia duratei<br />
drumului<br />
critic ca fiind N (12, 1.005) şi atunci se poate să se determine<br />
probabilitatea<br />
ca durata drumului critic să fie mai mică decât o valoare (de<br />
exemplu,<br />
14 zile), folosind tabela repartiţiei normale standard, astfel:<br />
⎛ T − µ ⎞ ⎛14 −12<br />
⎞<br />
P(<br />
T < 14 ) = F⎜<br />
⎟ = F⎜<br />
⎟ = F(<br />
2)<br />
= 0.<br />
977 .<br />
⎝ σ ⎠ ⎝ 1.<br />
005 ⎠
2. Grafuri în optimizare 35<br />
2.5. Probleme propuse<br />
1.<br />
O firmă de construcţii are şantiere în 6 locuri diferite. Transportul zilnic de oameni,<br />
utilaje,<br />
materiale de la sediu la şantiere şi invers este destul de costisitor. Reţeaua<br />
arătată în Figura 2.15 prezintă străzile şi distanţa dintre şantiere şi sediul firmei.<br />
Nodurile<br />
reprezintă şantierele numerotate de la 1 la 6, iar muchiile, străzile. Numerele<br />
de pe muchii reprezintă distanţa în kilometri. Dacă se doreşte minimizarea distanţei<br />
dintre sediul firmei şi şantierul 6, care este drumul care trebuie parcurs şi lungimea sa?<br />
Sediul firmei (1)<br />
10<br />
15<br />
3<br />
2<br />
Figura 2.15<br />
2. O firmă de Internet Cafe trebuie să aibă linii speciale pentru legarea<br />
calculatoarelor<br />
instalate la cele 5 centre ale sale în diferite locuri din oraş la<br />
serverul<br />
central. Deoarece liniile sunt scumpe, proprietarul doreşte ca lungimea<br />
totală<br />
a cablurilor folosite să fie minimă. În Figura 2.16 sunt prezentate cele<br />
5 centre şi serverul central (în noduri), iar muchiile reprezintă traseele posibile şi<br />
lungimile<br />
cablurilor între server şi centrele firmei. Să se stabilească legăturile care<br />
să conducă la cel mai mic cost (lungimea totală a cablurilor să fie minimă).<br />
6<br />
Figura 2.16<br />
R. Arborele de acoperire<br />
17<br />
6 5<br />
4<br />
4<br />
4<br />
2<br />
3 5<br />
6<br />
R. Lmin=22 , obţinută pe traseul D={[1,3], [3,5], [5,6], [6,7]} .<br />
Serverul<br />
central (1)<br />
2<br />
3<br />
2<br />
4<br />
4<br />
5<br />
1<br />
3<br />
4<br />
4<br />
2<br />
3<br />
3<br />
4<br />
5<br />
6<br />
7
36<br />
Modele şi algoritmi de optimizare<br />
de lungime minimă este dat de muchiile {[1,2], [1,4], [4,6], [4,3], [4,5]} (Figura<br />
2.17), iar lungimea minimă a cablurilor este de Lmin=11.<br />
Figura<br />
2.17<br />
3. Trebuie să se construiască o autostradă care să treacă prin<br />
apropierea localităţilor<br />
notate<br />
în Figura 2.18 cu numere de la 1 la 14.<br />
1<br />
5<br />
3<br />
2<br />
1<br />
2<br />
4<br />
6<br />
3<br />
3<br />
2<br />
11<br />
Costurile (lucrărilor propriu-zise, lucrărilor de artă, de expropriere, sociale etc.)<br />
sunt trecute pe muchiile acestui graf.<br />
Să se<br />
stabilească traseul autostrăzii care uneşte localităţile 1 şi 14 şi care să<br />
implice costuri minime (Kaufmann, 1967).<br />
R. Traseul de cost minim care leagă localitat ea 1 de<br />
localitatea<br />
14 trece prin<br />
localităţile 1, 3, 5, 9, 12, 14 şi costă 19 u. m (unităţ i monetare).<br />
4. Fie un proiect ale cărui date sunt trec ute în Tabel ul 2 .4.<br />
Tabelul 2. 4<br />
8<br />
6<br />
4<br />
4<br />
2<br />
9<br />
2<br />
5<br />
6<br />
7<br />
1<br />
8<br />
4<br />
3<br />
6<br />
9<br />
Figura 2.18<br />
3<br />
11<br />
5<br />
2<br />
3<br />
8<br />
9<br />
10<br />
11<br />
7<br />
5<br />
8<br />
5<br />
9<br />
3<br />
6<br />
12<br />
13<br />
3<br />
4<br />
14
2. Grafuri în optimizare 37<br />
Activitate<br />
Activitate<br />
precedentă<br />
Tim pul necesar realizării<br />
(în zile), ti<br />
A Nici una 5<br />
B A 4<br />
C Nici una 7<br />
D B, C 3<br />
E B 4<br />
F D, E 2<br />
a) Să se traseze diagrama grafului asociat proiectului.<br />
b) Să se calculeze DS, DF, TS, TF pentru fiecare activitate, presupunând că DF<br />
şi TF pentru ultima activitate coincid.<br />
c) Să se precizeze activităţile incluse în drumul critic.<br />
R. a) Diagrama grafului asociat este dată în Figura 2.19.<br />
A<br />
C<br />
Figura 2.19<br />
b) În Tabelul 2.5 sunt trecute valorile corespunzătoare. Durata proiectului este de<br />
15 zile.<br />
Tabelul 2.5<br />
Activitate DS DF TS TF<br />
A 0 5 0 5<br />
B 5 9 5 9<br />
C 0 7 3 10<br />
D 9 12 10 13<br />
E 9 13 9 13<br />
F 13 15 13 15<br />
c) Drumul critic este format din activităţile A, B, E, F.<br />
B4<br />
D<br />
5. În problema 4 se consideră că timpul necesar realizării activităţii C este de<br />
9 zile.<br />
E4<br />
F2
38<br />
Modele şi algoritmi de optimizare<br />
a) Să se precizeze dacă se modifică drumul critic în acest caz.<br />
b) Dar dacă activităţii C îi sunt necesare 11 zile, se modifică drumul critic?<br />
R. a) Nu, deoarece activitatea C are o marjă de 3 zile, iar creşterea duratei este<br />
doar de 2 zile.<br />
b) Da, şi drumul critic este compus din activităţile C, D, F şi durata proiectului<br />
este de 16 zile.<br />
6. Un depozit angro doreşte să se modernizeze şi să se extindă. Activităţile<br />
necesare sunt trecute în Tabelul 2.6 . Să se stabilească durata minimă şi care sunt<br />
activităţile critice ale acestei iniţiative.<br />
Activitate Descriere activitate<br />
Tabelul 2.6<br />
Activitate<br />
precedentă<br />
Timpul necesar<br />
Realizării (în săptămâni), ti<br />
A Proiectul de arhitectură Nici una 5<br />
B Identificarea chiriaşilor potenţiali Nici una 6<br />
C Dezvoltarea prospectului A 4<br />
D Selectarea antreprenorului A 3<br />
E Pregătirea autorizaţiei de<br />
construcţie<br />
A 1<br />
F Obţinerea autorizaţiei de<br />
construcţie<br />
E 4<br />
G Construcţia D,F 14<br />
H Finalizarea contractelor cu<br />
chiriaşii<br />
B,C 12<br />
I Instalarea chiriaşilor G,H 2<br />
R. Activităţile critice sunt A, E, F, G, I, iar durata minima a iniţiativei este de<br />
26 săptămâni.<br />
7. Se consideră un proiect având datele despre activităţi trecute în Tabelul 2.7<br />
unde:<br />
Tabelul 2.7<br />
Activităţi<br />
Activitate precedent<br />
e<br />
ai bi mi<br />
A – 2 6 4<br />
B – 6 10 8<br />
C A 1 15 5<br />
D C 1 9 5<br />
E B 6 10 8<br />
− ai – cea mai optimistă durată pentru activitatea i,<br />
− bi – cea mai pesimistă durată pentru activitatea i,
2. Grafuri în optimizare 39<br />
− mi – cea mai probabilă durată pentru activitatea i (modul repartiţiei).<br />
2<br />
σ i<br />
a) Să se calculeze timpul mediu ti şi dispersia pentru timpul necesar realizării<br />
fiecărei activităţi.<br />
b) Să se traseze diagrama grafului asociat. Care este lungimea medie a drumului<br />
critic?<br />
c) Presupunând că duratele activităţilor drumului critic sunt independente şi că<br />
durata drumului critic este repartizată normal, să se calculeze probabilitatea ca<br />
durata drumului ACD să fie mai mică decât 16 zile.<br />
d) Care este probabilitatea ca proiectul să se termine în mai puţin de 16 zile ?<br />
R. a) Media duratelor şi dispersia sunt trecute în Tabelul 2.8.<br />
Tabelul 2.8<br />
Activitate ti<br />
A 4<br />
2<br />
σ i<br />
0.44<br />
B 8 0.44<br />
C 6 5.44<br />
D 5 1.78<br />
E 8 0.44<br />
b) Diagrama asociată grafului este dată de Figura 2.20<br />
STAR<br />
A4<br />
B8<br />
C6 D5<br />
Figura 2.20<br />
E<br />
STO<br />
Lungimea drumului critic este 16 zile.<br />
c) Pentru drumul ACD lungimea medie este 15 zile, iar dispersia este<br />
0.44+5.44+1.78=7.67 , iar abaterea medie pătratică este 2.77 .<br />
⎛16<br />
−15<br />
⎞<br />
P( TACD<br />
< 16)<br />
= F⎜<br />
⎟ = 0.<br />
64 .<br />
⎝ 2⋅<br />
77 ⎠<br />
Pentru drumul BE dispersia este de 0.44+0.44=0.88 , iar abaterea medie pătratică<br />
este 0.94 .
40<br />
⎛16 −15 ⎞<br />
P (T BE < 16) = F ⎜ ⎟ = 0.50.<br />
⎝<br />
0,<br />
94 ⎠<br />
Modele şi algoritmi de optimizare
2. Grafuri în optimizare 41<br />
d)<br />
Probabilitatea ca durata proiectului să fie mai mică de 16 zile este<br />
P T < 16 = 0.<br />
64 ⋅ 0.<br />
50 = 0.<br />
.<br />
( ) 32<br />
proiect<br />
8. Exploatarea unei cariere implică următoarele acţiuni: − construirea drumurilor de a cces (A)<br />
− cumpărarea şi livrarea utilajelor de excavare pen tru înlăturarea zonei fertile (B)<br />
− angajarea de personal: conductori de utila je şi miner i (C )<br />
− adâncirea excavaţiei (D)<br />
− pregătirea minerilor angajaţi în mineritul de suprafaţă (E).<br />
Restricţiile<br />
impuse de ordinea acţiunilor:<br />
− excavarea nu poate începe decât dacă:<br />
– utilajele au fost livrate;<br />
– conductorii de utilaje au fost<br />
angajaţi.<br />
În Tabelul 2.9 sunt date duratele şi condiţionările acţiunilor acestui proiect.<br />
Activitate<br />
Activitate<br />
Tabelul 2.9<br />
Timpul<br />
necesar<br />
precedentă realizării (în lu<br />
A Nici una<br />
10<br />
B Nici una<br />
4<br />
C Nici una<br />
8<br />
D<br />
E C<br />
A, B, C 5<br />
6<br />
ni), ti<br />
a) Să se traseze diagrama<br />
grafului asociat proiectului.<br />
b) Să se ca lculeze DS, DF, TS, TF şi marja<br />
pentru fiecare activitate, presupunând<br />
că DF şi TF pentru ultima<br />
activitate coincid.<br />
c) Să se precizeze lungimea drumului critic şi activităţile incluse în drumul critic.<br />
R. a) Diagrama este dată de Fig ura 2.21.<br />
STAR A1<br />
B4 D5<br />
C8 E6<br />
Figura 2.21<br />
STO
42<br />
b)<br />
Valorile cerute sunt conţinute în Tabelul 2.10.<br />
Tabelul 2.10.<br />
Activitate DS DF TS TF M<br />
A 0 10 0 10 0<br />
B 0 4 6 10 6<br />
C 0 8 2 10 2<br />
D 10 15 10 15 0<br />
E 8 8 15 15 7<br />
c)<br />
Drumul critic conţine activităţile A, D şi are lungimea 15.<br />
Modele şi algoritmi de optimizare<br />
9. O firmă producătoare de aspiratoare îşi propune să introducă în fabricaţie<br />
aspiratoare<br />
portabile. Pentru aceasta iniţiază un proiect ale cărui activităţi<br />
şi durate<br />
sunt trecute în Tabelul 2.11 .<br />
Tabelul 2.11<br />
Activitate Descriere activitate<br />
Activitate<br />
precedentă<br />
Durata<br />
realizării (în săptămâni)<br />
cea mai cea mai cea mai<br />
pesimistă probabilă optimistă<br />
A<br />
Proiectarea<br />
produsului<br />
Nici una 4 5 12<br />
B<br />
Cercetarea pieţei de<br />
defacere<br />
Nici una 1 1.5 5<br />
C<br />
Stabilirea procesului<br />
tehnologic<br />
A 2 3 4<br />
D<br />
Construirea<br />
prototipului<br />
Pregătirea broşurii cu<br />
A<br />
3 4 11<br />
E instrucţiuni de<br />
folosire<br />
A 2 3 4<br />
F Estimarea costurilor C 1.5 2 2.5<br />
G Testarea prototipului D 1.5 3 4.5<br />
H Inspectarea pieţei B, E 2.5 3.5 7.5<br />
I<br />
Stabilirea preţului şi<br />
estimarea vânzărilor<br />
H 1.5 2 2.5<br />
J Raportul final F, G, I 1 2 3<br />
Să se precizeze activităţile critice, duratele: cea mai optimistă, cea mai probabilă şi<br />
cea mai pesimistă de realizare a acestui proiect.<br />
R. Activităţile critice sunt A, E, H, I, J şi duratele cea mai optimistă 14.28 , cea<br />
mai probabilă 17 şi cea mai pesimistă 19.72 .
3. PROGRAMARE CONVEXĂ<br />
3.1. Mulţimi şi funcţii<br />
convexe<br />
În acest capitol sunt prezentate câteva noţiuni şi rezultate (Fletcher, II, 1981) pe<br />
care se bazează metodele şi algoritmii următoarelor trei capitole.<br />
n<br />
D efiniţia 3.1. O mulţime K ⊂ R se numeşte convexă dacă ( ∀) x 0 , x1<br />
∈ K şi<br />
∀ θ ∈ 0,<br />
1 , atunci<br />
( ) [ ]<br />
sau, în general: ( ∀) x<br />
= ( 1 − θ ) x0<br />
+<br />
x ,..., x K<br />
m<br />
0 , 1<br />
xθ θ x1<br />
∈ K<br />
, atunci<br />
(3.1)<br />
m ∈<br />
( ∀)<br />
∈[<br />
0,<br />
1]<br />
x θ θ i xi<br />
∈ K , θ i şi θ i = 1<br />
(3.2)<br />
= ∑<br />
i=<br />
0<br />
Definiţia 3.2. x θ din Definiţia 3.1 se numeşte combinaţia liniară<br />
a punctelor x0,<br />
x1 etc.<br />
Definiţia 3.3. Fie x 0 , x1,<br />
..., x n ∈ K . Mulţimea punctelor x θ date de (3. 2) se<br />
umeşte înfăşurătoarea convexă a mulţimii x , x ,..., x .<br />
∑<br />
0<br />
m<br />
i=<br />
{ }<br />
n 0 1 n<br />
Exemple de mulţimi<br />
convexe: mulţimea formată dintr-un singur punct, o dreaptă,<br />
n ⎧ n ⎫<br />
un segment de dreaptă, un hiperplan<br />
(adică ⎨x<br />
∈R ∑ ai<br />
xi<br />
= b⎬<br />
), un semiplan<br />
⎩<br />
i=<br />
1 ⎭<br />
(adică<br />
n ⎧ n ⎫<br />
⎨x<br />
∈R ∑a i xi<br />
≥ b⎬<br />
), o bilă<br />
închisă de centru a şi rază r,<br />
⎩ i= 1 ⎭<br />
n<br />
n<br />
⎪⎧<br />
n<br />
2 ⎪⎫<br />
Br( a) = { x ∈R<br />
x − a ≤ r}<br />
= ⎨x<br />
∈R<br />
∑ ( xi<br />
− ai<br />
) ≤ r<br />
2<br />
⎬ ,<br />
⎪⎩<br />
i=<br />
1<br />
⎪⎭<br />
n<br />
*<br />
*<br />
un con ( C = x ∈ A ( x − x ) ≥ 0 A∈<br />
M ( R ) , x vârful conului) etc.<br />
{ }<br />
R , m,<br />
n<br />
Lema<br />
3.1. Fie Ki , i=1,2,…,m, m mulţimi convexe. Atunci K = K este tot o<br />
mulţime convexă.<br />
I m<br />
i=<br />
1<br />
i
44<br />
Demonstraţie. Fie ( ∀) 0 , x1<br />
∈ K<br />
( ) i = 1,<br />
m . Atunci<br />
Modele şi algoritmi de optimizare<br />
x , atunci rezultă că x 0 , x1<br />
∈ K i pentru<br />
∀ xθ dat de (3.2) este în fiecare mulţime Ki<br />
, deci şi în<br />
intersecţia lor. <br />
Consecinţa<br />
3.1. Mulţimea punctelor admisibile într-o problemă de programare<br />
(1.1) cu restricţii liniare este o mulţime convexă.<br />
n<br />
Definiţia 3.4. Fie K ⊂ R , o mulţime convexă. x se numeşte punct de extrem<br />
p entru K dacă, având x=(1−θ ) x0+θ x1 , x 0 , x1<br />
∈ K şi θ ∈(<br />
0,<br />
1)<br />
, atunci rezultă<br />
că<br />
x=x0=x1, sau, altfel spus, x nu cade în interiorul nici unui segment din K.<br />
Exemple:<br />
vârfurile unui poligon regulat, punctele circumferiţei unui cerc sunt<br />
puncte<br />
de extrem pentru poligon, respectiv disc.<br />
n<br />
Definiţia 3.5. Fie K ⊂ R , o mulţime convexă şi f : K → R o funcţie<br />
continuă. Funcţia f se numeş te convexă dacă ( ∀) x 0 , x1<br />
∈ K are loc relaţia<br />
f ( 1 − θ ) x + θ x ) ≤ ( 1 − θ ) f ( x ) + θ f ( x ) , ( ∀)<br />
θ ∈[<br />
0,<br />
1]<br />
. (3.3)<br />
( 0 1<br />
0<br />
1<br />
Dacă f este diferenţiabilă pe K şi<br />
următoarea definiţie<br />
a funcţiei convexe.<br />
K este deschisă, atunci se poate da<br />
( ) ∈ K<br />
Definiţia 3.5’. Funcţia f este convexă pe K dacă ∀ x 0 , x1<br />
are loc relaţia<br />
f ( x1) ≥ f ( x0<br />
) + ( x1 − x 0 )'∇f<br />
( x 0 )<br />
(3.4)<br />
unde cu prim s-a notat transpunerea,<br />
iar ∇ f este gradientul lui f.<br />
Exerciţiu.<br />
Să se demonstreze echivalenţa Definiţiilor 3.5 şi 3.5’.<br />
Corolar 3.1.<br />
x x f x ) f ( x ) f ( x ) x x ∇f<br />
x<br />
′<br />
−<br />
′<br />
∇ ≥ − ≥ − ( )<br />
(3.5)<br />
( ) ( )<br />
1<br />
0<br />
( 1<br />
1<br />
0 1 0<br />
Cu alte cuvinte, panta unei funcţii convexe este nedescrescătoare de-a lungul<br />
oricărei<br />
drepte.<br />
Definiţia 3. 5 ′′ . Fie f : K → R , o funcţie dublu diferenţiabilă pe K, m ulţime<br />
deschis ă şi<br />
convex ă în R ţia f este convexă dacă este pozitiv<br />
it<br />
n 2<br />
. Func d f ( x0<br />
)<br />
semidefin ă (Definiţia 6.2) pentru ( ) x ∈ K .<br />
∀ 0<br />
n<br />
Definiţia 3.6. Fie K ⊂ R , o mulţime convexă şi f : K → R o funcţie continuă.<br />
f se numeşte<br />
strict convexă dacă<br />
f ( 1 − θ ) x + θx<br />
< ( 1 − θ ) f ( x ) + θ f ( x ) , ∀ θ ∈ 0,<br />
1 , x ≠ x (3.4’)<br />
( 0 1 ) 0<br />
1 ( ) ( ) 0 1<br />
0
3. Programare convexă 45<br />
Definiţia 3.7. Fie<br />
⊂ , o mulţime convexă şi f : K → R o funcţie<br />
n<br />
K R<br />
continuă. f se numeşte concavă dacă –f este convexă şi f se numeşte strict<br />
concavă<br />
dacă –f este strict convexă.<br />
Exemple de funcţii convexe: funcţiile liniare (sunt şi concave), funcţiile pătratice<br />
1<br />
de forma f ( x ) = x'Cx<br />
+ c'<br />
x + c0<br />
, unde C este o matrice pozitiv semidefinită<br />
2<br />
(x’Cx≥0 , ).<br />
Lema 3.2. Fie<br />
f i<br />
n<br />
K ⊂ R , o mulţime convexă<br />
şi funcţiile convexe<br />
: K → R , i = 1,<br />
m . Dacă λ i ≥ 0 , i = 1,<br />
m , atunci ∑ i i f f λ este o funcţie<br />
convexă pe K.<br />
3.2. Extreme condiţionate<br />
=<br />
i=<br />
1<br />
Problema minimizării unei<br />
funcţii convexe f pe o mulţime convexă K se<br />
numeşt e problema de programare convexă şi se poate scrie sub forma<br />
⎪⎧<br />
min f ( x)<br />
⎨<br />
n<br />
(3.6)<br />
⎪⎩<br />
x ∈R = { x ∈R<br />
gi (x)<br />
≤ 0 , i = 1,<br />
m }<br />
unde: f<br />
Lema 3.3. Dacă<br />
şi gi sunt funcţii convexe pe R n .<br />
( ) ′<br />
n<br />
g = g ,..., g este convexă<br />
pe R , atunci<br />
este convexă.<br />
Demonstraţie. Fie x ∈R<br />
( a)<br />
1<br />
1 , 2<br />
n<br />
R ( a) = x ∈<br />
n { R g(x<br />
) ≤ a }<br />
x şi = 1 − θ ) x + θ x , θ ∈[<br />
0,<br />
1]<br />
θ<br />
m<br />
x . Din<br />
( 0 1<br />
convexitatea lui g avem<br />
g ( x ) ≤ ( 1 − θ ) g(<br />
x ) + θ g(<br />
x ) ≤ ( 1 − θ ) a + θ a = a , adică g( x ) ∈R<br />
( a)<br />
. <br />
θ 0<br />
1<br />
Vom<br />
nota R ( 0)<br />
= R . Mulţimea R se mai numeşte şi domeniul problemei<br />
de prog ramare convexă (3.6) sau mulţimea soluţiilor admisibile (regiunea<br />
realizabilă) pentru problema de programare<br />
convexă (3.6).<br />
Consecinţa 3.2. Regiunea realizabilă R dată de (3.6) este o mulţime<br />
convexă.<br />
n<br />
Definiţia 3.8. Fie K ⊂ R , o mulţime nevidă şi o funcţie f :<br />
K → R .<br />
θ
46<br />
Modele şi algoritmi de optimizare<br />
*<br />
Punctul x ∈ K este un maxim (minim) global pentru f pe K dacă pentru<br />
( ) ∈ K<br />
*<br />
∀ x avem ( x ) f( x )<br />
astfel încât<br />
pentru<br />
*<br />
f ≤ ( f ( x) ≥ f ( ) )<br />
x .<br />
x ( ∃) r > 0<br />
*<br />
Punctul ∈ K este un maxim (minim) local sau relativ pentru f dacă<br />
*<br />
n *<br />
( ∀)<br />
x ∈ B ( x ) = { x ∈R<br />
x - x < r}<br />
⊂ K<br />
r<br />
avem<br />
*<br />
*<br />
f ( x ) ≤ f( x ) ( f ( x) ≥ f ( x ) ) .<br />
Un minim global (local) pentru problema (3.6) se numeşte soluţie globală (locală)<br />
pentru problema (3.6) .<br />
Teorema 3.1. Orice soluţie locală x a unei p<br />
oluţiilor globale, R, este convexă.<br />
* robleme de programare convexă<br />
(3.6) este o soluţie globală şi mulţimea s<br />
Demonstraţie. Fie x * o soluţie locală pentru problema (3.6), dar nu globală.<br />
*<br />
Atunci ( ) x ∈R<br />
astfel încât ( x ) f ( x ) θ ∈ 0,<br />
1 se consideră<br />
∃ 1<br />
f < . Pentru [ ]<br />
xθ = ( 1 − ) x + x1<br />
∈R<br />
*<br />
θ θ<br />
(din convexitatea lui R ). Din convexitatea lui f rezultă<br />
*<br />
*<br />
θ 1<br />
1<br />
1<br />
*<br />
*<br />
( f ( x ) − f ( x ) ) ( x )<br />
f ( x ) ≤ ( 1−<br />
θ)<br />
f ( x ) + θf<br />
( x ) = f ( x ) + θ<br />
< f .<br />
Pentru θ suficient de mic, află în vecinătatea lui x * x se şi inegalitatea<br />
de<br />
s contrazice proprietatea de o m local a lui x * mai su pti<br />
. Astfel, soluţia locală este şi<br />
globală.<br />
Pentru a arăta că R este convexă, se consid eră<br />
θ<br />
[ ]<br />
x 0 , x1<br />
∈R<br />
şi θ ∈ 0,<br />
1 , xθ = ( 1 − θ ) x0<br />
Deoarece x0 , x1 sunt soluţii globale, au loc relaţiile<br />
+ θx1.<br />
f(x0)=f(x1) şi f x ) ≤ ( 1−<br />
θ)<br />
f ( x ) + θf<br />
( x ) = f ( x ) ,<br />
( θ<br />
0<br />
1 0<br />
adică f ( xθ ) = f ( x0<br />
) şi astfel x θ ∈R<br />
, ceea ce arată că R este convexă. <br />
Corolar 3.2. Dacă f este strict convexă pe R , atunci orice soluţie globală este<br />
unică.<br />
Demonstraţie. Fie x ∈R<br />
şi θ ∈ 0,<br />
1 . Atunci<br />
x ( )<br />
0 ≠ 1<br />
x ∈R<br />
şi f x ) ≥ f ( x ) = f ( x ) ,<br />
θ<br />
( θ<br />
0<br />
1<br />
iar din convexitatea strictă a lui f avem<br />
f x ) < ( 1 − θ ) f ( x ) + θf<br />
( x ) = f ( x ) = f ( x )<br />
( θ<br />
0<br />
1<br />
0<br />
1<br />
şi s-a obţinut o contradicţie. Aşadar, nu pot exista două soluţii globale distincte în<br />
R pentru problema (3.6).
3. Programare convexă 47<br />
Teorema 3.2. În problema (3.6) dacă f şi gi, i = 1,<br />
m sunt de clasă C 1 (R ) şi<br />
dacă<br />
* *<br />
*<br />
*<br />
∇ xL<br />
( x , λ ) = 0 , gi<br />
( x ) = 0 , i ∈E<br />
; g j ( x ) ≤ 0 ,<br />
*<br />
* *<br />
λ j ≥ 0,<br />
j ∈I<br />
; λi<br />
gi<br />
( x ) = 0 ; ( ∀)<br />
i ∈E<br />
∪ I<br />
j ∈I<br />
;<br />
(3.7)<br />
unde : L ( x, λ)<br />
= f ( x)<br />
+ ∑λi<br />
gi<br />
( x)<br />
este funcţia lagrangian, E este mulţimea<br />
i<br />
indicilor restricţiilor egali tăţi, I este mulţimea indicilor restricţiilor inegalităţi<br />
*<br />
din (3.7), atunci<br />
x este o solu ţie globală pentru problema (3.6).<br />
*<br />
∗<br />
D emonstraţie. Fie x ∈R , x ≠ x . Atunci, deoarece λ ≥ 0 şi g( x)<br />
≤ 0 , f şi<br />
*<br />
* *<br />
g sunt convexe, din ipoteză avem că ∇f ( x ) + ∑λ<br />
i∇g<br />
i ( x ) = 0 , λ<br />
şi, ţinând cont şi de relaţia (3.4), avem<br />
m<br />
m<br />
i=<br />
1<br />
*<br />
*<br />
* *<br />
f ( x) ≥ f ( x)<br />
+ ∑ λ g ( x)<br />
≥ f ( x ) + ( x − x ) ′ ∇f<br />
( x ) +<br />
i=<br />
1<br />
i<br />
i<br />
* ′ * ⎞<br />
( x − x ) ∇g<br />
( x ) ⎟ =<br />
m<br />
* ⎛ *<br />
+ ∑ λ i ⎜ gi<br />
( x ) +<br />
i<br />
i=<br />
1 ⎝<br />
*<br />
* ⎛<br />
= f ( x ) + ( x − x ) ′ ⎜<br />
∇f<br />
( x<br />
⎝<br />
*<br />
m<br />
*<br />
⎞<br />
) +∑<br />
i=<br />
1<br />
⎠<br />
* *<br />
*<br />
λi<br />
∇g<br />
( x ) ⎟ i ⎟<br />
= f ( x ) .<br />
⎠<br />
*<br />
i i g<br />
*<br />
( x ) = 0<br />
Aşadar, f ( x) ≥ f ( x ) şi astfel x * este soluţie globală. <br />
Definiţia 3.9. O restricţie inegalitate g ( x)<br />
≤ 0 se numeşte activă într-un punct<br />
admisibil x * *<br />
*<br />
dacă g ( x ) = 0 şi inactivă dacă g ( x ) < 0 .<br />
i<br />
i<br />
Următoarea teoremă afirmă că optimalitatea unei soluţii a problemei de<br />
programare convexă (3.6) nu se modifică dacă se înlătură restricţiile pe<br />
care soluţia<br />
le transformă<br />
în inegalităţi stricte.<br />
eorema 3.3. Dacă x * este o soluţie a problemei (3.6), atunci x * T<br />
este şi o soluţie<br />
a problemei restrânse<br />
⎧ min f ( x)<br />
⎨<br />
*<br />
(3.6’)<br />
⎩g<br />
i ( x)<br />
≤ 0 , i ∈E<br />
,<br />
*<br />
unde E = { i ∈E<br />
∪ I g ( x ) = 0}<br />
*<br />
i<br />
.<br />
Demonstraţie. Presupunem că x nu este soluţie a problemei (3.6’), adică<br />
n<br />
∃ x ∈R<br />
, soluţie a problemei (3.6’), astfel încât<br />
( )<br />
*<br />
*<br />
g i (x ) ≤ 0 , i ∈E<br />
şi f ( x ) < f ( x)<br />
, ( ) ∈R<br />
i<br />
∀ x . (3.8)<br />
*<br />
F ie x = θ x + ( 1 − θ ) x , 0 < θ < 1.<br />
Să arătăm că pentru θ suficient de mic<br />
θ<br />
este o soluţie pentru problema (3.6) ‘mai bună’ decât x * , adică<br />
xθ<br />
.<br />
( ) ( )<br />
*<br />
x f x<br />
f <<br />
θ
48<br />
Modele şi algoritmi de optimizare<br />
Mai întâi să arătăm că x ∈R<br />
, ad ică este un punct admisibil pentru problema<br />
(3.6’).<br />
Din convexitatea g , i 1,<br />
m<br />
θ<br />
funcţiilor i = , pentru orice ∈(<br />
0,<br />
1)<br />
*<br />
*<br />
( xθ ) ≤ θg<br />
( x) + ( 1 − θ ) g i ( x ) ≤ 0 , ( ∀)<br />
i ∈E<br />
şi<br />
*<br />
*<br />
( x ) ≤θ g ( x) ( −θ<br />
) ( ) < 0 ( ∀)<br />
j ∉E<br />
,<br />
g i<br />
i<br />
g j j + 1 g j x ,<br />
θ<br />
θ avem<br />
*<br />
*<br />
deoarece<br />
g ( x)<br />
≤ 0 , ( x ) < 0 , ( ∀)<br />
j ∉E<br />
. Din convexitatea funcţiei f şi din<br />
(3.8) rezultă<br />
j<br />
g j<br />
*<br />
*<br />
( x ) ≤ θf<br />
( x)<br />
+ ( − θ ) f ( x ) f ( x )<br />
f <<br />
Inegali p ctului x * θ 1 (3.9)<br />
tatea (3.9) este în contradicţie cu proprietatea un de a fi<br />
so luţie optimă pentru problema (3.6). Aşadar, un astfel de punct x nu există. <br />
Convenim ca orice restricţie (3.6) cu egalitate, în punctele admisibile este o<br />
restricţie activă. Restricţiile acti ve într- un punct admisibil x restrâng domeniul de<br />
admisibilitate în vecinătatea punctului x , în timp ce restricţiile inactive nu au<br />
influenţă în vecinătatea<br />
punctului x . Aşadar, în studiul proprietăţilor unui extrem<br />
local atenţia se poate concentra numai asupra restricţiilor active. Dacă s-ar cunoaşte<br />
care restricţii sunt active pentru rezolvarea problemei (3.6), soluţia ar fi un minim<br />
local al problemei<br />
obţinute din (3.6) prin ignorarea restricţiilor inactive şi tratarea<br />
restricţiilor active ca egalităţi. Astfel, pentru soluţii locale, problema<br />
(3.6) poate fi<br />
privită numai cu restricţii egalităţi.<br />
*<br />
Definiţia 3.10. Un punct x ∈ K care satisface restricţiile (x ) = 0,<br />
i ∈ E se<br />
*<br />
numeşte regulat dacă vectorii ∇g ( x ) i ∈E<br />
i , sunt liniar independenţi.<br />
3.2.1. Cazul<br />
restricţiilor egalităţi<br />
Acest caz reprezintă bine cunoscuta problemă a extremelor cu legături (sau<br />
extreme condiţionate).<br />
Teo rema 3.4. În problema (3.6) considerăm că gi(x)=0, i = 1,<br />
m şi că f şi gi<br />
sunt diferenţiabile, iar matricea jacobiană<br />
*<br />
*<br />
⎛ ∂g1<br />
( x ) ∂g1<br />
( x ) ⎞<br />
⎜ L ⎟<br />
⎜ ∂x1<br />
∂xn<br />
⎟<br />
J = ⎜ O<br />
⎟<br />
⎜ *<br />
* ⎟<br />
⎜<br />
∂g<br />
m ( x ) ∂g<br />
m ( x )<br />
⎟<br />
⎜<br />
L<br />
⎟<br />
⎝ ∂x1<br />
∂xn<br />
⎠<br />
g i
3. Programare convexă 49<br />
are în x u<br />
* rangul m , x * fiind un punct regulat care realizează n minim local.<br />
Atunci există<br />
Numerele 1<br />
*<br />
* *<br />
numerele λ ∈R<br />
, asfel încât f ( x ) + λ ∇ ( x ) = 0 .<br />
λ ,..., m<br />
m<br />
m<br />
∇ ∑<br />
i=<br />
1<br />
λ se numesc multiplicatorii<br />
lui Lagrange.<br />
3.2.2. Cazul restricţiilor inegalităţi<br />
i i g<br />
Un rol esenţial în rezolvarea problemei (3.6) cu I ≠ φ îl au condiţiile Kuhn-<br />
Tucker.<br />
Pentru demonstrarea condiţiilor Kuhn-Tucker (cunoscute şi sub denumirea de<br />
condiţii optimale de ordinul I) avem nevoie de lema Farkas-Minkowski a cărei<br />
demonstraţie o omitem (Henry-Labordere, 1995).<br />
Lema 3.4. (Farkas-Minkowski) Fie<br />
că<br />
( )<br />
A∈ M ( R)<br />
, rang(<br />
A)<br />
= m şi presupunem<br />
m,n<br />
m<br />
∀ x ∈R<br />
Ax ≥ 0 şi c ′x ≥ 0 .<br />
Atunci există multiplicatorii λ ≥ 0 , i = 1,<br />
n astfel încât vectorul c se scrie sub<br />
t<br />
forma A λ , unde λ .<br />
c = ( ) ′<br />
λ , λ , ..., λ<br />
i<br />
= 1 2 n<br />
*<br />
Definiţia 3.11. Fie un punct x ∈R<br />
de extrem local (global) pentru problema<br />
( k )<br />
( k )<br />
( k )<br />
(k) ( k )<br />
(3.6) şi un şir ( x ) ⊂ R astfel încât ( x ) ⎯⎯ →x<br />
, x − x = δ s , iar<br />
k≥1<br />
⎯k →∞<br />
( k )<br />
( k )<br />
( )<br />
s = 1 , δ > 0 . Vectorul lim se numeşte direcţie admisibilă<br />
k<br />
s = s<br />
*<br />
(realizabilă) în x .<br />
k →∞<br />
Notăm<br />
C a ={s∈R n ⎥ s este direcţie admisibilă în x * }<br />
*<br />
conul direcţiilor admisibile în x , şi<br />
t<br />
n<br />
*<br />
C = ∈ ′ ∇g<br />
( ) ≤ 0 , i ∈E<br />
*<br />
s s R<br />
{ }<br />
i x<br />
conul tangent în<br />
*<br />
x la R.<br />
Ipoteza de calificare a restricţiilor într-un punct de extrem este dată de relaţia<br />
a t<br />
C = C . (3.10)<br />
Se poate demonstra următoarea propoziţie (Fletcher, 1981).<br />
Propoziţia 3.1. Ipoteza de calificare a restricţiilor (3.10) are loc dacă :<br />
*<br />
i) restricţiile cu indicele i ∈E<br />
sunt liniar independente, sau<br />
*<br />
ii) vectorii ∇g ( ) , i ∈E<br />
sunt liniar independenţi.<br />
*<br />
i x
50<br />
Considerăm că :<br />
E ≠ φ , I ≠ φ şi ⎪E⎪+⎪I⎪=m≤n ,<br />
x * punct admisibil<br />
dă un minim local,<br />
f, gi sunt diferenţiabile<br />
şi<br />
*<br />
* *<br />
vectorii ∇ ( x ) , i ∈E<br />
∪ ∇g<br />
( x ) g ( x ) = b , j ∈I<br />
{ } { }<br />
g i<br />
j j<br />
j<br />
Modele şi algoritmi de optimizare<br />
sunt independenţi.<br />
Teorema<br />
3.5. (Condiţiile Kuhn-Tucker) În ipotezele de mai sus, condiţia necesară<br />
şi suficient ă pentru ca x să existe<br />
multiplicato<br />
* să fie o soluţie a problemei (3.6) este<br />
rii λi ∈R<br />
+ , i = 1,<br />
m , astfel încât<br />
(i)<br />
*<br />
*<br />
*<br />
∂f<br />
( x ) ∂gk<br />
( x ) ∂g<br />
k ( x )<br />
+ ∑λ<br />
k + ∑λ<br />
k = 0 , ( ∀)<br />
i = 1,<br />
n<br />
∂xi<br />
k∈E<br />
∂xi<br />
k∈I<br />
∂xi<br />
( ii)<br />
k ( g k ( x ) − bk<br />
) = 0 , ( ∀)<br />
k ∈I<br />
Demonstraţie. Condiţiile Kuhn-Tucker sunt necesare. Din ipoteza de calificare a<br />
*<br />
*<br />
λ<br />
restricţiilor în x rezultă că ′ ∇g<br />
( ) ≤ 0 , i ∈E<br />
*<br />
a<br />
s i x<br />
şi deoarece pentru ( ∀ ) s ∈C<br />
avem<br />
( k )<br />
* ( k ) ( k ) *<br />
( k )<br />
( k )<br />
*<br />
f ( x ) = f ( x ) + δ s ∇f<br />
( x ) + O ( δ ) , ( ∀)<br />
x ∈ Br<br />
( x ) .<br />
Dar<br />
( k )<br />
* ( k ) ( k ) *<br />
( k )<br />
f ( x ) ≥ f ( x ) ⇒δ<br />
s ∇f<br />
( x ) + O ( δ ) ≥ 0 .<br />
( k )<br />
Împărţim relaţia de mai sus la δ > 0 şi trecem la limită pentru k → ∞ şi<br />
*<br />
obţinem că s′ ∇f<br />
( x ) ≥ 0 . În Lema Farkas-Minkowski, înlocuind x cu s şi A<br />
cu ( )<br />
*<br />
∇ gE x , rezultă că ( ∃) λ E<br />
*<br />
*<br />
≥ 0 , astfel încât ( x ) E gE<br />
( x ) ∇ − = ∇f λ , unde<br />
( )<br />
*<br />
∇ gE x este matricea care are ca linii ∇g ( ) , i ∈E<br />
*<br />
i x . Considerăm vectorul<br />
n<br />
*<br />
*<br />
*<br />
λ = [ λE<br />
, 0 ] ∈ R şi ∇f ( x ) = −λ′<br />
∇g(<br />
x ) cu proprietatea că λ ′ ∇g(<br />
x ) = 0 ,<br />
egalitate evidentă, deoarece<br />
*<br />
*<br />
( x ) = 0 , i ∈E<br />
, λ = 0 ,<br />
*<br />
∀ j ∈I<br />
− E .<br />
g i<br />
j<br />
Condiţiile Kuhn-Tucker sun t suficiente. În Teorema<br />
3.2 se consideră b=0 şi<br />
*<br />
rezultă că x este soluţia problemei (3.6) . <br />
Se observă că pentru suficienţa condiţiilor Kuhn-Tucker nu mai este necesară<br />
ipoteza calificării<br />
restricţiilor.<br />
În capitolele 4, 5 şi 6 funcţiile obiectiv sunt cazuri particulare de funcţii<br />
convexe, iar restricţiile sunt liniare, deci convexe. Algoritmii<br />
prezentaţi în aceste<br />
capitole<br />
se bazează pe particularităţile fiecărui tip de problemă.<br />
( )
4. PROGRAMARE LINIARĂ<br />
4.1. Exemple de probleme de programare liniară<br />
4.1.1. Utilizarea optimă a resurselor<br />
Un manager de agent economic trebuie să rezolve destul de des următoarea<br />
problemă (Zidăroiu, 1983):<br />
Resursele pe care le are la dispoziţie<br />
(materie primă, forţă de muncă, maşiniunelte,<br />
resurse financiare etc.) sunt în cantităţi limitate. Fie i numărul de ordine al<br />
resursei şi fie bi cantitatea disponibilă din resursa i. Cu ajutorul acestor resurse se<br />
pot desfăşura mai multe activităţi (de exemplu: procese de producţie).<br />
Fie j numărul de ordine al activităţii desfăşurate şi fie xj nivelul (necunoscut)<br />
la care trebuie să se desfăşoare această activitate. De exemplu, pentru procesul de<br />
producţie j, care constă în fabricarea unui anumit produs, se notează cu xj<br />
cantitatea ce va fi produsă. Fie aij cantitatea din resursa i necesară producerii<br />
unei unităţi din produsul j. Se presupune că ai j nu depinde decât de tipul resursei<br />
(i)<br />
şi<br />
de tipul produsului realizat (j) şi nu de cantităţile produse, ceea ce constituie<br />
evident<br />
o simplificare a situaţiei reale.<br />
Cu aceste notaţii se pot determina mărimile următoare:<br />
− cantitatea din resursa i folosită pentru producerea cantităţii<br />
xj, care este aij xj;<br />
− cantitatea totală din resursa i folosită pentru producţia totală formată din n<br />
produse:<br />
ai1 x1+ai2 x2+...+ain xn .<br />
Deoarece nu se poate consuma din resursa i mai mult decât cantitatea de care<br />
se dispune, trebuie să fie respectate condiţiile:<br />
ai1 x1+ai2 x2+...+ain xn ≤ bi , (∀) 1 ≤ i ≤ m,<br />
sau<br />
n<br />
∑<br />
j=<br />
1<br />
a<br />
ij<br />
x<br />
j<br />
≤ b<br />
i<br />
, i∈{1, 2,..., m}. (4.1)<br />
xj reprezentând cantitatea ce trebuie produsă din sortimentul j, ea nu poate<br />
fi<br />
un număr negativ:<br />
x j ≥ 0, j∈{1, 2,..., m}.<br />
(4.2)<br />
Inec uaţiile (4.1) se numesc restricţiile problemei, iar (4.2),<br />
condiţiile de<br />
nenegativitate.
52<br />
Modele şi algoritmi de optimizare<br />
Sistemul de inecuaţii liniare (4.1) şi (4.2) poate avea o infinitate de soluţii,<br />
o<br />
soluţie sau nici una. Pentru problemele corect puse, cel mai frecvent este cazul cu o<br />
infinitate de soluţii.<br />
Adoptarea unei variante de plan (luarea unei decizii) se face pe baza unui<br />
criteriu economic, ca de exemplu venitul sau profitul să fie<br />
maxim.<br />
Dacă se notează cu cj preţul de vânzare al unei unităţi din produsul j şi cu dj<br />
costul unitar pentru acelaşi produs (se presupune, pentru simplificarea problemei,<br />
că atât preţul de vânzare cât şi costul nu depind de cantitatea produsă, ceea ce nu<br />
prea este în concordanţă cu realitatea), atunci venitul total va fi: ∑ n<br />
cheltuielile de producţie ∑ j j , şi deci profitul obţinut va fi:<br />
j=<br />
x d<br />
1<br />
n<br />
n<br />
∑cx−∑d n<br />
j j<br />
j=<br />
1 j=<br />
1<br />
j<br />
x<br />
j<br />
n<br />
j=<br />
1<br />
j=<br />
1<br />
= ∑ ( c j − d j ) x j<br />
(4.3)<br />
Problema care se pune acum este de a d etermina acea variantă de plan,<br />
adică<br />
acea soluţie a sistemului de inegalităţi (4.1), (4.2) care<br />
dă pentru profitul (4.3)<br />
valoarea maximă. În acest moment, din<br />
acea problemă economică s-a obţinut<br />
următoarea<br />
problemă matematică:<br />
n ⎧<br />
⎪max∑<br />
( c j − d j ) x j<br />
j=<br />
1 ⎪<br />
n<br />
⎪<br />
⎨∑<br />
a ij x j ≤ bi<br />
(4.4)<br />
⎪ j=<br />
1<br />
⎪x<br />
j ≥ 0<br />
⎪<br />
⎩<br />
Aceasta este o problemă de programare liniară, sau program liniar.<br />
4.1.2. Problema de transport<br />
j j x c<br />
, iar<br />
Se consideră că există m centre de aprovizionare<br />
(depozite) şi n centre<br />
de<br />
consum (puncte de lucru, uzine, magazine etc.). Se pune<br />
problema să se determine<br />
un plan de transport pentru un produs omogen care se află în cantitatea ai la<br />
depozitul i (1 ≤ i ≤ m) şi este cerut în cantitatea bj la centrul j (1 ≤ j ≤ n). Se<br />
notează cu xij cantitatea necunoscută ce va<br />
fi transportată de la depozitul i la<br />
centrul de consum j şi cu cij costul transportului unei unităţi din produsul<br />
considerat de la depozitul i la centrul j (pentru simplificare se presupune că acest<br />
cost unitar nu depinde de cantitatea transportată pe ruta respectivă).<br />
Se pot exprima atunci următoarele mărimi:<br />
– cantitatea cerută de la depozitul i la toate cele n centre de consum<br />
ai = xi1 + xi2 + ... + xin = cantitatea aflată la depozitul i,<br />
(4.5)<br />
–<br />
cantitatea transportată de la toate cele m depozite la centrul de consum j
4. Programare liniară 53<br />
bj = x 1j + x 2j + ...+ x mj = necesarul la centrul de consum j, (4.6)<br />
– costul transportului de la depozitul i la centrul de consum j este cijxij.<br />
O condiţie evidentă este<br />
xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n . (4.7)<br />
Costul total al transportului de la toate cele m depozite la toate cele n centre<br />
de consum este<br />
∑∑<br />
i=<br />
1 j=<br />
1<br />
Pentru a putea efectua transportul este necesar ca<br />
m<br />
m<br />
∑<br />
i=<br />
1<br />
a<br />
i<br />
n<br />
=<br />
egalitate numită<br />
şi condiţia de balansare sau de echilibru.<br />
Sistemul de ecuaţii (4.5), (4.6) are o infinitate de soluţii. Dintre acestea trebuie<br />
alese cele care dau costului total de transport valoarea minimă. Se obţine astfel<br />
un<br />
program<br />
liniar:<br />
n<br />
∑<br />
j=1<br />
m<br />
∑<br />
i=1<br />
m<br />
n<br />
∑∑<br />
i=<br />
1 j=<br />
1<br />
c<br />
ij ij x<br />
n<br />
∑<br />
j=<br />
1<br />
ij ij x<br />
b<br />
j<br />
.<br />
,<br />
c min (4.8)<br />
x = a , 1 ≤ i ≤ m (4.9)<br />
ij<br />
i<br />
x = b , 1 ≤ j ≤ n<br />
care se numeşte program de transport.<br />
ij<br />
j<br />
(4.10)<br />
xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n, (4.11)<br />
Programe liniare de acelaşi tip pot să apară şi în următoarea situaţie.<br />
Trebuie aprovizionat un grup de uzine dirijate de un centru comun, având la<br />
dispoziţie m centre de aprovizionare, n puncte de consum<br />
şi se cere determinarea<br />
unui plan de transport (xij), 1 ≤ i ≤ m, 1 ≤ j ≤ n, care să minimizeze cheltuielile<br />
totale de transport:<br />
în<br />
condiţiile<br />
n<br />
∑<br />
j=1<br />
m<br />
∑<br />
i=1<br />
m n<br />
∑∑ min i= 1 j=<br />
1<br />
c<br />
ij ij x<br />
, (4.12)<br />
x ≤ a , 1 ≤ i ≤ m (4.13)<br />
ij<br />
i<br />
x ≥ b<br />
ij<br />
j<br />
, 1 ≤ j ≤ n<br />
(4.14)<br />
xij ≥ 0, 1 ≤ i ≤ m , 1 ≤ j ≤ n, (4.15)
54<br />
Modele şi algoritmi de optimizare<br />
unde ai , 1 ≤ i ≤ m, sunt capacităţile centrelor de depozitare,<br />
bj , 1 ≤ j ≤ n, sunt<br />
cantităţile<br />
necesare uzinelor, iar cij este costul unitar de transport de la depozitul i<br />
la uzina j. Pentru a avea soluţii trebuie ca<br />
m<br />
∑<br />
i=<br />
1<br />
a<br />
i<br />
≥<br />
Problema se poate pune şi invers, considerând problema unui plan de transport<br />
de la mai multe uzine i la punctele de desfacere j.<br />
Dacă ai , 1 ≤ i ≤ m, reprezintă acum capacităţile de producţie ale uzinelor, bj ,<br />
1 ≤ j ≤ n, capacităţile de depozitare ale punctelor de desfacere, se obţine un model<br />
similar în care grupurile<br />
de inecuaţii (4.13), (4.14) îşi schimbă sensul.<br />
4.1.3. Alocarea optimă a fondurilor financiare<br />
Având la dispoziţie o sumă totală S care poate fi investită în diverse activităţi<br />
j, 1 ≤ j ≤ n, fiecare producând un anumit profit unitar aj , 1 ≤ j ≤ n, se pune<br />
problema determinării sumei xj , 1 ≤ j ≤ n, investită pentru activitatea j, astfel<br />
încât să se obţină un profit maxim, adică:<br />
în condiţiile:<br />
∑ n<br />
j= 1<br />
j j x<br />
n<br />
∑<br />
j=<br />
1<br />
b<br />
j<br />
.<br />
a max (4.16)<br />
n<br />
∑<br />
j=<br />
1<br />
x<br />
j =<br />
S<br />
xj ≥ 0, 1 ≤ j ≤ n . (4.18)<br />
Problema mai poate fi complicată<br />
dând anumite reguli suplimentare în legătură<br />
cu posibilitatea de investiţie, cu existenţa unui risc al investiţiilor şi neliniaritatea<br />
profitului total.<br />
4.1.4. Gestionarea optimă a unui depozit<br />
(4.17)<br />
Să considerăm problema funcţionării unui depozit care cumpără şi vinde un<br />
anumit produs cu scopul maximizării profitului pe o anumită durată de timp.<br />
Depozitul are o anumită capacitate fixă S şi un cost unitar de stocare h . Preţul<br />
produsului fluctuează de-a lungul perioadei de analiză, dar<br />
pe durata unei unităţi de<br />
timp preţul de achiziţie şi preţul de vânzare sunt aceleaşi. Depozitul este iniţial gol<br />
şi trebuie<br />
să rămână gol la sfârşitul perioadei de analiză.<br />
Modelarea problemei. Fie
4. Programare liniară 55<br />
− xi stocul din depozit la începutul perioadei i,<br />
− di cantitatea achiziţionată în perioada i,<br />
− bi cantitatea vândută în perioada i şi<br />
− pi preţul pe perioada i.<br />
Dacă sunt n intervale de timp avem:<br />
max<br />
n<br />
∑<br />
i=<br />
1<br />
( p b − hx )<br />
⎧xi+<br />
1 = xi<br />
+ di<br />
− bi<br />
, i = 1,<br />
n −1<br />
⎪<br />
xn<br />
+ dn<br />
− bn<br />
= 0<br />
⎨<br />
⎪xi<br />
+ di<br />
≤ S<br />
⎪<br />
⎩x1<br />
= 0 , xi<br />
, di<br />
, bi<br />
≥ 0<br />
Se obţine astfel o problemă de programare liniară.<br />
i<br />
i<br />
4.1.5. Problema dietei<br />
i<br />
(4.19)<br />
Se presupune că există n alimente diferite, cu preţul unitar ci pentru<br />
alimentul i, din care trebuie să se pregăteacă o dietă. Dieta trebuie să<br />
conţină<br />
zilnic m ingrediente nutritive şi din fiecare ingredient j, minimum bj unităţi. Se<br />
presupune că o unitate din alimentul i conţine<br />
aji unităţi din ingredientul<br />
j. Să<br />
se determine cea mai economică dietă care satisface<br />
minimul nutriţional cerut.<br />
Modelarea problemei<br />
Se notează cu x i numărul de unităţi din alimentul<br />
i conţinut în dietă. Trebuie<br />
minimizat costul<br />
total al dietei<br />
min {c1x1+ c2x2+...+ cnxn}<br />
supus la rest ricţiile următoare date de conţinutul în ingrediente<br />
nutriţionale<br />
⎧ a11x1<br />
+ a12 x2<br />
+ ... + a1n<br />
xn<br />
≥ b1<br />
⎪<br />
⎪<br />
a21x1<br />
+ a22<br />
x2<br />
+ ... + a2n<br />
xn<br />
≥ b2<br />
⎪<br />
⎨<br />
M<br />
M<br />
⎪am<br />
1x1<br />
+ am<br />
2 x2<br />
+ ... + amn<br />
xn<br />
≥ bm<br />
⎪<br />
⎪⎩<br />
xi<br />
≥ 0 , i = 1,<br />
n<br />
Problema care a rezultat este tot o problemă de programare liniară. Acelaşi tip<br />
de problemă<br />
poate apărea în realizarea amestecurilor de tip mortar, beton etc.
56<br />
Modele şi algoritmi de optimizare<br />
4.2. Diferite forme ale problemelor de programare liniară<br />
Scrisă matriceal, cea mai generală problemă de programare liniară are forma<br />
(Zidăroiu, 1983)<br />
1 2 3<br />
min [ c ′ x + c′<br />
x + c′<br />
x ]<br />
1<br />
2<br />
1<br />
2<br />
3<br />
⎧A11x<br />
+ A12<br />
x + A13<br />
x ≥ b1<br />
⎪ 1<br />
2<br />
3<br />
⎨ A + + x = b<br />
(4.20)<br />
21x<br />
A22<br />
x A23<br />
2<br />
⎪ 1<br />
2<br />
3<br />
⎩<br />
A31x<br />
+ A32<br />
x + A33<br />
x ≤ b3<br />
1 2 3<br />
x ≥ 0, x oarecare, x ≤ 0<br />
unde x se impun condiţii de<br />
variabilelor asupra cărora se impun condiţii de nepozitivitate,<br />
1 este vectorul variabilelor asupra cărora<br />
nenegativitate, x 2 − vectorul variabilelor asupra cărora nu se impun condiţii de<br />
semn, x 3 − vectorul<br />
Aij − submatrice a matricei A , ale cărei elemente sunt coeficienţii componentelor<br />
vectorului x j , iar bi sunt subvectori ai vectorului b ( 1≤ , j ≤ 3)<br />
i . Prin x≥ 0 se<br />
va înţelege că fiecare componentă a vectorului x este nenegativă.<br />
Se spune că o problem ă are forma standard dacă toate restricţiile<br />
sunt ecuaţii<br />
şi tuturor variabilelor li se impun condiţii de nenegativitate<br />
⎧ min(max) c′<br />
x<br />
⎪<br />
⎨Ax<br />
= b<br />
⎪<br />
⎩x<br />
≥ 0<br />
(4.21)<br />
c′<br />
x =<br />
n<br />
∑<br />
i=<br />
1<br />
i i x c<br />
Se spune că o problemă are forma canonică dacă toate restricţiile sunt inegalităţi<br />
de acelaşi sens şi tuturor variabilelor li se impun condiţii de nenegativitate<br />
≥<br />
⎪<br />
⎩ ≥<br />
⎧min<br />
c′<br />
x<br />
⎪<br />
⎨Ax<br />
b<br />
(4.22)<br />
x 0<br />
⎧max<br />
c′x<br />
⎪<br />
⎨Ax<br />
≤ b<br />
⎪<br />
⎩x<br />
≥ 0<br />
3<br />
(4.22’)<br />
Observaţia 4.1. Orice problemă de forma (4.20) poate fi adusă la forma standard<br />
(4.21) sau forma canonică (4.22) folosind următoarele transformări:<br />
i) transformarea maximului în minim şi invers se bazează pe următoarea<br />
egalitate:<br />
max f ( x) = −min<br />
− f ( x)<br />
x∈X<br />
x∈X<br />
{ }<br />
ii) transformarea sensului unei inegalităţi se realizează prin înmulţirea cu −1
4. Programare liniară 57<br />
iii) o variabilă x căreia nu i se impun condiţii de semn se înlocuieşte cu<br />
diferenţa a două variabile nenegative<br />
x = x1−x2 , x1 ≥ 0 , x2 ≥ 0<br />
iv) o variabilă x ≤ 0 se înlocuieşte cu o variabilă<br />
nenegativă −x<br />
v) transformarea ecuaţiilor<br />
în inecuaţii<br />
⎧a′ x ≤ b<br />
a′ x = b ⇔ ⎨<br />
⎩a′<br />
x ≥ b<br />
vi) transformarea inecuaţiilor în ecuaţii<br />
a'x ≤ b se poate scrie ca o ecuaţie<br />
a'x+y=b,<br />
introducând o variabilă y ≥ 0 numită variabilă ecart;<br />
a'x ≥ b se poate scrie ca o ecuaţie<br />
a' x− y=b, y ≥ 0.<br />
Variabilele ecart nu apar în funcţia obiectiv (sau apar cu coeficienţi nuli).<br />
4.3. Algoritmul simplex<br />
lgoritmului (Zidăroiu, 1983).<br />
M (R) o<br />
at<br />
stemul Ax = b devine:<br />
⎡ ⎤ B<br />
Acest algoritm (datorat lui G. B. Dantzig, 1951) se aplică problemelor de<br />
programare liniară sub forma standard. Sunt necesare câteva noţiuni de bază pentru<br />
prezentarea a<br />
Fie sistemul de ecuaţii Ax = b, A∈Mm,n(R), rang A = m. Fie B∈ m,n<br />
m rice pătratică nesingulară extrasă din A şi notăm x B vectorul variabilelor<br />
corespunzătoare coloanelor lui B. Notăm cu S partea din matricea A care mai<br />
rămâne şi cu x S variabilele corespunzătoare. Si<br />
x B S [ BS ] ⋅ ⎢ ⎥ = b sau Bx + Sx = b. (4.23)<br />
S<br />
⎣x<br />
⎦<br />
Astfel, în (4.23) luăm x B variabile principale şi celelalte x S , variabile<br />
secundare şi avem<br />
x B = B −1 b−B −1 S x S . (4.24)<br />
Anulând variabilele secundare avem<br />
ie s meşte soluţie de bază (deoarece B fiind nesingu<br />
oloanele sale constituie o bază în R m x<br />
).<br />
Variabilele p<br />
Se numeşte are exact m<br />
omponente nenule.<br />
Se numeşte soluţie degenerată o soluţie de bază care are şi componente nule.<br />
B = B −1 b , x S =0. (4.25)<br />
O astfel de soluţ e nu lară,<br />
c<br />
rincipale se numesc variabile de bază.<br />
soluţie nedegenerată o soluţie de bază care<br />
c<br />
Se numeşte soluţie admisibilă sau program o soluţie a sistemului de ecuaţii<br />
şi inecuaţii (4.1) ce verifică şi condiţia de nenegativitate (4.2).<br />
Notăm R = {x∈ R n x program}, z * = min{c'x⏐x∈ R n } .
58<br />
Convenim să punem z * = +∞ dacă R = φ.<br />
Dacă z * = −−∞, spunem că problema are optim infinit.<br />
Modele şi algoritmi de optimizare<br />
Dacă z * este finit, atunci x * ∈ R cu proprietatea că z * = c' x * se numeşte<br />
soluţie optimă sau program optim.<br />
Notăm cu R r optime.<br />
* mulţimea soluţiilo<br />
Soluţia de bază a problemei de programare liniară sub forma standard se<br />
numeşte program de bază (x = 0 este program de bază dacă x=0 este program).<br />
Teorema fundamentală a programării liniare stă la baza algoritmului simplex<br />
(Luenberger, 1989).<br />
Teorema 4.1.<br />
(i) Dacă problema de programare liniară sub forma standard (4.21) are un<br />
program, atunci are cel puţin un program de bază.<br />
(ii) Dacă problema de programare liniară sub<br />
forma standard (4.21) are un<br />
program optim, atunci are şi un program de bază optim.<br />
Demonstraţie.<br />
(i) Se notează coloanele<br />
matricei A cu a1, a2, …, an şi se presupune că x’=(x1, x2,<br />
…, xn)’ este o soluţie admisibilă şi atunci are loc relaţia<br />
x1a1+x2a2+ …+xnan=b.<br />
Se presupune<br />
că exact p≤ m dintre variabilele xi sunt diferite de zero şi că acestea<br />
sunt chiar<br />
primele. Atunci<br />
x1a1+x2a2+…+xpap=b.<br />
(4.26)<br />
Coloanele<br />
a1, a2, …, ap pot fi liniar independente sau liniar dependente.<br />
Cazul I. Presupunem că a1, a2, …, a p sunt liniar independente. Dacă p=m<br />
atunci soluţia este de bază şi demonstraţia<br />
se încheie. Dacă p 0⎬<br />
.<br />
⎩ yi<br />
⎭<br />
Pentru orice valoare ε soluţia dată de (4.29) este admisibilă şi are cel<br />
mult<br />
p−1 componente pozitive. Repetând acest proces dacă este necesar, putem elimina
4. Programare liniară 59<br />
componentele pozitive<br />
până când avem o soluţie admisibilă corespunzătoare<br />
coloanelor<br />
care sunt liniar independente. Am ajuns în cazul I şi se poate aplica<br />
acesta în continuare.<br />
(ii) Fie x’=(x1, x2, …, xn) o soluţie admisibilă optimală care are exact p<br />
componente pozitive x1, x2, …, xp . Din nou pot fi două cazuri: coloanele<br />
corespunzătoare componentelor nenule pot fi liniar independente sau liniar<br />
dependente.<br />
Cazul I. Coloanele sunt liniar independente. Este exact ca şi la (i).<br />
Cazul II. Coloanele sunt liniar dependente. Este ca şi în cazul II de la (i) numai<br />
că trebuie să arătăm că pentru orice ε soluţia<br />
dată de (4.29) este optimală. Pentru<br />
această soluţie, valoarea funcţiei obiectiv este<br />
c’x− εc’y<br />
(4.30)<br />
Pentru ε suficient de mic, x−εy este o soluţie<br />
admisibilă pentru valori<br />
pozitive sau negative ale lui ε. Astfel putem concluziona că c’y=0. Dacă c’y≠0<br />
se poate determina un ε mic<br />
şi semnul acestuia, astfel încât (4.30) să conducă la o<br />
valoare<br />
mai mică pentru funcţia obiectiv. Contradicţie cu faptul că x este soluţie<br />
optimală şi astfel trebuie să presupunem că c’y=0. Având stabilit că noua soluţie<br />
admisibilă cu mai puţine componente pozitive este optimală, restul demonstraţiei<br />
este ca la (i).<br />
<br />
4.4. Fundamentele algoritmului simplex<br />
Din Teorema 4.1 rezultă că putem determina soluţia problemei de programare<br />
liniară sub forma standard astfel: pentru toate bazele B din matricea A (acestea<br />
sunt, evident, în număr finit), calculăm soluţia de bază corespunzătoare B b ,<br />
mică sau cea<br />
mai mare).<br />
Dezavantajul ce apare constă în volumul mare de calcule, chiar şi atunci când<br />
e<br />
r de bază, mai precis de trecere de la un program de bază la altul care dă<br />
funcţiei obiectiv o valoare mai mare sau mai mică, după cum problema e<br />
z<br />
niară nu are programe sau are optim<br />
Astfel, dacă B este o bază (să presupunem că B b ≥ 0), sistemul Ax=b se<br />
poate scrie (Zidăroiu, 1983)<br />
1 −<br />
reţinem dintre acestea doar pe acelea care sunt programe de bază (B −1 b ≥ 0) şi<br />
alegem pe aceea care dă funcţiei obiectiv valoarea optimă (cea mai<br />
problemele sunt de dim nsiuni mici.<br />
Algoritmul simplex dă o metodă de explorare sistematică şi economică a<br />
programelo<br />
ste de<br />
maximizare sau minimizare. De asemenea, algoritmul furnizea ă criterii pentru<br />
cazurile în care problema de programare li<br />
infinit.<br />
−1<br />
sau<br />
x B =B −1 b−B −1 Sx S
60<br />
sau pe componente<br />
unde<br />
x<br />
B<br />
= x<br />
B<br />
∑<br />
j∈S<br />
−<br />
∑<br />
j∈S<br />
y<br />
B<br />
j<br />
x<br />
j<br />
Modele şi algoritmi de optimizare<br />
(4.31)<br />
B B<br />
B<br />
x = x − y x , i∈ B, (4.31’)<br />
i<br />
i<br />
x<br />
B<br />
ij<br />
= B<br />
y = B<br />
iar:<br />
aj este coloana j a matricei A ,<br />
S={indicii variabilelor secundare},<br />
B={indicii variabilelor<br />
de bază}.<br />
B<br />
Observaţie 4.2. Pentru j∈ B, y j = B a j = e j , ej fiind vectorul unitate.<br />
−1<br />
−1<br />
B −1<br />
j<br />
j<br />
b<br />
a<br />
(4.32)<br />
(4.33)<br />
Folosind (4.31), putem exprima funcţia obiectiv<br />
cu ajutorul variabilelor<br />
secundare x S astfel<br />
n<br />
z = ∑c<br />
j x j<br />
j=<br />
1<br />
sau<br />
= ∑cjxj j∈S ⎛ ⎞<br />
B B<br />
B ⎛ B ⎞<br />
+ ∑c⎜ i ⎜<br />
xi<br />
− ∑y⎟<br />
⎟ ∑ ∑∑ ⎜ − ⎟<br />
ij x j = ci<br />
xi<br />
− c i yij<br />
c j x j<br />
i∈B<br />
⎝ j∈S<br />
⎠ i∈B<br />
j∈S⎝i∈B ⎠<br />
unde<br />
j<br />
B ( c )<br />
j<br />
B<br />
z = z ∑ z − x ,<br />
(4.34)<br />
− j j j<br />
j∈S<br />
B<br />
B<br />
B<br />
z ci<br />
xi<br />
= c B ⋅ x<br />
i∈B<br />
B<br />
j<br />
= ∑<br />
i∈B<br />
i<br />
ij<br />
′<br />
,<br />
(4.35)<br />
z = ∑ c y = c′ ⋅ y , (4.36)<br />
α = −(<br />
z − c ) sunt numiţi coeficienţi de cost redus sau coeficienţi de cost<br />
j<br />
j<br />
relativ.<br />
Pentru simplificarea scrierii renunţăm la indicele superior B, înţelegându-se că<br />
este vorba de elementele corespunzătoare bazei.<br />
La baza algoritmului simplex stau următoarele<br />
observaţii ce rezultă din<br />
teoremele prezentate în continuare (Zidăroiu, 1983).<br />
Teorema 4.2. Dacă zj−cj ≤ 0, ( ∀)<br />
j∈ S, atunci programul de bază corespunzător<br />
bazei B, (x B =B −1 b, x S =0) este optim.<br />
B<br />
B<br />
j
4. Programare liniară 61<br />
Demonstraţie. P ste B<br />
entru acest program valoarea funcţiei obiectiv e z . Pentru<br />
orice alt program x , deoarece xj≥0 rezultă că<br />
B<br />
z − c x ≤<br />
şi atunci<br />
∑<br />
j∈S<br />
( ) 0<br />
j<br />
i<br />
B<br />
z > z . <br />
Teorema 4.3. Dacă (∃)k∈ S cu zk−ck > 0, atunci programul asociat bazei B nu<br />
este optim (cu excepţia cazului în care programul este degenerat) şi poate fi<br />
îmbunătăţit<br />
dacă xk ia valori pozitive.<br />
Demonstraţie. Dacă există k ∈S<br />
asociat bazei B nu este optim<br />
cu proprietatea că zk−ck>0, atunci programul<br />
B<br />
z − c x ><br />
B<br />
, iar z < z<br />
( ) 0<br />
∑<br />
j∈S j i j<br />
(cu excepţia cazului în care programul este degenerat) şi poate fi îmbunătăţit dacă<br />
xk>0.<br />
<br />
Teorema<br />
4.4. Dacă (∃)k∈ S , cu zk−ck > 0, şi dacă yik ≤ 0, pentru (∀) i∈B,<br />
atunci problema are optim infinit.<br />
B B<br />
Demons traţie. Dacă yik ≤ 0 (∀) i∈B atunci x = x − y x , ( xj=0 pentru<br />
j∈ S – {k}), iar creşterea lui xk nu face negativă nici o componentă de bază.<br />
Atunci<br />
B<br />
z z − ( z − c ) x ⎯⎯<br />
⎯ →−∞<br />
<br />
= k k k xk<br />
→∞<br />
Teorema 4.5. Dacă zk−ck > 0, dar (∃) yik > 0, atunci xk poate creşte până la<br />
valoarea:<br />
i yik<br />
yik<br />
ylk<br />
>0<br />
xi<br />
xl<br />
min = , (4.37)<br />
pentru care se obţine un nou program de baz , asociat bazei B ~<br />
ă , dedusă din B<br />
prin înlocuirea coloanei al cu coloana ak.<br />
Demonstraţie. Dacă yik > 0 (∀)i∈B, atunci pentru a păstra xi ≥ 0 , ştiind că<br />
x x − y x ≥ 0 ,<br />
i = i ik k<br />
xi<br />
atunci x ≤ , ( ∀)<br />
i ∈B<br />
cu proprietatea că y > 0 . Atunci creşterea maximă<br />
a<br />
k<br />
yik ik<br />
lui xk este dată de (4.37). <br />
Observaţia 4.3. Dacă există mai mulţi indici k pentru care zk−ck > 0, ar fi<br />
preferabil să se aleagă acela pentru care<br />
xl<br />
( zk<br />
−<br />
ck<br />
)<br />
y<br />
lk<br />
j<br />
i<br />
i<br />
ik<br />
k
62<br />
Modele şi algoritmi de optimizare<br />
are cea mai mare valoare, ceea ce asigură, în general, o scădere mai rapidă a<br />
funcţiei obiectiv şi dă un număr mai mic de iteraţii (o iteraţie reprezintă<br />
o trecere<br />
de la un program de bază la altul).<br />
Practic, se ia drept criteriu de alegere a lui k , acel k pentru care<br />
zk− ck=maxim.<br />
Acest criteriu se mai numeşte şi criteriu de intrare în bază.<br />
Criteriul<br />
dat de (4.37 ) reprezintă criter iul de ieşir e din bază.<br />
4.5. Enunţul algoritmului simplex<br />
Fie<br />
problema de programare linia ră s ub f orma standard ( 4 .21) . Pentru această<br />
problemă algoritmul simplex are următorul enunţ.<br />
Pas 0. Se determin ă o ba ză B în matric ea A , se calcu lează<br />
B −1<br />
x = B b ,<br />
B<br />
z c′<br />
B<br />
x<br />
B<br />
y<br />
−1<br />
= B a<br />
B<br />
(aj − coloanele din A), z − cj, 1 ≤ j ≤ n.<br />
= B , j<br />
j<br />
Pas 1 . a) Criteriu de intrare în bază<br />
B<br />
1) dacă toţi z −cj ≤ 0, j∈B, programul este optim. Stop.<br />
j<br />
B<br />
2) dacă (∃) z −cj<br />
> 0, se determină k astfel încât:<br />
j<br />
zk−ck= max{zj−cj}.<br />
b) Criteriu de ieşire din bază<br />
1) dacă toţi<br />
yik ≤ 0, problema are optim infinit.<br />
2) dacă (∃) yik > 0, se determină l astfel încât:<br />
xl<br />
⎧ xi<br />
⎫<br />
= ⎨ ⎬<br />
y i yik<br />
><br />
lk<br />
⎩ y ⎭<br />
0<br />
min .<br />
ik<br />
Pas 2. Se înlocuieşte în baza B vectorul al cu vectorul ak , obţinându-se baza<br />
B ~ ~ ~ ~<br />
~<br />
B B B<br />
B<br />
, şi se calculează x , z , y , 1 ≤ j ≤ n, z − c , 1 ≤ j ≤ n,<br />
j<br />
conform cu (4.31), (4.34), (4.33) apoi se trece la pasul 1, înlocuind baza B<br />
cu baza B ~ .<br />
Observaţia 4.4. Pentru o problemă de maximizare:<br />
′<br />
⎪<br />
⎨ =<br />
⎪<br />
⎩ ≥<br />
⎧max<br />
c x<br />
Ax b<br />
x 0<br />
trebuie modificat criteriul de intrare în bază astfel:<br />
a'1)<br />
dacă toţi zj−cj ≥ 0, programul este optim.<br />
a'2) dacă (∃)j pentru care zj−cj < 0, se determină k astfel<br />
încât<br />
zk−ck= min{zj−cj}.<br />
j<br />
j<br />
j
4. Programare liniară 63<br />
4.6. Tabelul simplex şi transformarea sa<br />
Presupunem că pentru o bază B am calculat xi , z , zj−cj, yij şi le dispunem<br />
într-un tabel numit tabel simplex (Tabelul 4.1). Presupunem că baza B este<br />
formată din primele m coloane ale matricei A.<br />
Prima coloană (CVB) conţine coeficienţii din funcţia obiectiv ai variabilelor de<br />
bază.<br />
A doua coloană (VB) conţine variabilele de bază.<br />
A treia coloană (VVB) conţine valorile variabilelor de bază, ultima linie fiind<br />
valoarea funcţiei obiectiv pentru programul de bază corespunzător<br />
bazei B, adică<br />
B<br />
z .<br />
B<br />
Coloanele următoare conţin vectorii y (având<br />
grijă ca pentru variabilele de<br />
B<br />
bază<br />
y =ej), iar ultima linie conţine diferenţ ele zj−cj=<br />
c′ B yi−cj.<br />
j<br />
Observaţia 4.5. Pentru variabilele de bază, zj−cj= c′ B ej−cj=cj−cj=0.<br />
Pentru calculul elementelor B<br />
z j −cj şi<br />
j<br />
B<br />
z ale primului tablou este util să<br />
trecem coeficienţii cj din funcţia obiectiv în partea de sus a coloanelor respective.<br />
Să presupunem că ak trebuie să intre în bază în locul lui al. Elementul ylk se<br />
numeşte pivot şi îl evidenţiem încercuindu-l.<br />
Pentru fiecare bază se alcătui eşte câte un tabel simplex (Tabelul 4.1).<br />
Cum se calculează elementele noului tablou corespunzător noii baze ?<br />
Elementele liniei k se împart la pivot<br />
x<br />
~<br />
~<br />
B l B<br />
x k = ; ykj<br />
=<br />
ylk<br />
y<br />
y<br />
lj<br />
lk<br />
(4.38)<br />
Elementele celorlalte linii se calculează cu regula dreptunghiului cu diagonala<br />
principală cea a pivotului.<br />
x<br />
~<br />
B<br />
i<br />
= x − y<br />
i<br />
ik<br />
x<br />
y<br />
l<br />
lk<br />
~<br />
B<br />
lj<br />
( i ≠ l)<br />
; y = y − y ( i ≠ l)<br />
Modificarea funcţiei obiectiv se face după formulele de mai jos.<br />
x<br />
ij<br />
~<br />
l<br />
B<br />
( z − c ) ; z − c = ( z − c ) − ( z c )<br />
~<br />
B B<br />
z = z − k k<br />
j j j j k −<br />
ylk<br />
ij<br />
ik<br />
y<br />
y<br />
lk<br />
k<br />
y<br />
y<br />
lj<br />
lk<br />
(4.39)<br />
(4.40)
64<br />
Coeficienţii variabilelor de bază în<br />
funcţia<br />
obiectiv<br />
Tabelul 4.1<br />
Coeficie nţii funcţiei obie ctiv<br />
Modele şi algoritmi de optimizare<br />
c1 cl cm cm+1 ck<br />
cn alegem min<br />
CVB VB VVB x1<br />
xl xm xm +1 xk<br />
xn c1 x1 x 1 1 ... 0 ... 0 y1, m+1 ... y1, k ... y1,n M M M M M M M M M<br />
cl xl x l 0 ... 1 ... 0 yl,m+1 ... yl,k ... yl,n M M M M<br />
c x m<br />
M M M M M<br />
m x m 0 ... 0 ... 1 ym ,m+1 ... ym, k ... ym,n valoarea<br />
funcţiei obiectiv<br />
z 0 0 0 zm+1 −cm+1<br />
xi<br />
y<br />
ik<br />
alegem max<br />
zj−c j>0<br />
În noul tabel în loc de x l este trecut x k în coloana VB.<br />
~<br />
~<br />
B<br />
B<br />
Deoarece xk este variabilă de bază, yk = ek<br />
, z k − ck<br />
= 0 , aşa cum rezultă<br />
şi<br />
din (4 .39) şi (4 .40) .<br />
În problemele practice m, numărul liniilor matricei A, este mult mai<br />
mic<br />
decât n, numărul coloanelor, şi atunci efortul de calcul trebuie redus la coloanele<br />
care sunt necesare în găsirea soluţiei optime.<br />
În algoritmul simplex revizuit se fac calcule doar pentru elementele<br />
tabloului<br />
strict<br />
necesare.<br />
O variantă a algoritmului simplex revizuit se bazează pe reprezentarea<br />
inversei<br />
matricei de bază B ca un prod us de matrice elementare E (Luenberger, 1989),<br />
obţinute din matricea unitate, care au elementele coloanei p date de<br />
relaţiile:<br />
yik<br />
1<br />
vi<br />
= , i ≠ l şi v l = ,<br />
y<br />
y<br />
l k<br />
yl<br />
k fiind pivotul.<br />
Înmulţirea lui E la dreapta cu orice coloană a tabelului simplex este<br />
echivalentă cu aplicarea regulii dreptunghiului. Dacă baza iniţială în algoritmul<br />
simplex este cea canonică (B=In), atunci la iteraţia a p-a, inversa matricei B este<br />
− 1<br />
B = E p<br />
E p−1...<br />
E 2 E1<br />
, unde Ep este o matrice elementară de forma dată mai jos<br />
l k
4. Programare liniară 65<br />
⎛ 1 0 L 0 1 0 L 0 ⎞<br />
⎜<br />
⎟<br />
⎜ 0 L 0 2 L 0 ⎟<br />
⎜L<br />
L L L L L L⎟<br />
⎟<br />
⎜ 0 0 L 1 l −1<br />
L L⎟<br />
E = ⎜<br />
⎟ .<br />
⎜<br />
0 0 L 0 v 0 L 0<br />
⎟<br />
⎜ 0 L 0 v l + 1 L 0 ⎟<br />
⎜<br />
⎟<br />
⎜L<br />
L L L L 0 L 0 ⎟<br />
⎜<br />
⎝ 0 L L v L 1 ⎟<br />
⎠<br />
v<br />
1 v 0<br />
L<br />
⎜<br />
v 0<br />
l<br />
0<br />
1<br />
0<br />
m 0<br />
Astfel, yk − coloana a k-a din noua bază B ~ − va fi calculată direct cu formula<br />
yk=(Ep.Ep-1…E1ak)’ .<br />
4.7. Exemplu<br />
S-a observat că în fiecare lună, maşinile M1, M2, M3 , ce lucrează într-o<br />
secţie a unei întreprinderi, nu sunt folosite 8 ore, 24 de ore şi respectiv 18 ore<br />
(Văduva et al, I, 1974). Se ia hotărârea să se folosească şi acest timp, punându-le să<br />
lucreze la fabricarea a 2 produse suplimentare, P1 şi P2 , ca produse anexe ale<br />
secţiei, care aduc un profit la unitatea de produs fabricat de 4 şi respectiv 3 u. m.<br />
Timpul necesar de lucru la fiecare maşină este, pe fiecare produs, dat de Tabelul<br />
4.2.<br />
Tabelul 4.2<br />
Maşina<br />
P1 P2<br />
M1 2 1<br />
M2 3 2<br />
M3 1 3<br />
Să se determine planul de producţie al secţiei pentru produsele P1 şi P2 care<br />
să dea un profit maxim.<br />
Rezolvare<br />
a) Modelarea problemei. Fie x1, x2 cantităţile din produsele P1 şi P2 ce trebuie<br />
fabricate. Formularea matematică a problemei este<br />
⎧max<br />
z = max{ 4x1<br />
+ 3x2}<br />
⎧max<br />
z = 4x1<br />
+ 3x2<br />
⎪<br />
⎪<br />
3x1<br />
+ 2x<br />
≤ 24<br />
⎪<br />
2<br />
⎪<br />
2x1<br />
+ x2<br />
+ x3<br />
= 8<br />
⎨x1<br />
+ 3x2<br />
≤18<br />
sau ⎨3x1<br />
+ 2x<br />
2 + x4<br />
= 24<br />
⎪x1,<br />
x2<br />
≥ 0<br />
⎪x1<br />
+ 3x2<br />
+ x5<br />
= 18<br />
⎪<br />
⎪<br />
⎪⎩<br />
2x1<br />
+ x2<br />
≤ 8<br />
⎪⎩<br />
xi<br />
≥ 0,<br />
i ∈1,<br />
5<br />
după adăugarea variabilele de compensare
66<br />
Modele şi algoritmi de optimizare<br />
b) Tabelul simplex şi calculele aferente<br />
Calculele corespunzătoare primei iteraţii sunt pezentate în Tabelul 4.3.<br />
Tabelul<br />
4.3<br />
4 3 0 0 0 alegem min<br />
CVB VB VVB x1 x2 x3 x4 x5<br />
x i<br />
y<br />
0 x 8 2 1 1 0 0<br />
3<br />
ik<br />
8<br />
= 4<br />
2<br />
24<br />
0 x4 24 3 2 0 1 0 8<br />
3 =<br />
18<br />
0 x5 18 1 3 0 0 1 = 18<br />
1<br />
valoarea<br />
alegem min<br />
funcţiei 0 –4 –3 0 0 0<br />
obiectiv z zj−cj
4. Programare liniară 67<br />
Tabelul 4.4<br />
4 3 0 0 0 alegem min<br />
CVB VB VVB x1 x2 x3 x4 x5<br />
4 x1<br />
0 x4<br />
3 x2<br />
valoarea<br />
funcţiei<br />
obiectiv z<br />
6 1 0<br />
5<br />
46<br />
0 0<br />
5<br />
28<br />
0 1<br />
5<br />
21.6 0 0<br />
3<br />
0<br />
5<br />
2<br />
− 1<br />
5<br />
1<br />
− 0<br />
5<br />
9<br />
0<br />
5<br />
x i<br />
y<br />
ik<br />
1<br />
− 8<br />
5<br />
1<br />
− 24<br />
5<br />
2<br />
5<br />
2<br />
5<br />
28<br />
5<br />
alegem min<br />
zj−cj<br />
< 0<br />
Vom rezolva această problemă utilizând pachetul de programe Management<br />
Scientist. La lansarea programului se afişează pe ecran fereastra de prezentare apoi<br />
după apăsarea<br />
butonului Continue apare fereastra care permite selectarea modulului<br />
pentru rezolvarea<br />
problemelor de programare liniară ca în Figura 2.4.<br />
Selectă m acest modul şi în fereastra care apare din submeniul File alegem<br />
New. În fereastra Problem Features precizăm numărul de variabile, de restricţii şi<br />
tipul problemei,<br />
ca în Figura 4.1.<br />
Figura 4.1<br />
Dup ă<br />
apăsarea butonului OK, apare fereastra în care se introduc coeficienţii<br />
funcţiei obiectiv şi restricţiile problemei, ca în Figura 4.2.
68<br />
Figura 4.2<br />
Modele şi algoritmi de optimizare<br />
După c e s−au introdus datele, pentru rezolvare se apasă butonul Solve şi apare<br />
fereastra cu rezultate ca în Tabelul 4.5.<br />
Objective<br />
Function Value = 21.600<br />
Variable Value Reduced Costs<br />
-------------- --------------- ------------------<br />
X1 1.200 0.000<br />
X2 5.600 0.000<br />
Constraint Slack/Surplus Dual Prices<br />
-------------- --------------- ------------------<br />
1 0.000 1.800<br />
2 9.200 0.000<br />
3 0.000 0.400<br />
OBJECTIVE COEFFICIENT RANGES<br />
Variable Lower Limit Current Value Upper Limit<br />
------------ --------------- --------------- ---------------<br />
X1 No Lower Limit 4.000 No Upper Limit<br />
X2 No Lower Limit 3.000 No Upper Limit<br />
RIGHT HAND <strong>SI</strong><strong>DE</strong> RANGES<br />
Tabelul 4.5<br />
Constraint Lower Limit Current Value Upp er Limit<br />
------------ --------------- --------------- ---------------<br />
1 No Lower Lim it 8. 000 No Upper Limi t<br />
2 No Lower Limit 24.000 No Upper Limit<br />
3 No Lower Limit 18.000 No Upper Limit<br />
Rezultatele sunt cele obţinute şi în urma aplicării algoritmului simple x.<br />
Informaţia din coloana Reduced Costs arată cu cât ar trebui să se modifice<br />
coeficientul variabilei respective în funcţia obiectiv pentru ca varia bila să<br />
fie<br />
pozitivă în soluţia optimă (Anderson et al, 1998). Astfel, dacă<br />
o variabilă este deja<br />
pozitivă, atunci costul redus este zero.
4. Programare liniară 69<br />
Informaţiile despre restricţii (Constraint) din Tabelul 4.5 se referă<br />
la:<br />
− Slack/Surplus – această coloană dă va lorile variabilelor auxili<br />
are. Dacă restricţiile<br />
sunt verificate cu inegalităţi stricte, atunci variabilele auxiliare sunt nenule, altfel<br />
vor fi nule.<br />
− Dual prices – conţine informaţii despre valorile marginale<br />
ale resurselor. În<br />
Management Scientist un preţ dual înseamnă « îmbunătăţirea<br />
valorii optime a<br />
funcţiei obiectiv cores punzătoare creşterii cu o unitate a termenului liber al<br />
restricţiei » . Pentru restricţiile verificate cu egalitate aceste preţuri<br />
vor fi nenule.<br />
Pentru restricţiile cu inegalităţi stricte aceste preţuri<br />
sunt nule, din cauza nefolosirii<br />
integrale a resurselor disponibile.<br />
Secţiunea Objective Coefficient Rang es (intervalele coeficienţilor în<br />
funcţia<br />
obiectiv) dă intervalul în care pot varia coeficienţii funcţiei obiectiv astfel încât<br />
s oluţia să rămână optimă.<br />
Ultima secţiune Right<br />
Hand Side Ranges (intervalele termenilor liberi) conţine<br />
intervalele în care ar trebu i să se menţină termenii liberi pentru ca preţul dual<br />
asociat restricţiei să rămână nemodificat.<br />
Observaţia 4.6. Analiza sensibilităţii<br />
prezentată<br />
mai sus se bazează pe faptul că<br />
un<br />
singur terme n liber variază la un moment dat, ceilalţi rămânând la valorile<br />
iniţiale.<br />
Aceeaşi problemă p oate fi rezolvată şi<br />
utilizând Solver-ul din Excel. Mai întâi<br />
se creează foaia electronică de calcul cu datele de intrare, ca în Figura 4.3.<br />
Celulele D13−D14 sunt considerate necunoscutele<br />
x1 – x2 , celulele H7−H9<br />
conţin restricţiile problemei H7= B7*D13+C7*D14, H8= B8*D13+C8*D14,<br />
H9=<br />
B9*D13+C9*D14, iar celula D3 = B10*D13+C10*D14, funcţia de optimizat.<br />
Figura 4.3
70<br />
Modele şi algoritmi de optimizare<br />
Pentru rezolvarea acestei probleme folosind Solver-ul trebuie urmăriţi paşii:<br />
1. Se selectează celula conţinând formula cu funcţia de optimizat (D3).<br />
2. Se selectează din meniul bară principal Tools (Instrumente) şi, de aici,<br />
Solver (Rezolvitor). Apare caseta de dialog Solver Parameters<br />
(Parametrii Rezolvitor), care are în caseta de text Set Target Cell<br />
(Setare Celulă ţintă) celula de optimizat (D3).<br />
Se selectează tipul de optim max sau min; pentru acest caz, max.<br />
3. În caseta de text By Changing Cells (Prin modificarea celulelor) se<br />
selectează celulele care reprezintă variabilele problemei (D13−D14).<br />
4. În caseta de text Subject to the constraints (Se supune restricţiilor) se<br />
impune condiţia de nenegativitate asupra variabilelor x1 – x2 şi<br />
celelate restricţii ale modelului, astfel (Figura 4.4):<br />
Figura 4.4<br />
5. Se apăsă butonul Add (Adăugare) şi apare caseta de dialog Add<br />
Constraint (Adăugare restricţie), Figura 4.5. Se selectează celule<br />
D13−D14 în Cell Reference, apoi se alege simbolul ≥ , iar în caseta<br />
Constraint (Restricţii) celulele F7−F8. Se apasă butonul<br />
OK.<br />
Figura 4.5<br />
6. Adăugarea celorlalte restricţii se face apăsând butonul Add, iar în<br />
caseta Add Constraint se trec celulele în care s-au înscris formulele cu<br />
restricţiile (H7−H9). Se alege semnul ≤ şi se selectează în caseta<br />
Constraint celulele cu termenii liberi (D7−D9). Când s-au introdus<br />
toate restricţiile se selectează butonul OK.<br />
7. Se apasă butonul Solve (Rezolvare) şi apare caseta de dialog Solver<br />
Results (Rezultate rezolvitor), iar în Reports (Rapoarte) se pot alege
4. Programare liniară 71<br />
formele de prezentare a rezultatelor. Se apasă butonul OK după<br />
precizarea tipurilor de rapoarte.<br />
Se creează Answer Report (Raport răspuns), Sensitivity Report (Raport<br />
sensibilitate), Limits Report (Raport limite) ca în Tabelele 4.6, 4.7 şi<br />
respectiv 4.8.<br />
Tabelul 4.6<br />
Microsoft Excel 10.0 Answer Report<br />
Worksheet: [Programare liniara.xls]Sheet1<br />
Report Created: 7/23/2002 7:38:01 AM<br />
Target Cell (Max)<br />
Original<br />
Cell Name<br />
Functia de<br />
Value Final Value<br />
$D$3 optimizat 0 21.6<br />
AdjusTable Cells<br />
Original<br />
Cell Name Value Final Value<br />
$B$13 x1 Produsul P1 0 1.2<br />
$B$14 x2 Produsul P1 0<br />
Constraints<br />
5.6<br />
Cell Name Cell Value Formula Status Slack<br />
$G$13 2x1+x2
72<br />
Constraints<br />
Modele şi algoritmi de optimizare<br />
Final S hadow Constraint Allowable Allowable<br />
Cell Name Value Price R.H. Side Increase Decrease<br />
$G$13 2x1+x2
4. Programare liniară 73<br />
Pentru o problemă nedegenerată, convergenţa algoritmului simplex, mai precis<br />
faptul că el conduce la o soluţie într-un număr finit de iteraţii, este asigurată.<br />
Pentru o problemă degenerată, adică având cel puţin un program degenerat,<br />
este posibilă, în principiu, ciclarea.<br />
Observaţia 4.7. Degenerarea nu implică în mod necesar ciclarea: cu toate că<br />
foarte multe probleme practice sunt degenerate, exemplele de ciclare se<br />
construiesc cu destulă dificultate (exemplul dat de<br />
Beale în Hadley G. 1962 Linear<br />
Progr amming, Addison−Wesley,<br />
Reading, Mass.).<br />
Degenerarea apare, în afara cazului în care vectorul b are componente nule,<br />
atunci când criteriul de ieşire al algoritmului simplex, mai precis minimul<br />
(4.37),<br />
nu defineşte în mod unic variabila care iese din bază. Presupunem c ă acest minim<br />
se atinge pentru doi indici, l şi h, adică<br />
x l xh<br />
= ,<br />
ylk<br />
yhk<br />
şi presupunem că alegem variabila xl<br />
să părăsească baza. Atunci<br />
~<br />
B yhk<br />
x h = xh<br />
− xl<br />
= 0 ,<br />
ylk<br />
şi deci noul program de bază va fi degenerat.<br />
Dacă programul iniţial nu va fi degenerat, degenerarea poate apărea numai în<br />
acest caz.<br />
Pentru demonstrarea valabilităţii generale a algoritmului simplex este totuşi<br />
necesară o regulă care să facă posibilă înlăturarea ciclării.<br />
Regula lui Bland de înlăturare a ciclării (Luenberger, 1989):<br />
a) se selectează coloana q min q z − c > 0 , adică, cel mai mic indice<br />
{ }<br />
= q q<br />
de<br />
coloană favorabilă pentru a intra în noua bază,<br />
b) pentru ieşirea din bază se ia coloana candidată cu indicele cel mai mic.<br />
Vom demonstra prin reducere la absurd că regula lui Bland înlătură ciclarea.<br />
Presupunem că, deşi aplicăm regula, apare ciclarea. În timpul ciclului un număr<br />
finit de coloane intră şi ies din bază. Fiecare dintre aceste coloane intră la nivelul 0<br />
şi funcţia obiectiv nu-şi schimbă valoarea. Ştergem coloanele şi liniile care nu<br />
conţin pivotul în timpul unui ciclu, obţinând o nouă problemă de programare<br />
liniară redusă care, de asemenea ciclează. Presupunem că această nouă problemă<br />
are m linii şi n coloane şi că suntem în situaţia ca să înlocuim coloana n cu<br />
coloana p. Fără a restrânge generalitatea, presupunem că baza curentă este situată<br />
pe ultimele m coloane. Putem considera problema de programare liniară redusă<br />
ca având matricea coeficienţilor restricţiilor A , iar vectorul coeficienţilor funcţiei<br />
obiectiv c. Notăm pivotul cu amp >0. Din partea b) a regulii lui Bland, an poate<br />
părăsi baza numai dacă nu există egalitatea în testul raportului din criteriul de ieşire
74<br />
Modele şi algoritmi de optimizare<br />
din bază şi atunci b=0, deoarece toate coloanele sunt în ciclu, iar aip≤0 , ( ∀ ) i ≠ n .<br />
Să considerăm cazul când an este în situaţia de a intra în bază. Partea a) a regulii<br />
lui Bland ne asigură că r n = z n − cn<br />
> 0 şi r i = zi<br />
− ci<br />
≤ 0 pentru ( ∀ ) i ≠ n .<br />
Aplicăm formula<br />
B<br />
r<br />
⎛ ′ −1 i = ( ) ⎞<br />
⎜ c B S ⎟<br />
⎝ ⎠ i<br />
− ci<br />
′ −1<br />
ultimelor m coloane ca să arătăm că fiecare componentă = ( c ) B ≤ 0<br />
B<br />
λ cu<br />
excepţia lui λ > 0 . Atunci λ ′ a − c > c > 0 .<br />
Contradicţie cu faptul că<br />
m<br />
r ≤ 0 .<br />
p<br />
rp = p p p<br />
Îndepărtarea situaţiei de ciclare se poate face şi cu metoda perturbării a lui A.<br />
Charnes,<br />
sau cu cea lexicografică a lui Dantzig şi Wolfe .<br />
Observaţia 4.8. O regulă practică de evitare a ciclării este următoarea: se divid<br />
liniile<br />
corespunzătoare variabilelor nule din Tabelul simplex prin pivoţii<br />
posibili,<br />
mergând de la stânga spre dreapta; în momentul când unul dintre rapoarte este<br />
mai mic decât celelalte, precizăm variabila care iese din bază ca fiind cea care<br />
corespunde raportului minim (Zidăroiu, 1983).<br />
4.9. Interpretarea geometrică<br />
a algoritmului simplex<br />
Rezolvarea problemelor simple de programare liniară (n=2 sau n=3) se poate<br />
face<br />
şi geometric. Pentru exemplificare considerăm următoarea problemă (Mihăilă,<br />
Popescu, 1978).<br />
Realizarea a două produse P1 şi P2 se face folosind patru materii prime M1, M2,<br />
M3, M4 . Disponibilul de materii prime, consumul specific şi profitul unitar pentru<br />
fiecare tip de produs sunt date de tabelul 4.9.<br />
Produsul<br />
Tabelul 4.9<br />
Materia<br />
primă P1 P2<br />
Consum specific Disponibil<br />
M1 2 2 12<br />
M2 1 2 8<br />
M3 4 0 16<br />
M4 0 4 12<br />
Profit unitar 2 3<br />
Să se determine cantităţile x şi y care trebuie realizate din produsele P1 ,<br />
respectiv, P2 , pentru ca profitul total să fie maxim.
4. Programare liniară 75<br />
Rezolvare<br />
Funcţia de optimizat (obiectiv) este f(x,y ) = 2x + 3y . Restricţiile problemei,<br />
aşa cum rezultă din Tabelul 4.8, sunt:<br />
⎧2x + 2y ≤12<br />
⎪<br />
⎪<br />
x + 2y<br />
≤ 8<br />
⎨4x<br />
+ 0y<br />
≤16<br />
⎪0x<br />
+ 4y<br />
≤12<br />
⎪<br />
⎪⎩ x ≥ 0 , y ≥ 0<br />
Se cere să se determine necunoscutele x 0 , y 0 , astfel încât<br />
să se verifice<br />
restricţiile, iar f(x0 , y0) să ia valoarea maximă. Considerăm restricţiile cu egalităţi<br />
şi reprezentăm<br />
grafic dreptele ale căror ecuaţii rezultă (Figura 4.6).<br />
x<br />
x+ y=6 ⇒ y=6−x (d1) , x+2y=8 ⇒ y=4− (d2) , 4x=16 ⇒ x=4 (d3) , 4y=12 ⇒<br />
2<br />
y=3 (d4) , x≥0 , y≥0 .<br />
d 1<br />
Reprezentarea grafică a<br />
restricţiilor conduce la<br />
poligonul OABCD, ale căru i<br />
puncte constituie soluţii ale<br />
problemei de programare<br />
liniară (mulţimea R a<br />
punctelor admmisibile).<br />
Din<br />
acest motiv se numeşte<br />
poligonul soluţiilor. Rezultă<br />
că realizarea practică a<br />
producţiei celor două produse<br />
din cele patru materii prime<br />
se poate face într-o infinitate<br />
de moduri. Să alegem dintre<br />
aceste soluţii pe cele care dau<br />
valoarea maxi mă pentru<br />
funcţia obiectiv. Punem funcţia<br />
obiectiv sub forma<br />
f 2<br />
(d) y x<br />
3 3<br />
−<br />
4<br />
f max<br />
D<br />
2<br />
C<br />
g<br />
d4<br />
B<br />
d 3<br />
O<br />
0<br />
2<br />
A<br />
4 6<br />
Figura 4.6<br />
= ,<br />
care<br />
reprezintă un fascicul de drepte, considerând f ca parametru ( (g) o dreaptă<br />
din fascicul). Funcţia f va avea maximul o dată cu ordonata la origine a dreptei (d).<br />
Astfel,<br />
trebuie găsită acea dreaptă din fasciculul (d) care are ordonata la origine<br />
cea mai mare şi care trece printr-un punct din poligonul soluţiilor. Se observă<br />
că<br />
acea<br />
dreaptă trebuie să treacă prin punctul B, un vârf al poligonului soluţiilor.
76<br />
Modele şi algoritmi de optimizare<br />
⎧ x ⎫<br />
x<br />
{ B} = ⎨y<br />
= 4 − ⎬ I { y = 6 − x}<br />
⇒ 4 − = 6 − x ⇒ x = 4 , y = 2<br />
⎩ 2⎭<br />
2<br />
Valoarea funcţiei obiectiv este f(4, 2)=14 . În Tabelul 4.10 se prezintă starea<br />
sistemului de restricţii şi gradul de utilizare a resurselor pentru soluţia optimă.<br />
Materia<br />
Tabelul 4.10<br />
Cantitatea folosită pentru Cantitatea Gradul de<br />
primă programul optim disponibilă folosinţă<br />
M1 2⋅4+2⋅2=12 12 100%<br />
M2 1⋅4+2⋅2=8 8 100%<br />
M3 4⋅4+0⋅2=16 16 100%<br />
M4 0⋅4+4⋅2=8 12 66.67%<br />
Problema are soluţie unică, deoarece dreapta (d) nu este paralelă cu nici o latură a<br />
poligonului soluţiilor. Dacă, de exemplu, se modifică profitul unitar pentru<br />
produsul P2 , devenind 4, atunci dreapta (d) devine<br />
f x<br />
(d’) y = − ,<br />
4 2<br />
fiind paralelă cu dreapta corespunzătoare celei de-a doua restricţii (latura BC a<br />
poligonului soluţiilor). În acest caz, to ate punct ele segmentului BC sunt soluţii<br />
optime ale problemei date. Avem de-a face cu o problemă cu o infinitate de soluţii<br />
optime. Se pot introduce alte criterii suplimentare pentru a putea selecta o soluţie.<br />
Metoda geometrică s-ar mai putea aplica şi în cazul a trei necunoscute, în locul<br />
poligonului soluţiilor obţinându-se poliedrul soluţiilor. Pentru n > 3 nu mai pot fi<br />
reprezentate grafic hiperpoliedrele soluţiilor şi deci metoda devine impracticabilă.<br />
4.10. Interpretarea economică a algoritmului simplex<br />
Revenim la problema "utilizarea<br />
optimă a resurselor" şi presupunem că<br />
restricţiile<br />
sunt sub formă de egalităţi, Ax=b (Dragomirescu şi Maliţa, 1968).<br />
Observăm că cele n activităţi de producţie se asociază câte m, în grupe de<br />
activităţi de bază, corespunzătoare<br />
programelor de bază. Deoarece programul optim<br />
este un program de bază, rezultă concluzia interesantă că într-o organizare optimă a<br />
producţiei nu se vor desfăşura toate cele n activităţi posibile (deci, nu se vor<br />
produce toate cele n sortimente), ci cel mult m (cazul programului<br />
nedegenerat).<br />
Această concluzie este dedusă din considerente pur matematice<br />
şi în afara oricăror<br />
considerente economice.<br />
Presupunem că activitatea k nu face parte din grupul activităţilor de bază<br />
corespunzătoare unei baze B (adică xk nu este variabilă de bază, xk=0, adică în<br />
această variantă sortimentul nu se produce). Dacă dorim să mărim nivelul acestei
4. Programare liniară 77<br />
activităţi, adică să producem sortimentul k în cantitatea xk > 0, producţiile<br />
celorlalte sortimente de bază<br />
se vor modifica în conformitate cu (4.39); unele vor<br />
trebui<br />
reduse şi, cum nu pot fi reduse decât cel mult până la 0, rezultă că xk poate<br />
creşte cel mult până la valoarea<br />
dată de (4.37), pentru care activitatea de bază l<br />
atinge nivelul<br />
0. Aceasta este interpretarea criteriului de ieşire.<br />
Creşterea lui xk cu o unitate implică<br />
variaţii de −yik ale celorlalte activităţi şi<br />
deci şi o variaţie a funcţiei obiectiv<br />
∑<br />
( )<br />
∆z = ck<br />
+ ci<br />
− yik<br />
i∈B<br />
k<br />
− z ,<br />
adică o creştere a lui xk cu o unitate aduce, în acelaşi timp, un profit suplimentar<br />
ck−z k. Dacă z−c k k < 0 (pentru problema de maximizare a beneficiilor), atunci<br />
∆ z>0 şi, deci, introducerea activităţii k în bază, adică<br />
producerea sortimentului<br />
k, aduce o îmbunătăţire a funcţiei obiectiv, ceea ce revine la o sporire a profitului<br />
total. Regăsim astfel criteriul de intrare în bază al algoritmului simplex.<br />
Aplicarea algoritmului simplex constă astfel într-o explorare sistematică a<br />
diverselor variante de m activităţi de bază; la fiecare<br />
iteraţie se înlocuieşte o<br />
activitate l printr-o activitate k, obţinându-se o creştere a profitului total, până<br />
când, pentru toate activităţile care nu sunt în bază, avem zk−ck ≥ 0, şi deci nici o<br />
creştere a profitului nu mai este posibilă.<br />
= c<br />
4.11. Metoda celor două faze<br />
Metoda celor două faze permite obţinerea unui program de bază de plecare în<br />
rezolvarea problemei de programare iniţială sub forma standard, adică (Zidăroiu,<br />
1983) :<br />
⎧min<br />
c′<br />
x<br />
⎪<br />
⎨Ax<br />
= b<br />
(4.41)<br />
⎪<br />
⎩x<br />
≥ 0<br />
Se poate presupune că bi ≥ 0, 1≤ i ≤ m ; dacă nu, se înmulţeşte linia<br />
a<br />
respectivă cu −1. Se adăugă la fiecare ecuaţie câte o variabilă artificială xi<br />
şi se<br />
obţine:<br />
a ⎧Ax<br />
+ Ix = b<br />
⎪<br />
⎨x<br />
≥ 0<br />
(4.42)<br />
⎪ a<br />
x ≥ 0<br />
⎩<br />
Problema (4.41) are programe dacă (4.42) are programe (x, x a ), cu x a = 0.<br />
Dacă se obţine un astfel de program de bază cu x a = 0, atunci x corespunzător<br />
este un program de bază pentru (4.41).<br />
k
78<br />
Modele şi algoritmi de optimizare<br />
În faza I pentru a obţine un program de bază al sistemului (4.41) se rezolvă<br />
problema de programare liniară<br />
a ⎧min∑<br />
i = W<br />
⎪<br />
a<br />
⎪Ax<br />
+ Ix = b<br />
⎨<br />
(4.43)<br />
⎪xi<br />
≥ 1 ≤ i ≤ n<br />
⎪ a<br />
⎩<br />
x j ≥ 0,<br />
1 ≤ j ≤ m<br />
folo d algo it imp obişnuit.<br />
Se observă c a (4.43) dispunem de programul de bază iniţial<br />
x=0, x a x<br />
0,<br />
sin r mul s lex<br />
ă pentru problem<br />
= b ( ≥ 0 ), corespunzător bazei I din matricea acestui sistem [A,I].<br />
a<br />
a<br />
Deoarece x ≥ 0 ⇒ ∑ x ≥ 0 , şi deci min W ≥ 0. Sunt posibile 2 cazuri:<br />
i<br />
i<br />
(i) dacă min W > 0, atunci problema (4.41) nu are program de bază (dacă ar avea,<br />
atunci (4.43) ar avea programe cu x a = 0 şi deci min W = 0)<br />
a<br />
(ii) dacă min<br />
W = 0, am obţinut un program cu x i = 0, 1 ≤ i ≤ m, deci<br />
un<br />
program de<br />
b ază al problemei (4.43), şi<br />
se trece la faza a II-a pentru rezolvarea<br />
problemei (4.41) (după eliminarea liniilor redundante). Matricea A este acum<br />
transformată aşa cum a ieşit din faza I.<br />
⎧min<br />
c′<br />
x<br />
⎪<br />
⎨Ax<br />
= b . Faza a II−a<br />
⎪<br />
⎩x<br />
≥ 0<br />
a<br />
Observaţia 4.9. Faza I con stă din eliminarea din bază a variabilelor artificiale xi<br />
şi înlocuirea lor cu variabilele xj. Când toate variabilele au fost eliminate din<br />
bază, adică la sfârşitul fazei I, coloanele acestora sunt şterse din tabelul simplex<br />
şi se începe faza a II-a, pornind de la acest tabel simplex, în care calculăm doar<br />
elementele liniei zj−cj corespunzătoare funcţiei obiectiv din faza a II−a.<br />
În cele prezentate până acum am presupus că rang A = m. Introducerea<br />
variabilelor artificiale face ca rangul matricei [A, I] să fie sigur m.<br />
Dacă rang A < m sau dacă problema este degenerată, atunci când se ajunge la<br />
mi x = 0, este posibil să mai rămână în bază câteva variabile artificiale,<br />
n∑ a<br />
i<br />
desigur cu valoarea 0. Faza I se consideră încheiată<br />
atunci când toate variabilele<br />
x au fost eliminate, şi anume:<br />
a<br />
i<br />
a<br />
(i) dacă rang<br />
A = m (dar problema este degenerată), variabilele x i = 0 pot<br />
fi<br />
întotdeauna înlocuite cu variabilele xj care in tră în bază tot<br />
cu valoarea 0, fără<br />
să producă vreo modificare în funcţia obiectiv.<br />
a<br />
(ii) dacă rangA < m, nu este posibilă eliminarea tuturor variabilelor x<br />
(câteva<br />
rămân în bază cu valoarea 0). În acest caz, liniile corespunzătoare ale matricei<br />
i
4. Programare liniară 79<br />
A sunt combinaţii ale celorlalte, adică restricţiile corespunzătoare a'i x = bi<br />
sunt consecinţe ale celorlalte şi s e pot elimina.<br />
Această discuţie arată că nu este necesar s ă se impună rang A = m.<br />
Dacă în problema (4.42) cu b ≥ 0 există xj care apare într-o singură ecuaţie şi<br />
cu coeficient pozitiv, adică matricea<br />
A conţine un vector unitate, atunci în ecuaţia<br />
respectivă nu este necesară introducerea unei variabile auxiliare, variabila xj putând<br />
fi luată în baza iniţială. Desigur că dacă există k astfel de variabile, vom introduce<br />
doar n−k variabile artificiale, ceea ce scurtează faza I.<br />
Uneori este necesară cunoaşterea inversei bazei curente a problemei de<br />
programare. În acest caz, la sfârşitul fazei I nu mai înlăturăm din tabel<br />
coloanele<br />
corespunzătoare variabilelor<br />
a rtificiale. În fie care tabel<br />
al fazei a II−a, în aceste<br />
ăseşte m tricea<br />
coloane se g a B −1 I = B −1 , adică inversa bazei curente B.<br />
Exemplu. O balastieră are 3 linii de sortare S1, S2, S3,<br />
pentru 2 tipuri de agregate<br />
A1, A2 şi trebuie să sorteze 300 tone din primul tip şi 372 tone din al doilea tip.<br />
Profitul încasat de pe urma sortării materialelor diferă de la o linie la alta precum<br />
diferă şi cantităţile ce pot fi sortate conform cu Tabelul 4.11.<br />
Linie Tabelul 4.11<br />
Agregat<br />
A1 A2 Profit<br />
de sortare<br />
S1 2 1 5 u.<br />
m.<br />
S2 3 2 4 u.<br />
m.<br />
S3 1 2 6 u.<br />
m.<br />
Cantitatea ce 300 372<br />
trebuie sortată tone tone<br />
Să se determine repartiţia optimă pe liniile de sortare a agregatului astfel încât<br />
profitul obţinut să fie maxim.<br />
Rezolvare<br />
a) Modelarea problemei<br />
Fie x1, x2 , x3 cantităţile sortate pe liniile S 1 , S 2 , S 3 respectiv. Atunci funcţia<br />
de optimizat este f = 5x1+4x2+6x3 .
80<br />
Modele şi algoritmi de optimizare<br />
Trebuie determinat maximul acestei funcţii cu restricţiile<br />
⎧2x1<br />
+ 3x2<br />
+ x3<br />
= 300<br />
⎪<br />
⎨x1<br />
+ 2x<br />
2 + 2x3<br />
= 372 .<br />
⎪<br />
⎩x1<br />
, x2<br />
, x3<br />
≥ 0<br />
⎛2<br />
Deoarece matricea A = ⎜<br />
⎝1<br />
aplică metoda celor două faze.<br />
3<br />
2<br />
1⎞<br />
⎟ a restricţiilor nu are o bază evidenţiată, se<br />
2⎠<br />
b) Metoda<br />
celor două faze<br />
i) Faza I<br />
Se aplică algoritmul simplex problemei<br />
a<br />
x + x<br />
a<br />
min { }<br />
a<br />
⎧ 2x1 + 3x2<br />
+ x3<br />
+ x1<br />
= 300<br />
⎪<br />
a<br />
⎨ x 1 + 2x 2 + 2x3<br />
+ x2<br />
= 372<br />
⎪<br />
a a<br />
⎩<br />
x1,<br />
x2<br />
, x3<br />
, x1<br />
, x2<br />
≥ 0<br />
Calculele fazei I sunt trecute<br />
în Tabelul 4.12 .<br />
La prima iteraţie a ieşit din bază<br />
1<br />
din ⎜ =<br />
a<br />
⎛3 1⎞<br />
bază x2 şi a intrat x3. Baza obţinută B ⎟ are inversa în tabelul final<br />
⎝2<br />
2⎠<br />
⎛ ⎞<br />
⎜ − ⎟<br />
al fazei I sub variabilele artificiale,<br />
⎟<br />
⎟<br />
1 1<br />
-1<br />
B = ⎜ 2 4 .<br />
⎜ 1 3<br />
⎜−<br />
⎝ 2 4 ⎠<br />
ii) Faza a II-a<br />
Se aplică algoritmul simplex problem ei<br />
max {5x 1+4x 2+6x 3 }<br />
⎪<br />
⎨−<br />
⎪<br />
⎪<br />
⎪⎩<br />
1<br />
⎧ 3<br />
⎪ x1<br />
+ x2<br />
= 57<br />
4<br />
x1<br />
+ x3<br />
= 129<br />
4<br />
x1,<br />
x2<br />
, x3<br />
≥ 0<br />
Calculele fazei a II−a sunt trecute în Tabelul 4.13.<br />
2<br />
a<br />
x 1 şi a intrat x 2 , iar la iteraţia a doua a ieşit<br />
c) Culegerea şi interpretarea rezultatelor<br />
Algoritmul se opreşte cu optim finit, anume, profitul maxim este 1268,<br />
obţinut pentru x1=76 , x2=0 , x3=148 , care constituie o soluţie de bază<br />
nedegenerată.
4. Programare liniară 81<br />
Tabelul<br />
4.12<br />
CVB VB VVB x1 x2 x3<br />
1<br />
a<br />
x1 a<br />
1 x2 valoarea<br />
funcţiei<br />
obiectiv<br />
z<br />
0 x2 100<br />
1<br />
a<br />
x2 valoarea<br />
funcţiei<br />
obiectiv<br />
z<br />
0 0 0 1 1 alegem min<br />
a<br />
x1 a<br />
x2 300 2 3<br />
1 1 0<br />
x<br />
i<br />
y<br />
ik<br />
300<br />
= 100<br />
3<br />
372<br />
372 1 2 2 0 1 = 186<br />
2<br />
672 3 5 3 0 0<br />
172<br />
172<br />
0 x2 57<br />
0 x3 129<br />
valoarea<br />
funcţiei<br />
obiectiv z<br />
2<br />
1<br />
3<br />
1<br />
3<br />
4<br />
1<br />
− 0 3<br />
3<br />
1<br />
− 0<br />
3<br />
4<br />
3<br />
3<br />
1 0<br />
4<br />
1<br />
− 0 1<br />
4<br />
1<br />
0<br />
3<br />
2<br />
− 1<br />
3<br />
5<br />
− 0<br />
3<br />
1<br />
2<br />
1<br />
−<br />
2<br />
0 0 0 0 −1 −1<br />
alegem max<br />
zj−cj>0<br />
100<br />
= 300<br />
1<br />
3<br />
172<br />
= 129<br />
4<br />
3<br />
alegem max<br />
zj−cj>0<br />
1<br />
− 8<br />
4<br />
3<br />
4<br />
24<br />
alegem max<br />
zj−cj>0
82<br />
Modele şi algoritmi de optimizare<br />
Tabelul 4.13<br />
5 4 6 alegem min<br />
CVB VB VVB x1 x2 x3<br />
x<br />
i<br />
y<br />
ik<br />
4 x2 57<br />
6 x3 129<br />
valoarea<br />
funcţiei<br />
obiectiv z<br />
7<br />
−<br />
1002 2<br />
5 x1 76 1<br />
6 x3 148 0<br />
Valoarea<br />
funcţiei<br />
obiectiv z<br />
1268 0<br />
3 228<br />
1 0 = 76<br />
4<br />
3<br />
1<br />
− 0 1<br />
4<br />
0 0<br />
4<br />
0<br />
3<br />
1<br />
1<br />
3<br />
14<br />
3<br />
0<br />
alegem min<br />
zj−cj
4. Programare liniară 83<br />
( )<br />
1 2 3<br />
⎧ max b1u<br />
+ b2u<br />
+ b3u<br />
⎪ t 1 t 2 t 3<br />
⎪A11u<br />
+ A21u<br />
+ A31u<br />
≤ c1<br />
⎪ t 1 t 2 t 3<br />
⎨A12u<br />
+ A22u<br />
+ A32u<br />
= c2<br />
(4.44)<br />
⎪ t 1 t 2 t 3<br />
⎪<br />
A13u<br />
+ A23u<br />
+ A33u<br />
≤ c3<br />
1<br />
2<br />
3<br />
⎩⎪<br />
u ≥ 0,<br />
u − arbitrar,<br />
u ≤ 0<br />
Duala dualei este chiar problema iniţială. De aceea, (4.20) şi (4.44) formează<br />
un cuplu de probleme duale.<br />
Din examinarea cuplului de probleme duale rezultă că una dintre probleme se<br />
obţine în următorul mod:<br />
a) termenii liberi din problema primală devin coeficienţi ai funcţiei obiectiv în<br />
problema duală,<br />
b) coeficienţii funcţiei obiectiv din problema primală devin termeni liberi în<br />
problema duală,<br />
c) o problemă de maximizare<br />
(minimizare) se transformă într-o problemă de<br />
minimizare (maximizare),<br />
d) matricea coeficienţilor sistemului de restricţii pentru problema duală este<br />
transpusa matricei coeficienţilor sistemului de restricţii ale problemei primale,<br />
e)<br />
variabilele duale (primale) asociate unor restricţii primale (duale) concordante<br />
sunt supuse condiţiei de nenegativitate,<br />
f) variabilele duale (primale) asociate unor restricţii<br />
primale (duale), care sunt<br />
ecuaţii, nu sunt supuse nici unei condiţii privind<br />
semnul.<br />
Din definiţia dată rezultă că:<br />
− duala unei probleme de programare sub forma standard<br />
⎧ minc′<br />
x<br />
⎪<br />
⎨Ax<br />
= b<br />
(4.45)<br />
⎪<br />
⎩x<br />
≥ 0<br />
este problema de programare liniară<br />
⎧ maxb′ u<br />
⎪<br />
⎨A<br />
u ≤ c<br />
⎪<br />
⎩u<br />
− arbitrar<br />
t<br />
(4.46)<br />
− duala unei probleme de programare<br />
sub forma canonică<br />
⎧ max c′x<br />
⎪<br />
⎨Ax ≤ b<br />
(4.47)<br />
⎪<br />
⎩ ≥ 0 x
84<br />
Modele şi algoritmi de optimizare<br />
este următoarea problemă de programare liniară, care are tot forma canonică:<br />
⎧max<br />
b′<br />
u<br />
⎪ t<br />
⎨A<br />
u ≤ c .<br />
⎪<br />
⎩u<br />
≥ 0<br />
(4.48)<br />
Problemele (4.47) şi (4.48) formează un cuplu de probleme duale simetrice, în<br />
timp ce problemele (4.45) şi (4.4 6) formează un cuplu de probleme duale<br />
asimetrice.<br />
− duala unei probleme mixte<br />
⎧min<br />
c′x<br />
⎪A1<br />
x ≥ b1<br />
⎨<br />
⎪A2<br />
x = b2<br />
⎪⎩<br />
x ≥ 0<br />
(4.49)<br />
e ste problema<br />
1 2<br />
⎧max( b′<br />
1u<br />
+ b′<br />
2u<br />
)<br />
⎪ t 1 t 2<br />
⎨A1<br />
u + A2u<br />
≤ c<br />
⎪ 1<br />
2<br />
⎩<br />
u ≥ 0,<br />
u − arbitrar<br />
− duala problemei de transport (4.8)-(4.11) este problema<br />
(4.50)<br />
⎧ ⎛ m<br />
n ⎞<br />
⎪max⎜<br />
⎟<br />
⎜∑<br />
aiu<br />
i +∑ b jv<br />
j ⎟<br />
,<br />
i=<br />
j=<br />
1<br />
⎪ ⎝ 1<br />
⎠<br />
⎨u<br />
i + v j ≤ cij<br />
, 1≤<br />
i ≤ m ; 1≤<br />
j ≤ n ,<br />
⎪ui<br />
, v j oarecare .<br />
⎪<br />
⎪⎩<br />
(4.51)<br />
În continuare sunt prezenate teoremele<br />
care stabilesc conexiunile fundamentale<br />
între cele două probleme duale.<br />
4.13. Teorema fundamentală<br />
a dualităţii<br />
Fie problema primală sub forma standard<br />
(4.45) şi duala sa (4.46).<br />
Definiţia 4.1. O bază B din matricea A se numeşte primal<br />
admisibilă pentru<br />
problema<br />
(4.45) dacă verifică relaţia<br />
−1 B b ≥ 0<br />
(4.52)<br />
O bază B din matricea A se numeşte<br />
dual admisibilă pentru problema (4.45)<br />
dacă verifică<br />
relaţia<br />
−1<br />
c′<br />
B A − c′<br />
≤ 0<br />
(4.53)
4. Programare liniară 85<br />
Nu vom presupu ne că A are rangul maxim. Lema următoare stabileşte o<br />
relaţie importantă între cele două<br />
probleme.<br />
Lema slabă a dualităţii. Dacă x şi u sunt soluţii<br />
admisibile pentru problemele<br />
(4.45) şi respectiv (4.46), atunci x’c ≥ b’u (Luenberger,<br />
1989).<br />
Demonstraţie. Deoarece<br />
t t<br />
b’u =(Ax)’u =xA u , dar A u≤ c’ şi x≥0 ,<br />
atunci rezultă că<br />
b’u ≤ x’c.<br />
<br />
Această lemă arată că o soluţie admisibilă a oricăreia dintre cele două probleme<br />
este o limită pentru valoarea funcţiei obiectiv a celeilalte probleme.<br />
Corolarul 4.1. Dacă x0 şi u0 sunt soluţii admisibile pentru problemele (4.45) şi<br />
respectiv (4.46) şi da că c’x0 = u ’0 b , atunci x0 şi u0 sunt soluţii<br />
optime pentru<br />
problemele respective.<br />
Corolarul 4.1 arată că dacă poate fi găsită o pereche de soluţii admisibile care<br />
să producă aceeaşi valoare pentru funcţiile<br />
obiectiv ale problemelor (4.45) şi<br />
(4.46), atunci acestea sunt amândouă optime.<br />
Vom enunţa şi demonstra Teorema fundamentală a dualităţii, care afirmă că şi<br />
reciproca Corolarului 4.1 este adevărată (Luenberger, 1989). Pentru aceasta avem<br />
nevoie de următorul rezultat (demonstrat<br />
în Fletcher, II, 1981).<br />
Lema de separare. Există un hiperplan care separă un con convex închis C de un<br />
vector nenul v ∉C<br />
.<br />
Teorema fundamentală a dualităţ că una dintre problemele (4.45) sau (4.46)<br />
are o soluţie optimă finită, atunci ă are soluţie optimă finită şi valorile<br />
corespunzătoare ale funcţiilor obiectiv sunt egale. Dacă una dintre cele două<br />
probleme are optim infinit, atunci cealaltă problemă nu are nici o soluţie admisibilă.<br />
Demonstraţie. A doua afirmaţie este o consecinţă a le i slabe a dualităţii. Dacă<br />
problema primală are optim infinit şi u este o solu admisibilă a problemei<br />
duale, atunci în mod necesar u’ b≤ −M pentru un M suficient de mare, ceea ce<br />
deşi cel ză un cuplu de probleme<br />
aţie este suficient să presupunem că<br />
oluţie<br />
rile celor două<br />
oblema (4.46) are o s imă z * ii. Da<br />
şi cealalt<br />
me<br />
ţie<br />
este imposibil.<br />
Observăm că, e două probleme nu formea<br />
duale simetrice, pentru a demonstra prima afirm<br />
problema primală<br />
are o soluţie optimă finită şi apoi să arătăm că problema duală<br />
are o s cu aceeaşi valoare pentru funcţia obiectiv. Acest lucru este posibil<br />
deoarece ambele probleme pot fi rescrise în formă standard şi rolu<br />
probleme se pot inversa.<br />
Să presupunem că pr oluţie opt finită. Considerăm<br />
următoarea mulţime convexă în spaţiul R m+1 :<br />
*<br />
{ ( r,<br />
) r = tz − c' x,<br />
w = tb<br />
− x,<br />
x ≥ 0,<br />
≥ 0}<br />
C = w A t .
86<br />
Modele şi algoritmi de optimizare<br />
Se poate arăta că C este un con convex închis. Vom arăta că vectorul (1, 0,<br />
…, 0) nu este în C.<br />
x0<br />
Dacă w= t0b−Ax0<br />
= 0 , unde t0>0 şi x0 ≥ 0 , atun ci x = este o soluţie<br />
t0<br />
admisibilă pentru problema (4.46) şi deci<br />
r *<br />
= z − c' x ≤ 0 ,<br />
t0<br />
ceea ce implică r≤0 (nu poate astfel să ia valoarea 1).<br />
Dacă w= −Ax<br />
0 0<br />
atunci x+α x0 este o soluţie admisibilă<br />
eza existenţei unui<br />
, 0) nu aparţine lui<br />
C.<br />
Cum C este o mulţime convexă închisă, există un hiperplan care separă<br />
un vecto , u)∈R m+1<br />
0 = 0 (t=0), unde x ≥ 0 şi c’x = −1 şi dacă x este o soluţie<br />
admisibilă oarecare a problemei (4.46),<br />
pentru problema (4.45) pentru orice α ≥ 0 şi dă valori din ce în ce mai mici pentru<br />
funcţia obiectiv, pe măsură ce α creşte. Aceasta contrazice ipot<br />
optim finit şi rezultă că un astfel de x0 nu există. Deci (1, 0,…<br />
vectorul (1,0,…,0) de C. Aşadar, există r nenul (s şi o<br />
constantă c astfel încât :<br />
s < c = inf sr + u' w ( r,<br />
w)<br />
∈C<br />
.<br />
{ }<br />
ă ar exista<br />
valori<br />
α. Pe d e (0,0)∈C, trebuie ca să avem c≤0. Aşadar, c=0. Prin<br />
urmare s
4. Programare liniară 87<br />
−1<br />
u′ b = c′<br />
B B b = c′<br />
B x<br />
şi astfel valoarea funcţiei obiectiv a problemei duale este pentru acest u egală cu<br />
valoarea funcţiei obiectiv a problemei primale. Atunci, din Corolarul 4.1 rezultă<br />
că<br />
u este<br />
soluţia optimă a problemei duale. Am demonstrat următoarea teoremă.<br />
Teorema 4.6. Dacă problema de programare standard are soluţie de bază optimă<br />
−1<br />
corespunzătoare bazei B, atunci u′ = c′<br />
B B este soluţie optimă a problemei<br />
duale asociate. Valorile optime ale funcţiilor obiectiv corespunzătoare celor două<br />
probleme<br />
asociate sunt egale.<br />
Teorema ecarturilor complementare pentru cuplu de probleme duale asimetrice.<br />
O condiţie necesară şi suficientă ca programele x * şi u * să fie optime pentru<br />
problemele duale (4.45) şi (4.46) este ca pentru orice i să avem:<br />
x > 0 ⇒ u′<br />
a = c<br />
a) i<br />
i i<br />
b) ′ ai<br />
< ci<br />
⇒ xi<br />
= 0<br />
u .<br />
Demonstraţie. Dacă au loc relaţiile a) şi b) atunci (u’A−c’)x=0, adică u’b=c’x ,<br />
şi, din Corolarul 4.1, rezultă că x şi u sunt soluţii optime pentru perechea de<br />
probleme (4.45) şi (4.46). Invers, dacă x şi u sunt soluţii optime pentru perechea<br />
de probleme (4.45) şi (4.46), atunci din Teorema fundamentală a dualităţii rezultă<br />
că u’b= c’x şi astfel (u’A−c’)x=0. Deoarece fiecare componentă a lui x este<br />
nenegativă şi fiecare componentă a lui u’A−c’ este nepozitivă,<br />
rezultă condiţiile<br />
a) şi b) din teoremă. <br />
Teorema ecarturilor complementare pentru cuplu de probleme duale simetrice. O<br />
condiţie necesară şi suficientă ca programele x * şi u * să fie optime pentru un cuplu<br />
de probleme duale simetrice este ca pentru orice i şi j să avem:<br />
x > 0 ⇒ u′<br />
a = c<br />
a) i<br />
i i<br />
b) u ′ ai<br />
< ci<br />
⇒ xi<br />
= 0<br />
c) u j<br />
j<br />
> 0 ⇒ a x = b j<br />
j<br />
d) a x b ⇒ u = 0 ,<br />
> j j<br />
unde a A<br />
onstraţia este simil<br />
j reprezintă linia j din matricea .<br />
Dem ară demonstraţiei teoremei precedente.<br />
Să notăm cu<br />
{ ∈ < 0 } x<br />
B<br />
i B<br />
B =<br />
, B fiind o bază dual admisibilă. Dacă<br />
− i<br />
B−≠φ atunci baza B este şi primal admisibilă şi<br />
problemei primale (Zidăroiu, 1983).<br />
x<br />
B<br />
= B<br />
−1<br />
b<br />
este program optim<br />
al<br />
Teorema 4.7. Fie B o bază dual admisibilă pentru problema (4.45) şi B−≠φ. Dacă<br />
∃ i ∈B astfel încât y ≥ ∀ j ∈ atunci problema (4.45) nu are programe.<br />
B<br />
0<br />
,<br />
( −<br />
) ( ) S<br />
ij
88<br />
Modele şi algoritmi de optimizare<br />
Demonstraţie. Fie programul dual asociat cu baza B− , linia de<br />
rang i din matricea B −1 u′ B<br />
−1<br />
i′<br />
= c′<br />
B B<br />
a<br />
şi fie u( δ ) = uB − δ ⋅ αi<br />
, unde δ ≥ 0 . Atunci<br />
u ( δ ) ′ a = u′<br />
a − δ ⋅ α′<br />
a<br />
B<br />
B<br />
= z − δ ⋅ y<br />
B<br />
≤ z ≤ c pentru 1 ≤ j ≤ n . Aşadar,<br />
j<br />
B<br />
t<br />
A u ≤ c . Însă<br />
j<br />
i<br />
j<br />
j<br />
u ) ′ ′ ′ δ<br />
ij<br />
j<br />
j<br />
B<br />
B<br />
( δ b = uBb<br />
− δ ⋅ αib<br />
= z − ⋅ xi<br />
şi atunci lim u ( δ ) ⋅ b = +∞<br />
δ →∞<br />
adică problema duală are optim infinit şi din Teorema fundamentală a dualităţii,<br />
rezultă că şi problema primală are optim infinit. <br />
Lema substituţiei. Fie A o matrice pătratică nesingulară A∈M<br />
(R ) şi B o<br />
matrice obţinută din A prin înlocuirea coloanei a<br />
Atunc<br />
şi<br />
a) condiţia necesară şi suficientă ca să existe B este ca<br />
r n<br />
cu vectorul nenul b ∈R<br />
−1<br />
c = A b . i:<br />
-1<br />
c ≠ 0 ;<br />
− 1<br />
−1<br />
b) Dacă c r ≠ 0 , atunci B = E r ( η)<br />
A , unde E r (η)<br />
se obţine din<br />
matricea unitate de ordinul n prin înlocuirea coloanei r cu vectorul<br />
′ r<br />
( ) ′<br />
− c c , 1,<br />
−c<br />
,..., −c<br />
η =<br />
.<br />
c<br />
−1<br />
1,...,<br />
− r−1<br />
r+<br />
1 r<br />
Demonstraţie. Din forma lui c rezultă că<br />
1<br />
n<br />
b = ( c1 a + ... + cna<br />
) . (4.54)<br />
a) Necesitatea condiţiei. Dacă c r=0<br />
, atunci din definiţia lui c rezultă că<br />
vectorii { } n<br />
r<br />
r 1 −1<br />
+ 1<br />
a ,..., a , b,<br />
a ,..., a sunt liniar dependenţi şi B nu este inversabilă.<br />
Suficienţa condiţiei. Presupunem că B nu este inversabilă şi atunci rangul ei<br />
este mai mic decât n, adică vectorii coloană ai matricei B sunt liniar dependenţi.<br />
Fie λ , i = 1,<br />
n , astfel încât<br />
i<br />
Însă din (4.54) avem<br />
n<br />
∑<br />
i=<br />
1<br />
n<br />
∑<br />
i=<br />
1<br />
i≠<br />
r<br />
2 i<br />
λ i ≠ 0 şi λi<br />
a + λr<br />
b = 0 .<br />
n<br />
∑ ( i i r )<br />
i=<br />
1<br />
i≠<br />
r<br />
i<br />
r<br />
λ + c λ a + λ c a = 0 ,<br />
ceea ce înseamnă că A are coloanele liniar dependente şi astfel nu este inversabilă.<br />
Atunci, trebuie ca crλ r = 0 . Sunt posibile două<br />
cazuri.<br />
i) cr=0<br />
şi suntem în cazul a) al lemei, sau<br />
1 r-1 r+1 n<br />
ii) λ r = 0 şi atunci din (4.54) rezultă că vectorii a ,…, a , a ,…, a , sunt<br />
liniar dependenţi , iar matricea A nu este inversabilă. Contradicţie!<br />
n<br />
r −1 −1<br />
i<br />
r<br />
b) Din (4.54) avem a = cr<br />
b − ∑ cr<br />
cia<br />
, adică a = Bη<br />
. Cum<br />
i=<br />
1<br />
i≠<br />
r<br />
i i<br />
a = Be , i = 1,<br />
n , i ≠ r , rezultă că A = BE (η ) , sau<br />
r<br />
r<br />
r<br />
r<br />
n<br />
B η<br />
− 1<br />
1<br />
= E r ( ) E<br />
′<br />
,<br />
− .
4. Programare liniară 89<br />
Teorema 4.8. Fie B o bază dual admisibilă pentr u problema primală (4.45) şi<br />
B−≠φ. Dacă pentru ∀ ∈B−<br />
∃ j ∈<br />
B<br />
y < 0<br />
( ) ( ) S<br />
i , astfel încât ij şi alegem l∈B−<br />
arbitrar, iar k∈S asfel încât să fie<br />
satisfăcută condiţia<br />
⎧ z − c<br />
⎫<br />
B<br />
B<br />
⎪ j j ⎪ z k −<br />
min ⎨ B ⎬ =<br />
B<br />
B<br />
j ylj<br />
90<br />
Modele şi algoritmi de optimizare<br />
Algoritmul simplex dual explorează bazele dual admisibile ale problem<br />
până la obţinerea unei baze dual admisibile care să fie i prim isibil ),<br />
sau până la punerea în evidenţă a faptului că problema duală nu are programe.<br />
l m plex prim se obţ o s esiu de programe de bază<br />
), iar în algoritmul simplex dual se obţine o succesiune de soluţii de bază<br />
care nu sunt programe ( −1 ei (4.46)<br />
−1 ş al adm ă ( B b ≥ 0<br />
În a gorit ul sim al ine ucc ne<br />
−1 ( B b ≥ 0<br />
B b nu are toate componentele nenegative).<br />
Pe ntru o problemă de minimizare<br />
în algoritmul sim plex funcţia<br />
obiectiv descreşte<br />
spre minim, în timp ce în algoritmul simplex dual funcţia obiectiv creşte spre maxim.<br />
Adesea, pentru problema de programare liniară se cunoaşte o soluţie de bază,<br />
dar care nu este şi admisibilă şi pentru care multiplicatorii simplex sunt admisibili<br />
pentru problema duală asociată. În tabelul simplex această situaţie corespunde stării<br />
în care ultima linie (zj−cj) nu are elemente pozitive, dar soluţia<br />
nu este admisibilă.<br />
O astfel de situaţie apare, de exemplu, atunci când o problemă de programare<br />
liniară este rezolvată şi din aceasta se construieşte o problemă nouă prin<br />
schimbarea vectorului termenilor liberi b (postoptimizare sau reoptimizare). În<br />
acea stă situaţie, dispunând de o soluţie admisibilă de<br />
bază pentru problema duală<br />
este de preferat să continuăm să rezolvăm problema duală.<br />
Considerăm problema de programare<br />
liniară sub forma standard şi fie B o<br />
−1<br />
bază cunosc ută a acestei probleme, iar u′ = c′<br />
B B este admisibilă pentru<br />
problema duală. Dacă xB=B −1 b≥0, această soluţie este primal admisibilă şi atunci<br />
ea este optimă. Vectorul u este admisibil pentru problema duală şi atunci are loc<br />
inegalitatea u’aj<br />
≤cj<br />
pentru<br />
j = 1 , n . Presupun ând că baza este formată cu prim ele<br />
m coloane ale lui A, atunci au loc egalităţile u’aj=cj , j = 1,<br />
m şi, cu excepţia<br />
degenerării, inegalităţile u’aj
4. Programare liniară 91<br />
⎧min<br />
c′<br />
x ⎧ max bu′<br />
⎪<br />
⎪ t<br />
⎨ Ax = b ⎨ A u ≤ c<br />
⎪<br />
⎩ x ≥ 0<br />
⎪<br />
⎩u<br />
arbitrar<br />
algoritmul simplex dual constă din următorii paşi.<br />
Pas 0. Se determină o bază dual admisibilă B , în matricea A , se calculează<br />
x<br />
B<br />
B<br />
B<br />
B<br />
z B<br />
j<br />
j<br />
j<br />
-1<br />
B -1<br />
= B b , = c′<br />
x , y = B a , z j − c , 1≤<br />
j ≤ n<br />
aj fiind coloane ale matricei A.<br />
Pas 1. a) Criteriu de ieşire din bază<br />
1) dacă toţi x ≥ 0 , atunci programul este optim. Stop!<br />
2) dacă ( ) < 0<br />
∃ i<br />
i<br />
x , atunci se determină l astfel încât<br />
{ xi<br />
x 0 }<br />
x min < .<br />
l = i<br />
b) Criteriu de intrare în bază<br />
1) dacă toţi y lj ≥ 0 , atunci problema nu are programe. Stop!<br />
y < , atunci se determină k astfel încât<br />
∃ lj<br />
2) dacă ( ) 0<br />
z − c z j − c j<br />
ε 0 = = min<br />
(4.57)<br />
y<br />
y j ylj<br />
lk<br />
92<br />
min {3x 1+4x 2+5x 3}<br />
⎧x1<br />
+ 2x<br />
2 + 3x3<br />
≥ 5<br />
⎪<br />
⎨2x1<br />
+ 2x<br />
2 + x3<br />
≥ 6<br />
⎪<br />
⎩xi<br />
≥ 0 i = 1,<br />
3<br />
forma standard<br />
Modele şi algoritmi de optimizare<br />
min {3x 1+4x 2+5x 3}<br />
⎧x1<br />
+ 2x<br />
2 + 3x3<br />
− x4<br />
= 5<br />
⎪<br />
⎨2x1<br />
+ 2x<br />
2 + x3<br />
− x5<br />
= 6<br />
⎪<br />
⎩xi<br />
≥ 0<br />
i = 1,<br />
5<br />
duala corespunzătoare<br />
şi aplicăm algoritmul simplex dual problemei<br />
min {3x1+4x2+5x 3}<br />
⎧−<br />
x1<br />
− 2x 2 − 3x3<br />
+ x4<br />
= −5<br />
⎪<br />
⎨−<br />
2x1 − 2x<br />
2 − x3<br />
+ x5<br />
= −6<br />
⎪<br />
⎩xi<br />
≥ 0<br />
i = 1,<br />
5<br />
obţinută<br />
din precedenta prin înmulţirea primelor două restricţii cu –1.<br />
Coloanele 4 şi 5 din matricea coeficienţilor restricţiilor dau o bază dual<br />
admisibilă, deoarece valorile pentru x4 şi x5 sunt negative, iar zj−cj sunt<br />
nepozitive. La prima iteraţie iese din bază x5 şi intră x1, iar la iteraţia a doua iese<br />
din bază x4 şi intră x2. Rezultatele sunt trecute în Tabelul 4.14.<br />
Valoarea funcţiei obiectiv este min f=10, obţinută pentru x1=1 şi x2=2 .<br />
4.15. Interpretarea economică a algoritmului simplex dual<br />
Pentru exemplificare ne vom referi la problema utilizării eficiente a resurselor<br />
(Dragomirescu şi Maliţa, 1968)<br />
⎧max<br />
c′<br />
x<br />
⎪<br />
⎨Ax<br />
≤ b<br />
⎪<br />
⎩x<br />
≥ 0<br />
unde: xj este numărul de unităţi din sortimentul j care trebuie produse şi ∑ n<br />
reprezintă cantitatea d in resursa i care se consumă în procesul de producţie.<br />
Problema duală asociată acesteia<br />
este<br />
⎧ min b′u<br />
⎪<br />
⎨ A u ≤ c′<br />
⎪<br />
⎩ ≥<br />
T<br />
u 0<br />
unde: ui este costul unitar intern (shadow price) al resursei<br />
i, iar aiju<br />
i reprezintă<br />
i 1<br />
valoarea totală a resurselor consumate pentru realizarea unei unităţi<br />
din sortimentul j.<br />
Tabelul 4.14<br />
m<br />
∑<br />
=<br />
j=<br />
1<br />
a<br />
ij<br />
x<br />
j
4. Programare liniară 93<br />
3 4 5 0 0 alegem min<br />
CVB VB VVB x1 x2 x3 x4 x5<br />
0 x4 −5 −1 −2 −3 1 0<br />
0 x5 −6 −2 −2 −1 0 1<br />
valoarea<br />
funcţiei<br />
obiectiv z<br />
0 −3 −4 −5 0 0<br />
0 x4 −2 0 −1<br />
3 x1 3 1 1<br />
valoarea<br />
funcţiei<br />
obiectiv<br />
z<br />
9 0 −1<br />
4 x2 2 0 1<br />
5<br />
− 1<br />
2<br />
1<br />
0<br />
2<br />
7<br />
− 0<br />
2<br />
5<br />
−1<br />
2<br />
1<br />
−<br />
2<br />
1<br />
−<br />
2<br />
3<br />
−<br />
2<br />
3 x 1 1<br />
1 0 −2 1 −1<br />
Valoarea<br />
funcţiei<br />
obiectiv z<br />
11 0 0 −1 −1 −1<br />
1<br />
2<br />
z<br />
min<br />
yij
94<br />
Modele şi algoritmi de optimizare<br />
producţie x şi nici un sistem de costuri interne u profitul total al întreprinderii nu<br />
poate depăşi costul total al resurselor; egalitatea se realizează doar pentru<br />
programele optime de producţie şi pentru costuri interne optime.<br />
Relaţiile Teoremei ecarturilor complementare scrise sub forma<br />
n<br />
− ∑ ij j<br />
⎝ j=<br />
x<br />
⎛ ⎞<br />
m ⎛ ⎞<br />
u ⎜ a ⎟<br />
i ⎜<br />
bi<br />
⎟<br />
= 0 , 1 ≤ i ≤ m şi x j ⎜∑<br />
aiju<br />
i − c j ⎟ = 0 , 1≤j≤n 1 ⎠<br />
⎝ i=<br />
1 ⎠<br />
în acest caz au următoarea interpretare: într-un plan de producţie optim nu se pot<br />
produce sortime nte pentru care consumurile de resurse – calculate pe baza<br />
costurilo<br />
r interne – depăşesc profiturile. În p lus, costurile interne nenule se atribuie<br />
numai<br />
resurselor folosite integral în cadrul acestui plan.<br />
4.16. Determinarea unei soluţii dual admisibile<br />
Dacă toţi coeficienţii funcţiei obiectiv sunt nenegativi, atunci variabilele ecart<br />
formează o soluţie de bază dual admisibilă, deoarece în acest caz<br />
zi−ci= −ci ≤ 0.<br />
Dacă nu toţi coeficienţii funcţiei obiectiv sunt nenegativi, se introduce<br />
o<br />
restricţie nouă (Maliţa şi Zidăroiu,<br />
1971)<br />
+ x + x + ... + x = M<br />
xn + 1 ν 1 ν 2<br />
ν ,<br />
k<br />
cu M suficient de mare, xn+1 o nouă variabilă, iar ν , 1≤<br />
r ≤ k , fiind<br />
variabilele care corespund coeficienţilor cν < 0 .<br />
Dacă max { c c < 0 }<br />
cν = f<br />
j j , se înlocuieşte f<br />
r<br />
x r<br />
x ν din restricţia suplimentară<br />
în funcţia obiectiv. Se obţine o mulţime<br />
de n variabile ( xn+1 înlocuieşte xν ) f<br />
astfel încât toţi coeficienţii funcţiei obiectiv să fie<br />
nenegativi şi numărul restricţiilor<br />
a crescut cu o un itate.<br />
Exemplu<br />
⎧min(<br />
−x3<br />
− 2x<br />
4 + x5<br />
)<br />
⎪<br />
x1<br />
+ 3x3<br />
+ x4<br />
− x5<br />
= −4<br />
⎨<br />
⎪x2<br />
− x3<br />
− 4x 4 + x5<br />
= 1<br />
⎪<br />
⎩xi<br />
≥ 0 , 1≤<br />
i ≤ 5<br />
x1,<br />
x2 formează o bază care nu este<br />
primal admisibilă pentru că x1= − 4 . Pentru a<br />
face pozitivi toţi coeficienţii funcţiei obiectiv, introducem relaţia<br />
suplimentară<br />
x x + x = M<br />
+ 3 4<br />
6 . Atunci = max{ c } = c4<br />
= −2<br />
c f<br />
j<br />
j c j < 0<br />
ν şi x4=M−x3−x6.<br />
Se obţine o<br />
nouă problemă care are toţi coeficienţii funcţiei obiectiv nenegativi:
4. Programare liniară 95<br />
⎧min(<br />
−2M<br />
+ x3<br />
+ x5<br />
+ 2x6<br />
)<br />
⎪<br />
⎪<br />
x1<br />
+ 2x3<br />
− x5<br />
− x6<br />
= −4<br />
− M<br />
⎨x<br />
2 + 3x3<br />
+ x5<br />
+ 4x<br />
6 = 1 + 4M<br />
x3<br />
+ x4<br />
+ x6<br />
= M<br />
⎪⎩ ≥ 0 , 1≤<br />
i ≤ 6<br />
x ⎪<br />
⎪<br />
i<br />
unde M este suficient de mare astfel încât –4–M < 0 . Se obţine o soluţie dual<br />
admisibiă x1= –4–M , x2 = 1+4M , x4 = M .<br />
4.17. Probleme propuse<br />
1. Într-o staţie de betoane se pot produce 3 tipuri de betoane 150, B200, B300).<br />
Staţia este organ fi re ni arcă de<br />
betoane, capacitatea maximă a staţiei este de 600 m etonul se transportă<br />
cu ajutorul a 20 de autobetoniere de 5 m 3 (B<br />
izată astfel<br />
încât eca beto eră poate produce orice m<br />
3<br />
zilnică . B<br />
capacitate fiecare, duratele<br />
ciclurilor de<br />
transport pentru cele 3 mărci de betoane fiind de 0.1 ; 0.2 şi<br />
0.1 zile respectiv.<br />
Consumurile normate de ciment pe c ele trei mărci<br />
de beton sunt respectiv 200, 300<br />
3<br />
şi 400 kg/m . Staţia este aprovizionată zilnic cu o cantitate de 180 tone de ciment .<br />
Ca urmare a organizării staţiei se obţin următoarele economii pe mărci de beton: 1;<br />
1.2 şi 0.8 u.m. / m 3 .<br />
Se cere găsirea soluţiei care aduce maximum de profit staţiei, ştiind că se cere<br />
beton în cantităţi mai mari decât posibilităţile de preparare.<br />
Rezolvare<br />
a) Modelarea problemei<br />
Notăm cu x1 , x2 , x3 , cantităţile de beton din fiecare marcă ce se cer a fi<br />
determinate astfel încât funcţia obiectiv<br />
z = f(x1 , x2 , x3 ) = 1·x1 + 1.2·x2 + 0.8·x3 ,<br />
să fie maximă sub restricţiile<br />
x1 + x2 + x3 ≤ 600 (nu se poate depăşi capacitatea de producţie<br />
a staţiei)<br />
0.1·x1 +0.2·x2 +0.1·x3 ≤ 20·5 (nu se poate depăşi capacitatea zilnică<br />
de<br />
transport)<br />
200·x1 +300·x2 + 400·x3 ≤ 600 (nu se poate depăşi cantitatea de ciment cu<br />
care este aprovizionată zilnic staţia)<br />
S-a obţinut următoarea problemă de programare liniară:<br />
Forma canonică Forma standard
96<br />
Modele şi algoritmi de optimizare<br />
{ x + 1.<br />
2x<br />
0.<br />
8 } max{<br />
x + 1.<br />
2x<br />
+ 0.<br />
8x<br />
}<br />
⎧ max 1 2 + x3<br />
⎪<br />
⎪<br />
x1<br />
+ x2<br />
+ x3<br />
≤ 600<br />
⎨x1<br />
+ 2x<br />
2 + x3<br />
≤1000<br />
⎪2x1<br />
+ 3x2<br />
+ 4x3<br />
≤1800<br />
⎪<br />
⎪⎩<br />
xi ≥ 0 , i = 1,<br />
2,<br />
3<br />
⎧ 1 2<br />
3<br />
⎪<br />
⎪<br />
x1<br />
+ x2<br />
+ x3<br />
+ x4<br />
= 600<br />
⎨ x1<br />
+ 2x<br />
2 + x3<br />
+ x5<br />
= 1000<br />
⎪2x1<br />
+ 3x2<br />
+ 4x3<br />
+ x6<br />
= 1800<br />
⎪<br />
⎪⎩<br />
xi ≥ 0 , i = 1,<br />
6<br />
după introducerea variabilelor ecart<br />
Se obţin următoarele rezultate:<br />
max f=680 realizat pentru x1=200 , x2=400 , x3=0 .<br />
Variabilele auxiliare x 4=0 , x5=0 , x6= 200 , arată că<br />
primele două restricţii se<br />
verifică pentru soluţia de mai sus cu egalităţi, iar cea de-a treia cu inegalitate.<br />
Profitul<br />
este maxim dacă nu se produce beton de tipul B300.<br />
2. Într-o secţie a unei întreprinderi se produc trei tipuri de produse P1, P2 , P3 ,<br />
folosind rezerve de forţă de muncă (F) şi resurse financiare (B) limitate conform<br />
Tabelul 4.15.<br />
Tabelul 4.15<br />
Tip produs<br />
P1 P2 P3 Disponibil<br />
Rezerve<br />
F 2 3 2 15<br />
B 1 2 3 12<br />
Profit 1.5 4 3<br />
care conţine şi consumurile din aceste rezerve la unitatea de produs pentru fiecare<br />
tip, precum şi beneficiile aduse de o unitate de fiecare tip de produs. Datorită<br />
condiţiilor impuse de stocare întreaga producţie nu trebuie să depăşească 8 unităţi.<br />
Să se determine planul optim de producţie care în condiţiile date să dea un<br />
profit total maxim pe secţie.<br />
R. În urma modelării acestei<br />
probleme se obţine următorul program liniar:<br />
max f = max{1.5x1+4x2+3x3}<br />
⎧2x1<br />
+ 3x2<br />
+ 2x3<br />
≤15<br />
⎪<br />
x1<br />
+ 2x<br />
2 + 3x3<br />
≤12<br />
⎨<br />
.<br />
⎪x1<br />
+ x2<br />
+ x3<br />
≤ 8<br />
⎪<br />
⎩xi<br />
≥ 0 , i = 1,<br />
3<br />
Se obţine soluţia max f=20.4 pentru x1 = 0 , x2 = 4.2 , x3 = 1.2 .<br />
3. La o secţie de producţie a unei întreprinderi de construcţii, unde se lucrează în<br />
flux continuu de bandă, sunt necesare pentru fabricarea de panouri pentru cofraje 4<br />
tipuri de materii prime (panel (P), scândură de brad (SB), dulapi (D), cuie<br />
(C)) care
4. Programare liniară 97<br />
sunt<br />
prelucrate la 3 standuri. Repartiţia materiilor prime şi a cheltuielilor de muncă<br />
necesare prelucrării pe cele 3 standuri este dată de Tabelul 4.16.<br />
Stand<br />
Materie primă<br />
Tabelul 4.16<br />
P SB D C<br />
Nr. necesar de<br />
panouri<br />
S1 1 1 0 1<br />
2<br />
S2 1 2 1 0<br />
4<br />
S3 0 1 1 1 3<br />
Cheltuieli de munc ă 6 8 12 10<br />
Să se determine un plan de producţie astfel încât cheltuielile să fie minime.<br />
R. Modelând problema se obţine următorul program liniar:<br />
min f = min {6x 1+8x<br />
2+12x 3+10x 4}<br />
⎧ x1<br />
+ x2<br />
+ x4<br />
= 2<br />
⎪<br />
x1<br />
+ 2x<br />
2 + x4<br />
= 4<br />
⎨<br />
.<br />
⎪ x2<br />
+ x3<br />
+ x4<br />
= 3<br />
⎪<br />
⎩ xi ≥ 0 , i = 1,<br />
4<br />
Se obţine soluţia min f = 29 , pentru nivelurile de consum de materiale<br />
x =0 , x =1.5 , x =1 , x =0.5 .<br />
1 2 3 4<br />
4. O secţie a unei întreprinderi are în fabricaţie 7 tipuri de produse, P1−P7 . Două<br />
materii prime (M 1 , M 2 ) necesare realizării acestor produse sunt în cantităţi limitate,<br />
200 şi respectiv 300 unităţi, celelalte fiind în cantităţi suficiente oricărui plan de<br />
producţie. Consumurile de materii prime M1 , M2 pe unitatea de produs pentru<br />
fiecare tip, precum şi beneficiile nete aduse de producerea unei unităţi din fiecare<br />
tip de produs sunt date în Tabelul 4. 17.<br />
Tabelul 4.17<br />
Materie<br />
Produs<br />
P P P<br />
M1 3 4 2 3 5 2 3<br />
M2 5 3 1 4 2 4 3<br />
Profit 6 5 2 6 6 5 6<br />
P1 P2 P3 4 P5 6 7<br />
Datorită unei cereri mari de produse P1 , P2 s-a propus ca măcar 25% din<br />
întreaga producţie a secţiei să fie reprezentată de aceste produse. Să se determine<br />
un plan de producţie care să respecte condiţiile impuse şi care să aducă un profit<br />
total maxim în secţia respectivă.<br />
R. Trebuie rezolvată următoarea problemă de programare liniară:<br />
max f = max{6x +5x +2x +6x +6x +5x +6x }<br />
1 2 3 4 5 6 7
98<br />
Modele şi algoritmi de optimizare<br />
⎧3x1<br />
+ 4x<br />
2 + 2x3<br />
+ 3x4<br />
+ 5x5<br />
+ 2x6<br />
+ 3x7<br />
≤ 200<br />
⎪<br />
5x1<br />
+ 3x2<br />
+ x3<br />
+ 4x<br />
4 + 2x5<br />
+ 4x<br />
6 + 3x7<br />
≤ 300<br />
⎨<br />
⎪−<br />
3x1<br />
− 3x2<br />
+ x3<br />
+ x4<br />
+ x5<br />
+ x6<br />
+ x7<br />
≤ 0<br />
⎪<br />
⎩xi<br />
≥ 0 , i = 1,7<br />
Se obţine max f =430.77 pentru<br />
x1=19.23 ; x2= x3= x4= x5=0 ; x2=30.77 ; x2=26.92 .<br />
5. Problema dietei alimentare (problemă de amestec)<br />
Un meniu trebuie să asigure necesarul în substanţele S1 , S2 , S3 , cu ajutorul<br />
alimentelor A1 , A2 , A3 . Cantităţile de substanţele S1 , S2 , S3 , ce se găsesc într-o<br />
unitate de aliment de fiecare fel, cantităţile minime necesare organismului în cele 3<br />
substanţe, precum şi preţurile<br />
celor 3 alimente sunt trecute în Tabelul 4.18.<br />
Tabelul 4.18<br />
Aliment<br />
Substanţă<br />
A1<br />
A2 A3 Necesar S1 4 3 2 24<br />
S1 5 7 2 35<br />
S1 1 5 4 40<br />
Preţ 8 7 5<br />
Să se determine cantităţile ce trebuie incluse în meniu din cele 3 alimente,<br />
astfel încât costul total al meniului să fie minim .<br />
R. În urma modelării se obţine problema de programare liniară sub forma canonică<br />
min f = min{8x1+7x2+5x3}<br />
⎧4x1<br />
+ 3x2<br />
+ 2x3<br />
≥ 24<br />
⎪<br />
5x1<br />
+ 7x<br />
2 + 2x3<br />
≥ 35<br />
⎨<br />
.<br />
⎪x1<br />
+ 5x<br />
2 + 4x3<br />
≥ 40<br />
⎪<br />
⎩xi<br />
≥ 0 , i = 1,<br />
3<br />
După introducerea variabilelor de compensare se obţine problema sub forma<br />
standard, dar nu are o bază canonică evidenţiată. De aceea se aplică metoda în două<br />
faze.<br />
min f = min{8x1+7x2+5x3}<br />
⎧4x1<br />
+ 3x2<br />
+ 2x3<br />
− x4<br />
= 24<br />
⎪<br />
5x1<br />
+ 7x<br />
2 + 2x3<br />
− x5<br />
= 35<br />
⎨<br />
.<br />
⎪x1<br />
+ 5x2<br />
+ 4x3<br />
− x6<br />
= 40<br />
⎪<br />
⎩ xi<br />
≥ 0 , i = 1,<br />
6<br />
Se obţine min f = 56 , meniul constă din 8 unităţi din alimentul al doilea şi<br />
conţinutul în substanţa S2 depăşeşte minimul necesar cu 21 unităţi, adică<br />
x1=0 , x2=8 , x3=0 , x4=0 , x5=21 , x6=0 .
4. Programare liniară 99<br />
6.<br />
Substanţele S1 , S2 , S3 , S4 conţin în cantităţi diferite elementele E1 , E2 , E3 , E4.<br />
Din cele 4 substanţe trebuie făcut un amestec care să conţină cel puţin 28, 30, 25 şi<br />
respectiv 25 u nităţi din cele 4 elemente. Câte o unitate din fiecare tip de substanţă<br />
costă<br />
6, 3, 4 şi respectiv 5 u. m.<br />
Conţinutul unei unităţi din fiecare substanţă în cele 4 elemente este dat de Tabelul<br />
4.<br />
19.<br />
Tabelul 4.19<br />
Substanţă<br />
Element<br />
S1 S2 S3 S4<br />
E1 3 2 1 3<br />
E2 4 0 3 1<br />
E3 0 3 0 4<br />
E4 5 0 3 1<br />
Conţinutul substanţelor S1 , S2 în alte elemente ce aduc amestecului anumite<br />
proprietăţi speciale cer ca acest amestec să conţină cel puţin 3 unităţi din S1 şi cel<br />
puţin 3 unităţi din S 2 . Să se determine cantităţile ce trebuie amestecate din cele 4<br />
substanţe astfel încât să fie îndeplinite toate condiţiile impuse, iar costul total al<br />
amestecului să fie minim.<br />
R. Modelând problema se obţine<br />
min f = min {6x 1+3x 2+4x 3+5x 4}<br />
⎧3x1<br />
+ 2x<br />
2 + x3<br />
+ 3x4<br />
≥ 28<br />
⎪<br />
⎪<br />
4x1<br />
+ 3x3<br />
+ x4<br />
≥ 30<br />
⎪3x<br />
2 + 4x<br />
4 ≥ 25<br />
⎪<br />
⎨5x1<br />
+ 3x3<br />
+ x4<br />
≥ 25<br />
⎪x1<br />
≥ 3<br />
⎪<br />
⎪x<br />
2 ≥ 2<br />
⎪<br />
⎩xi<br />
≥ 0 , i = 1,<br />
4 .<br />
Pentru a reduce numărul restricţiilor problemei liniare obţinute se poate face<br />
schimbarea de variabile y1<br />
= x1−3 , y2 = x2−2 , y3 = x3<br />
, y4 = x4 .<br />
Se obţine problema<br />
min g =min {6y1+3y2+4y3+5y 4+24}<br />
⎧3y1<br />
+ 2y<br />
2 + y3<br />
+ 3y<br />
4 ≥15<br />
⎪<br />
⎪<br />
4y1<br />
+ 3y<br />
3 + y4<br />
≥18<br />
⎨3y<br />
2 + 4y<br />
4 ≥19<br />
.<br />
⎪5y1<br />
+ 3y<br />
3 + y4<br />
≥10<br />
⎪<br />
⎪⎩<br />
yi ≥ 0 , i = 1,<br />
4<br />
După aducerea la forma standard, se aplică metoda în două faze şi, după<br />
revenirea la variabilele xi<br />
, se obţine soluţia:<br />
min f =65.416 , pentru x1=3<br />
, x2=2 , x3=4.416 , x4=4.75 .
100<br />
Modele şi algoritmi de optimizare<br />
7. O întreprindere doreşte să producă un nou aliaj format din 30%<br />
metal A şi 70%<br />
metal B. Pentru aceasta are la dispoziţie alte 5 aliaje ale căror preţuri şi compoziţii<br />
sunt date în Tabelul 4.20.<br />
Tabelul 4.20<br />
Aliaj 1 2 3 4 5<br />
% A<br />
1<br />
0<br />
2<br />
5<br />
5<br />
0<br />
7<br />
5<br />
95<br />
% B<br />
9<br />
0<br />
7<br />
5<br />
5<br />
0<br />
2<br />
5<br />
5<br />
Preţ/kg 5 4 3 2 1.5<br />
Aliajul dorit va fi produs prin combinarea unor cantităţi din celelalte 5 aliaje. Să se<br />
determine cantităţile necesare realizării noului aliaj cu cost minim.<br />
R. Notăm cu xi – cantitatea din aliajul i (i=1,2,...,5) care intră în alcătuirea noului<br />
aliaj. Trebuie rezolvată următoarea problemă de programare liniară:<br />
min {5x1+4x2+3x 3+2x 4+1.5x 5 }<br />
⎧10x1<br />
+ 25x2<br />
+ 50x3<br />
+ 75x4<br />
+ 95x5<br />
= 30<br />
⎪<br />
⎨90x1<br />
+ 75x<br />
2 + 50x3<br />
+ 25x4<br />
+ 5x5<br />
= 70<br />
⎪x<br />
,..., x ≥ 0<br />
⎩ 1 5<br />
care are soluţia: x1=0 , x2=0.9 , x3=0 , x4=1 , x5=0 , iar valoarea funcţiei obiectiv<br />
este min f = 3.8 .<br />
8.<br />
O rafinărie de petrol are două surse de aprovizionare cu petrol brut: petrol brut<br />
uşor la 35$/baril şi petrol brut greu la 30 $/baril. Rafinăria produce benzină, petrol<br />
lampant şi benzină superioară, obţinând dintr-un baril de petrol brut<br />
cantităţile din<br />
Tabelul 4.21.<br />
Tabelul 4.21<br />
Produs finit<br />
Petrol Benzină<br />
Benzină<br />
Materie primă<br />
lampant superioară<br />
Petrol brut uşor 0.3 0.2 0.3<br />
Petrol brut greu 0.3 0.4 0.2<br />
Rafinăria s-a angajat să producă 900 000 barili de benzină, 800 000 barili<br />
de petrol<br />
lampant şi 500 000 barili de benzină superioară. Ce cantităţi de petrol<br />
brut uşor şi<br />
greu trebuie achiziţionate pentru a se realiza angajamentul cu un cost minim?<br />
R. Notăm cu x1 , x2 , x3 cantităţile de petrol brut uşor folosite pentru obţinerea de<br />
benzină, petrol lampant şi respectiv benzină superioară, şi analog x4 , x5 , x6 ,<br />
cantităţile de petrol brut greu. Se ajunge la următoarea problemă de programare<br />
liniară:<br />
min {35(x1 + x2 + x3 ) + 30(x4 + x5 + x6 )}
4. Programare liniară 101<br />
⎧0.<br />
3x1<br />
+ 0.<br />
3x4<br />
= 900 000<br />
⎪<br />
0.<br />
2x2<br />
+ 0.<br />
4x5<br />
= 800 000<br />
⎨<br />
⎪0.<br />
3x3<br />
+ 0.<br />
2x6<br />
= 500 000<br />
⎪<br />
⎩x1<br />
, x2<br />
, x3<br />
, x4<br />
, x5<br />
, x6<br />
≥ 0<br />
Pentru realizarea planului de producţie sunt necesare cantităţile 1 666 666.67<br />
barili petrol brut uşor şi 5 000 000 barili petrol brut greu, costul minim fiind<br />
208 333 333.33 .<br />
9. O firmă produce cinci tipuri de piese de schimb pentru automobile. Fiecare piesă<br />
este turnată în oţel la turnătorie şi apoi este trimisă la secţia de finisaj. Numărul de<br />
ore muncă necesare pentru 100 de unităţi din fiecare tip de piesă în cele două secţii<br />
sunt date în Tabelul 4.22.<br />
Tabelul 4.22<br />
Tip piesă 1 2 3 4 5<br />
Secţie<br />
Turnătorie 2 1 3 3 1<br />
Finisaj 3 2 2 1 1<br />
Profit / 100 unităţi 3 2 4 2 1<br />
0 0 0 5 0<br />
Capacitatea de turnare şi finisare pe parcursul unei luni este de 700, respectiv<br />
1000 ore muncă. Să se determine numărul de piese din fiecare tip care trebuie<br />
produse pentru a se obţine un profit maxim.<br />
R. Notând cu xi numărul de sute de piese de tipul i, i = 1,<br />
5 , obţinem următoarea<br />
problemă de programare liniară<br />
max {30x1+20x2+40x3+25x4+10x5}<br />
⎧2x1<br />
+ x2<br />
+ 3x3<br />
+ 3x4<br />
+ x5<br />
≤ 7<br />
⎪<br />
⎨3x1<br />
+ 2x<br />
2 + 2x3<br />
+ x4<br />
+ x5<br />
≤10<br />
⎪<br />
⎩xi<br />
≥ 0 , i = 1,<br />
5<br />
care<br />
are maximul egal cu 120, obţinut pentru x1=0 , x2=4 , x3=1 , x4=0 , x5=0 .<br />
10. O firmă producătoare de calculatoare prognozează că în următoarele n luni<br />
cererea va fi d i , i = 1,<br />
n . Într-o lună firma poate produce r unităţi cu un cost b.<br />
Lucrând peste program, firma poate produce calculatoare la un cost c > b . Costul<br />
unitar de stocare al calculatoarelor de la o lună la alta este s . Să se determine<br />
planul de producţie care minimizează costul.
5. PROBLEMA <strong>DE</strong> TRANSPORT<br />
5.1. Fundamentele algoritmului de transport<br />
Problema de transport (4.8) − (4.11) are totdeauna o soluţie admisibilă, anume<br />
a b<br />
m n<br />
i j<br />
xi j = , unde S = ∑ ai<br />
= ∑b<br />
j şi care este o soluţie mărginită de ai şi bj .<br />
S i= 1 j=<br />
1<br />
Există în total n+m restricţii (m ecuaţii corespunzătoare restricţiilor date de<br />
centrele de aprovizionare şi cele n ecuaţii corespunzătoare restricţiilor date de<br />
centrele de consum) la care se adaugă condiţia de echilibru ∑ a i = ∑b<br />
j . De aici<br />
m<br />
n<br />
i= 1 j=<br />
1<br />
rezultă<br />
că una dintre restricţii este redundantă. Orice restricţie se poate exprima în<br />
funcţie de celelalte m+n−1 rămase.<br />
Teorema<br />
5.1. Problema de transport are totdeauna soluţie şi o restricţie este<br />
redundantă. Înlăturând oricare dintre restricţii, cele n+m−1 rămase formează un<br />
sistem liniar independent (Luenberger, 1989).<br />
Demonstraţie. Existenţa soluţiei şi redundanţa rezultă<br />
din observaţia de mai sus.<br />
Deoarece suma restricţiilor date de centrele de aprovizionare este egală cu suma<br />
restricţiilor date de centrele de consum, rezultă că orice restricţie poate fi exprimată<br />
ca o combinaţie liniară de celelalte m+n−1 . Astfel, orice restricţie poate fi<br />
eliminată. Să presupunem că am eliminat o restricţie, fie ea ultima. Presupunem că<br />
există o combinaţie liniară a ecuaţiilor rămase egală cu zero. Să notăm cu<br />
α , i = 1,<br />
m , coeficienţii acestei combinaţii liniare corespunzători primelor ecuaţii<br />
i<br />
din problema de transport şi cu β , j = 1,<br />
n −1<br />
coeficienţii corespunzători<br />
j<br />
ultimelor n−1 ecuaţii. Fiecare variabilă xin , i = 1,<br />
m , apare numai în a i - a<br />
ecuaţie, deoarece ultima ecuaţie a fost înlăturată. Astfel, α = 0 , i = 1,<br />
n . În restul<br />
ecuaţiilor xij apare numai<br />
într-o ecuaţie şi a stfel β j = 0, j = 1,<br />
n −1<br />
. Aşadar,<br />
sistemul de n+m−1 ecuaţii este liniar independent. <br />
Din Teorema 5.1 rezultă că o bază pentru<br />
problema de transport este<br />
formată din m+n−1 vectori liniar independenţi, iar soluţia de bază admisibilă are<br />
m+n−1 variabile. Problema duală asociată problemei de transport este dată de<br />
(4.51) . Are loc<br />
următoarea teoremă.<br />
i
5. Problema de transport 103<br />
Teorema 5.2. Cuplul de soluţii duale ( x ij ) şi ( i v j )<br />
problemele (4.8)-(4.11), respectiv (4.51), dacă şi numai dacă<br />
n<br />
∑<br />
j=<br />
1<br />
x<br />
m<br />
ij = ai<br />
; ∑<br />
i=<br />
1<br />
cij<br />
− ui<br />
− v j ≥ 0 ; xij<br />
( cij<br />
− ui<br />
− v j ) = 0.<br />
(rezultă din Teorema ecarturilor complementare).<br />
x<br />
ij<br />
= b<br />
j<br />
;<br />
x<br />
ij<br />
≥ 0<br />
u , este optim pentru<br />
Din ultima condiţie rezultă că pentru x ij > 0 se obţine c ij = ui<br />
+ v j .<br />
În cele ce urmează prin celulă se înţelege o pereche de indici (i,j), iar prin<br />
ciclu se înţelege un şir de celule notate<br />
( i1, j1<br />
) , ( i1,<br />
j2<br />
) , ( i2<br />
, j1<br />
) , L , ( it<br />
, jt<br />
) , ( it<br />
, j1<br />
) .<br />
În continuare vom evidenţia cea mai importantă proprietate structurală a<br />
problemei de transport: toate bazele sunt triunghiulare. Această proprietate<br />
simplifică rezolvarea unui sistem de ecuaţii liniare a cărui matrice a coeficienţilor<br />
are o astfel de bază şi aceasta conduce la implementarea eficientă a metodei<br />
simplex pentru problema de transport.<br />
Definiţia 5.1. O matrice pătratică se numeşte triunghiulară dacă prin permutări ale<br />
liniilor şi coloanelor sale poate fi pusă sub forma unei matrice inferior triunghiulară.<br />
O matrice inferior triunghiulară este triunghiulară în sensul definiţiei de mai<br />
sus.<br />
O matrice nesingulară superior triunghiulară este de asemenea triunghiulară<br />
deoarece prin schimbarea ordinii liniilor şi coloanelor sale devine inferior<br />
triunghiulară.<br />
Algoritm pentru a determina dacă o matrice este triunghiulară.<br />
Pas 1. Se găseşte linia care are un singur element nenul.<br />
Pas 2. Se formează o submatrice din matricea dată prin tăierea liniei şi coloanei<br />
elementului nenul din pasul 1. Se reia pasul 1 cu submatricea obţinută.<br />
Dacă această procedură poate fi continuată până când toate liniile au fost<br />
eliminate, atunci matricea este triunghiulară. Ea poate fi pusă sub forma inferior<br />
triunghiulară prin aranjarea liniilor şi coloanelor în ordinea în care au fost<br />
determinate prin procedura de mai sus.<br />
Exemplu. Folosind algoritmul de mai sus, să stabilim dacă matricea<br />
⎛1 1 0 0 0⎞<br />
⎜<br />
⎟<br />
⎜0<br />
0 1 0 0⎟<br />
B = ⎜0<br />
0 0 1 1⎟<br />
⎜<br />
⎟<br />
⎜1<br />
0 0 1 0⎟<br />
⎜<br />
⎟<br />
⎝0<br />
0 1 0 1⎠<br />
este triunghiulară.
104<br />
Modele şi algoritmi de optimizare<br />
Notăm în partea stângă a matricei B ordinea în care au fost găsite liniile cu un<br />
singur element nenul, iar sub matricea B, ordinea coloanelor corespunzătoare<br />
elementului nenul.<br />
⎛1<br />
1 0 0 0⎞<br />
5<br />
⎜<br />
⎟<br />
⎜0<br />
0 1 0 0⎟<br />
1<br />
B = ⎜0<br />
0 0 1 1⎟<br />
3<br />
⎜<br />
⎟<br />
⎜1<br />
0 0 1 0⎟<br />
4<br />
⎜<br />
⎟<br />
⎝0<br />
0 1 0 1⎠<br />
2<br />
4 5 1 3 2<br />
Permutăm liniile în ordinea dată de coloana din dreapta matricei B şi obţinem<br />
matricea<br />
⎛0<br />
0 1 0 0⎞<br />
⎜<br />
⎟<br />
⎜0<br />
0 1 0 1⎟<br />
B = ⎜0<br />
0 0 1 1⎟<br />
1<br />
.<br />
⎜<br />
⎟<br />
⎜1<br />
0 0 1 0⎟<br />
⎜<br />
⎟<br />
⎝1<br />
1 0 0 0⎠<br />
Permutăm col oanele în matricea B1<br />
în ordinea dată de linia de sub matricea B<br />
şi obţinem<br />
matricea<br />
⎛1<br />
0 0 0 0⎞<br />
⎜<br />
⎟<br />
⎜1<br />
1 0 0 0⎟<br />
B = ⎜<br />
2 0 1 1 0 0⎟<br />
⎜<br />
⎟<br />
⎜0<br />
0 1 1 0⎟<br />
⎜<br />
⎟<br />
⎝0<br />
0 0 1 1⎠<br />
care este inferior triunghiulară şi astfel<br />
matricea iniţială este triunghiulară.<br />
Această proprietate a matricelor este importantă şi are aplicaţii<br />
în rezolvarea<br />
sistemelor de ecuaţii liniare prin metoda substituţiei (eliminării) a lui Gauss.<br />
Sistemul de ecuaţii Ax=b , cu A inferior triunghiulară permite determinarea lui x1<br />
din prima ecuaţie, apoi x2 din cea de-a doua ecua ţia ş.a.m .d.<br />
Teorema 5.3. Orice bază a problemei de transport este triunghiulară.<br />
Demonstraţie. Considerăm sistemul de restricţii<br />
din problema de transport:<br />
n ⎧<br />
( )<br />
⎪<br />
⎪∑<br />
xij<br />
= ai<br />
−1<br />
i = 1,<br />
m<br />
j=<br />
1<br />
⎨ m<br />
⎪ =<br />
j = 1,<br />
n<br />
⎪∑<br />
xij<br />
b j<br />
⎩ i=<br />
1<br />
Schimbăm semnul la primele m ecuaţii şi atunci<br />
matricea coeficienţilor este<br />
formată numai din − 1,<br />
0, +1. Din Teorema 5.1, ştergând oricare dintre ecuaţiile<br />
de<br />
mai sus, se elimină redundanţa. Din matricea coeficienţilor care rezultă se formează<br />
o
5. Problema de transport 105<br />
bază nesingulară, B, prin selectarea unei mulţimi de m+n−1 coloane. Fiecare<br />
coloană a matricei B conţine cel mult două<br />
elemente nenule, unul egal cu +1 şi<br />
altul egal cu − 1.<br />
Astfel există cel mult 2(m+n−1) elemente nenule în bază.<br />
Totuşi, dacă orice coloană ar conţine două elemente<br />
nenule, atunci suma lor ar fi<br />
zero şi s-ar contrazice nesingularitatea lui B . Astfel, cel puţin o coloană a lui B<br />
trebuie să conţină numai un element nenul. Aceasta înseamnă că numărul total de<br />
elemente nenule din B este mai mic decât 2(m+n−1) . Rezultă că trebuie să fie<br />
o<br />
linie cu numai un element nenul, altfel, dacă orice linie ar avea două sau mai multe<br />
elemente nenule, numărul<br />
total al elementelor nenule ar fi cel puţin 2(m+n−1).<br />
Deducem că primul<br />
pas al procedurii de verificare a triunghiularităţii se verifică şi<br />
raţionamentul se poate continua pentru submatricea obţinută din B prin tăierea<br />
liniei şi coloanei corespunzătoare elementului nenul. Se continuă raţionamentul,<br />
stabilind că B este triunghiular ă.<br />
<br />
Deoarece orice matrice bază în problema de transport este triunghiulară şi toate<br />
elementele nenule sunt egale cu 1, rezultă că, prin rezolvarea sistemului<br />
de ecuaţii<br />
liniare Bx=b cu metoda substituţiei, dacă toate datele iniţiale sunt numere întregi,<br />
soluţia<br />
va fi formată din numere întregi. Acest lucru poate fi dat ca un corolar la<br />
Teorema<br />
5.3.<br />
Corolar<br />
5.1. Dacă sumele liniilor şi coloanelor unei probleme de transport sunt<br />
întregi, atunci variabilele de bază în orice soluţie de bază sunt întregi.<br />
Metoda simplex aplicată problemei de transport, ţinând<br />
seama de rezultatele de<br />
mai sus, este o versiune a algoritmului simplex revizuit şi poartă numele de<br />
algoritmul de transport (datorat lui Kantorovich).<br />
Multiplicatorii simplex asociaţi cu ecuaţiile restricţiilor îi<br />
notăm cu λ=(u,v) ,<br />
m n<br />
u∈R , v∈R . Deoarece o restricţie este redundant ă,<br />
vom considera de exemplu că<br />
vn=0 . D ată o bază B , multiplicatorii simplex se găsesc<br />
ca soluţii ale sistemului<br />
λ ′ B = c′<br />
B .<br />
Ca să-i determinăm în mod explicit din această ecuaţie, ne referim din nou la<br />
sistemul iniţial de restricţii. Dacă x ij este necunoscută de bază, atunci coloana<br />
corespunzătoare din A va fi inclusă în B. Această coloană are exact două<br />
elemenete nenule egale cu +1: unul în pozitia i din partea superioară şi altul în<br />
poziţia j din partea inferioară. Această coloană generează pentru multiplicatorii<br />
simplex ecuaţia<br />
ui+vj=cij ,<br />
deoarece ui şi vj sunt componentele corespunzătoare ale vectorului<br />
multiplicatorilor simplex. În general, ecuaţiile multiplicatorilor simplex sunt<br />
ui+vj=cij (∀)i, j<br />
pentru care xij sunt bazice. Matricea coeficienţilor acestui sistem este transpusa<br />
matricei bazei, aşadar este triunghiulară şi sistemul poate fi rezolvat prin metoda<br />
substituţiei.
106<br />
Modele şi algoritmi de optimizare<br />
Corolar 5.2. Dacă toate costurile unitare din problema de transport sunt întregi,<br />
atunci, dând o valoare întreagă la un multiplicator oarecare, multiplicatorii<br />
simplex<br />
asociaţi cu orice bază sunt întregi.<br />
Dacă multiplicatorii simplex sunt cunoscuţi, coeficienţii costurilor relative<br />
pentru<br />
variabilele nebazice pot fi calculaţi cu relaţiile<br />
α ′ S = λS − c′<br />
S .<br />
În acest caz coeficienţii costurilor relative sunt<br />
α = + v − c , ∀ i = 1,<br />
m , ∀ j = 1,<br />
.<br />
ij<br />
ui j ij<br />
( ) ( ) n<br />
Pentru variabilele bazice α = 0 . Dată o bază, calculul multiplicatorilor<br />
ij<br />
simplex este asemănător cu calculul variabilelor de bază.<br />
Conform cu algoritmul simplex general, dacă o variabilă nebazică are un<br />
coeficient de cost relativ pozitiv, atunci acea variabilă este candidată să intre în<br />
bază. Cum valoarea acestei variabile este crescătoare, valorile variabilelor de bază<br />
curente vor fi schimbate astfel încât să se menţină<br />
admisibilitatea soluţiei. Valoarea<br />
noii variabile va creşte exact până la valoarea pentru care vechea variabilă de bază<br />
devine zero.<br />
Dacă noul vector de bază este d , atu nci schimbarea în celelalte variabile de<br />
bază este dat ă de B d , unde B este baza curentă. Din nou avem de-a face cu<br />
o problemă de rez are a unu istem b ă triunghiulară n nou soluţia are<br />
proprietăţi special<br />
1 −<br />
−<br />
olv i s cu az şi di<br />
e.<br />
Teorema 5.4. Fie B o bază extrasă din A (după ignorarea unei linii) şi fie d o<br />
coloană a lui A care nu este inclusă în B. Atunci, componentele vectorului<br />
−1<br />
y = B d sunt fie − 1 , 0 sau +1.<br />
Demonstraţie. Fie y soluţia sistemului<br />
By=d. Atunci, y este reprezentarea lui d<br />
în baza B . Acest sistem de ecuaţii poate fi rezolvat cu regula lui Cramer<br />
det Bk<br />
y k = ,<br />
det B<br />
unde Bk este matricea obţinută prin înlocuirea în matricea B a coloanei k cu<br />
coloana d . Atât B cât şi Bk sunt submatrice ale lui A. Matricea B poate fi<br />
pusă sub forma triunghiulară cu toate elementele diagonalei egale cu +1. Atunci,<br />
detB=+1 sau − 1,<br />
după cum liniile sau coloanele au fost permutate. Analog<br />
detB k=+1<br />
, 0 sau −1<br />
. Concluzionăm că fiecare componentă a lui y este fie 0, +1<br />
sau − 1 . <br />
Din Teorema 5.4 rezultă că atunci când o nouă variabilă este adăugată la<br />
soluţie la un nivel unitar, variabilele de bază curente se vor schimba cu +1, −1<br />
sau<br />
0. Dacă noua variabilă are valoarea θ , atunci, corespunzător, variabilele de bază<br />
se vor schimba cu +θ, −θ, sau 0. Este, aşadar, necesar să determinăm semnul<br />
schimbării fiecărei variabile de bază.
5. Problema de transport 107<br />
Determinarea acestor semne se face prin parcurgerea tabelului de trasport. Se<br />
atribuie un semn + celulei corespunzătoare variabilei care intră în bază,<br />
reprezentând o schimbare cu +θ, unde θ nu este încă determinat. Atunci,<br />
plusurile, minusurile şi zerourile sunt atribuite unul câte unul celulelor anumitor<br />
variabile de bază, indicând schimbări cu +θ, −θ, sau 0 ca să se menţină soluţia<br />
admisibilă. La fiecare pas, există o relaţie B d , care determină în mod unic<br />
semnul care va fi atribuit celorlalte variabile de bază. Rezultatul va fi o succesiune<br />
de plusuri şi minusuri atribuite celulelor care formează un ciclu iniţiat de celula<br />
variabilei care va intra în bază. De fapt, noua schimbare este o parte a unui ciclu de<br />
distribuire a fluxului mărfii în sistemul de transport. După ce succesiunea de<br />
ă, se obţine o nouă soluţie admisibilă<br />
aloarea 0. Se examinează variabilele<br />
cărora l rilor acestor<br />
variabil loare se adaugă<br />
celulelo zultatul va fi<br />
o nouă s<br />
1 −<br />
−<br />
re<br />
plusuri, minusuri şi zerouri a fost determinat<br />
prin modificarea nivelului variabilelor cu +θ, −θ, sau 0. θ trebuie determinat<br />
asfel încât vechea variabilă de bază să ia v<br />
i s-a atribuit semnul minus pentru a determina minimul valo<br />
e, iar valoarea găsită va fi atribuită lui θ. Această va<br />
r care au semnul plus şi se scade din cele cu semnul minus. Re<br />
oluţie admisibilă.<br />
5.2. Enunţul algoritmului de transport<br />
Pe baza rezultatelor de mai sus, se poate enunţa algoritmul<br />
de transport sub<br />
următoarea form ă.<br />
Pas 0. Se determină o soluţie de bază admisibil ă , corespunzătoare bazei B,<br />
formată cu m+n−1 coloane liniar independente din matricea A şi fie B<br />
mulţimea celulelor de bază;<br />
Pas 1. Se rezolvă sistemul de ecuaţii<br />
+ v = c , ∀ ( i,<br />
j)<br />
∈ .<br />
ui j ij<br />
xij<br />
( ) B<br />
Se obţine o soluţie particulară luând vn=0 şi se calculează<br />
pentru această<br />
soluţie coeficienţii de cost redus,<br />
α = + − c , ∀ ( i,<br />
j)<br />
∈ ,<br />
ij u i v j ij ( ) S<br />
S fiind mulţimea celulelor corespunzătoare coloanelor matricei A care nu<br />
se află în B (celule secundare).<br />
Dacă α ij ≤ 0 pentru ( ∀ ) ( i , j)<br />
∈S<br />
, atunci soluţia de bază x ij este<br />
optimă. Stop!<br />
Altfel, se determină ( s,<br />
k)<br />
∈S<br />
, luând drept criteriu de intrare în bază<br />
{ α ( ∀)(<br />
i,<br />
) ∈ }<br />
α = max j S .<br />
sk<br />
ij<br />
Pas 2. Se determină ciclul format de ( s , k)<br />
∈S<br />
cu o parte din celulele lui B şi<br />
se numerotează celulele alegând un sens de parcurgere a ciclului.
108<br />
Modele şi algoritmi de optimizare<br />
Se determină celula ( r , t)<br />
∈B<br />
care va ieşi din bază , luând drept criteriu<br />
min ij<br />
de ieşire din bază { x }<br />
x = , minimul fiind luat după toate celulele<br />
rt<br />
de ordin par din ciclul determinat mai sus.<br />
Pas 3. Se formează, pornind de la baza B, baza B ~ , prin înlocuirea coloanei a<br />
cu coloana ask . Se determină soluţia de bază admisibilă x~<br />
corespunzătoare bazei B ~ , folosind pentru schimbarea bazei formulele:<br />
⎧xij − xrt<br />
dacã<br />
( i,j)<br />
este de rang par în ciclu<br />
~ ⎪<br />
xij<br />
= ⎨ xij<br />
+ xrt<br />
dacã<br />
( i,j)<br />
este de rang impar în ciclu<br />
⎪<br />
⎩<br />
xij<br />
dacã<br />
( i,j)<br />
nu face parte din ciclu<br />
Se înlocuieşte B cu B ~ , ij x ij x~ cu şi se trece la Pas 1.<br />
5.3. Determinarea soluţiei iniţiale de bază<br />
Algoritmul prezentat mai înainte necesită la pornire un program de bază iniţial.<br />
Metoda generală de obţinere a acestui program este următoarea (Maliţa şi<br />
Zidăroiu, 1971):<br />
a) Se dă unei variabile de bază oarecare xij valoarea<br />
x = min a , b .<br />
b) Se înlocuiesc ai şi bj cu i xij<br />
ij<br />
1≤l<br />
≤m<br />
1≤k<br />
≤n<br />
{ }<br />
l<br />
a − şi respectiv cu j xij<br />
k<br />
b − şi se suprimă linia<br />
i , dacă ij x = ai , sau coloana j , dacă ij x =bj . Dacă ai=bj se suprimă fie<br />
linia i , fie coloana j .<br />
c) Se repetă operaţiile de la a) şi b) până când toate cererile sunt satisfăcute.<br />
Să demonstrăm că algoritmul de mai sus produce o soluţie de bază. De fiecare<br />
dată când apare un xij>0 se suprimă o linie şi/sau o coloană. La sfârşit, vor rămâne<br />
o coloană şi o linie nesuprimate. Până în acest moment au fost suprimate m+n−2<br />
linii şi coloane. Cantitatea rămasă în linia nesuprimată este egală cu cantitatea<br />
rămasă în coloana nesuprimată, aşa cum rezultă din condiţia de echilibru.<br />
Satisfăcând şi ultima linie, se obţine o nouă variabilă xij>0 , adică sunt cel mult<br />
m+n−1 variabile xij>0.<br />
Există diferite metode de determinare a programului de bază iniţial obţinute din<br />
metoda generală prezentată mai sus, după cum se particularizează xij cu care se<br />
începe metoda, cum ar fi de exemplu: metoda colţului nord-vest a lui G. B. Dantzig<br />
(se selectează celula (<br />
i,j) situată în prima linie şi prima coloană) şi metoda<br />
rt<br />
ij
5. Problema de transport 109<br />
costului minim a lui H. S. Houthakker (se selectează la fiecare pas celula (i,j)<br />
corespunzătoare costului m inim cij ).<br />
enea<br />
amplasate în diferite locuri. Prin contract, prima staţie de betoane asigură 10 m 3 , a<br />
doua 15 m 3 , iar a treia 25 m 3 . Necesarul<br />
de 5 m 3 pentru primul, 10 m 3 pentru al 20 şi 15 m 3<br />
pentru al patrulea. Preţul de transport pentru 1 m 3 O întreprindere de construcţii are în lucru 4 blocuri de locuinţe în diferite locuri<br />
în oraş şi se aprovizionează cu mortar de la 3 staţii de betoane de asem<br />
zilnic de mortar pentru fiecare bloc este<br />
doilea, m<br />
de la o staţie de betoane la un<br />
bloc este dat de Tabelul 5.1.<br />
3 pentru al treilea<br />
Staţie<br />
betoane<br />
Bloc<br />
5.4. Exemplu<br />
Tabelul 5.1<br />
B1 B2 B3 B4 Disponibil ( ai )<br />
S1 8 3 5 2 10<br />
S2 4 1 6 7 15<br />
S3 1 9 4 3 25<br />
Necesar (bj) 5 10 20 15<br />
Să se găsească un plan de transport care să determine cantităţile zilnice xij de<br />
mortar ce trebuie aduse de la staţia de betoane i la blocul j, astfel încât<br />
cheltuielile de transport să fie minime.<br />
Rezolvare<br />
a) Modelarea problemei<br />
3 4<br />
multiplicatorii⎧<br />
⎪min∑∑cij<br />
xij<br />
simplex<br />
i= 1 j=<br />
1 ⎪<br />
u → ⎪x11<br />
+ x12<br />
+ x13<br />
+ x = 10<br />
1<br />
14<br />
u → ⎪x21<br />
+ x22<br />
+ x23<br />
+ x = 15<br />
2<br />
24<br />
⎪<br />
u → ⎪x31<br />
+ x32<br />
+ x33<br />
+ x = 25<br />
3<br />
34<br />
v →<br />
⎨x11<br />
+ x21<br />
+ x31<br />
= 5<br />
1 ⎪<br />
v → ⎪x12<br />
+ x22<br />
+ x32<br />
= 10<br />
2<br />
⎪<br />
v → ⎪<br />
x + x + x33<br />
= 20<br />
3<br />
13 23<br />
v → ⎪x14<br />
+ x24<br />
+ x34<br />
= 15<br />
4<br />
⎪<br />
⎩xij<br />
≥<br />
0 , 1≤<br />
i ≤ 3 , 1≤<br />
j ≤ 4
110<br />
Matricea restricţiilor<br />
⎛1<br />
⎜<br />
⎜0<br />
⎜0 ⎜<br />
A = ⎜1<br />
⎜<br />
⎜<br />
0<br />
⎜0<br />
⎜<br />
⎝0<br />
1<br />
0<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
0<br />
0<br />
1<br />
0<br />
1<br />
0<br />
0<br />
0<br />
0<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
0<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
0<br />
1<br />
0<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
1<br />
0<br />
0<br />
0<br />
0<br />
0<br />
1<br />
0<br />
1<br />
0<br />
0<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0⎞<br />
⎟<br />
0⎟<br />
1⎟<br />
⎟<br />
0⎟<br />
⎟<br />
0<br />
⎟<br />
0⎟<br />
⎟<br />
1⎠<br />
Modele şi algoritmi de optimizare<br />
b) Determinarea unei soluţii iniţiale de bază<br />
Determinarea soluţiei iniţiale de bază se face cu metoda colţului nord-vest, pornind<br />
de la Tabelul 5.1, obţinându-se Tabelul 5.2.<br />
min {a1,b1}= min {10,5}=5=b1 , x11=5 se suprimă coloana 1<br />
min {a1,b2}= min {5,10}=5=a1 , x12=5 se suprimă linia 1<br />
min {a2,b2}= min {10,5}=5=b2 , x22=5 se suprimă coloana 2<br />
min {a2,b3}= min {10,20}=10=a2 , x23=100 se suprimă linia 2<br />
min {a3,b3}= min {25,10}=10=b3 , x33=10 se suprimă coloana 3<br />
min {a3,b4}= min {15,15}=15=b4 , x34=15 se suprimă linia 3 şi coloana 4<br />
Staţie<br />
betoane<br />
Bloc<br />
Tabelul 5.2<br />
B1 B2 B3 B4 Disponibil( ai )<br />
S1 5 5 10 5<br />
S2 5 10 15 10<br />
S3 10 15 25 15<br />
Necesar (bj) 5 10 5 20 10 15<br />
Mulţimea celulelor de bază este următoarea<br />
B= { ( 1 , 1)<br />
, ( 1,<br />
2)<br />
, ( 2,<br />
2)<br />
, ( 2,<br />
3)<br />
, ( 3,<br />
3)<br />
, ( 3,<br />
4)<br />
} .<br />
Valoarea funcţiei obiectiv pentru baza dată de metoda colţului nord-vest este<br />
f=5⋅8+5⋅3+5⋅1+10⋅6+10⋅4+15⋅3=205<br />
după cum rezultă din Tabelul 5.3.<br />
Tabelul 5.3<br />
8 3 5 2<br />
5 5<br />
4 1<br />
6<br />
7<br />
5<br />
10<br />
1 9 4<br />
3<br />
10 15<br />
În Tabelul 5.3 celulele cu diagonală sunt celulele de bază. Matricea bazei<br />
corespunzătoare este<br />
x11 x12 x22 x23 x33 x34
5. Problema de transport 111<br />
⎛1<br />
⎜<br />
⎜0<br />
⎜0<br />
B = ⎜<br />
⎜1<br />
⎜<br />
⎜<br />
0<br />
⎜<br />
⎝0<br />
1<br />
0<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
1<br />
0⎞<br />
⎟<br />
0⎟<br />
1⎟<br />
⎟<br />
0⎟<br />
⎟<br />
0<br />
⎟<br />
0⎟<br />
⎠<br />
c) Algoritmul de transport<br />
Iteraţia I<br />
Pas 1. Începem algoritmul cu soluţia de bază<br />
obţinută în etapa precedentă. Se<br />
consideră v 4=0<br />
şi se rezolvă sistemul<br />
λ′ B = c′<br />
B<br />
T −1<br />
⇒ λ = ( B ) c B , unde c′ B =(8 3 1 6 4 3)’ ,<br />
rezultând ( ) ( ) ′<br />
λ ′ = u u u v v<br />
′<br />
v = 7 5 3 1 − 4 1 .<br />
1<br />
2<br />
3<br />
1<br />
2<br />
3<br />
Obţinem pentru celulele nebazice coeficienţii de cost redus, α ij = ui + v j − cij<br />
,<br />
( ∀ ) ( i,<br />
j)<br />
∈S<br />
valorile:<br />
α13=u1+v3−c13=7+1−5=3; α14=u1+v4−c14=0+7−2=5; α21=u2+v1−c21=−5+1−4=2;<br />
α24=u2+v4−c24=5−7=−2; α 31=u 3+v1−c31=3+1−1=3; α32=u3+v2−c32=3−4−9=−10.<br />
Cum nu toţi α ≤ 0 , ( ∀ ) ( i , j)<br />
∈S<br />
, continuăm cu determinarea celulei care intră în<br />
bază α = α ( i,j)<br />
sk<br />
ij<br />
{ ∈S<br />
}<br />
α<br />
max ij = 14<br />
α ij ≥0<br />
= 5<br />
Intră în bază celula (1,4) . Vectorul d corespunzător este d’=(1 0 0 0 0 0)’ .<br />
Pas 2. Se determină ciclul iniţiat de celula (1,4)<br />
y<br />
= −<br />
B<br />
−1<br />
d<br />
= −<br />
B<br />
1 =<br />
.<br />
x11 x12 x22 x23 x33 x34<br />
1(<br />
1 0 0 0 0<br />
′<br />
0)<br />
= ( 0 −1<br />
1 −1<br />
1<br />
′<br />
−1)<br />
( 1,<br />
4)<br />
, ( 1,<br />
2)<br />
, ( 2,<br />
2)<br />
, ( 2,<br />
3)<br />
, ( 3,3)<br />
, ( 3,4)<br />
, ( 1,<br />
4)<br />
−<br />
{ }<br />
C .<br />
Se determină celula care iese din baza B 1 cu criteriul<br />
=<br />
x<br />
( i,<br />
j ) ∈{<br />
( 1,<br />
2)<br />
, ( 2,<br />
3)<br />
, ( 3,<br />
4)<br />
}<br />
{ }<br />
min xi = x<br />
0 jo<br />
ij 12<br />
(minimul s-a luat după toate celulele de ordin par (poziţiile cu semn minus) din<br />
ciclul C1) .<br />
~<br />
Pas 3. Aşadar, iese din bază celula (1,2) şi se obţine baza B 1 cu celulele:<br />
~ 1<br />
5 =<br />
{ ( 1,<br />
1)<br />
, ( 1,<br />
4)<br />
, ( 2,<br />
2)<br />
, ( 2,<br />
3)<br />
, ( 3,<br />
3)<br />
, ( 3,<br />
4)<br />
}<br />
B =<br />
.<br />
Se calculează<br />
⎧xij<br />
− xrt<br />
~ ⎪<br />
xij<br />
= ⎨xij<br />
+ xrt<br />
⎪<br />
⎩<br />
xij<br />
şi se trec în Tabelul 5.4<br />
dacã<br />
celula ( i,j)<br />
este de rang par în ciclul C1<br />
, semnul −<br />
dacã<br />
celula ( i,j)<br />
este de rang impar în ciclul C1<br />
, semnul<br />
dacã<br />
celula ( i,j)<br />
∉ C1<br />
+
112<br />
5+0<br />
8<br />
Tabelul 5.4<br />
3<br />
5 2<br />
5−5<br />
5<br />
4 1<br />
6<br />
7<br />
5+5 10−5<br />
1 9 4<br />
3<br />
10+5 15−5<br />
Modele şi algoritmi de optimizare<br />
Valoarea funcţiei obiectiv f=5⋅8+5⋅2+10⋅1+ 5⋅6+15⋅4+10⋅3=180 .<br />
Iteraţia a II−a<br />
Pas 1. Considerând din nou v4=0 se rezolvă sistemul<br />
~<br />
~ T −1<br />
λ ′ B = c′<br />
~ ⇒ λ = ( B c ~ , unde c′ ~ =(8 2 1 6 4 3)’<br />
1<br />
B1<br />
1 )<br />
B1<br />
′<br />
′<br />
( u u u v v v ) = ( 2 5 3 6 − 4 )<br />
λ ′ =<br />
1 ,<br />
1<br />
2<br />
3<br />
1<br />
2<br />
şi obţinem pentru celulele nebazice coeficienţii de cost redus,<br />
α12=u1+v2−c12=2−4−3=−5; α13=u1+ v3−c13 =2+1−5=−2; α21=u2+ v1−c21=5+6−4=7<br />
α24=u2+ v4−c24=5−7=−2; α 31=u 3+v1−c 31=3+6−1=8;<br />
α32= u3+v2−c32=3−4−9=−10. Deoarece nu toţi αij ≤ 0 , ( ∀) ( i, j)<br />
∈S<br />
1 , continuăm<br />
cu determinarea celulei care<br />
{ ( ) } ∈ α S<br />
intră în bază α = i,j<br />
sk<br />
max<br />
αij ≥0<br />
ij<br />
1<br />
= α<br />
Intră în bază celula (3,1) . Vectorul d corespunzător este d<br />
Pas 2. Se determină ciclul<br />
iniţiat de celula (3,1)<br />
=(0 0 1 1 0 0)’ .<br />
x11 x14 x22 x23<br />
x33 x34<br />
−1<br />
y = −B<br />
d<br />
−1<br />
= −B<br />
0 0 1 1 0<br />
′<br />
0 = −1<br />
1 0 0 0 −1<br />
1<br />
1<br />
1<br />
3<br />
31 =<br />
8<br />
.<br />
B1<br />
( ) ( ′ )<br />
= ( 3,<br />
1)<br />
, ( 1,<br />
1)<br />
, ( 1,<br />
4)<br />
, ( 3,<br />
4)<br />
, ( 3,<br />
1)<br />
{ }<br />
C 2<br />
~<br />
Se determină celula care iese din baza B 1 cu criteriul<br />
.<br />
5<br />
=<br />
x = x =<br />
( i,<br />
j ) ∈{<br />
( 1,<br />
1)<br />
, ( 3,<br />
4)<br />
}<br />
{ }<br />
min xi 0 j0<br />
ij 11<br />
(minimul s-a luat după<br />
toate celulele de ordin par din ciclul C2) .<br />
~<br />
Pas 3. Acum iese din bază celula (1,1) şi se obţine baza B 2 cu celulele:<br />
~ 2<br />
{ ( 3, 1)<br />
, ( 1,<br />
4)<br />
, ( 2,<br />
2)<br />
, ( 2,<br />
3)<br />
, ( 3,<br />
3)<br />
, ( 3,<br />
4)<br />
}<br />
B = .<br />
Se calculează<br />
⎧xij − xrt ~ ⎪<br />
xij = ⎨ xij<br />
+ xrt<br />
⎪<br />
⎩<br />
xij şi se tre c în Tabelul 5.5.<br />
dacã<br />
celula ( i, j)<br />
este<br />
de rang<br />
par în<br />
ciclul<br />
C2<br />
dacã<br />
celula ( i,j)<br />
este<br />
de rang impar<br />
în ciclul<br />
C<br />
dacã<br />
celula ( i,j)∉C2<br />
Tabelul 5.5<br />
8<br />
3 5 2<br />
5−5<br />
5+5<br />
4 1 6 7<br />
1 ′<br />
2
5. Problema de transport 113<br />
5<br />
1<br />
10<br />
5<br />
9 4<br />
15 10−5<br />
Valoarea funcţiei obiectiv f=10⋅2+ 10⋅1+5⋅6+5⋅1+15⋅4+5⋅3=140<br />
.<br />
Iteraţia a III−a<br />
Pas 1. Din nou luăm v4=0 şi rezolvăm sistemul<br />
~<br />
~ T −1<br />
λ ′ B = c′ ~ ⇒ λ = ( B ) c ~ , un c′ =(1 2 1 6 4 3)’<br />
2<br />
B1<br />
2<br />
B21<br />
de ~<br />
B1<br />
′<br />
′<br />
λ ′ = ( u1<br />
u2<br />
u3<br />
v1<br />
v2<br />
v3<br />
) = ( 2 5 3 − 2 − 4 1)<br />
,<br />
şi obţinem<br />
pentru celulele nebazice coeficienţii de cost redus,<br />
α11=u1+v1−c11=2−2−8= −8; α12=u1+v2−c12=2−4− 3=−5; α31=u3+v1−c31=2+ 1−5= −2;<br />
α21=u2+ v1−c21=5−2−4= −1; α 24=u 2+v4−c24=5−7=<br />
−2; α32=u3+v2 −c32=3−4−9=−10.<br />
Deoarece αij ≤ 0 , ( ∀) ( i, j)<br />
∈S<br />
2 , soluţia<br />
x14=10 , x22 =10 , x23=5 , x31=5 ,<br />
x33 =15 , x34=5 este optimă, dă pentru funcţia obiectiv valoarea f=140 şi algoritmul<br />
se opreşte.<br />
Rezolvăm această problemă şi cu ajutorul pachetului de programe<br />
Management<br />
Scientist. După lansarea pachetului de programe alegem modulul<br />
Transportation<br />
din fereastra prezentată în Figura 2.4. Din fereastra care apare se selecteză din<br />
submeniul File, New – pentru crearea unei noi probleme<br />
de transport, se introduc<br />
numărul de depozite şi număr ul de centre de consum, apo i costurile unitare de<br />
transport ca în Figura 5.1.<br />
Figura 5.1<br />
Pentru rezolvarea problemei, din submeniul Solution se selectează<br />
Solve, se<br />
alege din fereastra Select Optimization Criteria, Maximization Objective . Se<br />
afişează fereastra cu rezultatele problemei. Rezultatele<br />
obţinute, aşa cum se văd în<br />
Figura 5.2, coincid cu cele obţinute aplicând algoritmul<br />
de transport.<br />
3
114<br />
Figura 5.2<br />
Modele şi algoritmi de optimizare<br />
Să rezolvăm aceeaşi problemă<br />
utilizând Solver-ul din Excel. Pentru aceasta<br />
creăm foaia de calcul cu datele de intrare ca în Figur ă 5.3, efectuând paşii descrişi<br />
în continuare.<br />
Figura 5.3<br />
În celula D3 introducem funcţia de optimiz at D3 = C7*B13+ C8*B 14+
5. Problema de transport 115<br />
C9*B15+D7*D13+D8*D14+D9*D15+ E7* F13+E8* F14+ E 9*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 restr icţiile proble mei conform cu<br />
comentariile din celulele A18−A24,<br />
apoi se adaugă condiţiile<br />
de nenegativitate. De<br />
exemplu,<br />
celula<br />
B18 conţine =B13+ D13+ F13+ H13, având<br />
în vedere cum sunt<br />
introduse<br />
datele problemei. Analog celelalte celule (B19−B24). După apăsarea<br />
butonului Solve se obţin rezultatele problemei şi rapoartele ca în Tabelele 5.6−5.8.<br />
Remarcăm că rezultatele sunt aceleaşi cu cele obţinute cu Management Scientist. .........<br />
Cell Name<br />
Tabelul 5.6<br />
Microsoft Excel 10.0 Answer Report<br />
Worksheet: [Problema de transport.xls]Sheet1<br />
Report Created: 6/24/2002 11:39:27 PM<br />
Target Cell (Min)<br />
Original<br />
Value<br />
Final<br />
Value<br />
$C$3 Functia de optimizat 140 140<br />
Cell Name<br />
Adjustable Cells<br />
Original<br />
Value<br />
Final<br />
Value<br />
$B$15 Solutia problemei 0 0<br />
$C$15 B2 0 0<br />
$D$15 B3 0 0<br />
$E$15 B4 10 10<br />
$B$16 Solutia problemei 0 0<br />
$C$16 B2 10 10<br />
$D$16 B3 5 5<br />
$E$16 B4 0 0<br />
$B$17 Solutia problemei 5 5<br />
$C$17 B2 0 0<br />
$D$17 B3 15 15<br />
$E$17 B4 5 5<br />
Constraints<br />
Cell Name Cell Value Formula Status Slack<br />
$B$23 Restrictiile problemei 10 $B$23=$F$7 Not Binding 0<br />
$B$24 Restrictiile problemei 15 $B$24=$F$8 Not Binding 0<br />
$B$25 Restrictiile problemei 25 $B$25=$F$9 Not Binding 0<br />
$B$26 Restrictiile problemei 5 $B$26=$B$10 Not Binding 0<br />
$B$27 Restrictiile problemei 10 $B$27=$C$10 Not Binding 0<br />
$B$28 Restrictiile problemei 20 $B$28=$D$10 Not Binding 0
116<br />
Modele şi algoritmi de optimizare<br />
$B$29 Restrictiile problemei 15 $B$29=$E$10 Not Binding 0<br />
$B$15 Solutia problemei 0 $B$15>=0 Binding 0<br />
$C$15 B2 0 $C$15>=0 Binding 0<br />
$D$15 B3 0 $D$15>=0 Binding 0<br />
$E$15 B4 10 $E$15>=0 Not Binding 10<br />
$B$16 Solutia problemei 0 $B$16>=0 Binding 0<br />
$C$16 B2 10 $C$16>=0 Not Binding 10<br />
$D$16 B3 5 $D$16>=0 Not Binding 5<br />
$E$16 B4 0 $E$16>=0 Binding 0<br />
$B$17 Solutia problemei 5 $B$17>=0 Not Binding 5<br />
$C$17 B2 0 $C$17>=0 Binding 0<br />
$D$17 B3 15 $D$17>=0 Not Binding 15<br />
$E$17 B4 5 $E$17>=0 Not Binding 5<br />
Tabelul 5.7<br />
Microsoft Excel 10.0 Sensitivity Report<br />
Worksheet: [Problema de transport.xls]Sheet1<br />
Report Created: 7/10/2002 11:30:45 PM<br />
Adjustable Cells<br />
Final Reduced Objective Allowable Allowable<br />
Cell Name<br />
x11= Solutia<br />
Value Cost Coefficient Increase Decrease<br />
$B$13 problemei<br />
x21= Solutia<br />
0 8 8 1E+30 8<br />
$B$14 problemei<br />
x31= Solutia<br />
0 1.00 4.00 1E+30 1.00<br />
$B$15 problemei 5 0 1 1.00 1E+30<br />
$D$13 x12= B2 0 5 3 1E+30 5<br />
$D$14 x22= B2 10 0 1 5 1E+30<br />
$D$15 x32= B2 0 10 9 1E+30 10<br />
$F$13 x13= B4 0 2 5 1E+30 2<br />
$F$14 x23= B4 5 0 6 1.00 5<br />
$F$15 x33= B4 15 0 4 2 1.00<br />
$H$13 X14= 10 0 2 2 1E+30<br />
$H$14 X24= 0 2 7 1E+30 2<br />
$H$15 X34= 5 0 3 2 2<br />
Constraints<br />
Final Shadow Constraint Allowable Allowable<br />
Cell Name<br />
x11+x12+x13+x14=<br />
Restrictiile<br />
Value Price R.H. Side Increase Decrease<br />
$B$18 problemei 10 −3<br />
10 5 0
5. Problema de transport 117<br />
$B$19<br />
$B$20<br />
$B$21<br />
$B$22<br />
$B$23<br />
$B$24<br />
x21+x22+x23+x24=<br />
Restrictiile<br />
problemei<br />
x31+x32+x33+x34=<br />
Restrictiile<br />
15 0 15 0 1E+30<br />
problemei<br />
x11+x21+x31=<br />
Restrictiile<br />
25 −2 25 5 0<br />
problemei<br />
x12+x22+x32=<br />
Restrictiile<br />
5 3 5 0 5<br />
problemei<br />
x13+x23+x33=<br />
Restrictiile<br />
10 1 10 0 10<br />
problemei<br />
x14+x24+x34=<br />
Restrictiile<br />
20 6 20 0 5<br />
problemei 15 5 15 0 5<br />
Tabelul 5.8<br />
Microsoft Excel 10.0 Limits<br />
Report<br />
Worksheet: [Problema de transport.xls]Limits<br />
Report 1<br />
Target<br />
Cell Name Value<br />
$D$3 Functia de optimizat 140<br />
Re port C reated: 7/11/2002 8:23:41 AM<br />
Adjustable Lower Target Upper Target<br />
Cell Name Value Limit Result Limit Result<br />
$B$13<br />
x11= Solutia<br />
problemei<br />
x21= Solutia<br />
0 0 140 0 140<br />
$B$14 problemei<br />
x31= Solutia<br />
0 0 140 0 140<br />
$B$15 problemei 5 5 140 5 140<br />
$D$13 x12= B2 0 0 140 0 140<br />
$D$14 x22= B2 10 10 140 10 140<br />
$D$15 x32= B2 0 0 140 0 140<br />
$F$13 x13= B4 0 0 140 0 140<br />
$F$14 x23= B4 5 5 140 5 140
118<br />
Modele şi algoritmi de optimizare<br />
$F$15 x33= B4 15 15 140 15 140<br />
$H$13 x14= 10 10 140 10 140<br />
$H$14 x24= 0 0 140 0 140<br />
$H$15 x34= 5 5<br />
140 5 140
5. Problema de transport 119<br />
5.5. Problema atribuirii sarcinilor<br />
Să se determine atribuirea optimă a n sarcini la n specialişti ştiind că:<br />
• unui specialist i se atribuie o singură sarcină,<br />
• sarcina este executată de un singur specialist, iar<br />
• profitul executării sarcinii j de către specialistul i este cij .<br />
Atribuirea este optimă dacă profitul obţinut este maxim (Luenberger, 1989).<br />
Trebuie să determinăm xij , i = 1 , n , j = 1,<br />
n astfel încât<br />
n n ⎧<br />
⎪max∑∑cij xij<br />
j=<br />
1 1=<br />
1 ⎪<br />
n<br />
⎪<br />
∑ xij<br />
= 1,<br />
i = 1,<br />
n<br />
⎨ j=<br />
⎪ n<br />
⎪∑<br />
xij<br />
= 1,<br />
j = 1,<br />
n<br />
⎪ j=<br />
1<br />
⎪<br />
⎩xij<br />
≥ 0 , i = 1,<br />
n , i = 1,<br />
n<br />
În această formulare fiecare variabilă xij trebuie să ia numai valorile 0 sau 1 .<br />
1 (5.1)<br />
Teorema 5.5. Orice soluţie de bază admisibilă pentru problema de atribuire (5.1)<br />
are toate componentele, xij , egale fie cu 0, fie cu 1.<br />
Demonstraţie. Din corolarul 5.1 toate variabilele de bază în orice soluţie de bază<br />
sunt întregi. Variabilele xij nu pot fi mai mari decât 1 şi cum sunt nenegative, nu<br />
pot lua decât valorile 0 sau 1 . <br />
Astfel, sunt cel mult n variabile de bază care au valoarea 1, deoarece există<br />
cel mult un singur 1 pe fiecare linie şi fiecare coloană. Într-o problemă de transport<br />
de această dimensiune o soluţie de bază nedegenerată ar avea 2n−1 componente<br />
pozitive. Problema atribuirii sarcinilor are soluţia admisibilă de bază puternic<br />
degenerată având n−1 componente de bază nule.<br />
Pentru rezolvarea problemei de atribuire se poate folosi algoritmul de transport<br />
sau algoritmul primal−dual pentru problema de programare liniară.<br />
5.6. Probleme propuse<br />
1. Trei staţii de betoane, Si, se aprovizionează cu ciment de la trei rampe de<br />
descărcare, Ri . Cantităţile necesare fiecărei staţii şi cele oferite de fiecare rampă de<br />
descărcare, precum şi costurile de transport de la fiecare rampă la fiecare staţie de<br />
betoane sunt trecute în Tabelul 5.9 .<br />
Tabelul 5.9
120<br />
Rampă<br />
Staţie<br />
Costuri (u.m.) Ofertă<br />
S1 S2 S3 (tone)<br />
R1 7 2 5 17<br />
R2 3 6 3 21<br />
R3 4 5 6 23<br />
Necesar<br />
(tone)<br />
19 28 14<br />
Modele şi algoritmi de optimizare<br />
Să se precizeze planul de transport care să conducă la costul minim de transport şi<br />
cât este acest cost.<br />
R. Transportând de la R1 pentru S2 17 tone, de la R2 pentru S1 7 tone şi pentru<br />
S3 14 tone, de la R3 pentru S1 12 tone şi pentru S2 11 tone, se obţine costul<br />
minim Cmin=200 u.m.<br />
2. O firmă textilă are două fabrici, doi furnizori de materii prime şi trei centre de<br />
desfacere. Costurile de transport pentru o tonă de încărcătură între furnizor şi<br />
fabrici şi între fabrici şi centrele de desfacere sunt date în Tabelul 5.10 .<br />
Tabelul 5.10<br />
Fabrică<br />
Centru de<br />
A B<br />
desfacere 1 2 3<br />
Furnizor<br />
Fabrică<br />
1 1 1.5 A 4 2 1<br />
2 2 1.5 B 3 4 2<br />
Sunt disponibile 10 tone de la furnizorul 1 şi 15 tone de la furnizorul 2. Cele trei<br />
centre de desfacere necesită 8, 14 respectiv 3 tone de produse finite. Cele două<br />
fabrici au capacitate de producţie nelimitată.<br />
a) Să se reducă problema la o problemă de transport cu două surse şi trei destinaţii<br />
şi să se determine un plan de transport care să minimizeze cheltuielile totale.<br />
b) Dacă fabrica A are o capacitate de producţie de 8 tone şi fabrica B de 7 tone, să<br />
se descompună problema în două probleme de transport şi să se rezolve.<br />
3. O firmă are nevoie să angajeze în trei posturi vacante trei persoane cu calificări<br />
diferite. Pentru aceste posturi sunt trei pretendenţi, fiecare putând ocupa oricare loc<br />
vacant cu acelaşi salariu, dar datorită deosebirii de aptitudini, studii şi experienţă,<br />
utilitatea fiecărui candidat pentru firmă depinde de postul pe care este angajat.<br />
Veniturile anuale ale firmei de pe urma<br />
fiecărui candidat, angajat pe unul din cele<br />
trei posturi vacante, sunt trecute în Tabelul 5.11.
5. Problema de transport 121<br />
Candidat<br />
Tabelul 5.11<br />
Funcţie<br />
1 2 3<br />
1 5 4 7<br />
2 6 7 3<br />
3 8 11 2<br />
Să se decidă cea mai bună repartizare pe funcţii a candidaţilor, astfel încât<br />
câştigurile<br />
firmei să fie maxime.<br />
R. Repartizând candidatul 1 pentru funcţia 3, candidatul<br />
2 pentru funcţia 1 şi<br />
candidatul<br />
3 pentru funcţia 2, firma obţine un câştig maxim de 24 .<br />
4. Un centru de proiectare are de realizat trei contracte pentru trei beneficiari (câte<br />
unul pentru fiecare beneficiar în parte) şi timpii necesari realizării acestor proiecte<br />
(în săptămâni) pentru cele trei echipe de proiectare sunt trecuţi în Tabelul 5.12.<br />
Tabelul 5.12<br />
Echipa de proiectare<br />
Client<br />
A B C<br />
1 10 15 9<br />
2 9 18 5<br />
3 6 14 3<br />
Dacă fiecărei echipe i se atribuie un singur proiect, care va fi cea mai eficientă<br />
atribuire în sensul celui mai mic număr de săptămâni necesare pentru realizarea<br />
celor trei proiecte?<br />
R. Echipei 1 i se va repartiza proiectul 2, echipei 2 i se va repartiza proiectul 3,<br />
echipei 3 i se va repartiza proiectul 1, iar timpul minim necesar realizării celor trei<br />
proiecte este de 26 săptămâni.<br />
5. O firmă care organizează mese festive trebuie să servească în fiecare seară câte<br />
un banchet, timp de 4 zile. Pentru fiecare zi i sunt necesare ri feţe de mese curate,<br />
r1=100 , r2=130 , r3=150 , r4=140 . Feţele de mese murdare se trimit la curăţătorie,<br />
care le poate spăla rapid (de pe o zi pe alta) cu un preţ c1=6 u.m., sau normal (la<br />
două zile), cu un preţ c2=4 u.m. Firma poate şi să cumpere feţe de mese la un preţ<br />
c0=12 . Stocul iniţial de feţe de mese este s=200. Să se determine costul minim<br />
pentru a asigura feţe de mese curate în fiecare seară.
6. PROGRAMARE PĂTRATICĂ<br />
6.1. Exemple de probleme car e conduc la programare pătratică<br />
6.1.1. Utilizarea optimă a resurselor<br />
Considerăm, ca şi în cazul programării liniare, că avem la dispoziţie m resurse<br />
în cantităţile bi , i = 1,<br />
m . Cu ajutorul acestor resurse se pot desfăşura n activităţi<br />
de producţie şi să notăm cu xj , j = 1 , n , nivelul fiecărei activităţi<br />
j. Fie aij<br />
cantitatea din resursa i necesară pentru producerea<br />
unei unităţi din produsul j, ci<br />
preţul de desfacere şi di costul de producţie.<br />
Se pune problema determinării unui program de lucru astfel încât profitul<br />
obţinut să fie maxim. Pentru a obţine profitul maxim trebuie ca toată producţia<br />
realizată să se vândă la preţurile c j , ceea ce este greu de acceptat. Este natural să<br />
presupunem că volumul de producţie xj care se vinde descreşte o dată cu creşterea<br />
preţului de vânzare yj , astfel:<br />
yj=βj−αj⋅ xj ( αj≥0 , βj≥0<br />
). (6.1)<br />
Dependenţa liniară a preţului yj de nivelul de producţie xj vândut este de<br />
asemenea o simplificare a realităţii, dar mai realistă<br />
decât faptul că preţurile j<br />
se obţine următorul model (Maliţa şi Zidăroiu, 1971):<br />
y<br />
nu depind de xj . Astfel<br />
⎧ ⎡ n<br />
n<br />
⎤<br />
2<br />
⎪max⎢−<br />
∑α<br />
j ⋅ x j + ∑ ( − d j + β j ) ⋅ x j ⎥ = f ( x)<br />
⎪ ⎣ j=<br />
1<br />
j=<br />
1<br />
⎦<br />
⎪ m<br />
⎨∑<br />
aij<br />
⋅ x j ≤ bi<br />
1≤<br />
i ≤ m<br />
(6.2)<br />
⎪ j=<br />
1<br />
⎪x<br />
j ≥ 0 j = 1,n<br />
⎪<br />
⎩<br />
Funcţia<br />
obiectiv a acestui model este o formă pătratică. Modelul (6.2) poate fi<br />
extins în sensul că şi costul unitar de producţie di<br />
poate depinde de nivelul de<br />
′<br />
producţie xj , astfel d = d − γ ⋅ x cu ≥ 0<br />
j<br />
j<br />
j<br />
j<br />
γ j , iar preţul unitar de vânzare yj<br />
depinde de volumul de producţie constituit din mai<br />
multe produse<br />
y<br />
j<br />
= β<br />
−<br />
j<br />
n<br />
∑<br />
k = 1<br />
α<br />
jk<br />
⋅ x<br />
k<br />
.
6. Programare pătratică 123<br />
6.1.2. Problema investiţiei<br />
Să presupunem că există mai multe domenii în care se pot face investiţii,<br />
anume D1, ..., Dn . Presupunem că investind suma xj în domeniul Dj se obţine un<br />
venit cj(xj) care depinde liniar de suma investită xj<br />
c = α + β ⋅ x .<br />
Să notăm cu f venitul total adus de planul de investiţii adoptat<br />
j<br />
n<br />
∑<br />
j=<br />
1<br />
j<br />
şi astfel se obţine modelul<br />
⎧ ⎡ n<br />
⎤<br />
⎪max⎢∑<br />
( α j + β j ⋅ x j ) ⋅ x j ⎥ = f ( x)<br />
⎪ ⎣ j=<br />
1<br />
⎦<br />
⎪ m<br />
⎨∑<br />
aij<br />
⋅ x j ≤ bi<br />
1≤<br />
i ≤ m<br />
(6.3)<br />
⎪ j=<br />
1<br />
⎪x<br />
j ≥ 0 j = 1,n<br />
⎪<br />
⎩<br />
Am obţinut din nou o problemă de optimizare în care funcţia obiectiv este o<br />
formă pătratică, iar restricţiile sunt liniare.<br />
j<br />
( α + ⋅ x )<br />
f ( x)<br />
= β<br />
j<br />
j<br />
j<br />
j<br />
⋅ x<br />
6.1.3. Regresii liniare<br />
Presupunem că avem o mărime y care depinde liniar de variabilele x1, ..., xn ,<br />
astfel<br />
y=a1⋅ x1+ ...+ an⋅ xn.<br />
Se pune problema estimării parametrilor a1, ..., an , presupunând cunoscute k<br />
observaţii asupra lui y şi xi , i = 1,<br />
m<br />
j j<br />
x1<br />
,..., xm<br />
, j = 1,k<br />
⎛<br />
⎞ j<br />
în sensul minimizării sumei pătratelor abaterilor ⎜<br />
⎟<br />
⎜<br />
y j − ∑ ai<br />
⋅ xi<br />
⎟<br />
eventual<br />
⎝<br />
⎠<br />
ponderat cu nişte factori b >0<br />
j<br />
m<br />
n ⎛<br />
j ⎞<br />
min∑bj⋅⎜yj−∑ai⋅xi⎟. j=<br />
1 ⎝ i=<br />
1 ⎠<br />
Asupra parametrilor a , ..., an se impun condiţii suplimentare, de tipul<br />
1<br />
n<br />
−<br />
+<br />
ai ≤ ai<br />
≤ ai<br />
sau ∑ α<br />
ri ⋅ ai<br />
≤ cr<br />
1≤<br />
r ≤ p .<br />
i=<br />
1<br />
j<br />
2
124<br />
Modele şi algoritmi de optimizare<br />
Se obţine din nou o problemă de programare cu funcţia obiectiv o formă<br />
pătratică şi cu restricţii liniare<br />
2<br />
⎧ m<br />
n ⎛<br />
j ⎞<br />
⎪min<br />
⎪ ∑bj⋅⎜yj−∑ai⋅xi⎟ j=<br />
1<br />
⎨<br />
⎝ i=<br />
1 ⎠<br />
.<br />
n<br />
⎪<br />
-<br />
+<br />
⋅ ≤ ≤ ≤<br />
≤ ≤<br />
⎪∑α<br />
ri ai<br />
cr<br />
, 1 r p sau ai<br />
ai<br />
ai<br />
⎩ i=<br />
1<br />
Mai înainte de a trece la rezolvarea problemei de programare pătratică să<br />
amintim câteva noţiuni referitoare la formele pătratice.<br />
6.2. Definiţii. Proprietăţi<br />
Fie f o funcţie de gradul al doilea în x , ..., x<br />
f<br />
(x )<br />
=<br />
n<br />
n<br />
1 n<br />
n<br />
∑∑Cij ⋅ xi<br />
⋅ x j + ∑<br />
i=<br />
1 j=<br />
1 j=<br />
1<br />
n,<br />
n R<br />
unde:<br />
x=(x1, ..., xn)’ , C ∈M<br />
( ) şi Cij=Cji (în caz contrar, adică dacă Cij≠Cji,<br />
1<br />
definim d ( C + C )<br />
d<br />
ij<br />
= 2<br />
ij=dji ) , iar ′ = ( c ,..., c )<br />
ij<br />
1<br />
n<br />
ji<br />
c .<br />
n<br />
n<br />
c<br />
j<br />
⋅ x<br />
j<br />
+ c<br />
n n n<br />
şi atunci ∑∑Cij<br />
⋅ xi<br />
⋅ x j = ∑∑d<br />
i= 1 j=<br />
1<br />
0<br />
n<br />
i= 1 j=<br />
1<br />
ij<br />
⋅ x ⋅ x<br />
Fie Q(<br />
x ) = ∑∑C<br />
⋅ ⋅ = xCx′<br />
ij xi<br />
x j grupul termenilor de gradul al doilea. Se<br />
i=<br />
1 j=<br />
1<br />
ă funcţia Q(x) se poate pune sub formă de sumă algebrică de pătrate de<br />
Gauss). Dacă notăm cu n şi cu n numărul pătratelor care<br />
au coeficienţii pozitivi şi respectiv negativi, atunci avem n + + n − ştie c<br />
expresii liniare, omogene şi independente (reducerea la forma canonică a formelor<br />
+ −<br />
pătratice cu metoda lui<br />
≤ n .<br />
Definiţia 6.1. Q(x) se numeşte formă pătratică pozitiv definită dac ă n + = n şi<br />
n – = 0 .<br />
Definiţia 6.2. Q(x) se numeşte formă pătratică pozitiv semidefinită dacă n + 0, atunci forma pătratică este nedefinită.<br />
+ > 0 şi<br />
i<br />
j<br />
şi
6. Programare pătratică 125<br />
Propoziţia 6.1. Dacă Q ( x ) = x′<br />
Cx este pozitiv semidefinită, atunci Q(x)=0 dacă<br />
şi numai dacă Cx=0 .<br />
n<br />
Demonstraţie. Arătăm că Q(x)=0 implică Cx=0 . Fie ( ∀ ) y ∈R<br />
şi ( ∀) λ ∈R<br />
,<br />
atunci<br />
2<br />
Q(<br />
y + λx)<br />
= ( y + λx)<br />
′ C(<br />
y + λx)<br />
= y′<br />
Cy + 2λy′<br />
Cx + λ x′<br />
Cx = y′<br />
Cy + 2λy′<br />
Cx ≥ 0 .<br />
Cum inegalitatea are loc pentru ( ∀) λ ∈R<br />
, rezultă că y ′Cx = 0 . Dar cum<br />
această egalitate are loc pentru orice y , rezultă că Cx=0.<br />
Implicaţia inversă este evidentă ! <br />
Proprietăţi<br />
1. Dacă Q este pozitiv definită, atunci<br />
n<br />
det(C)>0 şi Q(x)>0, ( ∀) x ∈ R \ { 0}<br />
, iar Q(0)=0 .<br />
2.<br />
Dacă Q este pozitiv semidefinită, atunci<br />
det(C)= 0 şi Q(x)=0,<br />
pentru o mulţime de vectori x≠0 .<br />
3. Dacă Q este negativ definită, atunci<br />
n<br />
det(C) 0 . Afirmaţia a doua rezultă din<br />
i<br />
n<br />
= ∏<br />
i=<br />
1<br />
Propoziţia 6.1 , astfel Q ( x) = x′<br />
Cx = 0 ⇒ Cx = 0 . Dar, C este nesingulară şi<br />
unica soluţie este x=0.<br />
2<br />
2. Dacă Q este pozitiv semidefinită Q(<br />
ξ ) = λ ξ cu<br />
i<br />
+<br />
n<br />
∑<br />
i=<br />
1<br />
i<br />
i<br />
+<br />
λ i > 0 , i = 1,<br />
n ,<br />
, i n 1,<br />
n<br />
∏ n<br />
+<br />
λ = 0 = + . Atunci det( C ) = λ = 0 . Din Propoziţia<br />
6.1 rezultă<br />
i<br />
Q(<br />
x) = x′<br />
Cx = 0 ⇒ Cx = 0 . Dar, C este singulară şi soluţia x=0 nu este unică.<br />
Analog se demonstre ază afirmaţiile 3 şi 4. <br />
i=<br />
1<br />
( ) R y ( ) ∈(<br />
0,<br />
1)<br />
2<br />
( 1 − λ)<br />
⋅ y = λ ⋅ Q(<br />
x)<br />
+ 1 − λ ⋅ Q(<br />
y)<br />
+ λ −<br />
n<br />
Observaţia 6.1. Pentru ∀ x, y ∈ , x ≠ şi<br />
i<br />
∀ λ avem<br />
[ ⋅ x + ] ( ) ( ) ⋅ Q(<br />
x − y)<br />
Q λ λ .<br />
Deci, dacă Q este pozitiv definită avem<br />
Q λ ⋅ x + ( 1 − λ)<br />
⋅ y < λ ⋅ Q(<br />
x)<br />
+ 1 − λ ⋅ Q(<br />
y<br />
şi dacă Q este pozitiv semidefinită avem<br />
[ ] ( ) )
126<br />
[ ⋅ x + ( 1 − λ)<br />
⋅ y]<br />
≤ λ ⋅ Q(<br />
x)<br />
+ ( 1 − λ)<br />
Q(<br />
y)<br />
Modele şi algoritmi de optimizare<br />
Q λ ⋅ .<br />
Prin urmare, orice formă pătratică pozitiv definită este o funcţie strict convexă<br />
şi<br />
orice formă pătratică pozitiv semidefinită este o funcţie convexă.<br />
O problemă de programare pătratică este acea problemă în care trebuie<br />
determinat un vector x * care minimizează o formă pătratică convexă sau<br />
maximizează o formă pătratică concavă şi în care variabilele mai trebuie să<br />
verifice un sistem de inegalităţi liniare şi eventual unele restricţii de semn.<br />
Forma generală a problemei de programare pătratică este<br />
n n<br />
n<br />
⎧<br />
1<br />
⎪min<br />
f ( x)<br />
= min ∑∑Cij ⋅ xi<br />
⋅ x j + ∑ci<br />
⋅ xi<br />
= = =<br />
⎪<br />
2 i 1 j 1 i 1<br />
n<br />
⎪<br />
⎨∑aij<br />
⋅ x j ≤ bi<br />
1≤<br />
i ≤ m<br />
⎪ j=<br />
1<br />
⎪x j ≥ 0 1≤<br />
j ≤ n ( restricþii<br />
de semn)<br />
⎪<br />
⎩<br />
sau matriceal<br />
⎧<br />
⎧1<br />
⎫<br />
⎪min<br />
f ( x)<br />
= min ⎨ x′<br />
Cx + c′<br />
x⎬<br />
⎪<br />
⎩2<br />
⎭<br />
⎨Ax<br />
≤ b<br />
⎪x<br />
≥ 0<br />
⎪ n<br />
m<br />
⎪⎩ x ∈ R , b ∈ R , A∈<br />
M mn ( R ) , C ∈ M n ( R )<br />
(6.4)<br />
unde<br />
1<br />
f (x)<br />
= x ′ Cx + c′<br />
x<br />
2<br />
este convexă. Numim această formă a problemei de programare pătratică forma<br />
canonică. În inegalităţile (6.4), valorile bi sunt strict pozitive (dacă ar fi negative,<br />
inegalităţile<br />
respective se înmulţesc cu –1).<br />
Exemplu. În două variabile o formă pătratică pozitiv definită este paraboloidul<br />
eliptic,<br />
2 2<br />
x1<br />
x2<br />
f ( x1,<br />
x2<br />
) = + , a,<br />
b ≠ 0 ,<br />
2 2<br />
a b<br />
şi admite un minim unic (Figura 6.1), iar o formă pătratică semidefinită este<br />
cilindrul parabolic,<br />
2 2<br />
f ( x1,<br />
x2<br />
) = a x1<br />
, a ≠ 0 ,<br />
cu concavitatea îndreptată în sus (în acest caz nu avem un punct de extrem unic, ci<br />
o dreaptă paralelă cu planul x1Ox2) (Figura 6.2).
6. Programare pătratică 127<br />
Figura 6.1 Figura 6.2<br />
6.3. Fundamentarea algoritmului lui Wolfe<br />
În cele ce urmează sunt prezentate teoreme ce permit trecerea de la<br />
problema<br />
de programare pătratică la o problemă de programare l iniară echivalentă, fiind<br />
astfel posibilă utilizarea algoritmului simplex pentru obţinerea soluţiei<br />
problemei de programare pătratică. Algoritmul care se obţine este cunoscut sub<br />
numele de algoritmul lui Wolfe, cu cele două forme ale sale : scurtă şi lungă.<br />
Teorema 3.5 (care dă condiţiile Kuhn-Tucker) pentru această problemă<br />
are<br />
formularea următoare.<br />
* * *<br />
Teorema 6.1. (Condiţiile Kuhn−Tucke r). Vectorul ( ..., ) x x = x este soluţia<br />
1 , n<br />
problemei de programare<br />
pătratică (6.4) dacă şi numai dacă<br />
există<br />
* * * ( ..., ) u u =<br />
* * *<br />
u , ( ..., ) v v =<br />
* * *<br />
v şi y = ( y ..., y ) astfel încât<br />
1 , m<br />
1 , n<br />
n ⎧ * *<br />
⎪∑aij<br />
x j + yi<br />
= b<br />
j=<br />
1 ⎪<br />
n<br />
m<br />
⎪<br />
* * *<br />
⎪∑<br />
C<br />
jk xk<br />
− ∑ui<br />
aij<br />
− v j = −c<br />
j<br />
⎨ k=<br />
1<br />
i=<br />
1<br />
⎪ *<br />
*<br />
*<br />
x ≥ 0 , u ≥ 0 , v ≥ 0 , y<br />
⎪ n<br />
n<br />
⎪ * *<br />
* *<br />
∑ x jv<br />
j = 0 , ∑ui<br />
yi<br />
= 0<br />
⎪⎩<br />
j=<br />
1<br />
i=<br />
1<br />
sau matriceal<br />
1 , m<br />
*<br />
≥ 0<br />
1≤<br />
i ≤ m<br />
1≤<br />
j ≤ n<br />
(6.5)
128<br />
⎧Ax<br />
+ y = b<br />
⎪ t<br />
⎪Cx<br />
- A u - v = -c<br />
⎨<br />
⎪x′<br />
v = 0, u′<br />
y = 0<br />
⎪ *<br />
*<br />
⎩x<br />
≥ 0 , u ≥ 0 ,<br />
*<br />
v ≥ 0 ,<br />
y<br />
*<br />
Modele şi algoritmi de optimizare<br />
Observaţia 6.2. yi sunt variabilele ecart care apar în Ax+y=b, vi sunt variabilele<br />
ecart în C⋅x−A T u−v=−c .<br />
Din condiţiile de nenegativitate rezultă că xjvj=0 şi uiyi= 0 ,<br />
1≤<br />
j ≤ n , 1≤<br />
i ≤ m , adică din cele 2⋅m+2⋅n necunoscute care apar în sistemul<br />
(6.5) de m+n ecuaţii, interesează numai soluţiile nenegative, care au cel mult<br />
m+n componente nenule, adică soluţiile admisibile<br />
de bază ale sistemului (6.5) .<br />
Fie problema de programare pătratică<br />
n n<br />
n<br />
⎧<br />
1<br />
⎪min<br />
f ( x)<br />
= min ∑∑Cij xi<br />
xi<br />
+ ∑ci<br />
xi<br />
⎪<br />
2 i=<br />
1 j=<br />
1 i=<br />
1<br />
n<br />
⎪<br />
⎨∑aij<br />
x j = bi<br />
1≤<br />
i ≤ m<br />
⎪ j=<br />
1<br />
⎪x<br />
j ≥ 0 1≤<br />
j ≤ n<br />
⎪<br />
⎩<br />
≥ 0<br />
⎧<br />
⎧1<br />
⎫<br />
⎪min<br />
f ( x)<br />
= min ⎨ x′<br />
Cx + c′<br />
x⎬<br />
⎪<br />
⎩2<br />
⎭<br />
⎨ Ax = b<br />
⎪x ≥ 0<br />
(6.4’)<br />
⎪<br />
⎩<br />
(matriceal)<br />
Numim această formă a problemei de programare pătratică forma standard.<br />
Teorema 6.2. Problema (6.4’) admite soluţie optimă x * dacă şi numai dacă<br />
m ( ∃) u∈<br />
R astfel încât<br />
*<br />
*<br />
* t *<br />
* ′ * t<br />
x ≥ 0 ; Ax = b ; c + Cx − A u ≤ 0 ; x c + Cx − A u = .<br />
( ) ( ) 0<br />
Demonstraţie. Din Teorema 6.1 rezultă că x * este soluţie a problemei (6.4’) dacă<br />
şi numai dacă ( ∃ )<br />
*<br />
m<br />
u ∈R<br />
, astfel încât<br />
*<br />
* *<br />
* *<br />
x ≥ 0 , ∇ L ( x , u ) = 0 , ∇ L ( x , u ) ≤ 0 , ( ) ′ * *<br />
x* ∇ L ( x , u ) = 0 . <br />
u<br />
x<br />
Corolar 6.2. x a problemei (6.4’) dacă şi numai dacă<br />
*<br />
u ∈ , a<br />
* este soluţie<br />
∃<br />
* n<br />
m<br />
∈R<br />
, R<br />
* * *<br />
x , v , u este soluţie pentru sistemul<br />
( )<br />
v stfel încât ( )<br />
⎧Ax<br />
= b<br />
⎪ t<br />
⎨Cx<br />
− A u + v = -c<br />
⎪<br />
⎩x′<br />
v = 0 , x ≥ 0 , u ≥ 0 .<br />
x<br />
(6.6)<br />
Demonstraţie. În Teorema 6.2 luăm . <br />
2. Dacă R n t<br />
v = -c - Cx + A u<br />
Propoziţia 6. R = { x∈ ⏐ A⋅x=b ; x≥0 }≠φ, atunci<br />
(6.4’) are optim<br />
infinit dacă şi numai dacă sistemul
6. Programare pătratică 129<br />
⎧Ax<br />
= b<br />
*<br />
*<br />
x ≥ 0 , u ≥ 0 ,<br />
*<br />
⎪ * t * *<br />
⎨ Cx − A u + v = -c<br />
⎪<br />
⎩<br />
(6.7)<br />
este incompatibil.<br />
Demonstraţie. Presupunem că min f ( x)<br />
= −∞ şi să arătăm că sistemul (6.7) este<br />
incompatibil. Fie x∈ R . Prin absurd, presupunem că sistemul (6.7) are soluţia<br />
(x * , u * , v * ). Deoarece f este convexă avem<br />
*<br />
* ′ * * ′ * t * ′ *<br />
f ( x)<br />
− f ( x ) ≥ ∇ x ( f ( x ) )( x − x ) = ( Cx + c)<br />
( x − x ) = ( A u − v)<br />
( x − x ) =<br />
* ′ * ′ * ′ * ′ *<br />
= ( u ) Ax - ( v ) x - ( u ) Ax + ( v ) x<br />
Dar<br />
de<br />
unde rezultă că<br />
Ax *<br />
′ *<br />
*<br />
= Ax = b şi ( v ) x ≥ 0 ,<br />
* ′ ( v ) x<br />
f ( x)<br />
≥ f ( x ) - ,<br />
adică minf(x) nu poate fi - ∞ . Contradicţie!<br />
Să arătăm că dacă sistemul (6.7) este incompatibil atunci minf(x)= – ∞.<br />
Sistemul fiind incompatibil, rezultă că problema (6.4’) nu are soluţii. Da, cum<br />
R≠φ, rezultă că min f ( x)<br />
= −∞ . <br />
I<br />
i<br />
Să considerăm o partiţie,<br />
i { j = ( x j ) }<br />
j∈Ii<br />
*<br />
( I i ) , a mulţimii indicilor { , 2,<br />
... , n}<br />
1≤i≤3 = x , i=1,2,3 şi să rescriem vectorii x şi v sub forma<br />
Lema 6.1. Dacă următoarea problemă<br />
de programare liniară<br />
min g′<br />
z<br />
admite soluţie optimă (x * , v * , u * , z * ) cu x *1 >0 , v *3 ⎧Ax<br />
= b<br />
⎪ t<br />
⎪Cx<br />
− A u + v + Dz = -h<br />
⎨<br />
n<br />
m<br />
⎪x,<br />
v, z, g ∈ R , u, h∈<br />
R<br />
⎪<br />
3 1<br />
⎩x,<br />
v, z ≥ 0 , x = 0 , v = 0<br />
>0 , atunci există<br />
astfel încât<br />
⎛ x<br />
⎜<br />
x = ⎜ x<br />
⎜<br />
⎝<br />
x<br />
1<br />
2<br />
3<br />
⎞ ⎛v<br />
⎟ ⎜<br />
⎟ , v = ⎜v<br />
⎟ ⎜<br />
⎠ ⎝<br />
v<br />
⎞<br />
⎟<br />
⎟ .<br />
⎟<br />
⎠<br />
*<br />
*<br />
* 2<br />
* *<br />
A µ = 0 , Cµ<br />
= 0 , µ ≥ 0 , g′<br />
z = h′<br />
µ .<br />
1 astfel<br />
Demonstraţie. Rearanjând restricţiile, problema (6.8) se poate pune sub<br />
forma<br />
1<br />
2<br />
3<br />
∗<br />
µ ∈<br />
(6.8)<br />
n<br />
R
130<br />
min g′<br />
z<br />
⎧<br />
⎪<br />
⎪ 1<br />
⎪<br />
⎪<br />
⎨⎛<br />
C11<br />
⎪<br />
⎜<br />
⎪<br />
⎜C<br />
21<br />
⎪<br />
⎜<br />
⎝C<br />
31<br />
⎪<br />
1<br />
⎪⎩<br />
x , x<br />
[ A A A ]<br />
2<br />
2<br />
C<br />
C<br />
C<br />
3<br />
12<br />
22<br />
32<br />
, v<br />
2<br />
1 ⎡ x ⎤<br />
⎢ 2 ⎥<br />
⎢x<br />
⎥ = b<br />
⎢ ⎥<br />
⎣<br />
0<br />
⎦<br />
1<br />
C ⎡ ⎤<br />
13 ⎞ x ⎡ 0 ⎤<br />
⎟⎢<br />
2 ⎥ t<br />
− +<br />
⎢ 2<br />
C<br />
⎥<br />
23 ⎟⎢x<br />
⎥ A u<br />
⎢<br />
v<br />
⎥<br />
+ Dz = h<br />
C ⎟<br />
⎠<br />
⎢ ⎥<br />
3<br />
⎣<br />
0<br />
⎦<br />
⎢⎣<br />
v ⎥<br />
33<br />
⎦<br />
3<br />
, v , z ≥ 0<br />
Duala problemei<br />
(6.9) este problema de programare liniară<br />
max b′<br />
λ + h′<br />
µ<br />
{ }<br />
Modele şi algoritmi de optimizare<br />
(6.9)<br />
t t 1 t 2 t 3<br />
⎧A<br />
λ + C11µ<br />
+ C21µ<br />
+ C31µ<br />
≤ 0<br />
1<br />
⎪ t t 1 t 2 t 3<br />
⎪A2λ<br />
+ C12µ<br />
+ C22µ<br />
+ C33µ<br />
≤ 0<br />
⎨ t<br />
⎪D<br />
µ ≤ g<br />
⎪<br />
2 3<br />
⎩<br />
Aµ<br />
= 0 , µ ≥ 0 , µ ≥ 0 .<br />
(6.10)<br />
Din Teorema fundamentală a dualităţii (§4.13) există o soluţie optimă<br />
∗ ∗<br />
λ , µ<br />
∗ ∗ *<br />
pentru problema duală (6.10) astfel încât b ′ λ + h′<br />
µ = g′<br />
z . Deoarece<br />
( )<br />
x<br />
* 1 *<br />
, v<br />
3<br />
> 0<br />
1 3<br />
, restricţiile corespunzătoare variabilelor x , v sunt verificate cu<br />
egalitate de către soluţia optimă a problemei duale (din Teorema ecarturilor<br />
complementare, §4.13), adică<br />
(6.11)<br />
∗1<br />
Înmulţind prima relaţie (6.11) cu µ , iar pe cea de-a doua cu µ ≥ 0 şi<br />
adunându-le, avem<br />
+<br />
⎧ t ∗ t ∗1<br />
t ∗2<br />
A λ + C11µ<br />
+ C 21µ<br />
= 0<br />
1 ⎪<br />
t ∗ t ∗1<br />
t ∗2<br />
⎨A2λ<br />
+ C12µ<br />
+ C 22µ<br />
≤ 0<br />
⎪ ∗<br />
∗2<br />
∗3<br />
⎪<br />
Aµ<br />
= 0 , µ ≥ 0 , µ = 0 ,<br />
⎩<br />
′ ′ ′<br />
∗1<br />
t ∗ ∗1<br />
t ∗1<br />
∗1<br />
t ∗2<br />
( µ ) A λ + ( µ ) C11µ<br />
+ ( µ ) C 21µ<br />
+<br />
1<br />
′<br />
′<br />
∗2<br />
′ t ∗ ∗2<br />
t ∗1<br />
∗2<br />
t ∗2<br />
( µ ) 2 λ + ( µ ) C12µ<br />
+ ( µ ) C 22µ<br />
≤ 0<br />
A .<br />
∗<br />
Ţinem seama că A µ = 0 şi atunci putem scrie relaţiile de mai sus sub forma<br />
⎡<br />
⎢<br />
⎣<br />
∗ ∗ ⎛ ⎞ ∗ ⎤<br />
⎞<br />
11 12<br />
( µ ) ( µ ) ⎜ ⎟⎜<br />
⎟<br />
2 ≤ 0<br />
1<br />
1 ′<br />
2 ′ C C ⎛ µ<br />
⎥⎜<br />
⎦⎝C<br />
12<br />
C<br />
22<br />
⎟⎜<br />
∗ ⎟<br />
⎠⎝<br />
µ ⎠<br />
.<br />
* 3
6. Programare pătratică 131<br />
Deoarece = 0<br />
µ , relaţia de mai sus se mai poate scrie ( ∗ ) µ ≤ 0<br />
∗ ′ ∗ ( µ ) C µ = 0 , iar din Propoziţ<br />
∗ 3<br />
′ ∗<br />
µ C . Cum C<br />
este pozitiv semidefinită, rezultă că<br />
ia 6.2 avem<br />
∗<br />
t ∗<br />
t ∗<br />
C µ = 0 . Relaţiile (6.11) devin A λ = 0 şi A λ ≤ 0 . Ţinem seama de aceste<br />
relaţii<br />
în evaluarea produsului b′ λ şi avem<br />
∗ * ∗ ′ * 1 ∗ ′ * 2<br />
b′ λ = λ Ax = λ A x + λ A x<br />
∗ ′ * 2<br />
= λ A x = ,<br />
adică b ′λ = 0 şi<br />
1<br />
( ) ( ) ( ) 0<br />
1<br />
2<br />
2<br />
* * ′ z = h′<br />
. Astfel, lema este demonstrată. <br />
g µ<br />
Propoziţia 6.3. Dacă R ≠ φ , atunci problema (6.4’) are optim infinit dacă şi<br />
( )<br />
∗ n<br />
numai dacă ∃ µ ∈R<br />
soluţie a sistemului<br />
Demonstraţie. Dacă<br />
adică problema de programare liniară<br />
⎧Aµ<br />
= 0<br />
⎪<br />
⎪Cµ<br />
≤ 0<br />
⎨<br />
(6.12)<br />
⎪c′<br />
µ < 0<br />
⎪<br />
⎩µ<br />
≥ 0<br />
min f ( x)<br />
= −∞ , atunci sistemul (6.7) este incompatibil,<br />
⎧min<br />
e′<br />
z<br />
⎪<br />
⎪<br />
Ax = b<br />
t<br />
⎨Cx<br />
− A u + v + Dz = -c<br />
⎪ x ≥ 0 , u ≥ 0 ,<br />
⎪<br />
⎩<br />
2<br />
(6.13)<br />
⎧0<br />
⎪<br />
unde D = ( d ij ) , d<br />
1≤<br />
i,<br />
j≤n<br />
ij = ⎨1<br />
⎪<br />
⎩−1<br />
dacã<br />
i ≠ j<br />
dacã<br />
i = j , ci<br />
≤ 0 , iar e ′ = ( 1 , ..., 1)<br />
are optim<br />
dacã<br />
i = j , ci<br />
> 0<br />
nenul. Fie (x * , v * , u * , z * ) o soluţie optimă pentru (6.13). Sistemul (6.12) este<br />
compatibil, aşa cum rezultă din Lema 6.1, în care luăm<br />
g e = 1, 1,...,<br />
1 , h = -c , = I =<br />
şi ţinând seama că e’z>0.<br />
( )<br />
( ) φ<br />
= I 1 3<br />
∗ n<br />
Dacă ∃ µ ∈ R soluţie a sistemului (6.12) şi x ∈R<br />
, atunci pentru<br />
( ) ≥ 0<br />
*<br />
∀ α , astfel încât + αµ<br />
≥ 0 avem<br />
*<br />
rezultă că + αµ<br />
∈R<br />
pentru<br />
f<br />
*<br />
*<br />
x A ( x + µ ) = Ax + αAµ<br />
= b<br />
x ( ) ≥ 0<br />
∀ α . Calculăm<br />
α . De aici<br />
*<br />
* 2 ∗ ′ *<br />
*<br />
*<br />
( x + αµ ) = f ( x)<br />
+ 2αx′<br />
Cµ<br />
+ α ( µ ) Cµ<br />
+ αc′<br />
µ = f ( x)<br />
+ αc′<br />
µ<br />
*<br />
şi pentru că ′µ < 0 , rezultă că<br />
+ α α →∞<br />
*<br />
µ<br />
c ( x ) ⎯⎯→<br />
⎯ −∞<br />
f .
132<br />
6.4. Forma scurtă a algoritmului lui Wolfe<br />
Modele şi algoritmi de optimizare<br />
Algoritmul lui Wolfe în forma scurtă constă din două etape. În etapa întâi se<br />
rezolvă următoarea problemă de programare liniară (Ştefănescu, 1989):<br />
⎧ { + }<br />
Ax = b<br />
t * 1 2<br />
(6.14)<br />
Cx − A u + v + z − z = -c<br />
1 2<br />
x, v, z , z ≥ 0<br />
2 1<br />
min z z<br />
⎪<br />
⎨<br />
⎪<br />
⎪<br />
⎩<br />
1 2 n<br />
m<br />
unde x, v, z , z ∈R<br />
, iar u∈<br />
R , împreună cu următoarea regulă<br />
suplimentară:<br />
Pentru ∀ i = 1,<br />
, xi , vi<br />
nu pot fi simultan nenuli (6.15)<br />
( ) n<br />
Teorema 6.3. Prin aplicarea algoritmului simplex problemei (6.14) împreună cu<br />
regula suplimentară (6.15) se ajunge la una din situaţiile:<br />
a) problema (6.14) nu are soluţii admisibile, R = φ ;<br />
b) se obţine soluţia optimă (x * , v * , u * , z *1 , z *2 ) pentru problema (6.14);<br />
c) se obţine o soluţie de bază a problemei (6.14) care nu mai poate fi<br />
îmbunătăţită fără încălcarea regulii (6.15).<br />
Demonstraţie. Se aplică algoritmul simplex, faza I, problemei (6.14), ţinându-se<br />
seama de regula (6.15) . Întrucât nu s-au pus condiţii de semn asupra vectorului u,<br />
vom descompune în u= u 1 - u 2 1<br />
2<br />
1 2<br />
îl<br />
, u ≥ 0 , u ≥ 0 . Semnul pentru z i , z i se alege<br />
.<br />
astfel încât să fie acelaşi cu cel al termenului liber c i De aceea aceste variabile<br />
a<br />
sunt iniţial variabile de bază. Se completează baza cu variabilele artificiale x ,<br />
adăugate primelor m ecuaţii. Fie r = rang(A<br />
) < m şi se consideră că primele r<br />
⎡A<br />
coloane ale matricei ⎢ ⎥ sunt primii r vectori unitari din R<br />
⎣C ⎦<br />
Faza I se aplică problemei<br />
⎧ ⎧ a ⎫<br />
⎪min⎨∑<br />
xi<br />
⎬<br />
⎪ ⎩ i ⎭<br />
~<br />
⎪A<br />
~<br />
x = b<br />
⎨ * t 1 t 2<br />
1 2<br />
⎪Cx<br />
− A u + A u + v + z − z = -c<br />
a 1 2 1 2<br />
⎪x,<br />
x , v, u , u , z , z ≥ 0<br />
⎪ 1 2 r a m−r<br />
1 2 m<br />
⎩ x, v, z , z ∈ R , x ∈ R , u , u ∈ R<br />
unde<br />
( ) ⎟ , ⎟<br />
~ r+<br />
1 m ⎛ x ⎞<br />
A = A, e ,... e ,<br />
~<br />
x = ⎜ a<br />
⎝ x ⎠<br />
⎤ m+n .<br />
(6.16)
6. Programare pătratică 133<br />
respectând regula (6.15). Baza iniţială este baza canonică din R m+n , iar soluţia de<br />
bază iniţială este<br />
⎧ ⎧bi<br />
1 ≤ i ≤ r<br />
1<br />
2<br />
⎪x<br />
= ⎨<br />
⎪⎧<br />
z j = -c j , z j = 0 dacã<br />
c j ≤ 0 ,<br />
i<br />
⎨ ⎩ 0 r + 1 ≤ i ≤ m , ⎨ 1<br />
2<br />
(6.17)<br />
⎪ a<br />
⎪⎩ z j = 0 , z j = −c<br />
j dacã<br />
c j ≥ 0 .<br />
⎩xi<br />
= bi<br />
r ≤ i ≤ m<br />
Deoarece coeficienţii variabilelor v i şi oincid, două astfel de variabile nu<br />
pot fi simultan în bază ş în această fază fără a<br />
se altera rezultatul. De fiecare dată ă are şansa să intre în bază o<br />
vom înlocui cu vi , păstrând astfel v=0 în faza I. <br />
1<br />
z i c<br />
i atunci regula (6.15) se poate aplica<br />
1<br />
când o variabil zi<br />
Teorema 6.4<br />
1. Dacă se realizează a) din Teorema 6.3, atunci problemma (6.4’) nu are<br />
soluţii admisibile.<br />
1 * 2<br />
2. Dacă se realizează b) din Teorema 6.3, adică , atunci x * *<br />
z = z = 0<br />
este<br />
soluţie optimă a problemei (6.4’).<br />
1 2<br />
3. Dacă se realizează b) din Teorema 6.3 şi e ′ ( z + z ) > 0 , problema (6.4’)<br />
are optim infinit.<br />
1 * 2<br />
4. Dacă se realizează c) din Teorema 6.3 şi dacă , atunci x * soluţie optimă pentru problema (6.4’).<br />
este<br />
Demonstraţie. Dacă se realizează a) din Teorema 6.3, atunci sistemul<br />
este incompatibil deoarece nu s-au eliminat în faza I toate<br />
x a *<br />
z = z = 0<br />
Ax = b , x ≥ 0<br />
variabilele artificiale din bază. Dacă se realizează b) şi c) din Teorema 6.3,<br />
rezultă că sistemul Ax = b , x ≥ 0 este compatibil şi astfel rezultă concluziile 2, 3<br />
şi 4 şi demonstraţia se încheie. <br />
1. Variabilele se introduc doar dacă ci>0.<br />
2. La încheierea fazei întâi s-au eliminat toate variabilele artificiale x a Comentarii<br />
2<br />
zi<br />
. În<br />
* *<br />
faza a doua nu se mai introduc variabilele zi<br />
, z i nebazice.<br />
3. Nu se poate trage o concluzie în situaţia c) din Teorema 6.3, deoarece<br />
regula (6.15) nu face parte din algoritmul simplex.<br />
4. Dacă A are o bază unitară, faza I nu mai este necesară.<br />
Următoarea teoremă stabileşte condiţii suficiente pentru cazul în care se poate<br />
aplica algoritmul simplex, completat cu regula suplimentară (6.15), pentru<br />
rezolvarea problemei de programare pătratică (6.4’).<br />
Teorema 6.5. Pentru ca prin aplicarea algoritmului simplex, modificat cu regula<br />
(6.15), problemei (6.14) să se ajungă în una din situaţiile:<br />
a) problema (6.14) nu are soluţii admisibile, R = φ ;<br />
b) se obţine soluţia optimă (x * , v * , u * , z *1 , z *2 ) pentru problema (6.14);<br />
1<br />
2
134<br />
Modele şi algoritmi de optimizare<br />
c) se obţine o soluţie de bază a problemei (6.14) care nu mai poate fi<br />
îmbunătăţită fără încălcarea regulii (6.15),<br />
sunt suficiente următoarele condiţii:<br />
i) c=0 ,<br />
ii) C este pozitiv definită,<br />
iii) C din problema (6.4) este pozitiv definită.<br />
Demonstraţie. Dacă în urma aplicării fazei I se ajunge fie în cazul b), fie în cazul<br />
c), s-a obţinut o soluţie de bază (x b , v b , u b , z b1 , z b2 ) pentru problema (6.14).<br />
Faza a II-a a metodei simplex va rezolva următoarea problemă de programare<br />
liniară<br />
⎧min∑ zi ⎪ i<br />
⎪Ax<br />
= b<br />
⎨<br />
(6.14’)<br />
t<br />
⎪Cx<br />
− A u + v + Dz = -c<br />
⎪<br />
⎩x,<br />
v, z ≥ 0<br />
unde D = d ii`<br />
este o matrice diagonală ale cărei elemente sunt date de relaţiile<br />
1≤<br />
≤<br />
( ) i n<br />
⎧1<br />
0<br />
dacã<br />
altfel<br />
b1<br />
zi<br />
este variabilã<br />
bazicã<br />
ariabilã<br />
bazicã<br />
,<br />
pornind de la soluţia de bază (x b , v b , u b , z b ⎪<br />
dii<br />
= ⎨−1<br />
⎪<br />
⎩<br />
dacã<br />
b2<br />
zi<br />
este v<br />
) , unde<br />
b1<br />
⎧z<br />
b ⎪ b2<br />
zi<br />
= ⎨z<br />
⎪<br />
⎩<br />
0<br />
b1<br />
dacã<br />
zi<br />
este variabilã<br />
de bazã<br />
b2<br />
dacã<br />
zi<br />
este variabilã<br />
de bazã<br />
altfel.<br />
Fie i<br />
*<br />
> 0 I<br />
*<br />
i v > 0 , unde (x * , v * , u * , z * ) este soluţia finală a<br />
I { x } şi { }<br />
1 = i<br />
3 = i<br />
problemei (6.14’), obţinută cu algoritmul simplex modificat cu regula suplimentară<br />
(6.15). Atunci (x * , v * , u * , z * ) este soluţie optimă şi a problemei<br />
⎧min∑<br />
zi ⎪ i<br />
⎪ =<br />
⎨Cx<br />
− A u + v + Dz = -c<br />
⎪ 3<br />
1<br />
⎪x<br />
= 0 , v = 0<br />
⎪⎩<br />
x, v, z ≥ 0<br />
Presupunem că (x * , v * , u * , z * Ax b<br />
t (6.14”)<br />
) nu este soluţie optimă a problemei (6.14’) şi<br />
atunci, la următorul pas, algoritmul simplex produce o nouă soluţie de bază<br />
* *<br />
îmbunătăţită pentru problema (6.14”). Deoarece x j = 0 , i ∈ I 2 ∪ I 3 , v j = 0 ,<br />
3<br />
1<br />
i ∈ I ∪ I şi cum problema (6.14”) impune condiţiile x = 0 , v = 0 , este<br />
1<br />
2<br />
posibil ca în noua soluţie de bază cu valori nenule, cel m<br />
. În acest fel noua soluţie satisface condiţia (6.15) şi este o soluţie<br />
mai bună decât (x * , v * , u * , z * ult una din variabilele<br />
xi , vi<br />
, i ∈<br />
I 2<br />
). Contradicţie !
6. Programare pătratică 135<br />
m 1 luând ( ) ′<br />
′ 1, 1<br />
În Le a 6. , g = ..., şi h = – c , obţinem existenţ a vectorului<br />
n<br />
*<br />
*<br />
* *<br />
µ ∈ R cu proprietăţile Aµ = 0 , Cµ = 0 , g′<br />
z = c′<br />
µ .<br />
Din i) rezultă c ă g’z = 0 şi atun ci z= 0 .<br />
* *<br />
Din ii) şi Cµ = 0 rezult ă că µ = 0 şi g’z= 0 şi atunci d in nou z = 0 .<br />
Pro blema (6.4) poate fi adusă la forma (6 .4” ), similară formei (6.4’ ), prin<br />
introducerea variabilelor ecart w, astfel<br />
⎧ ⎧<br />
⎫<br />
⎪m<br />
⎨ x′<br />
+ ′ ~<br />
x⎬<br />
⎪ ⎩<br />
⎭<br />
⎨A<br />
~<br />
= b<br />
⎪~<br />
x ≥ 0<br />
⎪<br />
⎩<br />
⎛ 0<br />
unde: , , C ~<br />
1 ~<br />
in<br />
~<br />
C<br />
~<br />
x c<br />
~<br />
2<br />
x (6.4”)<br />
~ ⎛ x ⎞ n+ m ⎛c<br />
⎞<br />
x = ⎜<br />
⎟<br />
⎟∈<br />
R c = .<br />
⎝ w<br />
⎜<br />
⎟<br />
⎠<br />
⎝0<br />
⎠<br />
Ad u ea v riab lor art a tea că atricea d fu ia<br />
obiectiv este pozitiv definită<br />
n i este ozi sem ă ş pli d ma 1 p tru<br />
~<br />
C ⎞<br />
= ⎜<br />
⎟<br />
⎝ 0 0⎠<br />
ă gar a ile ec nu fec ză faptul m C in ncţ<br />
.<br />
Di ii) C ~<br />
C ~<br />
A ~<br />
p t iv idefinit i a cân Le 6. en ,<br />
rezu că există<br />
∗<br />
~ ∗ µ<br />
µ<br />
⎜ ∗<br />
µ<br />
cu ~ *<br />
µ<br />
ă că Cµ 0 ca ai<br />
sus, µ * ltă<br />
⎛ ⎞<br />
= ⎜ ⎟<br />
w ⎟<br />
⎝ ⎠<br />
C = 0<br />
*<br />
. De aici rezult = şi, m<br />
=0 şi g ’z=0 şi atunci din nou z= 0.<br />
*<br />
În toate cele trei situa sol a , v , z) are z teo ma este<br />
dem stra<br />
* * *<br />
ţii uţi (x , u<br />
=0 şi re<br />
on tă. <br />
Observaţ ia 6 .3<br />
a) Forma scurtă a algoritmului lui Wolfe se aplică atunci când se verifică<br />
incluziunea<br />
n<br />
n<br />
µ ∈ R Aµ = 0 , C µ = 0 ⊆ µ ∈ R c′ µ = 0<br />
(6.18)<br />
{ } { }<br />
b) Incluziunea (6.18) are loc dacă se ve rifică unul din următoarele cazuri:<br />
i) c=0 ,<br />
ii) C este pozitiv definită, t<br />
iii) M icea C, A are rangul n ,<br />
atr [ ]<br />
iv) Sistemul + t<br />
Cx A u = c are so luţii,<br />
v) Proble ma standard (6.4’) poate fi scrisă sub forma canonică<br />
1 * * ⎫<br />
min x x c ) ⎬<br />
2<br />
⎭<br />
*<br />
A x b<br />
⎪x ≥<br />
⎪<br />
⎩<br />
cu C * ⎧ ⎧<br />
⎪ ⎨ ′C + ( ′x<br />
⎪ ⎩<br />
*<br />
⎨ =<br />
0<br />
pozitiv definită.
136<br />
Modele şi algoritmi de optimizare<br />
Demostraţie<br />
i) Incluziunea (6.18) este evidentă deoarece membrul drept coincide cu R n .<br />
ii) şi iii) au membrul stâng format numai din vectorul nul şi atunci incluziunea<br />
(6.18) este evidentă.<br />
t<br />
iv) c este o combinaţie liniară a liniilor matricei [ C, A ] şi incluziunea (6.18)<br />
este evidentă.<br />
v) Demonstraţia este dată în Teorema 6.5 . <br />
Comentarii. Faza I rezolvă problema (6.16) pentru eliminarea variabilelor auxiliare<br />
x a din bază, luând u=0 , v=0 . Dacă problema (6.4’) are optim, atunci minimul din<br />
a<br />
problema (6.16) este zero şi variabilele au fost înlociute cu . Dacă nu s-au<br />
x<br />
xi i<br />
a<br />
a<br />
eliminat din bază toate variabilele x (caz de degenerare), se înlocuiesc x cu<br />
i<br />
a<br />
xi , lucru posibil când rang (A ) = m . Dacă rang (A ) < m , variabilele xi<br />
rămase în bază se elimină o dată cu liniile şi coloanele corespunzătoare din A,<br />
deoarece restricţiile corespunzătoare sunt consecinţe ale celorlalte. Baza cu care se<br />
1 2<br />
iese din faza I conţine numai una din variabilele zi<br />
zi<br />
, deoarece coloanele<br />
corespunzătoare acestor variabile sunt egale şi de semn contrar. Aşadar,<br />
din faza I<br />
se iese cu o bază formată din m variabile xi (dacă rang (A ) = m ) şi n variabile<br />
1<br />
zi<br />
2<br />
sau z .<br />
i<br />
Faza a II-a foloseşte programul obţinut în faza I pentru rezolvarea problemei<br />
(6.14’), ţinând seama de regula (6.15) care poate fi formulată şi astfel :<br />
dacă una din variabilele xi şi vi este în bază, atunci cealaltă nu poate fi<br />
introdusă în bază la iteraţia respectivă.<br />
Se asigură astfel respectarea condiţiei xivi=0.<br />
Exemplu. Să se rezolve următoarea problemă de programare pătratică :<br />
⎧1<br />
2 1 2<br />
⎫ 1<br />
min⎨ x 1 + x2<br />
− 2x1<br />
+ 3x2<br />
+ x3<br />
⎬ = min x' Cx + c' x<br />
⎩2<br />
2<br />
⎭ 2<br />
⎧x1<br />
− 2x<br />
2 + x3<br />
= 4<br />
⎨<br />
.<br />
⎩x1<br />
, x2<br />
, x3<br />
≥ 0<br />
Rezolvare. Vom aplica algoritmul lui Wolfe în forma scurtă.<br />
⎛1<br />
0 0⎞<br />
⎛− 2⎞<br />
1<br />
⎜ ⎟ ⎜ ⎟<br />
f(x)= x' Cx + c' x ; C = ⎜0<br />
1 0⎟<br />
, c = ⎜ 3 ⎟ , A = ( 1 − 2 1)<br />
.<br />
2<br />
⎜0<br />
0 0⎟<br />
⎜ 1 ⎟<br />
⎝ ⎠ ⎝ ⎠<br />
Verificăm dacă se poate aplica algoritmul Wolfe, forma scurtă.<br />
⎛1<br />
0 0 1 ⎞<br />
1 0 1<br />
⎜ ⎟<br />
t<br />
rang [ C A ] = rang⎜<br />
0 1 0 − 2⎟<br />
= 3 deoarece 0 1 − 2 = 1 .<br />
⎜<br />
0 0 0 1<br />
⎟<br />
⎝ ⎠<br />
0 0 1<br />
i
6. Programare pătratică 137<br />
Aşadar, se poate aplica algoritmul deoarece incluziunea (6.18) este verificată,<br />
fiind îndeplinită condiţia iii) din Com<br />
Introducem variabilele artificiale nenegative x a , z 1 , z 2 entarii.<br />
şi condiţiile<br />
Kuhn−Tucker devin:<br />
a ⎧ Ax + x = b<br />
⎪<br />
t 1 2<br />
⎪Cx<br />
− v + A u + z − z = −c1<br />
⎨<br />
1 2<br />
⎪x<br />
≥ 0, v ≥ 0,<br />
z ≥ 0,<br />
z ≥ 0,<br />
w ≥ 0<br />
⎪<br />
⎩u<br />
oarecare<br />
Pentru<br />
a a vea o bază,<br />
acestor variabile li se atribuie valori astfel:<br />
z = −c<br />
dacã<br />
c ≤ 0 ; z<br />
z<br />
1<br />
j<br />
2<br />
j = c j<br />
dacã<br />
c<br />
j<br />
2<br />
j =<br />
1<br />
j ≥ 0 ; j = z<br />
ţia de luăm: x v = 0 , u = x a = b<br />
Pentru ca şi asupra lui u s xiste condiţii de nenegativitate, îl desfacem în doi<br />
vec negati fel: u = −u 2 În solu bază =0 , 0, .<br />
ă e<br />
tori ne vi ast u (u corespunzând restricţiei cu egalitate, nu<br />
are resţricii de semn).<br />
ceal, r ile K r dev<br />
1<br />
Matri estricţi uhn−Tucke in:<br />
⎧x1<br />
− 2x<br />
2 + x3<br />
+ x = 4<br />
x1<br />
− v1<br />
+ u<br />
= 2<br />
Faza I. Se aplică algoritmul simp obleme de programare liniară:<br />
a<br />
⎪<br />
1 2 1<br />
⎪ − u + z1<br />
⎪<br />
1 2 2<br />
⎨x 2 − v2<br />
− 2u<br />
− 2u<br />
− z = −3<br />
.<br />
1<br />
⎪<br />
1 2 2<br />
⎪<br />
− v3<br />
+ u − u − z 2 = −1<br />
1 2 1 2<br />
⎪⎩ x,<br />
v, u , u , z , z , w ≥ 0<br />
lex următoarei pr<br />
n<br />
∑<br />
i=<br />
1<br />
x<br />
− 2x<br />
A<br />
i<br />
2<br />
j<br />
a<br />
= min x (trebuie ca<br />
+ x<br />
3<br />
1<br />
1<br />
− v1<br />
+ u1<br />
− z1<br />
2 2<br />
2 + v2<br />
+ 2u<br />
u 1 = 3<br />
1 2<br />
v3<br />
− u3<br />
+ u + 2<br />
= 1<br />
1 1 2<br />
, v,<br />
u , , z , x .<br />
În această faz 0, . Calculele sunt date în<br />
Tabelul 6.1 . Algo im ş c min x a 2<br />
⎪x1<br />
u1<br />
+ = 2<br />
⎪<br />
1<br />
⎨− x<br />
2 + 2 2 + z<br />
⎪<br />
2<br />
⎪<br />
3 z<br />
2<br />
a<br />
⎪⎩x<br />
u , z ≥ 0<br />
ă u = v = 0, deci nu pot intra în bază<br />
ritmul s plex se opre te u<br />
=0.<br />
Tabelul 6.1<br />
0<br />
0.<br />
= 4<br />
sau<br />
a ⎧Ax<br />
+ x = b<br />
⎛1<br />
⎪<br />
⎜<br />
t 1 2<br />
⎨Cx<br />
− v + A ( u − u ) + Dz = − c , unde D = ⎜0<br />
⎪ 1 2 1 2<br />
x,<br />
v u , z , z 0<br />
⎜<br />
⎩<br />
, u , , w ≥<br />
⎝0<br />
Pe componente<br />
avem:<br />
min<br />
⎧x<br />
⎪ 1<br />
+ a<br />
x<br />
a<br />
x<br />
= 0)<br />
0 0 ⎞<br />
⎟<br />
−1 0 ⎟<br />
0 −1⎟<br />
⎠
138<br />
Modele şi algoritmi de optimizare<br />
0 0 0 0 0 0 0 0 0 0 0 1<br />
CVB VB VVB x x a<br />
1 x2 x3 v1 v2 v3 u 1<br />
u 2 1<br />
z<br />
2<br />
z<br />
3<br />
z<br />
1 x a<br />
4 1 −2 1° 0 0 0 0 0 0 0 0 1<br />
0 1<br />
z 2 1 0 0 −1 0 0 1 −1 1 0 0 0<br />
1<br />
0 2<br />
z 3 0 −1 0 0 1 0 2 −2 0 1 0 0<br />
2<br />
0 3<br />
z 1 0 0 0 0 0 1 −1 1 0 0 1 0<br />
2<br />
4 1 −2 1* 0 0 0 0 0 0 0 0 0<br />
0 x3 4 1 −2 1 0 0 0 0 0 0 0 0<br />
0 z 2 1 0 0 −1 0 0 1 −1 1 0 0<br />
1<br />
1<br />
0 2<br />
z 3 0 −1 0 0 1 0 2 −2 0 1 0<br />
0<br />
2<br />
3<br />
z 2<br />
1 0 0 0 0 0 1 −1 1 0 0 1<br />
0 0 0 0 0 0 0 0 0 0 0 0<br />
Tabelul 6.2<br />
0 0 0 0 0 0 0 0 1 1 1<br />
CVB VB VVB x1 x2 x3 v1 v2 v3 u 1<br />
u 2<br />
z z z<br />
0 x3 4 1 −2 1 0 0 0 0 0 0 0 0<br />
1 z 2 1 0 0 −1 0 0 1 −1 1 0 0<br />
1<br />
1<br />
1 2<br />
z 3 0 −1 0 0 1 0 2° −2 0 1 0<br />
2<br />
1 3<br />
z 2<br />
1 0 0 0 0 0 1 −1 1 0 0 1<br />
6 1 −1 0 −1 1 1 2* −2 0 0 0<br />
0 x3 4 1 −2 1 0 0 0 0 0 0 0 0<br />
1 1<br />
z 1/2 1° 1/2 0 −1 −1/2 0 0 0 1 0<br />
1<br />
0 u1 3/2 0 −1/2 0 0 1/2 0 1 −1 0 0<br />
1 3<br />
z 5/2 0 −1/2 0 0 1/2 1 0 0 0 1<br />
2<br />
3 1* −1 0 −1 0 1 0 0 0 0<br />
0 x3 7/2 0 −5/2 1 1 1/2 0 0 0 0<br />
0 x1 1/2 1 1/2 0 −1 −1/2 0 0 0 0<br />
0 u1 3/2 0 −1/2 0 0 1/2° 0 1 −1 0<br />
1 3<br />
z 5/2 0 −1/2 0 0 1/2 1 0 0 1<br />
2<br />
5/2 0 −1/2 0 0 1/2* 1 0 0 0<br />
0 x3 2 0 −2 1 1 0 0 1 0<br />
0 x1 2 1 0 0 −1 0 0 −1 0<br />
0 v2 3 0 −1 0 0 1 0 −2 0<br />
1 3<br />
z 1 0 0 0 0 0 1 1° 1<br />
2<br />
1 0 0 0 0 0 1 1* 0<br />
0 x3 1 0 −2 1 1 0 0 0<br />
0 x1 3 1 0 0 −1 0 0 0<br />
0 v2 5 0 −1 0 0 1 0 0<br />
0 u3 1 0 0 0 0 0 1 1<br />
0 0 0 0 0 0 0 0<br />
1<br />
2<br />
1<br />
1<br />
2<br />
2<br />
2<br />
3<br />
2
6. Programare pătratică 139<br />
Faza a II-a . Folosind tabelul simplex rezultat din faza I şi renunţând la<br />
coloana corespunzătoare vari abilei x , se aplică din nou algoritmul simplex<br />
pentru minimizarea funcţiei<br />
a<br />
2<br />
1 2<br />
min z + z + z . Calculele sunt prezentate în<br />
{ }<br />
elul 6.2 .<br />
Faza a II−a se încheie cu eliminarea din bază a vectorilor z şi z 2 Tab<br />
1<br />
şi<br />
2<br />
1 2<br />
min z + z + z =0.<br />
1<br />
2<br />
3<br />
{ }<br />
1<br />
1<br />
Deci, soluţia este x1=3, x2=0, x3=1, şi f(x1, x2, x3) = − .<br />
2<br />
Multiplicatorii lui Lagrange sunt: v1=0, v2=5, v3=0; u=u1−u2=0−1= −1 .<br />
Vom considera, ca exemplificare a folosirii Solver-ului din Excel pentru<br />
rezolvarea problemelor de programare pătratică, problema de mai sus. Se creează<br />
foaia electronică de calcul cu datele problemei ca în Figura 6.1. Celula D4 conţine<br />
funcţia de minimizat =((1/2)*D7^2+(1/2)*D8^2−2*D7+3*D8+D9, celulele D7−D9<br />
conţin necunoscutele problemei, iar restricţia D7−2*D8+D9 este depusă în celula<br />
B11. Condiţiile de nenegativitate ale necunoscutelor sunt D7:D9 ≥B7:B9.<br />
Selectând Solve se rezolvă problema, obţinându-se aceleaşi valori pentru funcţia de<br />
optimizat şi pentru necunoscute ca şi cele obţinute în urma aplicării algoritmului lui<br />
Wolfe forma scurtă, aşa cum se vede din rapoartele din Tabelele 6.3-6.5 .<br />
2<br />
Figura 6.1<br />
3
140<br />
Tabelul 6.3<br />
Microsoft Excel 10.0 Answer Report<br />
Worksheet: [Programare patratica.xls]Sheet1<br />
Report Created: 7/10/2002 8:09:27 PM<br />
Target Cell (Min)<br />
Original<br />
Cell Name<br />
Functia de<br />
Value Final Value<br />
$D$4 optimizat 0 −0.5<br />
Modele şi algoritmi de optimizare<br />
Cell Name<br />
Adjustable Cells<br />
Original<br />
Value Final Value<br />
$B$15 x1= 0 3<br />
$B$16 x2= 0 0<br />
$B$17 x3= 0 1<br />
Constraints<br />
Cell Name Cell Value Formula Status Slack<br />
$A$12 x1−2x2+x3= 4 $A$12=$B$11 Not Binding 0<br />
$B$15 x1= 3 $B$15>=$B$7 Not Binding 3<br />
$B$16 x2= 0 $B$16>=$B$8 Binding 0<br />
$B$17 x3= 1 $B$17>=$B$9 Not Binding 1<br />
Tabelul 6.4<br />
Microsoft Excel 10.0 Sensitivity Report<br />
Worksheet: [Programare patratica.xls]Sheet1<br />
Report Created: 7/10/2002 8:09:27 PM<br />
Adjustable Cells<br />
Final Reduced<br />
Cell Name Value Gradient<br />
$B$15 x1= 3 0<br />
$B$16 x2= 0 5.000000477<br />
$B$17 x3= 1 0<br />
Constraints<br />
Final Lagrange<br />
Cell Name Value Multiplier<br />
$A$12 x1−2x2+x3= 4 1
6. Programare pătratică 141<br />
Tabelul 6.5<br />
Microsoft Excel 10.0 Limits Report<br />
Worksheet: [Programare patratica.xls]Limits Report 1<br />
Target<br />
Cell Name<br />
Functia de<br />
Value<br />
$D$4 optimizat −0.5<br />
Report Created: 7/10/2002 8:09:27 PM<br />
Adjustable Lower Target Upper<br />
Targe<br />
t<br />
Cell Name Value Limit Result Limit Result<br />
$B$15 x1= 3 3 −0.5 3 −0.5<br />
$B$16 x2= 0 0 −0.5 0 −0.5<br />
$B$17 x3= 1 1 −0.5 1 −0.5<br />
6.5. Probleme propuse<br />
1. Scrieţi condiţiile Kuhn-Tucker pentru următoarele probleme de programare<br />
pătratică:<br />
⎧ ⎧1<br />
2 2 2<br />
⎫<br />
⎪min⎨<br />
( x1<br />
+ 5x2<br />
+ 2x3<br />
+ 4x1<br />
x2<br />
− 2x1<br />
x3<br />
− 4x<br />
2 x3<br />
) − x1<br />
+ 3x2<br />
+ 4x3<br />
⎬<br />
⎪ ⎩2<br />
⎭<br />
⎪ 1 + 3x2<br />
− x3<br />
≤ 2<br />
⎪<br />
a) ⎨x1<br />
+ x2<br />
+ 2x3<br />
≤ 4<br />
⎪ x1<br />
− 2x 2 + x3<br />
≤ 6<br />
⎪<br />
⎪x2<br />
≥1<br />
⎪<br />
⎩x<br />
≥ 0<br />
2x<br />
b)<br />
⎧min<br />
1<br />
⎪<br />
x1<br />
+ 2x<br />
⎨<br />
⎪x1<br />
− 2x<br />
⎪<br />
⎩x<br />
≥ 0<br />
2 2 2<br />
{ x + 2x<br />
+ 3x<br />
− 2x<br />
x + 2x<br />
x − 2x<br />
x − x + 2x<br />
− x }<br />
2<br />
2<br />
2<br />
− 3x<br />
3<br />
+ 4x<br />
3<br />
= 6<br />
= 8<br />
3<br />
1<br />
2<br />
1<br />
2. Să se rezolve următoarele probleme de programare pătratică<br />
a)<br />
2<br />
2<br />
⎧min{<br />
x1<br />
− x1x<br />
2 + x1<br />
− 3x1}<br />
⎪<br />
⎨ x1<br />
+ x2<br />
≤ 4 b)<br />
⎪<br />
⎩<br />
x ≥ 0<br />
2<br />
2<br />
⎧min 2x1<br />
− 2x1<br />
x2<br />
+ x2<br />
− 4x1<br />
− 2x<br />
⎪<br />
x1<br />
+ 2x<br />
2 + x3<br />
= 6<br />
⎨<br />
⎪3x1<br />
+ x2<br />
+ x4<br />
= 9<br />
⎪<br />
⎩x<br />
≥ 0<br />
3<br />
2<br />
3<br />
1<br />
2<br />
3<br />
{ }<br />
1
142<br />
arătând că se poate aplica algoritmul lui Wolfe în forma scurtă.<br />
( ) ′<br />
x ( ) ′<br />
′ = 0,<br />
0<br />
Modele şi algoritmi de optimizare<br />
R. a) ′ = 2,<br />
1 , v , u=0 .<br />
′<br />
′<br />
′<br />
⎛ 24 27 18 ⎞ ⎛ 10 ⎞ ⎛10<br />
⎞<br />
b) x ′ = ⎜ , , 0,<br />
⎟ , v ′ = ⎜0,<br />
0,<br />
, 0⎟<br />
, u ′ = ⎜ , 0⎟<br />
.<br />
⎝ 13 13 13 ⎠ ⎝ 13 ⎠ ⎝13<br />
⎠<br />
3. Să se determine valoarea optimă şi punctul în care se atinge această valoare<br />
pentru problemele 1 şi 2, folosind MathCAD.
7. PROGRAMARE DINAMICĂ<br />
7.1. Generalităţi<br />
Să considerăm un sistem a cărui evoluţie în timp poate fi controlată, chiar şi<br />
parţial, de acţiunile unui factor de cident. În orice moment i al evoluţiei,<br />
starea<br />
i s<br />
sistemului se poate descrie printr-un vector x ∈R<br />
numit vectorul stărilor, sau<br />
vector de stare. Pe fiecare perioadă decidentul ia o decizie δ i , care provoacă o<br />
modificare a stării sistemului, reflectată de un vector de decizie, .<br />
Vectorii de decizie d i i m<br />
d ∈R<br />
pot lua valori admisibile în domeniile<br />
de<br />
m<br />
admisibilitate ∆i ⊂ R , 1 ≤ i ≤ N . Cei doi vectori, de stare şi de decizie de la<br />
momentul i, determină starea sistemului de la momentul i+1, conform unei<br />
legi de evoluţie<br />
i i<br />
xi + 1 = τ i ( x , d ) .<br />
Programarea dinamică este o metodă de optimizare a sistemelor în care se<br />
operează<br />
pe faze sau secvenţe. Baza acestei metode o constituie Principiul de<br />
optimalitate al lui Bellman, care se enunţă astfel (Kaufmann, 1967):<br />
Orice politică optimă nu poate fi formată decât din subpolitici optime.<br />
O politică este alcătuită dintr-o succesiune de decizii. Multe fenomene sau<br />
probleme sunt de natură secvenţială, adică permit descompunerea lor în etape (faze),<br />
fiecare etapă depinzând de cele apropiate, de etapa anterioară şi cea următoare.<br />
Vom introduce în continuare câteva concepte cu care se operează în teoria<br />
deciziilor<br />
(Zidăroiu, 1975). Considerăm s=1 şi m=1 şi atunci vectorul de stare<br />
devine variabila de stare, iar cel de decizie devine variabila de decizie.<br />
Etapele procesului sunt momentele<br />
în care trebuie luate deciziile. În problemele<br />
secvenţiale ele formează un şir crescător, pe care îl vom nota cu 1, 2, ..., N .<br />
Spunem că avem o problemă de decizie cu orizont finit sau infinit, după cum N<br />
este finit sau nu.<br />
În cazul unui orizont finit de N etape, o politică este reprezentată de un<br />
şir<br />
format din deciziile luate în cele N etape.<br />
Dacă orizontul este infinit, orice politică va fi reprezentată printr-un şir infinit,<br />
având aceeaşi interpretare ca şi în<br />
cazul finit.<br />
Schematic, cele prezentate mai sus se pot reprezenta astfel:
144<br />
Modele şi algoritmi de optimizare<br />
Etapa 0 1 2 ... N−1 N<br />
Starea sistemului x0→ x1→ x2→ ... xN−1→ xN<br />
Decizia luată<br />
δ ...<br />
δ<br />
δ 1<br />
2<br />
δ N −1<br />
N<br />
unde x0 este starea iniţială, xN este starea finală.<br />
O problemă de decizii secvenţiale constă în determinarea unui şir finit sau nu<br />
de<br />
decizii, după cum problema este cu orizont finit sau infinit. În urma luării unei<br />
decizii<br />
se modifică starea sistemului conform cu o lege de evoluţie în funcţie de<br />
starea actuală a sistemului<br />
:<br />
x i = τ i(x i-1, d i)<br />
unde<br />
di este o variabilă de decizie având domeniul de admisibilitate ∆i, iar τi<br />
este o transformare<br />
dată, 1 ≤ i ≤ N.<br />
Dacă ne interesează evoluţia sistemului din starea iniţială x0 până în starea<br />
finală x N,<br />
atunci se observă că se poate scrie succesiv<br />
x N = τ N ( x N −1;<br />
d N ) = τ N [ τ N −1(<br />
x N −2<br />
; d N −1);<br />
d N ] = ... = TN<br />
( x0<br />
; d1,...,<br />
d N )<br />
TN reprezentând rezultatul final al înlocuirilor de mai sus.<br />
Se poate spune că politica (δ1, δ2,..., δN) are ca efect transformarea sistemului<br />
din starea iniţială x0 în starea finală xN :<br />
xN = TN(x0; d1, ..., dN) .<br />
Această relaţie permite analiza prospectivă a procesului, deoarece se pleacă din<br />
starea x0 şi se ajunge în starea xN .<br />
Dacă funcţiile τi , 1 ≤ i ≤ N, sunt inversabile, se poate face şi o analiză<br />
retrospectivă a procesului, inversând schema precedentă, astfel<br />
Etapa N N−1 N−2 ... 1 0<br />
Starea sistemului xN→ xN−1→ xN−2→ ... x1→ x0<br />
Decizia luată<br />
δ ... δ<br />
δ N δ N −1<br />
N −2<br />
Dacă notăm cu τ i inversele transformărilor τ i , putem scrie<br />
x = τ i ( x1;<br />
d1)<br />
= τ 1[<br />
τ 2 ( x2<br />
; d 2 ); d1]<br />
= ... = T N ( xN<br />
; d1,<br />
d 2 ,..., d<br />
0 N<br />
unde: , 1 ≤ i ≤ N−1 .<br />
T N se obţine înlocuind xi prin τ i+<br />
1 ( xi+<br />
1;<br />
di<br />
+ 1)<br />
Această relaţie arată că starea finală xN şi politica aleasă δ1, δ2,..., δN determină<br />
starea iniţială x0 .<br />
Diferenţa dintre analiza prospectivă şi cea retrospectivă constă în modul în care<br />
se priveşte evoluţia sistemului (de la x0 către xN sau invers) . Există situaţii în<br />
care este mai eficientă folosirea analizei retrospective în rezolvarea unor probleme.<br />
Decidentul are preferinţe în ceea ce priveşte evoluţia sistemului, preferinţe ce<br />
pot fi descrise printr-o funcţie obiectiv. Problema cu care se confruntă decidentul<br />
este de a alege o evoluţie a variabilelor de decizie astfel încât<br />
să optimizeze funcţia<br />
obiectiv cu restricţiile de admisibilitate şi starea iniţială (finală) date.<br />
)<br />
1
7. Programare dinamică 145<br />
Să notăm ri(xi; di) câştigul parţial dobândit în urma luării deciziei δi în etapa<br />
a i-a, când sistemul trece din starea xi−1 în starea xi.<br />
Câştigul total pentru un orizont de N etape poate fi reprezentat ca o funcţie<br />
de câştigurile parţiale r1, r2, ..., rN asociate diferitelor etape ale sistemului.<br />
Această funcţie se poate scrie sub forma<br />
f [ r1<br />
( x1;<br />
d1<br />
) , r2<br />
( x2<br />
; d 2 ) ,..., rN<br />
( x N ; d N ) ]<br />
şi constituie funcţia obiectiv ataşată procesului de decizii considerat.<br />
i<br />
D efiniţia 7.1. O funcţie fi : R → [ 0,<br />
∞)<br />
se numeşte decompozabilă prospectiv<br />
~ 2<br />
dacă există o funcţie f i : R → [ 0,<br />
∞)<br />
monotonă (crescătoare pentru probleme de<br />
maxim şi descrescătoare pentru probleme de minim) în a doua variabilă astfel<br />
încât<br />
~<br />
f r ,..., r ) f ( r , f ( r ,..., r )) .<br />
i ( 1 i = i i i−1<br />
1 i−1<br />
i<br />
Definiţia 7.2. O funcţie fi : R → [ 0,<br />
∞)<br />
se numeşte decompozabilă retrospectiv<br />
~ 2<br />
dacă există o funcţie f i : R → [ 0,<br />
∞)<br />
monotonă (crescătoare<br />
pentru probleme de<br />
maxim şi descrescătoare pentru probleme de minim) în a doua variabilă astfel<br />
încât<br />
~<br />
f − + r ,..., r ) = f − + ( r , f − ( r + ,..., r )) .<br />
N i 1( i N N i 1 i N i i 1 N<br />
Cu schimbarea de variabilă x′ i = xN<br />
−i<br />
se poate trece de la decompozabilitate<br />
prospectivă la c ea retrospectivă şi invers.<br />
Cazul cel mai frecvent de decompozabilitate este cazul aditiv, când funcţia obiectiv<br />
este de forma<br />
pentru<br />
f<br />
[ r ( x d ) , r ( x ; d ) ,..., r ( x ; d ) ] r ( x ; d )<br />
1<br />
1<br />
1<br />
2<br />
2<br />
2<br />
N<br />
N<br />
N<br />
= ∑<br />
i=<br />
1<br />
; . (7.1)<br />
Se întâlnesc şi probleme în care funcţia obiectiv se exprimă multiplicativ<br />
[ r1<br />
( x1<br />
d1<br />
) , r2<br />
( x2<br />
; d ) ,..., rN<br />
( x N ; d N ) ] = ∏ ri<br />
( xi<br />
; d i )<br />
f ; 2<br />
.<br />
În cazul analizei<br />
retrospective se pot scrie succesiv egalităţile<br />
r x d r [ τ x , d ; d ] = ... = r′<br />
x ; d ,..., d<br />
i ( i,<br />
i ) = i i+<br />
1 ( i+<br />
1 i+<br />
1)<br />
i<br />
i ( i N i )<br />
( ∀ ) i = 1,<br />
N , obţinându-se pentru funcţia obiectiv forma<br />
f [ r ( x d ) , r ( x ; d ) ,..., r ( x ; d ) ] = R′<br />
( x ; d ,..., d )<br />
N<br />
N ; N N − 1 N −1<br />
N −1<br />
1 1 1 N N 1 N<br />
(7.2)<br />
adică funcţia obiectiv depinde de starea finală xN şi de variabilele de decizie dN ,<br />
dN—1 , ... , d1 . Astfel, cunoscând starea finală şi politica aleasă se poate calcula<br />
câştigul asociat politicii considerate.<br />
În cazul analizei prospective, câştigul total se exprimă în funcţie de starea<br />
iniţială x0 şi de variabilele de decizie d1 , d2 , ... , dN , astfel<br />
N<br />
i<br />
N<br />
i= 1<br />
i<br />
i
146<br />
[ r ( x d ) ,..., r ( x ; d ) , r ( x ; d ) ] = R ( x ; d d )<br />
Modele şi algoritmi de optimizare<br />
f 1 1;<br />
1 N − 1 N −1<br />
N −1<br />
N N N N 0 1,...,<br />
N . (7.3)<br />
Printre politicile posibile care fac ca sistemul să evolueze<br />
din starea x0 în<br />
starea xN , există una (sau mai multe)<br />
care optimizează funcţia obiectiv; aceste<br />
politici se numesc politici optime.<br />
Vom nota politica optimă cu ( ˆ δ ,. .., ˆ<br />
1 δ N ) , iar variabilele de decizie<br />
corespunzătoare cu ( d N ) ˆ d ˆ<br />
1 ,.. ., . Mulţimea s tărilor x ˆ ,.. . , ˆN<br />
,<br />
corespunzătoare deciziilor<br />
x 0 , xˆ ( ˆ , ˆ<br />
i = τ i xi−1<br />
di−1<br />
)<br />
1 ≤ i ≤ N<br />
( d ˆ ˆ<br />
1,...,<br />
d N ) constituie<br />
traiectoria<br />
optimă.<br />
Deoarece câştigul total d epinde de stare a iniţială (finală) şi de politica aleasă<br />
este<br />
necesar să se considere mai multe valori posibile pentru starea iniţială x0 sau<br />
starea finală<br />
x N (spunem că simulăm evoluţia sistemului în mai multe situaţii ). În<br />
aceste cazuri politicile optime sunt funcţii de x 0 sau xN , adică<br />
ˆ dˆ<br />
x dˆ<br />
= dˆ<br />
x , 1 ≤ i ≤ N .<br />
i = ( 0 ) sau i i ( N )<br />
d i<br />
Teorema de optimalitate a lui Bellman. Date stările iniţială x0 şi finală xN ,<br />
traiectoria x0,…, xN este optimă dacă traiectoria x0,…, xN-1 este optimă şi xN-1<br />
este astfel încât<br />
~<br />
f N ( rN<br />
( xN<br />
; d N ), f N −1( r 1(<br />
x1;<br />
d1),...,<br />
rN<br />
−1(<br />
xN<br />
−1;<br />
d N −1))<br />
)<br />
este optimă.<br />
Demonstraţie. Notăm V(x 0,x N)<br />
valoarea câştigului optim global. Din<br />
~<br />
decompozabilitate avem că f ( r ( x ; d ), V ( x , x )) este optimă dacă xN =<br />
N N N N N −1 0 N −1<br />
τ N(xN-1,<br />
dN) . Optimalitatea subpoliticii x0,…, xN-1 rezultă din monotonia funcţiei<br />
~<br />
f şi demonstraţia se încheie. <br />
N<br />
În continuare vom prezenta rela ţiile de recurenţă şi rezolvarea problemei de<br />
programare dinamică în cazul analizei retrospective, trecerea la analiza prospectivă<br />
fiind imediată atunci când legile de evoluţie a sistemului analizat sunt inversabile.<br />
7.2. Analiza retrospectivă<br />
Presupunem că avem de rezolvat următoarea problemă: Să se afle decizia<br />
optimă<br />
dˆ<br />
, dˆ<br />
, . . ., dˆ<br />
1 2 N astfel încât<br />
( )<br />
⎧<br />
⎪ f [ r ( x , dˆ<br />
) , r ( x , dˆ<br />
) , . . . , r ( x , dˆ<br />
)<br />
N<br />
N −1<br />
N −1<br />
⎪<br />
⎨=<br />
max f N N N N −1<br />
di<br />
∈∆<br />
⎪ 1≤i≤<br />
N<br />
⎪<br />
⎩xi<br />
−1<br />
= τ i ( xi<br />
; d i ) , 1≤<br />
i ≤ N<br />
sau dacă ţinem seama de (7.2),<br />
N<br />
N<br />
N −1<br />
] =<br />
[ r ( x , d ) , r ( x , d ) , . . . , r ( x , d ) ]<br />
N −1<br />
1<br />
N −1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
(7.4)
7. Programare dinamică 147<br />
f<br />
r<br />
( x , dˆ<br />
) , r ( x , dˆ<br />
) , . . . , r ( x , dˆ<br />
) ] max R'<br />
( x ; d ,..., d )<br />
[ N N N N 1 N −1<br />
N −1<br />
1 1 1<br />
N N 1<br />
di<br />
∈∆<br />
i<br />
1≤i<br />
≤ N<br />
− = .<br />
N<br />
(7.5)<br />
În formularea (7.5) intervin efectiv numai xN şi variabilele de decizie d1, d2 ,<br />
... , dN, deoarece variabilele x0, x 1,<br />
..., xN−1 se determină cu ajutorul precedentelor,<br />
ţinând seama de relaţiile<br />
x − = τ ( x ; d ) , 1≤ i ≤ N −1<br />
.<br />
i 1 i i i<br />
7.2.1. Rezolvarea în cazul aditiv<br />
Considerăm funcţia obiectiv în cazul aditiv (7.1) şi, înlocuind în (7.4), obţinem :<br />
N ⎧<br />
⎪max<br />
∑ ri<br />
( xi , di<br />
)<br />
i∈∆<br />
i ⎨1≤i≤<br />
N<br />
i=<br />
1<br />
⎪<br />
⎩xi<br />
−1<br />
= τ i ( xi<br />
, di<br />
) , 1 ≤ i ≤ N .<br />
Notând cu fN(xN) valoarea maximului (7.6) obţinem<br />
d (7.6)<br />
( x ) = max[<br />
r ( x , d ) + r ( x , d ) + . . . + r ( x , d ) ]<br />
⎧ f N N<br />
N N N N −1<br />
N −1<br />
N −1<br />
1 1<br />
⎪<br />
di<br />
∈∆i<br />
1≤i≤<br />
N<br />
⎪<br />
⎨=<br />
max{<br />
rN<br />
N N<br />
N −1<br />
N −1<br />
N −1<br />
N −2<br />
N −2<br />
d N ∈∆<br />
N<br />
di<br />
∈∆<br />
i<br />
⎪<br />
1≤i≤<br />
N −1<br />
⎪<br />
⎩xi<br />
−1<br />
= τ i ( xi<br />
, d i ) , 1≤<br />
i ≤ N<br />
sau, prin aplicarea Teoremei de optimalitate a lui Bellman<br />
⎧ f N ( xN<br />
) = max[<br />
rN<br />
( xN<br />
, d N ) + f N −1(<br />
xN<br />
−1<br />
) ]<br />
⎪<br />
di∈∆<br />
i<br />
⎨<br />
1≤i≤<br />
N<br />
⎪⎩ xN<br />
−1<br />
= τ N ( xN<br />
, d N ) .<br />
( x , d ) + max [ r ( x , d ) + r ( x , d ) + . . . + r ( x , d )<br />
[ ]<br />
Dacă notăm QN ( xN<br />
, d N ) rN<br />
( xN<br />
, d N ) + f N 1 τ(<br />
xN<br />
, d N )<br />
f ( x ) max Q ( x , d )<br />
N<br />
1<br />
N −2<br />
= − , putem scrie<br />
N<br />
=<br />
1<br />
1<br />
1<br />
]}<br />
(7.7)<br />
= N n N<br />
dN<br />
∈∆<br />
(7.8)<br />
N<br />
şi maximul nu se mai ia după restricţii (restricţiile fiind incluse în expresia funcţiei<br />
QN) .<br />
δ ,..., ˆ δ este o politică optimă<br />
Relaţia (7.7) poate fi justificată astfel: dacă ( )<br />
pentru un orizont de N etape şi cu xN ca stare finală,<br />
atunci subpolitica<br />
( ˆ δ ˆ<br />
1,...,<br />
δ N −1<br />
) este optimă pentru un orizont de N−1 etape cu xN − 1 = τ N ( xN<br />
, d N ) ca<br />
stare finală.<br />
Relaţia (7.8) permite determinarea funcţiei fN(xN) în ipoteza că se cunoaşte<br />
funcţia fN−1(xN−1) .<br />
Pornind de la relaţia (7.8), procedând analog, obţinem:<br />
ˆ 1<br />
N
148<br />
⎧ f1<br />
⎪<br />
⎪.<br />
.<br />
⎪<br />
⎨<br />
fi<br />
⎪.<br />
.<br />
⎪<br />
⎪ f N<br />
⎩<br />
N<br />
( x ) = maxQ<br />
( x , d ) = max r ( , ) x<br />
1<br />
.<br />
d1∈∆1<br />
{ [ ] }<br />
( x ) = maxQ<br />
( x , d ) = max r ( x , d ) + f τ ( x , d )<br />
i<br />
.<br />
.<br />
di∈∆<br />
i<br />
.<br />
.<br />
.<br />
.<br />
.<br />
( x ) = max Q ( x , d ) = max<br />
r ( x , d ) + f τ ( x , d )<br />
N<br />
dN<br />
∈∆<br />
N<br />
1<br />
i<br />
.<br />
.<br />
N<br />
1<br />
i<br />
.<br />
.<br />
1<br />
i<br />
N<br />
.<br />
.<br />
.<br />
.<br />
d1∈∆1<br />
.<br />
di∈∆<br />
i<br />
N<br />
.<br />
.<br />
.<br />
1<br />
.<br />
.<br />
i<br />
dN<br />
∈∆<br />
N<br />
.<br />
.<br />
i<br />
1<br />
.<br />
.<br />
N<br />
i<br />
.<br />
.<br />
N<br />
.<br />
.<br />
.<br />
i−1<br />
.<br />
N<br />
i<br />
.<br />
.<br />
.<br />
i<br />
.<br />
Modele şi algoritmi de optimizare<br />
.<br />
i<br />
.<br />
N −1<br />
.<br />
.<br />
.<br />
, 2 ≤ i ≤ N −1<br />
.<br />
[ ]}<br />
Aceste relaţii se numesc ecuaţiile de recurenţă ale programării dinamice.<br />
Rezolvarea problemei iniţiale înseamnă calcularea funcţiilor<br />
f1(x1), f2(x2), ..., f N(xN) şi dˆ = d xˆ<br />
.<br />
N<br />
( x )<br />
N<br />
1 d<br />
{<br />
N<br />
N<br />
N<br />
N<br />
( )<br />
Algoritmul pentru rezolvarea problemei de programare dinamică în cazul aditiv<br />
Pas 0. Se determină xˆ cu f xˆ = max f x ;<br />
N<br />
.<br />
.<br />
N<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
(7.9)<br />
Funcţiile fi(xi) , 1≤ i ≤ N , se determină din relaţiile de recurenţă (7.8), iar<br />
dˆ = d ˆ din ultima din aceste relaţii.<br />
Se determină d d ( xˆ<br />
)<br />
Pas 1. Pentru i:=N ,2<br />
N<br />
N<br />
N<br />
( ) ( )<br />
N<br />
ˆ = ;<br />
determină xˆ ( ˆ , ˆ<br />
i 1 = τ i xi<br />
di<br />
)<br />
N<br />
xN<br />
− ; ˆ ( ˆ<br />
i−<br />
1 = di−1<br />
xi−1<br />
)<br />
N<br />
d ;<br />
Pas 2. Reţine: d ˆ , dˆ<br />
, ... , dˆ<br />
; x , xˆ<br />
, ... , xˆ<br />
; f ˆ ) . Stop !<br />
1 2 N<br />
ˆ1 2 N<br />
N ( xN<br />
Procedeul de mai sus presupune cunoaşterea expresiilor analitice ale funcţiilor<br />
fi , di .<br />
Vom prezenta câteva situaţii în care metodele programării dinamice conduc la<br />
obţinerea optimului fără a se apela la evidenţierea<br />
tuturor soluţiilor posibile.<br />
7.2.2. Problema repartiţiei investiţiilor Având o sumă de 5.10 9 lei cu care trebuie cumpărate acţiuni la 4 soc ietăţi, care<br />
în funcţie de suma investită<br />
asigură profituri<br />
conform cu Tabelul 7.1, să se<br />
stabilească o reparti ţie optimă<br />
a sumelor investite la fiecare societate, astfel încât<br />
profitul obţinut în ur ma aplicării acestei politici de inve stiţii să fie maxim<br />
(Kaufmann, 1967).<br />
Se cere să se determine repartiţia optimă a investiţiilor în acţiuni la cele 4<br />
societăţi, adică acea repartiţie care dă profitul<br />
total maxim.
7. Programare dinamică 149<br />
Societatea<br />
Suma investită<br />
Tabelul 7.1<br />
Profitul în procente<br />
(în miliarde de lei) S1 S2 S3 S4<br />
0 0 0 0 0<br />
1 0.28 0.25 0.15 0.20<br />
2 0.45 0.41 0.25 0.33<br />
3 0.65 0.55 0.40 0.42<br />
4 0.78 0.65 0.50 0.48<br />
5 0.90 0.75 0.62 0.53<br />
xi –numărul total de miliarde investite în acţiuni la primele i<br />
societăţi, .<br />
x4 – mărime S=5·10 9 Rezolvare<br />
Modelarea problemei<br />
Notaţii : di –numărul de miliarde investite în acţiuni la societatea i.<br />
1≤ i ≤ 4<br />
a totală a investiţiilor, care este de cel mult .<br />
ri(di)− profitul adus de suma di<br />
investită în acţiunile la<br />
societatea i.<br />
Problema<br />
are următoarea formulare:<br />
4 ⎧<br />
∑=<br />
⎪max<br />
ri<br />
( di<br />
)<br />
i 1 ⎪ 4<br />
⎪<br />
⎨∑d<br />
i ≤ x4<br />
≤ S<br />
⎪ i=<br />
1<br />
⎪di<br />
≥ 0 1≤<br />
i ≤ 4<br />
⎪<br />
⎩<br />
Precizarea funcţiilor f i (suntem în cazul analizei retrospective).<br />
Pentru orice 1≤ i ≤ 4,<br />
0 ≤ xi<br />
≤ x4<br />
şi x −1<br />
= xi<br />
− di<br />
= i ( xi<br />
, di<br />
), 2 ≤ i ≤ 4<br />
0 ≤ ≤ x , 1≤<br />
i ≤ 4 . Am precizat astfel domeniul de admisibilitate:<br />
di n<br />
∆ = [ 0,<br />
x ] , d ∈∆<br />
.<br />
i τ şi<br />
i i i i<br />
xi+ 1 = xi<br />
+ di<br />
= τ i ( xi<br />
, di<br />
), 1≤<br />
i ≤ .<br />
Pentru analiza prospectivă 3<br />
4 4<br />
Deoarece −1<br />
4 ) ( ∑d i = ∑ xi<br />
− xi<br />
= xi<br />
≤ x luând x0=0, cu notaţiile din modelul<br />
i= 1 i=<br />
1<br />
teoretic obţinem ecuaţiile de recurenţă:<br />
f x ) = max r ( d ) ; coloana S1 din tabel este crescătoare şi reprezintă r1<br />
1(<br />
1<br />
1 1<br />
0≤d1≤<br />
x1<br />
f 2 ( x2<br />
) = [ r<br />
2 ( d 2 ) + f1(<br />
x1<br />
) ] = max r2<br />
( d 2 ) + f ( x2<br />
− d 2 ) ; 0 ≤ d 2 ≤<br />
f3 ( x3<br />
) = max[ r<br />
3(<br />
x3<br />
) + f 2 ( x3<br />
− d3<br />
) ] ; 0 ≤ d3<br />
≤ x3<br />
f 4 ( x4<br />
) = max [ r4<br />
( x4<br />
) + f 3 (x4−d4)<br />
] ; 0 ≤ d 4 ≤ x4<br />
; x4<br />
≤ S .<br />
[ ] 2<br />
max x<br />
Determinarea valorilor funcţiilor fi :<br />
f x ) max r ( x ) = r ( d ) , r1 fiind crescătoare<br />
1(<br />
1 = 1 1 1 1<br />
0 d1 ≤ x1<br />
≤ deci: d ˆ ( x ) =<br />
x .<br />
1<br />
1<br />
1
150<br />
Modele şi algoritmi de optimizare<br />
x 2=0<br />
f 2 ( 0)<br />
= max[<br />
r2<br />
( d 2 ) + f1(<br />
0 − d 2 ) ] = 0 cu 0 ≤ d 2 ≤ 0 . Deoarece r2(0)=0 şi f1(0)=0<br />
rezultă d2=0.<br />
x2=1<br />
f<br />
f<br />
1)<br />
max r ( d ) + f ( 1 − d ) cu ≤ d ≤1<br />
, d ∈ 0,<br />
1 .<br />
= [ 2 2 1 ] 0 2 2 { }<br />
= max[<br />
r ( 0)<br />
+ f ( 1)<br />
; r ( 1)<br />
+ f ( 0)<br />
] = max[<br />
0 + 0.<br />
28;<br />
0.<br />
25<br />
+ 0]<br />
= 0.<br />
28<br />
2(<br />
2<br />
2 ( 1)<br />
2 1 2 1<br />
d ˆ<br />
2 ( 1)<br />
= 0 .<br />
valoare obţinută pentru<br />
x 2=2<br />
f 2(<br />
2)<br />
max[<br />
r2<br />
( d 2 ) + f1(<br />
2 − d 2)<br />
] cu 0 ≤ d 2 ≤ 2 , d 2 ∈ 0,<br />
1,<br />
2<br />
f 2)<br />
= max g ( 0)<br />
+ f ( 2)<br />
; r ( 1)<br />
+ f ( 1);<br />
r ( 2)<br />
+ f ( 0)<br />
=<br />
= { }<br />
[ 2 1 2 1 2<br />
= max[<br />
0 + 0.<br />
45;<br />
0.<br />
25 + 0.<br />
28;<br />
0.<br />
41 + 0]<br />
= 0.<br />
53<br />
]<br />
2 ( 1<br />
valoare obţinută pentru d=1; rezultă d ( 2)<br />
= 1.<br />
x 2=3<br />
f 2(<br />
3)<br />
= max[<br />
r2<br />
( d 2)<br />
+ f1(<br />
3 − d 2)<br />
] cu 0 ≤ d 2 ≤ 3 , d 2 ∈{<br />
0,<br />
1,<br />
2,<br />
3}<br />
f 2(<br />
3)<br />
= max[<br />
r2<br />
( 0)<br />
+ f1(<br />
3)<br />
; g2<br />
( 1)<br />
+ f1<br />
( 2);<br />
r2<br />
( 2)<br />
+ f1(<br />
1)<br />
; r2<br />
( 3)<br />
+ f1(<br />
0)<br />
] =<br />
= max 0 + 0.<br />
65;<br />
0.<br />
25 + 0. 45;<br />
0.<br />
41 + 0.<br />
28;<br />
0.<br />
55 + 0 = 0.<br />
= max<br />
[ ] 70<br />
ˆ 2<br />
ˆ 2<br />
rezultat obţinut pentru d=1 şi astfel d ( 3)<br />
= 1.<br />
x 2=4<br />
f 2(<br />
4)<br />
= max[<br />
r2<br />
( d 2 ) + f1(<br />
4 − d 2)<br />
] cu 0 ≤ d 2 ≤ 4 , d 2 ∈{<br />
0,<br />
1,<br />
2,<br />
3,<br />
4}<br />
f 4)<br />
= max r ( 0)<br />
+ f ( 4)<br />
; r ( 1)<br />
+ f ( 3);<br />
r ( 2)<br />
+ f ( 2)<br />
; r ( 3)<br />
+ f ( 1);<br />
r ( 4)<br />
+ f ( 0)<br />
=<br />
[ 2 1 2 1 2 1 2 1 2 ]<br />
[ 0.<br />
78;<br />
0.<br />
90;<br />
0.<br />
86;<br />
0.<br />
83;<br />
0.<br />
65]<br />
= 0.<br />
90<br />
2 ( 1<br />
valoare obţinută pentru d =1 , rezultă dˆ<br />
( 4)<br />
= 1.<br />
f<br />
x 2 = 5<br />
= max r d + f x − d ; d<br />
2<br />
() 5 [ 2(<br />
2 ) 1(<br />
2 2 ) ] 2 ∈{<br />
0,<br />
1,...<br />
5}<br />
r2<br />
( 0)<br />
+ f1(<br />
5)<br />
; r2<br />
( 1)<br />
+ f1(<br />
4)<br />
; r2<br />
( 2)<br />
+ f1(<br />
3)<br />
; g 2 ( 3)<br />
+ f1(<br />
2) ; r2<br />
( 4)<br />
+ f1(<br />
1)<br />
;<br />
r () 5 + f ()= 0 ]<br />
= max[<br />
2<br />
1<br />
2<br />
= max [ 0 + 0.<br />
9;<br />
0.<br />
25 + 0.<br />
78;<br />
0.<br />
41<br />
+ 0.<br />
65;<br />
0.<br />
55 + 0.<br />
45;<br />
0.<br />
65 + 0.<br />
28;<br />
0.<br />
75 + 0]=<br />
= max 0.<br />
9;<br />
1.<br />
03;<br />
1.<br />
06;<br />
1.<br />
00;<br />
0.<br />
93;<br />
0.<br />
75<br />
= 1.<br />
6 obţinut pentru d2=2 . Astfel<br />
ˆ 2<br />
d ( 5)<br />
= 2 .<br />
[ ] 0<br />
x 3 = 0<br />
f 0)<br />
= max r ( d ) + f ( 0 − d ) cu<br />
[ ] 0 ≤ 0<br />
3(<br />
3 3 2 3<br />
rezultă d3=0.<br />
d ˆ<br />
3 ( 0)<br />
= 0 .<br />
≤ d . Deoarece r3(0)=0 şi f3(0)=0<br />
3 1<br />
cu<br />
= x<br />
f3 ( 1)<br />
= max[<br />
r3<br />
( d3<br />
) + f 2 ( 1−<br />
d3<br />
) ] 0 ≤ d 3 ≤1<br />
, d3<br />
∈{<br />
0,<br />
1}<br />
.<br />
f 1)<br />
= max r ( 0)<br />
+ f ( 1)<br />
; r ( 1)<br />
+ f ( 0)<br />
= max 0 + 0.<br />
28;<br />
0.<br />
15 + 0<br />
[ ] [ ] = 0.<br />
28<br />
3 ( 3 2 3 2<br />
d ˆ<br />
3 ( 1)<br />
= 0 .<br />
obţinută pentru<br />
3
7. Programare dinamică 151<br />
x3=2<br />
f 2)<br />
= max[<br />
r ( d ) + f ( d ) ]<br />
3(<br />
3 3 2 3<br />
f3<br />
( 2)<br />
= max r3<br />
( 0)<br />
+ f 2 ( 2)<br />
r3<br />
( 1<br />
obţinută pentru dˆ<br />
3 ( 2)<br />
= 0 .<br />
2 − cu 0 ≤ d 3 ≤ 2 , d 3 ∈{<br />
0,<br />
1,<br />
2}<br />
[ ; ) + f ( 1);<br />
r3<br />
( 2)<br />
+ f ( 0)<br />
] = max[<br />
0.<br />
53;<br />
0.<br />
43;<br />
0.<br />
25]<br />
= 0.<br />
53<br />
f<br />
x3=3<br />
3)<br />
= max r ( d ) + f ( 3 − d cu<br />
f<br />
3(<br />
3 3 2 3 0 ≤ d 3 ≤ 3 , d3<br />
∈ 0,<br />
1,<br />
2,<br />
3(<br />
3)<br />
= max r3<br />
( 0)<br />
+ f 2(<br />
3)<br />
; r3<br />
( 1)<br />
+ f 2(<br />
2);<br />
r3<br />
( 2)<br />
+ f 2(<br />
1);<br />
r3<br />
( 3)<br />
+ f 2<br />
= max<br />
2<br />
[ ) ]<br />
{ 3}<br />
[ ( 0)<br />
]<br />
[ 0.<br />
70;<br />
0.<br />
68;<br />
0.<br />
53;<br />
0.<br />
40]<br />
= 0.<br />
70<br />
Aşadar, pentru d=0 s-a obţinut valoarea maximă şi rezultă<br />
f<br />
x3=4<br />
4)<br />
= max r ( d ) + f ( d ) cu<br />
f<br />
3(<br />
3 3 2<br />
0 ≤ d 3 ≤ 4 , d3<br />
∈ 0,<br />
1,<br />
2,<br />
3,<br />
4<br />
3(<br />
4)<br />
= max r3<br />
( 0)<br />
+ f2<br />
( 4)<br />
; r3<br />
( 1)<br />
+ f 2(<br />
3)<br />
; r3<br />
( 2)<br />
+ f2<br />
( 2);<br />
r3<br />
( 3)<br />
+ f2<br />
( 1);<br />
r3<br />
( 3)<br />
+ f 2<br />
= max<br />
2<br />
ˆ 3<br />
=<br />
d ( 3)<br />
= 0 .<br />
[<br />
[<br />
4 − 3 ]<br />
{ }<br />
( 1)<br />
]<br />
[ 0.<br />
90;<br />
0.<br />
85;<br />
0.<br />
78;<br />
0.<br />
68;<br />
0.<br />
5]<br />
= 0.<br />
90<br />
valoare obţinută pentru d=0; rezu ltă d ( 4)<br />
= 0 .<br />
x3=5<br />
f 4)<br />
= max r ( d ) + f ( 4 − d ) cu ≤ d ≤ 4 , d ∈{<br />
0,<br />
1,<br />
2,<br />
3,<br />
4}<br />
[ ]<br />
3(<br />
3 3 2 3<br />
f ( 5)<br />
= max[ r ( 0)<br />
+ f<br />
3<br />
r<br />
3<br />
3<br />
( 5)<br />
+<br />
f<br />
2<br />
2<br />
( 5)<br />
;<br />
r<br />
3<br />
( 1)<br />
+<br />
( 0)]<br />
= max<br />
obţinut pentru d=0; rezultă<br />
f<br />
2<br />
ˆ 3<br />
0 3 3<br />
( 4);<br />
r ( 2)<br />
+<br />
3<br />
f<br />
2<br />
( 3);<br />
( 3)<br />
( 2);<br />
( 4)<br />
[ 1.<br />
06;<br />
1.<br />
05;<br />
0.<br />
95;<br />
0.<br />
93;<br />
0.<br />
78;<br />
0.<br />
60]<br />
= 1.<br />
06<br />
Analog, găsim pentru f4 valorile: f4(0)=0 ş i d ( 0)<br />
= 0 , f4(1)=0.28 şi d ( 1)<br />
= 0 ,<br />
ˆ 4<br />
f4(2)=0.53 şi d ( 2)<br />
= 0 , f4( 3) =0 .73 şi d ( 3)<br />
= 1,<br />
f4(4)=0.9 şi<br />
dˆ ( 4)<br />
= 0 sau dˆ<br />
( 4)<br />
= 1 , f4(5)=1.1 şi d ( 5)<br />
= 1.<br />
Centralizăm în Tabelul 7.2<br />
4<br />
valorile<br />
găsite pentru f şi d .<br />
4<br />
ˆ 3<br />
d ( 5)<br />
= 0 .<br />
Tabelul 7.2<br />
x d 1( x)<br />
f1(x) d 2 ( x)<br />
f2(x) d 3( x)<br />
f3(x) d 4 ( x)<br />
f4(x)<br />
0 0 0 0 0 0 0 0 0<br />
1 1 0.28 0 0.28 0 0.28 0 0.28<br />
2 2 0.45 1 0.53 0 0.53 0 0.53<br />
3 3 0.65 1 0.70 0 0.70 1 0.73<br />
4 4 0.78 1 0.90 0 0.90 0 sau 1 0.90<br />
5 5 0.90 2 1.06 0 1.06 1 1.1<br />
ˆ 4<br />
ˆ 4<br />
r<br />
3<br />
ˆ 4<br />
+<br />
f<br />
2<br />
r<br />
3<br />
+<br />
f<br />
2<br />
ˆ 4<br />
( 1);<br />
=
152<br />
Culegerea rezultatelor. Se observă că<br />
Atunci<br />
Dar<br />
max f 4 ( x4<br />
) = f 4 ( 5)<br />
= 1.<br />
1<br />
0≤ x4<br />
≤5<br />
şi ˆ4 = 5<br />
xˆ<br />
ˆ ˆ<br />
3 = x4<br />
− d 4 ( x4<br />
) = 4 .<br />
Modele şi algoritmi de optimizare<br />
x , iar dˆ<br />
( x ) = 1.<br />
dˆ ( xˆ<br />
) = dˆ<br />
( 4)<br />
= 0 şi atunci x = xˆ<br />
− dˆ<br />
( x ) = 4 .<br />
3<br />
3<br />
3<br />
ˆ2 3 3 3<br />
În continuare avem:<br />
d ˆ ( ˆ 2 x2<br />
) = dˆ<br />
2 ( 4)<br />
= 1 , iar x ˆ ˆ 1 = x2<br />
− dˆ<br />
2 ( x2<br />
) = 3 ; d ˆ ˆ ˆ<br />
1 ( x1)<br />
= d1<br />
( 3)<br />
= 3 .<br />
Astfel, politica optimă este d ˆ , dˆ<br />
, dˆ<br />
, dˆ<br />
= 3,<br />
1,<br />
0,<br />
1 ceea ce înseamnă că din<br />
( 1 2 3 4 ) ( )<br />
cele 5 miliarde se vor investi 3 miliarde în acţiun i la prima societate, 1 la cea<br />
de-a<br />
doua şi 1 la cea de-a patra. Nu se vor achiziţiona acţiuni de la societatea a treia.<br />
7.2.3. Problema gestiunii stocului<br />
Principiul de optimalitate al lui Bellman poate fi enunţat şi sub următoarea<br />
formă, aşa cum va fi folosit în rezolvarea problemei ce urmează.<br />
Într-un şir optimal de decizii, oricare ar fi prima decizie luată, deciziile următoare<br />
formează un subşir care este optimal, ţinând seama de rezultatele primei decizii.<br />
În continuare vom rezolva următoarea problemă cunoscută sub<br />
numele de<br />
problema<br />
gestiunii stocului.<br />
Tabelul 7.3 dă pentru cinci perioade cantităţile unitare de produs di pe care<br />
un vânzător le va furniza, precum şi preţurile ci cu care el poate achiziţiona aceste<br />
produse pe care le va revinde la preţ constant. El cumpără la începutul perioadei<br />
un număr întreg de produse, dispune de o capacitate de stocare gratuită de 5<br />
unităţi.<br />
Trebuie ca la începutul fiecărei perioade să dispună de suficiente produse<br />
pentru a face faţă cererii, începe şi termină cu stoc<br />
nul. Cum trebuie să organizeze<br />
aceste cumpărături<br />
astfel încât profitul său să fie maxim ?<br />
Rezolvare. Notăm :<br />
Tabelul 7. 3<br />
Perioada i 1 2 3 4 5<br />
Cererea bi 2 3 4 3 2<br />
Preţul c 13 15 20 11 12<br />
i<br />
4<br />
4
7. Programare dinamică 153<br />
di = cantitatea de produs cumpărată la începutul perioadei i , are rol de variabilă de<br />
decizie ;<br />
xi = cantitatea de produs rămasă în stoc la sfârşitul perioadei i , xi este în acest caz<br />
variabila de stare, pentru că permite cunoaşterea perfectă a stării situaţiei la<br />
sfârşitul fiecărei perioade.<br />
Restricţiile sistemului sunt<br />
⎧ bj ≤ x j −1<br />
+ d j ≤ 5<br />
⎪<br />
⎨x j = x j −1 + d j − bj<br />
j = 1,<br />
5<br />
⎪<br />
⎩ x0<br />
= 0 ; x5<br />
= 0.<br />
Funcţia de optimizat este f (d)<br />
= ∑ j j d c .<br />
S-a obţinut astfel o problemă de programare în numere întregi.<br />
5<br />
j=<br />
1<br />
Ţinând seama de cererea de la perioada întâi, se vede (Tabelul 7.4) că perioada<br />
întâi se poate termina cu 0 ; 1 ; 2 sau 3 unităţi în stoc.<br />
b<br />
2<br />
Tabelul 7.4<br />
1 x1 d1 f(d) min<br />
3 5 65<br />
2 4 52<br />
1 3 39<br />
0 2 26<br />
Perioada a doua (Tabelul 7.5) se poate termina cu 0 , 1 sau 2 unităţi în stoc<br />
(x1+d2=b2=3).<br />
Tabelul 7.5<br />
b2 x2 x1 d2 f(d) min<br />
0 3 26+45=71<br />
0 1 2 39+30=69<br />
2 1 52+15=67<br />
3 0 65+0=65 *<br />
0 4 26+60=86<br />
3<br />
1 1<br />
2<br />
3<br />
2<br />
39+45=84<br />
52+30=82<br />
3 1 65+15=80 *<br />
0 5 26+75=101<br />
2 1 4 39+60=99<br />
2 3 52+45=97<br />
3 2 65+30=95 *<br />
Perioada a treia (Tabelul 7.6) se poate termina cu 0 sau 1 unităţi în stoc<br />
(x2+d3=b3=4).
154<br />
Tabelul 7.6<br />
b3 x3 x2 d3 f(d) min<br />
0 4 65 +80=145 0 1 3 80+60=140<br />
4 2 2 95+4 0 =135 *<br />
0 5 65+100=165<br />
1 1 4 80+80=160<br />
2 3 95+60=155 *<br />
Perioada a patra (Tabelul 7.7) se poate termina cu 0, 1 sau 2<br />
(x3+d4=b4= 3).<br />
Tabelul 7.7<br />
b4 x4 x3 d4<br />
f(d) min<br />
3<br />
0<br />
1<br />
2<br />
0 3 135+33=168 *<br />
1 2 155+22=177<br />
0 4 135+44=179 *<br />
1 3 155+33=188<br />
0 5 135+55=190 *<br />
1 4 155+44=199<br />
Modele şi algoritmi de optimizare<br />
unităţi în stoc<br />
La sfârşitul perioadei a cincea (Tabelul 7.8) avem x5=0 şi, deoarece x4+d5=b5=2,<br />
rezultă<br />
Politica optimală de cumpărături este<br />
Tabelul 7.8<br />
d5 f(d)<br />
0 2 168+24=192<br />
1 1 179+12=191<br />
2 0 19 0 *<br />
b5 x4 min<br />
2<br />
⎧ ⎧ ⎧ ⎧x1<br />
= 3<br />
⎪ ⎪ ⎪ ⎪<br />
⎪ ⎪ ⎪x<br />
2 = 2 ⇒ ⎨d1<br />
= 5<br />
⎪ ⎪x<br />
= ⇒ ⎨ ⎪<br />
3 0<br />
⎪<br />
⎩ f ( d)<br />
= 65<br />
⎪<br />
= 2 ⇒ ⎨ ⎪<br />
⎪x<br />
4<br />
d 2 = 2<br />
⎨ ⎪ ⎪<br />
d 5 = 0 ⇒<br />
⎪<br />
⎪⎩<br />
f ( d)<br />
= 95<br />
⎪<br />
⎪d<br />
3 = 2<br />
⎪<br />
⎪ ⎪<br />
⎩ f ( d)<br />
= 135<br />
⎪d<br />
4 = 5<br />
⎪<br />
⎪⎩<br />
f (d ) = 190<br />
sau: d5=0 ; d 4 =5 ; d3 =2 ; d2=2 ; d1=5 cu costul minim,<br />
f(d)= 0× 12+ 5×11+ 2× 20 +2 ×15 +5 ×13=1 90 .
7. Programare dinamică 155<br />
Generalizare Clasa de probleme Pk(x). Să se determine o politică optimală de<br />
cumpărături pe primele k perioade, putând termina cele k perioade cu x produse<br />
în stoc. Problema iniţială poate să<br />
fie considerată ca P5(0). Vrem să punem în<br />
evidenţă o relaţie de recurenţă<br />
între aceste diferite probleme şi să le rezolvăm de o<br />
manieră mai economică în timp.<br />
Notă m zk(x), valoarea optimului funcţiei obiectiv a problemei Pk(x). Avem<br />
z ( x)<br />
= min c d + z ( x + b − d ) ,<br />
relaţia { }<br />
k<br />
dk<br />
( x)<br />
k<br />
k<br />
k −1<br />
unde d x)<br />
= { d b + b − + x − 5 ≤ d ≤ x + b }<br />
k<br />
( 1 .<br />
k<br />
k<br />
k<br />
Rezumăm calculele precedente în Tabelul 7.9.<br />
k<br />
k<br />
Tabelul 7.9<br />
x z1(x) d1(x) d2(x) d2(x) d3(x) d3(x) d4(x) d4(x) d5(x) d5(x)<br />
0 26 2 65 0 135 2 168 3 190 0<br />
1 36 3 80 1 155 3 179 4 * *<br />
2 52 4 95 2 * * 190 5 * *<br />
3 65 5 * * * * * * * *<br />
În acest tablou coloanele au fo st completate de la stânga la dreapta, calculând<br />
d1(x) apoi z1(x) ş. a. m.<br />
d. Culegerea solu ţiei<br />
optimal e se face de la dreapta la<br />
stânga. Ştiind că d5=0<br />
şi b5=2, adică x4= 2, cău tăm solu ţia pen tru P4(2)<br />
. Găsim<br />
d4=5, adică x3=0 şi atunci căutăm P3(0)<br />
. Din Tabelul 7.9 avem d3=2 şi, cum<br />
b 3=4, rezultă x2=2. Căutăm acum soluţia pentru P2(2) . Cum b2=3<br />
şi din tabel<br />
d2=2, rezultă că x1=3, şi acum ne interesează P1(3) . Din Tabelul 7.9 rezultă că<br />
d1=5 şi astfel am ajuns la soluţia finală.<br />
7.2.4. Problema alocării optime a resurselor<br />
Trei echipe de cercetători A, B, C lucrează la un acelaşi proiect folosind<br />
abordări diferite. Echipele au probabilităţile de eşec : P(A)=0.4 ; P(B)=0.6 ;<br />
P(C)=0.8. Se decide alocarea a 2 noi cercetători la proiect în scopul minimizării<br />
probabilităţii de eşec a proiectului. Pentru a decide alocarea cercetătorilor<br />
suplimentari s-a stabilit Tabelul 7.10 (Henry-Labordere, 1995).<br />
Nr. cercetători noi alocaţi<br />
Tabelul<br />
7.10<br />
Noile probabilităţi de eşec pentru<br />
echipe<br />
A B C<br />
0 0.4 0.6 0.8<br />
1 0.2 0.4 0.5<br />
2 0.15 0.2 0.3<br />
Care este alocarea optimală a cercetătorilor suplimentari astfel încât împreună<br />
să aibă probabilitatea de eşec minimă ?<br />
k<br />
k
156<br />
Modele şi algoritmi de optimizare<br />
Rezolvare<br />
Fie dA, dB, dC numărul de cercetători afectaţi echipelor A, B, C ,<br />
rA(dA), rB(dB), rC(dC) funcţiile care dau probabilităţile de eşec pentru fiecare echipă,<br />
xA numărul cercetătorilor alocaţi proiectului A ;<br />
xB numărul cercetătorilor alocaţi proiectelor A şi B , şi<br />
xC numărul cercetătorilor alocaţi proiectelor A, B şi C.<br />
Probabilitatea de eşec – toate echipele eşuează – este<br />
f ( x)<br />
r ( d ) ⋅ r ( d ) ⋅ r ( d ) , d + d + d ≤ 2 .<br />
( )<br />
= A A B B C C A B C<br />
Fie x , probabilitatea minimă atunci când se utilizează x cercetători<br />
f i<br />
suplimentari pentru proiectele A, B, C.<br />
i<br />
{ }<br />
( x)<br />
min f ( x − d ) r ( d ) , i { A,<br />
B,<br />
C}<br />
f ⋅<br />
= pred ( i)<br />
i<br />
i<br />
i<br />
∈ , unde d = x , iar<br />
{ A,<br />
B,<br />
C}<br />
Soluţia este analoagă soluţiei problemei repartiţiei<br />
investiţiilor.<br />
Să determinăm valorile funcţiilor , i ∈ A,<br />
B,<br />
C .<br />
f { }<br />
i<br />
i∈<br />
∑<br />
i<br />
1 = f .<br />
pred ( A)<br />
( x)<br />
= min r ( x)<br />
, deoarece r este descrescătoare, aşa cum se vede din coloana<br />
f A A<br />
A a Tabelulu i 7 .10 şi atu nci ˆ ( x)<br />
= x .<br />
x=0 , atunci 0 ≤ d B ≤ 0 şi<br />
d A<br />
{ ( 0)<br />
⋅ f ( 0)<br />
} = min{<br />
0.<br />
6 ⋅ 0.<br />
4}<br />
0.<br />
4<br />
A<br />
f ( 0) min r = 2 , iar dˆ<br />
( 0)<br />
= 0 .<br />
B<br />
= B<br />
x=1 , atunci 0 ≤ d B ≤1 şi<br />
A<br />
{ ( ) f ( 1−<br />
d ) } = min{ r ( 0 ⋅ f ( 1 r ( 1 f ( 0 }<br />
f ( 1 ) min r d ) ); ) ⋅ ) = 0.<br />
12 ,<br />
B<br />
ˆd ( 1)<br />
= 0 .<br />
f<br />
=<br />
B<br />
B<br />
= B B ⋅ A B<br />
B A B A<br />
x=2 , atunci 0 d ≤ 2 şi<br />
( 2)<br />
0.<br />
08 ,<br />
= min<br />
iar dˆ<br />
≤ B<br />
{ r ( d ) ⋅ f ( 2 − d ) } = min{<br />
r ( 0)<br />
⋅ f ( 2);<br />
r ( 1)<br />
⋅ f ( 1);<br />
r ( 2)<br />
⋅ f ( 0)<br />
}<br />
B<br />
B<br />
( 2)<br />
B<br />
= 2<br />
A<br />
sau<br />
1.<br />
x= 0 , atunci 0 d ≤ 0 şi<br />
≤ C<br />
B<br />
{ r ( 0)<br />
⋅ f ( 0)<br />
} = min{<br />
0.<br />
8 ⋅ 0.<br />
24}<br />
0.<br />
192<br />
f ( 0)<br />
min<br />
= , iar dˆ<br />
( 0)<br />
= 0 .<br />
C<br />
= C B<br />
x=1 , atunci 0 ≤ d B ≤1<br />
şi<br />
f ( 1)<br />
min r ( d ) ⋅ f ( 1−<br />
d ) = min r ( 0)<br />
⋅ f ( 1)<br />
; r ( 1)<br />
⋅ f ( 0)<br />
= 0.<br />
,<br />
B<br />
dˆ<br />
( 1)<br />
= 0 .<br />
f<br />
C<br />
C<br />
=<br />
min<br />
B<br />
{ } { } 096<br />
= C C B C<br />
C B C B<br />
x=2 , atunci 0 d ≤ 2 şi<br />
( 2)<br />
≤ C<br />
= min{<br />
rC<br />
( dC<br />
) ⋅ f B ( 2 − dC<br />
) } = min{<br />
rC<br />
( 0)<br />
⋅ f B ( 2);<br />
rC<br />
( 1)<br />
⋅ f B ( 1);<br />
rC<br />
( 2)<br />
⋅ f B ( 0)<br />
}<br />
{ 0.<br />
8 ⋅ 0.<br />
8;<br />
0.<br />
5 ⋅ 0.<br />
12;<br />
0.<br />
3 ⋅ 0.<br />
24}<br />
= 0.<br />
06 , iar dˆ<br />
( 2)<br />
= 1.<br />
Datele obţinute sunt trecute în Tabelul 7.11<br />
A<br />
C<br />
B<br />
B<br />
C<br />
A<br />
B<br />
A<br />
=<br />
=
7. Programare dinamică 157<br />
x fA(x) *<br />
Tabelul 7.11<br />
dˆ A ( x)<br />
fB(x) *<br />
d B (x)<br />
fC(x) *<br />
d C (x)<br />
0 0.4 0 0.24 0 0.192 0<br />
1 0.2 1 0.12 0 0.096 0<br />
2 0.15 2 0.08 2 sau 1 0. 06 1<br />
Valoarea soluţiei optimale este fC ( x ) =0.06 pentru alocarea ambilor<br />
cercetători,<br />
astfel:<br />
x ˆ C = 2 şi d ˆ<br />
C = 1 , adică se alocă un cercetător la proiectul C ;<br />
x ˆ xˆ<br />
− dˆ<br />
= 1 , dar dˆ<br />
d ( 1)<br />
= 0 , adică la proiectul B nu se mai alocă alt<br />
B = c C<br />
B = B<br />
cercetător;<br />
x ˆ xˆ<br />
− dˆ<br />
= 1 , însă dˆ<br />
d ( 1)<br />
= 1,<br />
adică se alocă un cercetător la proiectul A.<br />
A = B B<br />
A = A<br />
7.3. Probleme propuse<br />
1. O firmă de construcţii are 4 000 000 euro pe care vrea să-i investească în<br />
construirea a 3 tipuri de locuinte B1, B2, B3. Profitul adus de fiecare tip de locuinţă<br />
este<br />
dat de Tabelul 7.12.<br />
Tabelul 7.12<br />
Suma investită (mil) B1 B2 B3<br />
0 0 0 0<br />
1 35% 28% 26%<br />
2 43% 32% 34%<br />
3 47% 45% 40%<br />
4 49% 47% 51%<br />
Să se precizeze care este profitul maxim şi cum se obţine.<br />
R. Trecem rezultatele calculelor în Tabelul 7.13<br />
Tabelul 7.13<br />
x r1 r2 r3 f1 ˆd 1 f2 dˆ 2<br />
f3<br />
dˆ<br />
3<br />
0 0 0 0 0 0 0 0 0 0<br />
1 35 28 26 35 1 35 0 35 1<br />
2 43 32 34 43 2 63 1 63 2<br />
3 47 45 40 47 3 71 1 89 2<br />
4 49 47 51<br />
49 4 80 3 97 2 sau 3
158<br />
Modele şi algoritmi de optimizare<br />
Culegerea rezultatelor:<br />
a) dˆ<br />
, , , 3 = 2 xˆ 3 = 4 xˆ ˆ ˆ<br />
2 = x3<br />
− d3<br />
= 2 dˆ<br />
ˆ<br />
2 = d 2 ( x2<br />
) = 1 , x ˆ ˆ ˆ<br />
1 = x2<br />
− d 2 = 1 ,<br />
dˆ<br />
1 = d1(<br />
x ˆ1<br />
) = 1 ;<br />
b) ˆd = 3 , xˆ 4 , ˆ ˆ ˆ 1 , d ˆ<br />
3<br />
3 = x2 = x3<br />
− d3<br />
=<br />
2 = d 2 ( xˆ<br />
2 ) = 0 , x ˆ ˆ ˆ<br />
1 = x2<br />
− d 2 = 1 ,<br />
d ˆ ( ˆ<br />
1 = d 1 x1)<br />
= 1 .<br />
Profitul maxim este de 97% , dacă se investeşte suma astfel:<br />
a) (1, 1, 2) , adică 1 milion în primul tip de locuinţe, 1 milion în al doilea tip de<br />
locuinţe şi 2 milioane în al treilea tip de locuinţe;<br />
b) (1, 0, 3) , adică 1 milion în primul tip de locuinţe şi 3 milioane în al treilea<br />
tip de locuinţe.<br />
2. Problema achiziţionărilor de carburant<br />
Serviciul de aprovizionare al municipalităţii trebuie să asigure motorina pentru<br />
încălzirea oraşului, timp de 6 luni – noiembrie-aprilie. Preţurile de cumpărare<br />
prevăzute pe tonă şi nevoile lunare sunt date de Tabelul 7.14 (Henry-Labordere,<br />
1995):<br />
Tabelul 7.14<br />
Perioada (i) 1 2 3 4 5 6<br />
Necesarul (bi) 800 500 300 200 700 400<br />
Preţul tonei (ci) 3300 5400 3900 5100 6000 3000<br />
Stocul iniţial la 1 noiembrie este de 200 t. Nu se poate depăşi capacitatea<br />
rezervorului care este de 900 t. Se doreşte minimizarea cumpărăturilor, dar cu<br />
satisfacerea cererii pe întreaga perioadă.<br />
Fie: ci costul unei tone pe perioada i ,<br />
xi stocul<br />
la sfârşitul perioadei i−1, începutul perioadei i, înainte de<br />
cumpărarea cantităţii di ,<br />
di cantitatea cumpărată la data de întâi a lunii i ,<br />
bi necesarul pe perioda i.<br />
Notând fi<br />
( xi+<br />
1)<br />
costul politicii optimale care lasă la sfârşitul perioadei i un stoc<br />
xi+1, atunci :<br />
• să se stabilească o relaţie între f i ( xi+<br />
1)<br />
şi fi− 1(<br />
xi<br />
) ,<br />
• să se găsească soluţia optimală folosind programarea dinamică. Să se precizeze<br />
cumpărăturile lunare şi stocul final.<br />
Rezolvare<br />
1) Formularea problemei în programare<br />
liniară (vom renunţa la două zerouri la<br />
⎧x1<br />
= 2<br />
⎪<br />
preţuri şi cantităţi) are restricţiile :<br />
xi<br />
+ di<br />
≤ 9<br />
xi<br />
, di<br />
≥ 0<br />
⎪xi+ 1 = xi<br />
+ di<br />
− bi<br />
( ∀)<br />
i<br />
⎨<br />
⎪<br />
⎪<br />
⎩
7. Programare dinamică 159<br />
Ţinând seama de relaţiile de mai sus, funcţia obiectiv se poate scrie ca funcţie de d<br />
astfel: f=33d1+54d2+39d3+51d4+60d5+30d6 , iar problema<br />
obţinută este<br />
p<br />
⎩ i i<br />
( d )<br />
f =min<br />
p<br />
∑<br />
i=<br />
1<br />
⎧x1<br />
= 2<br />
⎪<br />
xi+<br />
1 = xi<br />
+ di<br />
− bi<br />
⎨<br />
⎪xi<br />
+ di<br />
≤ 9<br />
⎪x , d ≥ 0 .<br />
cid<br />
i<br />
i = 1,<br />
6<br />
Funcţia<br />
de minimizat se scrie :<br />
f i ( di<br />
+ 1)<br />
=min(fi−1(xi+1+bi−di)+cidi).<br />
Transformările τi fiind inversabile se poate aplica atât analiza prospectivă cât şi<br />
retrospectivă.<br />
2)<br />
Calculele sunt rezumate în Tabelul 7.15.<br />
Tabelul 7.15<br />
xi f1(d) ˆ<br />
1( x)<br />
f2(d) d ˆ<br />
2 ( x)<br />
f3(d) d ˆ<br />
3 ( x)<br />
f4(d) d ˆ<br />
4 ( x)<br />
f5(d) dˆ<br />
5 ( x)<br />
f6(d) d<br />
0 198 6 447 4 564 3 642 0 951 0 1071 4<br />
1 231 7 501 5 603 4 681 0 1011 1 1101 5<br />
2 555 6 642 5 720 0 1071 2 1161 6<br />
3 609 7 681 6 759 0 1191 7<br />
4 663 8 720 7 798 0 1221 8<br />
5 759 8 849 1 9<br />
6 798 9 900 2<br />
7 951 3<br />
d ˆ<br />
6 ( x)<br />
Culegerea rezultatelor din tabel:<br />
f ( dˆ<br />
) = 1071 = f ( 4)<br />
, d ˆ = d ( xˆ<br />
) = d ( 0)<br />
= 4 , x ˆ7 = 0 ,<br />
min 6 7<br />
6<br />
6<br />
x = xˆ<br />
+ dˆ<br />
− b ⇒ xˆ<br />
= b − dˆ<br />
= 4 − 4 = 0 .<br />
ˆ7 6 6 6 6 6 6<br />
Cum d ˆ = d ( xˆ<br />
) = d ( 0)<br />
= 0 , rezultă<br />
5<br />
5<br />
6<br />
5<br />
x ˆ ˆ ˆ ˆ ˆ ˆ<br />
6 = x5<br />
+ d5<br />
− b5<br />
⇒ x5<br />
= x6<br />
+ b5<br />
− d5<br />
= 0 + 7 − 0 = 7 şi d ˆ ˆ<br />
4 = d 4 ( x5<br />
) = d 4 ( 7)<br />
= 3 .<br />
Analog obţinem:<br />
x = xˆ<br />
+ dˆ<br />
− b ⇒ xˆ<br />
= xˆ<br />
+ b − dˆ<br />
= 7 + 2 − 3 = 6 şi d ˆ = d ( xˆ<br />
) = d ( 6)<br />
= 9 ,<br />
ˆ5 4 4 4 4 5 4 4<br />
x = xˆ<br />
+ dˆ<br />
− b ⇒ xˆ<br />
= xˆ<br />
+ b − dˆ<br />
= 6 + 3 − 9 = 0 şi d ˆ = d ( xˆ<br />
) = d ( 0)<br />
= 4 ,<br />
ˆ4 3 3 3 3 4 3 3<br />
x = xˆ<br />
+ dˆ<br />
− b ⇒ xˆ<br />
= xˆ<br />
+ b − dˆ<br />
= 0 + 5 − 4 = 1 şi dˆ<br />
= d ( xˆ<br />
) = d ( 1)<br />
= 7 ,<br />
ˆ3 2 2 2 2 3 2 2<br />
= xˆ<br />
+ dˆ<br />
− b ⇒ xˆ<br />
= xˆ<br />
+ b − dˆ<br />
= 1+<br />
8 − 7 = 2 .<br />
xˆ<br />
2 1 1 1 1 2 1 1<br />
Politica optimală de cumpărături este :<br />
f6(4)=1071 cu cantităţile d ˆ<br />
1 = 7 , d ˆ<br />
2 = 4 , d ˆ<br />
3 = 9 , d ˆ<br />
4 = 3 , d ˆ<br />
5 = 0 , dˆ<br />
6 = 4 .<br />
6<br />
7<br />
6<br />
3<br />
2<br />
1<br />
3<br />
2<br />
1<br />
4<br />
3<br />
2<br />
3<br />
2<br />
1
160<br />
Modele şi algoritmi de optimizare<br />
3. La o balastieră s-au estimat cantităţile necesare de balast pentru trimestrul patru<br />
în vederea încheierii contractului cu o carieră. Cantităţile şi preţurile sunt trecute în<br />
Tabelul 7.16 .<br />
Tabelul 7.16<br />
Luna Octombrie Noiembrie Decembrie<br />
3<br />
Necesar (m ) 80 30 40<br />
Cost ( u.m.) 4 3 5<br />
La începutul fiecărei luni se comandă o anumită cantitate de balast astfel încât<br />
să fie satisfăcut necesarul de balast, dar să nu fie depăşită capacitatea de depozitare<br />
a balastierei, limitată la 100 m 3 . Să se precizeze costul minim de aprovizionare şi<br />
cum se obţine. Se presupune că la începutul şi sfârşitul semestrului depozitul este<br />
gol.<br />
R. Politica optimală de aprovizionare este :<br />
f3(0)=690 cu cantităţile d ˆ<br />
1 = 80 , d ˆ<br />
2 = 70 , dˆ<br />
3 = 0 .<br />
4. O firmă de transport de persoane trebuie să facă legătura între localităţile A şi H,<br />
pe un drum ce poate trece prin localităţile A, B, C, D, E, F, G, H. Distanţele între<br />
localităţi şi reţeaua de drumuri sunt trecute în graful din Figura 7.1. Ştiind că pentru<br />
o persoană se plătesc 3.4 u.m., să se determine costul minim de transport pentru o<br />
persoană şi traseul pentru care se obţine acest cost.<br />
A<br />
2<br />
1<br />
4<br />
B<br />
1<br />
D<br />
C<br />
8<br />
8<br />
Figura 7.1<br />
R. Traseul minim A, D, G,<br />
H are lungimea 13 şi costul minim este<br />
Cmin=3.4⋅13=44.2 u.m.<br />
5. Construirea unei autostrăzi. (Kaufmann, 1967) Folosind analiza prospectivă<br />
se rezolve problema 3 din §2.5.<br />
R. Se consideră că autostrada, care va uni localităţile 1 şi 14 (Figura 2.18), va fi<br />
formată din cinci tronsoane.<br />
E<br />
3 4 6<br />
5<br />
2<br />
F<br />
3<br />
G<br />
7<br />
H<br />
să
8. ELEMENTE <strong>DE</strong> TEORIA AŞTEPTĂRII<br />
8.1. Introducere în teoria aşteptării<br />
Teoria aşteptării (sau teoria firelor de aşteptare sau teoria cozilor) se ocupă<br />
cu studiul evoluţiei sistemelor care prezintă aglomerări (sistemele de aşteptare).<br />
Un astfel de sistem este compus dintr-una sau mai multe staţii de servire (în număr<br />
finit) care servesc clienţii ce sosesc în sistem pentru<br />
a solicita servicii. Modul de<br />
dispunere sau condiţionare a staţiilor de serviciu dintr-un sistem de aşteptare<br />
constituie topologia sistemului. Astfel, staţiile pot fi în serie sau în paralel sau acest<br />
serviciu se realizează de către una din staţii sau de către un grup de staţii.<br />
Studiul unui sistem de aşteptare se face cu ajutorul unui model de aşteptare.<br />
Elementele cunoscute ale unui model de aşteptare sunt (Văduva et al, I, 1974):<br />
• fluxul intrărilor în sistem<br />
• mecanismul serviciului.<br />
Intrările sunt caracterizate fie de numărul de clienţi pe unitatea de timp care<br />
sosesc, fie de intervalele de timp dintre două veniri consecutive.<br />
Oricare dintre aceste două mărimi este o variabilă aleatoare cu repartiţia<br />
cunoscută.<br />
Cunoaşterea mecanismului serviciului presupune cunoaşterea topologiei<br />
sistemului, regula după care se face serviciul, num ită şi disciplina serviciului (de<br />
exemplu: FIFO (First−In First−Out) – primul sosit – primul servit, sau o ordine<br />
bazată pe priorităţi),<br />
precum şi repartiţia numărului de clienţi serviţi pe unitatea de<br />
timp sau repartiţia duratei serviciului.<br />
Mecanismul serviciului este caracterizat de asemenea şi de capacitatea<br />
sistemului presupusă cunoscută,<br />
adică numărul maxim de clienţi ce pot exista la un<br />
moment dat în sistem, sau, echivalent,<br />
lungimea maximă a cozii.<br />
Elementele necunoscute ale modelului de aşteptare sunt:<br />
• timpul de aşteptare<br />
• timpul de neocupare a staţiilor<br />
• lungimea cozii<br />
• numărul de clienţi din sistem N(t) existenţi<br />
la momentul t .<br />
Toate aceste necunoscute sunt variabile aleatoare şi, prin rezolvarea modelului<br />
de aşteptare, se urmăreşte determinarea repartiţiei lor sau măcar a unei valori medii<br />
în funcţie de elementele cunoscute.
162<br />
Un model de aşteptare se notează A / S / c: (L, d) , unde:<br />
A – repartiţia timpului dintre două veniri consecutive,<br />
S – repartiţia duratei de serviciu,<br />
c – numărul de staţii (canale) de serviciu,<br />
L – lungimea maximă a cozii,<br />
d – disciplina de serviciu.<br />
Modele şi algoritmi de optimizare<br />
Exemplu. Notaţia Exp(λ) / Exp(µ) / 1: (∞, FIFO) caracterizează un model cu:<br />
− veniri cu repartiţia exponenţială negativă de parametru λ,<br />
− servicii cu repartiţie<br />
exponenţială negativă de parametru µ,<br />
− o singură<br />
staţie ( c=1 ),<br />
− coada care poate creşte indefinit ( L=∞),<br />
− disciplina de serviciu care este primul sosit−primul servit (First−In<br />
First−Out).<br />
Numărul N(t) de clienţi din sistem ia valori întregi 0,1,2,..., şi este, în general,<br />
un proces stochastic discret. Cunoaşterea repartiţiei acestui proces permite<br />
determinarea multor caracteristici ale sistemului.<br />
8.2. Caracterizarea procesului N(t) ca proces de naştere şi deces<br />
O caracteristică a procesului N(t) este aceea că variaţia valorilor sale pe<br />
intervale mici de timp nu este mare, în sensul că probabilitatea ca N(t) să prezinte<br />
variaţii mari pe intervalul de timp (t, t + ∆t) depinde de valoarea lui N(t) şi este,<br />
în general, mică. Variaţia procesului N(t) este determinată de intrările şi ieşirile<br />
din sistem, adică de veniri şi servicii. Asemănător variază şi volumul populaţiilor<br />
biologice; variaţia numărului de indivizi dintr-o astfel de populaţie pe un interval<br />
mic de timp nu este prea mare şi ea depinde de natalitate (intrări) şi de deces<br />
(ieşiri). Procesul stochastic N(t) este un caz particular de proces Markov şi se<br />
numeşte proces de naştere şi deces (Văduva, 1977).<br />
Definiţia<br />
8.1. Procesul stochastic cu creşteri independente N(t) se numeşte proces<br />
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 ) ;<br />
2)<br />
P [ N ( t +∆t ) = n −1 ⏐ N(t) = n ] = µn ⋅∆t + O (∆t ) ;<br />
3)<br />
P [ N ( t + ∆t ) = n ± i ⏐ N(t) = n ] = O (∆t ), ∀ i ><br />
( ) 1<br />
unde P ( A⏐B ) este probabilitatea lui A condiţionată de B, {λn , n ≥ 0}, {µn , n ≥<br />
0} sunt şiruri de numere pozitive date, iar O (∆t ) un element al unei clase de<br />
O<br />
( ∆t)<br />
funcţii care satisface: lim O ( ∆t)<br />
= 0,<br />
lim = 0,<br />
cO<br />
( ∆t)<br />
= O ( ∆t)<br />
, ( ∀)<br />
c ∈R<br />
.<br />
∆t→0<br />
∆t→0<br />
∆t
8. Elemente de teoria aşteptării 163<br />
Procesul este cu creşteri independente în sensul că, oricare ar fi t1
164<br />
Modele şi algoritmi de optimizare<br />
iniţiale sunt date), atunci condiţia necesară şi suficientă ca soluţia sistemului de<br />
e cuaţii diferenţiale (8.1) şi (8.2) să fie un sistem complet de probabilităţi este ca<br />
1<br />
∑ ∞<br />
k =0 λk<br />
Teorema 8.2. Dacă pentru procesul de naştere şi deces N ( t ) sunt date condiţiile<br />
iniţiale ca în Teorema 8.1, atunci o condiţie suficientă ca sistemul de ecuaţii<br />
diferenţiale (8.1) şi (8.2) să aibă ca soluţie un sistem complet de probabilităţi<br />
este<br />
ca<br />
∞ k µ i<br />
∑∏ = ∞ .<br />
λ<br />
k = 1 i= 1 i−1<br />
Ipoteză simplificatoare. Procesul N ( t ) se presupune staţionar,<br />
adică Pn ( t ) = pn =<br />
constant, ipoteză justificată de faptul că, după perioade mari de timp<br />
de<br />
funcţionare, sistemele se stabilizează.<br />
În caz staţionar, sistemul (8.1) – (8.2) devine:<br />
⎧ − λ0<br />
p 0 + µ 1 p1<br />
= 0<br />
⎨<br />
(8.4)<br />
⎩ − ( λn<br />
+ µ n ) p n + λn−1<br />
pn−1<br />
+ µ n+<br />
1 pn+<br />
1 = 0 , n ≥1<br />
Notăm<br />
z k = −λ<br />
k pk<br />
+ µ k + 1 pk<br />
+ 1<br />
şi din ultima ecuaţie avem<br />
zn = zn−1 ,<br />
iar din prima ecuaţie<br />
z0 = 0.<br />
Astfel, în cazul staţionar<br />
zn = 0, n ≥ 0,<br />
sau<br />
λn<br />
pn+ 1 = pn<br />
, n ≥ 0 .<br />
µ n+<br />
1<br />
Deducem că<br />
1 ⎛ ⎞<br />
=<br />
⎜<br />
⎜∏<br />
⎟ 0 , ≥1<br />
⎝ 0 1 ⎠<br />
− n λk<br />
pn<br />
p n .<br />
k = µ k +<br />
Din condiţia (8.3) rezultă că<br />
∑∏<br />
∞<br />
1<br />
p0<br />
=<br />
.<br />
n−1<br />
λk<br />
1 +<br />
n=<br />
1 k = 0 µ k + 1<br />
Cunoscând repartiţia procesului N ( t ), în cazul staţionar, adică a numărului<br />
de clienţi din sistemul de aşteptare, se pot calcula unele elemente necunoscute ale<br />
modelului, şi anume:<br />
= ∞<br />
a) numărul mediu de clienţi din sistem M<br />
N(<br />
t)<br />
np ,<br />
.<br />
[ ] ∑ ∞<br />
=<br />
n=<br />
0<br />
n
8. Elemente de teoria aşteptării 165<br />
b) lungimea medie a cozii<br />
L<br />
[ Lc<br />
] = ∑<br />
n=<br />
c<br />
M ( n − c)<br />
p<br />
(nu poate fi coadă pentru n ≤ c, adică mai puţini clienţi decât numărul staţiilor de<br />
serviciu),<br />
c) timpul mediu de aşteptare la coadă<br />
1<br />
M [ WT ] = M [ Lc<br />
] ,<br />
µ ( 1 − p )<br />
1<br />
unde este timpul mediu de servire şi se presupune cunoscut.<br />
µ ( 1 − p )<br />
0<br />
Observaţia 8.1. µ (1 − p0) reprezintă numărul mediu de clienţi (unităţi) serviţi în<br />
unitatea de timp. Atunci:<br />
d) timpul mediu de aşteptare în sistem<br />
1<br />
M [ W ] = M [ N(<br />
t)<br />
] ,<br />
µ ( 1 − p )<br />
e) numărul mediu de staţii neocupate<br />
M<br />
c<br />
[ SL]<br />
= ∑<br />
n=<br />
0<br />
0<br />
0<br />
( c − n)<br />
p<br />
f) timpul mediu de lenevire (neocupare) a unei staţii între două servicii<br />
consecutive<br />
M<br />
[ ] [ ]<br />
[ AT ]<br />
M TL = M SL ⋅ ,<br />
c<br />
unde M[AT] este media intervalelor de timp dintre două veniri consecutive.<br />
Aşadar, pentru a rezolva un model folosind procese de naştere şi deces trebuie<br />
cunoscute intensităţile procesului λn , n ≥ 0, µn , n ≥ 1.<br />
Pe baza acestor intensităţi se calculează probabilităţile<br />
pn , n ≥ 0,<br />
şi apoi elementele necunoscute ale modelului, conform cu formulele precedente.<br />
8.3. Modelul Po(λ)/Exp(µ)/1:(∞,FIFO)<br />
În acest model intrările se fac după repartiţia Poisson<br />
n<br />
( λt)<br />
−λt<br />
P(<br />
N(<br />
t)<br />
= n)<br />
= e , n ≥ 0 ,<br />
n!<br />
iar intervalul de timp dintre două sosiri consecutive are o repartiţie exponenţială de<br />
parametru λ , cum se poate constata uşor.<br />
n<br />
n<br />
,<br />
,
166<br />
Modele şi algoritmi de optimizare<br />
Serviciile se fac după repartiţia exponenţială, adică durata serviciului ca<br />
variabilă aleatoare are repartiţia exponenţială,<br />
−µ<br />
x ⎧1<br />
− e , pentru x ≥ 0<br />
F(<br />
x)<br />
= ⎨<br />
.<br />
⎩0<br />
, pentru x < 0<br />
λ<br />
Raportul ρ = se numeşte intensitate de trafic sau factor de serviciu. El<br />
µ<br />
reprezintă, în medie, numărul de clienţi care vin în perioada unui singur timp de<br />
serviciu.<br />
nţii care îl solicită în unitatea<br />
se va produce o aglomerare.<br />
Dacă ρ < 1, numărul clienţilor din şirul de aşteptare va creşte necontenit.<br />
Dacă ρ = 1, nu se va produce o coadă imensă – durata serviciilor coincide cu<br />
unitatea de timp, însă evident în anumite momente va fi aglomeraţie.<br />
În modelul precedent λn =λ şi µn = µ , (∀) n ∈ N * Dacă ρ > 1, atunci durata serviciului pentru clie<br />
de timp este mai mică decât unitatea de timp, deci nu<br />
. În acest caz, ecuaţiile<br />
Kolmogorov−Feller (8.4) devin, pentru cazul staţionar<br />
⎧λpn<br />
−1<br />
− ( λ + µ ) pn<br />
+ µ pn+<br />
1 = 0 , ( ∀)<br />
n ≥1<br />
⎨<br />
(8.5)<br />
⎩−<br />
λ p0<br />
+ µ p1<br />
= 0<br />
Ultima ecuaţie dă<br />
λ<br />
p1 = p0<br />
= ρ ⋅ p0<br />
µ<br />
şi înlocuind în prima, avem<br />
2<br />
λ p0 − ( λ + µ ) p1<br />
+ µ p2<br />
= 0 ⇒ p2<br />
= ρ p0<br />
.<br />
Rezultă prin inducţie că<br />
Dar<br />
însă<br />
când ρ < 1 şi atunci<br />
∑<br />
pn = ρ n p0 .<br />
n<br />
p n = 1⇒ p0<br />
∑ρ<br />
= 1 ,<br />
n∈N<br />
n∈N<br />
∑<br />
n∈N<br />
ρ<br />
n<br />
1<br />
= ⇒1<br />
− ρ = p0<br />
1−<br />
ρ<br />
pn = ρ n ( 1 − ρ) . (8.6)<br />
Se pot determina elementele necunoscute ale modelului în funcţie de ρ. De<br />
asemenea, se pot găsi:<br />
− pn maxim<br />
d n<br />
n<br />
[ ρ ( 1 − ρ)<br />
] = 0 ⇒ ρ =<br />
dρ<br />
n + 1<br />
şi atunci<br />
⎛ n ⎞ 1<br />
pn<br />
( t)<br />
= ⎜ ⎟ ⋅ .<br />
⎝ n + 1⎠<br />
n + 1<br />
n
8. Elemente de teoria aşteptării 167<br />
Aşadar, putem determina:<br />
− numărul mediu de clienţi<br />
din sistem la momentul t<br />
n−1<br />
ρ<br />
M [ N(<br />
t)<br />
] = ∑ npn(<br />
t)<br />
= ∑ nρ<br />
( 1−<br />
ρ)<br />
=<br />
(8.7)<br />
1−<br />
ρ<br />
n∈N<br />
− numărul mediu al clienţilor din şirul de aşteptare – lungimea medie a cozii<br />
∞<br />
∞<br />
2<br />
n ρ<br />
M [ L1<br />
] = ∑ ( n −1)<br />
pn<br />
= ( 1 − ρ ) ∑ ( n −1)<br />
ρ =<br />
(8. 8)<br />
n=<br />
2 n=<br />
2 1 − ρ<br />
− timpul mediu de aşteptare la coadă<br />
1<br />
ρ<br />
M [ WT ] = M [ L1<br />
] =<br />
(8.9)<br />
µ ( 1 − p0<br />
) µ ( 1 − ρ)<br />
− timpul mediu de aşteptare în sistem<br />
1 1<br />
M [ W ] = M [ WT ] + = . (8.10)<br />
µ µ ( 1 − ρ)<br />
Dacă este interesantă probabilitatea ca în sistem să fie mai mult<br />
de m persoane<br />
şi dorim ca ea să nu depăşească o anumită valoare ε, atunci<br />
m−1 m<br />
1 − ( 1 − ρ ) − ρ(<br />
1 − ρ)<br />
− ... − ρ ( 1 − ρ)<br />
< ε ⇒ ρ < ε<br />
(8.11)<br />
Se pot determina astfel ε şi µ încât să nu existe aglomeraţie.<br />
Pr opoziţia 8.1. Probabilitatea ca numărul clienţilor din sistem la un moment dat să<br />
fie mai mare ca un număr dat k este<br />
P( N( t ) > k ) = ρ (8.12)<br />
De e notaţiile de mai<br />
a<br />
k+1 .<br />
monstraţie. Calculăm această probabilitate, ţinând seama d<br />
în inte, şi avem<br />
1<br />
1<br />
( )<br />
1<br />
) 1 ( ) 1 ( ) (<br />
) (<br />
∞<br />
∞<br />
k +<br />
n<br />
k +<br />
> = ∑ n = ∑ − = − =<br />
−<br />
t p k t N<br />
ρ<br />
<br />
P ρ ρ ρ ρ .<br />
ρ<br />
n=<br />
k + 1<br />
n=<br />
k + 1<br />
Se poate determina probabilitatea ca un client să aştepte la rând un timp<br />
superior unui timp dat t0 .<br />
Deoarece timpul de aşteptare la coadă este o variabilă aleatoare continuă, vom<br />
determina repartiţia complementară a acestei variabile aleatoare, adică P(WT >t0 )<br />
(funcţia de repartiţie F(t0) = P(WT ≤ t0 )).<br />
Determinăm această repartiţie prin intermediul unei probabilităţi elementare de<br />
forma P( t < WT < t + dt ), care reprezintă probabilitatea evenimentului ca timpul<br />
de aşteptare al unui client la coadă să fie cuprins în intervalul (t, t+dt).<br />
Notăm cu Pn( t < WT < t + dt ) probabilitatea ca timpul de aşteptare la coadă<br />
al unui client să fie cuprins în intervalul (t, t+dt) condiţionat de faptul că la sosirea<br />
lui în sistem există deja n > 0 clienţi.<br />
Observaţia 8.2. Dacă n = 0 la sosirea în sistem a clientului, acesta nu aşteaptă şi<br />
intră direct în serviciu. P(<br />
t < WT < t + dt)<br />
= P ( t < WT < t + dt)<br />
.<br />
Cum se calculează Pn( t < WT < t + dt ) ?<br />
∑ ∞<br />
n=<br />
1<br />
n
168<br />
Modele şi algoritmi de optimizare<br />
Fiind o probabilitate condiţionată, se scrie ca un produs de probabilităţi pentru<br />
următoarele trei evenimente:<br />
a) evenimentul ca, la sosire, în sistem să existe n unităţi, Pn(0). Se ia momentul<br />
sosirii clientului ca fiind t = 0 ;<br />
b) evenimentul ca în intervalul de timp t să fie serviţi şi să plece din sistem n−1<br />
clienţi, cu condiţia să fi existat iniţial n clienţi în sistem. Probabilitatea acestui<br />
eveniment este<br />
n ( )<br />
( 1)<br />
−1<br />
µ −<br />
t µ t<br />
e ;<br />
n − !<br />
c) evenimentul ca în intervalul de timp dt să fie servit şi să plece un client,<br />
condiţionat de evenimentele de la a) şi b). Probabilitatea acestui eveniment este<br />
µ dt . Prin urmare,<br />
n−1<br />
( t)<br />
( n −1)<br />
!<br />
µ −µ<br />
t<br />
P ( t < WT < t + dt)<br />
= P ( 0)<br />
⋅ e ⋅ µ dt .<br />
n<br />
Sistemul este presupus în regim staţionar şi atunci avem:<br />
Aşadar,<br />
P( t<br />
< WT < t + dt)<br />
=<br />
∞<br />
∑<br />
n=<br />
1<br />
n<br />
n<br />
ρ ( 1 − ρ)<br />
( n −1)<br />
n−1<br />
( µ t)<br />
( n −1)<br />
!<br />
e<br />
−µ<br />
t<br />
µ dt =<br />
∞<br />
n−1<br />
−µ<br />
t ( ρµ t)<br />
−µ<br />
t(<br />
1−ρ<br />
)<br />
= ( 1 − ρ)<br />
µ de ρ∑<br />
= ρ(<br />
1 − ρ)<br />
µ e dt .<br />
!<br />
n=<br />
1<br />
−µ<br />
τ ( 1−ρ<br />
)<br />
∞<br />
−µ<br />
τ ( 1−−<br />
ρ )<br />
e<br />
P(<br />
WT > t0<br />
) = ∫ ρ(<br />
1 − ρ)<br />
µ e dτ<br />
= ρ(<br />
1 − ρ)<br />
µ<br />
t0<br />
− µ ( 1 − ρ)<br />
−µ t0<br />
( 1−ρ<br />
)<br />
= ρ e ,<br />
−µ t0<br />
( 1−ρ<br />
)<br />
pentru ρ < 1. Am obţinut P( WT > t0 ) = ρ e şi astfel am demonstrat<br />
următoarea propoziţie.<br />
Propoziţia 8.2. Probabilitatea ca un client<br />
să aştepte la rând un timp superior unui<br />
timp dat t0 este<br />
−µ t0<br />
( 1−ρ<br />
)<br />
P( WT > t0 ) = ρ e .<br />
Exemplu. La o bază de aprovizionare sosesc în medie 30 de autobasculante pe oră<br />
pe care trebuie să le încarce un singur excavator. Timpul mediu necesar încărcării<br />
unei autobasculante este de 1 min şi 30 s. Să se stabilească elementele modelului de<br />
aşteptare care rezultă, dacă se consideră că sosirile sunt poissoniene, iar servirile,<br />
exponenţiale. Să se determine probabilitatea ca în sistem să fie 3 sau mai mult de 3<br />
autobasculante.<br />
Rezolvare. Presupunem că prin observaţiile din teren ne situăm în cazul modelului<br />
Po(λ)/Exp(µ)/1:(∞,FIFO) . Pentru acest caz intensitatea intrărilor este λ=30 , iar<br />
∞<br />
t0<br />
=
8. Elemente de teoria aşteptării 169<br />
cea a ieşirilor (serviciilor) din sistem este<br />
este<br />
60 min<br />
µ = . Intensitatea de trafic<br />
1 min 30 s<br />
3<br />
ρ = . Din relaţia (8.6) avem p 0 = 1 − ρ = 0.<br />
25 , p1=0.1875 ş.a.m.d.<br />
4<br />
Se pot determina acum conform cu relaţiile (8.7)−(8.11) elementele necunoscute<br />
ale modelului:<br />
− numărul mediu de autobasculante din sistem M[N(t)]=3.<br />
− numărul mediu de autobasculante din şirul de aşteptare M[L1(t)]=2.25.<br />
− timpul mediu de aşteptare în sistem M[W]=6<br />
min.<br />
− timpul mediu de aşteptare în şirul de aşteptare M[WT]=4 min şi 30 s.<br />
Din relaţia (8.12) avem P( N( t ) > 2) = ρ 2+1 =0.42187 .<br />
Comentariu. Dacă s-ar pune problema ca în sistem să fie în medie 2 autobasculante în<br />
ρ<br />
2 λ<br />
loc de 3, atunci din relaţia (8.7) obţinem = 2 şi ρ = = . Cum λ=30<br />
1 − ρ<br />
3 µ<br />
este o dată exterioară sistemului, trebuie modificată durata medie a serviciilor, şi<br />
anume µ = 45 s . Pentru noile valori ale parametrilor ρ , µ se pot determina<br />
elementele necunoscute ale modelului.<br />
Să rezolvăm modelul pentru valorile iniţiale ale parametrilor λ şi µ cu<br />
pachetul de programe Management Scientist. După lansarea pachetului de<br />
programe selectăm modulul Waiting Lines şi din acesta Poisson Arrivals /<br />
Exponential Service (Figura 2.4). Introducem datele de intrare ca în Figura 8.1.<br />
Figura 8.1<br />
Selectând Solve obţinem soluţia modelului care, aşa cum se vede din Tabelul 8.1,<br />
coincide cu cea obţinută mai sus.
170<br />
Tabelul 8.1<br />
WAITING LINES<br />
*************<br />
NUMBER OF CHANNELS = 1<br />
POISSON ARRIVALS WITH MEAN RATE = 30<br />
EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 40<br />
Modele şi algoritmi de optimizare<br />
OPERATING CHARACTERISTICS<br />
-------------------------<br />
THE PROBABILITY OF NO UNITS IN THE SYSTEM 0.2500<br />
THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE 2.2500<br />
THE AVERAGE NUMBER OF UNITS IN THE SYSTEM 3.0000<br />
THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE 0.0750<br />
THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM 0.1000<br />
THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT 0.7500<br />
Number of Units in the System Probability<br />
----------------------------- -----------<br />
0 0.2500<br />
1 0.1875<br />
2 0.1406<br />
3 0.1055<br />
4 0.0791<br />
5 0.0593<br />
6 0.0445<br />
7 0.0334<br />
8 0.0250<br />
9 0.0188<br />
10 0.0141<br />
11 0.0106<br />
12 0.0079<br />
13 0.0059<br />
14 0.0045<br />
15 0.0033<br />
16 0.0025<br />
17 OR MORE 0.0075<br />
8.4. Modelul Po(λ)/Exp(µ)/1:(m, FIFO)<br />
Pentru acest model, lungimea maximă a cozii este m0 să sosească un client în<br />
sistem este proporţională cu mărimea intervalului; coeficientul de proporţionalitate<br />
depinde de numărul n de unităţi aflate în sistem la momentul respectiv şi rămâne<br />
λn ; analog, coeficientul legat de servicii rămâne µn . În ecuaţiile de stare (8.4)<br />
facem presupunerea că probabilitatea ca în intervalul de timp ∆t să sosească în<br />
sistem un client este cu atât mai mică cu cât numărul clienţilor rămaşi din numărul<br />
total este mai mic, − n λ ∆t<br />
= λ ∆ şi atunci λ = ( m − n)λ<br />
.<br />
( ) t<br />
m n<br />
Coeficientul µn nu depinde de numărul de clienţi din sistem la un moment dat,<br />
deoarece există o singură staţie, şi îl notăm cu µ .<br />
În ecuaţiile de stare (8.4), înlo cuind λn şi µn şi considerând µn+1 = 0,<br />
obţinem<br />
ecuaţia<br />
λ<br />
− mλ<br />
p0<br />
+ µ p1<br />
= 0 ⇒ p1<br />
= m p0<br />
.<br />
µ<br />
n
8. Elemente de teoria aşteptării 171<br />
În cea de-a doua ecuaţie din (8.4) luăm n = 1 şi obţinem<br />
m λ p − m −1)<br />
λ + µ p + µ p = 0 ⇒<br />
0<br />
[ ]<br />
λ<br />
⇒ mλ p0<br />
− ( m −1)<br />
λ ⋅ m p<br />
µ<br />
( 1 2<br />
0<br />
λ<br />
− µ ⋅ m p0<br />
+ µ p<br />
µ<br />
⎛ λ ⎞<br />
⇒ p 2 = m(<br />
m −1)<br />
⎜ ⎟ p0<br />
.<br />
⎝ µ ⎠<br />
Luând n = 2, obţinem<br />
( m − 1)<br />
λ p1<br />
− ( m − 2)<br />
λ + µ p2<br />
+ µ p3<br />
= 0<br />
2<br />
2<br />
= 0<br />
[ ] ⇒<br />
λ<br />
⎛ λ ⎞<br />
⇒ ( m −1)<br />
λ ⋅ m p0<br />
− ( m − 2)<br />
λ m(<br />
m −1)<br />
⎜ ⎟ p0<br />
+ µ p3<br />
−<br />
µ<br />
⎝ µ ⎠<br />
2<br />
3<br />
− µ p0<br />
⎛ λ ⎞<br />
m( m −1)<br />
⎜ ⎟<br />
⎝ µ ⎠<br />
Prin inducţie rezultă<br />
p0<br />
= 0 ⇒<br />
⎛ λ ⎞<br />
p3<br />
= m(<br />
m −1)(<br />
m − 2)<br />
⎜ ⎟<br />
⎝ µ ⎠<br />
n ⎛ λ ⎞<br />
pn = Am<br />
⎜ ⎟<br />
⎝ µ ⎠<br />
⎛ 0 1 2 K m<br />
m ⎞<br />
N (t)<br />
: ⎜<br />
⎟ şi ∑ pk<br />
( t)<br />
= 1 ⇒<br />
⎝ p0 ( t)<br />
p1(<br />
t)<br />
p2<br />
( t)<br />
K pm<br />
( t)<br />
⎠ k = 0<br />
⇒<br />
m<br />
∑<br />
n=<br />
0<br />
A<br />
n<br />
m<br />
n<br />
⎛ λ ⎞<br />
p0<br />
⎜ ⎟ = 1 ⇒ p<br />
⎝ µ ⎠<br />
0<br />
=<br />
n<br />
m<br />
∑<br />
n=<br />
0<br />
Calculul<br />
elementelor necunoscute ale modelului<br />
• numărul mediu de clienţi din sistem<br />
p0<br />
1<br />
n<br />
n ⎛ λ ⎞<br />
Am<br />
⎜ ⎟<br />
⎝ µ ⎠<br />
,<br />
2<br />
A<br />
0<br />
m<br />
= 1<br />
m<br />
m<br />
m<br />
n ⎛ λ ⎞<br />
n ⎛ λ ⎞<br />
M[<br />
N ( t)]<br />
= ∑ npn<br />
( t)<br />
= ∑ nAm<br />
⎜ ⎟ p0<br />
= ∑[<br />
m − ( m − n)]<br />
Am<br />
⎜ ⎟ p<br />
n=<br />
0<br />
n=<br />
0 ⎝ µ ⎠ n=<br />
0<br />
⎝ µ ⎠<br />
n<br />
n<br />
m<br />
m<br />
m−1<br />
n ⎛ λ ⎞<br />
⎛ λ ⎞ µ ⎛ λ ⎞<br />
= m∑<br />
Am<br />
⎜ ⎟ p0<br />
− ∑ ( − m ⎜ ⎟ 0 = − ∑ m ⎜ ⎟ 0 =<br />
n = 0 ⎝ µ ⎠ n=<br />
0 ⎝ µ ⎠ λ n=<br />
0<br />
142<br />
4 43 4<br />
144⎝µ<br />
24⎠4<br />
4 3<br />
1<br />
−<br />
+<br />
n<br />
n 1<br />
m n)<br />
A p m A p<br />
1 p<br />
µ<br />
= m − ( 1 − p0<br />
) ; deci<br />
λ<br />
µ<br />
M[<br />
N(<br />
t)]<br />
= m − ( 1 − p0<br />
) ,<br />
λ<br />
• numărul mediu de clienţi serviţi la un moment dat<br />
⎛ 0<br />
ns ( t)<br />
: ⎜<br />
⎝ p0<br />
( t)<br />
1 ⎞<br />
⇒ M[<br />
ns<br />
( t)]<br />
= 0 p0<br />
+ 1 − p0<br />
= 1 − p<br />
1 p0<br />
( t)<br />
⎟<br />
−<br />
⎠<br />
n<br />
⇒<br />
.<br />
0<br />
n<br />
n+<br />
1<br />
0<br />
.<br />
.<br />
0<br />
=
172<br />
Modele şi algoritmi de optimizare<br />
Dacă µ este numărul mediu de clienţi ce pot fi serviţi pe unitatea de timp,<br />
dacă staţia este ocupată tot timpul, atunci numărul mediu de clienţi serviţi efectiv<br />
într-o unitate de timp este µ ( 1 − p0 ).<br />
• lungimea medie a cozii M[Lc] = M[L1]<br />
M[Lc] = numărul mediu de clienţi în sistem la un moment dat minus numărul<br />
mediu de clienţi ce sunt serviţi la un moment dat =<br />
=M[N( t )] − ( 1 − p 0 ) =<br />
µ<br />
µ + λ<br />
= m − ( 1 − p0<br />
) − ( 1 − p0<br />
) ⇒ M[<br />
Lc<br />
] = m − ( 1 − p0<br />
) .<br />
λ<br />
λ<br />
• timpul mediu de aşteptare la coadă<br />
1<br />
1 ⎡ m µ + λ ⎤<br />
M[<br />
WT ] = M[<br />
L1<br />
] = ⎢ − ⎥ ⇒<br />
µ ( 1 − p0<br />
) µ ⎣1<br />
− p0<br />
λ ⎦<br />
1 ⎡ m<br />
⇒ M[<br />
WT ] = ⎢<br />
µ ⎣1<br />
− p0<br />
µ + λ ⎤<br />
− ⎥ ,<br />
λ ⎦<br />
• timpul mediu de aşteptare în sistem<br />
1 1 ⎡ m<br />
M [ W ] = M[<br />
WT ] + = ⎢<br />
µ µ ⎣1<br />
− p0<br />
µ ⎤<br />
1 ⎡ m µ ⎤<br />
− ⎥ ⇒ M[<br />
W ] = ⎢ − ⎥ .<br />
λ ⎦<br />
µ ⎣1<br />
− p0<br />
λ ⎦<br />
Exemplu. O firmă de taximetre are 12 autoturisme şi un singur mecanic de<br />
întreţinere. Ştiindu-se că repartiţia de probabilitate a timpului de funcţionare a unui<br />
autoturism<br />
între două defecţiuni este exponenţială cu media de 6 zile, iar repartiţia<br />
timpului necesar reparaţiei defecţiunii este exponenţială cu media 4 ore, să se<br />
determine:<br />
• probabilitatea ca la un moment dat toate autoturismele să funcţioneze,<br />
• timpul mediu de aşteptare a unui autoturism defect până la momentul când<br />
începe să fie reparat,<br />
• timpul mediu de aşteptare a unui<br />
autoturism până în momentul în care<br />
părăseşte atelierul de reparaţii,<br />
• numărul mediu de autoturisme la coadă şi<br />
• numărul mediu de autoturisme din atelier.<br />
Se consideră ziua de lucru de 8 ore.<br />
Rezolvare<br />
1 1 1<br />
λ = = ; µ = maşini pe oră ,<br />
8 ⋅ 6 48 4<br />
p<br />
0<br />
=<br />
12<br />
∑<br />
n=<br />
0<br />
A<br />
1<br />
n<br />
12<br />
⎛ 1 ⎞<br />
⎜ ⎟<br />
⎝12<br />
⎠<br />
n<br />
1<br />
= =<br />
5.<br />
03607<br />
λ<br />
=<br />
µ<br />
1<br />
48<br />
1<br />
4<br />
=<br />
0.<br />
19857<br />
1<br />
12<br />
,<br />
, atunci
8. Elemente de teoria aşteptării 173<br />
reprezintă probabilitatea ca la un moment dat toate autoturismele s ă funcţioneze.<br />
1 1<br />
+<br />
µ + λ<br />
M[<br />
L ]<br />
( 1 ) 12<br />
48 4<br />
1 = m − − p0<br />
= − ( 1 −<br />
λ<br />
1<br />
48<br />
0.<br />
19857)<br />
= 1.<br />
58141 ,<br />
µ<br />
M[<br />
N(<br />
t)]<br />
= m − ( 1 − p0<br />
) = 12 −<br />
λ<br />
1<br />
4<br />
1<br />
6 ⋅ 8<br />
( 1 − 0.<br />
19857)<br />
= 2.<br />
38284 ,<br />
1 1<br />
1<br />
1 12<br />
[ ]<br />
4 48<br />
⎥ 7.<br />
89294<br />
1<br />
1<br />
0<br />
⎢1<br />
0.<br />
19857 1 ⎥<br />
4 ⎢⎣<br />
48 ⎥⎦<br />
⎥⎤<br />
⎡<br />
⎢<br />
+<br />
⎡ m µ + λ ⎤<br />
M WT = ⎢ − ⎥ = ⎢ − = ,<br />
µ ⎣ − p λ ⎦ −<br />
1 ⎡ m<br />
M [ W ] = ⎢<br />
µ ⎣1<br />
− p<br />
0<br />
⎡<br />
µ ⎤ 1 ⎢ 12<br />
− ⎥ = ⎢ −<br />
λ ⎦ 1 ⎢1<br />
− 0.<br />
19857<br />
4 ⎢⎣<br />
1<br />
4<br />
1<br />
48<br />
⎤<br />
⎥<br />
⎥ =<br />
⎥<br />
⎥⎦<br />
11.<br />
89294<br />
Pentru rezolvarea acestei probleme cu Management Scientist, după<br />
lansarea<br />
programului, selectăm Waiting Lines, apoi din meniul File alegem New<br />
şi din<br />
fereastra care apare selectăm Poisson Arrivals/Exponential Service (Finite Pop.),<br />
(Figura 2.4). În fereastra care apare introducem datele de intrare<br />
1<br />
λ = = 0.<br />
02083 , µ = 0.<br />
25<br />
6 ⋅ 8<br />
ca în Figura 8.2, apoi selectăm Solve<br />
Figura 8.2<br />
şi rezultatele sunt afişte pe ecran sub următoarea formă (Tabelul 8.2).<br />
.
174<br />
Tabelul 8.2<br />
WAITING LINES<br />
*************<br />
NUMBER OF CHANNELS = 1<br />
POISSON ARRIVALS WITH MEAN RATE = 0.02083<br />
EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 0.25<br />
FINITE CALLING POPULATION OF <strong>SI</strong>ZE = 12<br />
Modele şi algoritmi de optimizare<br />
OPERATING CHARACTERISTICS<br />
-------------------------<br />
THE PROBABILITY OF NO UNITS IN THE SYSTEM 0.1986<br />
THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE 1.5808<br />
THE AVERAGE NUMBER OF UNITS IN THE SYSTEM 2.3822<br />
THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE 7.8907<br />
THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM 11.8907<br />
THE PROBABILITY THAT AN ARRIVING<br />
UNIT HAS TO WAIT 0.8014<br />
Number of Units in the System Probability<br />
----------------------------- -----------<br />
0 0.1986<br />
1 0.1986<br />
2 0.1820<br />
3 0.1517<br />
4 0.1137<br />
5 0.0758<br />
6 0.0442<br />
7<br />
0.0221<br />
8<br />
0.0092<br />
9 0.0031<br />
10 0.0008<br />
11 0.0001<br />
12 0.0000<br />
8.5. Modelul Po(λ)/Exp(µ)/c:(∞, FIFO)<br />
Aceste modele generalizează modelele de aşteptare cu o singură staţie de<br />
servire, având c staţii de servire paralele (identice în ceea ce priveşte timpul de<br />
servire).<br />
Fie N( t ) numărul mediu de clienţi din sistem la momentul t . Atunci avem:<br />
• probabilitatea unei veniri în intervalul ( t , t + ∆t ) este λ∆t + O (∆t), iar venirile<br />
sunt independente între ele,<br />
• probabilitatea unei ieşiri dintr-o staţie de servire în intervalul de timp (t , t +<br />
+ ∆t) este µ∆t + O (∆t) ,<br />
• probabilitatea rămânerii unui client în sistem este 1 − µ∆t + O (∆t) ,<br />
• probabilitatea ca n ≤ c clienţi să rămână în staţiile de servire este<br />
( 1 − µ ∆t+ O (∆t) ) − nµ∆t + O (∆t),<br />
deoarece ieşirile din sistem sunt independente,<br />
• probabilitatea ca în intervalul de timp ( t , t + ∆t ) un client să părăsească sistemul<br />
atunci când n staţii de servire lucrează simultan este nµ ∆t + O(∆t) .<br />
n = 1
8. Elemente de teoria aşteptării 175<br />
Notăm En evenimentul care constă în prezenţa a n clienţi în sistem şi cu pn(t)<br />
probabilitatea producerii evenimentului En la momentul t.<br />
Vom calcula Pn( t + ∆t ).<br />
a) 0 < n < c . Vom neglija probabilităţile de ordin de mărime mai mic ca O (∆t).<br />
Sunt posibile următoarele situaţii:<br />
1) sistemul se găseşte la momentul t în starea En şi nu au loc nici o venire şi<br />
nici o plecare<br />
în/din sistem în intervalul de timp (t, t + ∆t). Probabilitatea<br />
corespunzătoare este<br />
1 − λ ∆ + O ( ∆t)<br />
1 − nµ<br />
∆t<br />
+ O ( ∆t)<br />
p ( t)<br />
( t )( ) n =<br />
= [ 1 − ( λ + µ ) ∆t<br />
+ O ( ∆t))<br />
] p ( t)<br />
,<br />
n n<br />
2) sistemul se găseşte la momentul t în starea En−1 şi au loc o venire şi nici<br />
o plecare. Probabilitatea corespunzătoare este<br />
λ + O ∆t)<br />
1 − µ ∆t<br />
p ( t)<br />
= λ p ( t)<br />
∆ ,<br />
( )( ) t<br />
∆t ( n−<br />
1<br />
n−1<br />
3) sistemul se găseşte<br />
la momentul t în starea En+1 şi au loc o ieşire din<br />
sistem şi nici o venire. Probabilitatea corespunzătoare<br />
este<br />
1 − λ ∆ + O ( ∆t)<br />
( n + 1)<br />
µ ∆t<br />
+ O ( ∆t)<br />
p + 1( t)<br />
( t )( ) n =<br />
= [ ( + 1)<br />
µ ∆t<br />
+ O ( ∆t))<br />
] p 1( t)<br />
.<br />
n n+<br />
Aşadar,<br />
p ( t + ∆t)<br />
= 1 − ( λ + nµ<br />
) ∆t<br />
+ O ( ∆t)<br />
p<br />
n<br />
+<br />
[ ] n ( t<br />
[ ( n + 1)<br />
µ ∆t<br />
+ O ( ∆t)<br />
] p ( t)<br />
n+<br />
1<br />
) + λ p<br />
n−1<br />
( t)<br />
∆t<br />
+<br />
(8.13)<br />
b) n ≥ c . Apar următoarele eventualităţi:<br />
1) sistemul se găseşte la momentul t în starea En şi nu au loc nici o venire şi<br />
nici o plecare în/din sistem în intervalul de timp (t, t + ∆t). Ieşirile nu pot<br />
avea loc decât din cele c staţii ocupate.<br />
Probabilitatea corespunzătoare este<br />
1 − λ ∆ + O ( ∆t)<br />
1 − cµ<br />
∆t<br />
+ O ( ∆t)<br />
p ( t)<br />
( t )( ) n =<br />
= [ 1 − ( λ + µ ) ∆t<br />
+ O ( ∆t))<br />
] p ( t)<br />
,<br />
c n<br />
întrucât toţi cei c clienţi din staţiile de servire rămân în sistem (n-au terminat<br />
serviciul).<br />
2) sistemul se găseşte la momentul t în starea En−1 , are loc o intrare în<br />
sistem şi nu se produce nici o ieşire. Probabilitatea corespunzătoare este<br />
λ + O ∆t)<br />
1 − cµ<br />
∆t<br />
+ O ( ∆t)<br />
p ( t)<br />
= λ p ( t)<br />
∆ .<br />
( )( ) t<br />
∆t ( n−<br />
1<br />
n−1<br />
3) sistemul se găseşte la momentul t în starea En+1 , nu are loc nici o intrare<br />
în sistem, dar are loc o ieşire. Probabilitatea corespunzătoare este<br />
1 − λ ∆t<br />
+ O ( ∆t)<br />
cµ<br />
∆t<br />
+ O ( ∆t)<br />
pn+<br />
1 ( t)<br />
= cµ<br />
+ ( t)<br />
∆t<br />
,<br />
( )( ) p<br />
unde cµ ∆t + O ( ∆t)<br />
este probabilitatea ca un client să părăsească<br />
sistemul atunci<br />
când c staţii lucrează simultan.<br />
Aşadar,<br />
n 1
176<br />
p ( t + ∆t)<br />
=<br />
n<br />
[ 1 − ( λ + cµ<br />
) ∆t<br />
+ O ( ∆t)<br />
]<br />
+ cµ<br />
p<br />
n+<br />
1<br />
( t)<br />
∆t<br />
.<br />
p ( t)<br />
+ λ p<br />
n<br />
Modele şi algoritmi de optimizare<br />
n−1<br />
( t)<br />
∆t<br />
+<br />
(8.14)<br />
c) n = 0 . Evidenţiem următoarele eventualităţi:<br />
1) sistemul se găseşte la momentul t în starea E0 şi nu au loc nici o venire şi<br />
nici o plecare în/din sistem în intervalul de timp (t, t + ∆t). Probabilitatea<br />
corespunzătoare este ( 1 − λ ∆t + O (∆t ) ) p0 ( t ).<br />
2) sistemul se găseşte la momentul t în starea E1 , are loc o ieşire din sistem<br />
şi nu se produce nici o intrare. Probabilitatea corespunzătoare este<br />
( 1 − λ ∆t<br />
+ O ( ∆t)<br />
)( µ ∆t<br />
+ O ( ∆t)<br />
) p1(<br />
t)<br />
= [ µ ∆t<br />
+ O ( ∆t)<br />
] p1(<br />
t)<br />
.<br />
Am obţinut<br />
p t + ∆t)<br />
= [ 1 − λ ∆t<br />
+ O ( ∆t)<br />
] p ( t)<br />
+ [ µ ∆t<br />
+ O ( ∆t)<br />
] p ( t)<br />
(8.15)<br />
0 ( 0<br />
1<br />
Din relaţiile (8.13), (8.14), (8.15), prin împărţire la ∆t şi ţinând seama de<br />
p roprietăţile funcţiilor O (∆t) , trecând la limită (∆t → 0), obţinem ecuaţiile de<br />
stare pentru acest model:<br />
⎧ p′<br />
0 (t)<br />
= −λ<br />
p0<br />
( t)<br />
+ µ p1(<br />
t)<br />
⎪<br />
⎨ p′<br />
n ( t)<br />
= −(<br />
λ + nµ<br />
) pn<br />
( t)<br />
+ λ pn<br />
−1(<br />
t)<br />
+ ( n + 1)<br />
µ pn+<br />
1(<br />
t)<br />
, 1≤<br />
n < c (8.16)<br />
⎪<br />
⎩ p′<br />
n ( t)<br />
= −(<br />
λ + cµ<br />
) pn<br />
( t)<br />
+ λ pn−<br />
1(<br />
t)<br />
+ cµ<br />
pn+<br />
1(<br />
t)<br />
, n ≥ c .<br />
În cazul staţionar ′ ( t)<br />
= 0 , n ≥ 0 , ecuaţiile de stare (8.16) devin<br />
p n<br />
⎧λ<br />
p0<br />
= µ p1<br />
⎪<br />
⎨(<br />
λ + nµ<br />
) pn<br />
= λ p<br />
⎪<br />
⎩(<br />
λ + cµ<br />
) pn<br />
= λ p<br />
+ ( n + 1)<br />
µ p<br />
+ cµ<br />
p<br />
n+<br />
1<br />
1≤<br />
n < c<br />
n ≥ c.<br />
Pentru rezolvarea sistemului (8.17) vom nota<br />
zn = −λ⋅pn−1 + n⋅µ⋅pn .<br />
Prima ecuaţie din (8.17) devine<br />
z1 = −λ⋅p0 + µ⋅p1 = 0 .<br />
Prelucrăm a doua ecuaţie din (8.17)<br />
−λ⋅pn + ( n + 1)⋅µ⋅pn+1 = −λ⋅pn−1 + n⋅µ⋅pn ,<br />
de unde rezultă că<br />
z = z = ... = z = 0 .<br />
n−1<br />
n−1<br />
n+1 j 1<br />
n<br />
1 = 0 ; pn<br />
n−<br />
1 ⇒ pn<br />
p0<br />
0 ; .<br />
n+<br />
1<br />
λ λ 1<br />
1 ⎛ λ ⎞ 1 n<br />
p p = ⋅ p = ⎜ ⎟ = ρ p<br />
µ µ n<br />
n!<br />
⎝ µ ⎠ n!<br />
Astfel,<br />
1 n<br />
pn<br />
= ρ p0<br />
, 1≤<br />
n < c .<br />
n!<br />
Din ultima ecuaţie a sistemului (8.17) rezultă că<br />
−λ⋅pn + c⋅µ⋅pn+1 = −λ⋅pn−1 + c⋅µ⋅pn .<br />
De unde<br />
λ<br />
ρ =<br />
µ<br />
(8.17)
8. Elemente de teoria aşteptării 177<br />
Astfel<br />
Aşadar,<br />
p<br />
zn = zn+1 , iar zc = −λ⋅pc−1 + c⋅µ⋅pc = 0.<br />
c<br />
1 λ<br />
= ⋅ pc−1<br />
=<br />
c µ<br />
c<br />
c<br />
1 ρ ρ<br />
⋅ p0<br />
= p0<br />
.<br />
c ( c −1)!<br />
c!<br />
k<br />
⎛ ρ ⎞<br />
pc+<br />
k = ⎜ ⎟<br />
⎝ c ⎠<br />
c<br />
ρ<br />
c!<br />
p0<br />
, k ≥ 0 .<br />
* ρ<br />
Pentru acest model notăm ρ = intensitatea de trafic a sistemului de<br />
c<br />
aşteptare.<br />
Am obţinut soluţia sistemului (8.17)<br />
n ⎧ ρ<br />
⎪ pn<br />
= p0<br />
n!<br />
⎨<br />
n<br />
⎪ ρ<br />
pn<br />
= p<br />
⎪⎩<br />
n−c<br />
0<br />
c!<br />
c<br />
,<br />
,<br />
1≤<br />
n < c<br />
n ≥ c .<br />
(8.18)<br />
∞<br />
∑<br />
Deoarece p = 1,<br />
rezultă că<br />
n=<br />
0<br />
n<br />
* n ( ρ ) c ⎞<br />
⎟ = 1<br />
⎛ c−1<br />
n ∞<br />
⎜ ρ<br />
p0<br />
+<br />
⎜∑<br />
∑ ,<br />
0 ! ! ⎟<br />
⎝ n=<br />
n n=<br />
c c<br />
⎠<br />
de unde obţinem<br />
( ) ∑−<br />
1<br />
p0<br />
= .<br />
c c 1 n<br />
ρ ρ<br />
+ *<br />
c!<br />
1 − ρ n=<br />
0 n!<br />
Cunoscând repartiţia variabilei aleatoare N( t ), se poate determina repartiţia<br />
variabilei aleatoare Lc( t )<br />
⎛ 0<br />
1 2 L⎞<br />
L : ⎜<br />
⎟<br />
c<br />
.<br />
⎝ p0 ( t)<br />
+ ... + pc<br />
( t)<br />
pc+<br />
1(<br />
t)<br />
pc+<br />
2 ( t)<br />
L⎠<br />
Calculul elementelor necunoscute ale modelului<br />
• lungimea medie a cozii<br />
[ c ] ∑<br />
k<br />
∞<br />
0<br />
= 1<br />
M [ L ] = 0 ⋅ p ( t)<br />
+ ... + p ( t)<br />
+ kp ( t)<br />
.<br />
c<br />
c+<br />
k<br />
Notăm c + k = n ⇒ k = n − c . Atunci<br />
∞<br />
∞<br />
n<br />
ρ<br />
M[<br />
Lc<br />
] = ∑ ( n − c)<br />
pn<br />
= ∑ ( n − c)<br />
n−<br />
c!<br />
c<br />
n=<br />
c+<br />
1<br />
n=<br />
c+<br />
1<br />
c<br />
p<br />
0<br />
=
178<br />
= p0 ⎢1<br />
c!<br />
⎢⎣<br />
⎡ c<br />
c ⎛ λ ⎞<br />
⎜ ⎟<br />
⎝ µ c ⎠<br />
c+<br />
1 c+2<br />
c+<br />
3<br />
⎛ λ ⎞<br />
+ 2⎜<br />
⎟<br />
⎝ µ c ⎠<br />
⎛ λ ⎞<br />
+ 3⎜<br />
⎟<br />
⎝ µ c ⎠<br />
Modele şi algoritmi de optimizare<br />
⎤<br />
+ ... ⎥ =<br />
⎥⎦<br />
1 2 3 ... ⎥ .<br />
⎤<br />
⎢ ⎟ ⎞<br />
c<br />
c+<br />
1 2<br />
c ⎛ λ ⎞ ⎡ ⎛ λ ⎞ ⎛ λ<br />
= p0<br />
⎜ ⎟ + ⎜ ⎟ + ⎜<br />
c !<br />
⎜<br />
⎝ cµ<br />
⎟<br />
⎠ ⎢⎣ ⎝ c µ ⎠ ⎝ µ c ⎠ ⎥⎦<br />
Se ştie că<br />
1<br />
∑ = , < 1<br />
−<br />
kx x<br />
k<br />
∞ 1<br />
2<br />
k = 1 ( 1 − x)<br />
Aplicând în relaţia de mai sus, obţinem<br />
.<br />
de unde rezultă că<br />
c+<br />
1<br />
c ⎛ λ ⎞ 1<br />
M[ Lc<br />
] = p0<br />
⎜ ⎟<br />
, 2<br />
c!<br />
⎝ cµ<br />
⎠ ⎛ λ ⎞<br />
⎜1 − ⎟<br />
c<br />
⎝ cµ<br />
⎠<br />
λµ ⎛ λ ⎞<br />
M[ Lc<br />
] = ⎜ ⎟ p<br />
2<br />
0 .<br />
( c − 1)!<br />
( cµ<br />
− λ)<br />
⎝ µ ⎠<br />
• Pentru determinarea numărului mediu de clienţi din sistem,<br />
vom considera<br />
numărul de clienţi aflaţi în serviciu la un moment dat, care este acelaşi lucru<br />
cu numărul de staţii ocupate n s , ca fiind o variabilă aleatoare<br />
discretă cu<br />
repartiţia<br />
⎛ 0 1 2 K c −1 c ⎞<br />
ns<br />
: ⎜<br />
.<br />
p0<br />
( t)<br />
p1(<br />
t)<br />
p2<br />
( t)<br />
K pc−<br />
1(<br />
t)<br />
pc<br />
( t)<br />
+ pc+<br />
1(<br />
t)<br />
+ ... ⎟<br />
⎝<br />
⎠<br />
M[<br />
n ] =<br />
s<br />
∑<br />
n=<br />
0<br />
c 1 ⎛ λ ⎞<br />
= ∑ n ⎜ ⎟<br />
n=<br />
0 n!<br />
⎝ µ ⎠<br />
De aici rezultă că<br />
iar cum<br />
obţinem că<br />
c<br />
np ( t)<br />
+ c<br />
n<br />
n<br />
( p ( t)<br />
+ p ( t)<br />
+ ... )<br />
0<br />
c<br />
p ( t)<br />
+ c<br />
c+<br />
1<br />
∞<br />
∑<br />
n=<br />
0<br />
1<br />
n<br />
c!<br />
c<br />
−c<br />
λ<br />
M [ ns<br />
] = ,<br />
µ<br />
=<br />
⎛ λ ⎞<br />
⎜ ⎟<br />
⎝ µ ⎠<br />
c<br />
∑<br />
n=<br />
0<br />
M[N( t )] = M[Lc] + M[ns],<br />
n<br />
c<br />
np ( t)<br />
+ c<br />
0<br />
n<br />
p ( t)<br />
.<br />
λ µ ⎛ λ ⎞ λ<br />
M[<br />
N(<br />
t)]<br />
= ⎜ ⎟ p0<br />
+ .<br />
2<br />
( c −1)!<br />
( cµ<br />
− λ)<br />
⎝ µ ⎠ µ<br />
• numărul mediu de servicii făcute efectiv în unitatea de timp<br />
λ<br />
µ M [ ns<br />
] = ⋅ µ = λ .<br />
µ<br />
• timpul mediu de aşteptare la coadă<br />
c<br />
∞<br />
∑<br />
n<br />
n=<br />
c+<br />
1<br />
p ( t)<br />
=
8. Elemente de teoria aşteptării 179<br />
c<br />
⎛ λ ⎞<br />
[ ⋅ ⎜ ⎟ p<br />
2<br />
0<br />
M[<br />
Lc<br />
] µ<br />
M WT ] = =<br />
λ ( c −1)!<br />
( cµ<br />
− λ)<br />
⎝ µ ⎠<br />
• timpul mediu de aşteptare în sistem<br />
1<br />
M [ W ] = M[<br />
WT ] + .<br />
µ<br />
• numărul mediu de staţii de servire care lenevesc (neocupate)<br />
c−1<br />
M [ SL]<br />
= ∑ ( c − j)<br />
p j ( t)<br />
= c − ρ .<br />
j=<br />
0<br />
( t)<br />
.<br />
Exemplu. La o spălătorie auto se prezintă<br />
în medie 6 autoturisme pe oră. Un<br />
lucător foloseşte pentru spălatul unui autoturism în medie 15 minute. Să se<br />
determine elementele sistemului pentru cazurile în care se folosesc 2 şi respectiv<br />
3 lucrători.<br />
Rezolvare<br />
Pentru acest exemplu avem<br />
60 6<br />
λ = 6 , µ = = 4 , ρ = > 1 . Cum ρ > 1 , nu este<br />
15 4<br />
suficient un singur lucrător. Vom considera următoarele situaţii:<br />
a) c = 2 (2 lucrători)<br />
1<br />
p 0 = = 0.<br />
14286 ,<br />
2<br />
⎛ 3 ⎞ 1 3<br />
⎜ ⎟ + 1 +<br />
⎝ 2 ⎠ ⎛ 3 ⎞ 2<br />
2!<br />
⎜1<br />
− ⎟<br />
⎝ 4 ⎠<br />
3<br />
p1<br />
= p0<br />
2<br />
= 0.<br />
21429 ,<br />
2<br />
⎛ 3 ⎞ 1<br />
p2 = ⎜ ⎟ p0<br />
= 0.<br />
16072 etc<br />
⎝ 2 ⎠ 2!<br />
3<br />
⎛ 3 ⎞ 1 1<br />
M [ L2<br />
] = 0.<br />
14286 ⋅ ⎜ ⎟<br />
= 1.<br />
92861 ,<br />
2<br />
⎝ 2 ⎠ 2!<br />
2 ⎛ 3 ⎞<br />
⎜1<br />
− ⎟<br />
⎝ 4 ⎠<br />
3 1<br />
M [ SL]<br />
= c − ρ = 2 − = ,<br />
2 2<br />
⎛ 3 ⎞ 1 1 3<br />
M [ N(<br />
t)]<br />
= 0.<br />
14286 ⋅ ⎜ ⎟<br />
+ = 3.<br />
4261,<br />
2<br />
⎝ 2 ⎠ 2!<br />
2 ⎛ 3 ⎞ 2<br />
⎜1<br />
− ⎟<br />
⎝ 2 ⎠<br />
M[<br />
Lc<br />
] 1.<br />
92861<br />
M [ WT ] = = = 0.<br />
32143 = 19 min 17 s .<br />
λ 6<br />
b) c = 3 (3 lucrători)<br />
3
180<br />
Modele şi algoritmi de optimizare<br />
1<br />
p 0 =<br />
= 0.<br />
21053 ,<br />
3<br />
2<br />
⎛ 3 ⎞ 1 3 ⎛ 3 ⎞ 1<br />
⎜ ⎟ + 1 + + ⎜ ⎟<br />
⎝ 2 ⎠ ⎛ 3 ⎞ 2 2 2!<br />
3!<br />
1<br />
⎝ ⎠<br />
⎜ − ⎟<br />
⎝ 2 ⎠<br />
3 0<br />
p 1 = p<br />
2<br />
= 0.<br />
3158 etc .<br />
M [ L3<br />
] = 0.<br />
23685 ; M[<br />
N(<br />
t)]<br />
= 1.<br />
73685 ;<br />
M [ SL]<br />
= 1.<br />
5 ; M[<br />
WT ] = 0.<br />
03946 ore = 2 min 22 s .<br />
Concluzie. Din punctul de vedere al clienţilor, serviciul la spălătorie este mult<br />
mai atractiv cu 3 lucrători, deoarece numărul mediu al autoturismelor care stau la<br />
rând în acest caz este 0.23 şi aşteaptă în medie doar 2 min şi 22 s, faţă de cazul în<br />
care ar fi doar 2 lucrători şi ar aştepta în medie 19 min şi 17 s. În cazul b) 21%<br />
dintre solicitanţi au şansa să nu stea la rând.<br />
Apelăm Management Scientist pentru rezolvarea acestui model. După lansarea<br />
pachetului de programe, selectăm<br />
modulul Waiting Lines, apoi modelul Poisson<br />
Arrivals / Exponential Service. Introducem datele de intrare pentru cazul cu 2<br />
lucrători în fereastra corespunzătoare modelului selectat (Figura 8.3).<br />
Figura 8.3<br />
Selectând Solve se obţin rezultatele prezentate în Tabelul<br />
8.3.<br />
Analog se rezolvă şi cazul cu c=3.<br />
8.6. Modelul P0(λ)/Exp(µ)/c:(m,FIFO)<br />
Acest model reprezintă cazul sistemului de aşteptare cu sosiri poissoniene,<br />
servicii exponenţiale, mai multe staţii de servire în paralel (identice în ceea ce<br />
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<br />
Tabelul<br />
8.3<br />
WAITING LINES<br />
*************<br />
NUMBER OF CHANNELS = 2<br />
POISSON ARRIVALS WITH MEAN<br />
RATE = 6<br />
EXPONENTIAL SERVICE TIMES<br />
WITH MEAN RATE = 4 PER CHANNEL<br />
OPERATING CHARACTERISTICS<br />
-------------------------<br />
THE PROBABILITY OF NO UNITS IN THE SYSTEM 0.1429<br />
THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE 1.9286<br />
THE AVERAGE NUMBER OF UNITS IN THE SYSTEM 3.4286<br />
THE AVERAGE<br />
TIME A UNIT SPENDS IN THE WAITING LINE 0.3214<br />
THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM 0.5714<br />
THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT 0.6429<br />
Number of Units in the System Probability<br />
----------------------------- -----------<br />
0 0.1429<br />
1 0.2143<br />
2 0.1607<br />
3 0.1205<br />
4 0.0904<br />
5 0.0678<br />
6 0.0509<br />
7 0.0381<br />
8 0.0286<br />
9 0.0215<br />
10 0.0161<br />
11 0.0121<br />
12 0.0091<br />
13 0.0068<br />
14 0.0051<br />
15 0.0038<br />
16 0.0029<br />
17 OR MORE 0.0086<br />
Pentru prezentarea modelului (schematizat în Figura 8.4) vom considera următorul<br />
exemplu.<br />
La o balastieră vin m autobasculante pentru a fi încărcate de c excavatoare.<br />
Autobasculantele formează o singură coadă şi sunt încărcate după metoda FIFO.<br />
S-a observat că venirile autobasculantelor la coadă sunt repartizate P0(λ) , iar<br />
timpii de încărcare sunt repartizaţi după legea Exp(µ).<br />
coada<br />
Veniri O O ... O<br />
şir de<br />
aşteptare<br />
Figura 8.4<br />
staţie de servire 1<br />
staţie de servire 2<br />
M<br />
numărul zilelor lucrăt
182<br />
Modele şi algoritmi de optimizare<br />
Determinarea ecuaţiilor de stare<br />
Notăm En evenimentul care constă în prezenţa a n autobasculante la<br />
balastieră, iar pn( t ) probabilitatea producerii evenimentului En la momentul t .<br />
Dacă n ≤ c , nu există coadă de aşteptare.<br />
Dacă n> c , se formează coadă de aşteptare.<br />
Fie Pn( t + ∆t ) probabilitatea ca la momentul t + ∆t să fie n autobasculante<br />
la balastieră. La intervalul de timp t + ∆t pot avea loc următoarele situaţii:<br />
1) sistemul este în starea En , nu vine şi nu pleacă nici o autobasculantă.<br />
Probabilitatea corespunzătoare<br />
este:<br />
1 − nµ ∆t<br />
+ O ( ∆t)<br />
1 − ( m − n)<br />
λ ∆t<br />
+ O ( ∆t)<br />
,<br />
( )( )<br />
dacă 1 ≤ n < c , sau<br />
1 − cµ ∆t + O ( ∆t)<br />
1 − ( m − n)<br />
λ ∆t<br />
+ O ( ∆t)<br />
,<br />
( )( )<br />
dacă n ≥ c .<br />
2) sistemul se află în starea En+1 , nu are loc nici o venire,<br />
dar are loc o plecare<br />
în<br />
intervalul de timp ( t , t + ∆t ). Probabilitatea<br />
corespunzătoare<br />
este<br />
( n + 1)<br />
µ ∆t<br />
+ O ( ∆t)<br />
⋅ 1 − ( m − n)<br />
λ ∆t<br />
+ O ( ∆t)<br />
= ( n + 1)<br />
µ ∆t<br />
+ O ( ∆t<br />
,<br />
[ ] [ ] )<br />
dacă 1 ≤ n < c , sau<br />
1 − ( m − n)<br />
λ ∆t<br />
+ O ( ∆t)<br />
⋅ cµ<br />
∆t<br />
+ O ( ∆t)<br />
= cµ<br />
∆t<br />
+ O ( ∆t<br />
,<br />
[ ] [ ] )<br />
dacă<br />
n ≥ c .<br />
3) sistemul se află în starea En− 1 şi au loc o venire şi nici o plecare în intervalul de<br />
timp ( t , t + ∆t ). Probabilitatea corespunzătoare este:<br />
[ ( m − n + 1)<br />
λ ∆t<br />
+ O ( ∆t)<br />
] ⋅ [ 1 − ( m − n)<br />
µ ∆t<br />
+ O ( ∆t)<br />
]=<br />
= ( m − n + 1)<br />
λ ∆t<br />
+ O ( ∆t)<br />
,<br />
dacă 1 ≤ n < c , sau<br />
( m − n + 1)<br />
λ ∆t<br />
+ O ( ∆t)<br />
⋅ 1 − cµ<br />
∆t<br />
+ O ( ∆t)<br />
= ( m − n + 1 λ ∆t<br />
+ O ( ∆t)<br />
,<br />
[ ] [ ] )<br />
dacă<br />
n ≥ c .<br />
Aşadar,<br />
a) pentru n < c , avem:<br />
( t + ∆t)<br />
= 1 − nµ<br />
+ ( m − n)<br />
λ ∆t<br />
+ O ( ∆t)<br />
p<br />
{ [ ] } (<br />
[ ( n + 1)<br />
µ ∆t<br />
+ O ( ∆t)<br />
] pn+<br />
1(<br />
t)<br />
+<br />
[ ( m − n + 1) λ ∆t<br />
+ O ( ∆t)<br />
] p ( t)<br />
pn n<br />
+<br />
+<br />
n−1<br />
b) pentru n ≥ c , avem<br />
( t + ∆t)<br />
= 1 − cµ<br />
+ ( m − n)<br />
λ ∆t<br />
+ O ( ∆t)<br />
p ( t)<br />
+<br />
t)<br />
+<br />
{ [ ] }<br />
[ µ ∆t<br />
+ O ∆t)<br />
] p ( t)<br />
+ [ ( m − n + 1)<br />
λ ∆t<br />
+ O ( ∆t)<br />
] p ( t)<br />
pn n<br />
+ c ( n+ 1<br />
n−1<br />
c) pentru n = 0 , avem<br />
p ( t + ∆t)<br />
= 1 − λ<br />
∆t<br />
+ O ( ∆t)<br />
p<br />
0<br />
+<br />
=<br />
[ ] 0 ( t)<br />
+<br />
[ 1 − λ ∆t<br />
+ O ( ∆t)<br />
]( µ ∆t<br />
+ O ( ∆t)<br />
) p1(<br />
t)<br />
[ 1 − mλ<br />
∆t<br />
+ O ( ∆t)<br />
] p ( t)<br />
+ [ µ ∆t<br />
+ O ( ∆t)<br />
] p ( t)<br />
0<br />
1
8. Elemente de teoria aşteptării 183<br />
Relaţiile a), b), c) le împărţim la ∆t , ţinem seama de proprietăţile funcţiilor<br />
O ( ∆t)<br />
când se trece<br />
la limită pentru ∆t → 0 , şi se obţin ecuaţiile de stare ale<br />
modelului<br />
⎧p′<br />
0 ( t)<br />
= µ p1(<br />
t)<br />
− mλ<br />
p0<br />
( t)<br />
⎪ [ ] n<br />
n+<br />
1<br />
n−1<br />
⎪<br />
p′<br />
n ( t)<br />
= − nµ<br />
+ ( m − n)<br />
λ p ( t)<br />
+ ( n + 1)<br />
µ p ( t)<br />
+ λ ( m − n + 1)<br />
p ( t)<br />
⎨<br />
1≤<br />
n < c<br />
⎪p′<br />
n ( t)<br />
= −[<br />
cµ<br />
+ ( m − n)<br />
λ ] pn<br />
( t)<br />
+ cµ<br />
pn+<br />
1(<br />
t)<br />
+ λ ( m − n + 1)<br />
pn−1<br />
( t)<br />
⎪<br />
⎪⎩<br />
c ≤ n ≤ m.<br />
În cazul staţionar, ecuaţiile de stare sunt<br />
⎧λ<br />
mp0<br />
= µ ⋅ p1<br />
⎪<br />
⎨(<br />
n + 1)<br />
µ ⋅ pn+<br />
1 = [ nµ<br />
+ ( m − n)<br />
λ]<br />
pn<br />
− λ ( m − n + 1)<br />
pn−1<br />
1≤<br />
n < c<br />
⎪<br />
⎩cµ<br />
⋅ pn+<br />
1 = [ cµ<br />
+ ( m − n)<br />
λ]<br />
pn<br />
− λ ( m − n + 1)<br />
pn−1<br />
c ≤ n < m<br />
deoarece pm+1( t ) = 0 , sistemul n eputând<br />
avea mai mult de m autobasculante la<br />
un moment dat.<br />
Pentru rezolvarea sistemului, aplicăm aceeaşi metodă<br />
ca la modelul din § 8.5<br />
şi, prin inducţie, avem<br />
⎪<br />
⎩ ! A<br />
n n ⎧C m ρ p0<br />
, n < c<br />
⎪ c<br />
n<br />
pn<br />
= ⎨c n ⎛ ρ ⎞<br />
m ⎜ ⎟ p0<br />
, c ≤ n ≤ m.<br />
c ⎝ c ⎠<br />
Înlocuind pn de mai sus în (8.3) rezultă<br />
1<br />
p0<br />
=<br />
.<br />
c−1<br />
c m<br />
n<br />
n n c n ⎛ ρ ⎞<br />
∑C<br />
m ρ + ∑ Am<br />
⎜ ⎟<br />
n=<br />
0 c!<br />
n=<br />
c ⎝ c ⎠<br />
Aici pn este probabilitatea ca, la un moment dat, să existe în sistem n<br />
autobasculante, p0 este probabilitatea ca în sistem să nu existe nici o<br />
ρ<br />
autobasculantă la un moment dat, iar < 1 pentru evitarea supraaglomerării.<br />
c<br />
Calculul elementelor necunoscute ale modelului<br />
După calcule laborioase se obţin pentru elementele necunoscute ale modelului<br />
următoarele relaţii:<br />
• numărul mediu de clienţi din sistem<br />
c c<br />
⎡<br />
c−1<br />
−1<br />
cρ<br />
+ c − mρ<br />
cρ<br />
C ⎤<br />
n n<br />
m mρ<br />
− c<br />
M[<br />
N(<br />
t)]<br />
= p0<br />
⎢ ∑C<br />
mρ<br />
+ ⎥ +<br />
⎣ ρ(<br />
1 + ρ)<br />
n=0 1 + ρ ⎦ ρ<br />
• numărul mediu de clienţi de la coadă<br />
c−1<br />
⎡ c ⎤ ⎡ n n ⎤ c−1<br />
c<br />
M[<br />
Lc<br />
] = m c<br />
Cm<br />
+ cρ<br />
Cm<br />
⎢ − − ⎥ ⋅ ∑ ρ ⎥ p0<br />
⎣ ρ<br />
⎢1<br />
− p0<br />
⎦ ⎣ n=<br />
0 ⎦<br />
• numărul mediu de staţii în lucru
184<br />
M[ns] = M[N(t)] − M[Lc]<br />
• timpul mediu de aşteptare la coadă<br />
M[<br />
Lc<br />
]<br />
M[<br />
WT ] =<br />
µ M[<br />
n ]<br />
• timpul mediu de aşteptare în sistem<br />
1<br />
M [ W ] = M[<br />
WT]<br />
+ .<br />
µ<br />
s<br />
Modele şi algoritmi de optimizare<br />
Aplicaţie numerică<br />
Balastiera are 2 excavatoare care trebuie să încarce 20 autobasculante. S-a constatat<br />
că sosirile autobasculantelor sunt poissoniene cu parametrul λ = 0.3<br />
autobasculante pe oră, iar tim pul de încărcare este exponenţial de parametru µ = 4<br />
autobasculante pe oră pentru fiecare excavator. Să se determine elementele<br />
necunoscute ale fenomenului de aşteptare.<br />
Rezolvare<br />
p0<br />
=<br />
λ 0.<br />
3<br />
ρ = = = 0.<br />
075;<br />
c = 2 ; m = 20<br />
µ 4<br />
1<br />
2<br />
2<br />
+<br />
2!<br />
1<br />
n<br />
n<br />
∑C<br />
20 ( 0.<br />
075)<br />
20<br />
∑<br />
n=<br />
0<br />
n=<br />
2<br />
A<br />
n<br />
20<br />
⎛ 0.<br />
075 ⎞<br />
⎜ ⎟<br />
⎝ 2 ⎠<br />
⎢ 2 ⎡ 1<br />
⋅ 0.<br />
075 + 2 − 20<br />
⋅ 0.<br />
075 n<br />
M[N<br />
( t)]<br />
= p0<br />
∑C<br />
20 ( 0.<br />
075<br />
⎣ 0.<br />
075 ⋅1.<br />
075<br />
n=<br />
0<br />
0.<br />
075 2<br />
2.<br />
08595<br />
0.<br />
075<br />
20 ⋅ −<br />
+<br />
=<br />
) n<br />
n<br />
=<br />
0.<br />
18756<br />
1<br />
2(<br />
0.<br />
075)<br />
C<br />
+<br />
1.<br />
075<br />
1<br />
⎡ 2 ⎤ ⎡ n<br />
n ⎤<br />
1 2<br />
M[ L2<br />
] = ⎢20<br />
− − 2⎥<br />
⋅ ⎢1<br />
− p0<br />
∑ C20<br />
( 0.<br />
075)<br />
⎥ + + 2(<br />
0.<br />
075)<br />
C 20 p0<br />
0.<br />
74239<br />
⎣ 0.<br />
075 ⎦ ⎣ n=<br />
0<br />
⎦<br />
] ( )]<br />
=<br />
n = M[<br />
N t − M[<br />
L ] = 1.<br />
34355<br />
M[ s<br />
2<br />
M[L2<br />
]<br />
M[<br />
WT ] = = 0.<br />
13814 = 8<br />
4⋅<br />
M[<br />
n ]<br />
s<br />
min<br />
17<br />
1<br />
M[W<br />
] = M [ WT]<br />
+ = 0.<br />
38814 = 23 min 17 s .<br />
4<br />
Rezolvăm modelul de mai sus şi cu Management Scientist. D upă lansarea<br />
pachetului de programe selectăm modulul Waiting Lines, apoi modelul Poisson<br />
Arrivals/Exponential Service (Finite Pop.) şi introducem d atele ca în Figura<br />
8.5.<br />
După apăsarea<br />
butonului Solve obţinem rezultatele din Tabelul 8.4 care coincid<br />
cu cele determinate anterior.<br />
s<br />
2<br />
20<br />
⎤<br />
⎥<br />
⎦<br />
+
8. Elemente de teoria aşteptării 185<br />
Figura 8.5<br />
Tabelul 8.4<br />
WAITING LINES<br />
*************<br />
NUMBER OF CHANNELS = 2<br />
POISSON ARRIVALS WITH MEAN RATE = 0.3<br />
EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 4 PER CHANNEL<br />
FINITE CALLING POPULATION OF <strong>SI</strong>ZE = 20<br />
OPERATING CHARACTERISTICS<br />
-------------------------<br />
THE PROBABILITY OF NO UNITS IN THE SYSTEM 0.1876<br />
THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE 0.7424<br />
THE AVERAGE NUMBER OF UNITS IN THE SYSTEM 2.0859<br />
THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE 0.1381<br />
THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM 0.3881<br />
THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT 0.5311<br />
Number of Units in the System Probability<br />
----------------------------- -----------<br />
0 0.1876<br />
1 0.2813<br />
2 0.2005<br />
3 0.1353<br />
4 0.0863<br />
5<br />
6<br />
7<br />
0.0518<br />
0.0291<br />
0.0153<br />
8 0.0075<br />
9 0.0034<br />
10 0.0014<br />
11 0.0005<br />
12 0.0002<br />
13 0.0001<br />
14 0.0000<br />
8.7. Simulare<br />
Modelele matematice corespunzătoare sistemelor reale sunt folosite pentru a<br />
analiza rezultatele deciziilor înainte de implementare. Simularea nu determină soluţia optimă a modelului matematic, ci compară rezultatele mai multor alternative<br />
predefinite cu scopul de a o reţine pe cea mai avantajoasă. Modelul de simulare<br />
urmăreşte evoluţia în timp a sistemului real şi ţine seamă şi de factorul aleatoriu. În<br />
situaţia în care modelul matematic poate fi rezolvat analitic, această metodă este<br />
preferabilă simulării, deoarece se obţine soluţia optimă. Simularea se foloseşte în
186<br />
Modele şi algoritmi de optimizare<br />
cazurile în care rezolvarea analitică<br />
a modelului matematic este imposibilă sau<br />
destul de<br />
dificilă.<br />
Simulare probabilistă<br />
Vom ilustra această metodă printr-un exemplu de model de aşteptare adaptat<br />
după Bonini et al. (1997).<br />
Considerăm un depozit care are o rampă de descărcare a vagoanelor.<br />
Vagoanele sosesc noaptea şi descărcarea unui vagon durează o jumătate de zi. Dacă<br />
sunt mai mult de două vagoane la rând pentru descărcare, atunci unele<br />
dintre ele<br />
rămân<br />
să fie descărcate în ziua următoare. S-a constatat că numărul de vagoane<br />
care sosesc noaptea urmează repartiţia din Tabelul 8.5 şi este independent de<br />
numărul de vagoane sosite în oricare altă noapte.<br />
Tabel 8.5<br />
Nr. vagoane Probabilitatea<br />
0 0.23<br />
1 0.30<br />
2 0.30<br />
3 0.10<br />
4 0.05<br />
5 0.02<br />
cel puţin 6 0.00<br />
Numărul mediu de sosiri pe noapte este de 1.5 vagoane. Suntem în cazul unui<br />
model de aşteptare cu o singură staţie de servire, FIFO, coadă infinită, cu rata<br />
serviciilor µ=2 şi rata sosirilor λ=1.5 . Se poate arăta că sosirile nu sunt<br />
poissoniene şi din acest motiv nu se poate aplica nici unul din modelele clasice. În<br />
vederea<br />
simulării avem nevoie de un eşantion de sosiri aleatoare pentru un număr<br />
de nopţi. Pentru aceasta se poate folosi o tabelă de numere aleatoare sau un<br />
generator de astfel de numere. Vom folosi generatorul de numere aleatoare din<br />
Microsoft Excel pentru a genera numere uniform repartizate între 0 şi 99, pe care le<br />
vom asocia cu un număr de sosiri ca în Tabelul 8.6.<br />
Număr de<br />
Tabelul 8.6<br />
Număr<br />
aleatoriu Frecvenţa sosiri<br />
generat<br />
relativă<br />
0 0-22 0.23<br />
1 23-52 0.30<br />
2 53-82 0.30<br />
3 83-92 0.10<br />
4 93-97 0.05<br />
5 98-199 0.02<br />
Vom considera comportarea sistemului de aşteptare pe o perioa dă de 30 zile.<br />
Pentru că simularea începe fără vagoane la descărcare, este necesară o perioad ă de
8. Elemente de teoria aşteptării 187<br />
iniţializare (o consideră m de 5 zile) pentru ca sistemul să se apro pie d e o situaţie normală. Au fost genera te 35 de nume re, ca re sunt trec ute în Tabelul 8.7, împreună<br />
cu rezultatele simulării.<br />
Tabelul 8.7.<br />
Ziua<br />
Număr<br />
aleatoriu<br />
Număr<br />
sosiri<br />
Total de<br />
descărcat<br />
Amânate Descărcate<br />
x 99 5 0 0 0<br />
x 6 0 0 0 0<br />
x 15 0 0 0 0<br />
x 62 2 2 0 2<br />
x 86 3<br />
3 1 2<br />
1 12 0 1 0 1<br />
2 39 1 1 0 1<br />
3 39 1 1 0 1<br />
4 16 0 0 0 0<br />
5 24 1 1 0 1<br />
6 45 1 1 0 1<br />
7 88 3 3 1 2<br />
8 81 2 3 1 2<br />
9 53 2 3 1 2<br />
10 26 1 2 0 2<br />
11 56 2 2 0 2<br />
12 77 2 2 0 2<br />
13 31 1 1 0 1<br />
14 34 1 1 0 1<br />
15 94 4 4 2 2<br />
16 11 0 2 0 2<br />
17 15 0 0 0 0<br />
18 92 4 4 2 2<br />
19 38 1 3 1 2<br />
20 14 0 1 0 1<br />
21 36 1 1 0 1<br />
22 9 0 0 0 0<br />
23 56 2 2 0 2<br />
24 84 3 3 1 2<br />
25 12 0 1 0 1<br />
26 79 2 2 0 2<br />
27 25 1 1 0 1<br />
28 81 2 2 0 2<br />
29 1 0 0 0 0<br />
30 65 2 2 0 2<br />
Total 40 9 41<br />
Media 1,33 0,3 1,36
188<br />
Modele şi algoritmi de optimizare<br />
Observăm că a fost descărcat şi un vagon în plus faţă de cele sosite în cele 30<br />
de zile care constituie perioada de simulare, deoarece atunci când începem<br />
simularea pentru 30 de zile mai era un vagon de descărcat. Cunoscând care este<br />
penalizarea pentru amânarea descărcării unui vagon, se poate calcula pierderea<br />
cauzată pe perioada simulată. Se pot reface calculele pentru o capacitate de<br />
descărcare sporită, de exemplu 3 vagoane pe zi, şi se compară pierderea cauzată de<br />
vagoanele amânate, putând decide care este cea mai avantajoasă configuraţie<br />
pentru acest sistem de aşteptare.<br />
Rolul simulării manuale este de a înţelege în ce constă simularea unui model<br />
de<br />
aşteptare,<br />
urmând ca pentru un eşantion mare să se folosească simularea cu<br />
calculatorul. Există multe pachete de programe specializate în simulare, de<br />
exemplu <strong>SI</strong>MUL8 care are o interfaţă grafică atrăgătoare şi se pot realiza destul de<br />
comod simulări pentru modele de aşteptare. Se poate folosi şi EXCEL pentru<br />
realizarea simulării modelelor de aşteptare sau de stocuri.<br />
8.8. Probleme propuse<br />
1. La un magazin de decoraţiuni interioare sosesc în medie 80 de clienţi pe oră, iar<br />
solicitările unui client sunt satisfăcute în medie într-un minut şi jumătate.<br />
Analizând statistic<br />
datele culese la acest sistem de aşteptare, s-a constatat că<br />
sosirile<br />
clienţilor sunt poissoniene, iar serviciile, exponenţiale. Să se determine:<br />
a) intervalul mediu dintre două sosiri consecutive<br />
b) numărul mediu de persoane servite pe oră<br />
c) probabilitatea ca într-un interval de 3 minute să nu soseacă nici un client<br />
d) numărul vânzătorilor necesari pentru a se evita algomerarea.<br />
R. Se consideră unitatea de timp minutul şi atunci, numărul mediu de sosiri într-un<br />
80<br />
minut este λ = = 1.<br />
333 .<br />
60<br />
1 60<br />
a) Intervalul mediu dintre două sosiri consecutive este de = = 0.<br />
75 minute.<br />
λ 80<br />
60<br />
b) Numărul mediu de persoane ce pot fi servite pe oră este de µ = = 40 .<br />
1.<br />
5<br />
n<br />
0<br />
−λt<br />
( λt)<br />
−3⋅0.<br />
75 ( 3 ⋅ 0.<br />
75)<br />
c) Deoarece Pn<br />
( t)<br />
= e , rezultă că P 0 ( 3)<br />
= e<br />
= 0.<br />
1054 .<br />
n!<br />
0!<br />
d) Dacă sistemul de aşteptare are o singură staţie de servire<br />
(un singur vânzător),<br />
80<br />
= = = 2 > 1<br />
λ<br />
ρ şi se creează aglomeraţie. Considerând sistemul cu mai multe<br />
µ 40<br />
staţii<br />
~<br />
= < 1<br />
ρ<br />
ρ şi alegem c ca fiind cel mai mic întreg pentru care este<br />
c
8. Elemente de teoria aşteptării 189<br />
satisfăcută<br />
această inegalitate. Obţinem c=2. Ca să nu se creeze aglomeraţie, este<br />
nevoie de 2 vânzători.<br />
2. La ieşirea dintr-o staţie de betoane, sosesc pentru a li se spăla roţile în medie 15<br />
autobasculante pe oră. Dacă repartiţia sosirii autobasculantelor pentru a li se spăla<br />
roţile este poissoniană, să se determine timpul maxim în care, cu probabilitatea de<br />
cel puţin 0.95, cel mult 3 autobasculante aşteaptă să li se spele roţile.<br />
R. În următoarea secvenţă MathCAD, care rezolvă această problemă, se consideră<br />
unitatea de timp minutul.<br />
15<br />
Media sosirilor λ :=<br />
60<br />
Probabilitatea ca in numărul intervalul zilelor de timp lucrătoare t sa soseasca din an<br />
n autobasculante<br />
Pn ( , t)<br />
e λ − ⋅t λ t ⋅ ( )n<br />
:= ft ()<br />
n!<br />
3<br />
:= ∑<br />
n = 0<br />
Pn ( , t)<br />
f(0)=1 f(1)=0.99987 f(2)=0.99825 f(3)=0.99271<br />
f(4)=0.98101 f(5)=0.96173 f(6)=0.934<br />
În maximum 5 minute, cu probabilitatea 0.95, cel mult 3 autobasculante vor<br />
aştepta să li se spele roţile.<br />
3.<br />
La o staţie de betoane sosesc bene care sunt încărcate şi părăsesc imediat staţia.<br />
S-a constatat că la intervale de o oră pe o perio adă de o săptămână benele au sosit<br />
conform cu Tabelul 8.8 . În aceeaşi perioadă s-au notat şi timpii<br />
de încărcare a<br />
benelor, iar rezultatele sunt trecute în Tabelul<br />
8.9 .<br />
Tabelul 8.8<br />
Nr bene sosite/ora (xi) 0 1 2 3 4 5 6 7<br />
Frecvenţa (Ni) 8 23 24 21 14 6 3 1<br />
Minute/benă (tj) 5<br />
Frecvenţa(Nj)<br />
5<br />
0<br />
1<br />
0<br />
3<br />
4<br />
Tabelul 8.9<br />
1 2 2 3<br />
5 0 5 0<br />
2 1 1 1<br />
9 9 4 3<br />
3<br />
5<br />
4<br />
0<br />
4<br />
5<br />
5<br />
0<br />
5<br />
5<br />
6<br />
0<br />
8 6 4 6 3 3<br />
Minute/benă (tj)<br />
6<br />
5<br />
7<br />
0<br />
7<br />
5<br />
8<br />
0<br />
8<br />
5<br />
9<br />
0<br />
9<br />
5<br />
10<br />
0<br />
10<br />
5<br />
11<br />
0<br />
11<br />
5<br />
12<br />
0<br />
Frecvenţa(N j)<br />
4 2 0 0 2 0 0 0 0 2 0 1<br />
a) Să se testeze că sosirile la staţia de betoane sunt repartizate Poisson.
190<br />
Modele şi algoritmi de optimizare<br />
b) Să se testeze că timpii de servire sunt repartizaţi exponenţial.<br />
c) Să se determine numărul mediu de bene din sistemul de aşteptare care este dat de<br />
staţia de betoane.<br />
d) Să se determine numărul mediu de bene care<br />
aşteaptă să fie încărcate.<br />
e) Să se determine timpul mediu de aşteptare la rând pentru a fi încărcate benele.<br />
f) Să se determine timpul mediu petrecut de o benă în sistemul de aşteptare dat de<br />
staţia de betoane.<br />
g) Să se determine numărul punctelor de încărcare necesare pentru a evita<br />
aglomerarea în perioada de vârf.<br />
Rezolvare<br />
a) Vom folosi testul<br />
8<br />
∑<br />
=<br />
2<br />
χ pentru a verifica ipoteza H0 : „Sosirile sunt repartizate<br />
i i<br />
i 1<br />
Po(λ)” , cu = = 2.<br />
45<br />
N x<br />
8<br />
2<br />
2 ( N i − N ′ i )<br />
λ . Determinăm statistica χ = ∑ ,<br />
8<br />
c<br />
i= 1 N i<br />
∑ N i<br />
′ =<br />
i=<br />
1<br />
, ∀ =<br />
− i<br />
unde N N e ( ) i 1,<br />
8<br />
x λ<br />
i i<br />
2<br />
χ găsim, pentru pragul = 0.<br />
05<br />
2<br />
c =<br />
. Obţinem χ 0.<br />
52657 . Din tabela repartiţiei<br />
α şi numărul gradelor de libertate,<br />
l = ( 8 −1)<br />
−1<br />
= 6 (deoarece avem un parametru λ , media sosirilor),<br />
2<br />
2 2<br />
χ 0. 05;<br />
6 = 12.<br />
592 . Cum χ c < χ 0.<br />
05;<br />
6 admitem ipoteza H 0 cu<br />
pragul de<br />
semnificaţie 0.05 ;<br />
b) Vom folosi testul Kolmogorov pentru a verifica ipoteza H0: „Timpii de servire<br />
sunt repartizaţi Exp(µ)”. Pentru aceasta calculăm un estimator pentru media<br />
timpilor de servire<br />
24<br />
∑<br />
( ti<br />
− 2.<br />
5)<br />
N i<br />
i=<br />
1<br />
t = 24 = 19.<br />
5 minute (am considerat mijlocul<br />
N<br />
∑<br />
i=<br />
1<br />
i<br />
intervalului de referinţă). Atun ci µ = 0.<br />
05128 . Calculăm funcţia de repartiţie<br />
teoretică<br />
( )<br />
F<br />
i t −0.<br />
05128<br />
i = 1 − e , funcţia de repartiţie empirică<br />
∑<br />
j=<br />
1<br />
i = 24<br />
∑<br />
j=<br />
1<br />
i<br />
N<br />
Fe ,<br />
N<br />
∀ i = 1,<br />
24 şi determinăm d max F − Fe = 0.<br />
0283.<br />
Pentru pragul de<br />
=<br />
1≤i≤<br />
24<br />
semnificaţie α = 0.<br />
01,<br />
în tabela funcţiei K (u)<br />
(testul asimptotic al lui<br />
Kolmogorov) găsim u=1.63 . Deoarece < = 0.<br />
332<br />
u<br />
d 72 se admite ipoteza H0<br />
23<br />
cu pragul de semnificaţie α = 0.<br />
01 ;<br />
c) Numărul benelor servite într-o oră 60 ⋅ 0.<br />
5128 = 3.<br />
0768 . Suntem în cazul<br />
modelului Po(2.45)/Exp(3.07)/1:(∞,FIFO) şi atunci M[N(t)]=3.9;<br />
i<br />
i<br />
j<br />
j
8. Elemente de teoria aşteptării 191<br />
d) M[L 1]=3.11<br />
; e) M[WT]=3.7 min ; f) M[W]=23.24 min ;<br />
λ 2.<br />
45<br />
g) ρ = = < 1 şi astfel este suficient un singur punct de încărcare.<br />
µ 3.<br />
07<br />
4. La o carieră, care are un singur utilaj de încărcare a autobasculantelor, sosesc în<br />
medie 15 autobasculante pe oră. În medie, utilajul poate să încarce 20<br />
autobasculante pe oră. Din analiza statistică a datelor culese la faţă locului s-a<br />
constatat că sosirile sunt poissoniene, iar servirile, exponenţiale. Să se determine:<br />
a) probabilitatea ca o autobasculantă să nu aştepte pentru a fi încărcată<br />
b) numărul mediu de autobasculante din sistemul de aşteptare creat la carieră<br />
c) numărul mediu de autobasculante din şirul de aşteptare<br />
d) timpul mediu de aşteptare al unei autobasculante în sistemul de aşteptare<br />
e) timpul mediu de aşteptare al unei autobasculante în şirul de aşteptare pentru a fi<br />
încărcată<br />
f) probabilitatea ca în sistemul de aşteptare să existe mai mult de 2 autobasculante<br />
g) probabilitatea ca autobasculanta să aştepte la rând să fie încărcată mai mult de<br />
două minute.<br />
R. Se consideră unitatea de timp minutul. Modelul corespunzător acestei probleme<br />
3<br />
este Po(λ)/Exp(µ)/1:(∞,FIFO) cu λ=10, µ=20 şi ρ = .<br />
4<br />
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,<br />
f) P(N(t)>2)=1-p0-p1-p2=1-0.25-0.1875-0.1406=0.4219,<br />
g) P(M[WT]>2)=0.0067 (extrem de rar se întâmplă ca autobasculanta să aştepte<br />
mai mult de 2 minute la rând pentru a fi încărcată!).<br />
5. La o cantină a unei firme de construcţii, cu autoservire, cu un singur ghişeu,<br />
sosesc salariaţii la masă după legea Poisson cu rata 0.75 salariat/minut. Un<br />
funcţionar ia comanda, stabileşte preţul şi încasează contravaloarea comenzii. Până<br />
i se pregăteşte meniul, funcţionarul ia comanda următorului client aşezat la rând.<br />
S-a constatat că timpul mediu de servire este de 1 min/salariat. Se apreciază că în<br />
medie cei ce aşteaptă să ia masa sunt plătiţi cu 10 u.m./oră, iar funcţionarul de la<br />
ghiseu cu 7 u.m./oră. Conducerea firmei este interesată să cunoască:<br />
a) probabilitatea ca nici un salariat să nu fie în cantină,<br />
b) numărul mediu de salariaţi aşteptând să dea comanda,<br />
c) timpul mediu petrecut la rând de un salariat, aşteptând să dea comanda,<br />
d) probabilitatea ca un salariat care vine în cantină să aştepte să dea comanda şi<br />
e) costul orar al serviciului în cantină.<br />
R. a) p0=0.25 , b) 2.25 , c) 3min , d) 0.75 , e) 37 u.m.<br />
6. Proprietarul unui service auto doreşte să înfiinţeze propria spălătorie auto, astfel<br />
ca în atelierul de reparaţii să intre autoturismele care au fost spălate. Ştiind că<br />
sosirile autoturismelor pentru service care trebuie şi spălate sunt poissoniene, cu<br />
rata medie de 3 autoturisme pe oră, iar un muncitor are nevoie în medie de 20 de
192<br />
Modele şi algoritmi de optimizare<br />
minute pentru spălarea unui autoturism şi probabilitatea de aşteptare pentru spălare să<br />
nu<br />
depăşească 0.2, câţi muncitori pentru spălarea autoturismelor ar trebui angajaţi?<br />
R. Trebuie<br />
ca P(N[t]>c)c)=1–(p0+p1)=1–(0.3333+0.3333+1.6667)=0.1666 1 şi dacă ar fi un<br />
µ 6<br />
singur poliţist ar fi supraaglomerare.<br />
ρ<br />
a) Alegem numărul c de poliţişti astfel încât < 1 , adică c=3 . Modelul de<br />
c<br />
aşteptare devine Po(λ)/Exp(µ)/3:( ∞, FIFO) ;<br />
b) p0=0.0449;<br />
c) P(<br />
n > 5)<br />
= 1 − P(<br />
n ≤ 5)<br />
= 1 − ∑<br />
= 1 − ( 0.<br />
0449 + 0.<br />
1124 + 0.<br />
1404 + 0.<br />
1170 + 0.<br />
0975 +<br />
) M[L ]=3.5112 automobile ; e) M[WT]=14 minute .<br />
d 3<br />
5<br />
i = 0<br />
=<br />
0.<br />
0813)<br />
=<br />
0.<br />
4065<br />
8. Un depozit închiriază de la o firmă<br />
de transporturi 4 camioane pentru a se<br />
aproviziona sau pentru a transporta marfa la clienţi. Depozitul are 2 rampe de<br />
încărcare/descărcare care încarcă/descarcă un camion în medie în 20 minute. La<br />
depozit sosesc în medie 4 camioane pe oră. S-a constatat că intervalele dintre sosiri<br />
şi timpii de încărcare au repartiţia exponenţială. Să se determine:<br />
a) probabilitatea ca ambele rampe să fie libere<br />
b) numărul mediu de camioane de la depozit<br />
c) probabilitatea ca un camion care vine la depozit să aştepte intrarea la rampă<br />
pi
8. Elemente de teoria aşteptării 193<br />
d) ştiind<br />
că pentru o oră chiria pentru un camion este de 20 u.m., care este suma<br />
medie orară plătită pentru nefolosirea unui camion?<br />
R. a) p 0=0.0246<br />
, b) M[N(t)]=2.6351 , c) P(M[N(t)]>2)=1-(p0+p1+p2)=0.5823 ,<br />
d) S = M[<br />
WT]<br />
⋅ 20 = 2.<br />
986 u.m.<br />
9.<br />
La o dană din port, proprietatea unei companii petroliere, sosesc pentru<br />
descărcare<br />
tancuri petroliere la intervale de timp repartizate exponenţial, cu media<br />
1.4 zile. Timpul mediu necesar descărcării este de asemenea presupus repartizat<br />
exponenţial,<br />
cu media 0.8 zile. Să se determine:<br />
a)<br />
numărul mediu de tancuri petroliere care aşteaptă la rând pentru descărcare<br />
b) timpul mediu de aşteptare în port înainte de a începe descărcarea<br />
c) timpul mediu de aşteptare în port din momentul sosirii şi până la plecarea<br />
tancului petrolier<br />
d) dacă se închiriază o dană cu 1500 u.m./zi, la care se lucrează la fel ca la prima şi<br />
dacă tancurile<br />
petroliere se duc la dana liberă pentru descărcare, în ordinea sosirii<br />
lor, care este timpul mediu de aşteptare până la începerea descărcării<br />
e) în condiţiile de la d) care este numărul mediu de tancuri petroliere care aşteaptă<br />
la rând pentru descărcare<br />
f) este avantajoasă închirierea celei de-a doua dane dacă pentru fiecare zi pe care<br />
tancul petrolier o petrece la rând aşteptând pentru<br />
descărcare compania pierde 4000<br />
u.m. ?<br />
R. a) M[L1]=7.4098 ; b) M[WT]=10.3779 ; c) M[W]=11.6279 ;<br />
d) M[WT]=0.3108 ; e) M[L2]=0.2219 ;<br />
f) Pierderea pentru primul caz 4000 ⋅ M [ L1<br />
] = 41511.<br />
6 , iar pentru cel de-al doilea<br />
caz 4000 ⋅ M [ L2<br />
] + 1500 = 2387.<br />
6 . Da.<br />
10. O firmă are 30 de instalaţii de aer condiţionat şi frigidere şi pentru întreţinerea<br />
lor a angajat 2 specialişti. Ştiind că solicitările pentru intervenţii sosesc în medie<br />
una pe zi şi sunt repartizate Poisson, iar un specialist reuşeşte să depaneze un aparat<br />
(aer condiţionat sau frigider) în medie în 20 minute, timpul necesar depanării fiind<br />
repartizat exponenţial, să se determine:<br />
a) numărul mediu de aparate care aşteaptă să fie depanate<br />
b) numărul<br />
mediu de aparate care nu funcţionează la un moment dat<br />
c) probabilitatea ca să nu aibă de lucru cei doi specialişti<br />
d) timpul mediu de aşteptare până când un specialist începe depanarea unui aparat<br />
e) timpul<br />
mediu de nefuncţionare a unui aparat<br />
R. a) M[L2]=0.5037 , b) M[N(t)]=1.6836 , c) p0=0.2524 , d) 8 min 32 s ,<br />
e) 28<br />
min 32 s .
9. ELEMENTE <strong>DE</strong> TEORIA STOCURILOR<br />
9.1. Introducere în teoria stocurilor<br />
9.1.1. Punerea problemei<br />
În desfăşurarea unei activităţi de producţie intervin valori materiale care intră<br />
în procesul de prelucrare (materii prime, fonduri băneşti etc.) şi valori care rezultă<br />
în urma acestui proces (produse finite).<br />
Pentru ca procesul de producţie într-o întreprindere să se desfăşoare<br />
neîntrerupt,<br />
este necesar ca întreprinderea să dispună de un stoc de materiale care<br />
să poată alimenta în mod sistematic producţia.<br />
Există astfel o cerere din stocul de materiale care vine din partea producţiei.<br />
Întreprinderea<br />
trebuie să investească o sumă de bani în aceste materiale pentru a fi<br />
capabilă<br />
să satisfacă necesităţile procesului de producţie.<br />
Imobilizarea unor sume mari de bani în stocurile de materiale poate să conducă<br />
la pierderi pentru întreprindere.<br />
Pe de altă parte, dacă investiţia în stocul de materiale va fi mică, adică, stocul<br />
este<br />
subdimensionat, vor exista perioade când procesul de producţie încetează şi<br />
întreprinderea<br />
înregistrează din nou pierderi datorate nefolosirii maşinilor şi<br />
utilajelor în procesul de producţie.<br />
Apare astfel necesitatea dimensionării optime a stocurilor de materii prime şi<br />
materiale astfel încât costurile care rezultă din imobilizarea fondurilor sau<br />
neutilizarea resurselor să fie minime.<br />
Problemele care constau în dimensionarea optimă a stocurilor de materii prime<br />
şi materiale se numesc probleme de stoc aprovizionare.<br />
Produsele rezultate din procesul de producţie sunt cerute în afara întreprinderii<br />
în diferite cantităţi care variază în timp.<br />
Pentru ca întreprinderea să poată asigura întotdeauna satisfacerea cererii pe un<br />
interval de timp dat, este necesar să se realizeze un stoc de produse rezultate în<br />
urma procesului de producţie. Dacă întreprinderea menţine un stoc prea mare de<br />
produse, poate apărea o pierdere, constând din imobilizarea fondurilor băneşti<br />
investite în aceste produse, precum şi în eventuala depreciere a produselor sau<br />
recondiţionarea lor periodică. Dacă stocul nu ar putea să satisfacă cererea<br />
înregistrată de întreprindere pe o perioadă de timp, ar apărea din nou pierderi<br />
datorate penalizărilor plătite, pentru nesatisfacerea<br />
comenzilor.
9. Elemente de teoria stocurilor 195<br />
Se pune din nou problema dimensionării optime a stocului astfel încât<br />
pierderile datorate imobilizării valorilor în stoc, precum şi pierderile rezultate din<br />
nesatisfacerea cererilor (penalizările) să fie minime.<br />
Problemele care constau în dimensionarea optimă a stocului de produse rezultate<br />
din procesul de producţie se numesc probleme de stoc producţie (Văduva et al, II,<br />
1974).<br />
9.1.2. Concepte utilizate în teoria stocurilor<br />
Rezolvarea problemelor legate de determinarea stocurilor optime se face cu<br />
ajutorul unor modele matematice ale teoriei stocurilor.<br />
Stocul sau inventarul este o resursă de orice fel care are o valoare economică şi<br />
care se caracterizează prin intrări în resursă (reaprovizionarea stocului) şi ieşiri din<br />
resursă.<br />
Valoarea resursei I = I (t) este o funcţie de timp. Scopul menţinerii unui stoc<br />
este acela de a satisface o cerere. În urma satisfacerii cererii stocul se micşorează şi,<br />
de aici, nevoia<br />
reaprovizionării lui.<br />
Fie a(t), rata intrărilor în resursă la momentul t şi b(t), rata ieşirilor din<br />
resursă, iar r(t), rata cererii la momentul t.<br />
Cererea nu se confundă întotdeauna<br />
cu ieşirea, deoarece există situaţii în care<br />
mat erialele din stoc se depreciază în timp şi atunci la ieşirea din stoc la cerere se<br />
adaugă şi materialele depreciate în acel interval de timp. De cele mai multe ori însă<br />
b(t ) = r(t) .<br />
Fie I(0) = I0, nivelul stocului la momentul t = 0, considerat momentul iniţial<br />
de la care se urmăreşte evoluţia stocului.<br />
Variaţia stocului este dată de relaţia<br />
I(<br />
t)<br />
= I<br />
0<br />
+<br />
t<br />
∫ ( a t)<br />
− b(<br />
t)<br />
)<br />
0<br />
( dt .<br />
Ieşirile din stoc, b(t), şi/sau cererea, r(t), pot fi deterministe sau aleatoare, iar<br />
func ţia a(t) trebuie aleasă<br />
astfel încât să se realizeze un obiectiv sau o eficienţă<br />
dorită.<br />
Eficienţa se defineşte în funcţie de costuri şi acestea<br />
pot fi:<br />
• costul de depozitare, ce rezultă din imobilizarea fondurilor băneşti în materii<br />
prime sau produse (cheltuieli<br />
de producţie) şi din cheltuielile pentru asigurarea<br />
depozitării şi conservării stocului,<br />
• costul de lansare, care rezultă din cheltuielile pentru lansarea comenzilor de<br />
reaprovizionare şi introducerea lor în stoc sau lansarea fabricaţiei,<br />
• costul lipsei de stoc, care se determină în funcţie de toate cheltuielile şi<br />
pierderile cauzate de lipsa din stoc a materiilor prime sau produselor (inclusiv<br />
penalizările rezultate din nelivrarea la timp a produselor fabricate).<br />
Eficienţa unui stoc de-a lungul unui interval de timp este dată de o funcţională<br />
de forma
196<br />
Modele şi algoritmi de optimizare<br />
C(t) = C[a(t), b(t), r(t)].<br />
În general, r(t) este o funcţie cunoscută şi uneori se cunoaşte şi funcţia b(t).<br />
În acest caz, trebuie determinată funcţia a(t) astfel încât eficienţa să fie optimă.<br />
Dacă C este o variabilă aleatoare, atunci se determină funcţiile necunoscute<br />
din condiţia ca valoarea medie a lui C să fie optimă. Pentru determinarea<br />
optimului lui C pot să intervină uneori şi anumite restricţii legate de elementele<br />
necunoscute.<br />
În modelele de teoria stocurilor intervin şi variabile sau parametri legate în<br />
special de mecanismul reaprovizionării, adică de mecanismul<br />
intrărilor în stoc. Din<br />
motive practice, se presupune că intrarea în stoc, reaprovizionarea, se face la<br />
momente discrete de timp. Astfel, a(t) ia valori nenule numai la anumite momente<br />
de timp t0 < t1 < t2 < ... .<br />
Intervalele de timp Ti = ti+1 − ti, i = 0, 1, 2, ..., se numesc cicluri de<br />
reaprovi e timp [0,T * zionare. Într-un interval d<br />
] pot avea loc mai multe<br />
reaprovizionări.<br />
I(t)<br />
S<br />
P<br />
t0<br />
a(t1) a(t2) a(t3)<br />
T0 T1 T2 3<br />
L<br />
t1 t2 t3<br />
Figura 9.1<br />
În F igura 9.1, variaţia stocului este reprezentată prin segmentele oblice, rata<br />
cererii<br />
fiind presupusă constantă. Se observă că pe intervalul de timp (t’, T<br />
exist li i<br />
oc la mo i omente de timp au loc numai ieşiri din stoc,<br />
ot fi egale sau nu, pot fi constante sau aleatoare.<br />
În ceea ce priveşte mărimea loturilor de reaprovizionare a(ti), acestea pot fi<br />
egale sau nu, pot depinde sau nu de Ti.<br />
În unele modele ale teoriei stocurilor din optimizarea funcţiei de eficienţă se<br />
poate deduce ciclul optim de reaprovizionare, Topt.<br />
oria stocurilor determină mărimea lotului de<br />
, Topt.<br />
rea şi a altor<br />
* )<br />
ă psă de stoc. Cantităţile a(t ) reprezintă valorile comenzilor care intră în<br />
st mentele t , iar între aceste m<br />
care micşorează nivelul stocului.<br />
În diferite modele ale teoriei stocurilor, ciclurile de reaprovizionare Ti, i = 0, 1,<br />
2, ..., p<br />
Aşadar, modelele de te<br />
reaprovizionare optim, aopt, şi/sau ciclul de reaprovizionare optim<br />
Reaprovizionarea la anumite momente de timp impune utiliza<br />
variabile care au importanţă practică.<br />
T<br />
t’<br />
T *<br />
t
9. Elemente de teoria stocurilor 197<br />
Astfel, lotul de reaprovizionare optim nu intră în stoc în momentul când a fost<br />
lansat,<br />
ci după un interval de timp L, numit timp de avans.<br />
Comanda a(t1) a fost lansată la momentul t1 − L, când stocul avea valoarea<br />
P0 = I(t1 − L).<br />
Mărimea P0 se numeşte nivel de reaprovizionare şi<br />
se observă că ea este<br />
strâns legată de timpul de avans L, în sensul că stocul P0 poate<br />
satisface cererea<br />
pe perioada timpului de avans L.<br />
În unele modele, L este presupus variabilă aleatoare,<br />
iar P0 este constant sau<br />
variabil. Mărimile<br />
L şi P 0 pot fi presupuse cunoscute sau pot fi variabile de<br />
decizie,<br />
care trebuie alese de decident în vederea realizării eficienţei optime. De<br />
obicei se cunoaşte una dintre<br />
aceste mărimi, cealaltă urmând a fi determinată cu<br />
ajutorul modelului de stocare.<br />
Intervalul de control este intervalul de timp dintre două lansări de comenzi<br />
succesive.<br />
Momentul<br />
lansării comenzii este momentul când nivelul stocului scade la<br />
nivelul de reaprovizionare P0. Uneori, drept variabilă de decizie se consideră şi<br />
nivelul S până la care trebuie încărcat stocul prin introducerea comenzii (nivelul<br />
maxim al stocului).<br />
Totalitatea elementelor care definesc mecanismul de reaprovizionare formează<br />
o politică de reaprovizionare. Aceasta constă din:<br />
• loturile de reaprovizionare,<br />
• ciclurile de reaprovizionare,<br />
• nivelul de reaprovizionare,<br />
• timpul de avans.<br />
Politica este optimă dacă elementele ce o caracterizează au fost determinate ca<br />
elemente ce realizează eficienţa optimă pe un interval de timp dat.<br />
Modelele de teoria stocurilor se pot clasifica după mai<br />
multe criterii.<br />
1. După modul cum evoluează în timp<br />
− modele dinamice,<br />
− modele statice.<br />
2. După natura aleatoare sau nu a elementelor sale<br />
− modele stochastice,<br />
− modele deterministe.<br />
3.<br />
După valorile posibile ale unor variabile (de exemplu, cererea)<br />
− modele cu cerere continuă,<br />
− modele cu cerere discretă.<br />
4.<br />
După numărul de stocuri de materiale distincte (se mai numesc şi staţii) –<br />
criteriu topologic<br />
− modele de stocare cu o singură staţie – stocarea unui singur tip de material,<br />
produs etc.,<br />
− modele de stocare cu mai multe staţii – stocarea mai multor tipuri de<br />
materiale, produse etc.
198<br />
Modele şi algoritmi de optimizare<br />
Modelele de teoria stocurilor se aseamănă cu cele de teoria cozilor. Sosirile din<br />
cadrul teoriei aşteptării corespund intrărilor în stoc, iar ieşirile corespund ieşirilor<br />
din stoc.<br />
Deosebirea dintre cele două tipuri de modele constă în aceea că, în timp ce în<br />
teoria aşteptării se presupune că venirile şi serviciile sunt variabile aleatoare<br />
cunoscute, în teoria stocurilor se cunoaşte numai cererea sau ieşirea şi se caută să<br />
se determine intrarea optimă.<br />
Aplicarea modelelor de teoria aşteptării în teoria stocurilor este posibilă numai<br />
atunci când variabila I(t) este o variabilă discretă.<br />
Pentru modelele ce vor fi prezentate în continuare se fac următoarele ipoteze.<br />
1. Ipoteze referitoare la mecanismul de intrare/ieşire<br />
a) Cererea este continuă, are rata r=const. şi poate fi satisfăc ută dacă nivelul<br />
curent al stocului I(t) > 0.<br />
b) Intrările se realizează la intervale de timp T, constante sau nu. Între<br />
lansarea comenzii şi sosirea ei (nu) există un interval L de timp, timpul<br />
de avans.<br />
c) Momentul lansării unei noi comenzi este semnalat<br />
de nivelul critic P0,<br />
nivel de reaprovizionare.<br />
d) În perioada T intră o cantitate a cu rata constantă p – ritmul de<br />
reaprovizionare.<br />
e) Parametrii P0, a, T sunt constanţi (modele statice).<br />
f) Procesul de reaprovizionare continuă nedefinit.<br />
2. Ipoteze privind costurile, pe baza cărora se poate defini eficienţa<br />
a) Costul s de lansare a comenzii este constant.<br />
b) Preţul ca de cumpărare a unei unităţi de materie primă sau produs poate<br />
depinde de a.<br />
c) Pentru I(t) > 0, există un cost de stocare, h, pentru unitatea de produs /<br />
unitatea de timp.<br />
d) Pentru I(t) < 0, există un cost al lipsei de stoc, d, pentru unitatea de<br />
produs / unitatea de timp.<br />
Problemele generale care se pun şi trebuie rezolvate de modelele de stocuri<br />
sunt:<br />
• determinarea valorilor optime pentru a şi T astfel încât costul total unitar pe<br />
unitatea de timp să fie optim,<br />
• determinarea nivelului de reaprovizionare P0 astfel încât costul total unitar pe<br />
unitatea de timp să fie optim,<br />
• nivelul maxim al stocului,<br />
• nivelul mediu al stocului,<br />
•<br />
numărul optim de cereri de reaprovizionare a stocului într-un an.
9. Elemente de teoria stocurilor 199<br />
9.2. Modelul clasic al lotului economic<br />
Parametrii cunoscuţi:<br />
− intrările au loc în mod continuu cu rata p – constantă,<br />
− ieşirile au loc în mod continuu cu rata<br />
r – constantă; p > r,<br />
− costul de stocare h este constant pe<br />
unitatea de stoc / unitatea de timp,<br />
− costul de lansare a comenzii a este s = constant,<br />
− L = 0.<br />
Parametrii necunoscuţi:<br />
− cantitatea<br />
comandată a (mărimea lotului de reaprovizionare),<br />
− mărimea ciclului de reaprovizionare T.<br />
Ipoteze:<br />
− nu se admite lipsa de stoc,<br />
− nu există stoc de rezervă sau stoc intangibil, I = 0.<br />
Construcţia modelului (determinarea<br />
funcţiei obiectiv)<br />
Figura 9.2 ilustrează<br />
comportarea stocului pe durata unui ciclu de reaprovizionare.<br />
a<br />
Din ipotezele modelului rezultă că funcţia I(t) este periodică cu perioada T = .<br />
r<br />
⎛ a ⎞<br />
Este suficient să rezolvăm problema de optim pe intervalul ⎜0<br />
, ⎟ .<br />
⎝ r ⎠<br />
a<br />
Întreaga cantit ate a va intra în stoc până la momentul , şi în intervalul<br />
p<br />
⎟ ⎛ a ⎞<br />
⎜<br />
⎜0<br />
, ,<br />
⎝ p ⎠<br />
I(t) va creşte, iar în intervalul ⎟ ⎛ a a ⎞<br />
⎜ , , I(t) descreşte.<br />
⎝ p r ⎠<br />
Astfel,<br />
I(t)<br />
0<br />
a<br />
I(t) = (p − r) t<br />
Figura 9.2<br />
a<br />
p<br />
0<br />
I(t) = a − rt<br />
a<br />
T =<br />
r<br />
t
200<br />
⎧<br />
⎪(<br />
p − r)<br />
t ,<br />
⎪<br />
I(<br />
t)<br />
= ⎨<br />
⎪ a − rt ,<br />
⎪<br />
⎩<br />
⎛ a ⎞<br />
t ∈ ⎜<br />
⎜0,<br />
⎟<br />
⎝ p ⎠<br />
⎛ a a ⎞<br />
t ∈ ⎜ , ⎟<br />
⎝ p r ⎠<br />
Modele şi algoritmi de optimizare<br />
Costul total pe perioada T este C T = C h,T + s, unde C h,T este costul de stocare,<br />
dat de<br />
a<br />
r<br />
2<br />
2<br />
2<br />
⎡(<br />
p − r)<br />
a 2⎛<br />
1 1 ⎞ ra ⎛ 1 1 ⎞⎤<br />
ha ( p − r)<br />
Ch,<br />
T = h∫<br />
I ( t)<br />
dt = h⎢<br />
⋅ + a ⎜ − ⎟ − ⎜ − ⎟ =<br />
2<br />
2 p r p<br />
⎟<br />
2<br />
⎜ 2 2<br />
r p<br />
⎟⎥<br />
.<br />
2 pr<br />
0 ⎣ ⎝ ⎠ ⎝ ⎠⎦<br />
Costul total de stocare şi de lansare pe unitatea de timp este<br />
Ch,<br />
C(<br />
a)<br />
=<br />
T<br />
T<br />
2 ⎡ha ( p − r)<br />
⎤<br />
= ⎢ + s⎥<br />
⋅<br />
⎣ 2 pr ⎦<br />
r<br />
a<br />
ha(<br />
p − r)<br />
= +<br />
2 p<br />
Figura 9.3 reprezintă costul total, costul de păstrare şi costul de lansare, abscisa<br />
punctului de intersecţie a ultimelor două constituind mărimea optimă a comenzii (Q<br />
reprezintă cantitatea necesară pe un întreg an).<br />
CT( Q, a,<br />
s,<br />
h)<br />
CL( Q, a,<br />
s)<br />
Ch( Q, a,<br />
h)<br />
Rezolvarea modelului<br />
Figura 9.3<br />
rs<br />
a<br />
Costurile total, totale, de de lansare, de de pastrare păstrare<br />
a<br />
mărimea marimea comenzii<br />
.
9. Elemente de teoria stocurilor 201<br />
Costul<br />
minim îl obţinem din relaţia C’(a) = 0 (deoarece C”(aopt)>0, rezultă că<br />
aopt determinat realizează minimul pentru C(a) ), de unde rezultă cantitatea optimă<br />
de reaprovizionare:<br />
h(<br />
p − r)<br />
rs<br />
2 prs<br />
− = 0 ⇒ a<br />
2<br />
opt = .<br />
2 p a<br />
h(<br />
p − r)<br />
Costul minim pe unitatea de timp este<br />
C opt<br />
2<br />
2<br />
2 2<br />
h ( p − r)<br />
2 prs r s h(<br />
p − r)<br />
2hrs(<br />
p − r)<br />
= ⋅ +<br />
=<br />
.<br />
2<br />
4 p h(<br />
p − r)<br />
2 prs<br />
p<br />
Astfel, avem costul unitar optim şi intervalul de reaprovizionare optim date de<br />
relaţiile<br />
2hrs(<br />
p − r)<br />
2 ps<br />
Copt =<br />
, Topt<br />
=<br />
.<br />
p<br />
rh(<br />
p − r)<br />
aopt<br />
Se pot determina: nivelul mediu al stocului ca fiind şi numărul optim de<br />
2<br />
numărul numarul zilelor lucratoare lucrătoare din an<br />
reaprovizionări pe an dat de<br />
.<br />
T<br />
r<br />
În practică se presupune că ≈ 0 ,<br />
p<br />
adică p >> r ( se consideră p = ∞),<br />
r<br />
ceea ce revine la a accepta că = 0<br />
p<br />
(Figura 9.4).<br />
Costul de stocare pe unitatea de timp<br />
este<br />
Ch , T ha<br />
=<br />
T 2<br />
şi reprezintă costul de stocare al unui<br />
a<br />
stoc mediu pe unitatea de timp.<br />
2<br />
Astfel, costul de stocare pe o perioadă de timp t0 este<br />
ha<br />
Ch , t = t<br />
0 0 .<br />
2<br />
În acest caz<br />
− mărimea optimă a comenzii de reaprovizionare a stocului este<br />
I<br />
aopt<br />
=<br />
2rs<br />
h<br />
− costul minim pe unitatea de timp<br />
este<br />
opt<br />
I(t)<br />
a<br />
0<br />
Figura 9.4<br />
T 2T t<br />
(9.1)
202<br />
− ciclul optim de reaprovizionare este<br />
Modele şi algoritmi de optimizare<br />
I<br />
C = 2rsh<br />
(9.2)<br />
opt<br />
I<br />
Topt =<br />
2s<br />
hr<br />
(9.3)<br />
În anumite situaţii cererea este exprimată prin valoarea în bani. Se disting două<br />
cazuri<br />
(Turban şi Meredith, 1988):<br />
1. Se dă preţul unitar al produsului. În acest caz se află numărul de produse şi astfel<br />
se ajunge la situaţia<br />
studiată mai înainte.<br />
2. Preţul unitar nu se cunoaşte şi atunci trebuie să se dea costul de stocare ca un<br />
procent din valoarea cererii de produse. În acest caz modelul dă valoare optimă a<br />
unei<br />
cereri de reaprovizionare. Costul total anual<br />
a Q<br />
C T = h + s<br />
(9.4)<br />
2 a<br />
Q<br />
unde Q este cantitatea (sau valoarea acesteia) necesară pe un an, iar<br />
a<br />
reprezintă numărul de comenzi de reaprovizionare lansate într-un an. Atunci<br />
a opt<br />
2sQ<br />
= . (9.5)<br />
h<br />
Exemplu. O întreprindere de prefabricate primeşte o comandă de 120 000 de dale<br />
pe care trebuie să le livreze municipalităţii, pentru pavarea trotuarelor. Cererea<br />
firmei de construcţii care realizează pavarea este constantă. Costurile sunt:<br />
• h = 500 lei o dală /zi – stocarea,<br />
• s = 30 000 000 lei – lansarea unei comenzi pentru un lot de dale.<br />
În ce ritm trebuie întreprinderea de prefabricate să-şi aprovizioneze stocul dacă nu i<br />
se admite nici o întârziere în livrare ? Se consideră anul cu 300 zile lucrătoare.<br />
Rezolvare<br />
Se<br />
consideră modelul de stocare al lotului economic şi, utilizând formulele<br />
(9.1)−(9.3), se obţin rezultatele de mai jos:<br />
120000<br />
r = = 400 – rata ieşirilor zilnice,<br />
300<br />
I<br />
aopt 2rs<br />
400 ⋅ 30000000<br />
= = 2 ⋅ = 6928.<br />
20 ,<br />
h<br />
500<br />
I<br />
Topt =<br />
2s<br />
=<br />
hr<br />
2 ⋅ 30000000<br />
=<br />
500 ⋅ 400<br />
17.<br />
32 zile<br />
I<br />
C = 2rsh<br />
= 2 ⋅ 400 ⋅ 30000000 ⋅ 500 = 3464101.61 lei/zi.<br />
opt<br />
Costul total anual este 1 039 230 484.51 lei, iar costul de lansare a comenzilor<br />
de reaprovizionare pe un an este 5196×10 8 .<br />
,
9. Elemente de teoria stocurilor 203<br />
Se poate rezolva problema din exemplul precedent cu Management Scientist.<br />
După lansarea pachetului de programe, se selectează modulul Inventory, apoi, din<br />
meniul<br />
File se alege New şi din fereastra care apare se selectează modelul<br />
Economic Order Quantity, ca în Figura 9.5.<br />
Figura 9.5<br />
Se introduc datele de intrare ca în Figura 9.6, având în vedere că trebuie<br />
introdus costul anual de stocare<br />
(500 lei/zi × 300 zile). Se presupune că sunt<br />
necesare 3 zile pentru a se satisface o cerere de reaprovizionare (L=3). Atunci<br />
trebuie să se determine şi nivelul<br />
optim de reaprovizionare.<br />
Figura 9.6<br />
Rezultatele obţinute sunt prezentate în Tabelul 9.1.<br />
Tabelul 9.1<br />
INVENTORY MO<strong>DE</strong>L
204<br />
***************<br />
ECONOMIC OR<strong>DE</strong>R QUANTITY<br />
***********************<br />
YOU HAVE INPUT THE FOLLOWING DATA:<br />
**********************************<br />
Modele şi algoritmi de optimizare<br />
ANNUAL <strong>DE</strong>MAND = 120000 UNITS PER YEAR<br />
OR<strong>DE</strong>RING COST = $30000000 PER OR<strong>DE</strong>R<br />
INVENTORY HOLDING COST = $150000 PER UNIT PER YEAR<br />
WORKING DAYS PER YEAR = 300 DAYS<br />
LEAD TIME FOR A NEW OR<strong>DE</strong>R = 3 DAYS<br />
INVENTORY POLICY<br />
****************<br />
OPTIMAL OR<strong>DE</strong>R QUANTITY 6,928.20<br />
ANNUAL INVENTORY HOLDING COST $519,615,242.27<br />
ANNUAL OR<strong>DE</strong>RING COST $519,615,242.27<br />
TOTAL ANNUAL COST $1,039,230,484.54<br />
MAXIMUM INVENTORY LEVEL 6,928.20<br />
AVERAGE<br />
INVENTORY LEVEL 3,464.10<br />
REOR<strong>DE</strong>R POINT 1,200.00<br />
NUMBER OF OR<strong>DE</strong>RS PER YEAR 17.32<br />
CYCLE TIME (DAYS) 17.32<br />
Rotunjirea rezultatelor<br />
Rezultatul obţinut în urma rezolvării unui model de stocare<br />
poate să nu fie un<br />
număr întreg, ca în exemplul de mai sus (mărimea optimă<br />
a comenzii de<br />
reaprovizionare, numărul de zile ale ciclului optim de reaprovizionare). Atunci, se<br />
evaluează funcţia obiectiv pentru [aopt] şi pentru [aopt]+1 şi se reţine valoarea<br />
care dă „cea mai bună” valoare pentru costul total ( [x]=partea întreagă a lui x).<br />
9.3. Modelul clasic al lipsei de stoc<br />
Aşa cum arată şi numele, în acest model se acceptă lipsa de stoc, adică se<br />
păstrează cererile care nu au putut fi satisfăcute după epuizarea stocului, iar după<br />
reaprovizionare, acestea<br />
vor fi satisfăcute (Văduva et al, II, 1974). Există şi cazuri<br />
în care cererea nesatisfăcută,<br />
pe perioada epuizării stocului, se pierde. În continuare<br />
se consideră numai primul caz.<br />
Parametrii cunoscuţi:<br />
− intrările au loc în mod continuu cu rata p – constantă,<br />
− ieşirile au loc în mod continuu cu rata r – constantă, p > r,<br />
− costul de stocare h, pe unitatea de stoc / unitatea de timp, este constant,<br />
− d – costul (deficitul) datorat lipsei unei unităţi de stoc pe unitatea de timp este<br />
constant,
9. Elemente de teoria stocurilor 205<br />
− costul de lansare a comenzii a este s.<br />
Parametrii necunoscuţi:<br />
− cantitatea comandată a,<br />
− S – nivelul maxim la care trebuie adus stocul la intrarea în stoc a comenzii,<br />
− mărimea lotului de aprovizionare T.<br />
Ipoteze:<br />
− se admite lipsa de stoc şi cererea pe perioada lipsei de stoc se păstrează şi se<br />
reportează pe perioada ciclului de reaprovizionare următor,<br />
r<br />
− = 0 .<br />
p<br />
Formularea problemei<br />
Să se determine cantitatea<br />
a care trebuie introdusă în<br />
stoc după<br />
timpul T (care<br />
I(t)<br />
trebuie de asemenea<br />
determinat), presupunând<br />
că<br />
după ce se epuizează<br />
stocul S în intervalul de<br />
timp (0, t’ ), poate să mai<br />
treacă un interval de timp<br />
( t’, T ) până când intră<br />
cantitatea a în stoc.<br />
S<br />
a<br />
t’<br />
t”<br />
T<br />
Figura 9.7<br />
comportarea<br />
arată<br />
acestui<br />
0 t<br />
model de stocare. După ce<br />
se recuperează lipsa de<br />
Figura 9.7<br />
stoc, stocul a ajuns la nivelul S. Parametrii necunoscuţi ai modelului trebuie<br />
determinaţi<br />
astfel încât costul total, provenit din costul de depozitare, costul de<br />
lansare şi costul lipsei de stoc, să fie minim.<br />
Construcţia modelului<br />
Considerând modelul anterior, se stabileşte funcţia de minimizat astfel :<br />
- costul de depozitare a cantităţii S pe intervalul de timp (0, t’ ) este<br />
S<br />
Ch, t ' = h ⋅ ⋅ t'<br />
2<br />
- costul lipsei de stoc este<br />
a − S<br />
Cd , t"<br />
= d ⋅ ⋅ t"<br />
.<br />
2<br />
Astfel, costul unitar total este
206<br />
Modele şi algoritmi de optimizare<br />
1 ⎛ S a − S ⎞<br />
C = ⎜ s + h ⋅ ⋅ t'+<br />
d ⋅ ⋅ t"<br />
⎟ .<br />
T ⎝ 2 2 ⎠<br />
Se exprimă membrul drept al relaţiei precedente în funcţie de S, T ţinând seama că<br />
a S S Tr − S<br />
T = , t'<br />
= , t"<br />
= T − = ,<br />
r r r r<br />
astfel că<br />
2<br />
2<br />
s hS d(<br />
rT − S)<br />
C(<br />
S,<br />
T ) = + +<br />
.<br />
T 2rT<br />
2rT<br />
Se determină min C(S,T):<br />
⎧∂<br />
⎧hS<br />
d(<br />
rT − S)<br />
⎪ − =<br />
⎪ = 0<br />
0<br />
∂ rT rT<br />
⎨ ⇒ ⎨<br />
2<br />
2<br />
∂C<br />
1 ⎛ hS ⎞ d 2r(<br />
rT − S)<br />
T − ( rT − S<br />
⎪ = 0 ⎪−<br />
+ ⋅<br />
=<br />
⎪<br />
⎜ s + ⎟<br />
0<br />
2<br />
2<br />
⎩∂T<br />
⎩ T ⎝ 2r<br />
⎠ 2r<br />
T<br />
S<br />
C<br />
)<br />
⇒<br />
Deoarece<br />
2s<br />
h + d II 2rs<br />
d<br />
II<br />
d<br />
, S opt =<br />
, C = 2rsh<br />
rh d<br />
h h + d<br />
h + d<br />
II<br />
Topt =<br />
opt<br />
2<br />
⎛ 2 2<br />
2 ⎞<br />
⎜ ∂ C ∂ C ⎛ ∂ C ⎞<br />
⋅ − ⎟ ⎟ > 0<br />
⎜ 2 2<br />
∂ ∂<br />
⎜<br />
S T<br />
⎟ ⎟<br />
⎝<br />
⎝ ∂S∂T<br />
⎠ ⎠ II II ( S )<br />
opt , Topt<br />
şi<br />
2 ⎛ ∂ C ⎞<br />
⎜<br />
⎟ > 0<br />
2 ⎟<br />
⎝ ∂ S ⎠ II II ( S , T )<br />
valorile<br />
obţinute realizează minimul costului.<br />
d<br />
Se notează cu ρ = < 1 şi relaţiile de mai sus devin<br />
h + d<br />
II<br />
Topt =<br />
2s ,<br />
rhρ<br />
II<br />
S opt =<br />
2rsρ<br />
,<br />
h<br />
II<br />
Copt<br />
= 2rshρ<br />
de unde rezultă că<br />
II<br />
C<br />
I<br />
= C ρ .<br />
opt<br />
Această relaţie arată că este mai convenabilă politica<br />
de aprovizionare care<br />
admite<br />
lipsa de stoc !<br />
Mărimea optimă a lotului de reaprovizionare este<br />
2rs<br />
h + d<br />
a Tr<br />
h d<br />
II<br />
= =<br />
opt<br />
iar lipsa de stoc este<br />
II II II h<br />
aopt<br />
− S opt = aopt<br />
.<br />
h + d<br />
Ultima relaţie arată că numărul articolelor din perioada lipsei de stoc creşte pentru<br />
articolele cu cost unitar de stocare mare. Aceasta explică de ce articolele care au un<br />
preţ de stocare unitar mai mare sunt tratate mai economic într-un model cu lipsă de<br />
stoc. Pe de altă parte, când costul unitar al lipsei de stoc creşte, numărul articolelor<br />
din perioada<br />
lipsei de stoc scade. Astfel, modelul arată intuitiv că articolele cu cost<br />
mare pentru lipsă de stoc vor fi foarte puţine pe perioada lipsei de stoc.<br />
opt<br />
opt<br />
opt<br />
.
9. Elemente de teoria stocurilor 207<br />
Deoarece<br />
II<br />
S<br />
= ρ ⋅ r ⇒ ρ =<br />
r ⋅T<br />
II<br />
S<br />
=<br />
a<br />
II<br />
S opt<br />
opt opt<br />
T<br />
II<br />
opt<br />
ρ se numeşte şi indice de lipsă de stoc. În (1–ρ)% din cazuri, pe perioada T,<br />
stocul se epuizează.<br />
Probabilitatea epuizării stocului este<br />
h 1 − α<br />
α = 1 − ρ = ⇒ d = h .<br />
d + h α<br />
Această relaţie arată că, dacă se acceptă drept cunoscută probabilitatea epuizării<br />
stocului, atunci costul lipsei de stoc este proporţional cu cel al stocării. Acest<br />
fapt nu concordă totdeauna cu realitatea, şi de aici rezultă un inconvenient al<br />
modelului, deoarece costurile h şi d sunt practic independente.<br />
Comparând cele două modele se obţine<br />
I<br />
II I<br />
II I 1 T II opt<br />
S opt = S opt ρ , aopt<br />
= aopt<br />
, Topt<br />
= ,<br />
ρ ρ<br />
adică<br />
II<br />
opt<br />
I<br />
opt<br />
II<br />
opt<br />
Exemplu. În exemplul din §9.2. se consideră<br />
că lipsa dalelor din stoc va fi<br />
penalizată cu 3500 lei/dală/zi (d = 3500) . Să se determine elementele optime ale<br />
modelului de stocare în acest caz.<br />
I<br />
opt<br />
II<br />
opt<br />
S < S , a > a , T > T<br />
Rezolvare<br />
3500<br />
ρ = = 0.<br />
875;<br />
500 + 3500<br />
II 10141.<br />
85<br />
ρ = 0.<br />
93541;<br />
a opt = ≈ 7407 ;<br />
0.<br />
93541<br />
II<br />
S opt<br />
II<br />
II<br />
= aopt<br />
ρ ≈ 6481;<br />
T opt<br />
I<br />
Topt<br />
II<br />
= ≈18.<br />
51 ; opt<br />
ρ<br />
I<br />
= opt ρ ≈ 3 240 370.34 .<br />
C C<br />
Modelul se poate rezolva şi utilizând Management Scientist. După lansarea<br />
pachetului de programe se alege modulul Inventory. Din meniul File se selectează<br />
New<br />
şi din fereastra arătată în Figura 9.5 se alege modelul Economic Order<br />
Quantity with Planned Shortages.<br />
În fereastra<br />
care apare după apăsarea butonului OK, se introduc datele de<br />
intrare ca în Figura 9.8, unde costul de stocare şi cel de lipsă de stoc sunt<br />
considerate pe întregul an (d× numărul de zile lucrătoare<br />
din an , respectiv, h×<br />
numărul de zile lucrătoare din an). Se consideră că sunt necesare 3 zile pentru<br />
satisfacerea comenzii de reaprovizionare din momentul lansării acesteia.<br />
II<br />
opt<br />
I<br />
opt<br />
.
208<br />
Figura 9.8<br />
Modele şi algoritmi de optimizare<br />
Apăsând butonul Solve se obţine soluţia modelului sub forma dată în Tabelul 9.2.<br />
Tabelul 9.2<br />
INVENTORY MO<strong>DE</strong>L<br />
***************<br />
ECONOMIC OR<strong>DE</strong>R QUANTITY WITH PLANNED SHORTAGES<br />
**********************************************<br />
YOU HAVE INPUT THE FOLLOWING DATA:<br />
**********************************<br />
ANNUAL <strong>DE</strong>MAND = 120000 UNITS PER YEAR<br />
OR<strong>DE</strong>RING COST = $30000000 PER OR<strong>DE</strong>R<br />
INVENTORY HOLDING COST = $150000 PER UNIT PER YEAR<br />
BACKOR<strong>DE</strong>R COST = $1050000 PER UNIT PER YEAR<br />
WORKING DAYS PER YEAR = 300 DAYS<br />
LEAD TIME FOR A NEW OR<strong>DE</strong>R = 3 DAYS<br />
INVENTORY POLICY<br />
****************<br />
OPTIMAL OR<strong>DE</strong>R QUANTITY 7,406.56<br />
ANNUAL INVENTORY HOLDING COST $425,298,608.33<br />
ANNUAL OR<strong>DE</strong>RING COST $486,055,552.38<br />
ANNUAL BACKOR<strong>DE</strong>R COST<br />
$60,756,944.05<br />
TOTAL ANNUAL COST $972,111,104.76<br />
MAXIMUM INVENTORY LEVEL 6,480.74<br />
AVERAGE INVENTORY LEVEL 2,835.32<br />
MAXIMUM BACKOR<strong>DE</strong>RS 925.82<br />
REOR<strong>DE</strong>R POINT 274.18<br />
NUMBER OF OR<strong>DE</strong>RS PER YEAR 16.20<br />
CYCLE TIME (DAYS) 18.52<br />
În continuare sunt prezentate<br />
alte două variante ale modelului clasic.
9. Elemente de teoria stocurilor 209<br />
9.3.1. Modelul de stocare considerând<br />
influenţa preţului<br />
de cumpărare<br />
Acest<br />
model se referă la problemele de stoc-aprovizionare şi presupune că<br />
preţurile de achiziţie a materiilor prime şi materialelor depind de mărimea<br />
comenzii, adică ca = ca(a) (Văduva et al, II, 1974). În modelul lotului economic se<br />
consideră<br />
a r<br />
C( a)<br />
= h + s + r ⋅ ca<br />
( a)<br />
,<br />
2 a<br />
unde primul termen este costul stocării unei cantităţi medii pe unitatea de timp, al<br />
doilea este costul lansării, iar cel de-al treilea termen este costul de cumpărare a<br />
materiilor prime consumate din stoc. Se poate considera costul de stocare ca fiind o<br />
fracţiune din costul de cumpărare, h = k⋅c a(a),<br />
şi atunci:<br />
1 r<br />
C( a)<br />
= kca<br />
( a)<br />
+ s + r ⋅ ca<br />
( a)<br />
.<br />
2 a<br />
De obicei, în practică, ca(a) este o funcţie în scară descrescătoare.<br />
k r<br />
Ci ( a)<br />
= ca,<br />
a + s + rca<br />
, pentru li<br />
a ui<br />
, ( li<br />
ui<br />
) , i 1,<br />
2,...,<br />
m<br />
i<br />
,<br />
≤ ≤ =<br />
i<br />
− 1 = .<br />
2 a<br />
Se determină minimul local al acestei funcţii, obţinut pentru:<br />
⎧l i , dacã<br />
ai<br />
≤ li<br />
* ⎪<br />
2rs<br />
ai<br />
= ⎨ai<br />
, dacã<br />
li<br />
< ai<br />
< ui<br />
, iar ai<br />
=<br />
⎪<br />
kca,<br />
i<br />
⎩ui<br />
, dacã<br />
ui<br />
≤ ai<br />
.<br />
Atunci, costul minim local este<br />
*<br />
⎧C(<br />
ca,<br />
) , dacã<br />
ai<br />
= l<br />
i<br />
i<br />
⎪<br />
*<br />
Ci<br />
opt = ⎨ 2rsk<br />
+ ca,<br />
r , dacã<br />
ai<br />
= a<br />
i<br />
i<br />
⎪<br />
*<br />
⎩<br />
C(<br />
ui<br />
) , dacã<br />
ai<br />
= ui<br />
.<br />
Costul<br />
minim total va fi<br />
C<br />
opt<br />
= min C , iar<br />
1≤i≤<br />
m<br />
i opt<br />
T<br />
opt<br />
*<br />
ai<br />
= .<br />
r<br />
9.3.2. Modelul de stocare considerând influenţa costului<br />
de producţie<br />
Acest model se referă la problemele de stoc−producţie şi consideră costul de<br />
stocare h ca funcţie<br />
de costul de producţie unitar cp (Văduva et al, II, 1974)<br />
h = k ⋅ cp,
210<br />
Modele şi algoritmi de optimizare<br />
iar cp depinde de cantitatea produsă a. Notând cu cf costul unitar de fabricaţie,<br />
atunci costul de fabricaţie pentru întreaga cantitate este<br />
s<br />
⎛ s ⎞<br />
s + cf⋅a şi astfel c p = + c f , deci ⎜ ⎟ , 0 < < 1<br />
a<br />
⎝ ⎠<br />
+ = k c h k f .<br />
a<br />
Se presupune că nu se admite lipsa de stoc. Atunci costul total de lansare şi<br />
stocare pe unitatea de timp este<br />
sr ⎛ s ⎞ a<br />
C( a)<br />
= + k⎜<br />
+ c f ⎟ ⋅ .<br />
a ⎝ a ⎠ 2<br />
Din condiţia de minim, C’(a) = 0, rezultă<br />
2rs<br />
ks 2s<br />
a = , C = 2kc<br />
f rs + , T = .<br />
kc<br />
2 kc r<br />
f<br />
Comentariu. Mărimea lotului de reaprovizionare a depinde de costul unitar total<br />
de producţie cf; dacă cf este mare, mărimea lotului se micşorează, adică nu este<br />
indicat să se menţină stocuri mari din produse scumpe.<br />
Se mai pot considera: modele cu costul stocării variabil, descris de o funcţie în<br />
salturi, modele cu cererea depinzând de preţurile de vânzare etc. (Văduva et al, II,<br />
1974) .<br />
9.4. Extensii ale modelului clasic al lotului economic<br />
Vânzătorii oferă deseori reduceri de preţ pentru cumpărarea unui lot mai mare<br />
de produse. Există preţuri pentru intervale ale numărului de produse cumpărate.<br />
Această practică este larg răspândită pentru că oferă avantaje atât cumpărătorului<br />
cât şi vânzătorului, avantaje prezentate în Tabelul 9.3 .<br />
Tabelul 9.3<br />
Avantaje Dezavantaje<br />
-preţuri reduse<br />
-stocuri m ari<br />
-mai puţine hârtii de completat<br />
-cheltuieli<br />
sporite de stocare<br />
-transport<br />
mai ieftin<br />
-riscul<br />
deteriorării<br />
Cumpărător -mai puţine momente cu lipsă de stoc<br />
-produse uniforme<br />
-securitate sporită (ar putea să crească<br />
preţurile)<br />
-învechirea produselor<br />
-transport mai ieftin<br />
-preţ unitar scăzut<br />
Vânzător -mai puţine hârtii de completat<br />
-putere scăzută de<br />
-producţie mai mare<br />
tranzacţio nare cu clienţii<br />
Se disting două cazuri :<br />
f
9. Elemente de teoria stocurilor 211<br />
i) Reduceri oferite pentru un singur nivel de preţ<br />
ii) Reduceri<br />
oferite pentru mai multe niveluri de preţuri.<br />
Reduceri oferite pentru un singur nivel de preţ<br />
Vom prezenta metoda pe un exemplu.<br />
Pentru iluminatul stradal al unui oraş sunt necesare 100 de becuri pe lună<br />
pentru înlocuirirea celor care se defectează.<br />
Fiecare bec costă 8 u.m. Costul de<br />
lansare a unei comenzi de reaprovizionare este de 27 u.m. indiferent de mărimea<br />
comenzii, iar cel de păstrare al unui bec pe un an de zile este de 25% din valoare.<br />
Onorarea comenzii se face în momentul lansării acesteia şi nu se acceptă lipsa de<br />
stoc. Furnizorul oferă municipalităţii<br />
o reducere de 2%, dacă se cumpără 600 de<br />
becuri deodată. Să se satabilească dacă municipalitatea acceptă sau nu oferta<br />
furnizorului.<br />
Rezolvare<br />
i) Vom folosi modelul<br />
lotului economic fără lipsă de stoc şi nu vom lua în seamă<br />
reducerea furnizorului. Pentru acest caz avem : Q=100×12=1200 becuri pe an,<br />
h=0.25×8=2 u.m. , s=27 u.m. , p=8 u.m. (p= preţul de achiziţie al unui bec).<br />
Folosind formulele (9.4)-(9.5) obţinem valoarea optimă pentru comanda de<br />
reaprovizionare<br />
aopt =<br />
2Qs<br />
=<br />
h<br />
2 ⋅ 27 ⋅1200<br />
= 180 ,<br />
2<br />
costul total anual de stocare<br />
CT<br />
=<br />
Q aopt<br />
27 ⋅1200<br />
180 ⋅ 2<br />
s + h = + = 180 ,<br />
2 180 2<br />
a opt<br />
iar costul becurilor este Q×p=1200×8=9600.<br />
Aşadar, fără reducere, municipalitatea ar cheltui 9600+360=9960 u.m.<br />
ii) Vom reface calculele ţinând seama de reducerea oferită de furnizor pentru un lot<br />
de 600 becuri. În acest caz vor fi doar două lansări de comenzi de reaprovizionare<br />
şi atunci costul de lansare total ar fi de 54 u.m. Costul unitar anual de păstrare<br />
devine h’=0.98×0.25×8= 1.96 u.m., iar costul total anual de păstrare este<br />
600 ⋅1.<br />
96<br />
= 588.<br />
Costul de achiziţie devine 9600 − 9600 ⋅ 0.<br />
02 = = 9408 . În acest<br />
2<br />
caz municipalitatea ar plăti 9408+588+54=1050 u.m. În concluzie, oferta de<br />
reducere trebuie respinsă pentru că, dacă ar fi acceptată, municipalitatea ar fi în<br />
dezavantaj !
212<br />
Modele şi algoritmi de optimizare<br />
Reduceri oferite pentru mai multe niveluri de preţuri<br />
Înainte de a da metoda generală vom considera un exemplu.<br />
Un spital trebuie să achiziţioneze antibiotice de la un furnizor care face oferta<br />
din Tabelul 9.4 .<br />
Tabelul 9.4<br />
Cantitate Preţ<br />
1 – 4999 2.75<br />
5000 – 9999 2.60<br />
>10000 2.50<br />
Cererea spitalului este de 50 000 unităţi pe an. Costul lansării unei comenzi de<br />
reaprovizionare este de 50 u.m. şi costul de păstrare este 20% din costul<br />
medicamentului pe an. Nu se admite lipsă de stoc şi se presupune că onorarea<br />
comenzii se face imediat ce a fost lansată. Să se stabilească politica optimă a<br />
spitalului de achiziţionare a medicamentelor.<br />
Vom utiliza modelul lotului economic fără lipsă de stoc şi vom rezolva<br />
problema în următorii paşi.<br />
Pas 1. Cu modelul lotului economic fără lipsă de stoc, stabilim pentru cel mai mic<br />
preţ mărimea optimă a comenzii de reaprovizionare. Costul unitar anual de păstrare<br />
este h1=2.5×0.02=0.5 u.m.<br />
( 1)<br />
aopt =<br />
2Qs<br />
=<br />
h<br />
2 ⋅ 50 ⋅ 50000<br />
=<br />
0.<br />
5<br />
10000000 = 3163<br />
( 1)<br />
( 1)<br />
Pas 2. Se compară a cu intervalul corespunzător preţului 2.50. Dacă a ar fi<br />
opt<br />
în interval, soluţia este fezabilă şi optimă în acelaşi timp şi problema este<br />
rezolvată. Altfel, soluţia nu este fezabilă şi se caută mărimea optimă a comenzii de<br />
reaprovizionare pentru preţul 2.60 u.m.<br />
Pas 3. În acest caz costul de păstrare este h2=2.6×0.02=0.52 u.m. Atunci,<br />
( 2)<br />
aopt =<br />
2Qs<br />
=<br />
h<br />
2 ⋅ 50 ⋅ 50000<br />
=<br />
0.<br />
52<br />
9615385 = 3101.<br />
( 2`)<br />
Se compară a cu intervalul corespunzător preţului 2.60.<br />
opt<br />
( 2)<br />
Pas 4. Dacă a ar fi în interval, soluţia este fezabilă şi optimă în acelaşi timp şi<br />
opt<br />
problema este rezolvată. Altfel, soluţia nu este fezabilă şi se caută mărimea optimă<br />
a comenzii de reaprovizionare pentru preţul 2.75 u.m.<br />
Pas<br />
5. Costul de păstrare este h3=2.75×0.02=0.55 u.m. Atunci,<br />
( 3)<br />
aopt =<br />
2Qs<br />
=<br />
h<br />
2 ⋅ 50 ⋅ 50000<br />
=<br />
0.<br />
55<br />
9090910 = 3015 .<br />
opt
9. Elemente de teoria stocurilor 213<br />
( 3)<br />
Pas 6. a este în intervalul corespunzător preţului 2.75 şi soluţia găsită este<br />
opt<br />
fezabilă.<br />
Pas 7. {Compararea costurilor} Costul total anual este<br />
Q a<br />
CT ( a)<br />
= s + h + Q ⋅ p .<br />
a 2<br />
Aplicăm formula pentru cele trei valori ale marginii din stânga intervalului<br />
pentru categoriile de preţ şi avem :<br />
( 1)<br />
T<br />
( 2)<br />
T<br />
C ( 10 000)<br />
= 127 750 , C ( 5000)<br />
= 131800<br />
, C ( 5000)<br />
= 139158<br />
.<br />
Deoarece o cerere de 10 000 de unităţi o dată conduce la cel mai mic preţ, se va<br />
adopta această politică.<br />
Bazat pe acest exemplu putem scrie următorul algoritm general.<br />
Algoritm general<br />
Pas 1. {Iniţializări}<br />
Intrare: necesarul anual Q, costul de lansare s, costul unitar de stocare h,<br />
intervalele pentru care se acordă reduceri q = ( qk<br />
, 1 , qk<br />
, 2 ) , n numărul<br />
1≤k<br />
≤n<br />
acestor intervale, preţurile unitare reduse ( pu) 1 ≤k<br />
≤n<br />
.<br />
Pas 2. k:=n;<br />
Determină cantitatea optimă aopt comandată cu modelul lotului economic pentru<br />
pun .<br />
Dacă aopt ≥qk,1 , determină Cn+1, costul total optim cu modelul lotului<br />
economic pentru aopt; sw:=0; an+1:=aopt ;<br />
Pas 3. Dacă sw≠0, atunci<br />
Cât timp (k≥0 şi sw≠4) execută<br />
Calculează ak:=aopt ;<br />
Dacă [ , 1 , 2 ] , k qk<br />
qk<br />
Dacă [ q , q ]<br />
( 3)<br />
T<br />
a ∉ atunci sw:=1; an+1:=qk,1 ; k:=k-1;<br />
ak k , 1 k , 2<br />
∈ atunci sw:=4; an+1:=aopt ; Cn+1, costul total<br />
optim cu modelul lotului economic pentru aopt ;<br />
Dacă sw=4, atunci<br />
Pentru k:=1,n<br />
Calculează Ck costul total optim cu modelul lotului economic<br />
Determină Cn<br />
1 Ck<br />
1 k n 1<br />
min : +<br />
≤ ≤ +<br />
= ; n a 1<br />
1<br />
m : + in ak<br />
≤k<br />
≤n+<br />
1<br />
Pas 4. Reţine an+1 şi Cn+1. Stop!<br />
= ;
214<br />
Modele şi algoritmi de optimizare<br />
În continuare este redat algoritmul de mai sus, programat în MathCAD şi<br />
aplicat exemplului precedent.<br />
Determinarea lotului optim de reaprovizionare si a costului<br />
optim pentru preturi unitare cu discount-uri<br />
Intervalele pentru care se acorda discount Preturile unitare de achizitionare<br />
⎛<br />
⎜<br />
⎜<br />
⎜<br />
⎝<br />
1<br />
q := 5000 9999<br />
pu :=<br />
10000<br />
4999<br />
10 6<br />
Necesarul anual Q := 50000<br />
⎞<br />
⎟<br />
⎠<br />
Costul de lansare a comenzii de reaprovizionare s := 50<br />
Costul unitar anual de stocare este o fractiune ρ<br />
din costul de achizitionare ρ := 0.2<br />
s<br />
Lotul optim de reaprovizionare aopt( h)<br />
:= 2⋅Q⋅ h<br />
i ← 1<br />
m←x k<br />
i ← k<br />
⎛<br />
⎜<br />
⎜<br />
⎝<br />
2.75<br />
2.60<br />
2.50<br />
Determinarea minimului elementelor unui sir si a pozitiei sale<br />
Mn() x :=<br />
m← x<br />
1<br />
for k ∈ 1.. last() x<br />
⎛<br />
⎜<br />
⎝<br />
if<br />
m<br />
i<br />
⎞<br />
⎠<br />
m> x<br />
k<br />
⎞<br />
⎠
9. Elemente de teoria stocurilor 215<br />
Discount( Q, s,<br />
pu , ρ)<br />
:= k ← last( pu)<br />
n ← k<br />
sw ← 1<br />
CT n+ 1<br />
an+ 1<br />
←<br />
←<br />
Q<br />
qk1 ,<br />
aopt pu k⋅ρ qk1 ,<br />
⋅s + pu k⋅ρ ⋅ + Qpu ⋅ k<br />
2<br />
( )<br />
sw ← 0 if an+ 1 ≥<br />
if<br />
sw ≠ 0<br />
while<br />
if<br />
⎛ an+<br />
1<br />
⎜<br />
⎝<br />
CT<br />
n+ 1<br />
( k ≥ 1)<br />
∧<br />
hk ←<br />
pu k⋅ρ qk1 ,<br />
ak ← aopt( hk) ( )<br />
if ¬ qk1 , ≤ ak ≤ qk2 ,<br />
if<br />
for<br />
ak ←<br />
qk1 ,<br />
k ← k − 1<br />
qk1 ,<br />
sw = 4<br />
CT n+ 1<br />
an+ 1<br />
≤ ak ≤ qk2 ,<br />
sw ← 4<br />
CT k ←<br />
Q ak ← ⋅s + hk⋅ + Qpu ⋅ k<br />
ak 2<br />
← ak k∈1.. n<br />
Q<br />
( sw ≠ 4)<br />
qk1 ,<br />
Ao ← Mn( CT)<br />
CT n+ 1<br />
i←Ao2 an+ 1<br />
⎞<br />
⎠<br />
← Ao1 ← ai Apelul subprogramului MathCAD se face cu secvenţa<br />
Discount( Q, s,<br />
pu , ρ)<br />
=<br />
qk1 ,<br />
⋅s + hk⋅ + Qpu ⋅ k<br />
2<br />
.
216<br />
Modele şi algoritmi de optimizare<br />
9.5. Model pentru stocarea mai multor tipuri de produse<br />
Se presupune că stocul este format din p tipuri de produse. Atât parametrii<br />
cunoscuţi<br />
cât şi cei necunoscuţi se referă la fiecare tip de produse aflate în stoc.<br />
Parametrii<br />
cunoscuţi:<br />
− rata cererii – ri,<br />
− costurile de stocare unitare – h i,<br />
− costurile de lansare – si, i = 1,<br />
p .<br />
Parametrii<br />
necunoscuţi:<br />
− mărimea optimă, ai, a lotului de reaprovizionare din produsul i ,<br />
− ciclul optim de reaprovizionare, Ti, a stocului cu produsul i , i = 1,<br />
p .<br />
Formularea problemei:<br />
Să se determine elementele necunoscute astfel încât costul de stocare şi lansare<br />
pe unitatea de timp pentru produsul i<br />
hia<br />
i si<br />
ri<br />
C i ( ai<br />
) = +<br />
2 ai<br />
să fie minim, şi deci şi costul total pe unitatea de timp<br />
să fie minim. Se obţin:<br />
a<br />
C(<br />
a ,..., a ) =<br />
1<br />
2r<br />
s<br />
,<br />
p<br />
p<br />
∑<br />
i=<br />
1<br />
C ( a )<br />
i i<br />
i<br />
i opt = i opt = .<br />
hi<br />
ri<br />
hi<br />
Comentariu. Determinarea loturilor economice pentru mai multe produse revine la<br />
determinarea lotului economic pentru fiecare produs în parte.<br />
T<br />
i<br />
i<br />
2s<br />
9.6. Modele stochastice de stocare<br />
Într-un model aleatoriu, pe lângă variabilele de decizie d1, ... , dn (de exemplu,<br />
mărimi de comenzi, cicluri de reaprovizionare) intervin şi variabile aleatoare A1,<br />
..., An, a căror repartiţie se presupun e cunoscută. Funcţia de eficienţă C(d1, ... , dn, A1, ... , An) va fi o variabilă aleatoare, iar<br />
valorile optime ale variabilelor de decizie vor fi determinate din condiţia ca<br />
eficienţa medie să fie optimă.<br />
Printre elementele aleatoare ale unui model de teoria stocurilor, cel mai<br />
important<br />
este cererea pe unitatea de timp. Repartiţia cererii în cazul cererii<br />
continue poate fi: normală, log-normală, Weibull etc., iar în cazul cererii discrete,
9. Elemente de teoria stocurilor 217<br />
poate fi: Poisson, Pascal, binomială etc. Dacă cererea<br />
este un proces aleatoriu,<br />
atunci modelul de stocare este un model stochastic dinamic.<br />
Timpul de avans, L, şi stocul intangibil (de siguranţă),<br />
= P0<br />
− R ,<br />
I S<br />
R fiind cererea medie pe perioada timpului de avans, pot fi variabile aleatoare<br />
continue sau discrete.<br />
Mărimea stocului de siguranţă<br />
şi, corespunzător, nivelul de reaprovizionare<br />
reduc şansa apariţiei lipsei de stoc, şi invers. Tabelul 9.5 dă efectul creşterii sau<br />
reducerii nivelului de reaprovizionare asupra costurilor.<br />
Tabelul 9.5<br />
Acţiune Rezultat<br />
Reducerea nivelului de Scade costul de stocare al stocului de siguranţă şi creşte<br />
reaprovizionare<br />
costul lipsei de stoc<br />
Reducerea lotului<br />
de<br />
reaprovizionare a<br />
Scade costul de stocare al stocului mediu ( ) şi cresc costul<br />
2<br />
lipsei de stoc şi costul total de lansare comenzi<br />
Creşterea nivelului de Creşte costul de stocare al stocului de siguranţă şi scade<br />
reaprovizionare<br />
costul lipsei de stoc<br />
Creşterea lotului de Creşte costul de stocare al stocului mediu şi descreşte costul<br />
reaprovizionare<br />
total de lansare comenzi<br />
9.6.1. Determinarea nivelului optim de reaprovizionare<br />
Pentru determinarea nivelului optim de reaprovizionare P0, aplicăm analiza<br />
marginală (Bonini et al, 1997), adică se începe analiza costului total cu o valoare<br />
iniţială pentru P0 , fie P 0 = R .<br />
Să vedem ce se întâmplă cu costul total dacă se adaugă o unitate de produs<br />
de<br />
stoc la P0. Costul total pe perioada analizată (de exemplu, un an) va creşte cu<br />
aproximativ h , deoarece I S creşte cu o unitate.<br />
Dacă nu se adaugă o unitate la P0 , creşterea<br />
costului va rezulta din faptul că o<br />
cerere cu o unitate mai mare pe perioada timpului de avans va mări probabilitatea<br />
lipsei de stoc, astfel (Figura 9.9):<br />
Creşterea<br />
costului prin neadăugarea unei unităţi la P0 este egală cu<br />
⎡Q<br />
⎤<br />
(Probabilitatea unei unităţi de stoc cerute în plus) d·<br />
⎢ ⎥<br />
⎣ a ⎦<br />
⎡Q<br />
⎤<br />
⎢ ⎥ fiind numărul de cicluri de reaprovizionare pe perioada analizată.<br />
⎣ a ⎦<br />
Se consideră următoarea ipoteză:<br />
Cererea r, pe unitatea de timp, este o variabilă aleatoare cu repartiţia<br />
cunoscută, F(x).
218<br />
Modele şi algoritmi de optimizare<br />
Atunci, cererea R, pe perioada timpului de avans L, este de asemenea<br />
o<br />
variabilă<br />
aleatoare cu funcţia de repartiţie cunoscută, F(x)=P(R
9. Elemente de teoria stocurilor 219<br />
1. Stocul de siguranţă este I S P R Zα<br />
σ R ⋅ = − = 0 .<br />
2. Pentru un α ∈(<br />
0,<br />
1)<br />
, un risc asumat de a avea lipsă de stoc pe perioada<br />
timpului de avans, se poate determina nivelul critic al stocului astfel :<br />
α = P(R≥ P0)=1−F(P0) ⇒ F(P0)=1−α ,<br />
relaţie ce permite determinarea nivelului critic al stocului P0.<br />
Determinarea costului total<br />
Costul total=Costul de lansare+Costul de stocare+Costul lipsei de stoc<br />
Q a<br />
⎡ ∞<br />
⎛ ⎞<br />
⎤ Q<br />
CT<br />
( a,<br />
P0<br />
) = s + ⎜ + P0<br />
− R⎟h + ⎢d<br />
( R − P ) f R dR⎥<br />
⋅<br />
a<br />
∫ 0 ( ) . (9.6)<br />
⎝ 2 ⎠ ⎢⎣<br />
⎥ a<br />
P0<br />
⎦<br />
Q<br />
unde: s reprezintă costul de lansare al tuturor comenzilor de reaprovizionare pe<br />
a<br />
perioada de timp analizată,<br />
Q<br />
numărul comenzilor de reaprovizionare pe perioada de timp analizată,<br />
a<br />
⎡<br />
⎤ Q<br />
⎢d<br />
( R − P ) f R dR⎥<br />
⋅<br />
⎢⎣<br />
a<br />
P<br />
⎥⎦<br />
∫<br />
∞<br />
0 ( ) costul lipsei de stoc pe perioada de timp<br />
analizată,<br />
0<br />
∞<br />
∫ R − P0<br />
f ( R)<br />
dR numărul mediu de unităţi de stoc lipsă din<br />
stoc pe un ciclu<br />
P0<br />
( )<br />
de reaprovizionare,<br />
f(x) densitatea de repartiţie a cererii.<br />
Se determină P0 opt şi aopt din condiţia impusă costului total dat de (9.6), să<br />
fie minim:<br />
⎪<br />
⎨<br />
⎪<br />
∂CT<br />
⎪⎩<br />
∂a<br />
[ 0 ⋅ f ( P0<br />
) −1]<br />
=<br />
⎪<br />
⇒ ⎨ ⎛ ∞<br />
⎞<br />
.<br />
= 0 ⎪ − ⎜ + ( − ) ⋅⎟<br />
h<br />
s d<br />
+ =<br />
⎪ ⎜ ∫ R P0<br />
f ( R)<br />
dR 0<br />
2<br />
a<br />
⎟ 2<br />
⎩ ⎝ P0<br />
⎠<br />
(9.7)<br />
Prima relaţie (9.7) se poate rescrie astfel:<br />
∂ ⎧∂CT<br />
⎪<br />
P0<br />
⎧ Q<br />
Q<br />
= 0 ⎪ h − d ⋅ P0<br />
⋅ f ( P0<br />
) + d ⋅ F(<br />
P0<br />
) + P<br />
0<br />
a<br />
a<br />
Q<br />
Q Q<br />
h − d + d F(<br />
P0<br />
) = 0 .<br />
a a<br />
Atunci<br />
a ⋅ h<br />
F( P0<br />
) = 1 − ⇒ P0<br />
opt .<br />
d ⋅ Q<br />
(9.8)<br />
a<br />
opt<br />
=<br />
⎛<br />
Q⎜<br />
s + d<br />
⎜<br />
⎝<br />
( R − P )<br />
2<br />
∞<br />
∫<br />
P0<br />
0 opt<br />
h<br />
⎞<br />
f ( R)<br />
dR⎟<br />
⎟<br />
⎠<br />
.<br />
(9.9)
220<br />
Modele şi algoritmi de optimizare<br />
Se observă că P0 apare în exprimarea lui aopt (9.9) şi a apare în exprimarea<br />
lui P0 opt (9.8). Pentru rezolvarea acestei probleme se poate folosi un procedeu<br />
iterativ astfel :<br />
- cu un a estimat, de exemplu dat de modelul lotului economic, se calculează P0,<br />
din<br />
tabela funcţiei de repartiţie F din relaţia (9.8),<br />
- apoi, cu acest P0 se calculează a cu relaţia<br />
(9.9) şi aşa mai departe, până când<br />
cele două valori găsite satisfac relaţiile (9.7).<br />
Dacă R a N R,<br />
σ ) , atunci ( − P ) f ( R)<br />
dR = σ N(<br />
Z)<br />
, unde N(Z) este<br />
( R<br />
∞<br />
∫ R<br />
P0<br />
0<br />
R<br />
numărul mediu de comenzi de reaprovizionare a stocului pe perioada timpului de<br />
avans. Astfel, relaţia (9.7) devine<br />
( s + d N(<br />
Z)<br />
)<br />
aopt<br />
şi costul total optim este<br />
=<br />
2Q σ R<br />
h<br />
(9.9’)<br />
Q ⎛ aopt ⎞<br />
C [ Z ] P − R⎟ opt = C 0 opt ) = ( ) ⎜<br />
T ( aopt<br />
, P s + dσ<br />
R N + + 0 opt ⎟<br />
h .<br />
a ⎜<br />
opt ⎝ 2<br />
⎠<br />
(9.6’ )<br />
Particularizări<br />
1) Dacă timpul de avans, L, e ste constant şi cunoscut<br />
şi cererea, r, este o<br />
variabilă aleatoare repartizată N (m,σR), atunci R=L⋅r<br />
este o variabilă aleatoare<br />
repartizată L m,<br />
L ⋅σ<br />
R . Notând cu –<br />
variabilei aleatoare<br />
N (0,1) , adică<br />
⋅ zα , α – cuantila inferioară a<br />
N ( )<br />
α =<br />
1<br />
2π<br />
2 − zα u<br />
−<br />
∫<br />
−∞<br />
e du 2 ,<br />
rezultă că în acest caz nivelul de reaprovizionare este<br />
P = L ⋅ m + z Lσ<br />
.<br />
0<br />
2) Presupunând timpul de avans, L, constant şi cererea, r, variabilă aleatoare<br />
repartizată Exp(λ), atunci cererea pe perioada timpului de avans este<br />
şi P0 se determină din relaţia<br />
R = r + ... + rL<br />
a Erlang(<br />
λ,<br />
L)<br />
P0<br />
1<br />
∫ f ( x)<br />
dx = 1 − α<br />
= P(<br />
R < P0<br />
)<br />
0<br />
(α riscul asumat fiind mic) folosind tabela repartiţiei Erlang(λ,L).<br />
α<br />
R
9. Elemente de teoria stocurilor 221<br />
3) Dacă L este o variabilă aleatoare cu media M[L]=l, iar r este o variabilă<br />
aleatoare repartizată N (m,σR), independentă de L, atunci R=L⋅r este o variabilă<br />
aleatoare normală cu M[R] = l⋅m şi D 2 [R] = l⋅σR 2 , adică N ( l ⋅ m,<br />
l ⋅σ<br />
R )<br />
acest caz nivelul de reaprovizionare este<br />
P = l ⋅ m + z lσ<br />
0<br />
α<br />
R<br />
<br />
. În<br />
Exemplu. La un service auto sunt necesare 1800 bidoane de ulei de motor pe an.<br />
Costul de lansare a unei comenzi de reaprovizionare cu ulei este de s=10 u.m.,<br />
costul de păstrare h=0.6 u.m./an, iar timpul de avans este de 20 zile. Cererea<br />
medie pe timpul de avans este R = 30 bidoane, R a N ( R,<br />
σ R ) . Costul lipsei<br />
din stoc a unui bidon de ulei este d=5 u.m. Să se determine cantitatea optimă de<br />
reaprovizionare şi punctul optim de reaprovizionare.<br />
Rezolvare. Consideră mărimea optimă a lotului de reaprovizionare<br />
2sQ<br />
2 ⋅10<br />
⋅1800<br />
aopt = =<br />
= 245 bidoane de ulei.<br />
h 0.<br />
6<br />
Indicele de lipsă de stoc asumat este<br />
h ⋅ a 0.<br />
6 ⋅ 245<br />
Φ( P 0 ) = 1 − = 1 − = 0.<br />
9837 = α<br />
d ⋅ Q 5 ⋅1800<br />
Φ fiind funcţia de repartiţie a unei variabile aleatoare normale.<br />
Din tabelele repartiţiei normale luăm α – cuantila corespunzătoare, Z α = 2.<br />
14 .<br />
Se obţine punctul optim de reaprovizionare P 0=100+2.14·30=164<br />
. Astfel, stocul<br />
de siguranţă este I S = Popt<br />
− R = 164 −100<br />
= 64 bidoane de ulei.<br />
În anumite ipoteze asupra repartiţiei ciclului de reaprovizionare, T a G(τ<br />
) ,<br />
numărului de cereri din intervalul de timp (0, t), n( t)<br />
a Po(<br />
λ ⋅ t)<br />
,<br />
mărimii unei cereri X, X a F(<br />
x ) ,<br />
se poate determina repartiţia cererii totale pe intervalul de timp ( 0, t ).<br />
9.6.2.<br />
Modele de stocare pe o singură perioadă<br />
cu cerere aleatoare<br />
Dacă rata cererii nu este deterministă, modelul de stocare cu cerere aleatoare<br />
presupune cunoscută repartiţia acesteia. Modelele de stocare pe o singură perioadă<br />
se referă la situaţia în care o singură comandă este lansată pentru un produs. La<br />
sfârşitul perioadei produsul a fost fie epuizat, fie există un surplus de articole<br />
nevândute care vor fi vândute la o valoare de lichidare de stoc. Modelul<br />
pentru o<br />
singură perioadă este aplicabil în situaţii ce implică articole sezoniere sau perisabile<br />
care nu pot fi păstrate în stoc şi vândute în perioada următoare. De exemplu: hainele
222<br />
Modele şi algoritmi de optimizare<br />
de sezon (costume de baie, hainele de iarnă), ziare etc. Cum comanda se face o<br />
singură dată pe perioada considerată, singura decizie de stoc care trebuie luată este: ce<br />
cantitate din produsul respectiv să se comande la începutul perioadei ? O astfel de<br />
problemă este cunoscută sub numele de problema vânzătorului de ziare.<br />
Exemplu de cerere cu repartiţie discretă<br />
Un magazin cumpără roşii o dată pe săptămână de la producător cu 6 u. m. / kg şi<br />
le vinde cu 11 u. m. / kg. La sfârşitul săptămânii preţul de lichidare de stoc este de<br />
2 u. m./kg. Din experienţa avută (reflectată în Tabelul 9.6) magazinul vinde între<br />
160 şi 200 kg de roşii pe săptămână. Deoarece cererea este relativ stabilă, se<br />
presupune că este continuă cu acea rată. Să se determine mărimea comenzii de<br />
reaprovizionare pentru magazin,<br />
astfel ca profitul magazinului să fie maxim<br />
(Turban<br />
şi Meredith, 1988) .<br />
Număr kilograme<br />
vândute (x)<br />
Tabelul 9.6<br />
Număr<br />
de Probabilitatea<br />
săptămâni cererii<br />
Funcţia empirică<br />
de<br />
repartiţie (P(x≤a))<br />
160 4 0.08 0.08<br />
170 10 0.2 0.28<br />
180 12 0.24 0.52<br />
190 15 0.3 0.82<br />
200 9 0.18 1<br />
Total 50<br />
Rezolvare<br />
În rezolvarea acestui tip de probleme este indicată folosirea metodei analizei<br />
incrementale. Analiza incrementală compară câştigul sau pierderea realizată prin<br />
comandarea unui articol suplimentar pentru care nu ar fi existat cerere, cu câştigul<br />
sau pierderea realizată prin necomandarea unui articol pentru care ar fi existat cerere.<br />
Fie: a cererea de aprovizionare cu roşii pentru o săptămână,<br />
c+ costul unitar al supraestimării cererii, adică pierderea datorată<br />
comandării<br />
unui kilogram suplimentar care apoi se constată că nu se poate vinde,<br />
c - costul unitar al subestimării cererii, adică pierderea datorată necomandării<br />
unui kilogram suplimentar<br />
care apoi se constată că s-ar fi putut vinde,<br />
D+ pierderea totală datorată supraestimării comenzii<br />
de aprovizionare,<br />
D+ (a)=c+⋅P(a≤aopt)<br />
D- pierderea totală datorată subestimării comenzii de aprovizionare,<br />
D-(a)=c-⋅ P(a>aopt )= c-<br />
(1-P(a≤aopt)) .<br />
Din egalitatea D+(a)= D-(a) se determină cantitatea<br />
optimă comandată astfel:<br />
+ − + c c<br />
c_<br />
P(<br />
a ≤ aopt<br />
) = . (9.10)
9. Elemente de teoria stocurilor 223<br />
c_<br />
11 − 6<br />
Pentru această problemă =<br />
= 0.<br />
5555 . Din Tabelul 9.6<br />
c c ( 6 − 2)<br />
+ ( 11 − 6)<br />
+ + −<br />
se constată că P ( a a ) = 0.<br />
5555 şi se obţine aopt=190 kg .<br />
Exemplu de cerere cu repartiţie continuă<br />
O reţea de magazine comandă la o fabrică de încăţăminte un nou model de pantofi<br />
bărbăteşti de primăvară-vară. La sfârşitul sezonului (30 septembrie) patronul<br />
magazinelor va avea lichidare de stoc pentru ce nu s-a vândut până la acea dată.<br />
Preţul de achiziţie de la fabrică este de 40 u.m. perechea, iar magazinul îi vinde cu<br />
60 u.m. Preţul de lichidare de stoc este de 30 u.m. perechea şi se aşteaptă ca la<br />
acest preţ stocul să fie lichidat. Câte perechi de pantofi ar trebui să comande<br />
patronul magazinelor pentru a obţine profit maxim (pierderi minime) ? (Anderson<br />
et al, 1994)<br />
Rezolvare<br />
Din experienţa anilor trecuţi, cererea pentru pantofi bărbateşti, măsura 42,<br />
este<br />
uniformă şi cuprinsă între 350 şi 650 perechi, având media 500. Se apelează<br />
la<br />
analiza incrementală pentru rezolvarea acestei probleme.<br />
Fie: a cererea de aprovizionare cu pantofi bărbăteşti mărimea 42,<br />
c+ costul unitar al supraestimării cererii, adică pierderea datorată comandării<br />
unei perechi de pantofi suplimentare, care apoi se constată că nu se poate vinde,<br />
c- costul unitar al subestimării cererii, adică pierderea datorată necomandării<br />
unei perechi de pantofi suplimentare, care apoi se constată că s-ar fi putut vinde,<br />
D+ pierderea totală datorată supraestimării comenzii de aprovizionare<br />
D- pierderea totală datorată subestimării comenzii de aprovizionare.<br />
Pentru această<br />
problemă c+=40–30=10, iar c-=60–40=20. Considerând<br />
cererea egală cu media, analiza incrementală pentru două cazuri este arătată de<br />
Tabelul 9.7.<br />
Cazul<br />
rimea<br />
comenzii<br />
Mă<br />
I 501<br />
II 500<br />
≤ opt<br />
Tabelul 9.7<br />
Pierderea produsă dacă<br />
Cererea este supraestimată şi o<br />
unitate nu poate fi vândută<br />
Cererea este subestimată şi o<br />
unitate ar fi putut să fie vândută<br />
Pierderea<br />
posibilă<br />
Probabilitatea<br />
c+=10 P(a≤500)<br />
c-=20 P(a>500)<br />
P(a≤500)= P(a>500)=0.5, D+(a)=c+⋅0.5=5<br />
u.m. , D-(a)=c-⋅0.5=10 u.m.<br />
Este de preferat să se comande 501 perechi de pantofi. Se continuă investigarea<br />
până când<br />
D+(a)= D-(a) .<br />
Ţinând seama de relaţia (9.4), se obţine pentru acest exemplu<br />
aopt<br />
− 350 2<br />
P ( a ≤ aopt<br />
) = = ,<br />
650 − 350 3
224<br />
iar aopt=550.<br />
Modele şi algoritmi de optimizare<br />
În situaţiile practice apare problema cunoaşterii repartiţiei cererii pentru<br />
produsul respectiv<br />
şi cea a costurilor c+ şi c- .<br />
În modelele cu o singură perioadă, cantitatea<br />
+ − + c c<br />
c_ are rol esenţial în<br />
determinarea cantităţii optime de reaprovizionare. Când c+
9. Elemente de teoria stocurilor 225<br />
ρ λ<br />
[ ( ) ] = , ρ = , 0 = 1 − ρ<br />
1 − ρ µ<br />
p<br />
t N M .<br />
Construcţia funcţiei de cost. Notăm cu:<br />
cu – costul unei unităţi din stoc,<br />
α − fracţiunea pe care o reprezintă costul de stocare din costul unităţii de stoc,<br />
(h=αcu) ,<br />
d – costul unitar al lipsei de stoc,<br />
p0 – probabilitatea de a avea lipsă de stoc.<br />
Atunci obţinem<br />
• costul mediu de stocare = cu⋅α⋅M[N(t)],<br />
• costul mediu al lipsei de stoc = d⋅p0,<br />
• funcţia de eficienţă (costul mediu ce trebuie optimizat) =C(ρ), unde<br />
ρ<br />
C( ρ ) = cu<br />
⋅α<br />
⋅ M[<br />
N(<br />
t)]<br />
+ d ⋅ p0<br />
= cu<br />
⋅α<br />
⋅ + d ⋅ ( 1 − ρ ) .<br />
1 − ρ<br />
Din condiţia ca C(ρ) să fie minim ( C ′ ( ρ) = 0 , C ′′ ( ρ)<br />
> 0)<br />
, se obţine<br />
cu ⋅α<br />
ρ opt =1 −<br />
d<br />
şi astfel se pot determina elementele necunoscute ale modelului.<br />
Practic se cunoaşte cererea τ a Exp ( µ ) şi astfel numărul de unităţi cerute pe<br />
unitatea de timp este o variabilă aleatoare Poisson de parametru µ, µ fiind<br />
intensitatea cererii, presupusă cunoscută.<br />
Se cere determinarea parametrului λ opt = intensitatea optimă de încărcare a<br />
stocului.<br />
Dar<br />
⎛ ⎞<br />
⎜<br />
cu ⋅α<br />
λ = µ ⋅ ρ = µ ⋅ 1 − ⎟ .<br />
⎜ ⎟<br />
⎝<br />
d<br />
⎠<br />
Se poate determina probabilitatea ca nivelul stocului să depăşească o anume<br />
valoare ν ,<br />
deoarece<br />
P<br />
( N(<br />
t)<br />
)<br />
∞<br />
ν<br />
j<br />
≥ν = ∑ pn<br />
= ( 1 − ρ)<br />
⋅ ρ ⋅∑<br />
ρ = ρ<br />
n=<br />
ν<br />
j=<br />
0<br />
p n<br />
= n<br />
ρ ⋅ −<br />
( 1 ρ ) .<br />
Problema se poate formula şi astfel:<br />
Să se determine nivelul stocului care să fie atins şi/sau depăşit cu<br />
bilitatea π∈(0, 1) suficient de mică.<br />
Atunci, din relaţia ρ ν proba<br />
lnπ<br />
= π obţinem ν π = .<br />
ln ρ<br />
Ipoteza că intrările în stoc pot avea loc în mod indefinit se poate înlocui cu alta,<br />
rezultată<br />
din faptul că stocul are o limită a capacităţii, m. Atunci<br />
∞<br />
ν
226<br />
∑ m<br />
n= 1<br />
şi deoarece<br />
p = 1 se obţine<br />
Astfel<br />
Însă<br />
M<br />
n<br />
[ N t)<br />
]<br />
de<br />
unde rezultă că<br />
Obţinem<br />
N = M<br />
∑<br />
n=<br />
1<br />
p<br />
n<br />
n ⎧ρ<br />
⋅ p<br />
= ⎨<br />
⎩0<br />
0<br />
pentru 1≤<br />
n ≤ m<br />
pentru n > m<br />
0 = p 1 − ρ<br />
. m+<br />
1<br />
1 − ρ<br />
∑<br />
n=<br />
1<br />
Modele şi algoritmi de optimizare<br />
m ( 1 − ρ )<br />
⋅ m+ 1 ∑<br />
m<br />
m<br />
ρ ⋅<br />
( = n ⋅ p = n ⋅<br />
ρ<br />
∑<br />
n=<br />
1<br />
⋅ ρ<br />
=<br />
n<br />
m<br />
∑<br />
n=<br />
1<br />
n<br />
n−1<br />
ρ ⋅ p0<br />
=<br />
n ⋅ .<br />
1 − ρ n=<br />
1<br />
m<br />
n 1 − ρ<br />
ρ = ρ<br />
1 − ρ<br />
[ ( ) ] ( )<br />
( ) 2<br />
m<br />
1 − m + 1 ⋅ ρ ⋅ 1 − ρ<br />
1 − ρ<br />
+ ρ − ρ<br />
m<br />
m+<br />
1<br />
n<br />
n−1<br />
.<br />
[ N(<br />
t)<br />
]<br />
m m+<br />
1<br />
[ 1 − ( m + 1)<br />
⋅ ρ + m ⋅ ρ ]<br />
= m<br />
+ 1<br />
( 1 − ρ)<br />
⋅ ( 1 − ρ )<br />
m<br />
[ ⋅ ρ ] ⋅ ( 1 − ρ)<br />
( − ρ)<br />
1 − ( m + 1)<br />
ρ 1 + ρ − ρ<br />
= ⋅ m+<br />
1<br />
2<br />
1 − ρ<br />
⋅ ρ<br />
.<br />
( 1 − ρ )<br />
Înlocuind M[N(t)] în funcţia de cost şi punând condiţia de minim se obţine<br />
ρopt cu ajutorul căruia se pot determina elementele modelului.<br />
De exemplu, numărul mediu de cereri ce urmează a fi satisfăcute (adică<br />
lungimea medie a cozii)<br />
2 m+<br />
1<br />
m<br />
ρ ⋅<br />
[ ] [ 1 − m ⋅ ρ + ( m −1)<br />
⋅ ρ ]<br />
R = M N(<br />
t)<br />
−1<br />
=<br />
.<br />
m+<br />
1<br />
1 − ρ ⋅ 1 − ρ<br />
( ) ( )<br />
Se obţine o nouă funcţie de cost dacă se consideră valorile medii<br />
ρ<br />
C1(<br />
ρ ) = cu<br />
⋅α<br />
⋅ N + d ⋅ R =<br />
m+1<br />
1 − ρ ⋅ 1 − ρ<br />
( ) ( ) ⋅<br />
m+<br />
1<br />
N<br />
,<br />
=<br />
R<br />
astfel<br />
m<br />
m+<br />
1 m−1<br />
m<br />
( m + 1)<br />
⋅ ρ + m ⋅ ρ ] + d ⋅ ρ ⋅[<br />
1 − m ⋅ ρ + ( m −1)<br />
]} .<br />
⋅{<br />
cu ⋅α<br />
⋅[<br />
1 −<br />
⋅ ρ<br />
Din condiţia de optim (min C1(<br />
ρ) ) rezultă ρopt şi acum se pot calcula<br />
elementele modelului.<br />
9.6.5. Modelul cu<br />
mai multe staţii paralele<br />
şi cu timp de avans L aleatoriu
9. Elemente de teoria stocurilor 227<br />
Ipotezele modelului<br />
• în momentul când se scoate o unitate din stoc se comandă alta, astfel încât<br />
numărul de unităţi din stoc plus cele comandate<br />
să fie S=constant,<br />
• fiecare cerere este egală cu unitatea (r=1); numărul de cereri pe unitatea de<br />
timp este o variabilă aleatoare Poisson, de parametru λ,<br />
• timpul de avans L este o variabilă aleatoare exponenţială negativă de<br />
parametru µ.<br />
A. Cererea nesatisfăcută nu se păstrează<br />
Analogia cu modelul de aşteptare µ )/Exp( λ)/<br />
c : ( ∞,<br />
N<br />
Exp( d<br />
Se consideră<br />
• cele c locuri din stoc drept staţiile de serviciu ale sistemului de aşteptare,<br />
• Nd semnifică faptul că există clienţi nedisciplinaţi care, dacă nu pot fi serviţi,<br />
părăsesc sistemul,<br />
• N(t) − numărul de unităţi din sistem la momentul t este un proces finit,<br />
• Pn(t)=P(N(t)=n) – probabilitatea de a avea n unităţi în stoc. Când sunt n<br />
unităţi în stoc înseamnă că sunt lansate c−n comenzi.<br />
Determinarea coeficienţilor λn , µn, n∈{1, 2, . . . , c}. Deoarece o comandă<br />
soseşte după timpul aleatoriu L, care are repartiţia Exp(µ), rezultă că intensitatea<br />
intrării în stoc a unuia din cele c articole este µ·c, adică, λ0= µ·c.<br />
Dacă există n unităţi în stoc, atunci poate să sosească numai una din cele c−n<br />
comenzi,<br />
deci<br />
λn= µ·(c−n) , 1 ≤ n ≤ c , λc = 0.<br />
Pentru a determina intensitatea ieşirii ţinem seama de faptul că ieşirea depinde<br />
de cerere, deci µn = λ, 1 ≤ n ≤ c.<br />
Se pot scrie ecuaţiile de stare ale modelului astfel<br />
⎧P′<br />
0(<br />
t)<br />
= −cµ<br />
⋅ P0<br />
( t)<br />
+ λ ⋅ P1<br />
( t)<br />
⎪<br />
P′<br />
n ( t)<br />
= −[<br />
λ + ( c − n)<br />
⋅ µ ] Pn<br />
( t)<br />
+ λ ⋅ Pn<br />
+ 1(<br />
t)<br />
+ µ ⋅ ( c − n + 1)<br />
Pn<br />
−1(<br />
t)<br />
, 1≤<br />
n ≤ c −1<br />
⎨<br />
⎪P′<br />
c ( t)<br />
= −λ<br />
⋅ Pc<br />
( t)<br />
+ µ ⋅ Pc<br />
−1(<br />
t)<br />
⎪<br />
⎩ Pn ( t)<br />
= 0 , n > c.<br />
Rezolvarea pentru cazul staţionar<br />
conduce la soluţia<br />
1<br />
p0<br />
= ,<br />
c 1<br />
c!<br />
⋅<br />
n<br />
( c − n)!<br />
⋅ρ<br />
iar<br />
unde<br />
∑<br />
n=<br />
0<br />
c! 1 c−n<br />
pn<br />
= ⋅ p<br />
p<br />
n 0 = ρ , 1 ≤ n ≤ c,<br />
( c − n)!<br />
⋅ρ<br />
!<br />
c<br />
( c − n)<br />
)
228<br />
Se poate determina stocul mediu<br />
λ<br />
ρ = .<br />
µ<br />
M[N(t)] = pc<br />
∑<br />
n=<br />
c<br />
0<br />
c − n n<br />
ρ .<br />
n<br />
Modele şi algoritmi de optimizare<br />
Numărul mediu de ce reri pe unitatea de timp este λ, deci numărul mediu de<br />
cereri pe intervalul<br />
mediu de timp de avans, egal cu<br />
µ ,<br />
1 λ<br />
va fi , iar numărul<br />
µ<br />
mediu de cereri satisfăcute pe intervalul de timp de avans este<br />
M[R] = c−M[N(t)].<br />
Stabilirea funcţiei obiectiv<br />
Fie cv – preţul de vânzare al unei unităţi de stoc şi<br />
1<br />
h − costul de stocare pe intervalul de timp de avans mediu .<br />
µ<br />
unde<br />
Profitul pe perioada T este<br />
B(c) = M[R]·cv−h·M[N(t)] = c<br />
E<br />
v<br />
c ⋅ Ec<br />
( ρ)<br />
− ρEc−1<br />
( ρ)<br />
⋅ c − ( h + v)<br />
⋅<br />
,<br />
E ( ρ)<br />
x<br />
c n<br />
−x<br />
c ( x)<br />
= ∑ ⋅ e .<br />
n=<br />
0 n!<br />
c fiind o variabilă întreagă, condiţia B’(c) = 0, revine la<br />
B(c+1)−B(c) = 0,<br />
adică<br />
h ⎡ Ec<br />
( ρ)<br />
Ec−1<br />
( ρ)<br />
⎤<br />
= ρ ⋅ ⎢ − ⎥ .<br />
h + cv<br />
⎣ Ec+<br />
1( ρ)<br />
Ec<br />
( ρ)<br />
⎦<br />
Dându-se h, c, c v,<br />
ultima relaţie permite determinarea<br />
stocului optim<br />
obţinerea unui profit maxim.<br />
c<br />
pentru<br />
B. Cererea nesatisfăcută se păstrează<br />
Pot exista cel mult m cereri nesatisfăcute şi atunci numărul de unităţi din stoc<br />
satisface relaţia −m≤ n ≤ c.<br />
Analogia cu modelul de aşteptare<br />
Exp( µ<br />
)/Exp( λ)/<br />
c : ( m,<br />
FIFO)
9. Elemente de teoria stocurilor 229<br />
Formularea problemei. Să se determine nivelul optim al stocului c în funcţie de<br />
ρ, L, costul unitar de stocare h şi costul unitar al lipsei de stoc d. În acest caz<br />
N(t) reprezintă numărul de cereri înregistrate,<br />
0 ≤ N(t) ≤ c+m.<br />
În stoc vor exista j = c−N(t) unităţi.<br />
Determinarea coeficienţilor λ n, µ n,<br />
0 ≤ n ≤ c+m<br />
Dacă există n cereri înregistrate, intensitatea cu care apare o nouă cerere este<br />
λn = λ, 0 ≤ n ≤ c+m, λn = 0 pentru n > c+m.<br />
Intensitatea satisfacerii cererilor µn se determină astfel.<br />
Dacă există n cereri la un moment dat t, 1 ≤ n ≤ c, atunci ele se pot satisface<br />
cu unităţile ce vor sosi în stoc cu intensitatea µ, deci<br />
µn = n⋅µ , 1 ≤ n ≤ c.<br />
Dacă c ≤ n ≤ c+m, nu pot sosi în stoc decât c unităţi ce au fost comandate,<br />
care intră în stoc cu intensitatea µ, deci numai c din cele n cereri vor fi<br />
satisfăcute, atunci<br />
µ n = c⋅µ , c ≤ n ≤ c+m.<br />
Deoarece numărul maxim de cereri ce se pot realiza<br />
este c+m, rezultă că<br />
µ n = 0, pentru n > c+m.<br />
Astfel, ecuaţiile de stare ale modelului sunt<br />
⎧P′<br />
0 ( t)<br />
= −λ<br />
⋅ P0<br />
( t)<br />
+ µ ⋅ P1<br />
( t)<br />
⎪<br />
P′<br />
n ( t)<br />
= −(<br />
λ ⋅ + n ⋅ µ ) ⋅ Pn<br />
( t)<br />
+ λ ⋅ Pn<br />
−1(<br />
t)<br />
+ µ ⋅ ( n + 1)<br />
⋅ Pn<br />
+ 1(<br />
t)<br />
1≤<br />
n ≤ c<br />
⎨<br />
.<br />
⎪P′<br />
n ( t)<br />
= −(<br />
λ ⋅ + S ⋅ µ ) Pn<br />
( t)<br />
+ λ ⋅ Pn<br />
−1<br />
( t)<br />
+ µ ⋅ S ⋅ Pn<br />
+ 1(<br />
t)<br />
c ≤ n ≤ c + m<br />
⎪<br />
⎩P′<br />
c+<br />
m ( t)<br />
= −c<br />
⋅ µ ⋅ Pc<br />
+ c ( t)<br />
+ λ ⋅ Pc<br />
+ m−1<br />
( t).<br />
λ<br />
Soluţia pentru cazul staţionar în funcţie de ρ = este<br />
µ<br />
∑ + c m<br />
n=<br />
0<br />
n ⎧ ρ<br />
⎪ ⋅ p0<br />
⎪<br />
n!<br />
n<br />
⎪ ρ<br />
⎨ ⋅ p n<br />
⎪c!<br />
⋅c<br />
⎪<br />
⎪<br />
⎩0<br />
pn = −c<br />
Din p = 1 deducem<br />
n<br />
0<br />
1≤<br />
n ≤ c<br />
c ≤ n ≤ c + m<br />
n > c + m<br />
∑ −<br />
1<br />
p0<br />
=<br />
m+<br />
1<br />
⎛ ρ ⎞<br />
1 − ⎜ ⎟<br />
c 1 n c<br />
ρ ρ<br />
+ ⋅<br />
⎝ c ⎠<br />
n=<br />
0 n! c!<br />
ρ<br />
1 −<br />
c<br />
Se pot determina acum:<br />
− numărul mediu de unităţi existente în stoc<br />
(9.11)<br />
(9.12)
230<br />
M[N + c<br />
(t)] = ∑ −<br />
n= 0<br />
Modele şi algoritmi de optimizare<br />
( c n)<br />
p ,<br />
M[N − (t)] = ( c − n)<br />
p .<br />
Astfel, funcţia de cost care trebuie optimizată este<br />
C(c)= M[N + (t)]·h− M[N − (t)]·d.<br />
Notăm Q(<br />
n)<br />
= p − funcţia de repartiţie a variabilei aleatoare discrete n.<br />
Atunci<br />
− numărul mediu de unităţi lipsă din stoc<br />
n<br />
∑<br />
j=<br />
0<br />
j<br />
c+<br />
1<br />
∑ + c m<br />
n=<br />
c+<br />
1<br />
C′<br />
( c)<br />
≈ C(<br />
c + 1)<br />
− C(<br />
c)<br />
= h ⋅∑<br />
( c + 1 − n)<br />
⋅ pn<br />
− d ⋅ ∑ ( c + 1 − n)<br />
⋅ p<br />
c<br />
S<br />
n=<br />
0<br />
S + L<br />
n<br />
n<br />
c+<br />
1+<br />
m<br />
n=<br />
c+<br />
2<br />
− h ⋅∑<br />
( S − n)<br />
⋅ pn<br />
+ d ⋅ ∑ ( S − n)<br />
⋅ p<br />
n=<br />
0<br />
n=<br />
S + 1<br />
= h ⋅∑<br />
( c + 1 − n − c + n)<br />
⋅ pn<br />
− d ⋅ ∑ ( c + 1 − n − c + n)<br />
⋅ pn<br />
−<br />
n=<br />
0<br />
− d ⋅ ( c + 1 − c − m −1)<br />
⋅ pc+<br />
1+ m<br />
n=<br />
c+<br />
1<br />
= h ⋅ Q(<br />
c)<br />
− d ⋅ ( 1 − Q(<br />
c)<br />
).<br />
d<br />
Din condiţia de optim, C’(c)=0, se obţine Q(<br />
c)<br />
= .<br />
d + h<br />
Pentru a găsi o soluţie întreagă a acestei ecuaţii se poate folosi următorul algoritm.<br />
Pas 0. Intrare m, d, h, ρ;<br />
d<br />
k : =<br />
d + h<br />
Pas 1. c:=c+1;<br />
, c : = 0 ;<br />
Calculează p0 conform cu (9.12) şi pn, 1 ≤ n ≤ c + m , conform cu (9.11);<br />
Σ : = p 0 ; i : = 0;<br />
c+<br />
m<br />
Pas 2. i:=i+1 ; Σ:= Σ+pi ;<br />
dacă Σ
9. Elemente de teoria stocurilor 231<br />
1. Din experienţa anilor trecuţi, universitatea are nevoie pentru consumurile curente<br />
de 1200 de cutii de hârtie A4 pentru un an. Costul de lansare a unei comenzi de<br />
reaprovizionare cu hârtie este de 150 000 lei, iar pentru depozitarea unei cutii<br />
se<br />
consideră că se cheltuiesc 35 000 lei pe un an. Să se stabilească un plan optim<br />
de<br />
aprovizionare cu hârtie A4, care să conducă universitatea<br />
la cheltuieli minime. Se<br />
consideră<br />
că anul are 300 zile lucrătoare şi că nu se admite lipsa hârtiei în depozit.<br />
R.<br />
Pentru un an avem: aopt=101.42 cutii ≈ 101 cutii, costul total anual este de<br />
3 549 647. 87, numărul de comenzi lansate într-un an este 12, Topt ≈ 25 zile.<br />
2.<br />
Firma care se ocupă cu semaforizarea intersecţiilor din Capitală are nevoie de<br />
1 0 000 de becuri pe an. Costul de lansare a unei comenzi de reaprovizionare<br />
este de<br />
1 500 000 lei, costul a nual de păstrare a unui bec este de 3500 lei. Presupunând că<br />
anul<br />
are 300 zile lucrătoare şi că nu se admite lipsa becurilor din depozit, să se<br />
determine:<br />
a) cantitatea optimă de reaprovizionare<br />
b) costul total anual al stocării<br />
c) câte comenzi de reaprovizionare vor fi lansate anual.<br />
R. a) Qopt=2927.7 ≈ 2928 , b) CT =10 246 950.77 ≈ 10 246 951 , c) N=3.42 ≈ 3 .<br />
3. RomTelecom cumpără anual consumabile în valoare de 500 000 euro.<br />
Costul<br />
de lansare a unei comenzi de reaprovizionare este de 80 euro, iar costul<br />
anual<br />
de păstrare este de 20% din valoarea consumabilelor păstrate. Să se<br />
determine:<br />
a)<br />
care este valoarea optimă a unei comenzi de reaprovizionare?<br />
b)<br />
de câte ori într-un an se lansează cereri de reaprovizionare?<br />
c) care este costul total anual de lansare a comenzilor?<br />
d) care este costul total anual de stocare?<br />
R. a) Valoarea optimă a comenzii de reaprovizionare este 20 000 euro;<br />
b) se<br />
lansează într-un an 25 cereri de reaprovizionare; c) costul total anual de lansare a<br />
comenzilor de reaprovizionare este de 2000 euro; d) costul total anual de stocare<br />
este de 4000 euro.<br />
4.<br />
O firmă de reparaţii aparatură electronică are o componentă pentru care poate<br />
aplica modelul cu lipsă de stoc. Cererea nuală este de 2000 unităţi, costul anual<br />
unitar de păstrare este h=10 u.m. , costul de lansare a unei<br />
comenzi de<br />
reaprovizionare<br />
este de s=25 u.m. , costul anual unitar al lipsei<br />
de stoc este<br />
d=30<br />
u.m.. Se presupune că anul are 250 zile lucrătoare. Să se determine:<br />
a) mărimea<br />
optimă a comenzii de reaprovizionare<br />
b) numărul maxim de unităţi lipsă din stoc pe perioada lipsei<br />
de stoc.<br />
c) nivelul maxim al stocului<br />
d) ciclul optim de reaprovizionare
232<br />
e) costul total anual<br />
R. a) mărimea optimă a comenzii de reaprovizionare<br />
Modele şi algoritmi de optimizare<br />
a opt = 115<br />
b) numărul maxim de unităţi lipsă din stoc pe perioada lipsei de stoc, S=29.<br />
c) nivelul maxim al stocului Imax= aopt − S =86<br />
d) ciclul optim de reaprovizionare, Topt=11.4 zile lucrătoare<br />
e) Ch=322, Cs=435, Cd=110 şi atunci, costul total anual, CT=867 .<br />
5.<br />
O companie trebuie să asigure un produs chimic (soluţie) la fiecare 6 luni unui<br />
client. Cum procesul de producţie durează două luni, producţia<br />
trebuie începută<br />
înaintea<br />
formulării cererii de către client. Câţi litri trebuie produşi<br />
ştiind că : preţul<br />
de<br />
vânzare este de 20 u. m. / litru, costul de producţie este de 15 u. m. / litru, lipsa<br />
de<br />
stoc este rezolvată prin cumpărarea soluţiei de la altă firmă cu 19 u. m. / litru,<br />
surplusul se vinde cu 5 u. m. / litru. Din experienţa care există cererea se consideră<br />
ca fiind N (1000,100). Care este planul de producţie optim ?<br />
4<br />
Rezolvare. c-=19-15=4, c+=15-5=10, P ( a ≤ aopt<br />
) = = 0.<br />
29 . Din tabela<br />
4 + 10<br />
repartiţiei normale standard<br />
2<br />
z x<br />
1 −<br />
2<br />
P(<br />
a ≤ z)<br />
= ∫ e dx = 0.<br />
29<br />
2π<br />
−∞<br />
se ia z=0.55. Atunci aopt=µ-0.55σ=1000-0.55⋅100=0.945 litri. În acest caz, costul<br />
de subestimare este mai mic decât cel de supraestimare şi atunci compania îşi<br />
asumă<br />
un risc mai mare de apariţie a lipsei de stoc. La valoarea aopt obţinută,<br />
probabilitatea<br />
de a avea surplus este 0.29, iar cea de a avea lipsă de stoc este 0.71 .<br />
6. Folosind algoritmul general din §9.4. să se rezolve următoarea problemă :<br />
Un<br />
magazin de încălţăminte bărbătească vinde în medie la fiecare 3 luni 500<br />
perechi<br />
de pantofi negri. Făcând aprovizionarea în loturi de câte 500 perechi de<br />
pantofi, magazinul obţine<br />
de la producător cel mai mic preţ petru o pereche, 28<br />
u.m. Costul de depozitare este 20% din preţul de achiziţie. Ştiind că o lansare de<br />
comandă de aprovizionare este de 30 u.m. şi că producătorul<br />
oferă şi alte reduceri<br />
de<br />
preţuri în funcţie de m ărimea comenzii, conform cu Tabelul 9.8, să se<br />
stabilească mărimea<br />
optimă a comenzii de reaprovizionare a magazinului şi să se<br />
precizeze dacă este mai avantajoasă vechea politică de reaprovizionare.<br />
Tabelul 9.8<br />
Cantitate Preţ unitar<br />
0 – 99 36<br />
100 – 199 32<br />
200-299 30<br />
≥300 28
ANEXĂ<br />
Noţiuni<br />
generale de probabilităţi şi statistică<br />
matematică<br />
A.1. Câmp de<br />
evenimente. Axioma lui Kolmogorov<br />
A.1.1. Evenimente. Probabilităţi<br />
Fie Ω o mulţime nevidă dată, K o familie de submulţimi ale lui Ω,<br />
K ⊂ P (Ω). Elementele lui K le numim subevenimente.<br />
Familia<br />
K se numeşte câmp complet aditiv dacă sunt verificate următoarele axiome:<br />
A1. (∀) X ∈ K , cX ∈ K (cX=Ω \ X)<br />
U<br />
α∈I<br />
A2. X ∈K<br />
α dacă Xα ∈ K , (∀) α∈ I , I familie de indici cel mult<br />
numărabilă<br />
( I – submulţime a lui N ).<br />
A.1.2. Probabilitate<br />
Funcţia de mulţime P : K → R se numeşte probabilitate dacă:<br />
P1. (∀) X ∈ K , P(X) ≥ 0;<br />
P2. (∀)I familie de indici cel mult numărabilă, este îndeplinită relaţia:<br />
X ∈ K , ( ∀)<br />
α ∈ I , X ∩ X = φ , α,<br />
β ∈ I,<br />
α ≠ β ⇒<br />
P3. P(Ω) = 1.<br />
α<br />
⎛<br />
⇒ P⎜<br />
⎝<br />
U<br />
α∈I<br />
X<br />
α<br />
⎞<br />
⎟ =<br />
⎠<br />
∑<br />
α∈I<br />
P(<br />
X<br />
α<br />
α<br />
) ;<br />
A.1.3. Câmp de probabilitate complet aditiv<br />
Câmp de probabilitate complet aditiv este tripletul<br />
numeşte evenimentul sigur şi φ – evenimentul imposibil.<br />
P(Ω) = 1, P(φ ) = 0 .<br />
β<br />
{ , K , P}<br />
Ω , iar Ω se
234<br />
Fie { , K , P}<br />
A.1.4. Probabilitate condiţionată<br />
Modele şi algoritmi de optimizare<br />
Ω un câmp de probabilitate complet aditiv, A, B∈ K cu<br />
P (B)>0. Numim probabilitatea evenimentului A condiţionată de B şi notăm<br />
P(<br />
A ∩ B)<br />
PB(A) sau P(A⏐B) raportul .<br />
P(<br />
B)<br />
}<br />
A.1.5. Evenimente independente<br />
Fie { Ω , K , P un câmp de probabilitate complet aditiv şi A, B ∈ K .<br />
Spunem că evenimentele A şi B sunt independente dacă se verifică relaţia:<br />
P( A ∩ B)<br />
= P(<br />
A)<br />
⋅ P(<br />
B)<br />
.<br />
Dacă evenimentele A şi B sunt independente, atunci au loc relaţiile:<br />
P(<br />
cA ∩ B)<br />
= P(<br />
cA)<br />
⋅ P(<br />
B)<br />
P(<br />
A ∩ cB)<br />
= P(<br />
A)<br />
⋅ P(<br />
cB)<br />
P( cA ∩ cB)<br />
= P(<br />
cA)<br />
⋅ P(<br />
cB).<br />
Observaţie. Dacă A şi B sunt independente, atunci PB(A) = P(A).<br />
Fie<br />
{ , K , P}<br />
A.2. Variabile aleatoare<br />
Ω un câmp de probabilitate complet aditiv sau câmp de<br />
probabilitate<br />
şi X o funcţie, X : Ω → R. Aplicaţia X este variabilă aleatoare<br />
da ω ∈Ω X ω > c ∈ , pentru (∀) c ∈ R. .<br />
{ } K<br />
că ( )<br />
Proprietăţi<br />
Teorema 1. Fie X o variabilă aleatoare şi b un număr finit. Atunci:<br />
a) X + b<br />
b) b⋅ X<br />
c) X<br />
d) X 2<br />
1<br />
e) , pentru X ≠ 0<br />
X<br />
sunt de asemenea variabile aleatoare.
Anexă 235<br />
Teorema 2. Dacă X şi Y sunt două variabile aleatoare, atunci:<br />
a) X − Y<br />
b) X + Y<br />
c)<br />
X ⋅ Y<br />
X<br />
d) , pentru Y ≠ 0<br />
Y<br />
sunt variabile aleatoare.<br />
A.2.1. Funcţia de repartiţie<br />
Fie x ∈ R şi X o variabilă aleatoare. Not ăm F(x) = P( X ( ω)) < x ) (de fapt,<br />
F ( x)<br />
= P ω ∈R<br />
X ω < x . Funcţia F se numeşte funcţ<br />
ţie a<br />
( { ( ) } ) ia de reparti<br />
variabilei aleatoare X .<br />
Exemplu. Dacă X este o variabilă aleatoare discretă (ia numai un număr finit sau o<br />
infinitate numărabilă de valori), atunci<br />
funcţia de repartiţie este suma<br />
probabilităţilor<br />
valorilor lui X (ω) situate la stânga lui x.<br />
x 0 1 2 3 4<br />
p 0.2 0.3 0.1 0.3 0.1<br />
⎧0 x ≤ 0<br />
⎪<br />
⎪<br />
0.<br />
2<br />
0 < x ≤1<br />
⎪0.<br />
2 + 0.<br />
3<br />
F(<br />
x)<br />
= ⎨<br />
⎪0.<br />
2 + 0.<br />
3 + 0.<br />
1<br />
⎪0.<br />
2 + 0.<br />
3 + 0.<br />
1 + 0.<br />
3<br />
⎪<br />
⎩1<br />
1<<br />
x ≤ 2<br />
2 < x ≤ 3<br />
3 < x ≤ 4<br />
4 < x<br />
Deci, pentru variabila aleatoare discretă,<br />
F ( x)<br />
= P(<br />
X < x)<br />
= ∑ P(<br />
X = xi<br />
) .<br />
x < x<br />
Proprietăţi<br />
Teorema 3. Fie X o variabilă aleatoare, F funcţia sa de repartiţie şi x1, x2 ∈ R.<br />
Atunci:<br />
a) P( x1 ≤ X < x 2 ) = F( x 2 ) − F( x1 ) ;<br />
b) P( x1 < X < x2 ) = F( x2 ) − F( x1 ) − P( X = x1 ) ;<br />
c) P( x1 < X < x2 ) = F( x2 ) − F( x1 ) − P(X = x1 ) + P(X = x2 ) ;<br />
d) P( x1 ≤ X ≤ x2 ) = F( x2 ) − F( x1 ) + P(X = x2 ) .<br />
Teorema<br />
4. Fie X o variabilă aleatoare şi F funcţia sa de repartiţie. Atunci:<br />
i
236<br />
a) F( x 1 ) ≤ F( x 2 ) , x 1 < x 2 ;<br />
b) lim F(<br />
x)<br />
= F(<br />
+∞)<br />
= 1;<br />
lim F(<br />
x)<br />
= F(<br />
−∞)<br />
= 0 ;<br />
x→∞<br />
x→−∞<br />
c) F( x − 0) = F( x ) (continuitate la stânga).<br />
A.2.2. Densitate de repartiţie<br />
Modele şi algoritmi de optimizare<br />
Dacă există o funcţie nenegativă f( y ) astfel încât F ( x)<br />
∫ f ( y)<br />
dy ,<br />
−∞<br />
(∀)x∈R , atunci numim funcţia f densitate de repartiţie sau de probabilitate.<br />
Proprietăţi<br />
a)<br />
f ( x ) ≥ 0 , (∀) x ∈ R ;<br />
b) (∀) x1 , x2 ∈ R , P(x1<br />
c) ∫ x .<br />
∞<br />
f ( x)<br />
d =1<br />
−∞<br />
( ) I<br />
2<br />
≤ X < x ) = f ( x)<br />
dx ;<br />
2<br />
∫<br />
x<br />
x1<br />
A.2.3. Variabile aleatoare independente<br />
în sensul Steinhaus−Kaç<br />
Fie X α , I – familie oarecare de indici. Spunem că aceasta este o familie<br />
α∈<br />
independentă în sensul Steinhaus−Kaç dacă, (∀) J ⊂ I , J finită, avem:<br />
⎛ −1<br />
⎞<br />
−1<br />
P⎜I<br />
X α ( −∞,<br />
aα<br />
) ⎟ = ∏ P(<br />
X α ( −∞,<br />
aα<br />
) ) .<br />
⎝ x∈J<br />
⎠ α∈J<br />
Fie { , K , P}<br />
A.2.4. Valoare medie. Dispersie. Momente<br />
= x<br />
Ω un câmp de probabilitate şi X o variabilă aleatoare. Se<br />
numeşte media variabilei aleatoare X valoarea M [ X ] = ∫ X ( ω)<br />
dP . Dacă<br />
Ω<br />
variabila aleatoare este discretă, atu nci M [ X ] ai<br />
P(<br />
X = ai<br />
) . Dacă variabila<br />
= ∑<br />
i∈I<br />
aleatoare are densitatea de probabilitate f, atunci ∫ ∞<br />
M [ X[<br />
= xf ( x)<br />
dx .<br />
Proprietăţi<br />
Fie<br />
X , Y – variabile aleatoare, iar a, b – constante reale. Atunci:<br />
−∞
Anexă 237<br />
a) M[ a X + b] = aM[X] + b ;<br />
b) M[ X + Y] = M[X] + M[Y] ;<br />
c) M[ X ⋅ Y] = M[ X] ⋅ M[ Y] numai dacă X şi Y sunt independente.<br />
Dispersia unei variabile aleatoare X este<br />
[ ( [ ] ) ] [ ] ( [ ] ) 2<br />
2<br />
2<br />
X − M X = M X M<br />
2<br />
D X ] M<br />
−<br />
[ = X .<br />
Proprietăţi<br />
Fie X , Y – variabile aleatoare independente, iar a, b – constante reale. Atunci:<br />
) D[ a X + b] = a 2 a<br />
D[X] ;<br />
b)<br />
D[ X + Y] = D[X] + D[Y] .<br />
2<br />
Abaterea<br />
medie pătratică se defineşte ca fiind σ [ X ] = D [ X ] .<br />
Momentul de ordinul r (r>1) al unei variabile aleatoare este<br />
dacă X are densitatea de probabilitate f.<br />
r<br />
r<br />
M r [ X ] = ∫ X ( ω ) dP(<br />
ω)<br />
= ∫ x f ( x)<br />
dx<br />
∞<br />
−∞<br />
A.3. Câteva repartiţii clasice<br />
A.3.1. Repartiţia uniformă<br />
O variabilă aleatoare X urmează repartiţia uniformă<br />
pe intervalul [a,b] dacă<br />
are densitatea de probabilitate<br />
⎧ 1<br />
⎪ dacã<br />
x∈<br />
[ a,b]<br />
f ( x)<br />
= ⎨b<br />
− a<br />
⎪⎩ 0 altfel .<br />
Funcţia sa de repartiţie este<br />
x<br />
x − a<br />
F(<br />
x)<br />
= ∫ ρ ( t)<br />
dt = , ( ∀)<br />
x∈[<br />
a,<br />
b ] .<br />
b − a<br />
a<br />
Pentru variabila aleatoare uniformă X media şi dispersia sunt<br />
1<br />
2 1<br />
2<br />
M [ X ] = ( a + b)<br />
, D [ X ] = ( b − a)<br />
.<br />
2<br />
12<br />
A.3.2. Repartiţii Markov
238<br />
Modele şi algoritmi de optimizare<br />
În modelele de aşteptare intervin repartiţia Poisson pentru modelarea sosirilor<br />
în sistem şi repartiţia exponenţială pentru modelarea timpilor de servire. Cele două<br />
repartiţii, prima discretă şi cea de-a doua continuă, sunt repartiţii<br />
complementare.<br />
Ambele sunt numite repartiţii<br />
Markov.<br />
Repartiţia<br />
Poisson<br />
O variabilă aleatoare discretă X urmăreşte repartiţia Poisson de parametru<br />
λ<br />
dacă n<br />
λ −λ<br />
P(<br />
X = n)<br />
= f ( n)<br />
= e ,<br />
n!<br />
unde λ>0 , iar n=0, 1, 2, ... Pentru acest tip de variabilă aleatoare<br />
M[X]= λ şi<br />
2<br />
D [X]= λ..<br />
Repartiţia exponenţială<br />
O variabilă aleatoare are repartiţia exponenţială dacă are densitatea de<br />
probabilitate<br />
iar funcţia de repartiţie este<br />
Dacă Y a Exp(λ)<br />
, atunci<br />
f ( t)<br />
=<br />
e<br />
−<br />
λ λxt<br />
, t ≥ 0,<br />
λ > 0 ,<br />
−λt<br />
F(<br />
t)<br />
= 1 − e , t ≥ 0<br />
1<br />
M [ Y ] = , iar<br />
λ<br />
.<br />
2<br />
2 ⎛ 1 ⎞<br />
D Y ] .<br />
[ = ⎜ ⎟<br />
⎝ λ ⎠<br />
Repartiţia Erlang(λ,n)<br />
Fie Y1, Y2,..., Yn , n variabile aleatoare repartizate Exp(λ) şi independente, iar<br />
n<br />
∑<br />
X = Y . Variabila aleatoare X este repartizată<br />
Erlang(λ,n) şi are densitatea de<br />
i= 1<br />
repartiţie<br />
i<br />
n<br />
λ n−1<br />
−λx<br />
f ( x)<br />
= x e ,<br />
Γ(<br />
n)<br />
iar Γ este funcţia gama (funcţia lui Euler de speţa a II-a)<br />
Γ<br />
∞<br />
a−1<br />
−x<br />
( a)<br />
= ∫ x e dx<br />
0<br />
3<br />
n<br />
2 n<br />
Dacă X a Erlang(λ)<br />
atunci M [ X ] = , iar D [ X ] = . 2<br />
λ<br />
λ<br />
A.3.3. Repartiţia normală unidimensională a lui Gauss<br />
.
Anexă 239<br />
O variabilă aleatoare<br />
X urmează repartiţia normală dacă are densitatea de<br />
probabilitate<br />
1<br />
f ( x)<br />
= e<br />
σ 2π<br />
iar funcţia de repartiţie<br />
2<br />
( x−µ<br />
)<br />
−<br />
2<br />
2σ<br />
( ∀)<br />
x ∈(<br />
− ∞,<br />
∞)<br />
2<br />
x ( t−<br />
µ )<br />
−<br />
2<br />
2σ<br />
∫ e<br />
−∞<br />
1<br />
F(<br />
x)<br />
=<br />
dt ,<br />
σ 2π<br />
2<br />
unde M[X]=µ, iar D 2 [X]=σ . Când µ=0 şi σ=1 , variabila X se numeşte variabilă<br />
aleatoare normală standard (sau redusă), iar pentru aceasta F(x) este tabelată.<br />
A.3.4. Repartiţia Beta<br />
O variabilă aleatoare X urmează repartiţia Beta de parametri a şi b dacă are<br />
densitatea<br />
de repartiţie<br />
⎧ 1 −1<br />
( ∀)<br />
a−1<br />
b<br />
⎪ x ( 1 − x)<br />
x ∈(<br />
0,<br />
1)<br />
f ( x)<br />
= ⎨ B(<br />
a,<br />
b)<br />
,<br />
⎪<br />
⎩0<br />
altfel<br />
unde B(a,b) este funcţia beta (funcţia lui Euler de speţa I)<br />
Γ(<br />
a)<br />
Γ(<br />
b)<br />
B ( a,<br />
b)<br />
= , a > 0 , b > 0 .<br />
Γ(<br />
a + b)<br />
Pentru o variabilă aleatoare de acest tip,<br />
Fie { , K , P}<br />
a<br />
M[<br />
X ] = şi<br />
a + b<br />
2 ⎛ a ⎞ 1<br />
D [ X ] = ⎜ ⎟ .<br />
⎝ a + b ⎠ a + b + 1<br />
A.4. Procese aleatoare<br />
Ω un câmp de probabilitate şi<br />
E = { X : Ω → R X variabilã<br />
aleatoare}<br />
,<br />
T o mulţime oarecare de numere reale. Se numeşte proces aleatoriu sau proces<br />
stochastic cu mulţimea de parametri T o aplicaţie ξ : T → E .<br />
Considerăm că variabilele din E descriu starea unui anumit sistem, iar<br />
mulţimea T reprezintă timpul. Astfel, un proces aleatoriu reflectă evoluţia în timp a<br />
unui real sistem dat. Dacă mulţimea T este finită, procesul aleatoriu este echivalent<br />
cu un vector aleatoriu. Frecvent T=R, T=[0, ∞) sau T=[0, 1] şi se spune că<br />
procesul aleatoriu este cu timp continuu. Dacă T=Z sau T=N termenul de<br />
proces aleator se înlocuieşte cu cel de lanţ.<br />
2<br />
,
240<br />
Modele şi algoritmi de optimizare<br />
După cum o variabilă aleatoare se consideră determinată din punct de vedere<br />
probabilistic atunci când i se cunoaşte funcţia de repartiţie, pentru definirea unui<br />
proces aleatoriu ar trebui<br />
cunoscute toate funcţiile de repartiţie finit dimensionale,<br />
adică ( ∀ ) n∈ N , ( ∀ ) t1 , t 2 , ... , tn<br />
∈T<br />
şi ( ∀ ) x1, x2<br />
, ... , xn ∈ R trebuie<br />
să fie<br />
cunoscute probabilităţile<br />
x , x , ..., x ) = P ω ξ ( ω)<br />
< x , ξ ( ω)<br />
< x ,..., ξ ( ω)<br />
< x .<br />
( { } )<br />
Ft1 , t2<br />
,..., t ( n 1 2 n<br />
t1<br />
1 t2<br />
2 tn<br />
În cele ce urmează vom presupune că intervalul de interes<br />
este în timp.<br />
Un proces aleatoriu ξ se numeşte proces Markov dacă pentru ∀ n∈<br />
,<br />
( ∀ ) t1, t 2 , ... , tn<br />
∈T<br />
, t < t2<br />
< ... < t n<br />
1 şi ( ) ∈R<br />
∀ a are loc relaţia<br />
n<br />
( ) N<br />
P ({ ξ ( t) ∈ B ξ ( t1),<br />
ξ ( t 2 ),..., ξ ( t n )}) = P({<br />
ξ ( t)<br />
∈ B ξ ( tn<br />
) }) ,<br />
unde<br />
B = ( − ∞,<br />
a)<br />
, sau ( − ∞,<br />
a]<br />
, sau ( a,<br />
−∞)<br />
, sau [ a,<br />
−∞)<br />
. .<br />
Din această definiţie rezultă că procesul dinamic descris de procesul Markov<br />
are o evoluţie în viitor care depinde numai de starea precedentă şi nu de ceea ce s-a<br />
petrecut cu el la momentele t 1 , t2<br />
, ..., tn<br />
−1<br />
.<br />
Un proces aleatoriu ξ : [ 0,<br />
∞)<br />
→ E se numeşte<br />
cu creşteri independente dacă<br />
pentru ( ∀ ) n∈ N şi ( ∀) t 1,<br />
t2<br />
, ... , t n ≥ 0 cu proprietatea că t 1 < t2<br />
< ... < t n ,<br />
variabilele aleatoare ξ ( t1)<br />
, ξ ( t 2 ) − ξ ( t1)<br />
, ξ ( t3 ) − ξ ( t2<br />
) ,..., ξ ( t n ) − ξ ( tn<br />
−1)<br />
sunt<br />
independente.<br />
Un proces aleatoriu cu creşteri independente şi satisfăcând condiţia ξ(0)=0 se<br />
numeşte proces Poisson dacă ia numai valori întregi nenegative şi dacă pe orice<br />
interval [s,t] , creşterile sale urmează repartiţii Poisson de parametru λ ( t − s)<br />
, adică<br />
( ξ t)<br />
− ξ ( s)<br />
= n)<br />
[ λ(<br />
t − s]<br />
n<br />
( =<br />
−λ<br />
( t−<br />
s)<br />
,<br />
*<br />
n∈<br />
N<br />
( ∀)<br />
P<br />
e<br />
.<br />
n!<br />
Se poate considera că ξ (t)<br />
înregistrează numărul de apariţii ale unui<br />
eveniment în intervalul de timp [0, t] .<br />
2<br />
Media şi dispersia procesului Poisson sunt M[ ξ ( t)]<br />
= λt<br />
, D [ ξ ( t)]<br />
= λt<br />
.<br />
Într-un proces Poisson probabilitatea apariţiei unui eveniment este constantă şi<br />
apariţia unui eveniment este independentă de ceea ce s-a întâmplat<br />
imediat înaintea<br />
observaţiei curente. Pot fi considerate procese Poisson: numărul erorilor de tipar<br />
dintr-o carte, ziar etc., numărul pieselor defecte dintr-un lot de fabricaţie, vânzările<br />
unui produs etc. Repartiţia probabilităţii Poisson<br />
aplicată procesului Poisson dă<br />
probabilitatea numărului de evenimente pe un interval, [0, t] , date fiind:<br />
a) numărul mediu de evenimente pe unitatea de timp, λ=rata sau intensitatea<br />
procesului,<br />
b) lungimea intervalului, t .<br />
Atunci, probabilitatea apariţiei a n evenimente în intervalul [0, t] este<br />
−λt<br />
n<br />
e ( tλ)<br />
P(<br />
X = n λ,<br />
t)<br />
= .<br />
n!
Anexă 241<br />
Notăm m = λt<br />
şi atunci m este numărul de evenimente care s-ar produce în<br />
intervalul [ 0 , t]<br />
.<br />
Într-un proces Poisson este interesant de cunoscut intervalul de timp dintre<br />
două evenimente succesive. Vrem să ştim care este repartiţia de probabilitate<br />
pentru aceste intervale. Aceasta este repartiţia exponenţială.<br />
−m<br />
Pentru m de mai sus P(<br />
Y > t)<br />
= e reprezintă probabilitatea ca timpul<br />
dintre<br />
două evenimente să fie mai mare ca t este e ba litatea ca să nu apară<br />
ici un eveniment în intervalul [0,t] . Astfel, repartiţia Poisson pentru evenimentele<br />
petrecute pe unitatea de timp şi repartiţia exponenţială a intervalului dintre două<br />
astfel de evenimente sunt două modalităţi alternative de a descrie acelaşi lucru. Se<br />
poate spune că numărul de evenimente pe unitatea de timp este repartizat Poisson<br />
cu media λ pe unitatea de timp, sau că intervalul dintre două evenimente este<br />
exponenţial cu media<br />
-m , adică pro bi<br />
n<br />
1<br />
µ = unităţi de timp.<br />
λ<br />
A.5. Teste de concordanţă<br />
În practică apare necesitatea comparării a două procese tehnologice diferite, a<br />
două metode de cercetare diferite etc. Este necesar să se cunoască dacă metodele<br />
comparate dau rezultate identice, iar dacă nu, care este mai eficace.<br />
În statistică o diferenţă<br />
semnificativă este aceea care nu poate fi pusă pe seama<br />
întâmplării la un anumit nivel de probabilitate sau de încredere. De exemplu, cu cât<br />
este mai mică diferenţa dintre do uă medii, cu atât este mai mare probabilitatea ca<br />
ele să aparţină unei selecţii extrase din aceeaşi colectivitate de bază.<br />
Se numeşte ipoteză statistică orice presupunere cu privire la caracteristicile<br />
unei variabile aleatoare, faţă de legea ei de repartitie sau faţă<br />
de parametrii ce o<br />
determină (Mihăilă şi Popescu,<br />
1978).<br />
Mijloacele de verificare a ipotezelor statistice se numesc teste statistice. Când<br />
ipoteza se referă la natura repartiţiei, de exemplu afirmaţia că „o variabilă empirică<br />
are o anumită repartiţie teoretică”, testul se numeşte test de concordanţă.<br />
Afirmaţia H0 : „o variabilă empirică are o anumită repartiţie teoretică” este<br />
numită ipoteza H0 , iar ipoteza alternativă: H1 : „variabila empirică poate avea<br />
oricare altă repartiţie”.<br />
Testul pentru verificarea ipotezei nule dă o regulă de descompunere a spaţiului<br />
n n<br />
R1 , R0 n-dimensional al selecţiilor R n (n este volumul selecţiei) în două regiuni<br />
n<br />
n<br />
n<br />
cu R1 R0<br />
şi astfel încât da valorile observate<br />
∈ se acceptă ipoteza H0 , iar dacă se<br />
∪ = R φ =<br />
n<br />
∩ n<br />
R1 R0<br />
, că<br />
(<br />
X 1 , X 2 ,..., X<br />
n<br />
) R1<br />
( X 1 , X 2 ,..., X<br />
n<br />
) ∈ R0<br />
n<br />
n
242<br />
Modele şi algoritmi de optimizare<br />
n<br />
respinge ipoteza H0 . R0 se numeşte domeniul critic sau regiunea critică a<br />
testului.<br />
Probabilităţile<br />
P R H ) P(<br />
resping H când H este<br />
n<br />
α = =<br />
adevărată)<br />
β =<br />
( 0 0<br />
0<br />
0<br />
P n<br />
( R1<br />
H1)<br />
= P(<br />
accept H 0 când H 0 este falsã)<br />
se numesc riscul de genul întâi şi respectiv riscul de genul al doilea. α se mai<br />
numeşte şi prag de semnificaţie şi de obicei se ia α=0.05 .<br />
A.5.1. Etapele verificării ipotezelor statistice<br />
1. Enunţarea ipotezei;<br />
2.<br />
Se specifică α şi β . Pe baza acestora se va determina numărul de observaţii<br />
care<br />
trebuie făcute pentru a calcula statistica aleasă;<br />
3.<br />
Se determină care valori ale unei anumite statistici, valori ce formează regiunea<br />
critică,<br />
determină respingerea ipotezei şi care determină acceptarea ipotezei;<br />
4. Se calculează valoarea statisticii de selecţie;<br />
5. Se acceptă sau nu ipoteza, după cum valoarea obţinută pentru statistică este în<br />
afara sau în interiorul regiunii critice.<br />
Concordanţa dintre repartiţia empirică şi cea teoretică se stabileşte cu ajutorul<br />
unui test de concordanţă.<br />
Se pune problema racordării unei variabile empirice X la o variabilă teoretică X,<br />
, , ⎟ e<br />
⎛ x x L x n<br />
1 2<br />
n ⎞<br />
⎛ x ⎞<br />
X e = ⎜<br />
⎟ ∑ N i = N X = ⎜ ,<br />
⎝ N1<br />
N 2 L N n ⎠ i=1<br />
⎝ ρ(x)<br />
⎠<br />
adică se cercetează dacă şirul numeric al frecvenţelor absolute empirice Ni reflectă<br />
legitatea ipotetică a variabilei aleatoare teoretice. Răspunsul respectiv este util în<br />
aprecierea caracteristicilor variabilei empirice prin prisma legităţii variabilei<br />
teoretice.<br />
Rezolvarea acestei probleme se face în următoarele etape :<br />
1. Estimarea parametrilor ţinând seama de semnificaţia pe care ar putea să o aibă în<br />
legătură cu caracteristicile repartiţiei teoretice;<br />
2. Se construieşte variabila pseudoteoretică:<br />
⎛ x x L x n<br />
~ 1 2<br />
n ⎞<br />
X = ⎜<br />
⎟ ,<br />
⎝ ′ ′ ′ ∑ N ′ i = N<br />
N1<br />
N 2 L N n ⎠ i=1<br />
făcându-se astfel legătura între variabila empirică X e şi cea teoretică X.<br />
Determinarea frecvenţelor absolute N ′ i , ( ∀)<br />
i = 1,<br />
n se face cu ajutorul funcţiei<br />
N ′ i<br />
de probabilitate f ( xi<br />
) = ⇒ N ′ i = Nf ( xi<br />
) , ( ∀)<br />
i = 1,<br />
n .<br />
N
Anexă 243<br />
3. Verificarea concordanţei dintre repartiţia empirică şi cea teoretică, adică se<br />
stabileşte dacă diferenţele dintre<br />
N i − N ′ i , ( ∀)<br />
i = 1,<br />
n , sunt datorate întâmplării,<br />
adică<br />
nu sunt semnificative, sau diferenţele sunt semnificative şi atunci există o<br />
neconcordanţă<br />
între repartiţia teoretică şi cea empirică.<br />
2<br />
A.5.2. Testul de co ncordanţă χ<br />
Acest test este datorat lui K. Pearson care a arătat că, în cazul unui sondaj<br />
nonexhaustiv în populaţia chestionată, când probabilităţile p i nu sunt aproape de 0<br />
sau 1, iar produsele N ′ i = Npi<br />
, unde = f ( x ) , ( ∀)<br />
i = 1,<br />
n , calculate după<br />
pi i<br />
estimarea parametrilor, nu sunt prea mici ( N > 5 ), atunci<br />
′i<br />
χ<br />
2<br />
c<br />
=<br />
( − ′ ) N N<br />
n<br />
2<br />
i i<br />
∑<br />
i= 1 N ′ i<br />
2<br />
are repartiţia χ ν cu ν = n −1<br />
− k , n fiind numărul de valori observate, iar k ,<br />
num ărul parametrilor estimaţi (Văduva, 1977).<br />
Observaţie.<br />
Numărul gradelor de libertate este strâns legat de cantitatea de informaţie<br />
de care se dispune în cercetarea care se efectuează. Ea se reflectă în volumul n, de<br />
date experimentale, n-1 informaţii sunt independente, deoarece ∑ N i = N<br />
n<br />
i=1<br />
mai pierde informaţie pentru determinarea celor k parametri estimaţi.<br />
Pentru ν < 30 şi α da i se determină<br />
2<br />
din tabela repartiţiei<br />
χ > n−1−<br />
k , α =<br />
P ) şi dacă<br />
2 2<br />
( ( χ ) α<br />
2 2<br />
χ c χ n−1−<br />
k , α<br />
ţ χ n−1− k , α<br />
2 2<br />
χ c χ n−1−<br />
k , α<br />
, şi se<br />
2<br />
χ ,<br />
< , atunci există concordanţă, iar dacă<br />
≥ nu există concordanţă între cele două repartiţii.<br />
A.5.3. Testul Kolmogorov<br />
Acest test de concordanţă are la bază următoarea teoremă:<br />
Teorema lui Kolmogorov (Văduva, 1977). Fie X o variabilă aleatoare a cărei<br />
funcţie de repartiţie F(x) este continuă şi X1, X 2, ..., X n o selecţie efectuată asupra<br />
sa. Fie Fn(x) funcţia de repartiţie empirică (sau de selecţie) asociată selecţiei<br />
num rul<br />
date,<br />
adică Fn x<br />
valorilor<br />
n<br />
lui X i x ≤<br />
ã<br />
( ) =<br />
. Atunci<br />
⎛<br />
lim P⎜<br />
max Fn<br />
( x)<br />
− F(<br />
x)<br />
<<br />
n←∞<br />
⎜<br />
⎝<br />
∞ u ⎞<br />
2 2<br />
k −2u<br />
k<br />
⎟ = ∑ ( −1)<br />
e = K(<br />
u)<br />
.<br />
n ⎠ −∞
244<br />
Modele şi algoritmi de optimizare<br />
Funcţia K(u) se numeşte funcţia lui Kolmogorov şi există tabele cu cuantilele ei.<br />
Algoritm pentru aplicarea testului Kolmogorov (Văduva, 1977)<br />
Pa s 1. Se formulează ipoteza H0: „Variabila aleatoare X are funcţia de repartiţie<br />
F(x)”;<br />
Pas 2. Se fixează un prag de semnificaţie α (de exemplu, α=0.05 , α=0.01 ,<br />
α= 0.025);<br />
Pas 3. Se determină u , din tabelele funcţiei K(u) , astfel K (u ) =1 α ;<br />
α α −<br />
Pas 4. Se ordonează crescător X ( 1)<br />
≤ X ( 2)<br />
≤ ... X ( n)<br />
;<br />
Pas 5. Se calculează<br />
Pas 6. Se determină d = max d i ;<br />
Pas 7. Dacă<br />
( ∀)<br />
i = 1,<br />
n<br />
d i = Fn<br />
( X ( i)<br />
) − F(<br />
X i ) , ;<br />
1≥i≤<br />
n<br />
uα<br />
d < , se acceptă ipoteza H0 , altfel se respinge. Stop!<br />
n
BIBLIOGRAFIE<br />
Anderson, D. R. , Sweeney, D. J., Williams, Th. A. An Introduction to<br />
Management Science. Quantitative Approaches to Decision Making, ediţia a<br />
7−a. West Publishing Company, 1997.<br />
Anderson, D. R. , Sweeney, D. J. , Williams,<br />
Th. A., Joseph, D. A. The<br />
Management Scientist, ediţia a 7−a. West Publishing Company, 1998.<br />
Bergounioux, M. Optimization et Co ntrôle des systèmes<br />
linéaires. Ed. Dunod,<br />
2001.<br />
Bonini, C. P. , Hausman, W. H., Bierman, H. Jr. Quantitative Analysis for<br />
Management, ediţia a 9−a. Irwin McGraw−Hill, 1997.<br />
Cohen, G. Convexite et optimisation, ENPC, Paris,<br />
2000<br />
Cohen, V. La Recherche Opérationnelle.<br />
Presses Universitaires de France, 1995.<br />
Dragomirescu,<br />
M., Maliţa, M. Programare pătratică. Editura Ştiinţifică,<br />
Bucureşti,<br />
1968.<br />
Fletcher, R. Practical Methods of Optimization,<br />
vol. 1 – Unconstrained<br />
Optimization şi vol. 2 – Constrained Optimization.<br />
John Wiley & Sons, 1981.<br />
Fuente, Angel de la. Mathematical Methods<br />
and Models for Economists,<br />
Cambridge University Press, 2000.<br />
Henry-Labordere, A. Recherche Operationnelle. Presses de l’École Nationale des<br />
Ponts et Chaussées, 1995.<br />
Hsiao, J. C., Cleaver, D.S. Management Science.<br />
Houghton Mifflin Company,<br />
1982.<br />
Io nescu, H., Dinescu, C., Săvulescu, B. Probleme<br />
ale cercetării operaţionale.<br />
Editura Didactică şi Pedagogică, Bucureşti,<br />
1972.<br />
K aufmann, A. Metode şi modele ale cercetării<br />
operaţionale, vol. I, II. Editura<br />
Ştiinţifică, Bucureşti, 1967.<br />
Lee, A. M. Teoria aşteptării cu aplicaţii. Editura<br />
Tehnică, Bucureşti , 1976.<br />
Lange, O. Decizii optimale − Bazele programării.<br />
Editura Ştiinţifică, Bucureşti,<br />
1970.<br />
Luenberger, D. G. Linear and Nonlinear Programming.<br />
Addison−Wesley, 1989.<br />
Maliţa, M., Zidăroiu, C. Matematica<br />
organizării. Editura Tehnică, Bucureşti,<br />
1971.<br />
Mihăilă, N., Popescu, O. Matematici speciale<br />
aplicate în economie, Editura<br />
Didactică şi Pedagogică, Bucureşti, 1978.<br />
Popescu, O şi colectiv. Matematici aplicate în economie, Editura Didactică şi<br />
Pedagogică, Bucureşti, 1997.<br />
Popescu, O şi colectiv. Matematici a plicate în economie Culegere de probleme,<br />
Editura Didactică şi Pedagogică, Bucureşti,<br />
1996.<br />
Preda, V şi Bad, M. Culegere de probleme<br />
de Cercetări Operaţionale, Tipografia<br />
Universităţii din Bucureşti, 1978.
246<br />
Modele şi algoritmi de optimizare<br />
Turban, E., Meredith, J. R. Fundamentals of Management Science, Ediţia a 4−a.<br />
Irwin, 1998.<br />
Ştefănescu, A. Curs de Cercetări Operaţionale, Tipografia Universităţii din<br />
Bucureşti, 1989.<br />
Văduva, I. Modele de simulare cu calculatorul.<br />
Editura Tehnică, Bucureşti, 1977.<br />
Vă duva, I., Dinescu, C., Săvulescu, B. Modele<br />
matematice ale organizării şi<br />
conducerii producţiei, vol. I, II. Editura Didactică<br />
şi Pedagogică, Bucureşti,<br />
1974.<br />
Vrănceanu, Gh. Gh., Mititelu, Şt. Probleme de cercetare<br />
operaţională. Editura<br />
Tehnică, Bucureşti , 1983.<br />
Zidăroiu, C. Programare dinamică discretă. Editura<br />
Tehnică, Bucureşti , 1975.<br />
Zi dăroiu, C. Programare liniară. Editura Tehnică,<br />
Bucureşti<br />
, 1983.
abaterea medie pătratică ........................... 235<br />
algoritmul<br />
de transport .......................................... 104<br />
Dijkstra .................................................. 25<br />
Kruskal .................................................. 21<br />
lui Prim .................................................. 23<br />
simplex .................................................. 61<br />
simplex dual........................................... 88<br />
simplex revizuit ..................................... 63<br />
Wolfe................................................... 125<br />
alternativă ................................................... 13<br />
analiza<br />
convergenţei<br />
globale .............................................. 16<br />
locale................................................. 16<br />
marginală<br />
............................................. 215<br />
prospectivă...... ..................................... 142<br />
retrospectivă..... .................................... 142<br />
sensibilităţii............................................<br />
68<br />
arbore..........................................................<br />
20<br />
de acoperire de lungime minimă............ 20<br />
arborescenţă...............................................<br />
18<br />
arc<br />
al grafului............................................... 17<br />
incident .................................................. 18<br />
bază<br />
dual admisibilă....................................... 83<br />
primal admisibilă ................................... 83<br />
Bellman, principiul.....................<br />
15, 141, 150<br />
Bland, regula lui ......................................... 72<br />
câmp<br />
complet aditiv................................... 231<br />
capacitatea<br />
sistemului de aşteptare ........... 159<br />
câştigul<br />
parţial................................................... 143<br />
total...................................................... 143<br />
celulă ........................................................ 102<br />
cerere ........................................................ 192<br />
ciclare<br />
......................................................... 71<br />
ciclu<br />
.......................................................... 102<br />
de reaprovizionare ............................... 194<br />
eulerian .................................................. 20<br />
hamiltonian ............................................ 20<br />
ciclu<br />
într-un graf......................................... 20<br />
circuit.......................................................... 18<br />
eulerian .................................................. 20<br />
hamiltonian ............................................ 20<br />
clienţi<br />
........................................................ 159<br />
IN<strong>DE</strong>X ALFABETIC coeficienţi<br />
de cost redus...................................59, 106<br />
coeficienţii funcţiei obiectiv .................62, 93<br />
condiţia de balansare...................................52<br />
condiţiile<br />
de nenegativitate ....................................50<br />
Kuhn-Tucker..................................49, 125<br />
conul<br />
direcţiilor admisibile ..............................48<br />
tangent....................................................48<br />
costul<br />
de<br />
depozitare.............................................193<br />
lansare ..........................................193, 197<br />
stocare ..................................................197<br />
costul<br />
lipsei de stoc...........................193, 203<br />
costul total.................................................198<br />
costul unitar<br />
al subestimării.......................................220<br />
al supraestimării...................................220<br />
de fabricaţie..........................................208<br />
de transport ............................................53<br />
costuri reduse..............................................67<br />
criteriu<br />
de<br />
ieşire din bază ..........................61, 90, 107<br />
intrare în bază...........................61, 90, 106<br />
cuantila<br />
inferioară .....................................218<br />
cuplu<br />
de probleme duale .............................82<br />
asimetrice...............................................83<br />
simetrice.................................................83<br />
degenerare...................................................72<br />
densitate de repartiţie................................234<br />
diagrama<br />
activităţilor ..................................30<br />
direcţie<br />
admisibilă.......................................48<br />
disciplina de serviciu ................................160<br />
dispersia variabilei aleatoare.....................235<br />
domeniul de admisibilitate........................142<br />
drum............................................................17<br />
critic .......................................................30<br />
eulerian<br />
..................................................20<br />
hamiltonian ............................................20<br />
ecuaţiile<br />
de recurenţă..........................................146<br />
Kolmogorov−Feller..............................161 ecuaţiilor de stare......................................180<br />
evenimentul<br />
imposibil<br />
..............................................231<br />
sigur .....................................................231
248<br />
factor<br />
de serviciu ...................................... 164<br />
FIFO<br />
......................................................... 159<br />
fluxul intrărilor în sistemul de aşteptare ... 159<br />
formă<br />
pătratică<br />
negativ definită .................................... 122<br />
negativ semidefinită............................. 122<br />
pozitiv definită..................................... 122<br />
pozitiv semidefinită ............................. 122<br />
funcţia lui Kolmogorov ............................ 242<br />
funcţie<br />
beta ...................................................... 237<br />
convexă.................................................. 43<br />
de repartiţie.......................................... 233<br />
decompozabilă<br />
prospectiv........................................ 143<br />
retrospectiv ..................................... 143<br />
gama .................................................... 236<br />
obiectiv .................................................. 14<br />
pozitiv semidefinită ............................... 43<br />
strict concavă ......................................... 44<br />
strict convexă......................................... 43<br />
grad<br />
exterior................................................... 18<br />
interior ................................................... 18<br />
graf<br />
complet .................................................. 19<br />
neorientat ............................................... 19<br />
orientat................................................... 17<br />
parţial..................................................... 18<br />
ponderat ................................................. 19<br />
simetric .................................................. 19<br />
simplu conex.......................................... 20<br />
tare conex............................................... 18<br />
indice de lipsă de stoc............................... 205<br />
înfăşurătoarea convexă ............................... 42<br />
intensitate de trafic ................................... 164<br />
intensitatea de trafic.................................. 175<br />
intensitatea optimă de încărcare a stocului223<br />
intensitatea procesului .............................. 238<br />
intensităţi de deces.................................... 161<br />
intensităţi de natalitate.............................. 161<br />
intervalul de control.................................. 195<br />
inventar ..................................................... 193<br />
ipoteză<br />
alternativă ............................................ 239<br />
statistică ............................................... 239<br />
lagrangean .................................................. 46<br />
lanţ.............................................................. 19<br />
eulerian .................................................. 20<br />
hamiltonian ............................................ 20<br />
lege de evoluţie......................................... 142<br />
lema<br />
Farkas-Minkowski ................................. 48<br />
substituţiei.............................................. 87<br />
lot de reaprovizionare ............................... 194<br />
Modele şi algoritmi de optimizare<br />
lungimea cozii...........................................159<br />
lungimea<br />
maximă a cozii ..........................160<br />
lungimea<br />
medie a cozii .............163, 170, 175<br />
mărimea<br />
optimă a comenzii de<br />
reaprovizionare ....................................199<br />
marja ...... .....................................................32<br />
matrice<br />
triunghiulară..................................102<br />
maxim<br />
global .....................................................45<br />
local.... ....................................................45<br />
mecanismul<br />
reaprovizionării....................................194<br />
serviciului.............................................159<br />
media variabilei aleatoare .........................234<br />
metoda<br />
celor două faze .......................................76<br />
colţului nord-vest .................................107<br />
costului minim .....................................108<br />
PERT......................................................29<br />
model ....................................................11, 12<br />
de aşteptare ....................................15, 159<br />
de stocare ...............................................15<br />
modelare......................................................11<br />
modele de<br />
simulare................................................183<br />
modele de stocare<br />
cu cerere<br />
continuă...........................................195<br />
discretă ............................................195<br />
cu mai multe staţii................................195<br />
cu staţie ................................................195<br />
deterministe..........................................195<br />
dinamice...............................................195<br />
statice ...................................................195<br />
stochastice............................................195<br />
momentul lansării comenzii......................195<br />
muchiile grafului.........................................19<br />
mulţime convexă.........................................42<br />
multiplicatorii<br />
lui Lagrange ...........................................48<br />
simplex.................................................104<br />
nivel de reaprovizionare............................195<br />
nivelul mediu al stocului...........................199<br />
nod<br />
ascendent................................................18<br />
descendent..............................................18<br />
precedent................................................18<br />
succesor..................................................18<br />
nodurile grafului .........................................17<br />
numărul de clienţi din sistem ....................159<br />
numărul de staţii de serviciu .....................160<br />
numărul mediu al clienţilor de la coadă ....165<br />
numărul mediu de clienţi de la coadă........181<br />
numărul mediu de clienţi din sistem 162, 165,<br />
.....................................................169, 181
Index alfabetic 249<br />
numărul mediu de clienţi serviţi la un<br />
moment dat .......................................... 169<br />
numărul mediu de servicii ........................ 176<br />
numărul mediu de staţii de servire care<br />
lenevesc ............................................... 177<br />
numărul mediu de staţii în lucru ............... 181<br />
numărul mediu de staţii neocupate ........... 163<br />
obiectiv....................................................... 13<br />
optimizare............................................. 13, 14<br />
pivot............................................................ 62<br />
poligonul soluţiilor.................................... 74<br />
politică ...................................................... 141<br />
de reaprovizionare ............................... 195<br />
optimă.................................................. 144<br />
pondere ....................................................... 20<br />
ponderea arcelor ......................................... 19<br />
prag de semnificaţie.................................. 240<br />
preţ dual...................................................... 68<br />
preţ umbră ................................................... 91<br />
probabilitate.............................................. 231<br />
problemă<br />
de decizii.............................................. 142<br />
cu orizont finit................................. 141<br />
cu orizont infinit ............................. 141<br />
de programare<br />
convexă............................................. 44<br />
liniară................................................ 15<br />
pătratică .................................... 15, 124<br />
forma canonică........................... 124<br />
forma standard ........................... 126<br />
duală ...................................................... 81<br />
nedegenerată .......................................... 72<br />
primală................................................... 81<br />
probleme de stoc<br />
aprovizionare ....................................... 192<br />
producţie............................................... 193<br />
proces<br />
aleatoriu ............................................... 237<br />
cu creşteri independente ...................... 238<br />
Markov ................................................ 238<br />
Poisson................................................. 238<br />
stochastic ...................... v. proces aleatoriu<br />
proces de naştere şi deces ......................... 160<br />
program<br />
de bază................................................... 57<br />
de transport ............................................ 52<br />
degenerat................................................ 71<br />
optim...................................................... 57<br />
program liniar ............................................. 51<br />
forma canonică ....................................... 55<br />
forma standard ....................................... 55<br />
programare........................... 14, v. optimizare<br />
cu restricţii ............................................. 14<br />
dinamică ................................................ 15<br />
fară restricţii........................................... 14<br />
punct admisibil............................................15<br />
punct de extrem...........................................43<br />
punct regulat ...............................................47<br />
rata<br />
cererii ...................................................193<br />
ieşirilor.................................................193<br />
intrărilor ...............................................193<br />
regiunea admisibilă.....................................15<br />
regiunea critică a testului ..........................240<br />
regula dreptunghiului..................................62<br />
repartiţia<br />
Beta................................................34, 237<br />
Erlang...........................................218, 236<br />
exponenţială .................................164, 236<br />
normală ................................................237<br />
Poisson.................................................236<br />
uniformă...............................................235<br />
repartiţii Markov.......................................236<br />
restricţie<br />
activă......................................................46<br />
inactivă...................................................46<br />
restricţii.......................................................13<br />
riscul de genul<br />
al doilea................................................240<br />
întâi ......................................................240<br />
rotunjirea rezultatelor................................202<br />
simulare probabilistă.................................184<br />
soluţie<br />
admisibilă.........................................15, 56<br />
de bază ...................................................56<br />
degenerată ..............................................56<br />
globală....................................................45<br />
locală......................................................45<br />
nedegenerată ..........................................56<br />
optimă ..............................................15, 57<br />
starea<br />
finală ....................................................142<br />
iniţială ..................................................142<br />
staţie de servire ..........................................159<br />
stoc....................................................192, 193<br />
stoc intangibil....................................197, 215<br />
subgraf ........................................................18<br />
tabel simplex...............................................62<br />
teoria<br />
aşteptării ..............................................159<br />
grafurilor................................................15<br />
test de concordanţă ...................................239<br />
testul<br />
2<br />
χP<br />
P ........................................................241<br />
lui Kolmogorov....................................242<br />
timpul de<br />
aşteptare ...............................................159
250<br />
avans.................................................... 195<br />
neocupare a staţiilor............................. 159<br />
timpul mediu de<br />
aşteptare în sistem 163, 165, 170, 177, 182<br />
aşteptare la coadă 163, 165, 170, 177, 182<br />
lenevire ................................................ 163<br />
servire .................................................. 163<br />
topologia sistemului de servire................... 159<br />
traiectoria optimă...................................... 144<br />
vârf<br />
adiacent.................................................. 18<br />
al grafului............................................... 19<br />
Modele şi algoritmi de optimizare<br />
variabilă<br />
aleatoare...............................................232<br />
normală standard .............................237<br />
artificială ................................................76<br />
ecart........................................................56<br />
variabile<br />
de decizie ...............................................12<br />
externe....................................................12<br />
intermediare ...........................................13<br />
vector de<br />
decizie ..................................................141<br />
stare......................................................141
250<br />
avans.................................................... 195<br />
neocupare a staţiilor............................. 159<br />
timpul mediu de<br />
aşteptare în sistem 163, 165, 170, 177, 182<br />
aşteptare la coadă 163, 165, 170, 177, 182<br />
lenevire ................................................ 163<br />
servire .................................................. 163<br />
topologia sistemului de servire................... 159<br />
traiectoria optimă...................................... 144<br />
vârf<br />
adiacent.................................................. 18<br />
al grafului............................................... 19<br />
Modele şi algoritmi de optimizare<br />
variabilă<br />
aleatoare...............................................232<br />
normală standard .............................237<br />
artificială ................................................76<br />
ecart........................................................56<br />
variabile<br />
de decizie ...............................................12<br />
externe....................................................12<br />
intermediare ...........................................13<br />
vector de<br />
decizie ..................................................141<br />
stare......................................................141