17.04.2013 Views

MODELE SI ALGORITMI DE OPTIMIZARE

MODELE SI ALGORITMI DE OPTIMIZARE

MODELE SI ALGORITMI DE OPTIMIZARE

SHOW MORE
SHOW LESS

Transform your PDFs into Flipbooks and boost your revenue!

Leverage SEO-optimized Flipbooks, powerful backlinks, and multimedia content to professionally showcase your products and significantly increase your reach.

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!