17.04.2013 Views

MODELE SI ALGORITMI DE OPTIMIZARE

MODELE SI ALGORITMI DE OPTIMIZARE

MODELE SI ALGORITMI DE OPTIMIZARE

SHOW MORE
SHOW LESS

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


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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!