Seria „Matematică” MODELE ŞI ALGORITMI DE OPTIMIZARE

OPTIMIZATION MODELS AND ALGORITHMS This book presents a set of optimization methods, models and algorithms. After the Introduction, where the reader is familiarized with the object of optimization and some applications of it, the book includes Graphs in Optimization, Convex Programming, Linear Programming, the Transportation Problem, Quadratic Programming, Dynamic Programming, Basics of Queuing Theory, Basics of Inventory Theory, and an Appendix. These chapters provide a minimum of knowledge for practical activities in engineering and economics. Many of the results are being formally established, but some theorems are listed without a proof, while providing a reference where the proof can be found. The methods and corresponding algorithms are illustrated by examples. Also, the solutions obtained by using the following software are included: Management Scientist, Excel, and MathCAD. Almost all chapters end with suggested problems. This book is aimed at engineers, economists, mathematicians and students of technical and economic faculties, being a useful tool for solving practical problems.

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

8

Romică Trandafir

MODELE ŞI ALGORITMI DE OPTIMIZARE
Seria „Matematică”

Editura AGIR Bucureşti, 2004

ASOCIAŢIA GENERALĂ A INGINERILOR DIN ROMÂNIA
Copyright © EDITURA AGIR, 2004 Editură acreditată de CNCSIS Toate drepturile pentru această ediţie sunt rezervate. All rights reserved.

Adresa: Calea Victoriei nr. 118, sector 1, Bucureşti, cod 010071; telefon: 40 21 212 81 04; 40 21 212 81 06 (redacţie); 40 21 211 83 50 (difuzare); fax: 40 21 312 55 31; e-mail: editura@agir.ro; Internet: http://www.agir.ro

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

Redactor: ing. Adina Negoiţă Coperta: Răzvan Drăghici Bun de tipar: 25.08.2004; Coli de tipar: 15,5 ISBN 973-8466-76-8 Imprimat în România

PREFAŢĂ

Lucrarea de faţă este o reuşită sinteză, care tratează în mod concis, dar şi riguros din punct de vedere matematic, problemele de optimizare. După o Introducere în care se formulează conceptele de bază ale construcţiei modelelor matematice şi ale descrierii problemelor de optimizare, lucrarea tratează sistematic o mare varietate de modele şi algoritmi de optimizare, care intervin în rezolvarea diverselor tipuri de probleme ridicate de practica inginerească, în particular în construcţii. Astfel, un prim capitol este dedicat formulării şi tratării unor modele şi algoritmi de optimizare din teoria grafurilor, legate de determinarea drumurilor minime, a fluxurilor minime/maxime sau a arborilor de acoperire de cost minim. Apoi, în cinci capitole distincte, sunt tratate la nivel teoretic evoluat, diverse probleme de programare matematică, cum sunt: programarea convexă programarea liniară, problema de transport, programarea pătratică şi programarea dinamică. În aceste capitole se fac remarcate construcţia şi analiza aprofundată a numeroşi algoritmi generali, dar şi a unor particularităţi ale acestora de un real interes practic. Un capitol special este dedicat analizei unor modele de teoria matematică a aşteptării, modele care au ca scop reglarea aşteptărilor şi fluxurilor în sistemele de servire în condiţii de incertitudine. Sunt tratate modele de aşteptare pentru sisteme cu o staţie de servire, cu coada finită sau infinită, sau sisteme de aşteptare cu mai multe staţii paralele. În toate aceste modele se presupune că venirile şi duratele serviciilor sunt aleatoare, de repartiţii cunoscute. În sfârşit, ultimul capitol al cărţii tratează modelele reprezentative de teoria matematică a stocurilor. Sunt tratate modele clasice care determină politici de reaprovizionare optime pentru stocarea unuia sau mai multor produse, precum şi unele modele aleatoare. Aproape toate metodele şi algoritmii descrişi sunt ilustrate prin exemple preluate cu precădere din practica activităţilor de construcţii, exemple ce sunt prelucrate cu ajutorul unor pachete de programe, fapt care măreşte mult utilitatea şi atractivitatea lucrării. Întrucât în tratarea unor modele intervin noţiuni şi metode ale teoriei probabilităţilor şi statisticii matematice, anexa cărţii prezintă tocmai noţiunile de bază necesare înţelegerii acelor modele. În concluzie, avem de-a face cu o carte bine construită, interesantă prin acurateţea, claritatea şi rigurozitatea problemelor tratate şi care oferă posibilităţi de aplicare la rezolvarea multor probleme practice, ea prezentând deci un interes deosebit pentru o clasă largă de cititori. Bucureşti, 20 iulie 2004 Prof. univ. dr. Ion Văduva

6

Modele şi algoritmi de optimizare

CUPRINS
1. Introducere .....................................................................................................................11 1.1. Obiectul optimizării ..................................................................................................11 1.1.1. Construcţia modelului.....................................................................................11 1.1.2. Concepte de bază în modelare ........................................................................12 1.2. Tipuri de probleme ...................................................................................................14 1.2.1. Dimensiunea problemelor...............................................................................16 1.2.2. Algoritmi iterativi şi convergenţă ...................................................................16 2. Grafuri în optimizare.....................................................................................................17 2.1. Definiţii şi algoritmi..................................................................................................17 2.1.1. Grafuri orientate..............................................................................................17 2.1.2. Grafuri neorientate..........................................................................................19 2.2. Căutarea unui arbore de acoperire de lungime minimă ............................................20 2.2.1. Algoritmul lui Kruskal....................................................................................21 2.2.2. Algoritmul lui Prim.........................................................................................22 2.3. Algoritmul lui Dijkstra .............................................................................................25 2.4. Metoda PERT ...........................................................................................................29 2.5. Probleme propuse .....................................................................................................35 3. Programare convexă ......................................................................................................43 3.1. Mulţimi şi funcţii convexe........................................................................................43 3.2. Extreme condiţionate ................................................................................................45 3.2.1. Cazul restricţiilor egalităţi...............................................................................48 3.2.2. Cazul restricţiilor inegalităţi ...........................................................................49 4. Programare liniară ........................................................................................................51 4.1. Exemple de probleme de programare liniară ............................................................51 4.1.1. Utilizarea optimă a resurselor .........................................................................51 4.1.2. Problema de transport .....................................................................................52 4.1.3. Alocarea optimă a fondurilor financiare .........................................................54 4.1.4. Gestionarea optimă a unui depozit..................................................................54 4.1.5. Problema dietei ...............................................................................................55 4.2. Diferite forme ale problemelor de programare liniară ..............................................56 4.3. Algoritmul simplex ...................................................................................................57 4.4. Fundamentele algoritmului simplex .........................................................................59 4.5. Enunţul algoritmului simplex ...................................................................................62 4.6. Tabelul simplex şi transformarea sa .........................................................................63 4.7. Exemplu....................................................................................................................65 4.8. Convergenţa algoritmului simplex. Degenerare şi ciclare ........................................72 4.9. Interpretarea geometrică a algoritmului simplex ......................................................74 4.10. Interpretarea economică a algoritmului simplex.....................................................76 4.11. Metoda celor două faze...........................................................................................77 4.12. Dualitatea în programarea liniară............................................................................82 4.13. Teorema fundamentală a dualităţii..........................................................................84

8

Modele şi algoritmi de optimizare 4.14. Algoritmul simplex dual .........................................................................................89 4.15. Interpretarea economică a algoritmului simplex dual.............................................92 4.16. Determinarea unei soluţii dual admisibile ..............................................................94 4.17. Probleme propuse ...................................................................................................95

5. Problema de transport.................................................................................................102 5.1. Fundamentele algoritmului de transport .................................................................102 5.2. Enunţul algoritmului de transport ...........................................................................107 5.3. Determinarea soluţiei iniţiale de bază.....................................................................108 5.4. Exemplu..................................................................................................................109 5.5. Problema atribuirii sarcinilor ..................................................................................119 5.6. Probleme propuse ...................................................................................................119 6. Programare pătratică ..................................................................................................122 6.1. Exemple de probleme care conduc la programare pătratică ......................................122 6.1.1. Utilizarea optimă a resurselor .......................................................................122 6.1.2. Problema investiţiei ......................................................................................123 6.1.3. Regresii liniare..............................................................................................123 6.2. Definiţii. Proprietăţi................................................................................................124 6.3. Fundamentarea algoritmului lui Wolfe...................................................................127 6.4. Forma scurtă a algoritmului lui Wolfe....................................................................132 6.5. Probleme propuse ...................................................................................................141 7. Programare dinamică ..................................................................................................143 7.1. Generalităţi .............................................................................................................143 7.2. Analiza retrospectivă ..............................................................................................146 7.2.1. Rezolvarea în cazul aditiv.............................................................................147 7.2.2. Problema repartiţiei investiţiilor ...................................................................148 7.2.3. Problema gestiunii stocului...........................................................................152 7.2.4. Problema alocării optime a resurselor...........................................................155 7.3. Probleme propuse ...................................................................................................157 8. Elemente de teoria aşteptării.......................................................................................161 8.1. Introducere în teoria aşteptării ................................................................................161 8.2. Caracterizarea procesului N(t) ca proces de naştere şi deces..................................162 8.3. Modelul Po(λ)/Exp(µ)/1:(∞,FIFO)........................................................................165 8.4. Modelul Po(λ)/Exp(µ)/1:(m, FIFO).......................................................................170 8.5. Modelul Po(λ)/Exp(µ)/c:(∞, FIFO) ........................................................................174 8.6. Modelul P0(λ)/Exp(µ)/c:(m,FIFO).........................................................................180 8.7. Simulare..................................................................................................................185 8.8. Probleme propuse ...................................................................................................188 9. Elemente de teoria stocurilor ......................................................................................194 9.1. Introducere în teoria stocurilor ...............................................................................194 9.1.1. Punerea problemei ........................................................................................194 9.1.2. Concepte utilizate în teoria stocurilor ...........................................................195 9.2. Modelul clasic al lotului economic .........................................................................199 9.3. Modelul clasic al lipsei de stoc ...............................................................................204

Cuprins

9

9.3.1. Modelul de stocare considerând influenţa preţului de cumpărare ................209 9.3.2. Modelul de stocare considerând influenţa costului de producţie ..................209 9.4. Extensii ale modelului clasic al lotului economic...................................................210 9.5. Model pentru stocarea mai multor tipuri de produse ..............................................216 9.6. Modele stochastice de stocare.................................................................................216 9.6.1. Determinarea nivelului optim de reaprovizionare.........................................217 9.6.2. Modele de stocare pe o singură perioadă cu cerere aleatoare .......................221 9.6.3. Modele stochastice de stocare bazate pe modele de aşteptare ......................224 9.6.4. Modelul P0(λ)/Exp(µ)/1:(∞, FIFO)...............................................................224 9.6.5. Modelul cu mai multe staţii paralele şi cu timp de avans L aleatoriu ...........226 9.7. Probleme propuse ...................................................................................................230 Anexă.................................................................................................................................233 A.1. Câmp de evenimente. Axioma lui Kolmogorov ....................................................233 A.1.1. Evenimente. Probabilităţi.............................................................................233 A.1.2. Probabilitate .................................................................................................233 A.1.3. Câmp de probabilitate complet aditiv ..........................................................233 A.1.4. Probabilitate condiţionată ............................................................................234 A.1.5. Evenimente independente ............................................................................234 A.2. Variabile aleatoare .................................................................................................234 A.2.1. Funcţia de repartiţie .....................................................................................235 A.2.2. Densitate de repartiţie ..................................................................................236 A.2.3. Variabile aleatoare independente .................................................................236 în sensul Steinhaus−Kaç .........................................................................................236 A.2.4. Valoare medie. Dispersie. Momente............................................................236 A.3. Câteva repartiţii clasice..........................................................................................237 A.3.1. Repartiţia uniformă ......................................................................................237 A.3.2. Repartiţii Markov.........................................................................................237 A.3.3. Repartiţia normală unidimensională a lui Gauss..........................................238 A.3.4. Repartiţia Beta .............................................................................................239 A.4. Procese aleatoare....................................................................................................239 A.5. Teste de concordanţă .............................................................................................241 A.5.1. Etapele verificării ipotezelor statistice .........................................................242 2 A.5.2. Testul de concordanţă χ ..........................................................................243 A.5.3. Testul Kolmogorov ......................................................................................243 Bibliografie .......................................................................................................................245 Index alfabetic ..................................................................................................................247

10

Modele şi algoritmi de optimizare

1. INTRODUCERE

1.1. Obiectul optimizării
Un manager vrea să aleagă acel curs al activităţii sale care va fi cel mai performant în atingerea scopului firmei sale. În judecarea eficienţei diferitelor decizii posibile, trebuie să se folosească anumite criterii pentru măsurarea performanţei activităţii în discuţie. Este indicat să se urmărească etapele (Bonini et al, 1997): 1. Stabilirea criteriului de eficienţă 2. Selectarea unei mulţimi de alternative posibile 3. Determinarea unui model care să fie folosit şi a valorilor parametrilor procesului 4. Determinarea alternativei care optimizează criteriul stabilit la etapa 1. Deoarece problemele lumii reale devin extrem de complicate este necesar să se facă o abstractizare şi o simplificare a realităţii într-un model. Să considerăm de exemplu problema construirii unei clădiri. Este necesară o durată îndelungată pentru culegerea de informaţii privind locul unde se amplasează, caracteristicile fizice ale clădirii, studiul detaliat al condiţiilor climatice şi de sol, influenţa asupra costurilor, sursele de finanţare şi costurile. Decidentul poate hotărî să considere în mod deosebit şi în detaliu toate celelalte potenţiale folosite în această perioadă şi în perioadele viitoare. Dacă decidentul adoptă strategia colectării tuturor informaţiilor înainte de a acţiona, atunci nici o acţiune nu va avea loc. Mintea umană nu poate considera toate aspectele empirice ale problemei. Anumite atribute ale problemei trebuie ignorate ca să se poată lua o decizie. Decidentul trebuie să identifice factorii cei mai relevanţi pentru problemă. Abstracţia şi simplificarea sunt paşi necesari în rezolvarea oricărei probleme umane.

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

12

Modele şi algoritmi de optimizare

Un model cât mai apropiat de realitate cere un timp excesiv în construcţie. Decidentul doreşte ca modelul simplificat să prezică rezultate rezonabile şi să fie consistent cu acţiunea efectivă. După ce modelul a fost construit se pot obţine concluziile prin intermediul acţiunilor logice. Decidentul îşi bazează acţiunile sau deciziile pe aceste concluzii. Dacă deducerea concluziilor din modelul abstract este corectă şi dacă variabilele importante au fost abstractizate atunci soluţia modelului ar servi ca o soluţie efectivă pentru problema empirică. Există două surse de erori în folosirea modelului pentru factorul de decizie: 1) omiterea unor variabile importante din model 2) erori în definirea relaţiilor dintre variabile. Tehnica abordată pentru descrierea şi stabilirea legăturilor variabilelor selectate depinde de natura variabilelor. Dacă variabilele pot fi date în reprezentare cantitativă atunci modelele matematice sunt cele mai indicate. Matematica împreună cu calculatoarele moderne fac posibilă rezolvarea problemelor care cer modele de mare complexitate şi atunci când analiza cantitativă se poate aplica ea facilitează procesul de luare a deciziilor. În luarea unei decizii, se stabileşte criteriul de decizie, se selectează alternativele, se construieşte un model, se evaluează alternativele folosind modelul apoi se selectează cea mai bună alternativă. Un model este o abstracţie şi o simplificare a unei probleme reale, încorporând ideal elementele esenţiale şi relaţiile din problema reală. Rezolvarea unui model înseamnă obţinerea concluziilor logice care rezultă, concluzii ce constituie un ghid efectiv în luarea deciziei dacă modelul este proiectat şi rezolvat corect. Luarea deciziei implică informaţia cantitativă obţinută din model cu judecarea intuitivă a factorilor calitativi.

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

1.Introducere

13

Restricţiile pot fi legate de capacităţile de producţie, resurse, limitări legislative, politica firmei etc. Măsuri ale performanţei. În luarea unei decizii decidentul are un scop, un obiectiv pe care încearcă să-l atingă. Criteriile sau măsurile performanţei sunt expresii cantitative ale acestor obiective. Variabilele intermediare sunt necesare pentru includerea tuturor factorilor importanţi în problema de decizie. Adesea ele leagă factorii de cost şi de câştig. Se folosesc să lege variabilele de decizie şi exogene de măsurile de performanţă. * * * A face « cel mai bine posibil » este sensul oricărei atitudini naturale în viaţa de zi cu zi. Dar aceasta nu are decât un sens relativ în raport cu nişte restricţii impuse din exterior sau acceptate de bunăvoie (Cohen, 2000). Pentru un inginer « a face cel mai bine posibil » ar trebui să fie un obiectiv permanent atunci când are de conceput o clădire, de dimensionat o instalaţie etc. Expresia este relativizată în funcţie de buget, de securitate, sau altele, restricţii al căror nivel a făcut la rândul său obiectul deciziilor prealabile şi adesea exterioare. Cuvintele « a optimiza, optimizare etc. » sunt presupuse să reflecte această idee de « cel mai bine posibil ». În viaţa curentă alegerile posibile se limitează adesea la două (atunci le numim alternative) sau câteva unităţi, de tipul că algoritmul care ia decizia se reduce la a înfăţişa, explicit sau nu, toate posibilităţile, să considere şi să evalueze consecinţele lor probabile şi să reţină pe cea care pare « cea mai bună » (dar cea mai bună are sens doar în măsura în care un criteriu de alegere a fost definit mai înainte). În problemele tehnice, alegerile posibile reprezintă adesea un continuu (de exemplu: ce dimensiune să se dea unei grinzi ?) şi o enumerare exhaustivă a posibilităţilor este de neconceput. Atunci trebuie găsit un algoritm mai performant, adică o metodă pentru a găsi drumul spre soluţia cea mai bună dintre toate soluţiile posibile. Optimizarea poate fi definită ca ştiinţa determinării «celei mai bune» soluţii la anumite probleme definite matematic, care sunt adesea modele ale realităţii fizice. Ea implică studiul criteriilor de optimalitate pentru probleme, determinarea soluţiei cu metode algoritmice, studiul structurii acestor metode şi experimentarea pe calculator a metodelor cu date experimentale şi cu date reale. Metodele de optimizare au o largă aplicabilitate în aproape orice activitate în care sunt prelucrate informaţiile numerice: ştiinţă, inginerie, matematică, economie, comerţ etc. O selecţie a domeniilor în care apar probleme de optimizare ar cuprinde: proiectarea reactoarelor chimice, a aparatelor aerospaţiale, a clădirilor, a podurilor, în comerţ în probleme de alocarea resurselor, planificarea producţiei, a stocurilor, în diferite ramuri ale analizei numerice, în ajustarea datelor, principii variaţionale

14

Modele şi algoritmi de optimizare

în sisteme de ecuaţii diferenţiale şi cu derivate parţiale, funcţii de penalitate etc. (Cohen, 1995). Se optimizează o funcţie obiectiv care cuantifică produsul unui proces economic sau profitul rezultat în urma aplicării sistemului. Conceptul de optimizare este bine încetăţenit ca principiul de bază în analiza problemelor complexe de decizie sau alocare. Folosirea optimizării se bazează pe concentrarea atenţiei asupra unui singur obiectiv conceput să cuantifice performanţa şi calitatea deciziei într-o problemă ce ar necesita determinarea valorilor unui număr mare de variabile interconectate. Acest obiectiv este maximizat sau minimizat supus unor restricţii care să limiteze alegerea variabilelor de decizie. Dacă un aspect al problemei poate fi identificat şi caracterizat printr-un obiectiv (de exemplu: profitul într-o afacere) atunci optimizarea poate să ofere un cadru adecvat pentru o astfel de analiză. Optimizarea ar trebui privită ca un instrument de concepere şi analiză, şi nu ca un principiu care să ducă la soluţia corectă din punct de vedere filozofic. Formularea problemei implică întotdeauna găsirea unui echilibru între construirea unui model suficient de complex pentru a descrie cât mai bine problema şi uşurinţa de rezolvare a acestuia.

1.2. Tipuri de probleme
Termenul programare, în această lucrare va fi sinonim cu optimizare şi îşi are originea în planificarea optimală. Când variabilele sunt supuse unor restricţii (relaţii) avem de-a face cu programare cu restricţii, care face obiectul acestei lucrări. În lipsa restricţiilor spunem că avem programare fară restricţii (Luenberger, 1989). Problemele fără restricţii par lipsite de proprietăţi structurale astfel încât aplicabilitatea lor în probleme practice este redusă. Problemele cu restricţii permit modelarea fenomenelor complexe prin descompunerea în subprobleme şi fiecare subproblemă având mai multe restricţii. Forma generală a unei probleme de programare cu restricţii este ⎧min f ( x ) x ∈ R n ⎪ (1.1) ⎨g i ( x) = 0 i ∈ E ⎪ g ( x) ≤ 0 i ∈ I ⎩ i

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

1.Introducere

15

Definiţia 1.1. Un punct x ∈ R n care verifică restricţiile (1.1) se numeşte punct admisibil (realizabil) sau soluţie admisibilă şi mulţimea tuturor acestor puncte R, formează regiunea admisibilă (realizabilă). Definiţia 1.2. O soluţie admisibilă x * ∈ R este o soluţie optimă pentru problema (1.1) dacă f ( x * ) ≤ f ( x ) , (∀)x ∈ R .
max f ( x ) = − min{− f ( x )} , problema de maximizare devine o problemă de minimizare, aşa că în continuare se vor considera numai probleme de minimizare.

Prin schimbarea

Dacă toate funcţiile gi(x) care dau restricţiile sunt liniare şi funcţia obiectiv este liniară, problema (1.1) se numeste problemă de programare liniară, iar dacă funcţia obiectiv este pătratică atunci problema (1.1) se numeşte problemă de programare pătratică. Programarea liniară permite rezolvarea unei game largi de probleme cu un efort redus. Popularitatea programării liniare se datorează în principal etapei de formulare, şi nu celei de rezolvare numerică, deoarece multe dintre restricţiile şi obiectivele care apar în practică sunt liniare prin definiţie. Optimizarea sistemelor reale cu evoluţie în etape constituie obiectul programării dinamice, care are la bază pricipiul de optimalitate al lui Bellman (Kaufmann, II, 1967), care poate fi exprimat astfel: Orice politică optimă nu poate fi alcătuită decât din subpolitici optime. Fenomenele de aşteptare se optimizează cu modele de aşteptare care dau informaţii asupra organizării sistemului în vederea reducerii timpilor de aşteptare în sistem, a reducerii cheltuielilor de funcţionare a sistemului de aşteptare etc. Asigurarea unui regim optim de funcţionare a unui proces de producţie sau aprovizionarea optimă cu anume sortimente a cererilor pieţei se realizează cu ajutorul modelelor de stocare. Ca o aplicaţie practică a teoriei grafurilor este prezentată organizarea şi planificarea proiectelor complexe şi stabilirea duratei minime de realizare a acestora. Toate aceste modele fac obiectul acestei lucrări, fiind prezentate soluţiile modelelor, exemple practice rezolvate fie manual, fie cu ajutorul Solver-ului din EXCEL, fie cu ajutorul pachetului de programe specializat în rezolvarea problemelor de optimizare, Management Scientist (MS), fie cu ajutorul pachetului de programe MathCAD.

16

Modele şi algoritmi de optimizare

1.2.1. Dimensiunea problemelor
O măsură a complexităţii problemei de programare este dimensiunea acesteia exprimată prin numărul de necunoscute şi de restricţii (Luenberger, 1989). Dimensiunea problemelor care pot fi rezolvate a crescut o dată cu dezvoltarea teoriei şi a tehnicilor de calcul. Se pot distinge acum trei categorii de probleme: de dimensiune redusă (cu cel mult 5 variabile sau restricţii), de dimensiune medie (între 5 şi 100 de variabile sau restricţii) şi de dimensiuni mari (cu peste 100 de variabile şi restricţii). Această clasificare reflectă nu numai diferenţe de dimensiuni, dar şi de abordare. Astfel problemele de dimensiuni mici pot fi rezolvate de mână sau cu un calculator de buzunar. Problemele de dimensiuni medii pot fi rezolvate pe un calculator, folosind programe matematice generale. Problemele de dimensiuni mari necesită programe sofisticate care exploatează caracteristicile particulare ale problemei şi de obicei se rulează pe calculatoare de mare capacitate. Teoria iniţială a optimizării s-a concentrat asupra obţinerii rezultatelor teoretice, ignorând aspectele de calcul ale metodelor propuse. Abordările recente se axează pe exploatarea caracteristicilor calculatoarelor, obţinând soluţia prin metode iterative.

1.2.2. Algoritmi iterativi şi convergenţă
Cea mai importantă caracteristică a calculatoarelor este capacitatea lor de a efectua operaţii repetitive într-un mod eficient şi din această cauză majoritatea algoritmilor de rezolvare a problemelor de optimizare sunt iterativi (Luenberger, 1989). În căutarea unei soluţii se alege un vector iniţial x0 şi algoritmul determină un vector x1 care conduce la o valoare mai bună a funcţiei obiectiv; procesul se repetă obţinându-se un şir de vectori x0, x1, …, xk, …, fiecare îmbunătăţind valoarea funcţiei obiectiv, faţă de precedentul. Acest şir converge către x* , soluţia problemei. În problemele de programare liniară soluţia se obţine după un număr finit de paşi. În probleme de programare neliniară şirul nu atinge niciodată soluţia, dar converge către ea. Practic, algoritmul se opreşte când s-a obţinut un punct suficient de aproape de soluţie. Teoria algoritmilor iterativi poate fi împarţită în trei părţi. Prima parte se ocupă cu crearea de algoritmi. A doua parte, numită şi analiza convergenţei globale, analizează convergenţa unui algoritm către soluţia optimă atunci când se iniţializează cu un punct depărtat de soluţia optimă. Cea de-a treia componentă se numeşte analiza convergenţei locale şi studiază rata de convergenţă a şirului către soluţia optimă. Este esenţial când se recomandă un algoritm să se menţioneze şi o estimare a timpului necesar pentru obţinerea soluţiei. Lucrarea de faţă argumentează convergenţa majorităţii algoritmilor prezentaţi.

2. GRAFURI ÎN OPTIMIZARE
2.1. Definiţii şi algoritmi

2.1.1. Grafuri orientate
Definiţia 2.1. Se numeşte graf orientat o pereche de mulţimi G=(X,U), unde: X este o mulţime finită şi nevidă, ale cărei elemente se numesc noduri (vârfuri) , iar U este o mulţime formată din perechi ordonate (x,y), x, y ∈ X , numită mulţimea arcelor (muchii). Dacă ( x, y ) ∈ U , x se numeşte extremitatea iniţială (originea) a arcului, iar y, extremitatea finală (extremitatea). Grafurile permit modelarea unui număr mare de situaţii (Henry-Labordere, 1995). Exemple de grafuri: a) o reţea rutieră (cu drumuri având sens unic) – vârfurile sunt intersecţiile, iar arcele sunt drumurile. b) ordinea lucrărilor într-un şantier. 2 c) relaţiile stabilite între indivizi (situaţie întâlnită în psihologia de grup) – 1 de exemplu: X={1, 2, 3, 4} , U={(1, 2), (3, 4) , 4 (4, 2), (4, 3)}. Grafic se poate reprezenta ca în Figura 2.1. Individul 1 îl apreciază pe individul 2, 3 individul 2 nu îl apreciază pe individul 1, individul 4 îl apreciază pe individul Figura 2.1 2, iar indivizii 3 şi 4 se apreciază reciproc. Definiţia 2.2. Se numeşte drum într-un graf orientat un şir de arce D = u1 ,..., uk ui ∈ U , i = 1, k − 1 cu proprietatea că extremitatea finală a arcului ui

{

}

coincide cu extremitatea iniţială a arcului ui+1 , i = 1, k − 1 .

18

Modele şi algoritmi de optimizare

Dacă extremitatea finală a arcului uk coincide cu extremitatea iniţială a arcului u1 atunci drumul se numeşte circuit. Un circuit format dintr-un singur arc se numeşte buclă. Dacă nodurile arcelor drumului sunt distincte două câte două, drumul se numeşte elementar. Exemplu. În Figura 2.1 (1, 2, 4, 3) este un drum, iar (1, 2, 3) nu este drum. Definiţia 2.3. Un nod x dintr-un graf orientat G se numeşte precedentul altui nod y din G dacă există arcul (x, y ) ∈ U . Un nod y dintr-un graf orientat G se numeşte succesorul altui nod x din G dacă există arcul (x, y ) ∈ U . Un nod x dintr-un graf orientat G se numeşte ascendentul altui nod y din G dacă există un drum de origine x şi extremitate y. Un nod y dintr-un graf orientat G se numeşte descendentul altui nod x din G dacă există un drum de origine x şi extremitate y. Vârful y este adiacent vârfului x dacă (x, y)∈U sau (y, x)∈U . Fie G=(X,U) un graf orientat şi A⊂X. Arcul u ∈ U este incident mulţimii A spre exterior dacă extremitatea sa finală aparţine lui A, iar extremitatea iniţială nu aparţine lui A. Arcul u ∈ U este incident mulţimii A spre interior dacă este incident spre exterior mulţimii A = X − A . Definiţia 2.4. Se numeşte gradul exterior al lui x şi se notează d +(x) numărul de noduri succesoare lui x. Se numeşte gradul interior al lui x şi se notează d − (x) numărul de noduri precedente lui x. Se numeşte gradul lui x şi se notează cu d(x) numărul d +(x)+ d − (x), (d(x)=d +(x)+ d − (x)). Definiţia 2.5. Fie G=(X,U) un graf orientat şi fie U ′ ⊂ U , G ′ = ( X , U ′) se numeşte graf parţial al lui G. Fie A ⊂ X şi UA={u∈U astfel încât cele două extremităţi ale lui u să fie în A} . GA =(A, UA) se numeşte subgraf al lui G. Definiţia 2.6. Graful se numeşte tare conex dacă pentru orice perechi de vârfuri x, y ∈ X există un drum din x plecând la y . Definiţia 2.7. Se numeşte arborescenţă un graf tare conex şi fără cicluri, orientat, a cărui orientare este astfel încât fiecare vârf al său cu excepţia unuia singur, numit rădăcină, este extremitatea terminală a unui arc şi numai unul.

2. Grafuri în optimizare

19

Definiţia 2.8. Se numeşte graf ponderat sau valuat şi se notează G=(X, U, l) un graf (X, U) căruia i se asociază o funcţie l : U → R + numită ponderea arcelor. Exemple: a) l(x,y) = lungimea tronsonului de drum, (x,y) care uneşte localităţile x şi y; b) l(x,y) = capacitatea tronsonului de drum (x,y). Definiţia 2.9. Se numeşte reţea de transport un graf orientat, G=(X,U), fără bucle, cu proprietăţile următoare: • există un nod x0 unic, numit originea reţelei, şi care nu are ascendenţi; • există un nod xf unic, numit destinaţia reţelei, şi care nu are descendenţi; • fiecărui arc u ∈ U îi este asociat un număr l (u ) ≥ 0 numit capacitatea arcului u .

2.1.2. Grafuri neorientate
Definiţia 2.10. Se numeşte graf neorientat şi se notează G=(X,U) o pereche de mulţimi, unde: X este o mulţime finită şi nevidă, iar U este o mulţime de perechi neordonate (x, y) cu x, y∈X . Elementele lui X se numesc vârfurile (nodurile) grafului, iar elementele lui U se numesc muchiile (arcele) grafului. Dacă u = (x, y )∈ U , x şi y se numesc extremităţile muchiei u. Definiţia 2.11. Un graf G=(X, U), în care, dacă numeşte graf simetric.

( x, y ) ∈ U

atrage

( y, x )∈ U ,

se

Definiţia 2.12. Un graf neorientat, G=(X, U), se numeşte graf complet dacă pentru (∀ )x, y ∈ X avem ( x, y ) ∈ U . Definiţia 2.13. Într-un graf neorientat, G=(X,U), se numeşte lanţ o mulţime de vârfuri
L = x1 ,..., xk xi ∈ X , i = 1, k

{

}

cu proprietatea că oricare două vârfuri

consecutive sunt adiacente, adică (xi , xi +1 )∈U , i = 1, k − 1 . Vârfurile x1 , xk se numesc extremităţile lanţului, iar numărul de muchii care intră în componenţa sa se numeşte lungimea lanţului. Dacă x1,..., xk sunt distincte două câte două, lanţul se numeşte elementar, altfel se numeşte neelementar.

20

Modele şi algoritmi de optimizare

Definiţia 2.14. Un graf G=(X,U) se numeşte simplu conex sau conex dacă pentru orice pereche de vârfuri x, y ∈ X există un lanţ de extremităţi x şi y . Definiţia 2.15. Se numeşte ciclu într-un graf
L = x1 ,..., xk xi ∈ X , i = 1, k
1,

{

} cu proprietatea că x =x
1

G=(X,U),

un lanţ

k

şi muchiile (x1, x2), ... , (xk-

xk) sunt distincte două câte două.

Definiţia 2.16. Se numeşte ponderea unui lanţ, drum, ciclu sau circuit valoarea P=
( x , y )∈( x1 , x 2 ,..., x n )

∑ l ( x, y ) .

De exemplu, în cadrul metodei PERT, ponderea unui drum este durata sa totală. Definiţia 2.17. Un lanţ, drum, ciclu sau circuit se numeşte hamiltonian dacă el trece o dată şi numai o dată prin toate vârfurile grafului. Un lanţ, drum, ciclu sau circuit se numeşte eulerian dacă el trece o dată şi numai o dată prin toate arcele grafului. Definiţia 2.18. Un arbore este un graf conex şi fără cicluri. Se disting la un arbore două tipuri de vârfuri : vârfuri la care mai multe muchii sunt incidente şi alte vârfuri la care o singură muchie este incidentă. Acestea din urmă se numesc vârfuri pendante sau frunze.

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

Fie G=(X, U, l) un graf conex (ipoteză necesară pentru a asigura existenţa cel n = X (numărul puţin a unui arbore) ponderat neorientat. Să notăm cu elementelor lui X). Se pune problema găsirii arborelui de acoperire de lungime minimă, adică, folosind arce ale grafului să se lege între ele toate nodurile astfel încât lungimea totală a arcelor folosite (suma ponderilor) să fie minimă. O astfel de problemă apare în proiectarea reţelelor de comunicaţii, unde obiectivul este să se minimizeze lungimea cablului necesar conectării tuturor nodurilor care trebuie să comunice între ele, în proiectarea reţelelor de drumuri, benzi rulante, sisteme de canalizare etc. În continuare sunt prezentaţi doi algoritmi care rezolvă această problemă.

2. Grafuri în optimizare

21

2.2.1. Algoritmul lui Kruskal
Algoritmul lui Kruskal permite căutarea unui arbore de acoperire de lungime minimă. Vom presupune că graful G are lungimile muchiilor diferite două câte două (dacă u≠v , u, v – muchii, atunci l(u)≠l(v) ).
Algoritmul Kruskal Pas 1. Se consideră v1 – muchia de lungime cea mai mică. Apoi v2 – muchia de lungime cea mai mică dintre cele rămase şi se notează V2={v1, v2} ; k :=2 ; Pas 2. Repetă k :=k+1 ; vk – muchia de lungime cea mai mică dintre cele rămase astfel încât Vk−1 ∪vk să nu formeze ciclu până când k=n−1 ; Pas 3. Stop. {Vn−1 este un graf de n−1 muchii şi nu are cicluri}.

Demonstrăm prin absurd că Vn−1 este arborele minim căutat (HenryLabordere, 1995). Fie V≠Vn−1 arborele minim şi să presupunem că are cele n−1 muchii ordonate astfel încât lungimile lor sunt în ordine crescătoare la fel ca şi cele ale lui Vn−1 şi că uk este prima muchie a lui V care nu este în Vn−1 .
Vn−1 Vn v1 v1 v2 v2 … … vk−1 vk−1 vk uk vk+1 uk+1 … … vp up … … vn un

l(v1)<l(v2)<…< l(vk−1) V ∪vk conţine un singur ciclu (graful este conex şi dacă se adaugă o muchie el va conţine un singur ciclu şi numai unul). Acest ciclu conţine cel puţin o muchie up∉ Vk−1 . Din construcţia lui Vk , vk nu creează un ciclu cu Vk−1. Deoarece lista muchiilor lui V este ordonată crescător după lungimile muchiilor l(uk)≤l(up), avem de asemenea l(vk)<l(uk) deoarece vk≠uk, şi atunci l(vk)<l(up). Graful V∪vk− up are n−1 muchii şi este fără cicluri deoarece suprimarea lui up înlătură singurul ciclu al lui V∪vk . Acesta este, aşadar, un arbore şi lungimea sa este inferioară aceleia a lui V , ceea ce contrazice faptul că V≠Vn−1 este arborele de lungime minimă. Rezultă astfel că Vn−1 este arborele minim. Exemplu. Fie G=(X, U, l) un graf conex ponderat neorientat, ca în Figura 2.2, X = 5 şi U = 7 . Pe arce sunt trecute ponderile. Să se construiască un arbore de acoperire de lungime (pondere) minimă, folosind algoritmul lui Kruskal.

22

Modele şi algoritmi de optimizare

16 15 2 17 3

1 16 14 19 18 4 5 14 5 2

1 15 3 10 4 Figura 2.3

10 Figura 2.2

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

Pas 2. k=2. Se alege din U-V1, v2=[2,5], muchia cu cea mai mică pondere ( l[2,5] = min {l (v)} ) şi care adăugată la V1 să nu formeze cicluri. Se obţine
v∈U −V1

V2={[3,4]; [2,5]}. k=3. Se alege din U-V2, v3=[1,3], muchia cu cea mai mică pondere ( l[1,3] = min { l (v)} ) şi care adăugată la V2 să nu formeze cicluri. Se obţine
v∈U −V2

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

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

2. Grafuri în optimizare

23

χi = ⎨

⎧1 dacã nodul iniþial i este în arbore ⎩0 altfel ,

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

pentru i = 1, n .
Algoritmul Prim Pas 1. Se iniţializează cu 0 cei trei vectori. Se dă nodul de start s ( 1 ≤ s ≤ n ) şi χ s = 1 ; A={ s } arborele parţial. Pas 2. Repetă Determină muchia [i,j], cu ponderea minimă, care are o extremitate în arborele parţial, i ∈ A şi cealaltă j ∈ X − A . Atunci χ j = 1 , pj=i şi

până când χ i = 1 (∀) i = 1, n . Pas 3. Arborele de acoperire de lungime minimă este dat de muchiile [pi,i] , iar lungimea minimă este Lmin = ∑ ci . Stop!
i =1 n

cj=l([i,j]) .

Algoritmul furnizează arborele de acoperire de lungime minimă prin înlocuirea muchiilor unui arbore oarecare obţinut cu vârfurile grafului G cu muchiile arborelui de lungime minimă. Exemplu. Să se aplice algoritmul lui Prim grafului din exemplul precedent. Pas 1. s=1; A={1}
nodul

χ

1 1 0 0

2 0 0 0

3 0 0 0

4 0 0 0

5 0 0 0

p c

Pas 2. Iteraţia I: min{l([1,2]), l([1,3]), l([1,4])}= l([1,3])=15
nodul

χ

1 1 0 0

2 0 0 0

3 1 1 15

4 0 0 0

5 0 0 0

p c

24

Modele şi algoritmi de optimizare

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

χ

p c

1 1 0 0

2 0 0 0

3 1 1 15

4 1 3 10

5 0 0 0

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

p c

1 1 0 0

2 1 1 16

3 1 1 15

4 1 3 10

5 0 0 0

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

χ

p c

1 1 0 0

2 1 1 16

3 1 1 15

4 1 3 10

5 1 2 14

χ i = 1 , i = 1,4 şi se trece la pasul următor.
Pas 3. Arborele de acoperire de lungime minimă este {[1,2]; [2,5]; [1,3]; [3,4]} şi are lungimea Lmin=55 . Problema găsirii arborelui de acoperire de lungime minimă este rezolvată în Management Scientist de modulul Minimal Spanning Tree (arbore de acoperire de lungime minimă). Pentru aplicarea acestui modul exemplului de mai sus se procedează astfel. După lansarea pachetului de programe se selectează modulul Minimal Spanning Tree ca în Figura 2.4.

Figura 2.4

2. Grafuri în optimizare

25

După apăsarea butonului OK apare o fereastră din care se selectează File şi, de aici, New. Apar succesiv ferestrele din Figura 2.5 în care se introduc numărul de noduri, numărul de muchii şi apoi muchiile şi ponderile lor.

Figura 2.5

Pentru rezolvare şi afişarea rezultatului se selectează Solution şi, de aici, Solve. Rezultatele sunt date de Figura 2.6 .

Figura 2.6

2.3. Algoritmul lui Dijkstra

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

26

Modele şi algoritmi de optimizare

Fie ∏(x) lungimea celui mai scurt drum de la s la x . Fie S mulţimea vârfurilor pentru care se calculează ∏. Atunci, ∏(x) = {lungimea celui mai scurt drum de la s la x , care are toate vârfurile în S cu excepţia lui x }. Se notează cu Γ + (x) = {mulţimea arcelor care pornesc din nodul x}, iar cu Γ − (x) = { mulţimea arcelor care intră în nodul x}. Dacă graful este neorientat Γ + (x) = Γ − ( x) = Γ( x) = mulţimea arcelor incidente în nodul x.
Algoritmul Dijkstra Pas 1. {Iniţializări} S :={s} ; s nodul de start, ∏(s) :=0 ; Pentru orice x ∈ X − S dacă x ∈ Γ(s ) atunci ∏(x) :=l(s,x) altfel ∏(x) :=+∞ ; Pas 2. {Iteraţia curentă} Repetă Determină y ∈ X − S astfel încât ∏(y) = min ∏(z) ;
z∉S

def

Dacă ∏(y)<∞ atunci S := S ∪ { y} ; Pentru z ∈ Γ + ( y) ∏(z) :=min {∏(z), ∏(y)+l(z,y)} ; până când S=X sau ∏(y)=∞. Pas 3. Stop. Se observă că valorile ∏(z) rămân nemodificate pentru z ∈ S , lucru ce poate fi exploatat în transpunerea pe calculator a algoritmului. Exemplu. În Figura 2.7 sunt date 7 localităţi numerotate de la 1 la 7 şi timpul (în ore) necesar parcurgerii distanţei pe arterele care le leagă. Să se determine ruta pe care se realizează timpul minim între localităţile 1 şi 7.
Rezolvare. Se aplică algoritmul Dijkstra grafului reprezentat de Figura 2.7.

4 1 1 2 5 3 4 9

2 2 5 6 7 1 7

2

4

3

6

Figura

2. Grafuri în optimizare

27

Pas 1. s=1, S={1}, Γ(1) = {2,4} ,
y ∏(y) 1 0 2 1 3 ∞ 4 4 5 ∞ 6 ∞ 7 ∞

Pas 2. Iteraţia I . {Π ( y )} = min {Π ( z )} = min{Π(2), Π(3), Π (4), Π (5), Π(6), Π(7)} = Π (2) ,
z∈ X − S

y=2, S={1,2}, Γ(2) = {1,3,4} . ∏(2)=l([1,2])=1
∏(3)=min{∏(3), ∏(2)+l([2,3])}=min{∞,1+4}=5 ∏(4)=min{∏(4), ∏(2)+l([2,4])}=min{4,1+2}=3
y ∏(y) 1 0 2 1 3 5 4 3 5 ∞ 6 ∞ 7 ∞

Iteraţia a II-a Π( y ) = min {Π ( z )} = min{Π(3), Π (4), Π (5), Π (6), Π(7)} = Π(4) , y=4,
z∈X − S

S={1,2,4},

Γ(4) = {1,2,3,5,6} . ∏(3)=min{∏(3), ∏(4)+l([3,4])}=min{5,3+5}=5 ∏(5)=min{∏(5), ∏(4)+l([4,5])}=min{∞,3+2}=5 ∏(6)=min{∏(6), ∏(4)+l([4,6])}=min{∞,3+9}=12
y ∏(y) 1 0 2 1 3 5 4 3 5 5 6 12 7 ∞

Iteraţia a III-a {Π( y )} = min {Π( z )} = min{Π(3), Π(5), Π(6), Π(7)} = Π(3) , y=3, S={1,2,3,4},
z∈X − S

Γ(3) = {2,4,5,6} . ∏(5)=min{∏(5), ∏(3)+l([3,5])}=min{5,5+2}=5 ∏(6)=min{∏(6), ∏(3)+l([3,6])}=min{12,5+3}=8
y ∏(y) 1 0 2 1 3 5 4 3 5 5 6 8 7 ∞

Iteraţia a IV-a {Π( y)} = min {Π( z )} = min{Π(5), Π(6), Π(7)} = Π(5) , y=5, S={1,2,3,4,5},
z∈ X − S

Γ(5) = {3,4,6,7} . ∏(6)=min{∏(6), ∏(5)+l([5,6])}=min{8,5+6}=8 ∏(7)=min{∏(7), ∏(5)+l([5,7])}=min{∞,5+7}=12
y ∏(y) 1 0 2 1 3 5 4 3 5 5 6 8 7 12

28

Modele şi algoritmi de optimizare

Iteraţia a V-a

{Π( y)} = zminS{Π( z )} = min{Π(6), Π(7)} = Π(6) , y=6, ∈X −
Γ(6) = {3,4,5,7} . ∏(7)=min{∏(7), ∏(6)+l([6,7])}=min{12,8+1}=9
y ∏(y) 1 0 2 1 3 5 4 3 5 5

S={1,2,3,4,5,6},

6 8

7 9

Iteraţia a VI-a

{Π( y)} = zminS{Π( z )} = min{Π(7)} = Π(7) , y=7, ∈X −

S={1,2,3,4,5,6,7},

Pentru nodurile din mulţimea S ∩ Γ( y ) nu s-au mai evaluat ∏(y). Algoritmul se opreşte deoarece S=X. Vectorul ∏(y) conţine cele mai mici distanţe de la nodul 1 la celelalte noduri. Drumul cel mai scurt între nodurile 1 şi 7 se obţine din muchiile (marcate cu litere îngroşate) D={[1,2], [2,3]; [3,6]; [6,7]} şi este de 9 ore. În Management Scientist modulul Shortest Route determină cel mai scurt drum dintre două noduri ale reţelei şi precizează muchiile care realizează acest drum. Pentru rezolvarea problemei din exemplul precedent cu Management Scientist, după lansarea sistemului se selectează modulul Shortest Route (Figura 2.4) şi se introduc datele în ferestrele prezentate în Figurile 2.8. şi 2.9 .

Figura 2.8

2. Grafuri în optimizare

29

Figura 2.9

Rezultatele sunt afişate după selectarea din meniul Solution a opţiunii Solve (Figura 2.10).

Figura 2.10

2.4. Metoda PERT

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

30

Modele şi algoritmi de optimizare

Sunt necesare două tipuri de informaţii pentru fiecare activitate din proiect: a) succesiunea activităţilor care preced o activitate, b) timpul necesar realizării activităţii, care poate fi determinist sau aleatoriu. Diagrama activităţilor este reprezentarea grafică a întregului proiect (graf orientat valuat). Activităţile sunt arcele, iar nodurile, momentele de început şi sfârşit ale activităţilor. Drumul critic este o mulţime de activităţi din proiect care are cea mai mare durată de timp asociată. Pentru prezentarea metodei se va considera un exemplu simplu în care duratele activităţilor sunt presupuse deterministe şi cunoscute. Exemplu. În Tabelul 2.1 sunt trecute activităţile unui proiect şi duratele lor. Graful corespunzător este dat în Figura 2.11. În acest exemplu, pentru o înţelegere mai uşoară, se vor nota activităţile şi duratele lor în noduri, săgeţile indicând succesiunea activităţilor.
Talelul 2.1 Activitate Timpul necesar precedentă realizării (în zile), ti Nici una 2 A 3 A 4 B, C 6 Nici una 2 E 8

Activitate A B C D E F

B3

A 2 START

D 6 C 4 STO P

E 2 Figura 2.11

F 8

2. Grafuri în optimizare

31

Sunt posibile doar trei drumuri: l (ABD)=11 zile , l (ACD)=12 zile, l (EF)=10 zile. Drumul critic este cel care are cea mai mare durată, şi anume ACD. Lungimea drumului critic determină timpul minim în care proiectul poate fi terminat. Drumul critic este important pentru că arată că: − timpul necesar pentru realizarea completă a proiectului nu poate fi redus sub valoarea dată de drumul critic, − orice întârziere în realizarea activităţilor de pe drumul critic va produce întârziere în realizarea proiectului. Pentru reducerea duratei totale a proiectului trebuie reduse duratele activităţilor incluse în drumul critic. Aflarea drumului critic O cale de aflare a drumului critic este descrisă în continuare. Se notează cu: DSi – momentul cel mai devreme de începere a activităţii i, DFi – momentul cel mai devreme de terminare a activităţii i, TSi – momentul cel mai târziu de începere a activităţii i, TFi – momentul cel mai târziu de terminare a activităţii i. Momentul cel mai devreme de începere a unei activităţi este cel mai devreme moment posibil la care acea activitate poate să înceapă, presupunând că toate activităţile care o preced au început la cel mai devreme moment posibil. Momentul cel mai devreme de terminare a unei activităţi este suma momentului de început cel mai devreme posibil cu timpul necesar realizării activităţii respective. Momentul cel mai târziu de terminare a unei activităţi reprezintă cel mai târziu moment posibil de terminare a activităţii respective fără întârzierea proiectului, presupunând că toate activităţile sunt desfăşurate conform planului iniţial. Momentul cel mai târziu de începere a unei activităţi este diferenţa dintre cel mai târziu moment posibil de terminare a activităţii respective şi timpul necesar realizării acestei activităţi. Procedeu pentru determinarea momentelor DS , DF , TS şi TF 1. Pentru prima activitate se ia DS egal cu zero. Dacă se adaugă la DS timpul t necesar realizării primei activităţi se obţine DF pentru prima activitate. 2. Pentru o activitate oarecare i, care pentru toate activităţile care o preced imediat are determinate DS şi DF , se ia DSi=max{DFk | activitatea k precede imediat activitatea i} şi DFi=DSi+ti, deoarece activitatea i nu poate începe până când toate activităţile care o preced nu s−au terminat. 3. Pentru ultima activitate se ia TF=DF al acestei activităţi. Atunci TS=TF−tn , tn fiind timpul necesar realizării ultimei activităţi. 4. Pentru o activitate oarecare i, având pentru activităţile care o succed imediat determinate TS şi TF , se ia TFi=min{TSk | activitatea k succede imediat activitatea i} şi TSi=TFi−ti,.

32

Modele şi algoritmi de optimizare

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

Activitate A B C D E F

TS 0 3 2 6 2 4

TF 2 6 6 12 4 12

M 0 1 0 0 2 2

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

Figura 2.12

Se afişează o fereastră în care se introduc duratele activităţilor şi activităţile care le preced imediat, ca în Figura 2.13. Activităţile se codifică folosind literele alfabetului în ordine crescătoare. O activitate care precede o alta trebuie să fie deja definită atunci când este definită ca precedenţă.

2. Grafuri în optimizare

33

Figura 2.13

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

Figura 2.14

S−au obţinut aceleaşi rezultate ca şi prin aplicarea procedeului descris mai sus. Analiza numai sub aspectul duratei poate fi completată cu costuri asociate activităţilor. De exemplu, durata unei activităţi poate fi redusă dacă se alocă resurse suplimentare. Aceasta implică şi costuri suplimentare. Se introduce astfel şi o funcţie de cost în luarea deciziei.

34

Modele şi algoritmi de optimizare

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

Activitate A B C D E F

ai 1 1 2 4 1 1

σi
0.33 0.67 0.67 0.67 0.33 2.33

σ i2
0.11 0.45 0.45 0.45 0.11 5.43

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

2. Grafuri în optimizare

35

2.5. Probleme propuse
1. O firmă de construcţii are şantiere în 6 locuri diferite. Transportul zilnic de oameni, utilaje, materiale de la sediu la şantiere şi invers este destul de costisitor. Reţeaua arătată în Figura 2.15 prezintă străzile şi distanţa dintre şantiere şi sediul firmei. Nodurile reprezintă şantierele numerotate de la 1 la 6, iar muchiile, străzile. Numerele de pe muchii reprezintă distanţa în kilometri. Dacă se doreşte minimizarea distanţei dintre sediul firmei şi şantierul 6, care este drumul care trebuie parcurs şi lungimea sa?
17 15 2 6 3 4 10 4 3 5 Figura 2.15 2 6 4 5 7

6

Sediul firmei (1)

R. Lmin=22 , obţinută pe traseul D={[1,3], [3,5], [5,6], [6,7]} .
2. O firmă de Internet Cafe trebuie să aibă linii speciale pentru legarea calculatoarelor instalate la cele 5 centre ale sale în diferite locuri din oraş la serverul central. Deoarece liniile sunt scumpe, proprietarul doreşte ca lungimea totală a cablurilor folosite să fie minimă. În Figura 2.16 sunt prezentate cele 5 centre şi serverul central (în noduri), iar muchiile reprezintă traseele posibile şi lungimile cablurilor între server şi centrele firmei. Să se stabilească legăturile care să conducă la cel mai mic cost (lungimea totală a cablurilor să fie minimă).
2 4 2 5 4 3 Serverul central (1) 4 2 6 Figura 2.16 4 4 3 3 3 5

1

R. Arborele

de acoperire

36

Modele şi algoritmi de optimizare

de lungime minimă este dat de muchiile {[1,2], [1,4], [4,6], [4,3], [4,5]} (Figura 2.17), iar lungimea minimă a cablurilor este de Lmin=11.
3

1
3 1 4 2

3

5

6 2 2 Figura 2.17

3. Trebuie să se construiască o autostradă care să treacă prin apropierea localităţilor notate în Figura 2.18 cu numere de la 1 la 14.
8

3 11 2 5 8 2 1 3 4 6 6 7 4 3 9 4 6 9 5 8 11

9 3

2 9

5

12 6 8 5 13

4 3 14

7 10

11 Figura 2.18

Costurile (lucrărilor propriu-zise, lucrărilor de artă, de expropriere, sociale etc.) sunt trecute pe muchiile acestui graf. Să se stabilească traseul autostrăzii care uneşte localităţile 1 şi 14 şi care să implice costuri minime (Kaufmann, 1967). R. Traseul de cost minim care leagă localitatea 1 de localitatea 14 trece prin localităţile 1, 3, 5, 9, 12, 14 şi costă 19 u. m (unităţi monetare).
4. Fie un proiect ale cărui date sunt trecute în Tabelul 2.4.
Tabelul 2.4

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

37

a) Să se traseze diagrama grafului asociat proiectului. b) Să se calculeze DS, DF, TS, TF pentru fiecare activitate, presupunând că DF şi TF pentru ultima activitate coincid. c) Să se precizeze activităţile incluse în drumul critic. R. a) Diagrama grafului asociat este dată în Figura 2.19.

A

B4 E4

C

D Figura 2.19

F2

b) În Tabelul 2.5 sunt trecute valorile corespunzătoare. Durata proiectului este de 15 zile.
Tabelul 2.5 DS DF 0 5 5 9 0 7 9 12 9 13 13 15

Activitate A B C D E F

TS 0 5 3 10 9 13

TF 5 9 10 13 13 15

c) Drumul critic este format din activităţile A, B, E, F.
5. În problema 4 se consideră că timpul necesar realizării activităţii C este de 9 zile.

38

Modele şi algoritmi de optimizare

a) Să se precizeze dacă se modifică drumul critic în acest caz. b) Dar dacă activităţii C îi sunt necesare 11 zile, se modifică drumul critic? R. a) Nu, deoarece activitatea C are o marjă de 3 zile, iar creşterea duratei este doar de 2 zile. b) Da, şi drumul critic este compus din activităţile C, D, F şi durata proiectului este de 16 zile.
6. Un depozit angro doreşte să se modernizeze şi să se extindă. Activităţile necesare sunt trecute în Tabelul 2.6 . Să se stabilească durata minimă şi care sunt activităţile critice ale acestei iniţiative.
Tabelul 2.6 Activitate Descriere activitate precedentă Proiectul de arhitectură Nici una Identificarea chiriaşilor potenţiali Nici una Dezvoltarea prospectului A Selectarea antreprenorului A Pregătirea autorizaţiei de A construcţie Obţinerea autorizaţiei de E construcţie Construcţia D,F Finalizarea contractelor cu B,C chiriaşii Instalarea chiriaşilor G,H

Activitate A B C D E F G H I

Timpul necesar Realizării (în săptămâni), ti 5 6 4 3 1 4 14 12 2

R. Activităţile critice sunt A, E, F, G, I, iar durata minima a iniţiativei este de 26 săptămâni.
7. Se consideră un proiect având datele despre activităţi trecute în Tabelul 2.7
Tabelul 2.7 Activităţi precedent ai e – 2 – 6 A 1 C 1 B 6

Activitate A B C D E

bi 6 10 15 9 10

mi 4 8 5 5 8

unde:
− ai – cea mai optimistă durată pentru activitatea i, − bi – cea mai pesimistă durată pentru activitatea i,

2. Grafuri în optimizare

39

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

R. a) Media duratelor şi dispersia sunt trecute în Tabelul 2.8.
Tabelul 2.8 Activitate ti σ i2 A B C D E 4 8 6 5 8 0.44 0.44 5.44 1.78 0.44

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

A4

C6

D5

STAR

STO

B8 Figura 2.20

E

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

40

Modele şi algoritmi de optimizare

⎛ 16 − 15 ⎞ P (TBE < 16) = F ⎜ ⎟ = 0.50. ⎝ 0,94 ⎠

2. Grafuri în optimizare

41

d) Probabilitatea ca durata proiectului să fie mai mică de 16 zile este P (T proiect < 16 ) = 0.64 ⋅ 0.50 = 0.32 .
8. Exploatarea unei cariere implică următoarele acţiuni: − construirea drumurilor de acces (A) − cumpărarea şi livrarea utilajelor de excavare pentru înlăturarea zonei fertile (B) − angajarea de personal: conductori de utilaje şi mineri (C) − adâncirea excavaţiei (D) − pregătirea minerilor angajaţi în mineritul de suprafaţă (E). Restricţiile impuse de ordinea acţiunilor: − excavarea nu poate începe decât dacă: – utilajele au fost livrate; – conductorii de utilaje au fost angajaţi. În Tabelul 2.9 sunt date duratele şi condiţionările acţiunilor acestui proiect.
Tabelul 2.9 Activitate A B C D E Activitate precedentă Nici una Nici una Nici una A, B, C C Timpul necesar realizării (în luni), ti 10 4 8 5 6

a) Să se traseze diagrama grafului asociat proiectului. b) Să se calculeze DS, DF, TS, TF şi marja pentru fiecare activitate, presupunând că DF şi TF pentru ultima activitate coincid. c) Să se precizeze lungimea drumului critic şi activităţile incluse în drumul critic. R. a) Diagrama este dată de Figura 2.21.

B4

D5

STAR

A1

STO

C8 Figura 2.21

E6

42

Modele şi algoritmi de optimizare

b) Valorile cerute sunt conţinute în Tabelul 2.10.
Tabelul 2.10. DS DF 0 10 0 4 0 8 10 15 8 8

Activitate A B C D E

TS 0 6 2 10 15

TF 10 10 10 15 15

M 0 6 2 0 7

c) Drumul critic conţine activităţile A, D şi are lungimea 15.
9. O firmă producătoare de aspiratoare îşi propune să introducă în fabricaţie aspiratoare portabile. Pentru aceasta iniţiază un proiect ale cărui activităţi şi durate sunt trecute în Tabelul 2.11 .
Tabelul 2.11 Activitate Descriere activitate Proiectarea produsului Cercetarea pieţei de defacere Stabilirea procesului tehnologic Construirea prototipului Pregătirea broşurii cu instrucţiuni de folosire Estimarea costurilor Testarea prototipului Inspectarea pieţei Stabilirea preţului şi estimarea vânzărilor Raportul final Activitate precedentă Nici una Nici una A A A C D B, E H F, G, I Durata realizării (în săptămâni) cea mai cea mai cea mai pesimistă probabilă optimistă 4 1 2 3 2 1.5 1.5 2.5 1.5 1 5 1.5 3 4 3 2 3 3.5 2 2 12 5 4 11 4 2.5 4.5 7.5 2.5 3

A B C D E F G H I J

Să se precizeze activităţile critice, duratele: cea mai optimistă, cea mai probabilă şi cea mai pesimistă de realizare a acestui proiect. R. Activităţile critice sunt A, E, H, I, J şi duratele cea mai optimistă 14.28 , cea mai probabilă 17 şi cea mai pesimistă 19.72 .

3. PROGRAMARE CONVEXĂ

3.1. Mulţimi şi funcţii convexe
În acest capitol sunt prezentate câteva noţiuni şi rezultate (Fletcher, II, 1981) pe care se bazează metodele şi algoritmii următoarelor trei capitole. Definiţia 3.1. O mulţime K ⊂ R n se numeşte convexă dacă (∀)θ ∈ [0, 1] , atunci xθ = (1 − θ )x 0 + θ x1 ∈ K sau, în general: (∀ )x 0 , x1 ,..., x m ∈ K , atunci

(∀ )x 0 , x1 ∈ K

şi

(3.1)

xθ = ∑ θ i x i ∈ K ,
i =0

m

(∀)θ i ∈ [0,1]

şi

∑θ
i =0

m

i

=1

(3.2)

Definiţia 3.2. xθ din Definiţia 3.1 se numeşte combinaţia liniară a punctelor x0, x1 etc. Definiţia 3.3. Fie x 0 , x1 , ..., x n ∈ K . Mulţimea punctelor xθ date de (3.2) se numeşte înfăşurătoarea convexă a mulţimii {x 0 , x1 ,..., x n } . Exemple de mulţimi convexe: mulţimea formată dintr-un singur punct, o dreaptă, n ⎧ ⎫ un segment de dreaptă, un hiperplan (adică ⎨ x ∈ R n ∑ ai xi = b ⎬ ), un semiplan i =1 ⎩ ⎭ n ⎧ ⎫ (adică ⎨ x ∈ R n ∑ ai xi ≥ b ⎬ ), o bilă închisă de centru a şi rază r, i =1 ⎩ ⎭ n ⎧ ⎫ ⎪ ⎪ 2 Br (a) = x ∈ R n x − a 2 ≤ r = ⎨ x ∈ R n ∑ (xi − ai ) ≤ r ⎬ , ⎪ ⎪ i =1 ⎩ ⎭

{

}

un con ( C = x ∈ R n A x − x * ≥ 0 , A ∈ M m ,n (R ) , x* vârful conului) etc. Lema 3.1. Fie Ki , i=1,2,…,m, m mulţimi convexe. Atunci K = I K i este tot o
i =1 m

{

(

)

}

mulţime convexă.

44

Modele şi algoritmi de optimizare

Demonstraţie. Fie

Atunci xθ intersecţia lor.

(∀) i = 1, m .

(∀ )x 0 , x1 ∈ K ,

atunci rezultă că x 0 , x1 ∈ K i

pentru

dat de (3.2) este în fiecare mulţime Ki , deci şi în

Consecinţa 3.1. Mulţimea punctelor admisibile într-o problemă de programare (1.1) cu restricţii liniare este o mulţime convexă. Definiţia 3.4. Fie K ⊂ R n , o mulţime convexă. x se numeşte punct de extrem pentru K dacă, având x=(1−θ ) x0+θ x1 , x 0 , x1 ∈ K şi θ ∈ (0, 1) , atunci rezultă că x=x0=x1, sau, altfel spus, x nu cade în interiorul nici unui segment din K. Exemple: vârfurile unui poligon regulat, punctele circumferiţei unui cerc sunt puncte de extrem pentru poligon, respectiv disc. Definiţia 3.5. Fie K ⊂ R n , o mulţime convexă şi f : K → R o funcţie continuă. Funcţia f se numeşte convexă dacă (∀ )x 0 , x1 ∈ K are loc relaţia f ((1 − θ ) x 0 + θ x1 ) ≤ (1 − θ ) f ( x 0 ) + θ f ( x1 ) , (∀ )θ ∈ [0, 1] . (3.3) Dacă f este diferenţiabilă pe K şi K este deschisă, atunci se poate da următoarea definiţie a funcţiei convexe. Definiţia 3.5’. Funcţia f este convexă pe K dacă (∀ )x 0 , x1 ∈ K are loc relaţia f ( x1 ) ≥ f ( x 0 ) + ( x1 − x 0 )' ∇f ( x 0 ) (3.4) unde cu prim s-a notat transpunerea, iar ∇f este gradientul lui f. Exerciţiu. Să se demonstreze echivalenţa Definiţiilor 3.5 şi 3.5’. Corolar 3.1.

( x1 − x 0 )′ ∇f ( x1 ) ≥

′ f ( x1 ) − f ( x 0 ) ≥ ( x1 − x 0 ) ∇f ( x 0 )

(3.5)

Cu alte cuvinte, panta unei funcţii convexe este nedescrescătoare de-a lungul oricărei drepte. Definiţia 3. 5 ′′ . Fie

f : K → R , o funcţie dublu diferenţiabilă pe K, mulţime

deschisă şi convexă în R n. Funcţia f este convexă dacă d 2 f ( x 0 ) este pozitiv semidefinită (Definiţia 6.2) pentru (∀ )x 0 ∈ K . Definiţia 3.6. Fie K ⊂ R n , o mulţime convexă şi f : K → R o funcţie continuă. f se numeşte strict convexă dacă f ((1 − θ ) x 0 + θx1 ) < (1 − θ ) f ( x 0 ) + θ f ( x1 ) , (∀ )θ ∈ (0, 1) , x 0 ≠ x1 (3.4’)

3. Programare convexă

45

Definiţia 3.7. Fie K ⊂ R n , o mulţime convexă şi f : K → R o funcţie continuă. f se numeşte concavă dacă –f este convexă şi f se numeşte strict concavă dacă –f este strict convexă. Exemple de funcţii convexe: funcţiile liniare (sunt şi concave), funcţiile pătratice 1 de forma f ( x ) = x ' Cx + c ' x + c 0 , unde C este o matrice pozitiv semidefinită 2 (x’Cx≥0 , ). Lema 3.2. Fie K ⊂Rn, o mulţime convexă şi funcţiile convexe

f i : K → R , i = 1, m . Dacă λi ≥ 0 , i = 1, m , atunci convexă pe K.

f = ∑ λi f i
i =1

m

este o funcţie

3.2. Extreme condiţionate

Problema minimizării unei funcţii convexe f pe o mulţime convexă K se numeşte problema de programare convexă şi se poate scrie sub forma ⎧min f ( x ) ⎪ (3.6) ⎨ x ∈ R = x ∈ R n g ( x ) ≤ 0 , i = 1, m i ⎪ ⎩ unde: f şi gi sunt funcţii convexe pe Rn .

{

}

′ Lema 3.3. Dacă g = (g1 ,..., g n ) este convexă pe R n , atunci

R (a) = { x ∈ R n g ( x ) ≤ a }

este convexă. Demonstraţie. Fie x1 , x 2 ∈ R (a ) şi xθ = (1 − θ ) x 0 + θ x1 , θ ∈ [0, 1] . convexitatea lui g avem g ( xθ ) ≤ (1 − θ ) g ( x 0 ) + θ g ( x1 ) ≤ (1 − θ ) a + θ a = a , adică g ( xθ ) ∈ R ( a ) .

Din

Vom nota R (0) = R . Mulţimea R se mai numeşte şi domeniul problemei de programare convexă (3.6) sau mulţimea soluţiilor admisibile (regiunea realizabilă) pentru problema de programare convexă (3.6). Consecinţa 3.2. Regiunea realizabilă R dată de (3.6) este o mulţime convexă. Definiţia 3.8. Fie K ⊂ R n , o mulţime nevidă şi o funcţie f : K → R .

46

Modele şi algoritmi de optimizare

Punctul x * ∈ K este un maxim (minim) global pentru f pe K dacă pentru (∀)x ∈ K avem f ( x ) ≤ f( x * ) f ( x) ≥ f ( x * ) . Punctul x ∈ K este un maxim (minim) local sau relativ pentru f dacă (∃)r > 0 astfel încât pentru
*

(

)

(∀)x ∈ Br ( x* ) = {x ∈ R n

x - x* < r ⊂ K

}

avem

f ( x ) ≤ f( x * ) f ( x ) ≥ f ( x * ) . Un minim global (local) pentru problema (3.6) se numeşte soluţie globală (locală) pentru problema (3.6) .

(

)

Teorema 3.1. Orice soluţie locală x* a unei probleme de programare convexă (3.6) este o soluţie globală şi mulţimea soluţiilor globale, R, este convexă. Demonstraţie. Fie x* o soluţie locală pentru problema (3.6), dar nu globală. Atunci (∃)x1 ∈ R astfel încât f ( x1 ) < f ( x * ) . Pentru θ ∈ [0, 1] se consideră

xθ = (1 − θ ) x * + θ x1 ∈ R (din convexitatea lui R ). Din convexitatea lui f rezultă

f ( xθ ) ≤ (1 − θ) f ( x * ) + θf ( x1 ) = f ( x * ) + θ f ( x1 ) − f ( x * ) < f ( x * ) . Pentru θ suficient de mic, xθ se află în vecinătatea lui x şi inegalitatea de mai sus contrazice proprietatea de optim local a lui x*. Astfel, soluţia locală este şi globală.
*

(

)

Pentru a arăta că R este convexă, se consideră x 0 , x1 ∈ R şi θ ∈ [0, 1] , xθ = (1 − θ ) x 0 + θx1 . Deoarece x0 , x1 sunt soluţii globale, au loc relaţiile f(x0)=f(x1) şi f ( xθ ) ≤ (1 − θ) f ( x0 ) + θf ( x1 ) = f ( x0 ) , adică f ( xθ ) = f ( x 0 ) şi astfel xθ ∈ R , ceea ce arată că R este convexă. Corolar 3.2. Dacă f este strict convexă pe R , atunci orice soluţie globală este unică. Demonstraţie. Fie x 0 ≠ x1 ∈ R şi θ ∈ (0,1) . Atunci
xθ ∈ R şi f ( xθ ) ≥ f ( x 0 ) = f ( x1 ) ,

iar din convexitatea strictă a lui f avem f ( xθ ) < (1 − θ ) f ( x 0 ) + θf ( x1 ) = f ( x 0 ) = f ( x1 ) şi s-a obţinut o contradicţie. Aşadar, nu pot exista două soluţii globale distincte în

R pentru problema (3.6).

3. Programare convexă

47

Teorema 3.2. În problema (3.6) dacă f şi gi, i = 1, m sunt de clasă C1(R ) şi dacă ∇ xL ( x * , λ * ) = 0 , gi ( x* ) = 0 , i ∈ E ; g j ( x* ) ≤ 0 , j ∈I ; (3.7) λ j * ≥ 0, j ∈ I ; λi * g i ( x * ) = 0 ; (∀)i ∈ E ∪ I unde : L ( x , λ ) = f ( x ) + ∑ λi g i ( x ) este funcţia lagrangian, E
i

este mulţimea

indicilor restricţiilor egalităţi, I este mulţimea indicilor restricţiilor inegalităţi din (3.7), atunci x* este o soluţie globală pentru problema (3.6). Demonstraţie. Fie x ∈ R , x ≠ x * . Atunci, deoarece λ ∗ ≥ 0 şi g ( x ) ≤ 0 , f şi g sunt convexe, din ipoteză avem că ∇f ( x * ) + ∑ λ*∇g i ( x * ) = 0 , λ* g i ( x * ) = 0 i i
i =1 m

şi, ţinând cont şi de relaţia (3.4), avem

f ( x ) ≥ f ( x ) + ∑ λ* g i ( x ) ≥ f ( x * ) + ( x − x * )′∇f ( x * ) + i
i =1

m

′ ⎛ ⎞ + ∑ λ* ⎜ g i ( x * ) + x − x * ∇g i ( x * ) ⎟ = i ⎝ ⎠ i =1 m ⎛ ⎞ = f ( x * ) + ( x − x * )′⎜ ∇f ( x * ) + λ*i ∇g i ( x * ) ⎟ = f ( x * ) . ⎜ ⎟ i =1 ⎝ ⎠ * * Aşadar, f ( x ) ≥ f ( x ) şi astfel x este soluţie globală.
m

(

)

Definiţia 3.9. O restricţie inegalitate g i ( x ) ≤ 0 se numeşte activă într-un punct admisibil x* dacă g i ( x * ) = 0 şi inactivă dacă g i ( x * ) < 0 . Următoarea teoremă afirmă că optimalitatea unei soluţii a problemei de programare convexă (3.6) nu se modifică dacă se înlătură restricţiile pe care soluţia le transformă în inegalităţi stricte. Teorema 3.3. Dacă x* este o soluţie a problemei (3.6), atunci x* este şi o soluţie a problemei restrânse ⎧min f ( x ) (3.6’) ⎨ * ⎩gi ( x) ≤ 0 , i ∈E , unde E * = i ∈ E ∪ I g i ( x * ) = 0 .
Demonstraţie. Presupunem că x* nu este soluţie a problemei (3.6’), adică (∃)x ∈ R n , soluţie a problemei (3.6’), astfel încât

{

}

Fie xθ = θ x + (1 − θ )x , 0 < θ < 1 . Să arătăm că pentru θ suficient de mic xθ
*

g i ( x ) ≤ 0 , i ∈ E * şi f x < f ( x ) , (∀)x ∈ R .

()

(3.8)

este o soluţie pentru problema (3.6) ‘mai bună’ decât x*, adică

f ( xθ ) < f ( x * ) .

48

Modele şi algoritmi de optimizare

Mai întâi să arătăm că xθ ∈ R , adică este un punct admisibil pentru problema (3.6’). Din convexitatea funcţiilor g i , i = 1, m , pentru orice θ ∈ (0, 1) avem g i ( xθ ) ≤ θg i x + (1 − θ )g i x * ≤ 0 , (∀)i ∈ E * şi
j

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

()

() ( ) g ( x ) ≤ θg (x ) + (1 − θ )g (x ) < 0 , (∀) j ∉ E
θ
*

*

( )

j

j

,

()

( ) ( )

Convenim ca orice restricţie (3.6) cu egalitate, în punctele admisibile este o restricţie activă. Restricţiile active într-un punct admisibil x restrâng domeniul de admisibilitate în vecinătatea punctului x , în timp ce restricţiile inactive nu au influenţă în vecinătatea punctului x . Aşadar, în studiul proprietăţilor unui extrem local atenţia se poate concentra numai asupra restricţiilor active. Dacă s-ar cunoaşte care restricţii sunt active pentru rezolvarea problemei (3.6), soluţia ar fi un minim local al problemei obţinute din (3.6) prin ignorarea restricţiilor inactive şi tratarea restricţiilor active ca egalităţi. Astfel, pentru soluţii locale, problema (3.6) poate fi privită numai cu restricţii egalităţi. Definiţia 3.10. Un punct x * ∈ K care satisface restricţiile g i ( x ) = 0 , i ∈ E numeşte regulat dacă vectorii ∇g i ( x ) , i ∈ E sunt liniar independenţi.
*

se

3.2.1. Cazul restricţiilor egalităţi
Acest caz reprezintă bine cunoscuta problemă a extremelor cu legături (sau extreme condiţionate). Teorema 3.4. În problema (3.6) considerăm că gi(x)=0, i = 1, m şi că f şi gi sunt diferenţiabile, iar matricea jacobiană ⎛ ∂g 1 ( x * ) ∂g 1 ( x * ) ⎞ ⎜ ⎟ L ∂x n ⎟ ⎜ ∂x1 ⎟ J =⎜ O ⎜ ∂g ( x * ) * ⎟ ∂g m ( x ) ⎟ ⎜ m L ⎜ ∂x ∂x n ⎟ 1 ⎝ ⎠

3. Programare convexă

49

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

λm ∈ R ,

asfel încât

∇f ( x * ) + ∑ λ*∇g i ( x * ) = 0 . i
i =1

m

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

3.2.2. Cazul restricţiilor inegalităţi
Un rol esenţial în rezolvarea problemei (3.6) cu I ≠ φ îl au condiţiile KuhnTucker. Pentru demonstrarea condiţiilor Kuhn-Tucker (cunoscute şi sub denumirea de condiţii optimale de ordinul I) avem nevoie de lema Farkas-Minkowski a cărei demonstraţie o omitem (Henry-Labordere, 1995). Lema 3.4. (Farkas-Minkowski) Fie A ∈ M m,n (R ) , rang ( A) = m şi presupunem că (∀)x ∈ R m Ax ≥ 0 şi c ′x ≥ 0 . Atunci există multiplicatorii λi ≥ 0 , i = 1, n ′ forma c = A t λ , unde λ = (λ1 ,λ2 ,..., λn ) . astfel încât vectorul c se scrie sub

Definiţia 3.11. Fie un punct x * ∈ R de extrem local (global) pentru problema ⎯ ⎯ (3.6) şi un şir x ( k ) k ≥1 ⊂ R astfel încât x ( k ) ⎯k →∞ → x , x ( k ) − x = δ (k) s ( k ) , iar

( )

( )

s ( k ) = 1 , δ ( k ) > 0 . Vectorul (realizabilă) în x * .

s = lim s ( k )
k →∞

se numeşte direcţie admisibilă

Ca={s∈Rn ⎥ s este direcţie admisibilă în x*} conul direcţiilor admisibile în x * , şi C t = s ∈ R n s ′∇g i ( x * ) ≤ 0 , i ∈ E *

Notăm

{

}

conul tangent în x * la R. Ipoteza de calificare a restricţiilor într-un punct de extrem este dată de relaţia (3.10) Ca = Ct . Se poate demonstra următoarea propoziţie (Fletcher, 1981). Propoziţia 3.1. Ipoteza de calificare a restricţiilor (3.10) are loc dacă : i) restricţiile cu indicele i ∈ E * sunt liniar independente, sau ii) vectorii ∇g i ( x * ) , i ∈ E * sunt liniar independenţi.

50

Modele şi algoritmi de optimizare

Considerăm că : E ≠ φ , I ≠ φ şi ⎪E⎪+⎪I⎪=m≤n , x* punct admisibil dă un minim local, f, gi sunt diferenţiabile şi vectorii ∇g i ( x * ) , i ∈ E ∪ ∇g j ( x * ) g j ( x * ) = b j , j ∈ I

{

} {

} sunt independenţi.

Teorema 3.5. (Condiţiile Kuhn-Tucker) În ipotezele de mai sus, condiţia necesară şi suficientă pentru ca x* să fie o soluţie a problemei (3.6) este să existe multiplicatorii λ i ∈ R + , i = 1, m , astfel încât (i) ∂g ( x * ) ∂g ( x * ) ∂f ( x * ) + ∑ λk k + ∑ λk k = 0 , (∀)i = 1, n ∂xi ∂xi ∂xi k∈E k∈I (ii) λk g k ( x * ) − bk = 0 , (∀)k ∈ I

(

)

Demonstraţie. Condiţiile Kuhn-Tucker sunt necesare. Din ipoteza de calificare a restricţiilor în x* rezultă că s′∇g i ( x* ) ≤ 0 , i ∈ E şi deoarece pentru (∀)s ∈ C a avem f ( x ( k ) ) = f ( x * ) + δ ( k ) s ( k ) ∇f ( x * ) + O (δ ( k ) ) , (∀)x ( k ) ∈ Br ( x * ) . Dar f ( x ( k ) ) ≥ f ( x * ) ⇒ δ ( k ) s ( k ) ∇f ( x * ) + O (δ ( k ) ) ≥ 0 .

Împărţim relaţia de mai sus la δ ( k ) > 0 şi trecem la limită pentru k → ∞ şi obţinem că s′∇f ( x * ) ≥ 0 . În Lema Farkas-Minkowski, înlocuind x cu s şi A cu ∇gE ( x * ) , rezultă că (∃)λ E ≥ 0 , astfel încât

∇f ( x* ) = −λE ∇gE ( x* ) , unde

∇gE ( x * ) este matricea care are ca linii ∇g i ( x* ) , i ∈ E . Considerăm vectorul λ = [λE ,0 ]∈ R n şi ∇f ( x* ) = −λ ′∇g ( x* ) cu proprietatea că λ ′∇g ( x* ) = 0 , egalitate evidentă, deoarece g i ( x * ) = 0 , i ∈ E * , λ j = 0 , (∀ ) j ∈ I − E * .
Condiţiile Kuhn-Tucker sunt suficiente. În Teorema 3.2 se consideră b=0 şi rezultă că x* este soluţia problemei (3.6) . Se observă că pentru suficienţa condiţiilor Kuhn-Tucker nu mai este necesară ipoteza calificării restricţiilor. În capitolele 4, 5 şi 6 funcţiile obiectiv sunt cazuri particulare de funcţii convexe, iar restricţiile sunt liniare, deci convexe. Algoritmii prezentaţi în aceste capitole se bazează pe particularităţile fiecărui tip de problemă.

4. PROGRAMARE LINIARĂ

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

∑a
j =1

n

ij

x j ≤ bi , i∈{1, 2,..., m}.

(4.1)

xj reprezentând cantitatea ce trebuie produsă din sortimentul j, ea nu poate fi un număr negativ: (4.2) xj ≥ 0, j∈{1, 2,..., m}. Inecuaţiile (4.1) se numesc restricţiile problemei, iar (4.2), condiţiile de nenegativitate.

52

Modele şi algoritmi de optimizare

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

∑c
j =1

n

j

x j , iar

∑d
j =1

n

j n

x j , şi deci profitul obţinut va fi:
n

∑c
j =1

n

j x j − ∑ d j x j = ∑ (c j − d j )x j j =1 j =1

(4.3)

Problema care se pune acum este de a determina acea variantă de plan, adică acea soluţie a sistemului de inegalităţi (4.1), (4.2) care dă pentru profitul (4.3) valoarea maximă. În acest moment, din acea problemă economică s-a obţinut următoarea problemă matematică: n ⎧ max ∑ (c j − d j ) x j ⎪ ⎪ n j =1 ⎪ (4.4) ⎨∑ a ij x j ≤ bi ⎪ j =1 ⎪x j ≥ 0 ⎪ ⎩ Aceasta este o problemă de programare liniară, sau program liniar.

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

4. Programare liniară

53

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

∑∑ c
i =1 j =1 m i

m

n

ij

xij .

Pentru a putea efectua transportul este necesar ca

∑a = ∑b
i =1 j =1

n

j

,

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

(4.8) (4.9) (4.10) (4.11)

∑x
j =1

n

ij

= ai , 1 ≤ i ≤ m

∑x
i =1

m

ij

= bj , 1 ≤ j ≤ n

xij ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n, care se numeşte program de transport.

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

(4.12)

în condiţiile

∑x
j =1

n

ij

≤ ai , 1 ≤ i ≤ m

(4.13) (4.14) (4.15)

∑x
i =1

m

ij

≥ bj , 1 ≤ j ≤ n
1 ≤ j ≤ n,

xij ≥ 0,

1≤i≤m,

54

Modele şi algoritmi de optimizare

unde ai , 1 ≤ i ≤ m, sunt capacităţile centrelor de depozitare, bj , 1 ≤ j ≤ n, sunt cantităţile necesare uzinelor, iar cij este costul unitar de transport de la depozitul i la uzina j. Pentru a avea soluţii trebuie ca

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

m

n

j

.

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

4.1.3. Alocarea optimă a fondurilor financiare
Având la dispoziţie o sumă totală S care poate fi investită în diverse activităţi j, 1 ≤ j ≤ n, fiecare producând un anumit profit unitar aj , 1 ≤ j ≤ n, se pune problema determinării sumei xj , 1 ≤ j ≤ n, investită pentru activitatea j, astfel încât să se obţină un profit maxim, adică: max ∑ a j x j
j =1 n

(4.16)

în condiţiile:

∑x
j =1

n

j

=S

(4.17) (4.18)

xj ≥ 0,

1≤j≤n.

Problema mai poate fi complicată dând anumite reguli suplimentare în legătură cu posibilitatea de investiţie, cu existenţa unui risc al investiţiilor şi neliniaritatea profitului total.

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

4. Programare liniară

55

− xi − di − bi − pi

stocul din depozit la începutul perioadei i, cantitatea achiziţionată în perioada i, cantitatea vândută în perioada i şi preţul pe perioada i. Dacă sunt n intervale de timp avem:

max ∑ ( pi bi − hxi )
i =1

n

⎧ xi +1 = xi + d i − bi , i = 1, n − 1 ⎪ ⎪ xn + d n − bn = 0 ⎨ ⎪ xi + d i ≤ S ⎪x = 0 , x , d , b ≥ 0 i i i ⎩ 1
Se obţine astfel o problemă de programare liniară.

(4.19)

4.1.5. Problema dietei

Se presupune că există n alimente diferite, cu preţul unitar ci pentru alimentul i, din care trebuie să se pregăteacă o dietă. Dieta trebuie să conţină zilnic m ingrediente nutritive şi din fiecare ingredient j, minimum bj unităţi. Se presupune că o unitate din alimentul i conţine aji unităţi din ingredientul j. Să se determine cea mai economică dietă care satisface minimul nutriţional cerut. Modelarea problemei Se notează cu xi numărul de unităţi din alimentul i conţinut în dietă. Trebuie minimizat costul total al dietei min {c1x1+ c2x2+...+ cnxn} supus la restricţiile următoare date de conţinutul în ingrediente nutriţionale ≥ b1 ⎧ a11 x1 + a12 x 2 + ... + a1n x n ⎪ a x + a x + ... + a x ≥ b2 22 2 2n n ⎪ 21 1 ⎪ M M ⎨ ⎪a x + a x + ... + a x ≥ b m2 2 mn n m ⎪ m1 1 ⎪ x i ≥ 0 , i = 1, n ⎩ Problema care a rezultat este tot o problemă de programare liniară. Acelaşi tip de problemă poate apărea în realizarea amestecurilor de tip mortar, beton etc.

56

Modele şi algoritmi de optimizare

4.2. Diferite forme ale problemelor de programare liniară
Scrisă matriceal, cea mai generală problemă de programare liniară are forma (Zidăroiu, 1983) ′ ′ min [ c1 x 1 + c ′ x 2 + c 3 x 3 ] 2
⎧ A11 x 1 + A12 x 2 + A13 x 3 ≥ b1 ⎪ 1 2 3 (4.20) ⎨ A21 x + A22 x + A23 x = b2 1 2 3 ⎪A x + A x + A x ≤ b 32 33 3 ⎩ 31 1 2 3 x ≥ 0, x oarecare, x ≤ 0 unde x1 este vectorul variabilelor asupra cărora se impun condiţii de nenegativitate, x2 − vectorul variabilelor asupra cărora nu se impun condiţii de semn, x3 − vectorul variabilelor asupra cărora se impun condiţii de nepozitivitate, Aij − submatrice a matricei A , ale cărei elemente sunt coeficienţii componentelor vectorului xj , iar bi sunt subvectori ai vectorului b (1 ≤ i, j ≤ 3) . Prin x≥ 0 se va înţelege că fiecare componentă a vectorului x este nenegativă. Se spune că o problemă are forma standard dacă toate restricţiile sunt ecuaţii şi tuturor variabilelor li se impun condiţii de nenegativitate ⎧min(max)c ′x ⎪ ⎨ Ax = b ⎪x ≥ 0 (4.21) ⎩

c′x = ∑ ci xi
i =1

n

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

(4.22’)

Observaţia 4.1. Orice problemă de forma (4.20) poate fi adusă la forma standard (4.21) sau forma canonică (4.22) folosind următoarele transformări: i) transformarea maximului în minim şi invers se bazează pe următoarea egalitate: max f ( x ) = − min{− f ( x )} ii) transformarea sensului unei inegalităţi se realizează prin înmulţirea cu −1
x∈X x∈X

4. Programare liniară

57

iii) o variabilă x căreia nu i se impun condiţii de semn se înlocuieşte cu diferenţa a două variabile nenegative x = x1−x2 , x1 ≥ 0 , x2 ≥ 0 iv) o variabilă x ≤ 0 se înlocuieşte cu o variabilă nenegativă −x v) transformarea ecuaţiilor în inecuaţii ⎧a ′x ≤ b a ′x = b ⇔ ⎨ ⎩a ′x ≥ b vi) transformarea inecuaţiilor în ecuaţii a'x ≤ b se poate scrie ca o ecuaţie a'x+y=b, introducând o variabilă y ≥ 0 numită variabilă ecart; a'x ≥ b se poate scrie ca o ecuaţie a' x− y=b, y ≥ 0. Variabilele ecart nu apar în funcţia obiectiv (sau apar cu coeficienţi nuli).

4.3. Algoritmul simplex

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

58

Modele şi algoritmi de optimizare

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

4. Programare liniară

59

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

4.4. Fundamentele algoritmului simplex

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

60

Modele şi algoritmi de optimizare

xB = x − ∑ yBxj j
B j∈S

(4.31)

sau pe componente
B xiB = xiB − ∑ y ij x j , i∈ B, j∈S

(4.31’) (4.32) (4.33)

unde x B = B −1 b
y B = B −1 a j j

iar: aj este coloana j a matricei A , S={indicii variabilelor secundare}, B={indicii variabilelor de bază}. Observaţie 4.2. Pentru j∈ B, y B = B −1 a j = e j , ej fiind vectorul unitate. j Folosind (4.31), putem exprima funcţia obiectiv cu ajutorul variabilelor secundare xS astfel
n ⎛ ⎞ ⎞ ⎛ B B z = ∑ c j x j = ∑ c j x j + ∑ ci ⎜ xiB − ∑ yij x j ⎟ = ∑ ci xiB − ∑ ⎜ ∑ ci yij − c j ⎟ x j ⎟ ⎜ ⎜ ⎟ j =1 j∈S i∈B ⎝ j∈S j∈S ⎝ i∈B ⎠ ⎠ i∈B

sau z = z B − ∑ zB − cj xj , j
j∈S

(

)

(4.34)

unde

z B = ∑ ci xiB = c ′ ⋅ x B , B
i∈B

(4.35)

z B = ∑ ci y ij = c ′ ⋅ y B , j B j
i∈B

(4.36)

α j = −( z j − c j )

sunt numiţi coeficienţi de cost redus sau coeficienţi de cost

relativ. Pentru simplificarea scrierii renunţăm la indicele superior B, înţelegându-se că este vorba de elementele corespunzătoare bazei. La baza algoritmului simplex stau următoarele observaţii ce rezultă din teoremele prezentate în continuare (Zidăroiu, 1983). Teorema 4.2. Dacă zj−cj ≤ 0, (∀) j∈ S, atunci programul de bază corespunzător bazei B, (xB=B−1b, xS =0) este optim.

4. Programare liniară

61

Demonstraţie. Pentru acest program valoarea funcţiei obiectiv este z B . Pentru orice alt program x , deoarece xj≥0 rezultă că ∑ z B − ci x j ≤ 0 j

(

)

j∈S

şi atunci z > z B . Teorema 4.3. Dacă (∃)k∈ S cu zk−ck > 0, atunci programul asociat bazei B nu este optim (cu excepţia cazului în care programul este degenerat) şi poate fi îmbunătăţit dacă xk ia valori pozitive. Demonstraţie. Dacă există k ∈ S cu proprietatea că zk−ck>0, atunci programul asociat bazei B nu este optim ∑ z B − ci x j > 0 , iar z < z B j

(

)

j∈S

(cu excepţia cazului în care programul este degenerat) şi poate fi îmbunătăţit dacă xk>0. Teorema 4.4. Dacă (∃)k∈ S , cu zk−ck > 0, şi dacă yik ≤ 0, pentru (∀) i∈B, atunci problema are optim infinit. Demonstraţie. Dacă yik ≤ 0 (∀) i∈B atunci xiB = xiB − y ik x k , ( xj=0 pentru j∈S – {k}), iar creşterea lui xk nu face negativă nici o componentă de bază. Atunci z = z B − ( z k − c k ) x k ⎯⎯ ∞ → −∞ ⎯ xk → Teorema 4.5. Dacă zk−ck > 0, dar (∃) yik > 0, atunci xk poate creşte până la valoarea: x x min i = l , (4.37) i yik > 0 y y lk ik ~ pentru care se obţine un nou program de bază, asociat bazei B , dedusă din B prin înlocuirea coloanei al cu coloana ak. Demonstraţie. Dacă yik > 0 (∀)i∈B, atunci pentru a păstra xi ≥ 0 , ştiind că x i = x i − y ik x k ≥ 0 , x atunci x k ≤ i , (∀)i ∈ B cu proprietatea că yik > 0 . Atunci creşterea maximă a y ik lui xk este dată de (4.37). Observaţia 4.3. Dacă există mai mulţi indici k pentru care zk−ck > 0, ar fi preferabil să se aleagă acela pentru care xl (z k − c k ) y lk

62

Modele şi algoritmi de optimizare

are cea mai mare valoare, ceea ce asigură, în general, o scădere mai rapidă a funcţiei obiectiv şi dă un număr mai mic de iteraţii (o iteraţie reprezintă o trecere de la un program de bază la altul). Practic, se ia drept criteriu de alegere a lui k , acel k pentru care zk−ck=maxim. Acest criteriu se mai numeşte şi criteriu de intrare în bază. Criteriul dat de (4.37) reprezintă criteriul de ieşire din bază.

4.5. Enunţul algoritmului simplex
Fie problema de programare liniară sub forma standard (4.21). Pentru această problemă algoritmul simplex are următorul enunţ. Pas 0. Se determină o bază B în matricea A, se calculează x B = B −1 b , z B = c ′ x B , y B = B −1 a j (aj − coloanele din A), z B −cj, 1 ≤ j ≤ n. B j j Pas 1. a) Criteriu de intrare în bază 1) dacă toţi z B −cj ≤ 0, j∈B, programul este optim. Stop. j 2) dacă (∃) z B −cj > 0, se determină k astfel încât: j zk−ck= max{zj−cj}. b) Criteriu de ieşire din bază 1) dacă toţi yik ≤ 0, problema are optim infinit. 2) dacă (∃) yik > 0, se determină l astfel încât: ⎧x ⎫ xl = min ⎨ i ⎬ . i yik > 0 y y lk ⎩ ik ⎭ Pas 2. Se înlocuieşte în baza B vectorul al cu vectorul ak , obţinându-se baza ~ ~ ~ ~ ~ B , şi se calculează x B , z B , y B , 1 ≤ j ≤ n, z B − c j , 1 ≤ j ≤ n, j j
conform cu (4.31), (4.34), (4.33) apoi se trece la pasul 1, înlocuind baza B ~ cu baza B . Observaţia 4.4. Pentru o problemă de maximizare: ⎧max c ′x ⎪ ⎨ Ax = b ⎪x ≥ 0 ⎩ trebuie modificat criteriul de intrare în bază astfel: a'1) dacă toţi zj−cj ≥ 0, programul este optim. a'2) dacă (∃)j pentru care zj−cj < 0, se determină k astfel încât zk−ck= min{zj−cj}.

4. Programare liniară

63

4.6. Tabelul simplex şi transformarea sa

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

zB

ale primului tablou este util să

trecem coeficienţii cj din funcţia obiectiv în partea de sus a coloanelor respective. Să presupunem că ak trebuie să intre în bază în locul lui al. Elementul ylk se numeşte pivot şi îl evidenţiem încercuindu-l. Pentru fiecare bază se alcătuieşte câte un tabel simplex (Tabelul 4.1). Cum se calculează elementele noului tablou corespunzător noii baze ? Elementele liniei k se împart la pivot ~ ~ y lj x B x kB = l ; y kj = y lk y lk

(4.38)

Elementele celorlalte linii se calculează cu regula dreptunghiului cu diagonala principală cea a pivotului. ~ ~ y lj x B (i ≠ l ) x iB = x i − y ik l (i ≠ l ) ; y ij = y ij − y ik (4.39) y lk y lk Modificarea funcţiei obiectiv se face după formulele de mai jos. ~ ~ y lj x z B = z B − (z k − c k ) l ; z B − c j = (z j − c j ) − ( z k − c k ) j y lk y lk

(4.40)

64 Tabelul 4.1

Modele şi algoritmi de optimizare

Coeficienţii funcţiei obiectiv c1 CVB VB VVB x1 cl xl cm xm cm+1 xm+1 ck xk cn xn alegem min xi y ik

Coeficienţii variabilelor de bază în funcţia obiectiv

c1

x1

x1

1

...

0

...

0

y1,m+1

... y1,k ...

y1,n

M
cl

M
xl

M
xl

M
0 ...

M
1 ...

M
0

M
yl,m+1

M
... yl,k ...

M
yl,n

M
cm

M
xm

M
xm

M
0 ...

M
0 ...

M
1

M
ym,m+1

M
... ym,k ...

M
ym,n alegem max

valoarea funcţiei obiectiv

z

0

0

0 zm+1−cm+1

zj−cj>0

În noul tabel în loc de xl este trecut xk în coloana VB. ~ ~ Deoarece xk este variabilă de bază, y kB = e k , z kB − c k = 0 , aşa cum rezultă şi din (4.39) şi (4.40). În problemele practice m, numărul liniilor matricei A, este mult mai mic decât n, numărul coloanelor, şi atunci efortul de calcul trebuie redus la coloanele care sunt necesare în găsirea soluţiei optime. În algoritmul simplex revizuit se fac calcule doar pentru elementele tabloului strict necesare. O variantă a algoritmului simplex revizuit se bazează pe reprezentarea inversei matricei de bază B ca un produs de matrice elementare E (Luenberger, 1989), obţinute din matricea unitate, care au elementele coloanei p date de relaţiile: y 1 , vi = ik , i ≠ l şi v l = yl k yl k yl k fiind pivotul. Înmulţirea lui E la dreapta cu orice coloană a tabelului simplex este echivalentă cu aplicarea regulii dreptunghiului. Dacă baza iniţială în algoritmul simplex este cea canonică (B=In), atunci la iteraţia a p-a, inversa matricei B este B −1 = E p E p −1 ...E 2 E1 , unde Ep este o matrice elementară de forma dată mai jos

4. Programare liniară

65

0 L 0⎞ ⎛ 1 0 L 0 v1 ⎜ ⎟ 0 L 0⎟ ⎜ 0 1 L 0 v2 ⎜ L L L L L L L L⎟ ⎜ ⎟ ⎜ 0 0 L 1 v l −1 0 L L⎟ E =⎜ ⎟. 0 L 0⎟ ⎜ 0 0 L 0 vl ⎜ 0 0 L 0 v l +1 1 L 0 ⎟ ⎜ ⎟ ⎜L L L L L 0 L 0 ⎟ ⎜0 0 L L v 0 L 1⎟ m ⎝ ⎠ ~ Astfel, yk − coloana a k-a din noua bază B − va fi calculată direct cu formula yk=(Ep.Ep-1…E1ak)’ .

4.7. Exemplu

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

Să se determine planul de producţie al secţiei pentru produsele P1 şi P2 care să dea un profit maxim. Rezolvare a) Modelarea problemei. Fie x1, x2 cantităţile din produsele P1 şi P2 ce trebuie fabricate. Formularea matematică a problemei este ⎧max z = 4 x1 + 3 x 2 ⎧max z = max{4 x1 + 3x2 } ⎪2 x + x + x = 8 ⎪3 x + 2 x ≤ 24 2 3 2 ⎪ 1 ⎪ 1 ⎪ ⎪ sau ⎨3x1 + 2 x 2 + x 4 = 24 x1 + 3 x2 ≤ 18 ⎨ ⎪ x + 3 x + x = 18 ⎪x , x ≥ 0 2 5 ⎪ 1 ⎪ 1 2 ⎪ ⎪ ⎩2 x1 + x2 ≤ 8 ⎩ xi ≥ 0, i ∈1,5 după adăugarea variabilele de compensare

66

Modele şi algoritmi de optimizare

b) Tabelul simplex şi calculele aferente Calculele corespunzătoare primei iteraţii sunt pezentate în Tabelul 4.3.
4 CVB 0 VB x3 VVB 8 x1 2 Tabelul 4.3 3 0 x2 1 x3 1 0 x4 0 0 x5 0 alegem min xi y ik

8 =4 2

0

x4

24

3

2

0

1

0

24 3 18 1

=8

0

x5

18

1

3

0

0

1

= 18

valoarea funcţiei obiectiv z 4 x1

alegem min 0 –4 –3 0 0 0 zj−cj<0 8

4

1

1 2 1 2 5 2

1 2 − 1 2
1 2

0

0

0

x4

12

0

1

0

24

0

x5

14

0

0

1

28 5
alegem min

valoarea funcţiei obiectiv z

16

0

–1

2

0

0

zj−cj<0

La prima iteraţie a ieşit din bază x3 şi a intrat x1 , iar la iteraţia a doua a ieşit din bază x5 şi a intrat x2 . Iteraţia a doua este prezentată în Tabelul 4.4. c) Culegerea rezultatelor din tabelul simplex final Maximul funcţiei de optimizat este 21.6 şi se obţine pentru x1=1.2 ; x2=5.6 ; x3=0 . Soluţia de bază este nedegenerată. Valorile variabilelor auxiliare x3=0 ; x4=9.2 ; x5=0 , arată că soluţia optimă face egalităţi doar restricţiile 1 şi 3 , adică se foloseşte integral timpul la aceste maşini, iar cea de-a doua inegalitate arată că prin această soluţie nu se utilizează integral timpul celei de-a doua maşini.

4. Programare liniară

67 Tabelul 4.4 4 3
x2

0
x3

0
x4

0
x5

alegem min
xi yik

CVB

VB

VVB

x1

4

x1

6 5

1

0

3 5 − 2 5 1 5

0

1 5 1 5

8

0

x4

46 5 28 5

0

0

1

24

3

x2

0

1

0

2 5 2 5

28 5
alegem min
zj−cj < 0

valoarea funcţiei obiectiv z

21.6

0

0

9 5

0

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

Figura 4.1

După apăsarea butonului OK, apare fereastra în care se introduc coeficienţii funcţiei obiectiv şi restricţiile problemei, ca în Figura 4.2.

68

Modele şi algoritmi de optimizare

Figura 4.2

După ce s−au introdus datele, pentru rezolvare se apasă butonul Solve şi apare fereastra cu rezultate ca în Tabelul 4.5.
Tabelul 4.5
Objective Function Value = Variable -------------X1 X2 Constraint -------------1 2 3 21.600 Reduced Costs -----------------0.000 0.000 Dual Prices -----------------1.800 0.000 0.400 Value --------------1.200 5.600 Slack/Surplus --------------0.000 9.200 0.000

OBJECTIVE COEFFICIENT RANGES Variable -----------X1 X2 Lower Limit --------------No Lower Limit No Lower Limit Current Value --------------4.000 3.000 Upper Limit --------------No Upper Limit No Upper Limit

RIGHT HAND SIDE RANGES Constraint -----------1 2 3 Lower Limit --------------No Lower Limit No Lower Limit No Lower Limit Current Value --------------8.000 24.000 18.000 Upper Limit --------------No Upper Limit No Upper Limit No Upper Limit

Rezultatele sunt cele obţinute şi în urma aplicării algoritmului simplex. Informaţia din coloana Reduced Costs arată cu cât ar trebui să se modifice coeficientul variabilei respective în funcţia obiectiv pentru ca variabila să fie pozitivă în soluţia optimă (Anderson et al, 1998). Astfel, dacă o variabilă este deja pozitivă, atunci costul redus este zero.

4. Programare liniară

69

Informaţiile despre restricţii (Constraint) din Tabelul 4.5 se referă la: − Slack/Surplus – această coloană dă valorile variabilelor auxiliare. Dacă restricţiile sunt verificate cu inegalităţi stricte, atunci variabilele auxiliare sunt nenule, altfel vor fi nule. − Dual prices – conţine informaţii despre valorile marginale ale resurselor. În Management Scientist un preţ dual înseamnă « îmbunătăţirea valorii optime a funcţiei obiectiv corespunzătoare creşterii cu o unitate a termenului liber al restricţiei » . Pentru restricţiile verificate cu egalitate aceste preţuri vor fi nenule. Pentru restricţiile cu inegalităţi stricte aceste preţuri sunt nule, din cauza nefolosirii integrale a resurselor disponibile. Secţiunea Objective Coefficient Ranges (intervalele coeficienţilor în funcţia obiectiv) dă intervalul în care pot varia coeficienţii funcţiei obiectiv astfel încât soluţia să rămână optimă. Ultima secţiune Right Hand Side Ranges (intervalele termenilor liberi) conţine intervalele în care ar trebui să se menţină termenii liberi pentru ca preţul dual asociat restricţiei să rămână nemodificat. Observaţia 4.6. Analiza sensibilităţii prezentată mai sus se bazează pe faptul că un singur termen liber variază la un moment dat, ceilalţi rămânând la valorile iniţiale. Aceeaşi problemă poate fi rezolvată şi utilizând Solver-ul din Excel. Mai întâi se creează foaia electronică de calcul cu datele de intrare, ca în Figura 4.3. Celulele D13−D14 sunt considerate necunoscutele x1 – x2 , celulele H7−H9 conţin restricţiile problemei H7= B7*D13+C7*D14, H8= B8*D13+C8*D14, H9= B9*D13+C9*D14, iar celula D3 = B10*D13+C10*D14, funcţia de optimizat.

Figura 4.3

70

Modele şi algoritmi de optimizare

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

Figura 4.4

5.

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

Figura 4.5

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

4. Programare liniară

71

formele de prezentare a rezultatelor. Se apasă butonul OK după precizarea tipurilor de rapoarte. Se creează Answer Report (Raport răspuns), Sensitivity Report (Raport sensibilitate), Limits Report (Raport limite) ca în Tabelele 4.6, 4.7 şi respectiv 4.8.
Tabelul 4.6 Microsoft Excel 10.0 Answer Report Worksheet: [Programare liniara.xls]Sheet1 Report Created: 7/23/2002 7:38:01 AM Target Cell (Max) Original Final Value Value 0 21.6

Cell $D$3

Name Functia de optimizat

Cell $B$13 $B$14 Cell $G$13 $G$14 $G$15 $B$13 $B$14

Name x1 Produsul P1 x2 Produsul P1 Name 2x1+x2<=8 3x1+2x2<=24 x1+3x2<=18 x1 Produsul P1 x2 Produsul P1

AdjusTable Cells Original Value Final Value 0 0 Constraints Cell Value 8 14.8 18 1.2 5.6 Formula $G$13<=$D$7 $G$14<=$D$8 $G$15<=$D$9 $B$13>=$E$13 $B$14>=$E$14 Status Binding Not Binding Binding Not Binding Not Binding Slack 0 9.2 0 1.2 5.6 1.2 5.6

Tabelul 4.7 Microsoft Excel 10.0 Sensitivity Report Worksheet: [Programare liniara.xls]Sheet1 Report Created: 7/23/2002 7:38:02 AM AdjusTable Cells Final Cell $B$13 $B$14 Name x1 Produsul P1 x2 Produsul P1 Value 1.2 5.6 Reduced Cost 0 0 Objective Coefficient 4 3 Allowable Increase 2 9 Allowable Decrease 3 1

72 Constraints Final Cell $G$13 $G$14 $G$15 Name 2x1+x2<=8 3x1+2x2<=24 x1+3x2<=18 Value 8 14.8 18 Shadow Price 1.8 0 0.4

Modele şi algoritmi de optimizare

Constraint R.H. Side 8 24 18

Allowable Increase 6.57142857 1E+30 6

Allowable Decrease 2 9.2 14

Tabeleul 4.8 Microsoft Excel 10.0 Limits Report Worksheet: [Programare liniara.xls]Limits Report 1 Report Created: 7/23/2002 7:38:02 AM Target Cell $D$3 Cell $B$13 $B$14 Name Functia de optimizat AdjusTable Name x1 Produsul P1 x2 Produsul P1 Value 1.2 5.6 Value 21.6 Lower Limit 0 0 Target Result 16.8 4.8 Upper Limit 1.2 5.6 Target Result 21.6 21.6

Se obţin aceleaşi rezultate pentru funcţia obiectiv şi pentru valorile necunoscutelor ca şi cu Management Scientist.

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

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

4. Programare liniară

73

Pentru o problemă nedegenerată, convergenţa algoritmului simplex, mai precis faptul că el conduce la o soluţie într-un număr finit de iteraţii, este asigurată. Pentru o problemă degenerată, adică având cel puţin un program degenerat, este posibilă, în principiu, ciclarea. Observaţia 4.7. Degenerarea nu implică în mod necesar ciclarea: cu toate că foarte multe probleme practice sunt degenerate, exemplele de ciclare se construiesc cu destulă dificultate (exemplul dat de Beale în Hadley G. 1962 Linear Programming, Addison−Wesley, Reading, Mass.). Degenerarea apare, în afara cazului în care vectorul b are componente nule, atunci când criteriul de ieşire al algoritmului simplex, mai precis minimul (4.37), nu defineşte în mod unic variabila care iese din bază. Presupunem că acest minim se atinge pentru doi indici, l şi h, adică xl x = h , y lk y hk şi presupunem că alegem variabila xl să părăsească baza. Atunci ~ y B x h = x h − xl hk = 0 , y lk şi deci noul program de bază va fi degenerat. Dacă programul iniţial nu va fi degenerat, degenerarea poate apărea numai în acest caz. Pentru demonstrarea valabilităţii generale a algoritmului simplex este totuşi necesară o regulă care să facă posibilă înlăturarea ciclării. Regula lui Bland de înlăturare a ciclării (Luenberger, 1989): a) se selectează coloana q = min q z q − c q > 0 , adică, cel mai mic indice

{

}

de coloană favorabilă pentru a intra în noua bază, b) pentru ieşirea din bază se ia coloana candidată cu indicele cel mai mic. Vom demonstra prin reducere la absurd că regula lui Bland înlătură ciclarea. Presupunem că, deşi aplicăm regula, apare ciclarea. În timpul ciclului un număr finit de coloane intră şi ies din bază. Fiecare dintre aceste coloane intră la nivelul 0 şi funcţia obiectiv nu-şi schimbă valoarea. Ştergem coloanele şi liniile care nu conţin pivotul în timpul unui ciclu, obţinând o nouă problemă de programare liniară redusă care, de asemenea ciclează. Presupunem că această nouă problemă are m linii şi n coloane şi că suntem în situaţia ca să înlocuim coloana n cu coloana p. Fără a restrânge generalitatea, presupunem că baza curentă este situată pe ultimele m coloane. Putem considera problema de programare liniară redusă ca având matricea coeficienţilor restricţiilor A , iar vectorul coeficienţilor funcţiei obiectiv c. Notăm pivotul cu amp >0. Din partea b) a regulii lui Bland, an poate părăsi baza numai dacă nu există egalitatea în testul raportului din criteriul de ieşire

74

Modele şi algoritmi de optimizare

din bază şi atunci b=0, deoarece toate coloanele sunt în ciclu, iar aip≤0 , (∀ )i ≠ n . Să considerăm cazul când an este în situaţia de a intra în bază. Partea a) a regulii lui Bland ne asigură că rn = z n − c n > 0 şi ri = z i − c i ≤ 0 pentru (∀ )i ≠ n . Aplicăm formula ′ ri = ⎛ c B B −1 S ⎞ − c i ⎜ ⎟ ⎝ ⎠i ′ ultimelor m coloane ca să arătăm că fiecare componentă λ = (c B ) B −1 ≤ 0 cu excepţia lui λ m > 0 . Atunci r p = λ ′a p − c p > c p > 0 .

( )

Contradicţie cu faptul că r p ≤ 0 . Îndepărtarea situaţiei de ciclare se poate face şi cu metoda perturbării a lui A. Charnes, sau cu cea lexicografică a lui Dantzig şi Wolfe . Observaţia 4.8. O regulă practică de evitare a ciclării este următoarea: se divid liniile corespunzătoare variabilelor nule din Tabelul simplex prin pivoţii posibili, mergând de la stânga spre dreapta; în momentul când unul dintre rapoarte este mai mic decât celelalte, precizăm variabila care iese din bază ca fiind cea care corespunde raportului minim (Zidăroiu, 1983).

4.9. Interpretarea geometrică a algoritmului simplex

Rezolvarea problemelor simple de programare liniară (n=2 sau n=3) se poate face şi geometric. Pentru exemplificare considerăm următoarea problemă (Mihăilă, Popescu, 1978). Realizarea a două produse P1 şi P2 se face folosind patru materii prime M1, M2, M3, M4 . Disponibilul de materii prime, consumul specific şi profitul unitar pentru fiecare tip de produs sunt date de tabelul 4.9.
Tabelul 4.9 Produsul Materia primă M1 M2 M3 M4 Profit unitar Consum specific P1 2 1 4 0 2 P2 2 2 0 4 3 12 8 16 12 Disponibil

Să se determine cantităţile x şi y care trebuie realizate din produsele P1 , respectiv, P2 , pentru ca profitul total să fie maxim.

4. Programare liniară

75

Rezolvare Funcţia de optimizat (obiectiv) este f(x,y) = 2x + 3y . Restricţiile problemei, aşa cum rezultă din Tabelul 4.8, sunt: ⎧ 2x + 2 y ≤ 12 ⎪ x + 2y ≤ 8 ⎪ ⎪ ⎨ 4 x + 0 y ≤ 16 ⎪ 0 x + 4 y ≤ 12 ⎪ ⎪x ≥ 0 , y ≥ 0 ⎩ Se cere să se determine necunoscutele x0 , y0 , astfel încât să se verifice restricţiile, iar f(x0 , y0) să ia valoarea maximă. Considerăm restricţiile cu egalităţi şi reprezentăm grafic dreptele ale căror ecuaţii rezultă (Figura 4.6). x (d2) , 4x=16 ⇒ x=4 (d3) , 4y=12 ⇒ x+y=6 ⇒ y=6−x (d1) , x+2y=8 ⇒ y=4− 2 y=3 (d4) , x≥0 , y≥0 . Reprezentarea grafică a restricţiilor conduce la poligonul OABCD, ale cărui puncte constituie soluţii ale fmax problemei de programare 4 R a liniară (mulţimea punctelor admmisibile). Din d4 acest motiv se numeşte D C poligonul soluţiilor. Rezultă g că realizarea practică a B 2 producţiei celor două produse din cele patru materii prime se poate face într-o infinitate d3 de moduri. Să alegem dintre A aceste soluţii pe cele care dau O 0 2 4 6 valoarea maximă pentru funcţia obiectiv. Punem funcţia Figura 4.6 obiectiv sub forma f 2 (d) y = − x , 3 3 care reprezintă un fascicul de drepte, considerând f ca parametru ( (g) o dreaptă din fascicul). Funcţia f va avea maximul o dată cu ordonata la origine a dreptei (d). Astfel, trebuie găsită acea dreaptă din fasciculul (d) care are ordonata la origine cea mai mare şi care trece printr-un punct din poligonul soluţiilor. Se observă că acea dreaptă trebuie să treacă prin punctul B, un vârf al poligonului soluţiilor.
d1

76

Modele şi algoritmi de optimizare

x =6−x ⇒ x=4 , y=2 2⎭ 2 ⎩ Valoarea funcţiei obiectiv este f(4, 2)=14 . În Tabelul 4.10 se prezintă starea sistemului de restricţii şi gradul de utilizare a resurselor pentru soluţia optimă. 4−
Materia primă M1 M2 M3 M4 Tabelul 4.10 Cantitatea folosită pentru Cantitatea programul optim disponibilă 12 2⋅4+2⋅2=12 8 1⋅4+2⋅2=8 16 4⋅4+0⋅2=16 12 0⋅4+4⋅2=8 Gradul de folosinţă 100% 100% 100% 66.67%

{B} = ⎧ y = 4 − x ⎫ I {y = 6 − x} ⇒ ⎨ ⎬

Problema are soluţie unică, deoarece dreapta (d) nu este paralelă cu nici o latură a poligonului soluţiilor. Dacă, de exemplu, se modifică profitul unitar pentru produsul P2 , devenind 4, atunci dreapta (d) devine f x (d’) y = − , 4 2 fiind paralelă cu dreapta corespunzătoare celei de-a doua restricţii (latura BC a poligonului soluţiilor). În acest caz, toate punctele segmentului BC sunt soluţii optime ale problemei date. Avem de-a face cu o problemă cu o infinitate de soluţii optime. Se pot introduce alte criterii suplimentare pentru a putea selecta o soluţie. Metoda geometrică s-ar mai putea aplica şi în cazul a trei necunoscute, în locul poligonului soluţiilor obţinându-se poliedrul soluţiilor. Pentru n > 3 nu mai pot fi reprezentate grafic hiperpoliedrele soluţiilor şi deci metoda devine impracticabilă.

4.10. Interpretarea economică a algoritmului simplex

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

4. Programare liniară

77

activităţi, adică să producem sortimentul k în cantitatea xk > 0, producţiile celorlalte sortimente de bază se vor modifica în conformitate cu (4.39); unele vor trebui reduse şi, cum nu pot fi reduse decât cel mult până la 0, rezultă că xk poate creşte cel mult până la valoarea dată de (4.37), pentru care activitatea de bază l atinge nivelul 0. Aceasta este interpretarea criteriului de ieşire. Creşterea lui xk cu o unitate implică variaţii de −yik ale celorlalte activităţi şi deci şi o variaţie a funcţiei obiectiv

∆z = c k + ∑ ci (− y ik ) = c k − z k ,
i∈B

adică o creştere a lui xk cu o unitate aduce, în acelaşi timp, un profit suplimentar ck−zk. Dacă zk−ck < 0 (pentru problema de maximizare a beneficiilor), atunci ∆ z>0 şi, deci, introducerea activităţii k în bază, adică producerea sortimentului k, aduce o îmbunătăţire a funcţiei obiectiv, ceea ce revine la o sporire a profitului total. Regăsim astfel criteriul de intrare în bază al algoritmului simplex. Aplicarea algoritmului simplex constă astfel într-o explorare sistematică a diverselor variante de m activităţi de bază; la fiecare iteraţie se înlocuieşte o activitate l printr-o activitate k, obţinându-se o creştere a profitului total, până când, pentru toate activităţile care nu sunt în bază, avem zk−ck ≥ 0, şi deci nici o creştere a profitului nu mai este posibilă.

4.11. Metoda celor două faze

Metoda celor două faze permite obţinerea unui program de bază de plecare în rezolvarea problemei de programare iniţială sub forma standard, adică (Zidăroiu, 1983) : ⎧min c ′x ⎪ (4.41) ⎨ Ax = b ⎪x ≥ 0 ⎩ Se poate presupune că bi ≥ 0, 1≤ i ≤ m ; dacă nu, se înmulţeşte linia respectivă cu −1. Se adăugă la fiecare ecuaţie câte o variabilă artificială x ia şi se obţine: ⎧ Ax + Ix a = b ⎪ (4.42) ⎨x ≥ 0 ⎪x a ≥ 0 ⎩ Problema (4.41) are programe dacă (4.42) are programe (x, xa), cu xa = 0. Dacă se obţine un astfel de program de bază cu xa = 0, atunci x corespunzător este un program de bază pentru (4.41).

78

Modele şi algoritmi de optimizare

În faza I pentru a obţine un program de bază al sistemului (4.41) se rezolvă problema de programare liniară
⎧min ∑ x ia = W ⎪ a ⎪ Ax + Ix = b ⎨ ⎪ x i ≥ 0, 1 ≤ i ≤ n ⎪ x a ≥ 0, 1 ≤ j ≤ m ⎩ j

(4.43)

folosind algoritmul simplex obişnuit. Se observă că pentru problema (4.43) dispunem de programul de bază iniţial x=0, xa = b ( ≥ 0 ), corespunzător bazei I din matricea acestui sistem [A,I]. Deoarece x ia ≥ 0 ⇒ ∑ x ia ≥ 0 , şi deci min W ≥ 0. Sunt posibile 2 cazuri: (i) dacă min W > 0, atunci problema (4.41) nu are program de bază (dacă ar avea, atunci (4.43) ar avea programe cu xa = 0 şi deci min W = 0) (ii) dacă min W = 0, am obţinut un program cu xia = 0, 1 ≤ i ≤ m, deci un program de bază al problemei (4.43), şi se trece la faza a II-a pentru rezolvarea problemei (4.41) (după eliminarea liniilor redundante). Matricea A este acum transformată aşa cum a ieşit din faza I. ⎧min c ′x ⎪ Faza a II−a ⎨ Ax = b . ⎪x ≥ 0 ⎩ Observaţia 4.9. Faza I constă din eliminarea din bază a variabilelor artificiale x ia şi înlocuirea lor cu variabilele xj. Când toate variabilele au fost eliminate din bază, adică la sfârşitul fazei I, coloanele acestora sunt şterse din tabelul simplex şi se începe faza a II-a, pornind de la acest tabel simplex, în care calculăm doar elementele liniei zj−cj corespunzătoare funcţiei obiectiv din faza a II−a. În cele prezentate până acum am presupus că rang A = m. Introducerea variabilelor artificiale face ca rangul matricei [A, I] să fie sigur m. Dacă rang A < m sau dacă problema este degenerată, atunci când se ajunge la min ∑ x ia = 0, este posibil să mai rămână în bază câteva variabile artificiale, desigur cu valoarea 0. Faza I se consideră încheiată atunci când toate variabilele x ia au fost eliminate, şi anume: (i) dacă rang A = m (dar problema este degenerată), variabilele x ia = 0 pot fi întotdeauna înlocuite cu variabilele xj care intră în bază tot cu valoarea 0, fără să producă vreo modificare în funcţia obiectiv. (ii) dacă rangA < m, nu este posibilă eliminarea tuturor variabilelor x ia (câteva rămân în bază cu valoarea 0). În acest caz, liniile corespunzătoare ale matricei

4. Programare liniară

79

A sunt combinaţii ale celorlalte, adică restricţiile corespunzătoare a'i x = bi sunt consecinţe ale celorlalte şi se pot elimina. Această discuţie arată că nu este necesar să se impună rang A = m. Dacă în problema (4.42) cu b ≥ 0 există xj care apare într-o singură ecuaţie şi cu coeficient pozitiv, adică matricea A conţine un vector unitate, atunci în ecuaţia respectivă nu este necesară introducerea unei variabile auxiliare, variabila xj putând fi luată în baza iniţială. Desigur că dacă există k astfel de variabile, vom introduce doar n−k variabile artificiale, ceea ce scurtează faza I. Uneori este necesară cunoaşterea inversei bazei curente a problemei de programare. În acest caz, la sfârşitul fazei I nu mai înlăturăm din tabel coloanele corespunzătoare variabilelor artificiale. În fiecare tabel al fazei a II−a, în aceste coloane se găseşte matricea B−1I = B−1, adică inversa bazei curente B. Exemplu. O balastieră are 3 linii de sortare S1, S2, S3, pentru 2 tipuri de agregate A1, A2 şi trebuie să sorteze 300 tone din primul tip şi 372 tone din al doilea tip. Profitul încasat de pe urma sortării materialelor diferă de la o linie la alta precum diferă şi cantităţile ce pot fi sortate conform cu Tabelul 4.11.
Tabelul 4.11 Agregat Linie de sortare S1 S2 S3 Cantitatea ce trebuie sortată A1 2 3 1 300 tone A2 1 2 2 372 tone Profit 5 u. m. 4 u. m. 6 u. m.

Să se determine repartiţia optimă pe liniile de sortare a agregatului astfel încât profitul obţinut să fie maxim. Rezolvare a) Modelarea problemei Fie x1, x2 , x3 cantităţile sortate pe liniile S1 , S2 , S3 respectiv. Atunci funcţia de optimizat este f = 5x1+4x2+6x3 .

80

Modele şi algoritmi de optimizare

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

b) Metoda celor două faze i) Faza I Se aplică algoritmul simplex problemei a min x1a + x 2

{

}
a 1 a 2

⎧ 2 x1 + 3 x 2 + x3 + x = 300 ⎪ ⎨ x1 + 2 x 2 + 2 x3 + x = 372 ⎪ x , x , x , xa , xa ≥ 0 2 ⎩ 1 2 3 1 Calculele fazei I sunt trecute în Tabelul 4.12 . La prima iteraţie a ieşit din bază x1a şi a intrat x2 , iar la iteraţia a doua a ieşit
⎛3 1⎞ a din bază x 2 şi a intrat x3. Baza obţinută B = ⎜ ⎜ 2 2 ⎟ are inversa în tabelul final ⎟ ⎝ ⎠ 1⎞ ⎛ 1 − ⎟ ⎜ -1 4⎟ . al fazei I sub variabilele artificiale, B = ⎜ 2 3 ⎟ ⎜− 1 ⎜ ⎟ ⎝ 2 4 ⎠ ii) Faza a II-a Se aplică algoritmul simplex problemei max {5x1+4x2+6x3 } ⎧ 3 ⎪ 4 x1 + x 2 = 57 ⎪ 1 ⎪ ⎨− x1 + x3 = 129 ⎪ 4 ⎪ x1 , x 2 , x3 ≥ 0 ⎪ ⎩ Calculele fazei a II−a sunt trecute în Tabelul 4.13.

c) Culegerea şi interpretarea rezultatelor Algoritmul se opreşte cu optim finit, anume, profitul maxim este 1268, obţinut pentru x1=76 , x2=0 , x3=148 , care constituie o soluţie de bază nedegenerată.

4. Programare liniară

81

Tabelul 4.12 0 0 0 1 1
a x2

alegem min

CVB

VB

VVB

x1

x2

x3

x1a

xi y
300 3

ik
= 100

1

x1a

300

2

3

1

1

0

1

a x2

372

1

2

2

0

1

372 = 186 2

valoarea funcţiei obiectiv z

alegem max 672 3 5 3 0 0

zj−cj>0
100 = 300 1 3 172 = 129 4 3

0

x2

100

2 3

1

1 3

1 3

0

1

a x2

172

1 3

0

4 3

2 3

1

valoarea funcţiei obiectiv z

172

1 3

4

0

3

5 3

alegem max 0

zj−cj>0
8

0

x2

57

3 4
− 1 4

1

0

1 2
− 1 2

1 4

0

x3

129

0

1

3 4

24

valoarea funcţiei obiectiv z

alegem max 0 0 0 0 −1 −1

zj−cj>0

82

Modele şi algoritmi de optimizare

Tabelul 4.13 5 4 CVB VB VVB

6

x1
3 4 1 4 7 2

x2

x3

alegem min xi
y ik

4

x2

57

1

0

228 = 76 3

6

x3

129

0

1

valoarea funcţiei obiectiv z

1002

alegem min 0 0

zj−cj<0
4 3 1 3

5

x1

76

1

0

6

x3

148

0

1

Valoarea funcţiei obiectiv z

1268

0

14 3

alegem min 0

zj−cj<0

4.12. Dualitatea în programarea liniară

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

4. Programare liniară

83

⎧max b1 u1 + b2 u 2 + b3 u 3 ⎪ t 1 2 3 t t ⎪ A11 u + A21 u + A31 u ≤ c1 ⎪ t 1 2 3 t t ⎨ A12 u + A22 u + A32 u = c 2 ⎪ A t u1 + A t u 2 + A t u 3 ≤ c 23 33 3 ⎪ 13 ⎪u1 ≥ 0, u 2 − arbitrar, u 3 ≤ 0 ⎩

(

)

(4.44)

Duala dualei este chiar problema iniţială. De aceea, (4.20) şi (4.44) formează un cuplu de probleme duale. Din examinarea cuplului de probleme duale rezultă că una dintre probleme se obţine în următorul mod: a) termenii liberi din problema primală devin coeficienţi ai funcţiei obiectiv în problema duală, b) coeficienţii funcţiei obiectiv din problema primală devin termeni liberi în problema duală, c) o problemă de maximizare (minimizare) se transformă într-o problemă de minimizare (maximizare), d) matricea coeficienţilor sistemului de restricţii pentru problema duală este transpusa matricei coeficienţilor sistemului de restricţii ale problemei primale, e) variabilele duale (primale) asociate unor restricţii primale (duale) concordante sunt supuse condiţiei de nenegativitate, f) variabilele duale (primale) asociate unor restricţii primale (duale), care sunt ecuaţii, nu sunt supuse nici unei condiţii privind semnul. Din definiţia dată rezultă că: − duala unei probleme de programare sub forma standard ⎧min c ′x ⎪ ⎨ Ax = b ⎪x ≥ 0 ⎩ este problema de programare liniară ⎧max b′u ⎪ t ⎨A u ≤ c ⎪u − arbitrar ⎩ − duala unei probleme de programare sub forma canonică ⎧max c ′x ⎪ ⎨ Ax ≤ b ⎪x ≥ 0 ⎩

(4.45)

(4.46)

(4.47)

84

Modele şi algoritmi de optimizare

este următoarea problemă de programare liniară, care are tot forma canonică: ⎧max b ′u ⎪ t (4.48) ⎨A u ≤ c . ⎪u ≥ 0 ⎩ Problemele (4.47) şi (4.48) formează un cuplu de probleme duale simetrice, în timp ce problemele (4.45) şi (4.46) formează un cuplu de probleme duale asimetrice. − duala unei probleme mixte ⎧min c ′x ⎪ ⎪ A1 x ≥ b1 (4.49) ⎨ ⎪ A2 x = b2 ⎪x ≥ 0 ⎩ este problema ⎧max(b1′u1 + b2 u 2 ) ′ ⎪ t 1 t 2 (4.50) ⎨ A1 u + A2 u ≤ c ⎪u1 ≥ 0 , u 2 − arbitrar ⎩ − duala problemei de transport (4.8)-(4.11) este problema n ⎧ ⎛ m ⎞ ⎪max⎜ ∑ a i u i + ∑ b j v j ⎟ , ⎜ i =1 ⎟ j =1 ⎪ ⎝ ⎠ ⎪ 1≤ i ≤ m ; 1≤ j ≤ n , ⎨u i + v j ≤ c ij , ⎪u , v oarecare . j ⎪ i ⎪ ⎩

(4.51)

În continuare sunt prezenate teoremele care stabilesc conexiunile fundamentale între cele două probleme duale.

4.13. Teorema fundamentală a dualităţii

Fie problema primală sub forma standard (4.45) şi duala sa (4.46). Definiţia 4.1. O bază B din matricea A se numeşte primal admisibilă pentru problema (4.45) dacă verifică relaţia (4.52) B −1 b ≥ 0 O bază B din matricea A se numeşte dual admisibilă pentru problema (4.45) dacă verifică relaţia (4.53) c ′B −1 A − c ′ ≤ 0

4. Programare liniară

85

Nu vom presupune că A are rangul maxim. Lema următoare stabileşte o relaţie importantă între cele două probleme. Lema slabă a dualităţii. Dacă x şi u sunt soluţii admisibile pentru problemele (4.45) şi respectiv (4.46), atunci x’c ≥ b’u (Luenberger, 1989). Demonstraţie. Deoarece b’u =(Ax)’u =xAtu , dar Atu≤ c’ şi x≥0 , atunci rezultă că b’u ≤ x’c. Această lemă arată că o soluţie admisibilă a oricăreia dintre cele două probleme este o limită pentru valoarea funcţiei obiectiv a celeilalte probleme. Corolarul 4.1. Dacă x0 şi u0 sunt soluţii admisibile pentru problemele (4.45) şi respectiv (4.46) şi dacă c’x0 = u’0 b , atunci x0 şi u0 sunt soluţii optime pentru problemele respective. Corolarul 4.1 arată că dacă poate fi găsită o pereche de soluţii admisibile care să producă aceeaşi valoare pentru funcţiile obiectiv ale problemelor (4.45) şi (4.46), atunci acestea sunt amândouă optime. Vom enunţa şi demonstra Teorema fundamentală a dualităţii, care afirmă că şi reciproca Corolarului 4.1 este adevărată (Luenberger, 1989). Pentru aceasta avem nevoie de următorul rezultat (demonstrat în Fletcher, II, 1981). Lema de separare. Există un hiperplan care separă un con convex închis C de un vector nenul v ∉ C .

Teorema fundamentală a dualităţii. Dacă una dintre problemele (4.45) sau (4.46) are o soluţie optimă finită, atunci şi cealaltă are soluţie optimă finită şi valorile corespunzătoare ale funcţiilor obiectiv sunt egale. Dacă una dintre cele două probleme are optim infinit, atunci cealaltă problemă nu are nici o soluţie admisibilă. Demonstraţie. A doua afirmaţie este o consecinţă a lemei slabe a dualităţii. Dacă problema primală are optim infinit şi u este o soluţie admisibilă a problemei duale, atunci în mod necesar u’ b≤ −M pentru un M suficient de mare, ceea ce este imposibil. Observăm că, deşi cele două probleme nu formează un cuplu de probleme duale simetrice, pentru a demonstra prima afirmaţie este suficient să presupunem că problema primală are o soluţie optimă finită şi apoi să arătăm că problema duală are o soluţie cu aceeaşi valoare pentru funcţia obiectiv. Acest lucru este posibil deoarece ambele probleme pot fi rescrise în formă standard şi rolurile celor două probleme se pot inversa. Să presupunem că problema (4.46) are o soluţie optimă z* finită. Considerăm următoarea mulţime convexă în spaţiul Rm+1 : C = (r , w ) r = tz * − c' x , w = tb − Ax , x ≥ 0, t ≥ 0 .

{

}

86

Modele şi algoritmi de optimizare

Se poate arăta că C este un con convex închis. Vom arăta că vectorul (1, 0, …, 0) nu este în C. x Dacă w= t0b−Ax0 = 0 , unde t0>0 şi x0 ≥ 0 , atunci x = 0 este o soluţie t0 admisibilă pentru problema (4.46) şi deci r = z * − c' x ≤ 0 , t0 ceea ce implică r≤0 (nu poate astfel să ia valoarea 1). Dacă w= −Ax0 = 0 (t=0), unde x0 ≥ 0 şi c’x0 = −1 şi dacă x este o soluţie admisibilă oarecare a problemei (4.46), atunci x+α x0 este o soluţie admisibilă pentru problema (4.45) pentru orice α ≥ 0 şi dă valori din ce în ce mai mici pentru funcţia obiectiv, pe măsură ce α creşte. Aceasta contrazice ipoteza existenţei unui optim finit şi rezultă că un astfel de x0 nu există. Deci (1, 0,…, 0) nu aparţine lui C. Cum C este o mulţime convexă închisă, există un hiperplan care separă vectorul (1,0,…,0) de C. Aşadar, există un vector nenul (s, u)∈Rm+1 şi o constantă c astfel încât : s < c = inf {sr + u' w (r , w ) ∈ C }.

C fiind con, rezultă că c≥0. Altfel, dacă ar exista (r,w)∈C astfel încât sr+u’w<0, atunci α⋅(r,w) nu ar verifica inegalitatea hiperplanului pentru valori mari ale lui α. Pe de altă parte, deoarece (0,0)∈C, trebuie ca să avem c≤0. Aşadar, c=0. Prin urmare s<0 şi putem presupune, fără a restrânge generalitatea, că s = −1. Astfel am demonstrat că există u∈Rm cu proprietatea –r+u’w ≥ 0 pentru orice (r,w)∈C. Din definiţia lui C avem că (c−u’A)x−tz*+tu’b ≥ 0 oricare ar fi x≥0 şi t≥0. Alegând t=0 rezultă u’A≤c’, ceea ce înseamnă că u este o soluţie admisibilă pentru problema duală. Punând x=(0,0,…,0) şi t=1, obţinem că u’b ≥ z*. Din lema slabă a dualităţii şi din corolarul său rezultă că u este o soluţie optimă a problemei duale. Corolarul 4.2. Dacă într-un cuplu de probleme duale, una dintre probleme are un program optim, atunci şi cealaltă problemă are un program optim şi valorile optime ale funcţiilor obiectiv sunt egale.
Fie problema de programare liniară sub forma standard (4.45) şi duala sa (4.46) şi x=(xB,0) o soluţie optimă de bază corespunzătoare bazei B , iar xB=B−1b şi xS=0. Atunci vectorul costurilor relative r = c ′ B −1 S − c ′ ≤ 0 ⇒ c ′ B −1 S ≤ c ′ . B S B S Considerăm u = c ′ B −1 şi arătăm că acest u este soluţie a problemei duale: B u ′A = [u ′B u ′S ] = c ′ c ′ B −1 S ≤ [c ′ c ′ ] = c ′ ⇒ u ′A ≤ c ′ , B B B S adică u’A este soluţie admisibilă pentru problema duală. Pe de altă parte

[

]

4. Programare liniară

87

u ′b = c ′ B −1 b = c ′ x B B şi astfel valoarea funcţiei obiectiv a problemei duale este pentru acest u egală cu valoarea funcţiei obiectiv a problemei primale. Atunci, din Corolarul 4.1 rezultă că u este soluţia optimă a problemei duale. Am demonstrat următoarea teoremă. Teorema 4.6. Dacă problema de programare standard are soluţie de bază optimă corespunzătoare bazei B, atunci u ′ = c ′ B −1 este soluţie optimă a problemei B duale asociate. Valorile optime ale funcţiilor obiectiv corespunzătoare celor două probleme asociate sunt egale. Teorema ecarturilor complementare pentru cuplu de probleme duale asimetrice. O condiţie necesară şi suficientă ca programele x* şi u* să fie optime pentru problemele duale (4.45) şi (4.46) este ca pentru orice i să avem: a) xi > 0 ⇒ u ′a i = ci b) u ′a i < ci ⇒ xi = 0 . Demonstraţie. Dacă au loc relaţiile a) şi b) atunci (u’A−c’)x=0, adică u’b=c’x , şi, din Corolarul 4.1, rezultă că x şi u sunt soluţii optime pentru perechea de probleme (4.45) şi (4.46). Invers, dacă x şi u sunt soluţii optime pentru perechea de probleme (4.45) şi (4.46), atunci din Teorema fundamentală a dualităţii rezultă că u’b= c’x şi astfel (u’A−c’)x=0. Deoarece fiecare componentă a lui x este nenegativă şi fiecare componentă a lui u’A−c’ este nepozitivă, rezultă condiţiile a) şi b) din teoremă.

Teorema ecarturilor complementare pentru cuplu de probleme duale simetrice. O condiţie necesară şi suficientă ca programele x* şi u* să fie optime pentru un cuplu de probleme duale simetrice este ca pentru orice i şi j să avem: a) xi > 0 ⇒ u ′a i = ci b) u ′a i < c i ⇒ xi = 0 c) u j > 0 ⇒ a j x = b j
d) a j x > b j ⇒ u j = 0 , unde a j reprezintă linia j din matricea A. Demonstraţia este similară demonstraţiei teoremei precedente. Să notăm cu B− = i ∈ B x iB < 0 , B fiind o bază dual admisibilă. Dacă

{

}

B−≠φ atunci baza B este şi primal admisibilă şi x B = B −1 b este program optim al
problemei primale (Zidăroiu, 1983). Teorema 4.7. Fie B o bază dual admisibilă pentru problema (4.45) şi B−≠φ. Dacă (∃) i ∈ B− astfel încât y ijB ≥ 0 , (∀) j ∈ S atunci problema (4.45) nu are programe.

88

Modele şi algoritmi de optimizare

′ Demonstraţie. Fie u′ = c ′ B −1 programul dual asociat cu baza B− , a i linia de B B rang i din matricea B−1 şi fie u(δ ) = u B − δ ⋅ α i , unde δ ≥ 0 . Atunci
B u(δ ) ′a j = u′ a j − δ ⋅ α i′a j = z B − δ ⋅ y ij ≤ z B ≤ c j B j j

pentru

1≤ j ≤ n .
δ →∞

Aşadar,

A t u ≤ c . Însă

u(δ ) ′b = u ′ b − δ ⋅ α i′b = z B − δ ⋅ x iB şi atunci B

lim u(δ ) ′ ⋅ b = +∞ ,

adică problema duală are optim infinit şi din Teorema fundamentală a dualităţii, rezultă că şi problema primală are optim infinit. Lema substituţiei. Fie A o matrice pătratică nesingulară A ∈M n (R ) şi B o

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

(

)

{

}

∑λ
i =1

n

2 i

≠ 0 şi

∑λ a
i =1 i≠r i

n

i

+ λr b = 0 .

Însă din (4.54) avem

∑ (λ
n i =1 i≠r

i

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

)

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

a i = Be i , i = 1, n , i ≠ r , rezultă că A = BE r (η ) , sau B −1 = E r (η ) E −1 .

4. Programare liniară

89

Teorema 4.8. Fie B o bază dual admisibilă pentru problema primală (4.45) şi B B−≠φ. Dacă pentru (∀) i ∈ B− , (∃) j ∈ S astfel încât y ij < 0 şi alegem l∈B−

arbitrar, iar k∈S asfel încât să fie satisfăcută condiţia
B ⎫ ⎧ B ⎪ z j − c j ⎪ z k − ck min ⎨ = ⎬ B B B j ylj <0 ⎪ y lk ⎭ ⎩ y lj ⎪

~ atunci matricea B obţinută din matricea B prin înlocuirea coloanei al cu coloana ak este o bază dual admisibilă, iar programul dual asociat u B este cel ~

puţin la fel de bun ca uB,, adică u ′~ b ≥ u ′ b . B B ~ B Demonstraţie. B astfel obţinută este o bază (deoarece y lk ≠ 0 şi se verifică ipotezele Lemei substituţiei). Conform cu relaţiile (4.40) avem B ~ y rj B B B z j − c j = z j − c j − z k − ck B , j ∈ S . y lk

(

) (

)

B fiind o bază dual admisibilă, rezultă că z B − c j ≤ 0 pentru j care y ≥ 0 .
B lj

~

(∀) j ∈ S

pentru

Din definiţia lui k∈S
B lj

rezultă că şi z B − c j ≤ 0 pentru j

~

(∀) j ∈ S

pentru care

y < 0 . Pentru j=l avem
z lB − c l = − z kB − c k
~

(

Aşadar,

zB − cj ≤ 0 j

~

are loc pentru
~ B

<0. B y lk (∀) j ∈ S~ , adică

)1

~ B

este o bază dual

admisibilă. Din relaţiile (4.40) rezultă că
~

z = z − z − ck
B B k

(

)

xr . Dar B y lk

B

z B = u ′ b şi B

z B = u′~ b şi atunci u B este cel puţin la fel de bun ca şi uB. ~ B

4.14. Algoritmul simplex dual

Prin aplicarea algoritmului simplex la problema duală se obţine un nou algoritm pentru problema iniţială, numit algoritmul simplex dual. Algoritmul simplex primal explorează bazele primal admisibile ale problemei (4.45) până la obţinerea unei baze primal admisibile care să fie şi dual admisibilă ( z B − c j ≤ 0 , 1 ≤ j ≤ n ), sau până la punerea în evidenţă a faptului că problema j primală are optim infinit.

90

Modele şi algoritmi de optimizare

Algoritmul simplex dual explorează bazele dual admisibile ale problemei (4.46) până la obţinerea unei baze dual admisibile care să fie şi primal admisibilă ( B −1b ≥ 0 ), sau până la punerea în evidenţă a faptului că problema duală nu are programe. În algoritmul simplex primal se obţine o succesiune de programe de bază −1 ( B b ≥ 0 ), iar în algoritmul simplex dual se obţine o succesiune de soluţii de bază care nu sunt programe (B−1b nu are toate componentele nenegative). Pentru o problemă de minimizare în algoritmul simplex funcţia obiectiv descreşte spre minim, în timp ce în algoritmul simplex dual funcţia obiectiv creşte spre maxim. Adesea, pentru problema de programare liniară se cunoaşte o soluţie de bază, dar care nu este şi admisibilă şi pentru care multiplicatorii simplex sunt admisibili pentru problema duală asociată. În tabelul simplex această situaţie corespunde stării în care ultima linie (zj−cj) nu are elemente pozitive, dar soluţia nu este admisibilă. O astfel de situaţie apare, de exemplu, atunci când o problemă de programare liniară este rezolvată şi din aceasta se construieşte o problemă nouă prin schimbarea vectorului termenilor liberi b (postoptimizare sau reoptimizare). În această situaţie, dispunând de o soluţie admisibilă de bază pentru problema duală este de preferat să continuăm să rezolvăm problema duală. Considerăm problema de programare liniară sub forma standard şi fie B o bază cunoscută a acestei probleme, iar u′ = c ′ B −1 este admisibilă pentru B problema duală. Dacă xB=B−1b≥0, această soluţie este primal admisibilă şi atunci ea este optimă. Vectorul u este admisibil pentru problema duală şi atunci are loc inegalitatea u’aj≤cj pentru j = 1, n . Presupunând că baza este formată cu primele
m coloane ale lui A, atunci au loc egalităţile u’aj=cj , j = 1, m şi, cu excepţia

degenerării, inegalităţile u’aj<cj , j = m + 1, n . Într-o iteraţie a metodei simplex duale vom găsi un nou vector u , astfel încât una din egalităţile de mai sus devine inegalitate, iar una din inegalităţi devine egalitate, în acelaşi timp valoarea funcţiei obiectiv pentru problema duală creşte. Cele m egalităţi în noua soluţie determină o nouă bază. Notăm linia i a matricei B−1 cu α i . Atunci, pentru u ′ = u ′ − ε α i avem u ′a j = u ′a j − εα i a j . Astfel, notând zj=u’aj şi observând că u’aj=yij , (elementele (i, j) din tabelul simplex), avem: u ′a j = c j , j = 1, m , u ′a i = c i − ε
u ′a j = z j − εy ij , j = m + 1, n , j≠i

j≠i

(4.55)

De asemenea, u ′b = u′b − ε xiB Pentru cuplul de probleme duale (4.56)

4. Programare liniară

91

⎧min c ′x ⎪ ⎨ Ax = b ⎪ x≥0 ⎩

⎧ max bu ′ ⎪ t ⎨ A u≤c ⎪u arbitrar ⎩

algoritmul simplex dual constă din următorii paşi.
Pas 0. Se determină o bază dual admisibilă B , în matricea A , se calculează

x = B -1b , z = c ′ x B

B

B

B

, y B = B -1a j , z j − c j , 1 ≤ j ≤ n j

B

aj fiind coloane ale matricei A. Pas 1. a) Criteriu de ieşire din bază 1) dacă toţi x i ≥ 0 , atunci programul este optim. Stop! 2) dacă (∃)xi < 0 , atunci se determină l astfel încât
x l = min x i x i < 0

{

}.

b) Criteriu de intrare în bază 1) dacă toţi ylj ≥ 0 , atunci problema nu are programe. Stop! 2) dacă (∃) y lj < 0 , atunci se determină k astfel încât

ε0 =

zj − cj z k − ck = min j ylj <0 y lk y lj

(4.57)

Pas 2. Se înlocuieşte în baza B coloana l cu coloana k , obţinându-se noua bază ~ B . Se calculează ~ ~ ~ ~ y lj B x x x B B x l = l , y ij = , x iB = x i − y ik i (i ≠ l ) , y ij = y ij − y ik i (i ≠ l ) y lk y lk y lk y lk z = z B -( z k − c k )
~ B

xl , y lk

1 ≤ i ≤ n , z j − c j = z j − c j − (z k − c k )

~ B

y lj y lk

,

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

92

Modele şi algoritmi de optimizare

min {3x1+4x2+5x3} ⎧ x1 + 2 x 2 + 3x 3 ≥ 5 ⎪ ⎨2 x1 + 2 x 2 + x 3 ≥ 6 ⎪x ≥ 0 i = 1,3 ⎩ i forma standard

min {3x1+4x2+5x3} ⎧ x1 + 2 x 2 + 3 x 3 − x 4 = 5 ⎪ ⎨2 x1 + 2 x 2 + x 3 − x 5 = 6 ⎪x ≥ 0 i = 1,5 ⎩ i duala corespunzătoare

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

4.15. Interpretarea economică a algoritmului simplex dual

Pentru exemplificare ne vom referi la problema utilizării eficiente a resurselor (Dragomirescu şi Maliţa, 1968) ⎧max c ′x ⎪ ⎨ Ax ≤ b ⎪x ≥ 0 ⎩ unde: xj este numărul de unităţi din sortimentul j care trebuie produse şi reprezintă cantitatea din resursa i care se consumă în procesul de producţie. Problema duală asociată acesteia este ⎧min b ′u ⎪ T ⎨ A u ≤ c′ ⎪u ≥ 0 ⎩ unde: ui este costul unitar intern (shadow price) al resursei i, iar

∑a
j =1

n

ij

xj

∑a
i =1

m

ij

u i reprezintă

valoarea totală a resurselor consumate pentru realizarea unei unităţi din sortimentul j.
Tabelul 4.14

4. Programare liniară
3 4 5 0 0 alegem min
min
yij <0

93

CVB

VB

VVB

x1
−1 −2

x2
−2 −2

x3
−3 −1

x4

x5

zj −cj y ij

0

x4

−5 −6

1

0
−3 −4 −5 , , − 2 − 2 −1

0

x5

0

1

valoarea funcţiei obiectiv z

0

−3

−4

−5

0

0

0

x4

−2

0

−1

5 2

1

1 2 1 2
7 1 − 2, 2 5 1 − − 2 2 −

3

x1

3

1

1

1 2

0

valoarea funcţiei obiectiv z

9

0

−1

7 − 2

0

3 − 2

−1 , −1

4

x2

2

0

1

5 2

−1

1 2

3

x1

1

1

0

−2

1

−1

Valoarea funcţiei obiectiv z

11

0

0

−1

−1

−1

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

94

Modele şi algoritmi de optimizare

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

4.16. Determinarea unei soluţii dual admisibile

Dacă toţi coeficienţii funcţiei obiectiv sunt nenegativi, atunci variabilele ecart formează o soluţie de bază dual admisibilă, deoarece în acest caz zi−ci= −ci ≤ 0. Dacă nu toţi coeficienţii funcţiei obiectiv sunt nenegativi, se introduce o restricţie nouă (Maliţa şi Zidăroiu, 1971) x n +1 + xν 1 + xν 2 + ... + xν k = M , cu M suficient de mare, xn+1 o nouă variabilă, iar variabilele care corespund coeficienţilor cν r < 0 . Dacă cν f = max c j c j < 0 , se înlocuieşte xν f din restricţia suplimentară în funcţia obiectiv. Se obţine o mulţime de n variabile (xn+1 înlocuieşte xν f ) astfel încât toţi coeficienţii funcţiei obiectiv să fie nenegativi şi numărul restricţiilor a crescut cu o unitate.
Exemplu

xν r , 1 ≤ r ≤ k , fiind

{

}

⎧min(− x 3 − 2 x 4 + x5 ) ⎪ x + 3x + x − x = −4 ⎪ 1 3 4 5 ⎨ ⎪ x 2 − x3 − 4 x 4 + x5 = 1 ⎪ xi ≥ 0 , 1 ≤ i ≤ 5 ⎩ x1, x2 formează o bază care nu este primal admisibilă pentru că x1= − 4 . Pentru a face pozitivi toţi coeficienţii funcţiei obiectiv, introducem relaţia suplimentară x 6 + x 3 + x 4 = M . Atunci cν f = max c j = c 4 = −2 şi x4=M−x3−x6. Se obţine o
j c j <0

{

}

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

4. Programare liniară

95

⎧min(−2 M + x 3 + x 5 + 2 x 6 ) ⎪ ⎪ x1 + 2 x 3 − x 5 − x 6 = −4 − M ⎪ x + 3x + x + 4 x = 1 + 4M 3 5 6 ⎨ 2 ⎪ x3 + x 4 + x 6 = M ⎪ ⎪ xi ≥ 0 , 1 ≤ i ≤ 6 ⎩ unde M este suficient de mare astfel încât –4–M < 0 . Se obţine o soluţie dual admisibiă x1= –4–M , x2 = 1+4M , x4 = M .

4.17. Probleme propuse

1. Într-o staţie de betoane se pot produce 3 tipuri de betoane (B150, B200, B300). Staţia este organizată astfel încât fiecare betonieră poate produce orice marcă de betoane, capacitatea zilnică maximă a staţiei este de 600 m3 . Betonul se transportă cu ajutorul a 20 de autobetoniere de 5 m3 capacitate fiecare, duratele ciclurilor de transport pentru cele 3 mărci de betoane fiind de 0.1 ; 0.2 şi 0.1 zile respectiv. Consumurile normate de ciment pe cele trei mărci de beton sunt respectiv 200, 300 şi 400 kg/m3 . Staţia este aprovizionată zilnic cu o cantitate de 180 tone de ciment . Ca urmare a organizării staţiei se obţin următoarele economii pe mărci de beton: 1; 1.2 şi 0.8 u.m. / m3 . Se cere găsirea soluţiei care aduce maximum de profit staţiei, ştiind că se cere beton în cantităţi mai mari decât posibilităţile de preparare.
Rezolvare a) Modelarea problemei Notăm cu x1 , x2 , x3 , cantităţile de beton din fiecare marcă ce se cer a fi determinate astfel încât funcţia obiectiv z = f(x1 , x2 , x3 ) = 1·x1 + 1.2·x2 + 0.8·x3 , să fie maximă sub restricţiile x1 + x2 + x3 ≤ 600 (nu se poate depăşi capacitatea de producţie a staţiei) 0.1·x1 +0.2·x2 +0.1·x3 ≤ 20·5 (nu se poate depăşi capacitatea zilnică de transport) 200·x1 +300·x2 + 400·x3 ≤ 600 (nu se poate depăşi cantitatea de ciment cu care este aprovizionată zilnic staţia) S-a obţinut următoarea problemă de programare liniară:

Forma canonică

Forma standard

96

Modele şi algoritmi de optimizare

⎧max{x1 + 1.2 x 2 + 0.8 x 3 } ⎪ x + x + x ≤ 600 2 3 ⎪ 1 ⎪ x1 + 2 x 2 + x 3 ≤ 1000 ⎨ ⎪2 x + 3x + 4 x ≤ 1800 2 3 ⎪ 1 ⎪ ⎩ x i ≥ 0 , i = 1, 2, 3

⎧max{x1 + 1.2 x 2 + 0.8 x 3 } ⎪ x + x + x + x = 600 2 3 4 ⎪ 1 ⎪ x1 + 2 x 2 + x 3 + x 5 = 1000 ⎨ ⎪2 x + 3x + 4 x + x = 1800 2 3 6 ⎪ 1 ⎪ ⎩ x i ≥ 0 , i = 1,6 după introducerea variabilelor ecart

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

2. Într-o secţie a unei întreprinderi se produc trei tipuri de produse P1, P2 , P3 , folosind rezerve de forţă de muncă (F) şi resurse financiare (B) limitate conform Tabelul 4.15.
Tabelul 4.15 Tip produs P1 P2 Rezerve F B Profit 2 1 1.5 3 2 4 2 3 3 15 12

P3

Disponibil

care conţine şi consumurile din aceste rezerve la unitatea de produs pentru fiecare tip, precum şi beneficiile aduse de o unitate de fiecare tip de produs. Datorită condiţiilor impuse de stocare întreaga producţie nu trebuie să depăşească 8 unităţi. Să se determine planul optim de producţie care în condiţiile date să dea un profit total maxim pe secţie.
R. În urma modelării acestei probleme se obţine următorul program liniar: max f = max{1.5x1+4x2+3x3} ⎧2 x1 + 3x 2 + 2 x 3 ≤ 15 ⎪ x + 2 x + 3 x ≤ 12 ⎪ 1 2 3 . ⎨ x1 + x 2 + x 3 ≤ 8 ⎪ ⎪ x i ≥ 0 , i = 1,3 ⎩ Se obţine soluţia max f=20.4 pentru x1 = 0 , x2 = 4.2 , x3 = 1.2 . 3. La o secţie de producţie a unei întreprinderi de construcţii, unde se lucrează în flux continuu de bandă, sunt necesare pentru fabricarea de panouri pentru cofraje 4 tipuri de materii prime (panel (P), scândură de brad (SB), dulapi (D), cuie (C)) care

4. Programare liniară

97

sunt prelucrate la 3 standuri. Repartiţia materiilor prime şi a cheltuielilor de muncă necesare prelucrării pe cele 3 standuri este dată de Tabelul 4.16.
Tabelul 4.16 Materie primă Stand

P
1 1 0 6

SB
1 2 1 8

D
0 1 1 12

C
1 0 1 10

S1 S2 S3 Cheltuieli de muncă

Nr. necesar de panouri 2 4 3

Să se determine un plan de producţie astfel încât cheltuielile să fie minime.
R. Modelând problema se obţine următorul program liniar: min f = min {6x1+8x2+12x3+10x4} ⎧ x1 + x 2 + x 4 = 2 ⎪x + 2x + x = 4 ⎪ 1 2 4 . ⎨ ⎪ x 2 + x3 + x 4 = 3 ⎪ x i ≥ 0 , i = 1,4 ⎩ Se obţine soluţia min f = 29 , pentru nivelurile de consum de materiale x1=0 , x2=1.5 , x3=1 , x4=0.5 .

4. O secţie a unei întreprinderi are în fabricaţie 7 tipuri de produse, P1−P7 . Două materii prime (M1 , M2 ) necesare realizării acestor produse sunt în cantităţi limitate, 200 şi respectiv 300 unităţi, celelalte fiind în cantităţi suficiente oricărui plan de producţie. Consumurile de materii prime M1 , M2 pe unitatea de produs pentru fiecare tip, precum şi beneficiile nete aduse de producerea unei unităţi din fiecare tip de produs sunt date în Tabelul 4.17.
Tabelul 4.17 Produs Materie

P1
3 5 6

P2
4 3 5

P3
2 1 2

P4
3 4 6

P5
5 2 6

P6
2 4 5

P7
3 3 6

M1 M2 Profit

Datorită unei cereri mari de produse P1 , P2 s-a propus ca măcar 25% din întreaga producţie a secţiei să fie reprezentată de aceste produse. Să se determine un plan de producţie care să respecte condiţiile impuse şi care să aducă un profit total maxim în secţia respectivă. R. Trebuie rezolvată următoarea problemă de programare liniară: max f = max{6x1+5x2+2x3+6x4+6x5+5x6+6x7}

98

Modele şi algoritmi de optimizare

⎧3 x1 + 4 x 2 + 2 x 3 + 3x 4 + 5 x 5 + 2 x 6 + 3x 7 ≤ 200 ⎪5 x + 3 x + x + 4 x + 2 x + 4 x + 3 x ≤ 300 ⎪ 1 2 3 4 5 6 7 ⎨ − 3x1 − 3x 2 + x 3 + x 4 + x 5 + x 6 + x 7 ≤ 0 ⎪ ⎪ x i ≥ 0 , i = 1,7 ⎩ Se obţine max f =430.77 pentru x1=19.23 ; x2= x3= x4= x5=0 ; x2=30.77 ; x2=26.92 .

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

Aliment Substanţă S1 S1 S1 Preţ

Necesar 24 35 40

Să se determine cantităţile ce trebuie incluse în meniu din cele 3 alimente, astfel încât costul total al meniului să fie minim .
R. În urma modelării se obţine problema de programare liniară sub forma canonică min f = min{8x1+7x2+5x3} ⎧4 x1 + 3 x 2 + 2 x 3 ≥ 24 ⎪5 x + 7 x + 2 x ≥ 35 ⎪ 1 2 3 . ⎨ ⎪ x1 + 5 x 2 + 4 x 3 ≥ 40 ⎪ x i ≥ 0 , i = 1,3 ⎩ După introducerea variabilelor de compensare se obţine problema sub forma standard, dar nu are o bază canonică evidenţiată. De aceea se aplică metoda în două faze. min f = min{8x1+7x2+5x3} ⎧4 x1 + 3x 2 + 2 x 3 − x 4 = 24 ⎪5 x + 7 x + 2 x − x = 35 ⎪ 1 2 3 5 . ⎨ ⎪ x1 + 5 x 2 + 4 x 3 − x 6 = 40 ⎪ x i ≥ 0 , i = 1,6 ⎩ Se obţine min f = 56 , meniul constă din 8 unităţi din alimentul al doilea şi conţinutul în substanţa S2 depăşeşte minimul necesar cu 21 unităţi, adică x1=0 , x2=8 , x3=0 , x4=0 , x5=21 , x6=0 .

4. Programare liniară

99

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

S3
1 3 0 3

S4
3 1 4 1

Conţinutul substanţelor S1 , S2 în alte elemente ce aduc amestecului anumite proprietăţi speciale cer ca acest amestec să conţină cel puţin 3 unităţi din S1 şi cel puţin 3 unităţi din S2 . Să se determine cantităţile ce trebuie amestecate din cele 4 substanţe astfel încât să fie îndeplinite toate condiţiile impuse, iar costul total al amestecului să fie minim.
R. Modelând problema se obţine min f = min {6x1+3x2+4x3+5x4} ⎧3 x1 + 2 x 2 + x 3 + 3 x 4 ≥ 28 ⎪4 x + 3x + x ≥ 30 3 4 ⎪ 1 ⎪3 x 2 + 4 x 4 ≥ 25 ⎪ ⎨5 x1 + 3x 3 + x 4 ≥ 25 ⎪x ≥ 3 ⎪ 1 ⎪x2 ≥ 2 ⎪ ⎩ x i ≥ 0 , i = 1,4 . Pentru a reduce numărul restricţiilor problemei liniare obţinute se poate face schimbarea de variabile y1 = x1−3 , y2 = x2−2 , y3 = x3 , y4 = x4 . Se obţine problema min g =min {6y1+3y2+4y3+5y4+24} ⎧3 y1 + 2 y 2 + y 3 + 3 y 4 ≥ 15 ⎪4 y + 3 y + y ≥ 18 3 4 ⎪ 1 ⎪ . ⎨3 y 2 + 4 y 4 ≥ 19 ⎪5 y + 3 y + y ≥ 10 3 4 ⎪ 1 ⎪ y i ≥ 0 , i = 1,4 ⎩ După aducerea la forma standard, se aplică metoda în două faze şi, după revenirea la variabilele xi , se obţine soluţia: min f =65.416 , pentru x1=3 , x2=2 , x3=4.416 , x4=4.75 .

100

Modele şi algoritmi de optimizare

7. O întreprindere doreşte să producă un nou aliaj format din 30% metal A şi 70% metal B. Pentru aceasta are la dispoziţie alte 5 aliaje ale căror preţuri şi compoziţii sunt date în Tabelul 4.20.
Tabelul 4.20 1 2 3 1 2 5 0 5 0 9 7 5 0 5 0 5 4 3

Aliaj %A %B Preţ/kg

4 7 5 2 5 2

5 95 5 1.5

Aliajul dorit va fi produs prin combinarea unor cantităţi din celelalte 5 aliaje. Să se determine cantităţile necesare realizării noului aliaj cu cost minim.
R. Notăm cu xi – cantitatea din aliajul i (i=1,2,...,5) care intră în alcătuirea noului aliaj. Trebuie rezolvată următoarea problemă de programare liniară: min {5x1+4x2+3x3+2x4+1.5x5 } ⎧10 x1 + 25 x 2 + 50 x 3 + 75 x 4 + 95 x 5 = 30 ⎪ ⎨90 x1 + 75 x 2 + 50 x 3 + 25 x 4 + 5 x 5 = 70 ⎪ x ,..., x ≥ 0 5 ⎩ 1 care are soluţia: x1=0 , x2=0.9 , x3=0 , x4=1 , x5=0 , iar valoarea funcţiei obiectiv este min f = 3.8 .

8. O rafinărie de petrol are două surse de aprovizionare cu petrol brut: petrol brut uşor la 35$/baril şi petrol brut greu la 30 $/baril. Rafinăria produce benzină, petrol lampant şi benzină superioară, obţinând dintr-un baril de petrol brut cantităţile din Tabelul 4.21.
Tabelul 4.21 Produs finit Materie primă Petrol brut uşor Petrol brut greu 0.3 0.3 Benzină Petrol lampant 0.2 0.4 Benzină superioară 0.3 0.2

Rafinăria s-a angajat să producă 900 000 barili de benzină, 800 000 barili de petrol lampant şi 500 000 barili de benzină superioară. Ce cantităţi de petrol brut uşor şi greu trebuie achiziţionate pentru a se realiza angajamentul cu un cost minim?
R. Notăm cu x1 , x2 , x3 cantităţile de petrol brut uşor folosite pentru obţinerea de benzină, petrol lampant şi respectiv benzină superioară, şi analog x4 , x5 , x6 , cantităţile de petrol brut greu. Se ajunge la următoarea problemă de programare liniară: min {35(x1 + x2 + x3 ) + 30(x4 + x5 + x6 )}

4. Programare liniară

101

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

9. O firmă produce cinci tipuri de piese de schimb pentru automobile. Fiecare piesă este turnată în oţel la turnătorie şi apoi este trimisă la secţia de finisaj. Numărul de ore muncă necesare pentru 100 de unităţi din fiecare tip de piesă în cele două secţii sunt date în Tabelul 4.22.
Tabelul 4.22 Tip piesă 1 2 Secţie Turnătorie Finisaj Profit / 100 unităţi 2 3 3 0 1 2 2 0

3 3 2 4 0

4 3 1 2 5

5 1 1 1 0

Capacitatea de turnare şi finisare pe parcursul unei luni este de 700, respectiv 1000 ore muncă. Să se determine numărul de piese din fiecare tip care trebuie produse pentru a se obţine un profit maxim.
R. Notând cu xi numărul de sute de piese de tipul i, i = 1,5 , obţinem următoarea problemă de programare liniară max {30x1+20x2+40x3+25x4+10x5} ⎧2 x1 + x 2 + 3 x 3 + 3 x 4 + x 5 ≤ 7 ⎪ ⎨3 x1 + 2 x 2 + 2 x 3 + x 4 + x 5 ≤ 10 ⎪ x ≥ 0 , i = 1,5 ⎩ i

care are maximul egal cu 120, obţinut pentru x1=0 , x2=4 , x3=1 , x4=0 , x5=0 .

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

5. PROBLEMA DE TRANSPORT

5.1. Fundamentele algoritmului de transport
Problema de transport (4.8) − (4.11) are totdeauna o soluţie admisibilă, anume m n ai b j , unde S = ∑ a i = ∑ b j şi care este o soluţie mărginită de ai şi bj . xi j = S i =1 j =1 Există în total n+m restricţii (m ecuaţii corespunzătoare restricţiilor date de centrele de aprovizionare şi cele n ecuaţii corespunzătoare restricţiilor date de centrele de consum) la care se adaugă condiţia de echilibru

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

m

n

j

. De aici

rezultă că una dintre restricţii este redundantă. Orice restricţie se poate exprima în funcţie de celelalte m+n−1 rămase.
Teorema 5.1. Problema de transport are totdeauna soluţie şi o restricţie este redundantă. Înlăturând oricare dintre restricţii, cele n+m−1 rămase formează un sistem liniar independent (Luenberger, 1989). Demonstraţie. Existenţa soluţiei şi redundanţa rezultă din observaţia de mai sus. Deoarece suma restricţiilor date de centrele de aprovizionare este egală cu suma restricţiilor date de centrele de consum, rezultă că orice restricţie poate fi exprimată ca o combinaţie liniară de celelalte m+n−1 . Astfel, orice restricţie poate fi eliminată. Să presupunem că am eliminat o restricţie, fie ea ultima. Presupunem că există o combinaţie liniară a ecuaţiilor rămase egală cu zero. Să notăm cu α i , i = 1, m , coeficienţii acestei combinaţii liniare corespunzători primelor ecuaţii

din problema de transport şi cu

β j , j = 1, n − 1

coeficienţii corespunzători

ultimelor n−1 ecuaţii. Fiecare variabilă xin , i = 1, m , apare numai în a i - a ecuaţie, deoarece ultima ecuaţie a fost înlăturată. Astfel, α i = 0 , i = 1, n . În restul ecuaţiilor

x ij

apare numai într-o ecuaţie şi astfel β j = 0, j = 1, n − 1 . Aşadar,

sistemul de n+m−1 ecuaţii este liniar independent. Din Teorema 5.1 rezultă că o bază pentru problema de transport este formată din m+n−1 vectori liniar independenţi, iar soluţia de bază admisibilă are m+n−1 variabile. Problema duală asociată problemei de transport este dată de (4.51) . Are loc următoarea teoremă.

5. Problema de transport

103

Teorema 5.2. Cuplul de soluţii duale

(x )
ij

şi

(u , v )
i j

este optim pentru

problemele (4.8)-(4.11), respectiv (4.51), dacă şi numai dacă

∑ xij = ai ;
j =1

n

∑x
i =1

m

ij

= b j ; x ij ≥ 0

c ij − u i − v j ≥ 0 ; x ij c ij − u i − v j = 0. (rezultă din Teorema ecarturilor complementare). Din ultima condiţie rezultă că pentru x ij > 0 se obţine c ij = u i + v j . În cele ce urmează prin celulă se înţelege o pereche de indici (i,j), iar prin ciclu se înţelege un şir de celule notate (i1 , j1 ) , (i1 , j 2 ) , (i2 , j1 ) , L , (it , jt ) , (it , j1 ) . În continuare vom evidenţia cea mai importantă proprietate structurală a problemei de transport: toate bazele sunt triunghiulare. Această proprietate simplifică rezolvarea unui sistem de ecuaţii liniare a cărui matrice a coeficienţilor are o astfel de bază şi aceasta conduce la implementarea eficientă a metodei simplex pentru problema de transport.

(

)

Definiţia 5.1. O matrice pătratică se numeşte triunghiulară dacă prin permutări ale liniilor şi coloanelor sale poate fi pusă sub forma unei matrice inferior triunghiulară.
O matrice inferior triunghiulară este triunghiulară în sensul definiţiei de mai sus. O matrice nesingulară superior triunghiulară este de asemenea triunghiulară deoarece prin schimbarea ordinii liniilor şi coloanelor sale devine inferior triunghiulară. Algoritm pentru a determina dacă o matrice este triunghiulară. Pas 1. Se găseşte linia care are un singur element nenul. Pas 2. Se formează o submatrice din matricea dată prin tăierea liniei şi coloanei elementului nenul din pasul 1. Se reia pasul 1 cu submatricea obţinută. Dacă această procedură poate fi continuată până când toate liniile au fost eliminate, atunci matricea este triunghiulară. Ea poate fi pusă sub forma inferior triunghiulară prin aranjarea liniilor şi coloanelor în ordinea în care au fost determinate prin procedura de mai sus.

Exemplu. Folosind algoritmul de mai sus, să stabilim dacă matricea ⎛1 1 0 0 0⎞ ⎜ ⎟ ⎜ 0 0 1 0 0⎟ B = ⎜0 0 0 1 1⎟ ⎜ ⎟ ⎜1 0 0 1 0⎟ ⎜ ⎟ ⎝0 0 1 0 1⎠ este triunghiulară.

104

Modele şi algoritmi de optimizare

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

Această proprietate a matricelor este importantă şi are aplicaţii în rezolvarea sistemelor de ecuaţii liniare prin metoda substituţiei (eliminării) a lui Gauss. Sistemul de ecuaţii Ax=b , cu A inferior triunghiulară permite determinarea lui x1 din prima ecuaţie, apoi x2 din cea de-a doua ecuaţia ş.a.m.d. Teorema 5.3. Orice bază a problemei de transport este triunghiulară. Demonstraţie. Considerăm sistemul de restricţii din problema de transport: ⎧n ⎪∑ x ij = a i (− 1) i = 1, m ⎪ j =1 ⎨m ⎪∑ x ij = b j j = 1, n ⎪ i =1 ⎩ Schimbăm semnul la primele m ecuaţii şi atunci matricea coeficienţilor este formată numai din − 1 , 0, +1. Din Teorema 5.1, ştergând oricare dintre ecuaţiile de mai sus, se elimină redundanţa. Din matricea coeficienţilor care rezultă se formează o

5. Problema de transport

105

bază nesingulară, B, prin selectarea unei mulţimi de m+n−1 coloane. Fiecare coloană a matricei B conţine cel mult două elemente nenule, unul egal cu +1 şi altul egal cu − 1 . Astfel există cel mult 2(m+n−1) elemente nenule în bază. Totuşi, dacă orice coloană ar conţine două elemente nenule, atunci suma lor ar fi zero şi s-ar contrazice nesingularitatea lui B . Astfel, cel puţin o coloană a lui B trebuie să conţină numai un element nenul. Aceasta înseamnă că numărul total de elemente nenule din B este mai mic decât 2(m+n−1) . Rezultă că trebuie să fie o linie cu numai un element nenul, altfel, dacă orice linie ar avea două sau mai multe elemente nenule, numărul total al elementelor nenule ar fi cel puţin 2(m+n−1). Deducem că primul pas al procedurii de verificare a triunghiularităţii se verifică şi raţionamentul se poate continua pentru submatricea obţinută din B prin tăierea liniei şi coloanei corespunzătoare elementului nenul. Se continuă raţionamentul, stabilind că B este triunghiulară. Deoarece orice matrice bază în problema de transport este triunghiulară şi toate elementele nenule sunt egale cu 1, rezultă că, prin rezolvarea sistemului de ecuaţii liniare Bx=b cu metoda substituţiei, dacă toate datele iniţiale sunt numere întregi, soluţia va fi formată din numere întregi. Acest lucru poate fi dat ca un corolar la Teorema 5.3. Corolar 5.1. Dacă sumele liniilor şi coloanelor unei probleme de transport sunt întregi, atunci variabilele de bază în orice soluţie de bază sunt întregi. Metoda simplex aplicată problemei de transport, ţinând seama de rezultatele de mai sus, este o versiune a algoritmului simplex revizuit şi poartă numele de algoritmul de transport (datorat lui Kantorovich). Multiplicatorii simplex asociaţi cu ecuaţiile restricţiilor îi notăm cu λ=(u,v) , u∈Rm, v∈Rn . Deoarece o restricţie este redundantă, vom considera de exemplu că vn=0 . Dată o bază B , multiplicatorii simplex se găsesc ca soluţii ale sistemului λ ′B = c ′ . B Ca să-i determinăm în mod explicit din această ecuaţie, ne referim din nou la sistemul iniţial de restricţii. Dacă xij este necunoscută de bază, atunci coloana corespunzătoare din A va fi inclusă în B. Această coloană are exact două elemenete nenule egale cu +1: unul în pozitia i din partea superioară şi altul în poziţia j din partea inferioară. Această coloană generează pentru multiplicatorii simplex ecuaţia ui+vj=cij , ui şi vj sunt componentele corespunzătoare ale vectorului deoarece multiplicatorilor simplex. În general, ecuaţiile multiplicatorilor simplex sunt ui+vj=cij (∀)i, j pentru care xij sunt bazice. Matricea coeficienţilor acestui sistem este transpusa matricei bazei, aşadar este triunghiulară şi sistemul poate fi rezolvat prin metoda substituţiei.

106

Modele şi algoritmi de optimizare

Corolar 5.2. Dacă toate costurile unitare din problema de transport sunt întregi, atunci, dând o valoare întreagă la un multiplicator oarecare, multiplicatorii simplex asociaţi cu orice bază sunt întregi. Dacă multiplicatorii simplex sunt cunoscuţi, coeficienţii costurilor relative pentru variabilele nebazice pot fi calculaţi cu relaţiile α ′ = λS − c ′ . S S În acest caz coeficienţii costurilor relative sunt α ij = u i + v j − cij , (∀) i = 1, m , (∀) j = 1, n . Pentru variabilele bazice

α ij = 0 . Dată o bază, calculul multiplicatorilor

simplex este asemănător cu calculul variabilelor de bază. Conform cu algoritmul simplex general, dacă o variabilă nebazică are un coeficient de cost relativ pozitiv, atunci acea variabilă este candidată să intre în bază. Cum valoarea acestei variabile este crescătoare, valorile variabilelor de bază curente vor fi schimbate astfel încât să se menţină admisibilitatea soluţiei. Valoarea noii variabile va creşte exact până la valoarea pentru care vechea variabilă de bază devine zero. Dacă noul vector de bază este d , atunci schimbarea în celelalte variabile de bază este dată de − B −1d , unde B este baza curentă. Din nou avem de-a face cu o problemă de rezolvare a unui sistem cu bază triunghiulară şi din nou soluţia are proprietăţi speciale. Teorema 5.4. Fie B o bază extrasă din A (după ignorarea unei linii) şi fie d o coloană a lui A care nu este inclusă în B. Atunci, componentele vectorului y = B −1 d sunt fie − 1 , 0 sau +1. Demonstraţie. Fie y soluţia sistemului By=d. Atunci, y este reprezentarea lui d în baza B . Acest sistem de ecuaţii poate fi rezolvat cu regula lui Cramer det B k yk = , det B unde Bk este matricea obţinută prin înlocuirea în matricea B a coloanei k cu coloana d . Atât B cât şi Bk sunt submatrice ale lui A. Matricea B poate fi pusă sub forma triunghiulară cu toate elementele diagonalei egale cu +1. Atunci, detB=+1 sau − 1 , după cum liniile sau coloanele au fost permutate. Analog detBk=+1 , 0 sau − 1 . Concluzionăm că fiecare componentă a lui y este fie 0, +1 sau − 1 . Din Teorema 5.4 rezultă că atunci când o nouă variabilă este adăugată la soluţie la un nivel unitar, variabilele de bază curente se vor schimba cu +1, − 1 sau 0. Dacă noua variabilă are valoarea θ , atunci, corespunzător, variabilele de bază se vor schimba cu +θ, −θ, sau 0. Este, aşadar, necesar să determinăm semnul schimbării fiecărei variabile de bază.

5. Problema de transport

107

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

5.2. Enunţul algoritmului de transport

Pe baza rezultatelor de mai sus, se poate enunţa algoritmul de transport sub următoarea formă.
Pas 0. Se determină o soluţie de bază admisibilă x ij , corespunzătoare bazei B,

formată cu m+n−1 coloane liniar independente din matricea A şi fie B mulţimea celulelor de bază; Pas 1. Se rezolvă sistemul de ecuaţii u i + v j = c ij , (∀) (i, j ) ∈ B . Se obţine o soluţie particulară luând vn=0 şi se calculează pentru această soluţie coeficienţii de cost redus, α ij = u i + v j − cij , (∀) (i, j ) ∈ S ,

S fiind mulţimea celulelor corespunzătoare coloanelor matricei A care nu se află în B (celule secundare). Dacă α ij ≤ 0 pentru (∀) (i, j ) ∈ S , atunci soluţia de bază x ij este
optimă. Stop! Altfel, se determină ( s, k ) ∈ S , luând drept criteriu de intrare în bază

α sk = max{ α ij (∀)(i, j ) ∈ S

}

.

Pas 2. Se determină ciclul format de ( s, k ) ∈ S cu o parte din celulele lui B şi se numerotează celulele alegând un sens de parcurgere a ciclului.

108

Modele şi algoritmi de optimizare

Se determină celula (r , t ) ∈ B care va ieşi din bază , luând drept criteriu
de ieşire din bază x rt = min x ij

{ },

minimul fiind luat după toate celulele

de ordin par din ciclul determinat mai sus. ~ Pas 3. Se formează, pornind de la baza B, baza B , prin înlocuirea coloanei art ~ cu coloana ask . Se determină soluţia de bază admisibilă x ij ~ corespunzătoare bazei B , folosind pentru schimbarea bazei formulele: ⎧ xij − xrt dacã (i,j ) este de rang par în ciclu ~ = ⎪ x + x dacã (i,j ) este de rang impar în ciclu xij ⎨ ij rt ⎪x dacã (i,j ) nu face parte din ciclu ⎩ ij ~ Se înlocuieşte B cu B , x ij cu ~ij şi se trece la Pas 1. x

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

Algoritmul prezentat mai înainte necesită la pornire un program de bază iniţial. Metoda generală de obţinere a acestui program este următoarea (Maliţa şi Zidăroiu, 1971): a) Se dă unei variabile de bază oarecare xij valoarea x ij = min {a l , bk } .
1≤ l ≤ m 1≤ k ≤ n

b) Se înlocuiesc ai şi bj cu a i − x ij şi respectiv cu b j − x ij şi se suprimă linia i , dacă x ij = ai , sau coloana j , dacă x ij =bj . Dacă ai=bj se suprimă fie linia i , fie coloana j . c) Se repetă operaţiile de la a) şi b) până când toate cererile sunt satisfăcute. Să demonstrăm că algoritmul de mai sus produce o soluţie de bază. De fiecare dată când apare un xij>0 se suprimă o linie şi/sau o coloană. La sfârşit, vor rămâne o coloană şi o linie nesuprimate. Până în acest moment au fost suprimate m+n−2 linii şi coloane. Cantitatea rămasă în linia nesuprimată este egală cu cantitatea rămasă în coloana nesuprimată, aşa cum rezultă din condiţia de echilibru. Satisfăcând şi ultima linie, se obţine o nouă variabilă xij>0 , adică sunt cel mult m+n−1 variabile xij>0. Există diferite metode de determinare a programului de bază iniţial obţinute din metoda generală prezentată mai sus, după cum se particularizează xij cu care se începe metoda, cum ar fi de exemplu: metoda colţului nord-vest a lui G. B. Dantzig (se selectează celula (i,j) situată în prima linie şi prima coloană) şi metoda

5. Problema de transport

109

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

5.4. Exemplu

O întreprindere de construcţii are în lucru 4 blocuri de locuinţe în diferite locuri în oraş şi se aprovizionează cu mortar de la 3 staţii de betoane de asemenea amplasate în diferite locuri. Prin contract, prima staţie de betoane asigură 10 m3 , a doua 15 m3 , iar a treia 25 m3 . Necesarul zilnic de mortar pentru fiecare bloc este de 5 m3 pentru primul, 10 m3 pentru al doilea, 20 m3 pentru al treilea şi 15 m3 pentru al patrulea. Preţul de transport pentru 1 m3 de la o staţie de betoane la un bloc este dat de Tabelul 5.1.
Tabelul 5.1 Bloc Staţie betoane S1 S2 S3 Necesar (bj) B1 8 4 1 5 B2 3 1 9 10 B3 5 6 4 20 B4 2 7 3 15 Disponibil ( ai ) 10 15 25

Să se găsească un plan de transport care să determine cantităţile zilnice xij de mortar ce trebuie aduse de la staţia de betoane i la blocul j, astfel încât cheltuielile de transport să fie minime.
Rezolvare a) Modelarea problemei 3 4 multiplicatorii ⎧ ⎪min ∑∑ cij xij simplex ⎪ i =1 j =1 x11 + x12 + x13 + x14 = 10 u1 → ⎪ ⎪ x + x + x + x = 15 u2 → 22 23 24 ⎪ 21 u3 → ⎪ x31 + x32 + x33 + x34 = 25 ⎪ ⎨x + x + x = 5 v1 → 21 31 ⎪ 11 x12 + x22 + x32 = 10 ⎪ v2 → ⎪ v3 → ⎪ x13 + x23 + x33 = 20 ⎪ x14 + x24 + x34 = 15 v4 → ⎪ ⎪ xij ≥ 0 , 1 ≤ i ≤ 3 , 1 ≤ j ≤ 4 ⎩

110

Modele şi algoritmi de optimizare

Matricea restricţiilor ⎛1 ⎜ ⎜0 ⎜0 ⎜ A = ⎜1 ⎜ ⎜0 ⎜0 ⎜ ⎝0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0⎞ ⎟ 0⎟ 1⎟ ⎟ 0⎟ ⎟ 0⎟ 0⎟ ⎟ 1⎠

b) Determinarea unei soluţii iniţiale de bază Determinarea soluţiei iniţiale de bază se face cu metoda colţului nord-vest, pornind de la Tabelul 5.1, obţinându-se Tabelul 5.2. min {a1,b1}= min {10,5}=5=b1 , x11=5 se suprimă coloana 1 min {a1,b2}= min {5,10}=5=a1 , x12=5 se suprimă linia 1 min {a2,b2}= min {10,5}=5=b2 , x22=5 se suprimă coloana 2 min {a2,b3}= min {10,20}=10=a2 , x23=100 se suprimă linia 2 min {a3,b3}= min {25,10}=10=b3 , x33=10 se suprimă coloana 3 min {a3,b4}= min {15,15}=15=b4 , x34=15 se suprimă linia 3 şi coloana 4
Tabelul 5.2 Bloc Staţie betoane S1 S2 S3 Necesar (bj) B1 5 B2 5 5 10 5 B3 B4 Disponibil( ai ) 10 5 15 10 25 15

5

10 10 20 10

15 15

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

În Tabelul 5.3 celulele cu diagonală sunt celulele de bază. Matricea bazei corespunzătoare este x11 x12 x22 x23 x33 x34

5. Problema de transport

111

⎛1 ⎜ ⎜0 ⎜0 B=⎜ ⎜1 ⎜ ⎜0 ⎜0 ⎝

1 0 0 0 1 0

0 1 0 0 1 0

0 1 0 0 0 1

0 0 1 0 0 1

0⎞ ⎟ 0⎟ 1⎟ ⎟ 0⎟ ⎟ 0⎟ 0⎟ ⎠

c) Algoritmul de transport Iteraţia I Pas 1. Începem algoritmul cu soluţia de bază obţinută în etapa precedentă. Se consideră v4=0 şi se rezolvă sistemul λ ′B = c ′ ⇒ λ = ( B T ) −1 c B , unde c ′ =(8 3 1 6 4 3)’ , B B ′ ′ rezultând λ ′ = (u1 u 2 u 3 v1 v 2 v 3 ) = (7 5 3 1 − 4 1) . Obţinem pentru celulele nebazice coeficienţii de cost redus, α ij = u i + v j − c ij , valorile: α13=u1+v3−c13=7+1−5=3; α14=u1+v4−c14=0+7−2=5; α21=u2+v1−c21=−5+1−4=2; α24=u2+v4−c24=5−7=−2; α31=u3+v1−c31=3+1−1=3; α32=u3+v2−c32=3−4−9=−10. Cum nu toţi αij ≤ 0 , (∀) (i, j ) ∈ S , continuăm cu determinarea celulei care intră în bază α sk = max{α ij
α ij ≥ 0

(∀) (i, j ) ∈ S

(i,j )∈ S } = α 14 = 5

.

Intră în bază celula (1,4) . Vectorul d corespunzător este d’=(1 0 0 0 0 0)’ . Pas 2. Se determină ciclul iniţiat de celula (1,4) x11 x12 x22 x23 x33 x34 ′ ′ y = − B −1 d = − B −1 (1 0 0 0 0 0 ) = (0 − 1 1 − 1 1 − 1) C1 = (1,4) , (1,2) , (2,2 ) , (2,3) , (3,3) , (3,4 ) , (1,4) .

{

}

Se determină celula care iese din baza B1 cu criteriul { xij }= x12 = 5 x i0 j o = min
(i , j )∈{ (1, 2 ) , (2 , 3 ) , (3, 4 )}

(minimul s-a luat după toate celulele de ordin par (poziţiile cu semn minus) din ciclul C1) . ~ Pas 3. Aşadar, iese din bază celula (1,2) şi se obţine baza B1 cu celulele: ~ B1 = { (1,1) , (1,4 ) , (2 ,2) , (2,3) , (3,3) , (3,4 ) } . Se calculează ⎧ xij − xrt dacã celula (i,j ) este de rang par în ciclul C1 , semnul − ~ = ⎪ x + x dacã celula (i,j ) este de rang impar în ciclul C , semnul + xij ⎨ ij rt 1 ⎪x dacã celula (i,j )∉ C1 ⎩ ij

şi se trec în Tabelul 5.4

112 Tabelul 5.4 3 5−5 4 5+5 1 9 10+5 1 10−5

Modele şi algoritmi de optimizare

8 5+0

5

2

5
6 4 15−5 7 3

Valoarea funcţiei obiectiv f=5⋅8+5⋅2+10⋅1+5⋅6+15⋅4+10⋅3=180 . Iteraţia a II−a Pas 1. Considerând din nou v4=0 se rezolvă sistemul ~ ~T ~ λ ′B1 = c ′~ ⇒ λ = ( B1 ) −1 c B1 , unde c ′~ =(8 2 1 6 4 3)’ B B
1
1

intră în bază α sk = max{ ij (i,j )∈ S 1 } = α 31 = 8 . α
α ij ≥ 0

′ ′ λ ′ = (u1 u 2 u 3 v1 v 2 v3 ) = (2 5 3 6 − 4 1) , şi obţinem pentru celulele nebazice coeficienţii de cost redus, α12=u1+v2−c12=2−4−3=−5; α13=u1+v3−c13=2+1−5=−2; α21=u2+v1−c21=5+6−4=7 α24=u2+v4−c24=5−7=−2; α31=u3+v1−c31=3+6−1=8; α32=u3+v2−c32=3−4−9=−10. Deoarece nu toţi αij ≤ 0 , (∀)(i, j ) ∈ S 1 , continuăm cu determinarea celulei care

′ Intră în bază celula (3,1) . Vectorul d corespunzător este d 1 =(0 0 1 1 0 0)’ . Pas 2. Se determină ciclul iniţiat de celula (3,1) x11 x14 x22 x23 x33 x34

C2 = (3,1) , (1,1) , (1,4) , (3,4 ) , (3,1) ~ Se determină celula care iese din baza B 1 cu criteriul x i0 j 0 =
(i , j )∈{ (1,1) , (3, 4 ) }

y = − B1 d 1 = − B1

−1

−1

(0

{

′ ′ 0 1 1 0 0) = (− 1 1 0 0 0 − 1)

}

.

min

{x }= x
ij

11

=5

(minimul s-a luat după toate celulele de ordin par din ciclul C2) . ~ Pas 3. Acum iese din bază celula (1,1) şi se obţine baza B 2 cu celulele: ~ B 2 = { (3,1) , (1,4) , (2 ,2) , (2,3) , (3,3) , (3,4) } . Se calculează ⎧ xij − xrt dacã celula (i,j ) este de rang par în ciclul C2 ~ = ⎪ x + x dacã celula (i,j ) este de rang impar în ciclul C xij ⎨ ij rt 2 ⎪x dacã celula (i,j )∉ C2 ⎩ ij şi se trec în Tabelul 5.5.
8 5−5 4 1 6 Tabelul 5.5 3 5 5+5 7 2

5. Problema de transport
10 1 5 9 15 5 4 10−5 3

113

Valoarea funcţiei obiectiv f=10⋅2+10⋅1+5⋅6+5⋅1+15⋅4+5⋅3=140 . Iteraţia a III−a Pas 1. Din nou luăm v4=0 şi rezolvăm sistemul ~ ~T ~ λ ′B 2 = c ′~ ⇒ λ = ( B 2 ) −1 c B21 , unde c ′~ =(1 2 1 6 4 3)’ B B
1
1

′ λ ′ = (u1 u 2 u 3 v1 v 2 v3 ) = (2 5 3 − 2 − 4 1) , şi obţinem pentru celulele nebazice coeficienţii de cost redus, α11=u1+v1−c11=2−2−8=−8; α12=u1+v2−c12=2−4−3=−5; α31=u3+v1−c31=2+1−5=−2; α21=u2+v1−c21=5−2−4=−1; α24=u2+v4−c24=5−7=−2; α32=u3+v2−c32=3−4−9=−10. Deoarece αij ≤ 0 , (∀) (i, j ) ∈ S 2 , soluţia x14=10 , x22=10 , x23=5 , x31=5 , x33=15 , x34=5 este optimă, dă pentru funcţia obiectiv valoarea f=140 şi algoritmul se opreşte. Rezolvăm această problemă şi cu ajutorul pachetului de programe Management Scientist. După lansarea pachetului de programe alegem modulul Transportation din fereastra prezentată în Figura 2.4. Din fereastra care apare se selecteză din submeniul File, New – pentru crearea unei noi probleme de transport, se introduc numărul de depozite şi numărul de centre de consum, apoi costurile unitare de transport ca în Figura 5.1.

Figura 5.1

Pentru rezolvarea problemei, din submeniul Solution se selectează Solve, se alege din fereastra Select Optimization Criteria, Maximization Objective . Se afişează fereastra cu rezultatele problemei. Rezultatele obţinute, aşa cum se văd în Figura 5.2, coincid cu cele obţinute aplicând algoritmul de transport.

114

Modele şi algoritmi de optimizare

Figura 5.2

Să rezolvăm aceeaşi problemă utilizând Solver-ul din Excel. Pentru aceasta creăm foaia de calcul cu datele de intrare ca în Figură 5.3, efectuând paşii descrişi în continuare.

Figura 5.3

În celula D3 introducem funcţia de optimizat D3 =C7*B13+C8*B14+

5. Problema de transport

115

C9*B15+D7*D13+D8*D14+D9*D15+E7*F13+E8*F14+E9*F15+F7*H13+F8 *H14+F9*H15. Celulele cu necunoscutele problemei sunt B13−B15, D13−D15, F13−F15 şi H13−H15. Celulele B18−B24 conţin restricţiile problemei conform cu comentariile din celulele A18−A24, apoi se adaugă condiţiile de nenegativitate. De exemplu, celula B18 conţine =B13+D13+F13+H13, având în vedere cum sunt introduse datele problemei. Analog celelalte celule (B19−B24). După apăsarea butonului Solve se obţin rezultatele problemei şi rapoartele ca în Tabelele 5.6−5.8. Remarcăm că rezultatele sunt aceleaşi cu cele obţinute cu Management Scientist. .........
Tabelul 5.6
Microsoft Excel 10.0 Answer Report Worksheet: [Problema de transport.xls]Sheet1 Report Created: 6/24/2002 11:39:27 PM Target Cell (Min) Cell $C$3 Name Functia de optimizat Original Value 140 Adjustable Cells Cell $B$15 $C$15 $D$15 $E$15 $B$16 $C$16 $D$16 $E$16 $B$17 $C$17 $D$17 $E$17 Name Solutia problemei B2 B3 B4 Solutia problemei B2 B3 B4 Solutia problemei B2 B3 B4 Original Value 0 0 0 10 0 10 5 0 5 0 15 5 Constraints Cell $B$23 $B$24 $B$25 $B$26 $B$27 $B$28 Name Restrictiile problemei Restrictiile problemei Restrictiile problemei Restrictiile problemei Restrictiile problemei Restrictiile problemei Cell Value 10 15 25 5 10 20 Formula $B$23=$F$7 $B$24=$F$8 $B$25=$F$9 $B$26=$B$10 $B$27=$C$10 $B$28=$D$10 Status Not Binding Not Binding Not Binding Not Binding Not Binding Not Binding Slack 0 0 0 0 0 0 Final Value 0 0 0 10 0 10 5 0 5 0 15 5 Final Value 140

116
$B$29 $B$15 $C$15 $D$15 $E$15 $B$16 $C$16 $D$16 $E$16 $B$17 $C$17 $D$17 $E$17 Restrictiile problemei Solutia problemei B2 B3 B4 Solutia problemei B2 B3 B4 Solutia problemei B2 B3 B4 15 0 0 0 10 0 10 5 0 5 0 15 5

Modele şi algoritmi de optimizare
$B$29=$E$10 $B$15>=0 $C$15>=0 $D$15>=0 $E$15>=0 $B$16>=0 $C$16>=0 $D$16>=0 $E$16>=0 $B$17>=0 $C$17>=0 $D$17>=0 $E$17>=0 Not Binding Binding Binding Binding Not Binding Binding Not Binding Not Binding Binding Not Binding Binding Not Binding Not Binding 0 0 0 0 10 0 10 5 0 5 0 15 5

Tabelul 5.7 Microsoft Excel 10.0 Sensitivity Report Worksheet: [Problema de transport.xls]Sheet1 Report Created: 7/10/2002 11:30:45 PM Adjustable Cells
Cell Name Final Value Reduced Cost Objective Coefficient Allowable Increase Allowable Decrease

$B$13 $B$14 $B$15 $D$13 $D$14 $D$15 $F$13 $F$14 $F$15 $H$13 $H$14 $H$15

x11= Solutia problemei x21= Solutia problemei x31= Solutia problemei x12= B2 x22= B2 x32= B2 x13= B4 x23= B4 x33= B4 X14= X24= X34=

0 0 5 0 10 0 0 5 15 10 0 5

8 1.00 0 5 0 10 2 0 0 0 2 0 Constraints

8 4.00 1 3 1 9 5 6 4 2 7 3

1E+30 1E+30 1.00 1E+30 5 1E+30 1E+30 1.00 2 2 1E+30 2

8 1.00 1E+30 5 1E+30 10 2 5 1.00 1E+30 2 2

Cell

Name

Final Value

Shadow Price

Constraint R.H. Side

Allowable Increase

Allowable Decrease

$B$18

x11+x12+x13+x14= Restrictiile problemei

10

−3

10

5

0

5. Problema de transport
x21+x22+x23+x24= Restrictiile problemei x31+x32+x33+x34= Restrictiile problemei x11+x21+x31= Restrictiile problemei x12+x22+x32= Restrictiile problemei x13+x23+x33= Restrictiile problemei x14+x24+x34= Restrictiile problemei

117

$B$19

15

0

15

0

1E+30

$B$20

25

−2

25

5

0

$B$21

5

3

5

0

5

$B$22

10

1

10

0

10

$B$23

20

6

20

0

5

$B$24

15

5

15

0

5

Tabelul 5.8 Microsoft Excel 10.0 Limits Report Worksheet: [Problema de transport.xls]Limits Report 1 Report Created: 7/11/2002 8:23:41 AM Target Cell $D$3 Cell $B$13 $B$14 $B$15 $D$13 $D$14 $D$15 $F$13 $F$14 Name Functia de optimizat Adjustable Name x11= Solutia problemei x21= Solutia problemei x31= Solutia problemei x12= B2 x22= B2 x32= B2 x13= B4 x23= B4 Value 0 0 5 0 10 0 0 5 Value 140 Lower Limit 0 0 5 0 10 0 0 5 Target Result 140 140 140 140 140 140 140 140 Upper Limit 0 0 5 0 10 0 0 5 Target Result 140 140 140 140 140 140 140 140

118 $F$15 $H$13 $H$14 $H$15 x33= B4 x14= x24= x34= 15 10 0 5 15 10 0 5

Modele şi algoritmi de optimizare
140 140 140 140 15 10 0 5 140 140 140 140

5. Problema de transport

119

5.5. Problema atribuirii sarcinilor
Să se determine atribuirea optimă a n sarcini la n specialişti ştiind că: unui specialist i se atribuie o singură sarcină, sarcina este executată de un singur specialist, iar profitul executării sarcinii j de către specialistul i este cij . Atribuirea este optimă dacă profitul obţinut este maxim (Luenberger, 1989). Trebuie să determinăm xij , i = 1, n , j = 1, n astfel încât

• • •

n n ⎧ ⎪max ∑∑ cij xij ⎪ n j =1 1=1 ⎪ x = 1 , i = 1, n ⎪∑ ij (5.1) ⎨ j =1 ⎪n ⎪∑ xij = 1 , j = 1, n ⎪ j =1 ⎪ xij ≥ 0 , i = 1, n , i = 1, n ⎩ În această formulare fiecare variabilă xij trebuie să ia numai valorile 0 sau 1 .

Teorema 5.5. Orice soluţie de bază admisibilă pentru problema de atribuire (5.1) are toate componentele, xij , egale fie cu 0, fie cu 1. Demonstraţie. Din corolarul 5.1 toate variabilele de bază în orice soluţie de bază sunt întregi. Variabilele xij nu pot fi mai mari decât 1 şi cum sunt nenegative, nu pot lua decât valorile 0 sau 1 .

Astfel, sunt cel mult n variabile de bază care au valoarea 1, deoarece există cel mult un singur 1 pe fiecare linie şi fiecare coloană. Într-o problemă de transport de această dimensiune o soluţie de bază nedegenerată ar avea 2n−1 componente pozitive. Problema atribuirii sarcinilor are soluţia admisibilă de bază puternic degenerată având n−1 componente de bază nule. Pentru rezolvarea problemei de atribuire se poate folosi algoritmul de transport sau algoritmul primal−dual pentru problema de programare liniară.

5.6. Probleme propuse

1. Trei staţii de betoane, Si, se aprovizionează cu ciment de la trei rampe de descărcare, Ri . Cantităţile necesare fiecărei staţii şi cele oferite de fiecare rampă de descărcare, precum şi costurile de transport de la fiecare rampă la fiecare staţie de betoane sunt trecute în Tabelul 5.9 .
Tabelul 5.9

120 Staţie Rampă Costuri (u.m.)

Modele şi algoritmi de optimizare
Ofertă (tone) 17 21 23

S1
7 3 4 19

S2
2 6 5 28

S3
5 3 6 14

R1 R2 R3 Necesar (tone)

Să se precizeze planul de transport care să conducă la costul minim de transport şi cât este acest cost.
R. Transportând de la R1 pentru S2 17 tone, de la R2 pentru S1 7 tone şi pentru S3 14 tone, de la R3 pentru S1 12 tone şi pentru S2 11 tone, se obţine costul minim Cmin=200 u.m.

2. O firmă textilă are două fabrici, doi furnizori de materii prime şi trei centre de desfacere. Costurile de transport pentru o tonă de încărcătură între furnizor şi fabrici şi între fabrici şi centrele de desfacere sunt date în Tabelul 5.10 .
Tabelul 5.10 Fabrică A Furnizor 1 2 1 2 B Fabrică 1.5 1.5 A B 4 3 2 4 1 2 Centru de desfacere 1 2 3

Sunt disponibile 10 tone de la furnizorul 1 şi 15 tone de la furnizorul 2. Cele trei centre de desfacere necesită 8, 14 respectiv 3 tone de produse finite. Cele două fabrici au capacitate de producţie nelimitată. a) Să se reducă problema la o problemă de transport cu două surse şi trei destinaţii şi să se determine un plan de transport care să minimizeze cheltuielile totale. b) Dacă fabrica A are o capacitate de producţie de 8 tone şi fabrica B de 7 tone, să se descompună problema în două probleme de transport şi să se rezolve.
3. O firmă are nevoie să angajeze în trei posturi vacante trei persoane cu calificări diferite. Pentru aceste posturi sunt trei pretendenţi, fiecare putând ocupa oricare loc vacant cu acelaşi salariu, dar datorită deosebirii de aptitudini, studii şi experienţă, utilitatea fiecărui candidat pentru firmă depinde de postul pe care este angajat. Veniturile anuale ale firmei de pe urma fiecărui candidat, angajat pe unul din cele trei posturi vacante, sunt trecute în Tabelul 5.11.

5. Problema de transport
Tabelul 5.11 Funcţie 1 Candidat 1 2 3 5 6 8 4 7 11 7 3 2

121

2

3

Să se decidă cea mai bună repartizare pe funcţii a candidaţilor, astfel încât câştigurile firmei să fie maxime.
R. Repartizând candidatul 1 pentru funcţia 3, candidatul 2 pentru funcţia 1 şi candidatul 3 pentru funcţia 2, firma obţine un câştig maxim de 24 .

4. Un centru de proiectare are de realizat trei contracte pentru trei beneficiari (câte unul pentru fiecare beneficiar în parte) şi timpii necesari realizării acestor proiecte (în săptămâni) pentru cele trei echipe de proiectare sunt trecuţi în Tabelul 5.12.
Tabelul 5.12 Client Echipa de proiectare A 1 2 3 10 9 6 B 15 18 14 C 9 5 3

Dacă fiecărei echipe i se atribuie un singur proiect, care va fi cea mai eficientă atribuire în sensul celui mai mic număr de săptămâni necesare pentru realizarea celor trei proiecte?
R. Echipei 1 i se va repartiza proiectul 2, echipei 2 i se va repartiza proiectul 3, echipei 3 i se va repartiza proiectul 1, iar timpul minim necesar realizării celor trei proiecte este de 26 săptămâni.

5. O firmă care organizează mese festive trebuie să servească în fiecare seară câte un banchet, timp de 4 zile. Pentru fiecare zi i sunt necesare ri feţe de mese curate, r1=100 , r2=130 , r3=150 , r4=140 . Feţele de mese murdare se trimit la curăţătorie, care le poate spăla rapid (de pe o zi pe alta) cu un preţ c1=6 u.m., sau normal (la două zile), cu un preţ c2=4 u.m. Firma poate şi să cumpere feţe de mese la un preţ c0=12 . Stocul iniţial de feţe de mese este s=200. Să se determine costul minim pentru a asigura feţe de mese curate în fiecare seară.

6. PROGRAMARE PĂTRATICĂ

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

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

6. Programare pătratică

123

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

şi astfel se obţine modelul ⎧ ⎤ ⎡ n max ⎢∑ (α j + β j ⋅ x j ) ⋅ x j ⎥ = f ( x) ⎪ ⎪ ⎦ ⎣ j =1 ⎪m 1≤ i ≤ m (6.3) ⎨∑ a ij ⋅ x j ≤ bi ⎪ j =1 ⎪ x j ≥ 0 j = 1,n ⎪ ⎩ Am obţinut din nou o problemă de optimizare în care funcţia obiectiv este o formă pătratică, iar restricţiile sunt liniare.

6.1.3. Regresii liniare
Presupunem că avem o mărime y care depinde liniar de variabilele x1, ..., xn , astfel y=a1⋅ x1+ ...+ an⋅ xn. Se pune problema estimării parametrilor a1, ..., an , presupunând cunoscute k observaţii asupra lui y şi xi , i = 1, m
j x1j ,..., x m , j = 1,k

în sensul minimizării sumei pătratelor abaterilor ponderat cu nişte factori bj>0

⎛ ⎞ ⎜ y j − ∑ a i ⋅ xij ⎟ eventual ⎜ ⎟ ⎝ ⎠
2

n ⎞ ⎛ min ∑ b j ⋅ ⎜ y j − ∑ a i ⋅ xij ⎟ . ⎟ ⎜ j =1 i =1 ⎠ ⎝ Asupra parametrilor a1, ..., an se impun condiţii suplimentare, de tipul m

a i− ≤ a i ≤ a i+ sau

∑α
i =1

n

ri

⋅ ai ≤ c r

1≤ r ≤ p .

124

Modele şi algoritmi de optimizare

Se obţine din nou o problemă de programare cu funcţia obiectiv o formă pătratică şi cu restricţii liniare 2 m n ⎧ ⎞ ⎛ ⎪min ∑ b j ⋅ ⎜ y j − ∑ a i ⋅ xij ⎟ ⎟ ⎜ ⎪ i =1 ⎠ ⎝ . ⎨ n j =1 + ⎪ α ⋅ a ≤ c , 1 ≤ r ≤ p sau a ≤ a ≤ a r i i i ⎪∑ ri i ⎩ i =1 Mai înainte de a trece la rezolvarea problemei de programare pătratică să amintim câteva noţiuni referitoare la formele pătratice.

6.2. Definiţii. Proprietăţi

Fie f o funcţie de gradul al doilea în x1, ..., xn f ( x ) = ∑∑ C ij ⋅ xi ⋅ x j + ∑ c j ⋅ x j + c 0
i =1 j =1 j =1 n n n

unde: x=(x1, ..., xn)’ , C ∈ M n ,n (R ) şi Cij=Cji (în caz contrar, adică dacă Cij≠Cji,
1 (C ij + C ji ) 2 dij=dji ) , iar c ′ = (c1 ,..., cn ) .

definim

d ij =

şi atunci

∑∑ C
i =1 j =1

n

n

ij

⋅ xi ⋅ x j = ∑∑ d ij ⋅ xi ⋅ x j
i =1 j =1

n

n

şi

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

n

n

ştie că funcţia Q(x) se poate pune sub formă de sumă algebrică de pătrate de expresii liniare, omogene şi independente (reducerea la forma canonică a formelor pătratice cu metoda lui Gauss). Dacă notăm cu n+ şi cu n− numărul pătratelor care au coeficienţii pozitivi şi respectiv negativi, atunci avem n+ + n− ≤ n .
Definiţia 6.1. Q(x) se numeşte formă pătratică pozitiv definită dacă n+ = n şi n– = 0 . Definiţia 6.2. Q(x) se numeşte formă pătratică pozitiv semidefinită dacă n+<n şi n−=0 . Definiţia 6.3. Q(x) se numeşte formă pătratică negativ definită dacă n− = n şi n+= 0 . Definiţia 6.4. Q(x) se numeşte formă pătratică negativ semidefinită dacă n−< n şi n+ = 0 .

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

6. Programare pătratică

125

Propoziţia 6.1. Dacă Q( x ) = x ′Cx este pozitiv semidefinită, atunci Q(x)=0 dacă şi numai dacă Cx=0 . Demonstraţie. Arătăm că Q(x)=0 implică Cx=0 . Fie (∀) y ∈ R n şi (∀)λ ∈ R , atunci Q ( y + λx ) = ( y + λx ) ′C ( y + λx ) = y ′Cy + 2λy ′Cx + λ 2 x ′Cx = y ′Cy + 2λy ′Cx ≥ 0 . Cum inegalitatea are loc pentru (∀)λ ∈ R , rezultă că y ′Cx = 0 . Dar cum această egalitate are loc pentru orice y , rezultă că Cx=0. Implicaţia inversă este evidentă ! Proprietăţi 1. Dacă Q este pozitiv definită, atunci det(C)>0 şi Q(x)>0, (∀)x ∈ R n \ {0} , iar Q(0)=0 . 2. Dacă Q este pozitiv semidefinită, atunci det(C)=0 şi Q(x)=0, pentru o mulţime de vectori x≠0 . 3. Dacă Q este negativ definită, atunci det(C)<0 şi Q(x)<0, (∀)x ∈ R n \ {0} , iar Q(0)=0 4. Dacă Q este negativ semidefinită, atunci det(C)=0 şi Q(x)=0, pentru o mulţime de vectori x≠0 . Demonstraţie

1. Q fiind pozitiv definită se poate reduce la forma canonică Q (ξ ) = ∑ λ i ξ i2 cu
i =1

n

λi > 0 , i = 1, n . Atunci

det(C ) = ∏ λi > 0 . Afirmaţia a doua rezultă din
i =1

n

Propoziţia 6.1 , astfel Q( x ) = x ′Cx = 0 ⇒ Cx = 0 . Dar, C este nesingulară şi unica soluţie este x=0. 2. Dacă Q este pozitiv semidefinită Q(ξ ) = ∑ λi ξ i2
i =1 n n+

cu

λi > 0 , i = 1, n + ,

λi = 0 , i = n + + 1, n . Atunci

det(C ) = ∏ λ i = 0 . Din Propoziţia 6.1 rezultă
i =1

Q( x ) = x ′Cx = 0 ⇒ Cx = 0 . Dar, C este singulară şi soluţia x=0 nu este unică. Analog se demonstrează afirmaţiile 3 şi 4.
Observaţia 6.1. Pentru (∀) x, y ∈ R n , x ≠ y şi (∀)λ ∈ (0,1) avem

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

(

)

Deci, dacă Q este pozitiv definită avem Q[λ ⋅ x + (1 − λ ) ⋅ y ] < λ ⋅ Q( x ) + (1 − λ ) ⋅ Q( y ) şi dacă Q este pozitiv semidefinită avem

126

Modele şi algoritmi de optimizare

Q[λ ⋅ x + (1 − λ ) ⋅ y ] ≤ λ ⋅ Q( x ) + (1 − λ ) ⋅ Q( y ) . Prin urmare, orice formă pătratică pozitiv definită este o funcţie strict convexă şi orice formă pătratică pozitiv semidefinită este o funcţie convexă.
O problemă de programare pătratică este acea problemă în care trebuie care minimizează o formă pătratică convexă sau determinat un vector x* maximizează o formă pătratică concavă şi în care variabilele mai trebuie să verifice un sistem de inegalităţi liniare şi eventual unele restricţii de semn. Forma generală a problemei de programare pătratică este n ⎧ 1 n n ⎪min f ( x ) = min 2 ∑∑ Cij ⋅ xi ⋅ x j + ∑ ci ⋅ xi i =1 j =1 i =1 ⎪n ⎪ ⎨∑ aij ⋅ x j ≤ bi 1 ≤ i ≤ m ⎪ j =1 ii ⎪ x j ≥ 0 1 ≤ j ≤ n (restricþ de semn) ⎪ ⎩ sau matriceal ⎧ ⎧1 ⎫ ⎪min f ( x) = min ⎨ 2 x ′Cx + c ′x ⎬ ⎩ ⎭ ⎪ ⎪ Ax ≤ b ⎨ ⎪x ≥ 0 ⎪ n m ⎪ ⎩ x ∈ R , b ∈ R , A ∈ M mn (R ) , C ∈ M n (R ) unde
1 x ′Cx + c ′x 2 este convexă. Numim această formă a problemei de programare pătratică forma canonică. În inegalităţile (6.4), valorile bi sunt strict pozitive (dacă ar fi negative, inegalităţile respective se înmulţesc cu –1).
f ( x) =

(6.4)

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

6. Programare pătratică

127

Figura 6.1

Figura 6.2

6.3. Fundamentarea algoritmului lui Wolfe

În cele ce urmează sunt prezentate teoreme ce permit trecerea de la problema de programare pătratică la o problemă de programare liniară echivalentă, fiind astfel posibilă utilizarea algoritmului simplex pentru obţinerea soluţiei problemei de programare pătratică. Algoritmul care se obţine este cunoscut sub numele de algoritmul lui Wolfe, cu cele două forme ale sale : scurtă şi lungă. Teorema 3.5 (care dă condiţiile Kuhn-Tucker) pentru această problemă are formularea următoare.
* * Teorema 6.1. (Condiţiile Kuhn−Tucker). Vectorul x * = x1 , ..., x n

(

)

este soluţia

problemei de programare pătratică (6.4) dacă şi numai dacă există * * * * * * u * = u1 , ..., u m , v * = v1 , ..., v n şi y * = y1 , ..., y m astfel încât

(

)

(

)

(

)

⎧n * * 1≤ i ≤ m ⎪∑ aij x j + yi = b = ⎪ jn 1 m ⎪ C x * − u * a − v * = −c 1≤ j ≤ n ⎪∑ jk k ∑ i ij j j ⎨ k =1 i =1 ⎪ x * ≥ 0 , u* ≥ 0 , v * ≥ 0 , y * ≥ 0 ⎪n n ⎪∑ x*j v*j = 0 , ∑ u* y* = 0 i i ⎪ j =1 i =1 ⎩ sau matriceal

(6.5)

128

Modele şi algoritmi de optimizare

⎧ Ax + y = b ⎪Cx - A t u - v = -c ⎪ ⎨ ⎪ x ′v = 0, u ′y = 0 ⎪ x * ≥ 0 , u* ≥ 0 , v * ≥ 0 , y * ≥ 0 ⎩ Observaţia 6.2. yi sunt variabilele ecart care apar în Ax+y=b, vi sunt variabilele ecart în C⋅x−ATu−v=−c . Din condiţiile de nenegativitate rezultă că xjvj=0 şi uiyi=0 , 1 ≤ j ≤ n , 1 ≤ i ≤ m , adică din cele 2⋅m+2⋅n necunoscute care apar în sistemul (6.5) de m+n ecuaţii, interesează numai soluţiile nenegative, care au cel mult m+n componente nenule, adică soluţiile admisibile de bază ale sistemului (6.5) . Fie problema de programare pătratică n 1 n n ⎧ min f ( x ) = min ∑∑ Cij xi xi + ∑ ci xi ⎪ 2 i =1 j =1 i =1 ⎪n ⎪ ⎨∑ aij x j = bi 1 ≤ i ≤ m ⎪ j =1 1≤ j ≤ n ⎪x j ≥ 0 ⎪ ⎩

⎧ ⎧1 ⎫ ⎪min f ( x ) = min ⎨ 2 x ′Cx + c ′x ⎬ ⎩ ⎭ ⎪ ⎨ Ax = b ⎪x ≥ 0 (6.4’) ⎪ ⎩ (matriceal)

Numim această formă a problemei de programare pătratică forma standard. Teorema 6.2. Problema (6.4’) admite soluţie optimă x* dacă şi numai dacă (∃)u ∈ R m astfel încât ′ x* ≥ 0 ; Ax* = b ; c + Cx* − At u* ≤ 0 ; x* c + Cx* − At u = 0 . Demonstraţie. Din Teorema 6.1 rezultă că x* este soluţie a problemei (6.4’) dacă şi numai dacă (∃) u* ∈ R m , astfel încât ′ x* ≥ 0 , ∇ u L(x* , u* ) = 0 , ∇ x L(x* , u* ) ≤ 0 , ( x * ) ∇ x L(x* , u* ) = 0 .

( )(

)

Corolar 6.2. x* este soluţie a problemei (6.4’) dacă şi numai dacă (∃)v * ∈ R n , u* ∈ R m , astfel încât x * , v * , u* este soluţie pentru sistemul

(

)

⎧ Ax = b ⎪ t ⎨Cx − A u + v = -c ⎪ x′v = 0 , x ≥ 0 , u ≥ 0 . ⎩

(6.6)

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

6. Programare pătratică

129

⎧ Ax * = b ⎪ * t * * ⎨Cx − A u + v = -c ⎪ x * ≥ 0 , u* ≥ 0 , ⎩

(6.7)

este incompatibil. Demonstraţie. Presupunem că min f ( x ) = −∞ şi să arătăm că sistemul (6.7) este incompatibil. Fie x∈ R . Prin absurd, presupunem că sistemul (6.7) are soluţia (x*, u*, v*). Deoarece f este convexă avem ′ ′ ′ f ( x ) − f ( x* ) ≥ ∇ x f ( x* ) x − x* = Cx* + c x − x* = At u* − v x − x* = ′ ′ ′ ′ = u* Ax - v* x - u* Ax + v* x* Dar ′ Ax * = Ax = b şi v * x * ≥ 0 , de unde rezultă că ′ f ( x ) ≥ f ( x* ) - v * x , adică minf(x) nu poate fi - ∞ . Contradicţie! Să arătăm că dacă sistemul (6.7) este incompatibil atunci minf(x)= – ∞. Sistemul fiind incompatibil, rezultă că problema (6.4’) nu are soluţii. Da, cum R≠φ, rezultă că min f ( x ) = −∞ .

(

)( ) ( )( ) ( ( ) ( ) ( ) ( )
( )

)(

)

( )

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

Să considerăm o partiţie, (I i )1≤i ≤3 , a mulţimii indicilor

{

}

{ 1, 2,..., n}

astfel

⎛ x1 ⎞ ⎛v 1 ⎞ ⎜ 2⎟ ⎜ ⎟ x = ⎜ x ⎟ , v = ⎜v 2 ⎟ . ⎜ 3⎟ ⎜ 3⎟ ⎝x ⎠ ⎝v ⎠ Lema 6.1. Dacă următoarea problemă de programare liniară min g ′z ⎧ Ax = b ⎪Cx − A t u + v + Dz = -h ⎪ ⎨ n m ⎪ x, v, z, g ∈ R , u, h ∈ R ⎪ x, v, z ≥ 0 , x 3 = 0 , v 1 = 0 ⎩ astfel încât

(6.8)

admite soluţie optimă (x*, v*, u*, z*) cu x*1>0 , v*3>0 , atunci există µ ∗ ∈ R n

Aµ * = 0 , Cµ * = 0 , µ * ≥ 0 , g ′z * = h′µ * .
2

Demonstraţie. Rearanjând restricţiile, problema (6.8) se poate pune sub forma

130

Modele şi algoritmi de optimizare

min g ′z
⎧ ⎡ x1 ⎤ ⎪ ⎢ 2⎥ ⎪[A1 A2 A3 ] ⎢ x ⎥ = b ⎪ ⎢0⎥ ⎣ ⎦ ⎪ ⎪ 1 ⎡0⎤ ⎨⎛ C11 C12 C13 ⎞ ⎡ x ⎤ ⎟⎢ 2 ⎥ t ⎪⎜ C C 22 C 23 ⎟ ⎢ x ⎥ − A u + ⎢v 2 ⎥ + Dz = h ⎢ ⎥ ⎪⎜ 21 ⎢v 3 ⎥ ⎪⎜ C 31 C 32 C 33 ⎟ ⎢ 0 ⎥ ⎝ ⎠⎣ ⎦ ⎣ ⎦ ⎪ 1 2 2 3 ⎪x , x , v , v , z ≥ 0 ⎩ Duala problemei (6.9) este problema de programare liniară max {b′λ + h′µ }
t t t ⎧ At λ + C11µ 1 + C 21µ 2 + C 31µ 3 ≤ 0 1 ⎪ t t t t 1 2 3 ⎪ A2 λ + C12 µ + C 22 µ + C 33 µ ≤ 0 ⎨ t ⎪D µ ≤ g ⎪ Aµ = 0 , µ 2 ≥ 0 , µ 3 ≥ 0 . ⎩

(6.9)

(6.10)

(

Din Teorema fundamentală a dualităţii (§4.13) există o soluţie optimă λ , µ ∗ pentru problema duală (6.10) astfel încât b ′λ ∗ + h′µ ∗ = g ′z * . Deoarece

)

x , v > 0 , restricţiile corespunzătoare variabilelor x 1 , v 3 sunt verificate cu egalitate de către soluţia optimă a problemei duale (din Teorema ecarturilor complementare, §4.13), adică

*1

*3

⎧ A t λ ∗ + C t µ ∗1 + C t µ ∗ 2 = 0 11 21 ⎪ 1 ⎪ t ∗ ∗1 ∗2 t t ⎨ A2 λ + C12 µ + C 22 µ ≤ 0 ⎪ Aµ ∗ = 0 , µ ∗ 2 ≥ 0 , µ ∗ 3 = 0 , ⎪ ⎩

(6.11)

Înmulţind prima relaţie (6.11) cu µ ∗1 , iar pe cea de-a doua cu µ *3 ≥ 0 şi adunându-le, avem 1 ′ 1 ′ 1 1 ′ 2 t t µ ∗ A1t λ ∗ + µ ∗ C11 µ ∗ + µ ∗ C 21 µ ∗ +

( ) ( ) ′ ′ + (µ ) A λ + (µ ) C
∗2 t 2 ∗ ∗2

t 12

µ∗

1

( ) ′ + (µ ) C
∗2

t 22

µ∗ ≤ 0 .
2

Ţinem seama că Aµ ∗ = 0 şi atunci putem scrie relaţiile de mai sus sub forma
⎡ ∗1 ′ 2 µ∗ ⎢µ ⎣ C ( ) ( )′ ⎤⎥⎛⎜⎜ C ⎦⎝
11 1 C12 ⎞⎛ µ ∗ ⎞ ⎟⎜ 2 ⎟ ≤ 0 . C 22 ⎟⎜ µ ∗ ⎟ ⎠⎝ ⎠

12

6. Programare pătratică

131

3 ′ Deoarece µ ∗ = 0 , relaţia de mai sus se mai poate scrie µ ∗ Cµ ∗ ≤ 0 . Cum C ′ este pozitiv semidefinită, rezultă că µ ∗ Cµ ∗ = 0 , iar din Propoziţia 6.2 avem

( )

( )

t Cµ ∗ = 0 . Relaţiile (6.11) devin A1t λ ∗ = 0 şi A2 λ ∗ ≤ 0 . Ţinem seama de aceste

relaţii în evaluarea produsului b ′λ şi avem ′ 1 ′ 2 ′ 2 b′λ = λ ∗ Ax * = λ ∗ A1 x * + λ ∗ A2 x * = λ ∗ A2 x * = 0 ,

( )

( )

( )

adică b′λ = 0 şi g ′z * = h′µ * . Astfel, lema este demonstrată.
Propoziţia 6.3. Dacă R ≠ φ , atunci problema (6.4’) are optim infinit dacă şi

numai dacă (∃)µ ∗ ∈ R n soluţie a sistemului

⎧ Aµ = 0 ⎪Cµ ≤ 0 ⎪ ⎨ ⎪c ′µ < 0 ⎪µ ≥ 0 ⎩

(6.12)

Demonstraţie. Dacă min f ( x ) = −∞ , atunci sistemul (6.7) este incompatibil, adică problema de programare liniară ⎧min e ′z ⎪ Ax = b ⎪ ⎪ t (6.13) ⎨Cx − A u + v + Dz = -c ⎪ x≥0 , u≥0 , ⎪ ⎪ ⎩
⎧0 dacã i ≠ j ⎪ unde D = (d ij )1 ≤ , d ij = ⎨1 dacã i = j , ci ≤ 0 , iar e ′ = (1, ...,1) are optim i, j≤n ⎪− 1 dacã i = j , c > 0 i ⎩ nenul. Fie (x*, v*, u *, z*) o soluţie optimă pentru (6.13). Sistemul (6.12) este compatibil, aşa cum rezultă din Lema 6.1, în care luăm g = e = (1,1,...,1) , h = -c , I 1 = I 3 = φ şi ţinând seama că e’z>0. Dacă

rezultă că x + αµ ∈ R pentru (∀)α ≥ 0 . Calculăm
*

(∀)α ≥ 0 , astfel încât

(∃)µ ∗ ∈ R n

soluţie a sistemului (6.12) şi

x + αµ * ≥ 0 avem A x + αµ * = Ax + αAµ * = b . De aici

(

)

x ∈R ,

atunci pentru

′ f x + αµ * = f ( x ) + 2αx ′Cµ * + α 2 µ ∗ Cµ * + αc ′µ * = f ( x ) + αc ′µ *

(

)

şi pentru că c ′µ * < 0 , rezultă că

( ) f (x + αµ ) ⎯⎯ → −∞ . ⎯
*

α →∞

132

Modele şi algoritmi de optimizare

6.4. Forma scurtă a algoritmului lui Wolfe

Algoritmul lui Wolfe în forma scurtă constă din două etape. În etapa întâi se rezolvă următoarea problemă de programare liniară (Ştefănescu, 1989): ⎧min z 1 + z 2 ⎪ ⎪ Ax = b (6.14) ⎨ * 1 2 t ⎪Cx − A u + v + z − z = -c ⎪ x, v, z 1 , z 2 ≥ 0 ⎩

{

}

x, v, z1 , z 2 ∈ R n , iar unde u ∈ R m , împreună cu următoarea regulă suplimentară: (6.15) Pentru (∀)i = 1, n , xi , vi nu pot fi simultan nenuli Teorema 6.3. Prin aplicarea algoritmului simplex problemei (6.14) împreună cu regula suplimentară (6.15) se ajunge la una din situaţiile: a) problema (6.14) nu are soluţii admisibile, R = φ ; b) se obţine soluţia optimă (x*, v*, u *, z*1, z*2) pentru problema (6.14); c) se obţine o soluţie de bază a problemei (6.14) care nu mai poate fi îmbunătăţită fără încălcarea regulii (6.15). Demonstraţie. Se aplică algoritmul simplex, faza I, problemei (6.14), ţinându-se seama de regula (6.15) . Întrucât nu s-au pus condiţii de semn asupra vectorului u, îl vom descompune în u= u 1- u 2 , u1 ≥ 0 , u 2 ≥ 0 . Semnul pentru z i1 , z i2 se alege astfel încât să fie acelaşi cu cel al termenului liber ci . De aceea aceste variabile sunt iniţial variabile de bază. Se completează baza cu variabilele artificiale xa, adăugate primelor m ecuaţii. Fie r = rang ( A) < m şi se consideră că primele r

⎡ A⎤ coloane ale matricei ⎢ ⎥ sunt primii r vectori unitari din Rm+n. ⎣C ⎦ Faza I se aplică problemei ⎧ ⎧ a⎫ ⎪min ⎨∑ xi ⎬ ⎭ ⎪~ ⎩ i ⎪ A~ = b x ⎨ * t 2 1 2 − t 1 ⎪Cx a A u 1 + A u 1 + v2+ z − z = -c 2 ⎪ x, x , v, u , u , z , z ≥ 0 ⎪ 1 2 r a m−r 1 2 m ⎩ x, v, z , z ∈ R , x ∈ R , u , u ∈ R unde ⎛ x⎞ ~ A = A, e r +1 ,...e m , ~ = ⎜ a ⎟ , x ⎜ ⎟ ⎝x ⎠

(6.16)

(

)

6. Programare pătratică

133

respectând regula (6.15). Baza iniţială este baza canonică din Rm+n , iar soluţia de bază iniţială este ⎧ ⎧bi 1 ≤ i ≤ r 2 ⎧ 1 dacã c j ≤ 0 , ⎪ xi = ⎨ ⎪ z j = -c j , z j = 0 0 r +1 ≤ i ≤ m , ⎨ 1 (6.17) ⎨ 2 ⎩ cj ≥ 0 . ⎪ z j = 0 , z j = −c j dacã ⎪x a = b r ≤ i ≤ m ⎩ i ⎩ i Deoarece coeficienţii variabilelor vi şi z i1 coincid, două astfel de variabile nu pot fi simultan în bază şi atunci regula (6.15) se poate aplica în această fază fără a se altera rezultatul. De fiecare dată când o variabilă z i1 are şansa să intre în bază o vom înlocui cu vi , păstrând astfel v=0 în faza I.

Teorema 6.4 1. Dacă se realizează a) din Teorema 6.3, atunci problemma (6.4’) nu are soluţii admisibile. 1 2 2. Dacă se realizează b) din Teorema 6.3, adică z * = z * = 0 , atunci x* este soluţie optimă a problemei (6.4’). 3. Dacă se realizează b) din Teorema 6.3 şi e ′ z 1 + z 2 > 0 , problema (6.4’) are optim infinit. 1 2 4. Dacă se realizează c) din Teorema 6.3 şi dacă z * = z * = 0 , atunci x* este soluţie optimă pentru problema (6.4’). Demonstraţie. Dacă se realizează a) din Teorema 6.3, atunci sistemul Ax = b , x ≥ 0 este incompatibil deoarece nu s-au eliminat în faza I toate variabilele artificiale xa din bază. Dacă se realizează b) şi c) din Teorema 6.3, rezultă că sistemul Ax = b , x ≥ 0 este compatibil şi astfel rezultă concluziile 2, 3 şi 4 şi demonstraţia se încheie.

(

)

Comentarii 1. Variabilele z i2 se introduc doar dacă ci>0. 2. La încheierea fazei întâi s-au eliminat toate variabilele artificiale xa . În 1 2 faza a doua nu se mai introduc variabilele z i* , z i* nebazice. 3. Nu se poate trage o concluzie în situaţia c) din Teorema 6.3, deoarece regula (6.15) nu face parte din algoritmul simplex. 4. Dacă A are o bază unitară, faza I nu mai este necesară.
Următoarea teoremă stabileşte condiţii suficiente pentru cazul în care se poate aplica algoritmul simplex, completat cu regula suplimentară (6.15), pentru rezolvarea problemei de programare pătratică (6.4’).

Teorema 6.5. Pentru ca prin aplicarea algoritmului simplex, modificat cu regula (6.15), problemei (6.14) să se ajungă în una din situaţiile: a) problema (6.14) nu are soluţii admisibile, R = φ ; b) se obţine soluţia optimă (x*, v*, u *, z*1, z*2) pentru problema (6.14);

134

Modele şi algoritmi de optimizare

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

unde D = (d ii ` )1 ≤ i ≤ n este o matrice diagonală ale cărei elemente sunt date de relaţiile ⎧1 dacã zib1 este variabilã bazicã ⎪ d ii = ⎨− 1 dacã z ib 2 este variabilã bazicã , ⎪0 altfel ⎩

pornind de la soluţia de bază ⎧ z b1 ⎪ z ib = ⎨ z b 2 ⎪0 ⎩

Fie I 1 = i x i* > 0 şi I 3 = i v i* > 0 , unde (x*, v*, u*, z*) este soluţia finală a problemei (6.14’), obţinută cu algoritmul simplex modificat cu regula suplimentară (6.15). Atunci (x*, v*, u*, z*) este soluţie optimă şi a problemei ⎧min ∑ z i ⎪ i ⎪ Ax = b ⎪ (6.14”) ⎨Cx − A t u + v + Dz = -c ⎪ 3 1 ⎪x = 0 , v = 0 ⎪ x, v, z ≥ 0 ⎩ * Presupunem că (x , v*, u*, z*) nu este soluţie optimă a problemei (6.14’) şi atunci, la următorul pas, algoritmul simplex produce o nouă soluţie de bază îmbunătăţită pentru problema (6.14”). Deoarece x *j = 0 , i ∈ I 2 ∪ I 3 , v *j = 0 ,
i ∈ I 1 ∪ I 2 şi cum problema (6.14”) impune condiţiile

{

}

(xb, vb, ub, zb) , unde dacã z ib1 este variabilã de bazã dacã zib 2 este variabilã de bazã altfel.

{

}

x 3 = 0 , v 1 = 0 , este

posibil ca în noua soluţie de bază cu valori nenule, cel mult una din variabilele x i , v i , i ∈ I 2 . În acest fel noua soluţie satisface condiţia (6.15) şi este o soluţie mai bună decât (x*, v*, u*, z*). Contradicţie !

6. Programare pătratică

135

′ În Lema 6.1, luând g ′ = (1, ...,1) şi h = – c , obţinem existenţa vectorului

µ ∈ R n cu proprietăţile Aµ * = 0 , Cµ * = 0 , g ′z * = c ′µ * . Din i) rezultă că g’z= 0 şi atunci z= 0 .
Din ii) şi Cµ*= 0 rezultă că µ*= 0 şi g’z= 0 şi atunci din nou z= 0 . Problema (6.4) poate fi adusă la forma (6.4”), similară formei (6.4’), prin introducerea variabilelor ecart w, astfel ⎧ ⎧ 1 ~ ~~ ~ ~ ⎫ ⎪min ⎨ 2 x ′Cx + c ′x ⎬ ⎭ ⎪ ~ ⎩ Ax = b (6.4”) ⎨ ⎪~ ≥ 0 x ⎪ ⎩ ⎛ x⎞ ~ ⎛ c ⎞ ~ ⎛C 0⎞ . x ⎜ ⎟ unde: ~ = ⎜ ⎟ ∈ R n+ m , c = ⎜ ⎟ , C = ⎜ ⎟ ⎜ 0⎟ ⎜ 0 0⎟ ⎠ ⎝w⎠ ⎝ ⎠ ⎝ Adăugarea variabilelor ecart nu afectează faptul că matricea C din funcţia obiectiv este pozitiv definită. ~ ~ ~ Din iii) C este pozitiv semidefinită şi aplicând Lema 6.1 pentru A , C ∗ ~ ⎛µ ⎞ ~ rezultă că există µ ∗ = ⎜ ∗w ⎟ cu Cµ * = 0 . De aici rezultă că Cµ*=0 şi, ca mai ⎜µ ⎟ ⎝ ⎠ sus, µ*=0 şi g’z=0 şi atunci din nou z=0. În toate cele trei situaţii soluţia (x*, v*, u*, z*) are z=0 şi teorema este demonstrată. Observaţia 6.3 a) Forma scurtă a algoritmului lui Wolfe se aplică atunci când se verifică incluziunea µ ∈ R n Aµ = 0 , Cµ = 0 ⊆ µ ∈ R n c′µ = 0 (6.18) b) Incluziunea (6.18) are loc dacă se verifică unul din următoarele cazuri: i) c=0 , ii) C este pozitiv definită, iii) Matricea C, A t are rangul n ,

{

} {

}

[

]

iv) Sistemul Cx + At u = c are soluţii, v) Problema standard (6.4’) poate fi scrisă sub forma canonică ⎧ ⎫ ⎧1 * * ⎪min ⎨ 2 x ′C x + (c )′ x ⎬ ⎭ ⎩ ⎪ ⎪ * * ⎨A x = b ⎪x ≥ 0 ⎪ ⎪ ⎩ * cu C pozitiv definită.

136

Modele şi algoritmi de optimizare

Demostraţie i) Incluziunea (6.18) este evidentă deoarece membrul drept coincide cu R n . ii) şi iii) au membrul stâng format numai din vectorul nul şi atunci incluziunea (6.18) este evidentă. iv) c este o combinaţie liniară a liniilor matricei C, A t şi incluziunea (6.18) este evidentă. v) Demonstraţia este dată în Teorema 6.5 .

[

]

Comentarii. Faza I rezolvă problema (6.16) pentru eliminarea variabilelor auxiliare xa din bază, luând u=0 , v=0 . Dacă problema (6.4’) are optim, atunci minimul din problema (6.16) este zero şi variabilele x ia au fost înlociute cu x i . Dacă nu s-au eliminat din bază toate variabilele x ia (caz de degenerare), se înlocuiesc xia cu
x i , lucru posibil când rang ( A) = m . Dacă rang ( A) < m , variabilele x ia rămase în bază se elimină o dată cu liniile şi coloanele corespunzătoare din A, deoarece restricţiile corespunzătoare sunt consecinţe ale celorlalte. Baza cu care se iese din faza I conţine numai una din variabilele z i1 z i2 , deoarece coloanele corespunzătoare acestor variabile sunt egale şi de semn contrar. Aşadar, din faza I se iese cu o bază formată din m variabile xi (dacă rang ( A) = m ) şi n variabile

z i1 sau z i2 . Faza a II-a foloseşte programul obţinut în faza I pentru rezolvarea problemei (6.14’), ţinând seama de regula (6.15) care poate fi formulată şi astfel : dacă una din variabilele xi şi vi este în bază, atunci cealaltă nu poate fi introdusă în bază la iteraţia respectivă. Se asigură astfel respectarea condiţiei xivi=0.
Exemplu. Să se rezolve următoarea problemă de programare pătratică : 1 2 1 ⎧1 ⎫ min ⎨ x12 + x 2 − 2 x1 + 3 x 2 + x 3 ⎬ = min x' Cx + c' x 2 2 ⎩2 ⎭ ⎧ x1 − 2 x 2 + x 3 = 4 . ⎨ ⎩ x1 , x 2 , x 3 ≥ 0 Rezolvare. Vom aplica algoritmul lui Wolfe în forma scurtă. ⎛ − 2⎞ ⎛1 0 0⎞ ⎜ ⎟ ⎜ ⎟ 1 f(x)= x' Cx + c' x ; C = ⎜ 0 1 0 ⎟ , c = ⎜ 3 ⎟ , A = (1 − 2 1) . 2 ⎜ 1 ⎟ ⎜ 0 0 0⎟ ⎝ ⎠ ⎝ ⎠ Verificăm dacă se poate aplica algoritmul Wolfe, forma scurtă. ⎛1 0 0 1 ⎞ 1 0 1 ⎟ ⎜ t rang C A = rang ⎜ 0 1 0 − 2 ⎟ = 3 deoarece 0 1 − 2 = 1 . ⎜0 0 0 1 ⎟ 0 0 1 ⎠ ⎝

[ ]

6. Programare pătratică

137

Aşadar, se poate aplica algoritmul deoarece incluziunea (6.18) este verificată, fiind îndeplinită condiţia iii) din Comentarii. Introducem variabilele artificiale nenegative xa, z1, z2 şi condiţiile Kuhn−Tucker devin: ⎧ Ax + x a = b ⎪ t 1 2 ⎪Cx − v + A u + z − z = −c1 ⎨ 1 2 ⎪ x ≥ 0, v ≥ 0, z ≥ 0, z ≥ 0, w ≥ 0 ⎪u oarecare ⎩ Pentru a avea o bază, acestor variabile li se atribuie valori astfel: z 1j = −c j dacã c j ≤ 0 ; z 2 = 0 sau j
z2 = cj j dacã c j ≥ 0 ; z 1j = 0 . În soluţia de bază luăm: x =0 , v = 0 , u = 0, xa = b . Pentru ca şi asupra lui u să existe condiţii de nenegativitate, îl desfacem în doi vectori nenegativi astfel: u = u1−u2 (u corespunzând restricţiei cu egalitate, nu are resţricii de semn). Matriceal, restricţiile Kuhn−Tucker devin:

⎧ Ax + x a = b 0⎞ ⎛1 0 ⎜ ⎟ ⎪ 1 2 t ⎨Cx − v + A u − u + Dz = −c , unde D = ⎜ 0 − 1 0 ⎟ ⎜ 0 0 − 1⎟ ⎪ x , v , u1 , u 2 , z 1 , z 2 , w ≥ 0 ⎝ ⎠ ⎩ Pe componente avem: ⎧ x1 − 2 x 2 + x3 + x a =4 ⎪ 1 2 1 =2 ⎪ x1 − v1 + u − u + z1 ⎪ 1 2 2 ⎨ x 2 − v 2 − 2u − 2u − z1 = −3 . ⎪− v + u 1 − u 2 − z 2 = −1 2 ⎪ 3 1 2 1 2 ⎪ x, v, u , u , z , z , w ≥ 0 ⎩ Faza I. Se aplică algoritmul simplex următoarei probleme de programare liniară:

(

)

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

n

⎧ x1 − 2 x 2 + x 3 + x a ⎪ 1 2 1 ⎪ x1 − v1 + u1 − u1 + z1 ⎪ 1 2 2 ⎨− x 2 + v 2 + 2u 2 + 2u 2 + z1 ⎪v − u 1 + u 2 + z 2 3 3 2 ⎪ 3 ⎪ x , v , u1 , u 2 , z 1 , z 2 , x a ≥ 0 . ⎩

=4 =2 =3 =1

În această fază u = 0, v = 0, deci nu pot intra în bază. Calculele sunt date în Tabelul 6.1 . Algoritmul simplex se opreşte cu min xa=0.
Tabelul 6.1

138
CVB 1 0 0 0 0 0 0 0 VB xa VVB 4 2 3 1 4 4 2 3 1 0 0 x1 1 1 0 0 1 1 1 0 0 0 0 x2 −2 0 −1 0 −2 −2 0 −1 0 0 0 x3 1° 0 0 0 1* 1 0 0 0 0 0 v1 0 −1 0 0 0 0 −1 0 0 0 0 v2 0 0 1 0 0 0 0 1 0 0 0 v3 0 0 0 1 0 0 0 0 1 0

Modele şi algoritmi de optimizare
0 u1 0 1 2 −1 0 0 1 2 −1 0 0 u2 0 −1 −2 1 0 0 −1 −2 1 0 0
1 z1

0
2 z2

0
3 z2

1 xa 1 0 0 0 0

z z

1 1

0 1 0 0 0 0 1 0 0 0

0 0 1 0 0 0 0 1 0 0

0 0 0 1 0 0 0 0 1 0

2 z2 3 2

x3
1 z1 2 z2 3 z2

Tabelul 6.2
CVB 0 1 1 1 0 1 0 1 0 0 0 1 VB x3
1 z1 2 z2

VVB 4 2 3 1 6 4 1/2 3/2 5/2 3 7/2 1/2 3/2 5/2 5/2 2 2 3 1 1 1 3 5 1 0

0 x1 1 1 0 0 1 1 1° 0 0 1* 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0

0 x2 −2 0 −1 0 −1 −2 1/2 −1/2 −1/2 −1 −5/2 1/2 −1/2 −1/2 −1/2 −2 0 −1 0 0 −2 0 −1 0 0

0 x3 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0

0 v1 0 −1 0 0 −1 0 −1 0 0 −1 1 −1 0 0 0 1 −1 0 0 0 1 −1 0 0 0

0 v2 0 0 1 0 1 0 −1/2 1/2 1/2 0 1/2 −1/2 1/2° 1/2 1/2* 0 0 1 0 0 0 0 1 0 0

0 v3 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0

0 u1 0 1 2° −1 2* 0 0 1 0 0 0 0 1 0 0

0 u2 0 −1 −2 1 −2 0 0 −1 0 0 0 0 −1 0 0 1 −1 −2 1° 1* 0 0 0 1 0

1

1

1
3 z2

z

1 1

z

2 2

0 1 0 0 0 0 1 0 0 0

0 0 1 0 0 0

0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0

z

3 2

x3
1 z1

u1

z

3 2

x3 x1 u1
3 z2

0 0 0 1 0 0 0 0

x3 x1 v2
3 z2

x3 x1 v2 u3

6. Programare pătratică

139

Faza a II-a . Folosind tabelul simplex rezultat din faza I şi renunţând la coloana corespunzătoare variabilei xa, se aplică din nou algoritmul simplex 1 2 2 pentru minimizarea funcţiei min z1 + z 2 + z 3 . Calculele sunt prezentate în Tabelul 6.2 . Faza a II−a se încheie cu eliminarea din bază a vectorilor z1 şi z2 şi 1 2 2 min z1 + z 2 + z 3 =0.

{

}

{

}

Deci, soluţia este x1=3, x2=0, x3=1, şi f(x1, x2, x3) = −

1 . 2 Multiplicatorii lui Lagrange sunt: v1=0, v2=5, v3=0; u=u1−u2=0−1= −1 .

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

Figura 6.1

140

Modele şi algoritmi de optimizare
Tabelul 6.3 Microsoft Excel 10.0 Answer Report Worksheet: [Programare patratica.xls]Sheet1 Report Created: 7/10/2002 8:09:27 PM Target Cell (Min) Original Name Value Functia de optimizat 0 Adjustable Cells Original Name Value x1= x2= x3= Name x1−2x2+x3= x1= x2= x3= 0 0 0 Constraints Cell Cell Value 4 3 0 1 Formula $A$12=$B$11 $B$15>=$B$7 $B$16>=$B$8 $B$17>=$B$9 Status Not Binding Not Binding Binding Not Binding Slack 0 3 0 1

Cell $D$4

Final Value −0.5

Cell $B$15 $B$16 $B$17

Final Value 3 0 1

$A$12 $B$15 $B$16 $B$17

Tabelul 6.4 Microsoft Excel 10.0 Sensitivity Report Worksheet: [Programare patratica.xls]Sheet1 Report Created: 7/10/2002 8:09:27 PM Adjustable Cells Final Cell $B$15 $B$16 $B$17 Name x1= x2= x3= Value 3 0 1 Final Cell $A$12 Name x1−2x2+x3= Value 4 Reduced Gradient 0 5.000000477 0 Lagrange Multiplier 1

Constraints

6. Programare pătratică
Tabelul 6.5 Microsoft Excel 10.0 Limits Report Worksheet: [Programare patratica.xls]Limits Report 1 Report Created: 7/10/2002 8:09:27 PM Target Cell $D$4 Name Functia de optimizat Adjustable Cell $B$15 $B$16 $B$17 Name x1= x2= x3= Value 3 0 1 Value −0.5 Lower Limit 3 0 1 Target Result −0.5 −0.5 −0.5 Upper Limit 3 0 1

141

Targe t Result −0.5 −0.5 −0.5

6.5. Probleme propuse

1. Scrieţi condiţiile Kuhn-Tucker pentru următoarele probleme de programare pătratică: ⎧ ⎧1 2 ⎫ 2 2 ⎪min ⎨ 2 x1 + 5 x 2 + 2 x 3 + 4 x1 x 2 − 2 x1 x 3 − 4 x 2 x 3 − x1 + 3x 2 + 4 x 3 ⎬ ⎩ ⎭ ⎪ ⎪2x1 + 3x 2 − x 3 ≤ 2 ⎪ a) ⎨ x1 + x 2 + 2 x 3 ≤ 4 ⎪ x1 − 2 x 2 + x 3 ≤ 6 ⎪ ⎪x2 ≥ 1 ⎪x ≥ 0 ⎩

(

)

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

{

}

2. Să se rezolve următoarele probleme de programare pătratică 2 ⎧min 2 x12 − 2 x1 x 2 + x 2 − 4 x1 − 2 x1 ⎧min x12 − x1 x 2 + x12 − 3 x1 ⎪ ⎪ ⎪ x1 + 2 x 2 + x 3 = 6 a) ⎨ x1 + x 2 ≤ 4 b) ⎨ ⎪3 x1 + x 2 + x 4 = 9 ⎪ x≥0 ⎩ ⎪x ≥ 0 ⎩

{

}

{

}

142

Modele şi algoritmi de optimizare

arătând că se poate aplica algoritmul lui Wolfe în forma scurtă. ′ ′ R. a) x ′ = (2, 1) , v ′ = (0, 0) , u=0 . ′ ′ ′ 10 ⎞ 18 ⎞ ⎛ ⎛ 10 ⎞ ⎛ 24 27 ′ = ⎜ 0, 0, , 0 ⎟ , u′ = ⎜ , 0 ⎟ . ′=⎜ , ,0, ⎟ , v b) x 13 ⎠ 13 ⎠ ⎝ ⎝ 13 ⎠ ⎝ 13 13 3. Să se determine valoarea optimă şi punctul în care se atinge această valoare pentru problemele 1 şi 2, folosind MathCAD.

7. PROGRAMARE DINAMICĂ

7.1. Generalităţi
Să considerăm un sistem a cărui evoluţie în timp poate fi controlată, chiar şi parţial, de acţiunile unui factor decident. În orice moment i al evoluţiei, starea sistemului se poate descrie printr-un vector x i ∈ R s numit vectorul stărilor, sau vector de stare. Pe fiecare perioadă decidentul ia o decizie δ i , care provoacă o modificare a stării sistemului, reflectată de un vector de decizie, d i ∈ R m . Vectorii de decizie di pot lua valori admisibile în domeniile de admisibilitate ∆i ⊂ R m , 1 ≤ i ≤ N . Cei doi vectori, de stare şi de decizie de la momentul i, determină starea sistemului de la momentul i+1, conform unei legi de evoluţie xi +1 = τ i ( x i , d i ) . Programarea dinamică este o metodă de optimizare a sistemelor în care se operează pe faze sau secvenţe. Baza acestei metode o constituie Principiul de optimalitate al lui Bellman, care se enunţă astfel (Kaufmann, 1967): Orice politică optimă nu poate fi formată decât din subpolitici optime. O politică este alcătuită dintr-o succesiune de decizii. Multe fenomene sau probleme sunt de natură secvenţială, adică permit descompunerea lor în etape (faze), fiecare etapă depinzând de cele apropiate, de etapa anterioară şi cea următoare. Vom introduce în continuare câteva concepte cu care se operează în teoria deciziilor (Zidăroiu, 1975). Considerăm s=1 şi m=1 şi atunci vectorul de stare devine variabila de stare, iar cel de decizie devine variabila de decizie. Etapele procesului sunt momentele în care trebuie luate deciziile. În problemele secvenţiale ele formează un şir crescător, pe care îl vom nota cu 1, 2, ..., N . Spunem că avem o problemă de decizie cu orizont finit sau infinit, după cum N este finit sau nu. În cazul unui orizont finit de N etape, o politică este reprezentată de un şir format din deciziile luate în cele N etape. Dacă orizontul este infinit, orice politică va fi reprezentată printr-un şir infinit, având aceeaşi interpretare ca şi în cazul finit. Schematic, cele prezentate mai sus se pot reprezenta astfel:

144 Etapa Starea sistemului Decizia luată 0 x0→ 1 x1→

Modele şi algoritmi de optimizare
2 x2→ ... ... ...

δ1

δ2

N−1 xN−1→

δ N −1

δN

N xN

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

N xN→

δN

N−1 xN−1→

δ N −1

N−2 xN−2→

δ N −2

... ... ...

1

x1→

δ1

0 x0

Dacă notăm cu τ i inversele transformărilor τi , putem scrie
x0 = τ i ( x1 ; d1 ) = τ 1[τ 2 ( x 2 ; d 2 ); d1 ] = ... = T N ( x N ; d1 , d 2 ,..., d N )

unde: T N se obţine înlocuind xi prin τ i +1 ( xi +1 ; d i +1 ) , 1 ≤ i ≤ N−1 . Această relaţie arată că starea finală xN şi politica aleasă δ1, δ2,..., δN determină starea iniţială x0 . Diferenţa dintre analiza prospectivă şi cea retrospectivă constă în modul în care se priveşte evoluţia sistemului (de la x0 către xN sau invers) . Există situaţii în care este mai eficientă folosirea analizei retrospective în rezolvarea unor probleme. Decidentul are preferinţe în ceea ce priveşte evoluţia sistemului, preferinţe ce pot fi descrise printr-o funcţie obiectiv. Problema cu care se confruntă decidentul este de a alege o evoluţie a variabilelor de decizie astfel încât să optimizeze funcţia obiectiv cu restricţiile de admisibilitate şi starea iniţială (finală) date.

7. Programare dinamică

145

Să notăm ri(xi; di) câştigul parţial dobândit în urma luării deciziei δi în etapa a i-a, când sistemul trece din starea xi−1 în starea xi. Câştigul total pentru un orizont de N etape poate fi reprezentat ca o funcţie de câştigurile parţiale r1, r2, ..., rN asociate diferitelor etape ale sistemului. Această funcţie se poate scrie sub forma f [r1 (x1 ; d 1 ), r2 ( x 2 ; d 2 ),..., rN (x N ; d N )] şi constituie funcţia obiectiv ataşată procesului de decizii considerat. Definiţia 7.1. O funcţie f i : R i → [0, ∞ ) se numeşte decompozabilă prospectiv ~ dacă există o funcţie f i : R 2 → [0, ∞ ) monotonă (crescătoare pentru probleme de maxim şi descrescătoare pentru probleme de minim) în a doua variabilă astfel încât ~ f i (r1 ,..., ri ) = f i (ri , f i −1 ( r1 ,..., ri −1 )) . Definiţia 7.2. O funcţie f i : R i → [0, ∞ ) se numeşte decompozabilă retrospectiv ~ dacă există o funcţie f i : R 2 → [0, ∞ ) monotonă (crescătoare pentru probleme de maxim şi descrescătoare pentru probleme de minim) în a doua variabilă astfel încât ~ f N − i +1 (ri ,..., rN ) = f N − i +1 (ri , f N − i (ri +1 ,..., rN )) . Cu schimbarea de variabilă xi′ = x N −i se poate trece de la decompozabilitate prospectivă la cea retrospectivă şi invers. Cazul cel mai frecvent de decompozabilitate este cazul aditiv, când funcţia obiectiv este de forma
f [r1 (x1 ; d 1 ), r2 ( x 2 ; d 2 ),..., rN ( x N ; d N )] = ∑ ri (x i ; d i ) .
i =1 N

(7.1)

Se întâlnesc şi probleme în care funcţia obiectiv se exprimă multiplicativ
f [r1 (x1 ; d 1 ), r2 ( x 2 ; d 2 ),..., rN (x N ; d N )] = ∏ ri ( x i ; d i ) .
i =1 N

În cazul analizei retrospective se pot scrie succesiv egalităţile ri (xi , d i ) = ri [τi +1 (xi +1 , d i +1 ); d i ] = ... = ri′(xi ; d N ,..., d i ) pentru (7.2) N N N N −1 N −1 N −1 1 1 1 N N 1 N adică funcţia obiectiv depinde de starea finală xN şi de variabilele de decizie dN , dN—1 , ... , d1 . Astfel, cunoscând starea finală şi politica aleasă se poate calcula câştigul asociat politicii considerate. În cazul analizei prospective, câştigul total se exprimă în funcţie de starea iniţială x0 şi de variabilele de decizie d1 , d2 , ... , dN , astfel

(∀)i = 1, N , obţinându-se pentru funcţia obiectiv forma f [r (x ; d ), r (x ; d ),..., r (x ; d )] = R ′ (x ; d ,..., d )

146

Modele şi algoritmi de optimizare
f [r1 (x1 ; d1 ),..., rN −1 (x N −1 ; d N −1 ), rN (x N ; d N )] = RN (x0 ; d1 ,..., d N ) .

(7.3) Printre politicile posibile care fac ca sistemul să evolueze din starea x0 în starea xN , există una (sau mai multe) care optimizează funcţia obiectiv; aceste politici se numesc politici optime. Vom nota politica optimă cu δˆ1 ,..., δˆN , iar variabilele de decizie ˆ ˆ ˆ ˆ ˆ ˆ ˆ corespunzătoare cu d ,..., d . Mulţimea stărilor x ,..., x , x = τ ( x , d ) ,

(

1

N

)

(

)

ˆ ˆ 1 ≤ i ≤ N corespunzătoare deciziilor d 1 ,..., d N constituie traiectoria optimă. Deoarece câştigul total depinde de starea iniţială (finală) şi de politica aleasă este necesar să se considere mai multe valori posibile pentru starea iniţială x0 sau starea finală x N (spunem că simulăm evoluţia sistemului în mai multe situaţii ). În aceste cazuri politicile optime sunt funcţii de x0 sau xN , adică ˆ ˆ ˆ ˆ d i = d i (x 0 ) sau d i = d i (x N ) , 1 ≤ i ≤ N . Teorema de optimalitate a lui Bellman. Date stările iniţială x0 şi finală xN , traiectoria x0,…, xN este optimă dacă traiectoria x0,…, xN-1 este optimă şi xN-1 este astfel încât ~ f N (rN ( x N ; d N ), f N −1 (r1 ( x1 ; d1 ),..., rN −1 ( x N −1; d N −1 )) ) este optimă. Demonstraţie. Notăm V(x0,xN) valoarea câştigului optim global. Din ~ decompozabilitate avem că f N (rN ( x N ; d N ),VN −1 ( x0 , x N −1 )) este optimă dacă xN = τN(xN-1, dN) . Optimalitatea subpoliticii x0,…, xN-1 rezultă din monotonia funcţiei ~ f N şi demonstraţia se încheie. În continuare vom prezenta relaţiile de recurenţă şi rezolvarea problemei de programare dinamică în cazul analizei retrospective, trecerea la analiza prospectivă fiind imediată atunci când legile de evoluţie a sistemului analizat sunt inversabile.

(

)

0

N

i

i

i −1

i −1

7.2. Analiza retrospectivă

Presupunem că avem de rezolvat următoarea problemă: Să se afle decizia ˆ ˆ ˆ optimă d 1 , d 2 , . . ., d N astfel încât

(

)

⎧ ˆ ˆ ˆ ⎪ f [rN x N , d N , rN −1 x N −1 , d N −1 ,. . . , r1 x1 , d 1 ] = ⎪ ⎨= max f [rN (x N , d N ) , rN −1 (x N −1 , d N −1 ) ,. . . , r1 (x1 , d 1 )] d ∈∆ ⎪ 1≤i i ≤ N ⎪x = τ ( x ; d ) , 1 ≤ i ≤ N i i i ⎩ i −1 sau dacă ţinem seama de (7.2),

(

)

(

)

(

)

(7.4)

7. Programare dinamică

147

ˆ ˆ ˆ f [rN x N , d N , rN −1 x N −1 , d N −1 ,. . . , r1 x1 , d1 ] = max R ' N (x N ; d1 ,..., d N ) .
d i ∈∆ i 1≤ i ≤ N

(

) (

)

(

)

(7.5)

În formularea (7.5) intervin efectiv numai xN şi variabilele de decizie d1, d2 , ... , dN, deoarece variabilele x0, x1, ..., xN−1 se determină cu ajutorul precedentelor, ţinând seama de relaţiile x i −1 = τ i ( x i ; d i ) , 1 ≤ i ≤ N − 1 .

7.2.1. Rezolvarea în cazul aditiv
Considerăm funcţia obiectiv în cazul aditiv (7.1) şi, înlocuind în (7.4), obţinem : N ⎧ max ∑ ri (xi , d i ) ⎪ d i ∈∆ i (7.6) ⎨ 1≤i ≤ N i =1 ⎪ x = τ (x , d ) , 1 ≤ i ≤ N . i i i ⎩ i −1 Notând cu fN(xN) valoarea maximului (7.6) obţinem ⎧ f N (x N ) = max[rN (x N , d N ) + rN −1 (x N −1 , d N −1 ) + . . . + r1 (x1 , d 1 )] = d i ∈∆ i ⎪ 1≤ i ≤ N ⎪ ⎪ ⎨= dmax {rN (x N , d N ) + dmax [rN −1 ( x N −1 , d N −1 ) + rN − 2 (x N − 2 , d N − 2 ) + . . . + r1 (x1 , d 1 )]} ∈∆ i ∈∆ i ⎪ N N 1≤ i ≤ N −1 ⎪ ⎪ x i −1 = τ i (x i , d i ) , 1 ≤ i ≤ N ⎩ sau, prin aplicarea Teoremei de optimalitate a lui Bellman ⎧ f N (x N ) = max[rN (x N , d N ) + f N −1 (x N −1 )] d i ∈∆ i ⎪ 1≤i ≤ N ⎨ ⎪ x N −1 = τ N (x N , d N ) . ⎩

(7.7)

Dacă notăm QN (x N , d N ) = rN (x N , d N ) + f N −1 τ(x N , d N ) , putem scrie

f N (x N ) = max QN (xn , d N )
d N ∈∆ N

[

]

(7.8)

şi maximul nu se mai ia după restricţii (restricţiile fiind incluse în expresia funcţiei QN) . ˆ ˆ Relaţia (7.7) poate fi justificată astfel: dacă δ ,..., δ este o politică optimă

(

1

N

)

pentru un orizont de N etape şi cu xN ca stare finală, atunci subpolitica δˆ1 ,..., δˆN −1 este optimă pentru un orizont de N−1 etape cu x N −1 = τ N (x N , d N ) ca stare finală. Relaţia (7.8) permite determinarea funcţiei fN(xN) în ipoteza că se cunoaşte funcţia fN−1(xN−1) . Pornind de la relaţia (7.8), procedând analog, obţinem:

(

)

148

Modele şi algoritmi de optimizare

⎧ f1 (x1 ) = max Q1 (x1 , d1 ) = max r1 (x1 , d1 ) d1∈∆1 d1∈∆1 ⎪ . . . . . . . . . . . . . . . . . . . . . . . . . . . ⎪ ⎪ f (x ) = max Q (x , d ) = max r (x , d ) + f τ (x , d ) , 2 ≤ i ≤ N − 1 i i i i i i i −1 i i i ⎨ i i d i ∈∆ i d i ∈∆ i ⎪. . . . . . . . . . . . . . . . . . . . . . . . . . . ⎪ ⎪ f N (x N ) = max QN (x N , d N ) = max rN ( x N , d N ) + f N −1 τ N (x N , d N ) . d N ∈∆ N d N ∈∆ N ⎩

{

[

]}

(7.9)

{

[

]}

Aceste relaţii se numesc ecuaţiile de recurenţă ale programării dinamice. Rezolvarea problemei iniţiale înseamnă calcularea funcţiilor ˆ ˆ f1(x1), f2(x2), ..., fN(xN) şi d = d (x ) .
N N N

Funcţiile fi(xi) , 1 ≤ i ≤ N , se determină din relaţiile de recurenţă (7.8), iar ˆ ˆ d N = d N (x N ) din ultima din aceste relaţii.
Algoritmul pentru rezolvarea problemei de programare dinamică în cazul aditiv ˆ ˆ Pas 0. Se determină x N cu f (x N ) = max f (x N ) ;
xN

ˆ ˆ Se determină d N = d N (x N ) ;
Pas 1. Pentru i:=N ,2

ˆ ˆ ˆ ˆ ˆ determină xi −1 = τ i xi , d i ; d i −1 = d i −1 (xi −1 ) ;

(

)

ˆ ˆ ˆ Pas 2. Reţine: d1 , d 2 , ... , d N ;

ˆ ˆ ˆ x1 , x2 , ... , x N ;

ˆ f N ( x N ) . Stop !

Procedeul de mai sus presupune cunoaşterea expresiilor analitice ale funcţiilor fi , d i . Vom prezenta câteva situaţii în care metodele programării dinamice conduc la obţinerea optimului fără a se apela la evidenţierea tuturor soluţiilor posibile.

7.2.2. Problema repartiţiei investiţiilor
Având o sumă de 5.109 lei cu care trebuie cumpărate acţiuni la 4 societăţi, care în funcţie de suma investită asigură profituri conform cu Tabelul 7.1, să se stabilească o repartiţie optimă a sumelor investite la fiecare societate, astfel încât profitul obţinut în urma aplicării acestei politici de investiţii să fie maxim (Kaufmann, 1967). Se cere să se determine repartiţia optimă a investiţiilor în acţiuni la cele 4 societăţi, adică acea repartiţie care dă profitul total maxim.

7. Programare dinamică
Tabelul 7.1 Societatea Suma investită (în miliarde de lei) 0 1 2 3 4 5 Profitul în procente

149

S1 0 0.28 0.45 0.65 0.78 0.90

S2 0 0.25 0.41 0.55 0.65 0.75

S3 0 0.15 0.25 0.40 0.50 0.62

S4
0 0.20 0.33 0.42 0.48 0.53

Rezolvare Modelarea problemei Notaţii : di –numărul de miliarde investite în acţiuni la societatea i. xi –numărul total de miliarde investite în acţiuni la primele i societăţi, 1 ≤ i ≤ 4 . x4 – mărimea totală a investiţiilor, care este de cel mult S=5·109. ri(di)− profitul adus de suma di investită în acţiunile la societatea i. Problema are următoarea formulare: 4 ⎧ max ∑ ri (d i ) ⎪ ⎪ 4 i =1 ⎪ ⎨∑ d i ≤ x4 ≤ S ⎪ i =1 1≤ i ≤ 4 ⎪d i ≥ 0 ⎪ ⎩ Precizarea funcţiilor fi (suntem în cazul analizei retrospective). Pentru orice 1 ≤ i ≤ 4, 0 ≤ xi ≤ x4 şi xi −1 = xi − d i = τ i ( xi , d i ), 2 ≤ i ≤ 4 şi 0 ≤ d i ≤ xn , 1 ≤ i ≤ 4 . Am precizat astfel domeniul de admisibilitate: ∆ i = [0, xi ] , d i ∈ ∆ i . Pentru analiza prospectivă xi +1 = xi + d i = τ i ( xi , d i ), 1 ≤ i ≤ 3 . Deoarece
i =1

∑ d i = ∑ ( xi − xi −1 ) = xi ≤ x4
i =1

4

4

luând x0=0, cu notaţiile din modelul

teoretic obţinem ecuaţiile de recurenţă: f1 ( x1 ) = max r1 ( d1 ) ; coloana S1 din tabel este crescătoare şi reprezintă r1

f 2 (x2 ) = max[r2 (d 2 ) + f1 (x1 )] = max[r2 (d 2 ) + f ( x2 − d 2 )] ; 0 ≤ d 2 ≤ x2 f 3 (x3 ) = max[r3 (x3 ) + f 2 (x3 − d 3 )] ; 0 ≤ d 3 ≤ x3 f 4 (x4 ) = max[r4 (x4 ) + f 3 (x4 − d 4 )] ; 0 ≤ d 4 ≤ x4 ; x4 ≤ S .

0≤ d1 ≤ x1

Determinarea valorilor funcţiilor fi : ˆ f1 ( x1 ) = max r1 ( x1 ) = r1 ( d1 ) , r1 fiind crescătoare 0 ≤ d 1 ≤ x1 deci: d 1 ( x1 ) = x1 .

150

Modele şi algoritmi de optimizare

x2=0 f 2 (0) = max[r2 (d 2 ) + f1 (0 − d 2 )] = 0 cu 0 ≤ d 2 ≤ 0 . Deoarece r2(0)=0 şi f1(0)=0 rezultă d2=0. x2=1 f 2 (1) = max[r2 (d 2 ) + f1 (1 − d 2 )] cu 0 ≤ d 2 ≤ 1 , d 2 ∈ { 0, 1 } . f 2 (1) = max[r2 (0) + f1 (1) ; r2 (1) + f1 (0)] = max[0 + 0.28; 0.25 + 0] = 0.28 ˆ valoare obţinută pentru d (1) = 0 .
2

= max[0 + 0.45; 0.25 + 0.28; 0.41 + 0] = 0.53 ˆ valoare obţinută pentru d=1; rezultă d (2) = 1 .
2

x2=2 f 2 (2) = max[r2 (d 2 ) + f1 (2 − d 2 )] cu 0 ≤ d 2 ≤ 2 , d 2 ∈ { 0,1, 2} f 2 (2) = max[g 2 (0) + f1 ( 2) ; r2 (1) + f1 (1); r2 (2) + f1 (0) ] =

= max[0 + 0.65; 0.25 + 0.45; 0.41 + 0.28; 0.55 + 0] = 0.70 ˆ rezultat obţinut pentru d=1 şi astfel d (3) = 1 .
2

x2=3 f 2 (3) = max[r2 ( d 2 ) + f1 (3 − d 2 )] cu 0 ≤ d 2 ≤ 3 , d 2 ∈ { 0,1, 2, 3} f 2 (3) = max[r2 (0) + f1 (3) ; g 2 (1) + f1 (2); r2 (2) + f1 (1) ; r2 (3) + f1 (0)] =

= max[0.78; 0.90; 0.86; 0.83; 0.65] = 0.90 ˆ valoare obţinută pentru d=1, rezultă d (4) = 1 .
2

x2=4 f 2 (4) = max[r2 (d 2 ) + f1 (4 − d 2 )] cu 0 ≤ d 2 ≤ 4 , d 2 ∈ { 0,1, 2, 3, 4} f 2 (4) = max[r2 (0) + f1 (4) ; r2 (1) + f1 (3); r2 (2) + f1 (2) ; r2 (3) + f1 (1); r2 (4) + f1 (0)] =

= max[r2 (0) + f1 (5); r2 (1) + f1 (4 ); r2 (2 ) + f1 (3); g 2 (3) + f1 (2 ); r2 (4 ) + f1 (1);

x2 = 5 f 2 (5) = max[r2 (d 2 ) + f1 ( x2 − d 2 )] ;
r2 (5) + f1 (0)] =

d 2 ∈ { 0,1,...5}

= max[0 + 0.9; 0.25 + 0.78; 0.41 + 0.65; 0.55 + 0.45; 0.65 + 0.28; 0.75 + 0] = = max[0.9; 1.03; 1.06; 1.00; 0.93; 0.75] = 1.06 obţinut pentru d2=2 . Astfel ˆ (5) = 2 . d
2

x3 = 0 f 3 (0) = max[r3 (d 3 ) + f 2 (0 − d 3 )] ˆ rezultă d3=0. d (0) = 0 .
3

cu

0 ≤ d 3 ≤ 0 . Deoarece r3(0)=0 şi f3(0)=0

x3 = 1 f 3 (1) = max[r3 (d 3 ) + f 2 (1 − d 3 )] cu 0 ≤ d 3 ≤ 1 , d 3 ∈ { 0,1} . f 3 (1) = max[r3 (0) + f 2 (1) ; r3 (1) + f 2 (0)] = max[0 + 0.28; 0.15 + 0] = 0.28 ˆ obţinută pentru d (1) = 0 .
3

7. Programare dinamică

151

f 3 (2) = max[r3 (0) + f 2 (2) ; r3 (1) + f 2 (1); r3 (2) + f 2 (0) ] = max[0.53; 0.43; 0.25]= 0.53 ˆ obţinută pentru d (2) = 0 .
3

x3=2 f 3 (2) = max[r3 (d 3 ) + f 2 (2 − d 3 )] cu 0 ≤ d 3 ≤ 2 , d 3 ∈ {0, 1, 2}

f 3 (3) = max[r3 (0) + f 2 (3) ; r3 (1) + f 2 (2); r3 (2) + f 2 (1); r3 (3) + f 2 (0) ] =

x3=3 f 3 (3) = max[r3 (d 3 ) + f 2 (3 − d 3 )] cu 0 ≤ d 3 ≤ 3 , d 3 ∈ { 0,1, 2, 3}

= max[0.70; 0.68; 0.53;0.40] = 0.70

ˆ Aşadar, pentru d=0 s-a obţinut valoarea maximă şi rezultă d 3 (3) = 0 . x3=4 f 3 (4) = max[r3 (d 3 ) + f 2 (4 − d 3 )] cu 0 ≤ d 3 ≤ 4 , d 3 ∈ { 0,1, 2, 3, 4} = max[0.90; 0.85; 0.78; 0.68; 0.5] = 0.90

f 3 (4) = max[r3 (0) + f 2 (4) ; r3 (1) + f 2 (3); r3 (2) + f 2 (2); r3 (3) + f 2 (1); r3 (3) + f 2 (1) ] =

ˆ valoare obţinută pentru d=0; rezultă d 3 (4) = 0 . x3=5 f 3 (4) = max[r3 (d 3 ) + f 2 (4 − d 3 )] cu 0 ≤ d 3 ≤ 4 , d 3 ∈ { 0,1, 2, 3, 4}
f 3 (5) = max[r3 (0) + f 2 (5) ; r3 (1) + f 2 (4); r3 (2) + f 2 (3); r3 (3) + f 2 ( 2); r3 ( 4) + f 2 (1); r3 (5) + f 2 (0)] = max[1.06; 1.05; 0.95; 0.93; 0.78; 0.60] = 1.06

ˆ obţinut pentru d=0; rezultă d 3 (5) = 0 .

ˆ ˆ Analog, găsim pentru f4 valorile: f4(0)=0 şi d 4 (0) = 0 , f4(1)=0.28 şi d 4 (1) = 0 ,
f4(2)=0.53

şi

ˆ d 4 (2) = 0 ,

f4(3)=0.73

şi

ˆ d 4 (3) = 1 ,

f4(4)=0.9 şi

ˆ ˆ ˆ d 4 (4) = 0 sau d 4 (4) = 1 , f4(5)=1.1 şi d 4 (5) = 1 . Centralizăm în Tabelul 7.2 valorile găsite pentru f şi d .
Tabelul 7.2

x
0 1 2 3 4 5

d1 ( x)

f1(x)
0 0.28 0.45 0.65 0.78 0.90

d 2 ( x)

f2(x)
0 0.28 0.53 0.70 0.90 1.06

d 3 ( x)

f3(x)
0 0.28 0.53 0.70 0.90 1.06

d 4 ( x)

f4(x)
0 0.28 0.53 0.73 0.90 1.1

0 1 2 3 4 5

0 0 1 1 1 2

0 0 0 0 0 0

0 0 0 1 0 sau 1 1

152

Modele şi algoritmi de optimizare

Culegerea rezultatelor. Se observă că
0 ≤ x4 ≤ 5

ˆ ˆ max f 4 ( x 4 ) = f 4 (5) = 1.1 şi x 4 = 5 , iar d 4 ( x 4 ) = 1 .
ˆ ˆ ˆ x3 = x 4 − d 4 ( x 4 ) = 4 .

Atunci Dar

ˆ ˆ ˆ ˆ ˆ ˆ d 3 ( x3 ) = d 3 (4) = 0 şi atunci x 2 = x3 − d 3 ( x3 ) = 4 . În continuare avem: ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ d 2 ( x 2 ) = d 2 (4) = 1 , iar x1 = x 2 − d 2 ( x 2 ) = 3 ; d 1 ( x1 ) = d 1 (3) = 3 .
ˆ ˆ ˆ ˆ Astfel, politica optimă este d 1 , d 2 , d 3 , d 4 = (3,1, 0, 1) ceea ce înseamnă că din cele 5 miliarde se vor investi 3 miliarde în acţiuni la prima societate, 1 la cea de-a doua şi 1 la cea de-a patra. Nu se vor achiziţiona acţiuni de la societatea a treia.

(

)

7.2.3. Problema gestiunii stocului
Principiul de optimalitate al lui Bellman poate fi enunţat şi sub următoarea formă, aşa cum va fi folosit în rezolvarea problemei ce urmează.
Într-un şir optimal de decizii, oricare ar fi prima decizie luată, deciziile următoare formează un subşir care este optimal, ţinând seama de rezultatele primei decizii.

În continuare vom rezolva următoarea problemă cunoscută sub numele de problema gestiunii stocului. Tabelul 7.3 dă pentru cinci perioade cantităţile unitare de produs di pe care un vânzător le va furniza, precum şi preţurile ci cu care el poate achiziţiona aceste produse pe care le va revinde la preţ constant. El cumpără la începutul perioadei un număr întreg de produse, dispune de o capacitate de stocare gratuită de 5 unităţi. Trebuie ca la începutul fiecărei perioade să dispună de suficiente produse pentru a face faţă cererii, începe şi termină cu stoc nul. Cum trebuie să organizeze aceste cumpărături astfel încât profitul său să fie maxim ?
Tabelul 7.3 1 2 3 2 13 3 15 4 20

Perioada i Cererea bi Preţul ci

4 3 11

5 2 12

Rezolvare. Notăm :

7. Programare dinamică

153

di = cantitatea de produs cumpărată la începutul perioadei i , are rol de variabilă de decizie ; xi = cantitatea de produs rămasă în stoc la sfârşitul perioadei i , xi este în acest caz variabila de stare, pentru că permite cunoaşterea perfectă a stării situaţiei la sfârşitul fiecărei perioade. Restricţiile sistemului sunt ⎧ b j ≤ x j −1 + d j ≤ 5 ⎪ ⎨ x j = x j −1 + d j − b j j = 1,5 ⎪ x = 0 ; x = 0. 5 ⎩ 0

Funcţia de optimizat este f (d ) = ∑ c j d j .
j =1

5

S-a obţinut astfel o problemă de programare în numere întregi. Ţinând seama de cererea de la perioada întâi, se vede (Tabelul 7.4) că perioada întâi se poate termina cu 0 ; 1 ; 2 sau 3 unităţi în stoc.
Tabelul 7.4 d1 f(d) min 5 65 4 52 3 39 2 26

b1
2

x1 3 2 1 0

Perioada a doua (Tabelul 7.5) se poate termina cu 0 , 1 sau 2 unităţi în stoc (x1+d2=b2=3).
Tabelul 7.5 x1 d2 f(d) min 0 3 26+45=71 1 2 39+30=69 2 1 52+15=67 3 0 65+0=65 * 0 4 26+60=86 1 3 39+45=84 2 2 52+30=82 3 1 65+15=80 * 0 5 26+75=101 1 4 39+60=99 2 3 52+45=97 3 2 65+30=95 *

b2

x2
0

1 3

2

Perioada a treia (Tabelul 7.6) se poate termina cu 0 sau 1 unităţi în stoc (x2+d3=b3=4).

154

Modele şi algoritmi de optimizare
Tabelul 7.6 x2 d3 f(d) min 0 4 65+80=145 1 3 80+60=140 2 2 95+40=135 * 0 5 65+100=165 1 4 80+80=160 2 3 95+60=155 *

b3

x3
0

4 1

Perioada a patra (Tabelul 7.7) se poate termina cu 0, 1 sau 2 unităţi în stoc (x3+d4=b4=3).
Tabelul 7.7 d4 f(d) min 3 135+33=168 * 2 155+22=177 4 135+44=179 * 3 155+33=188 5 135+55=190 * 4 155+44=199

b4

x4 0
1 2

3

x3 0 1 0 1 0 1

La sfârşitul perioadei a cincea (Tabelul 7.8) avem x5=0 şi, deoarece x4+d5=b5=2, rezultă
Tabelul 7.8 d5 f(d) min 2 168+24=192 1 179+12=191 0 190 *

b5
2

x4 0 1 2

Politica optimală de cumpărături este
⎧ ⎧ ⎧ ⎧ x1 = 3 ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ x 2 = 2 ⇒ ⎨d 1 = 5 ⎪ ⎪ f (d ) = 65 ⎪ ⎪ x3 = 0 ⇒ ⎨ ⎩ ⎪ ⎪ ⎪d = 2 x4 = 2 ⇒ ⎨ ⎪ ⎪ 2 ⎪ ⎪ d5 = 0 ⇒ ⎨ ⎪ f (d ) = 95 ⎩ ⎪ ⎪ ⎪d 3 = 2 ⎪ ⎪ f (d ) = 135 ⎪ ⎩ ⎪d = 5 ⎪ 4 ⎪ f (d ) = 190 ⎩ sau: d5=0 ; d4=5 ; d3=2 ; d2=2 ; d1=5 cu costul minim, f(d)=0×12+5×11+2×20+2×15+5×13=190 .

7. Programare dinamică

155

Generalizare Clasa de probleme Pk(x). Să se determine o politică optimală de cumpărături pe primele k perioade, putând termina cele k perioade cu x produse în stoc. Problema iniţială poate să fie considerată ca P5(0). Vrem să punem în evidenţă o relaţie de recurenţă între aceste diferite probleme şi să le rezolvăm de o manieră mai economică în timp. Notăm zk(x), valoarea optimului funcţiei obiectiv a problemei Pk(x). Avem relaţia z k ( x) = min{c k d k + z k −1 ( x + bk − d k )} ,
unde d k ( x) = {d k bk + bk −1 + x − 5 ≤ d k ≤ x + bk } . Rezumăm calculele precedente în Tabelul 7.9.
Tabelul 7.9 d3(x) d3(x) 135 2 155 3 * * * *
dk ( x)

x 0 1 2 3

z1(x) 26 36 52 65

d1(x) 2 3 4 5

d2(x) 65 80 95 *

d2(x) 0 1 2 *

d4(x) 168 179 190 *

d4(x) 3 4 5 *

d5(x) 190 * * *

d5(x) 0 * * *

În acest tablou coloanele au fost completate de la stânga la dreapta, calculând d1(x) apoi z1(x) ş. a. m. d. Culegerea soluţiei optimale se face de la dreapta la stânga. Ştiind că d5=0 şi b5=2, adică x4=2, căutăm soluţia pentru P4(2) . Găsim d4=5, adică x3=0 şi atunci căutăm P3(0) . Din Tabelul 7.9 avem d3=2 şi, cum b3=4, rezultă x2=2. Căutăm acum soluţia pentru P2(2) . Cum b2=3 şi din tabel d2=2, rezultă că x1=3, şi acum ne interesează P1(3) . Din Tabelul 7.9 rezultă că d1=5 şi astfel am ajuns la soluţia finală.

7.2.4. Problema alocării optime a resurselor
Trei echipe de cercetători A, B, C lucrează la un acelaşi proiect folosind abordări diferite. Echipele au probabilităţile de eşec : P(A)=0.4 ; P(B)=0.6 ; P(C)=0.8. Se decide alocarea a 2 noi cercetători la proiect în scopul minimizării probabilităţii de eşec a proiectului. Pentru a decide alocarea cercetătorilor suplimentari s-a stabilit Tabelul 7.10 (Henry-Labordere, 1995).
Tabelul 7.10 Noile probabilităţi de eşec pentru Nr. cercetători noi alocaţi echipe A B C 0 0.4 0.6 0.8 1 0.2 0.4 0.5 2 0.15 0.2 0.3

Care este alocarea optimală a cercetătorilor suplimentari astfel încât împreună să aibă probabilitatea de eşec minimă ?

156

Modele şi algoritmi de optimizare

Fie f i (x ) , probabilitatea minimă atunci când se utilizează suplimentari pentru proiectele A, B, C. f i (x ) = min{f pred (i ) (x − d i ) ⋅ ri (d i )}, i ∈ {A, B, C } , unde
i i∈{A, B ,C }

Rezolvare Fie dA, dB, dC numărul de cercetători afectaţi echipelor A, B, C , rA(dA), rB(dB), rC(dC) funcţiile care dau probabilităţile de eşec pentru fiecare echipă, xA numărul cercetătorilor alocaţi proiectului A ; xB numărul cercetătorilor alocaţi proiectelor A şi B , şi xC numărul cercetătorilor alocaţi proiectelor A, B şi C. Probabilitatea de eşec – toate echipele eşuează – este f ( x) = rA (d A ) ⋅ rB ( d B ) ⋅ rC (d C ) , d A + d B + d C ≤ 2 .
x cercetători

∑d

= x , iar f pred ( A) = 1 .

Soluţia este analoagă soluţiei problemei repartiţiei investiţiilor. Să determinăm valorile funcţiilor f i , i ∈ {A, B, C }. f A ( x) = min rA ( x) , deoarece rA este descrescătoare, aşa cum se vede din coloana

ˆ A a Tabelului 7.10 şi atunci d A ( x) = x .
x=0 , atunci 0 ≤ d B ≤ 0 şi

ˆ f B (0) = min{ rB (0) ⋅ f A (0)} = min{ 0.6 ⋅ 0.4} = 0.24 , iar d B (0) = 0 .
f B (1) = min{ rB (d B ) ⋅ f A (1 − d B )} = min{ rB (0) ⋅ f A (1); rB (1) ⋅ f A (0)} = 0.12 , ˆ d B (1) = 0 .
f B (2) = min{ rB (d B ) ⋅ f A (2 − d B )} = min{ rB (0) ⋅ f A (2); rB (1) ⋅ f A (1); rB (2) ⋅ f A (0) } = ˆ = 0.08 , iar d B (2) = 2 sau 1.

x=1 , atunci 0 ≤ d B ≤ 1 şi

x=2 , atunci 0 ≤ d B ≤ 2 şi

x=0 , atunci 0 ≤ d C ≤ 0 şi ˆ f C (0) = min{ rC (0) ⋅ f B (0)} = min{ 0.8 ⋅ 0.24} = 0.192 , iar d C (0) = 0 . x=1 , atunci 0 ≤ d B ≤ 1 şi

f B (1) = min{ rC (d C ) ⋅ f B (1 − d C )} = min{ rC (0) ⋅ f B (1); rC (1) ⋅ f B (0)} = 0.096 ,
ˆ d C (1) = 0 .
f C (2) = min{ rC (d C ) ⋅ f B ( 2 − d C )} = min{ rC (0) ⋅ f B (2); rC (1) ⋅ f B (1); rC (2) ⋅ f B (0) } = ˆ = min{ 0.8 ⋅ 0.8; 0.5 ⋅ 0.12; 0.3 ⋅ 0.24} = 0.06 , iar d (2) = 1 .
C

x=2 , atunci 0 ≤ d C ≤ 2 şi

Datele obţinute sunt trecute în Tabelul 7.11

7. Programare dinamică
Tabelul 7.11

157

x 0 1 2

fA(x) 0.4 0.2 0.15

*

ˆ d A ( x)

0 1 2

fB(x)* 0.24 0.12 0.08

d B (x)

0 0 2 sau 1

fC(x)* 0.192 0.096 0.06

d C (x)

0 0 1

Valoarea soluţiei optimale este fC (x ) =0.06 pentru alocarea ambilor cercetători, astfel:
ˆ ˆ xC = 2 şi d C = 1 , adică se alocă un cercetător la proiectul C ; ˆ ˆ ˆ ˆ x B = xc − d C = 1 , dar d B = d B (1) = 0 , adică la proiectul B nu se mai alocă alt

cercetător;
ˆ ˆ ˆ ˆ x A = x B − d B = 1 , însă d A = d A (1) = 1 , adică se alocă un cercetător la proiectul A.

7.3. Probleme propuse

1. O firmă de construcţii are 4 000 000 euro pe care vrea să-i investească în construirea a 3 tipuri de locuinte B1, B2, B3. Profitul adus de fiecare tip de locuinţă este dat de Tabelul 7.12.
Tabelul 7.12 Suma investită (mil) B1 0 0 1 35% 2 43% 3 47% 4 49%

B2 0 28% 32% 45% 47%

B3 0 26% 34% 40% 51%

Să se precizeze care este profitul maxim şi cum se obţine.

R. Trecem rezultatele calculelor în Tabelul 7.13
Tabelul 7.13 ˆ f1 f2 d1 0 35 43 47 49 0 1 2 3 4 0 35 63 71 80

x
0 1 2 3 4

r1
0 35 43 47 49

r2
0 28 32 45 47

r3
0 26 34 40 51

ˆ d2 0 0 1 1 3

f3
0 35 63 89 97

ˆ d3 0 1 2 2 2 sau 3

158

Modele şi algoritmi de optimizare

Culegerea rezultatelor: ˆ ˆ ˆ ˆ ˆ ˆ a) d 3 = 2 , x3 = 4 , x2 = x3 − d 3 = 2 , d 2 = d 2 ( x2 ) = 1 ˆ ˆ ˆ d = d (x ) = 1 ;
1 1 1

,

ˆ ˆ ˆ x1 = x2 − d 2 = 1 , ˆ ˆ ˆ x1 = x2 − d 2 = 1 ,

ˆ ˆ ˆ ˆ ˆ ˆ b) d 3 = 3 , x3 = 4 , x2 = x3 − d 3 = 1 , d 2 = d 2 ( x2 ) = 0 ˆ

,

ˆ ˆ d1 = d1 ( x1 ) = 1 . Profitul maxim este de 97% , dacă se investeşte suma astfel: a) (1, 1, 2) , adică 1 milion în primul tip de locuinţe, 1 milion în al doilea tip de locuinţe şi 2 milioane în al treilea tip de locuinţe; b) (1, 0, 3) , adică 1 milion în primul tip de locuinţe şi 3 milioane în al treilea tip de locuinţe.
2. Problema achiziţionărilor de carburant Serviciul de aprovizionare al municipalităţii trebuie să asigure motorina pentru încălzirea oraşului, timp de 6 luni – noiembrie-aprilie. Preţurile de cumpărare prevăzute pe tonă şi nevoile lunare sunt date de Tabelul 7.14 (Henry-Labordere, 1995):
Perioada (i) Necesarul (bi) Preţul tonei (ci) 1 800 3300 Tabelul 7.14 2 3 500 300 5400 3900 4 200 5100 5 700 6000 6 400 3000

Stocul iniţial la 1 noiembrie este de 200 t. Nu se poate depăşi capacitatea rezervorului care este de 900 t. Se doreşte minimizarea cumpărăturilor, dar cu satisfacerea cererii pe întreaga perioadă. Fie: ci costul unei tone pe perioada i , xi stocul la sfârşitul perioadei i−1, începutul perioadei i, înainte de cumpărarea cantităţii di , di cantitatea cumpărată la data de întâi a lunii i , bi necesarul pe perioda i. Notând f i (xi +1 ) costul politicii optimale care lasă la sfârşitul perioadei i un stoc xi+1, atunci : • să se stabilească o relaţie între f i (xi +1 ) şi f i −1 (xi ) , • să se găsească soluţia optimală folosind programarea dinamică. Să se precizeze cumpărăturile lunare şi stocul final.

Rezolvare 1) Formularea problemei în programare liniară (vom renunţa la două zerouri la ⎧ x1 = 2 ⎪ x = x + d − b (∀)i ⎪ i i i preţuri şi cantităţi) are restricţiile : ⎨ i +1 ⎪ xi + d i ≤ 9 ⎪ xi , d i ≥ 0 ⎩

7. Programare dinamică

159

Ţinând seama de relaţiile de mai sus, funcţia obiectiv se poate scrie ca funcţie de d astfel: f=33d1+54d2+39d3+51d4+60d5+30d6 , iar problema obţinută este
f p (d ) =min ∑ ci d i
i =1 p

⎧ x1 = 2 ⎪ x = x + d − b i = 1,6 ⎪ i +1 i i i ⎨ ⎪ xi + d i ≤ 9 ⎪ xi , d i ≥ 0 . ⎩ Funcţia de minimizat se scrie : f i (d i +1 ) =min(fi−1(xi+1+bi−di)+cidi). Transformările τi fiind inversabile se poate aplica atât analiza prospectivă cât şi retrospectivă. 2) Calculele sunt rezumate în Tabelul 7.15.
Tabelul 7.15 ˆ f3(d) d 3 ( x) f4(d) 564 3 642 603 4 681 642 5 720 681 6 759 720 7 798 759 8 849 798 9 900 951

xi 0 1 2 3 4 5 6 7

f1(d) 198 231

ˆ d 1 ( x)

6 7

f2(d) 447 501 555 609 663

ˆ d 2 ( x)

ˆ d 4 ( x)

4 5 6 7 8

0 0 0 0 0 1 2 3

ˆ f5(d) d 5 ( x) 951 0 1011 1 1071 2

f6(d) 1071 1101 1161 1191 1221

ˆ d 6 ( x)

4 5 6 7 8 9

Culegerea rezultatelor din tabel:
ˆ ˆ ˆ ˆ min f 6 (d 7 ) = 1071 = f 6 (4) , d 6 = d 6 ( x 7 ) = d 6 (0) = 4 , x7 = 0 , ˆ ˆ ˆ ˆ ˆ x7 = x6 + d 6 − b6 ⇒ x 6 = b6 − d 6 = 4 − 4 = 0 . ˆ ˆ Cum d 5 = d 5 ( x6 ) = d 5 (0) = 0 , rezultă ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ x6 = x5 + d 5 − b5 ⇒ x5 = x6 + b5 − d 5 = 0 + 7 − 0 = 7 şi d 4 = d 4 ( x5 ) = d 4 (7) = 3 .

Analog obţinem:
ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ x5 = x 4 + d 4 − b4 ⇒ x 4 = x5 + b4 − d 4 = 7 + 2 − 3 = 6 şi d 3 = d 3 ( x4 ) = d 3 (6) = 9 , ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ x 4 = x3 + d 3 − b3 ⇒ x3 = x 4 + b3 − d 3 = 6 + 3 − 9 = 0 şi d 2 = d 2 ( x3 ) = d 2 (0) = 4 , ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ x3 = x 2 + d 2 − b2 ⇒ x 2 = x3 + b2 − d 2 = 0 + 5 − 4 = 1 şi d1 = d1 ( x 2 ) = d1 (1) = 7 , ˆ ˆ ˆ ˆ ˆ ˆ x 2 = x1 + d1 − b1 ⇒ x1 = x 2 + b1 − d1 = 1 + 8 − 7 = 2 .

Politica optimală de cumpărături este : ˆ ˆ ˆ ˆ ˆ ˆ f6(4)=1071 cu cantităţile d1 = 7 , d 2 = 4 , d 3 = 9 , d 4 = 3 , d 5 = 0 , d 6 = 4 .

160

Modele şi algoritmi de optimizare

3. La o balastieră s-au estimat cantităţile necesare de balast pentru trimestrul patru în vederea încheierii contractului cu o carieră. Cantităţile şi preţurile sunt trecute în Tabelul 7.16 .
Luna Necesar (m3) Cost (u.m.) Tabelul 7.16 Octombrie Noiembrie 80 30 4 3 Decembrie 40 5

La începutul fiecărei luni se comandă o anumită cantitate de balast astfel încât să fie satisfăcut necesarul de balast, dar să nu fie depăşită capacitatea de depozitare a balastierei, limitată la 100 m3. Să se precizeze costul minim de aprovizionare şi cum se obţine. Se presupune că la începutul şi sfârşitul semestrului depozitul este gol.

R. Politica optimală de aprovizionare este : ˆ ˆ ˆ f3(0)=690 cu cantităţile d1 = 80 , d 2 = 70 , d 3 = 0 .
4. O firmă de transport de persoane trebuie să facă legătura între localităţile A şi H, pe un drum ce poate trece prin localităţile A, B, C, D, E, F, G, H. Distanţele între localităţi şi reţeaua de drumuri sunt trecute în graful din Figura 7.1. Ştiind că pentru o persoană se plătesc 3.4 u.m., să se determine costul minim de transport pentru o persoană şi traseul pentru care se obţine acest cost.
B 2 A 1 D 4 1 C 8 5 8 3 2 4 F 3 G 7 E 6 H

Figura 7.1

R. Traseul minim A, D, G, H are lungimea 13 şi costul minim este Cmin=3.4⋅13=44.2 u.m.
5. Construirea unei autostrăzi. (Kaufmann, 1967) Folosind analiza prospectivă să se rezolve problema 3 din §2.5.

R. Se consideră că autostrada, care va uni localităţile 1 şi 14 (Figura 2.18), va fi formată din cinci tronsoane.

8. ELEMENTE DE TEORIA AŞTEPTĂRII

8.1. Introducere în teoria aşteptării

Teoria aşteptării (sau teoria firelor de aşteptare sau teoria cozilor) se ocupă cu studiul evoluţiei sistemelor care prezintă aglomerări (sistemele de aşteptare). Un astfel de sistem este compus dintr-una sau mai multe staţii de servire (în număr finit) care servesc clienţii ce sosesc în sistem pentru a solicita servicii. Modul de dispunere sau condiţionare a staţiilor de serviciu dintr-un sistem de aşteptare constituie topologia sistemului. Astfel, staţiile pot fi în serie sau în paralel sau acest serviciu se realizează de către una din staţii sau de către un grup de staţii. Studiul unui sistem de aşteptare se face cu ajutorul unui model de aşteptare.

Elementele cunoscute ale unui model de aşteptare sunt (Văduva et al, I, 1974): • fluxul intrărilor în sistem • mecanismul serviciului. Intrările sunt caracterizate fie de numărul de clienţi pe unitatea de timp care sosesc, fie de intervalele de timp dintre două veniri consecutive. Oricare dintre aceste două mărimi este o variabilă aleatoare cu repartiţia cunoscută. Cunoaşterea mecanismului serviciului presupune cunoaşterea topologiei sistemului, regula după care se face serviciul, numită şi disciplina serviciului (de exemplu: FIFO (First−In First−Out) – primul sosit – primul servit, sau o ordine bazată pe priorităţi), precum şi repartiţia numărului de clienţi serviţi pe unitatea de timp sau repartiţia duratei serviciului. Mecanismul serviciului este caracterizat de asemenea şi de capacitatea sistemului presupusă cunoscută, adică numărul maxim de clienţi ce pot exista la un moment dat în sistem, sau, echivalent, lungimea maximă a cozii. Elementele necunoscute ale modelului de aşteptare sunt: • timpul de aşteptare • timpul de neocupare a staţiilor • lungimea cozii • numărul de clienţi din sistem N(t) existenţi la momentul t . Toate aceste necunoscute sunt variabile aleatoare şi, prin rezolvarea modelului de aşteptare, se urmăreşte determinarea repartiţiei lor sau măcar a unei valori medii în funcţie de elementele cunoscute.

162

Modele şi algoritmi de optimizare

Un model de aşteptare se notează A / S / c: (L, d) , unde: A – repartiţia timpului dintre două veniri consecutive, S – repartiţia duratei de serviciu, c – numărul de staţii (canale) de serviciu, L – lungimea maximă a cozii, d – disciplina de serviciu.

Exemplu. Notaţia Exp(λ) / Exp(µ) / 1: (∞, FIFO) caracterizează un model cu: − veniri cu repartiţia exponenţială negativă de parametru λ, − servicii cu repartiţie exponenţială negativă de parametru µ, − o singură staţie ( c=1 ), − coada care poate creşte indefinit ( L=∞), − disciplina de serviciu care este primul sosit−primul servit (First−In First−Out).
Numărul N(t) de clienţi din sistem ia valori întregi 0,1,2,..., şi este, în general, un proces stochastic discret. Cunoaşterea repartiţiei acestui proces permite determinarea multor caracteristici ale sistemului.

8.2. Caracterizarea procesului N(t) ca proces de naştere şi deces

O caracteristică a procesului N(t) este aceea că variaţia valorilor sale pe intervale mici de timp nu este mare, în sensul că probabilitatea ca N(t) să prezinte variaţii mari pe intervalul de timp (t, t + ∆t) depinde de valoarea lui N(t) şi este, în general, mică. Variaţia procesului N(t) este determinată de intrările şi ieşirile din sistem, adică de veniri şi servicii. Asemănător variază şi volumul populaţiilor biologice; variaţia numărului de indivizi dintr-o astfel de populaţie pe un interval mic de timp nu este prea mare şi ea depinde de natalitate (intrări) şi de deces (ieşiri). Procesul stochastic N(t) este un caz particular de proces Markov şi se numeşte proces de naştere şi deces (Văduva, 1977).

Definiţia 8.1. Procesul stochastic cu creşteri independente N(t) se numeşte proces de naştere şi deces dacă satisface următoarele condiţii: 1) P [ N ( t + ∆t ) = n + 1 ⏐ N(t) = n ] =λn ⋅ ∆t + O (∆t ) ; 2) P [ N ( t +∆t ) = n −1 ⏐ N(t) = n ] = µn ⋅∆t + O (∆t ) ; 3) P [ N ( t + ∆t ) = n ± i ⏐ N(t) = n ] = O (∆t ), (∀) i > 1 unde P ( A⏐B ) este probabilitatea lui A condiţionată de B, {λn , n ≥ 0}, {µn , n ≥ 0} sunt şiruri de numere pozitive date, iar O (∆t ) un element al unei clase de O ( ∆t ) = 0, cO ( ∆t ) = O ( ∆t ), (∀)c ∈ R . funcţii care satisface: lim O ( ∆t ) = 0, lim ∆t →0 ∆t →0 ∆t

8. Elemente de teoria aşteptării

163

Procesul este cu creşteri independente în sensul că, oricare ar fi t1<t2<t3<t4 variabilele N(t2− t1), N(t3− t4) sunt independente stochastic, adică evoluţiile procesului pe două intervale de timp disjuncte sunt independente. Constantele λn , n ≥ 0 , se numesc intensităţi de natalitate, iar µn , n ≥ 1 , se numesc intensităţi de deces. Dacă pentru t1 < t 2 avem N (t2 − t1 ) = N (t2 ) − N (t1 ) , se spune că procesul N este un proces de numărare. Vom determina probabilităţile Pn(t) = P( N( t ) = n ), n = 0,1,2,... . Din definiţia procesului de naştere şi deces şi ţinând seama că mulţimea funcţiilor O (∆t) este închisă la adunare, scădere, înmulţire şi înmulţire cu un scalar sau cu o funcţie de timp, avem: ∆t + O ( ∆t ) t + O (∆t ) Pn (t + ∆t ) = Pn (t )(1 − λ4 2444 )(1 − µ n ∆2444 ) + 14 n4 3 144 4 3 + Pn +1 (t )(1 − λ n +1 ∆t + O (∆t ) )(µ n +1 ∆t + O (∆t ) ) + 144 2444 1442443 4 3 + ∑ Pn +i (t )(1 − O (∆t ) ) ⋅ O (∆t ) + 14 4 2 3 13 2 i >1
nu are loc o venire de i indivizi are loc o plecare de i indivizi nici o venire o plecare

+ Pn −1 (t )(λ n −1 ∆t + O ( ∆t ) )(1 − µ n −1 ∆t + O ( ∆t ) ) + 144 44 144 2444 2 3 4 3
o venire nici o plecare

nici o venire

nici o plecare

+ ∑ Pn −i (t ) O (∆t ) ⋅ (1 − O (∆t ) ) 1 3 14 4 2 2 3 i >1
are loc o venire de i indivizi

n

nu are loc o plecare de i indivizi

Ţinând seama de proprietăţile funcţiilor O (∆t) avem: Pn (t + ∆t ) − Pn (t ) = −(λ n + µ n )Pn (t )∆t + λ n −1 Pn −1 (t )∆t + + µ n +1 Pn +1 (t )∆t + O ( ∆t )

, n≥1 .

Împărţim la ∆t , trecem la limită pentru ∆t → 0 şi obţinem ecuaţiile Kolmogorov−Feller care guvernează procesul de naştere şi deces: Pn′ (t ) = −(λ n + µ n )Pn (t ) + λ n −1 Pn −1 (t ) + µ n +1 Pn +1 (t ) , n ≥ 1 (8.1) Asemănător deducem P0′ (t ) = −λ 0 Po (t ) + µ1 P1 (t ) (8.2) Sistemul de ecuaţii (8.1) şi (8.2) trebuie să aibă o soluţie care să fie un sistem complet de probabilităţi, adică

∑ P (t ) = 1 , (∀)t
n =0 n

(8.3)

Teoremele următoare dau condiţiile ca sistemele (8.1)-(8.3) să aibă soluţie.

Teorema 8.1. Dacă procesul N ( t ) este un proces de naştere pură (µn = 0, (∀) n ≥ 1), şi dacă există i astfel încât Pi ( 0 ) = 1 şi Pn ( 0 ) = 0, n ≠ i (condiţiile

164

Modele şi algoritmi de optimizare

iniţiale sunt date), atunci condiţia necesară şi suficientă ca soluţia sistemului de ecuaţii diferenţiale (8.1) şi (8.2) să fie un sistem complet de probabilităţi este ca ∞ 1 ∑ =∞.
k =0

λk

Teorema 8.2. Dacă pentru procesul de naştere şi deces N ( t ) sunt date condiţiile iniţiale ca în Teorema 8.1, atunci o condiţie suficientă ca sistemul de ecuaţii diferenţiale (8.1) şi (8.2) să aibă ca soluţie un sistem complet de probabilităţi este ca

∑∏ λ
k =1 i =1

k

µi

=∞.

i −1

Ipoteză simplificatoare. Procesul N ( t ) se presupune staţionar, adică Pn ( t ) = pn = constant, ipoteză justificată de faptul că, după perioade mari de timp de funcţionare, sistemele se stabilizează. În caz staţionar, sistemul (8.1) – (8.2) devine: ⎧− λ 0 p 0 + µ1 p1 = 0 (8.4) ⎨ ⎩− (λ n + µ n ) p n + λ n −1 p n −1 + µ n +1 p n +1 = 0 , n ≥ 1
Notăm şi din ultima ecuaţie avem zn = zn−1 , iar din prima ecuaţie z0 = 0. Astfel, în cazul staţionar zn = 0, n ≥ 0, sau
p n +1 =

z k = −λ k p k + µ k +1 p k +1

λn pn , n ≥ 0 . µ n +1

Deducem că
⎛ n −1 λ ⎞ pn = ⎜ ∏ k ⎟ p0 , n ≥ 1 . ⎟ ⎜ ⎝ k = 0 µ k +1 ⎠

Din condiţia (8.3) rezultă că
p0 = 1

λ 1 + ∑∏ k n =1 k = 0 µ k +1
∞ n −1

.

Cunoscând repartiţia procesului N ( t ), în cazul staţionar, adică a numărului de clienţi din sistemul de aşteptare, se pot calcula unele elemente necunoscute ale modelului, şi anume: a) numărul mediu de clienţi din sistem M [N (t )] = ∑ np n ,
n =0 ∞

8. Elemente de teoria aşteptării

165

b) lungimea medie a cozii M [Lc ] = ∑ ( n − c) p n ,
n=c L

(nu poate fi coadă pentru n ≤ c, adică mai puţini clienţi decât numărul staţiilor de serviciu), c) timpul mediu de aşteptare la coadă 1 M [WT ] = M [Lc ] , µ (1 − p 0 ) unde 1 este timpul mediu de servire şi se presupune cunoscut. µ (1 − p 0 )

Observaţia 8.1. µ (1 − p0) reprezintă numărul mediu de clienţi (unităţi) serviţi în unitatea de timp. Atunci: d) timpul mediu de aşteptare în sistem 1 M [W ] = M [N (t )] , µ (1 − p 0 ) e) numărul mediu de staţii neocupate
M [SL ] = ∑ (c − n) p n ,
n =0 c

timpul mediu de lenevire (neocupare) a unei staţii între două servicii consecutive M [ AT ] , M [TL ] = M [SL ] ⋅ c unde M[AT] este media intervalelor de timp dintre două veniri consecutive. Aşadar, pentru a rezolva un model folosind procese de naştere şi deces trebuie cunoscute intensităţile procesului λn , n ≥ 0, µn , n ≥ 1. Pe baza acestor intensităţi se calculează probabilităţile pn , n ≥ 0, şi apoi elementele necunoscute ale modelului, conform cu formulele precedente.

f)

8.3. Modelul Po(λ)/Exp(µ)/1:(∞,FIFO)

În acest model intrările se fac după repartiţia Poisson ( λ t ) n − λt P ( N (t ) = n ) = e , n≥0, n! iar intervalul de timp dintre două sosiri consecutive are o repartiţie exponenţială de parametru λ , cum se poate constata uşor.

166

Modele şi algoritmi de optimizare

Serviciile se fac după repartiţia exponenţială, adică durata serviciului ca variabilă aleatoare are repartiţia exponenţială, ⎧1 − e − µx , pentru x ≥ 0 . F ( x) = ⎨ pentru x < 0 ⎩0 , λ Raportul ρ = se numeşte intensitate de trafic sau factor de serviciu. El µ reprezintă, în medie, numărul de clienţi care vin în perioada unui singur timp de serviciu. Dacă ρ > 1, atunci durata serviciului pentru clienţii care îl solicită în unitatea de timp este mai mică decât unitatea de timp, deci nu se va produce o aglomerare. Dacă ρ < 1, numărul clienţilor din şirul de aşteptare va creşte necontenit. Dacă ρ = 1, nu se va produce o coadă imensă – durata serviciilor coincide cu unitatea de timp, însă evident în anumite momente va fi aglomeraţie. În modelul precedent λn =λ şi µn = µ , (∀) n ∈ N * . În acest caz, ecuaţiile Kolmogorov−Feller (8.4) devin, pentru cazul staţionar ⎧λp n −1 − (λ + µ ) p n + µ p n +1 = 0 , (∀) n ≥ 1 (8.5) ⎨ ⎩− λ p 0 + µ p1 = 0 Ultima ecuaţie dă p1 =

λ p0 = ρ ⋅ p0 µ

şi înlocuind în prima, avem λ p 0 − (λ + µ ) p1 + µ p 2 = 0 ⇒ p 2 = ρ 2 p 0 . Rezultă prin inducţie că  pn = ρ n p0 . Dar pn = 1 ⇒ p0 ρn = 1 ,
n∈N

n∈N

însă
n∈

(8.6) pn = ρ n( 1 − ρ) . Se pot determina elementele necunoscute ale modelului în funcţie de ρ. De asemenea, se pot găsi: − pn maxim d n ρ n (1 − ρ ) = 0 ⇒ ρ = dρ n +1 şi atunci

când ρ < 1 şi atunci

∑ρ N

n

=

1 ⇒ 1 − ρ = p0 1− ρ

[

]

1 ⎛ n ⎞ . p n (t ) = ⎜ ⎟ ⋅ ⎝ n + 1⎠ n + 1

n

8. Elemente de teoria aşteptării

167

Aşadar, putem determina: − numărul mediu de clienţi din sistem la momentul t ρ (8.7) 1− ρ n∈ − numărul mediu al clienţilor din şirul de aşteptare – lungimea medie a cozii M [N (t )] =

∑ np (t ) = ∑ nρ N
n

n −1

(1 − ρ) =

M [L1 ] = ∑ (n − 1) p n = (1 − ρ )∑ ( n − 1) ρ n =
n=2 n=2

ρ2 1− ρ

(8.8)

− timpul mediu de aşteptare la coadă 1 ρ M [WT ] = M [L1 ] = (8.9) µ (1 − p 0 ) µ (1 − ρ ) − timpul mediu de aşteptare în sistem 1 1 M [W ] = M [WT ] + = . (8.10) µ µ (1 − ρ ) Dacă este interesantă probabilitatea ca în sistem să fie mai mult de m persoane şi dorim ca ea să nu depăşească o anumită valoare ε, atunci 1 − (1 − ρ ) − ρ (1 − ρ ) − ... − ρ m −1 (1 − ρ ) < ε ⇒ ρ m < ε (8.11) Se pot determina astfel ε şi µ încât să nu existe aglomeraţie.
Propoziţia 8.1. Probabilitatea ca numărul clienţilor din sistem la un moment dat să fie mai mare ca un număr dat k este (8.12) P( N( t ) > k ) = ρ k+1 . Demonstraţie. Calculăm această probabilitate, ţinând seama de notaţiile de mai înainte, şi avem
P ( N (t ) > k ) =
n = k +1

∑ p n (t ) =

n = k +1

∑ ρ n (1 − ρ ) = (1 − ρ )

ρ k +1 = ρ k +1 . 1− ρ

Se poate determina probabilitatea ca un client să aştepte la rând un timp superior unui timp dat t0 . Deoarece timpul de aşteptare la coadă este o variabilă aleatoare continuă, vom determina repartiţia complementară a acestei variabile aleatoare, adică P(WT >t0 ) (funcţia de repartiţie F(t0) = P(WT ≤ t0 )). Determinăm această repartiţie prin intermediul unei probabilităţi elementare de forma P( t < WT < t + dt ), care reprezintă probabilitatea evenimentului ca timpul de aşteptare al unui client la coadă să fie cuprins în intervalul (t, t+dt). Notăm cu Pn( t < WT < t + dt ) probabilitatea ca timpul de aşteptare la coadă al unui client să fie cuprins în intervalul (t, t+dt) condiţionat de faptul că la sosirea lui în sistem există deja n > 0 clienţi.
Observaţia 8.2. Dacă n = 0 la sosirea în sistem a clientului, acesta nu aşteaptă şi

intră direct în serviciu. P (t < WT < t + dt ) = ∑ Pn (t < WT < t + dt ) .
n =1

Cum se calculează Pn( t < WT < t + dt ) ?

168

Modele şi algoritmi de optimizare

Fiind o probabilitate condiţionată, se scrie ca un produs de probabilităţi pentru următoarele trei evenimente: a) evenimentul ca, la sosire, în sistem să existe n unităţi, Pn(0). Se ia momentul sosirii clientului ca fiind t = 0 ; b) evenimentul ca în intervalul de timp t să fie serviţi şi să plece din sistem n−1 clienţi, cu condiţia să fi existat iniţial n clienţi în sistem. Probabilitatea acestui (µ t )n −1 e − µ t ; eveniment este (n − 1) ! c) evenimentul ca în intervalul de timp dt să fie servit şi să plece un client, condiţionat de evenimentele de la a) şi b). Probabilitatea acestui eveniment este µ dt . Prin urmare, (µ t )n−1 e − µ t ⋅ µ dt . Pn (t < WT < t + dt ) = Pn (0) ⋅ (n − 1)! Sistemul este presupus în regim staţionar şi atunci avem: ∞ (µ t )n −1 e − µ t µ dt = n P (t < WT < t + dt ) = ∑ ρ (1 − ρ ) (n − 1)! n =1 = (1 − ρ ) µ de − µ t ρ ∑ Aşadar,
P (WT > t 0 ) = ∫ ρ (1 − ρ ) µ e − µ τ (1− − ρ ) dτ = ρ (1 − ρ ) µ
t0 ∞

( ρµ t ) n −1 = ρ (1 − ρ ) µ e − µ t (1− ρ ) dt . (n − 1)! n =1

e − µ τ (1− ρ ) − µ (1 − ρ )

=
t0

=ρe

− µ t 0 (1− ρ )

,

pentru ρ < 1. Am obţinut P( WT > t0 ) = ρ e − µ t0 (1− ρ ) şi astfel am demonstrat următoarea propoziţie.
Propoziţia 8.2. Probabilitatea ca un client să aştepte la rând un timp superior unui timp dat t0 este P( WT > t0 ) = ρ e − µ t0 (1− ρ ) . Exemplu. La o bază de aprovizionare sosesc în medie 30 de autobasculante pe oră pe care trebuie să le încarce un singur excavator. Timpul mediu necesar încărcării unei autobasculante este de 1 min şi 30 s. Să se stabilească elementele modelului de aşteptare care rezultă, dacă se consideră că sosirile sunt poissoniene, iar servirile, exponenţiale. Să se determine probabilitatea ca în sistem să fie 3 sau mai mult de 3 autobasculante. Rezolvare. Presupunem că prin observaţiile din teren ne situăm în cazul modelului Po(λ)/Exp(µ)/1:(∞,FIFO) . Pentru acest caz intensitatea intrărilor este λ=30 , iar

8. Elemente de teoria aşteptării

169

cea a ieşirilor (serviciilor) din sistem este µ = este ρ =

60 min . Intensitatea de trafic 1 min 30 s

3 . Din relaţia (8.6) avem p 0 = 1 − ρ = 0.25 , p1=0.1875 ş.a.m.d. 4 Se pot determina acum conform cu relaţiile (8.7)−(8.11) elementele necunoscute ale modelului: − numărul mediu de autobasculante din sistem M[N(t)]=3. − numărul mediu de autobasculante din şirul de aşteptare M[L1(t)]=2.25. − timpul mediu de aşteptare în sistem M[W]=6 min. − timpul mediu de aşteptare în şirul de aşteptare M[WT]=4 min şi 30 s. Din relaţia (8.12) avem P( N( t ) > 2) = ρ 2+1=0.42187 .
Comentariu. Dacă s-ar pune problema ca în sistem să fie în medie 2 autobasculante în 2 λ ρ loc de 3, atunci din relaţia (8.7) obţinem = 2 şi ρ = = . Cum λ=30 1− ρ 3 µ este o dată exterioară sistemului, trebuie modificată durata medie a serviciilor, şi anume µ = 45 s . Pentru noile valori ale parametrilor ρ , µ se pot determina elementele necunoscute ale modelului.

Să rezolvăm modelul pentru valorile iniţiale ale parametrilor λ şi µ cu pachetul de programe Management Scientist. După lansarea pachetului de programe selectăm modulul Waiting Lines şi din acesta Poisson Arrivals / Exponential Service (Figura 2.4). Introducem datele de intrare ca în Figura 8.1.

Figura 8.1

Selectând Solve obţinem soluţia modelului care, aşa cum se vede din Tabelul 8.1, coincide cu cea obţinută mai sus.

170 Tabelul 8.1

Modele şi algoritmi de optimizare
WAITING LINES ************* NUMBER OF CHANNELS = 1 POISSON ARRIVALS WITH MEAN RATE = 30 EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 40 OPERATING CHARACTERISTICS ------------------------THE PROBABILITY OF NO UNITS IN THE SYSTEM THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE THE AVERAGE NUMBER OF UNITS IN THE SYSTEM THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT Number of Units in the System ----------------------------0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 OR MORE Probability ----------0.2500 0.1875 0.1406 0.1055 0.0791 0.0593 0.0445 0.0334 0.0250 0.0188 0.0141 0.0106 0.0079 0.0059 0.0045 0.0033 0.0025 0.0075

0.2500 2.2500 3.0000 0.0750 0.1000 0.7500

8.4. Modelul Po(λ)/Exp(µ)/1:(m, FIFO)

Pentru acest model, lungimea maximă a cozii este m<∞. În acest caz, probabilitatea ca în intervalul de timp de lungime ∆t>0 să sosească un client în sistem este proporţională cu mărimea intervalului; coeficientul de proporţionalitate depinde de numărul n de unităţi aflate în sistem la momentul respectiv şi rămâne λn ; analog, coeficientul legat de servicii rămâne µn . În ecuaţiile de stare (8.4) facem presupunerea că probabilitatea ca în intervalul de timp ∆t să sosească în sistem un client este cu atât mai mică cu cât numărul clienţilor rămaşi din numărul total este mai mic, (m − n )λ ∆t = λ n ∆t şi atunci λ n = (m − n )λ . Coeficientul µn nu depinde de numărul de clienţi din sistem la un moment dat, deoarece există o singură staţie, şi îl notăm cu µ . În ecuaţiile de stare (8.4), înlocuind λn şi µn şi considerând µn+1 = 0, obţinem ecuaţia − mλ p 0 + µ p1 = 0 ⇒ p1 = m

λ p0 . µ

8. Elemente de teoria aşteptării

171

În cea de-a doua ecuaţie din (8.4) luăm n = 1 şi obţinem mλ p 0 − [(m − 1)λ + µ ] p1 + µ p 2 = 0 ⇒ ⇒ mλ p 0 − (m − 1)λ ⋅ m

λ λ p0 − µ ⋅ m p0 + µ p2 = 0 ⇒ µ µ
2

⎛λ⎞ ⇒ p 2 = m(m − 1)⎜ ⎟ p 0 . ⎜µ⎟ ⎝ ⎠
Luând n = 2, obţinem (m − 1)λ p1 − [( m − 2)λ + µ ] p 2 + µ p 3 = 0 ⇒

⎛λ⎞ λ ⇒ ( m − 1)λ ⋅ m p 0 − (m − 2)λ m(m − 1)⎜ ⎟ p 0 + µ p 3 − ⎜µ⎟ µ ⎝ ⎠ ⎛λ⎞ ⎛λ⎞ − µ m(m − 1)⎜ ⎟ p 0 = 0 ⇒ p 3 = m(m − 1)(m − 2)⎜ ⎟ p 0 . ⎜µ⎟ ⎜µ⎟ ⎝ ⎠ ⎝ ⎠ Prin inducţie rezultă ⎛λ⎞ pn = A ⎜ ⎟ p0 ⎜µ⎟ ⎝ ⎠ 2 K m ⎞ ⎟ şi p 2 (t ) K p m (t ) ⎟ ⎠
n m n n

2

2

3

⎛ 0 N (t ) : ⎜ ⎜ p (t ) ⎝ 0 ⇒
m

1 p1 (t )

∑p
k =0 n

m

k

(t ) = 1 ⇒

⎛λ⎞ n ∑ Am p 0 ⎜ µ ⎟ = 1 ⇒ p 0 = ⎜ ⎟ n =0 ⎝ ⎠

1

∑A
n =0

m

n m

⎛λ⎞ ⎜ ⎟ ⎜µ⎟ ⎝ ⎠

0 , Am = 1 .

Calculul elementelor necunoscute ale modelului • numărul mediu de clienţi din sistem
m ⎛λ⎞ n⎛λ ⎞ M [ N (t )] = ∑ np n (t ) = ∑ nA ⎜ ⎟ p 0 = ∑ [m − (m − n)] Am ⎜ ⎟ p 0 = ⎜µ⎟ ⎜µ⎟ n =0 n =0 n =0 ⎝ ⎠ ⎝ ⎠ m m n m m ⎛λ⎞ µ m −1 n ⎛ λ ⎞ n⎛λ ⎞ = m∑ A ⎜ ⎟ p 0 − ∑ ( m − n) Am ⎜ ⎟ p 0 = m − ∑ Am+1 ⎜ ⎟ p 0 = ⎜µ⎟ ⎜µ⎟ ⎜µ⎟ λ n =0 n =0 ⎝ ⎠ 14 ⎝ 44 4 ⎠ 3 n =0 2 144 ⎝ 44 3 4 ⎠ 4 2 1 1 − p0 m n m n n n +1 n n

=m− •

µ µ (1 − p 0 ) ; deci M [ N (t )] = m − (1 − p 0 ) , λ λ

numărul mediu de clienţi serviţi la un moment dat 1 ⎛ 0 ⎞ n s (t ) : ⎜ ⎜ p (t ) 1 − p (t ) ⎟ ⇒ M [n s (t )] = 0 p 0 + 1 − p 0 = 1 − p 0 . ⎟ 0 ⎝ 0 ⎠

172

Modele şi algoritmi de optimizare

Dacă µ este numărul mediu de clienţi ce pot fi serviţi pe unitatea de timp, dacă staţia este ocupată tot timpul, atunci numărul mediu de clienţi serviţi efectiv într-o unitate de timp este µ ( 1 − p0 ). • lungimea medie a cozii M[Lc] = M[L1] M[Lc] = numărul mediu de clienţi în sistem la un moment dat minus numărul mediu de clienţi ce sunt serviţi la un moment dat = =M[N( t )] − ( 1 − p0 ) = µ µ+λ = m − (1 − p 0 ) − (1 − p 0 ) ⇒ M [ Lc ] = m − (1 − p 0 ) .

λ

λ

timpul mediu de aşteptare la coadă µ +λ⎤ 1 1⎡ m M [WT ] = M [ L1 ] = ⎢ − ⎥ ⇒ µ (1 − p 0 ) µ ⎣1 − p 0 λ ⎦ µ +λ⎤ 1⎡ m ⇒ M [WT ] = ⎢ − ⎥ , µ ⎣1 − p 0 λ ⎦
timpul mediu de aşteptare în sistem 1 1⎡ m µ⎤ 1⎡ m µ⎤ M [W ] = M [WT ] + = ⎢ − ⎥ ⇒ M [W ] = ⎢ − ⎥ . µ µ ⎣1 − p 0 λ ⎦ µ ⎣1 − p 0 λ ⎦

Exemplu. O firmă de taximetre are 12 autoturisme şi un singur mecanic de întreţinere. Ştiindu-se că repartiţia de probabilitate a timpului de funcţionare a unui autoturism între două defecţiuni este exponenţială cu media de 6 zile, iar repartiţia timpului necesar reparaţiei defecţiunii este exponenţială cu media 4 ore, să se determine: • probabilitatea ca la un moment dat toate autoturismele să funcţioneze, • timpul mediu de aşteptare a unui autoturism defect până la momentul când începe să fie reparat, • timpul mediu de aşteptare a unui autoturism până în momentul în care părăseşte atelierul de reparaţii, • numărul mediu de autoturisme la coadă şi • numărul mediu de autoturisme din atelier. Se consideră ziua de lucru de 8 ore. Rezolvare
1 1 1 1 λ 48 1 = = = ; µ = maşini pe oră , λ= , atunci 8 ⋅ 6 48 4 µ 1 12 4 1 1 p0 = = = 0.19857 , n 12 5.03607 n ⎛ 1 ⎞ ∑ A12 ⎜ 12 ⎟ ⎝ ⎠ n=0

8. Elemente de teoria aşteptării

173

reprezintă probabilitatea ca la un moment dat toate autoturismele să funcţioneze. 1 1 + µ +λ M [ L1 ] = m − (1 − p 0 ) = 12 − 48 4 (1 − 0.19857) = 1.58141 , 1 λ 48

µ M [ N (t )] = m − (1 − p 0 ) = 12 − 4 (1 − 0.19857) = 2.38284 , 1 λ
6⋅8
1 1 ⎤ ⎡ + ⎥ ⎡ m ⎤ 1⎢ µ+λ 1 12 M [WT ] = ⎢ − = ⎢ − 4 48 ⎥ = 7.89294 , ⎥ 1 1 ⎥ µ ⎣1 − p 0 λ ⎦ ⎢1 − 0.19857 4⎢ 48 ⎥ ⎣ ⎦

1

1 ⎤ ⎡ ⎥ 12 1⎡ m µ⎤ 1 ⎢ M [W ] = ⎢ − 4 ⎥ = 11.89294 . − ⎥= ⎢ µ ⎣1 − p 0 λ ⎦ 1 ⎢1 − 0.19857 1 ⎥ 4⎢ 48 ⎥ ⎦ ⎣ Pentru rezolvarea acestei probleme cu Management Scientist, după lansarea programului, selectăm Waiting Lines, apoi din meniul File alegem New şi din fereastra care apare selectăm Poisson Arrivals/Exponential Service (Finite Pop.), (Figura 2.4). În fereastra care apare introducem datele de intrare 1 λ= = 0.02083 , µ = 0.25 6⋅8 ca în Figura 8.2, apoi selectăm Solve

Figura 8.2

şi rezultatele sunt afişte pe ecran sub următoarea formă (Tabelul 8.2).

174 Tabelul 8.2

Modele şi algoritmi de optimizare

WAITING LINES ************* NUMBER OF CHANNELS = 1 POISSON ARRIVALS WITH MEAN RATE = 0.02083 EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 0.25 FINITE CALLING POPULATION OF SIZE = 12 OPERATING CHARACTERISTICS ------------------------THE PROBABILITY OF NO UNITS IN THE SYSTEM THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE THE AVERAGE NUMBER OF UNITS IN THE SYSTEM THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT Number of Units in the System ----------------------------0 1 2 3 4 5 6 7 8 9 10 11 12 Probability ----------0.1986 0.1986 0.1820 0.1517 0.1137 0.0758 0.0442 0.0221 0.0092 0.0031 0.0008 0.0001 0.0000

0.1986 1.5808 2.3822 7.8907 11.8907 0.8014

8.5. Modelul Po(λ)/Exp(µ)/c:(∞, FIFO)

Aceste modele generalizează modelele de aşteptare cu o singură staţie de servire, având c staţii de servire paralele (identice în ceea ce priveşte timpul de servire). Fie N( t ) numărul mediu de clienţi din sistem la momentul t . Atunci avem: • probabilitatea unei veniri în intervalul ( t , t + ∆t ) este λ∆t + O (∆t), iar venirile sunt independente între ele, • probabilitatea unei ieşiri dintr-o staţie de servire în intervalul de timp (t , t + + ∆t) este µ∆t + O (∆t) , • probabilitatea rămânerii unui client în sistem este 1 − µ∆t + O (∆t) , • probabilitatea ca n ≤ c clienţi să rămână în staţiile de servire este ( 1 − µ ∆t+ O (∆t) )n = 1 − nµ∆t + O (∆t), deoarece ieşirile din sistem sunt independente, • probabilitatea ca în intervalul de timp ( t , t + ∆t ) un client să părăsească sistemul atunci când n staţii de servire lucrează simultan este nµ ∆t + O(∆t) .

8. Elemente de teoria aşteptării

175

Notăm En evenimentul care constă în prezenţa a n clienţi în sistem şi cu pn(t) probabilitatea producerii evenimentului En la momentul t. Vom calcula Pn( t + ∆t ). a) 0 < n < c . Vom neglija probabilităţile de ordin de mărime mai mic ca O (∆t). Sunt posibile următoarele situaţii: 1) sistemul se găseşte la momentul t în starea En şi nu au loc nici o venire şi nici o plecare în/din sistem în intervalul de timp (t, t + ∆t). Probabilitatea corespunzătoare este (1 − λ∆t + O (∆t ))(1 − nµ ∆t + O (∆t )) p n (t ) =

= [1 − (λ + nµ )∆t + O (∆t ))] p n (t ) ,

2) sistemul se găseşte la momentul t în starea En−1 şi au loc o venire şi nici o plecare. Probabilitatea corespunzătoare este (λ ∆t + O (∆t ) )(1 − µ ∆t ) p n −1 (t ) = λ p n −1 (t )∆t , 3) sistemul se găseşte la momentul t în starea En+1 şi au loc o ieşire din sistem şi nici o venire. Probabilitatea corespunzătoare este (1 − λ ∆t + O (∆t ) )((n + 1) µ ∆t + O (∆t ) ) p n +1 (t ) = = [(n + 1) µ ∆t + O ( ∆t ))] p n+1 (t ) . Aşadar, p n (t + ∆t ) = [1 − (λ + nµ )∆t + O (∆t )] p n (t ) + λ p n −1 (t )∆t + + [(n + 1) µ ∆t + O (∆t )] p n +1 (t )

(8.13)

= [1 − (λ + cµ )∆t + O ( ∆t ))] p n (t ) , întrucât toţi cei c clienţi din staţiile de servire rămân în sistem (n-au terminat serviciul). 2) sistemul se găseşte la momentul t în starea En−1 , are loc o intrare în sistem şi nu se produce nici o ieşire. Probabilitatea corespunzătoare este (λ ∆t + O (∆t ) )(1 − cµ ∆t + O (∆t ) ) p n −1 (t ) = λ p n −1 (t )∆t . 3) sistemul se găseşte la momentul t în starea En+1 , nu are loc nici o intrare în sistem, dar are loc o ieşire. Probabilitatea corespunzătoare este (1 − λ ∆t + O (∆t ) )(cµ ∆t + O (∆t ) ) p n +1 (t ) = cµ p n +1 (t )∆t , unde cµ ∆t + O (∆t ) este probabilitatea ca un client să părăsească sistemul atunci când c staţii lucrează simultan. Aşadar,

b) n ≥ c . Apar următoarele eventualităţi: 1) sistemul se găseşte la momentul t în starea En şi nu au loc nici o venire şi nici o plecare în/din sistem în intervalul de timp (t, t + ∆t). Ieşirile nu pot avea loc decât din cele c staţii ocupate. Probabilitatea corespunzătoare este (1 − λ ∆t + O (∆t ) )(1 − cµ ∆t + O (∆t ) ) p n (t ) =

176

Modele şi algoritmi de optimizare

p n (t + ∆t ) = [1 − (λ + cµ )∆t + O (∆t )] p n (t ) + λ p n −1 (t )∆t + + cµ p n +1 (t )∆t .

(8.14)

c) n = 0 . Evidenţiem următoarele eventualităţi: 1) sistemul se găseşte la momentul t în starea E0 şi nu au loc nici o venire şi nici o plecare în/din sistem în intervalul de timp (t, t + ∆t). Probabilitatea corespunzătoare este ( 1 − λ ∆t + O (∆t ) ) p0 ( t ). 2) sistemul se găseşte la momentul t în starea E1 , are loc o ieşire din sistem şi nu se produce nici o intrare. Probabilitatea corespunzătoare este (1 − λ ∆t + O (∆t ) )(µ ∆t + O (∆t ) ) p1 (t ) = [µ ∆t + O (∆t )]p1 (t ) . Am obţinut p 0 (t + ∆t ) = [1 − λ ∆t + O (∆t )] p 0 (t ) + [µ ∆t + O (∆t )] p1 (t ) (8.15) Din relaţiile (8.13), (8.14), (8.15), prin împărţire la ∆t şi ţinând seama de proprietăţile funcţiilor O (∆t) , trecând la limită (∆t → 0), obţinem ecuaţiile de stare pentru acest model: ′ ⎧ p 0 (t ) = −λ p 0 (t ) + µ p1 (t ) ⎪ (8.16) ⎨ p ′ (t ) = −(λ + nµ ) p n (t ) + λ p n −1 (t ) + (n + 1) µ p n +1 (t ) , 1 ≤ n < c n ⎪ p ′ (t ) = −(λ + cµ ) p (t ) + λ p (t ) + cµ p (t ) , n≥c . n n −1 n +1 ⎩ n ′ În cazul staţionar p n (t ) = 0 , n ≥ 0 , ecuaţiile de stare (8.16) devin ⎧λ p 0 = µ p1 ⎪ ⎨(λ + nµ ) p n = λ p n −1 + (n + 1) µ p n +1 1 ≤ n < c ⎪(λ + cµ ) p = λ p + cµ p n ≥ c. n n −1 n +1 ⎩ Pentru rezolvarea sistemului (8.17) vom nota zn = −λ⋅pn−1 + n⋅µ⋅pn . Prima ecuaţie din (8.17) devine z1 = −λ⋅p0 + µ⋅p1 = 0 . Prelucrăm a doua ecuaţie din (8.17) −λ⋅pn + ( n + 1)⋅µ⋅pn+1 = −λ⋅pn−1 + n⋅µ⋅pn , de unde rezultă că zn+1 = zj = ... = z1 = 0 . (8.17)

λ λ λ 1 1 ⎛λ⎞ 1 p1 = p 0 ; p n = ⋅ p n −1 ⇒ p n = ⎜ ⎟ p 0 = ρ n p 0 ; ρ = . ⎜µ⎟ µ µ µ n n! ⎝ ⎠ n!
Astfel,
1 n ρ p0 , 1 ≤ n < c . n! Din ultima ecuaţie a sistemului (8.17) rezultă că −λ⋅pn + c⋅µ⋅pn+1 = −λ⋅pn−1 + c⋅µ⋅pn . De unde

n

pn =

8. Elemente de teoria aşteptării

177

zn = zn+1 , iar zc = −λ⋅pc−1 + c⋅µ⋅pc = 0. Astfel pc = Aşadar,
c ⎛ρ⎞ ρ pc+k = ⎜ ⎟ p0 , k ≥ 0 . ⎝ c ⎠ c! k

1 λ ρc ρc 1 p0 = p0 . ⋅ p c −1 = ⋅ c (c − 1)! c! c µ

Pentru acest model notăm

ρ* =

ρ
c

intensitatea de trafic a sistemului de

aşteptare. Am obţinut soluţia sistemului (8.17) ⎧ ρn p0 , 1≤ n < c ⎪ pn = ⎪ n! ⎨ n ⎪ pn = ρ p0 , n ≥ c . ⎪ c! c n −c ⎩ Deoarece

(8.18)

∑p
n=0

n

= 1 , rezultă că
n ∞ ⎛ c −1 ρ n ρ* c ⎞ ⎜∑ ⎟ = 1, + p0 ⎜ n=0 n! ∑ c! ⎟ n =c ⎝ ⎠

( )

de unde obţinem +∑ c! 1 − ρ * n=0 n! Cunoscând repartiţia variabilei aleatoare N( t ), se poate determina repartiţia variabilei aleatoare Lc( t ) L⎞ 0 1 2 ⎛ Lc : ⎜ ⎜ p (t ) + ... + p (t ) p (t ) p (t ) L⎟ . ⎟ c c +1 c+2 ⎝ 0 ⎠ p0 = 1

(

ρ

c

c −1

)

ρn

.

Calculul elementelor necunoscute ale modelului • lungimea medie a cozii
M [ Lc ] = 0 ⋅ [ p 0 (t ) + ... + p c (t )] + ∑ kp c + k (t ) .
k =1

Notăm c + k = n ⇒ k = n − c . Atunci
M [ Lc ] =
n = c +1

∑ (n − c) p n =

n = c +1

(n − c)

ρn
c!c n −c

p0 =

178

Modele şi algoritmi de optimizare
c +2 c +3 ⎡ ⎛ λ ⎞ c +1 ⎤ ⎛ λ ⎞ ⎛ λ ⎞ cc = p 0 ⎢1⎜ ⎟ + 2⎜ ⎟ + 3⎜ ⎟ + ...⎥ = ⎜ µc ⎟ ⎜ µc ⎟ c! ⎢ ⎜ µc ⎟ ⎥ ⎝ ⎠ ⎝ ⎠ ⎣⎝ ⎠ ⎦

= Se ştie că

⎛ λ ⎞ cc p0 ⎜ ⎟ c! ⎜ cµ ⎟ ⎝ ⎠

c +1

2 ⎡ ⎛ λ ⎞ ⎛ λ ⎞ ⎤ ⎢1 + 2⎜ ⎟ + 3⎜ ⎟ ...⎥ . ⎜ cµ ⎟ ⎜ µc ⎟ ⎢ ⎝ ⎠ ⎝ ⎠ ⎥ ⎣ ⎦

1 , x <1. (1 − x) 2 k =1 Aplicând în relaţia de mai sus, obţinem

∑ kx

k −1

=

M [ Lc ] =

⎛ λ ⎞ cc p0 ⎜ ⎟ c! ⎜ cµ ⎟ ⎝ ⎠

c +1

1 ⎛ λ ⎞ ⎜1 − ⎜ cµ ⎟ ⎟ ⎝ ⎠
c 2

,

de unde rezultă că ⎛λ⎞ ⎜ ⎟ p0 . ⎜µ⎟ ⎝ ⎠ • Pentru determinarea numărului mediu de clienţi din sistem, vom considera numărul de clienţi aflaţi în serviciu la un moment dat, care este acelaşi lucru cu numărul de staţii ocupate ns , ca fiind o variabilă aleatoare discretă cu repartiţia c K c −1 1 2 ⎞ ⎛ 0 ns : ⎜ ⎟ ⎜ p (t ) p (t ) p (t ) K p (t ) p (t ) + p (t ) + ... ⎟ . 1 2 c −1 c c +1 ⎠ ⎝ 0 M [ Lc ] = M [n s ] = ∑ np n (t ) + c( p c (t ) + p c +1 (t ) + ...) = ∑ np n (t ) + c ∑ p n (t ) =
n =0 c n =0 n n = c +1 ∞ 1 ⎛λ⎞ 1 ⎜ ⎟ p 0 (t ) + c ∑ ⎜µ⎟ n −c n! ⎝ ⎠ n = 0 c! c n =0 De aici rezultă că c c ∞

λµ (c − 1)!(cµ − λ ) 2

= ∑n

n

⎛λ⎞ ⎜ ⎟ p 0 (t ) . ⎜µ⎟ ⎝ ⎠

M [n s ] = iar cum

λ , µ

M[N( t )] = M[Lc] + M[ns], obţinem că ⎛λ⎞ λ ⎜ ⎟ p0 + . ⎜µ⎟ µ ⎝ ⎠ numărul mediu de servicii făcute efectiv în unitatea de timp

λµ M [ N (t )] = (c − 1)!(cµ − λ ) 2 µ M [n s ] =

c

λ ⋅µ =λ . µ

timpul mediu de aşteptare la coadă

8. Elemente de teoria aşteptării

179

M [WT ] = •

M [ Lc ]

λ

µ = (c − 1)!(cµ − λ ) 2
1 .

⎛λ⎞ ⋅ ⎜ ⎟ p 0 (t ) . ⎜µ⎟ ⎝ ⎠

c

timpul mediu de aşteptare în sistem M [W ] = M [WT ] +

µ

numărul mediu de staţii de servire care lenevesc (neocupate) M [ SL] = ∑ (c − j ) p j (t ) = c − ρ .
j =0 c −1

Exemplu. La o spălătorie auto se prezintă în medie 6 autoturisme pe oră. Un lucător foloseşte pentru spălatul unui autoturism în medie 15 minute. Să se determine elementele sistemului pentru cazurile în care se folosesc 2 şi respectiv 3 lucrători. Rezolvare
Pentru acest exemplu avem λ = 6 , µ = 60 6 = 4 , ρ = > 1 . Cum ρ > 1 , nu este 15 4 suficient un singur lucrător. Vom considera următoarele situaţii: a) c = 2 (2 lucrători) 1 3 p0 = = 0.14286 , p1 = p 0 = 0.21429 , 2 2 1 3 ⎛3⎞ +1+ ⎜ ⎟ 2 ⎝ 2 ⎠ 2!⎛1 − 3 ⎞ ⎜ ⎟ 4⎠ ⎝

⎛3⎞ 1 p2 = ⎜ ⎟ p 0 = 0.16072 etc ⎝ 2 ⎠ 2!

2

1 ⎛3⎞ 1 = 1.92861 , M [ L2 ] = 0.14286 ⋅ ⎜ ⎟ 2 2 ⎠ 2!2 ⎛ ⎝ 3⎞ ⎜1 − ⎟ 4⎠ ⎝ 3 1 M [ SL] = c − ρ = 2 − = , 2 2 1 3 ⎛3⎞ 1 + = 3.4261 , M [ N (t )] = 0.14286 ⋅ ⎜ ⎟ 2 2 ⎝ 2 ⎠ 2!2 ⎛ 3⎞ ⎜1 − ⎟ 2⎠ ⎝ M [ Lc ] 1.92861 = = 0.32143 = 19 min 17 s . M [WT ] = 6 λ b) c = 3 (3 lucrători)
3

3

180

Modele şi algoritmi de optimizare

= 0.21053 , 2 3 ⎛3⎞ 1 1 ⎛3⎞ +1+ + ⎜ ⎟ ⎜ ⎟ 2 ⎝ 2 ⎠ 2! ⎝ 2 ⎠ 3!⎛1 − 3 ⎞ ⎜ ⎟ 2⎠ ⎝ 3 p1 = p 0 = 0.3158 etc . 2 M [ L3 ] = 0.23685 ; M [ N (t )] = 1.73685 ; M [ SL] = 1.5 ; M [WT ] = 0.03946 ore = 2 min 22 s . p0 =
3

1

Concluzie. Din punctul de vedere al clienţilor, serviciul la spălătorie este mult mai atractiv cu 3 lucrători, deoarece numărul mediu al autoturismelor care stau la rând în acest caz este 0.23 şi aşteaptă în medie doar 2 min şi 22 s, faţă de cazul în care ar fi doar 2 lucrători şi ar aştepta în medie 19 min şi 17 s. În cazul b) 21% dintre solicitanţi au şansa să nu stea la rând.
Apelăm Management Scientist pentru rezolvarea acestui model. După lansarea pachetului de programe, selectăm modulul Waiting Lines, apoi modelul Poisson Arrivals / Exponential Service. Introducem datele de intrare pentru cazul cu 2 lucrători în fereastra corespunzătoare modelului selectat (Figura 8.3).

Figura 8.3

Selectând Solve se obţin rezultatele prezentate în Tabelul 8.3. Analog se rezolvă şi cazul cu c=3.

8.6. Modelul P0(λ)/Exp(µ)/c:(m,FIFO)
Acest model reprezintă cazul sistemului de aşteptare cu sosiri poissoniene, servicii exponenţiale, mai multe staţii de servire în paralel (identice în ceea ce priveşte timpul de servire), număr limitat de clienţi, m, şi disciplina de servire FIFO.

8. Elemente de teoria aşteptării
Tabelul 8.3
WAITING LINES ************* NUMBER OF CHANNELS = 2 POISSON ARRIVALS WITH MEAN RATE = 6 EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 4 PER CHANNEL OPERATING CHARACTERISTICS ------------------------THE PROBABILITY OF NO UNITS IN THE SYSTEM 0.1429 THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE 1.9286 THE AVERAGE NUMBER OF UNITS IN THE SYSTEM 3.4286 THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE 0.3214 THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM 0.5714 THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT 0.6429 Number of Units in the System Probability --------------------------------------0 0.1429 1 0.2143 2 0.1607 3 0.1205 4 0.0904 5 0.0678 6 0.0509 7 0.0381 8 0.0286 9 0.0215 10 0.0161 11 0.0121 12 0.0091 13 0.0068 14 0.0051 15 0.0038 16 0.0029 17 OR MORE 0.0086

181

Pentru prezentarea modelului (schematizat în Figura 8.4) vom considera următorul exemplu. La o balastieră vin m autobasculante pentru a fi încărcate de c excavatoare. Autobasculantele formează o singură coadă şi sunt încărcate după metoda FIFO. S-a observat că venirile autobasculantelor la coadă sunt repartizate P0(λ) , iar timpii de încărcare sunt repartizaţi după legea Exp(µ).
staţie de servire 1 coada Veniri O O ... O şir de aşteptare staţie de servire 2

M

numărul zilelor lucrăt

Figura 8.4

182

Modele şi algoritmi de optimizare

Determinarea ecuaţiilor de stare Notăm En evenimentul care constă în prezenţa a n autobasculante la balastieră, iar pn( t ) probabilitatea producerii evenimentului En la momentul t . Dacă n ≤ c , nu există coadă de aşteptare. Dacă n> c , se formează coadă de aşteptare. Fie Pn( t + ∆t ) probabilitatea ca la momentul t + ∆t să fie n autobasculante la balastieră. La intervalul de timp t + ∆t pot avea loc următoarele situaţii: 1) sistemul este în starea En , nu vine şi nu pleacă nici o autobasculantă. Probabilitatea corespunzătoare este: (1 − nµ ∆t + O (∆t ) )(1 − (m − n)λ ∆t + O (∆t ) ) , dacă 1 ≤ n < c , sau (1 − cµ ∆t + O (∆t ) )(1 − (m − n)λ ∆t + O (∆t ) ) , dacă n ≥ c . 2) sistemul se află în starea En+1 , nu are loc nici o venire, dar are loc o plecare în intervalul de timp ( t , t + ∆t ). Probabilitatea corespunzătoare este [(n + 1) µ ∆t + O (∆t )] ⋅ [1 − (m − n)λ ∆t + O (∆t )] = (n + 1) µ ∆t + O (∆t ) , dacă 1 ≤ n < c , sau [1 − (m − n)λ ∆t + O (∆t )] ⋅ [cµ ∆t + O (∆t )] = cµ ∆t + O (∆t ) , dacă n ≥ c . 3) sistemul se află în starea En−1 şi au loc o venire şi nici o plecare în intervalul de timp ( t , t + ∆t ). Probabilitatea corespunzătoare este: [(m − n + 1)λ ∆t + O (∆t )] ⋅ [1 − (m − n) µ ∆t + O (∆t )] = = (m − n + 1)λ ∆t + O (∆t ) , dacă 1 ≤ n < c , sau [(m − n + 1)λ ∆t + O (∆t )] ⋅ [1 − cµ ∆t + O (∆t )] = (m − n + 1)λ ∆t + O (∆t ) , dacă n ≥ c . Aşadar, a) pentru n < c , avem: 1 p n (t + ∆t ) = { − [nµ + ( m − n)λ ]∆t + O ( ∆t )}p n (t ) + + [(n + 1) µ ∆t + O (∆t )] p n +1 (t ) + + [(m − n + 1)λ ∆t + O (∆t )] p n −1 (t )

+ [cµ ∆t + O (∆t )] p n +1 (t ) + [( m − n + 1)λ ∆t + O (∆t )] p n −1 (t ) c) pentru n = 0 , avem p 0 (t + ∆t ) = [1 − λ ∆t + O (∆t )] p 0 (t ) +
= [1 − mλ ∆t + O (∆t )] p 0 (t ) + [µ ∆t + O ( ∆t )] p1 (t ) + [1 − λ ∆t + O (∆t )](µ ∆t + O (∆t ) ) p1 (t )

b) pentru n ≥ c , avem 1 p n (t + ∆t ) = { − [cµ + (m − n)λ ]∆t + O ( ∆t )}p n (t ) +

8. Elemente de teoria aşteptării

183

Relaţiile a), b), c) le împărţim la ∆t , ţinem seama de proprietăţile funcţiilor O ( ∆t ) când se trece la limită pentru ∆t → 0 , şi se obţin ecuaţiile de stare ale modelului ′ ⎧ p 0 (t ) = µ p1 (t ) − mλ p 0 (t ) ⎪ p ′ (t ) = −[nµ + (m − n)λ ] p (t ) + (n + 1) µ p (t ) + λ (m − n + 1) p (t ) n n +1 n −1 ⎪ n ⎪ 1≤ n < c ⎨ ⎪ p ′ (t ) = −[cµ + (m − n)λ ] p (t ) + cµ p (t ) + λ (m − n + 1) p (t ) n n +1 n −1 ⎪ n ⎪ c ≤ n ≤ m. ⎩ În cazul staţionar, ecuaţiile de stare sunt ⎧λ mp 0 = µ ⋅ p1 ⎪ ⎨(n + 1) µ ⋅ p n +1 = [nµ + (m − n)λ ] p n − λ (m − n + 1) p n −1 1 ≤ n < c ⎪cµ ⋅ p = [cµ + ( m − n)λ ] p − λ (m − n + 1) p c≤n<m n +1 n n −1 ⎩ deoarece pm+1( t ) = 0 , sistemul neputând avea mai mult de m autobasculante la un moment dat. Pentru rezolvarea sistemului, aplicăm aceeaşi metodă ca la modelul din § 8.5 şi, prin inducţie, avem n ⎧C m ρ n p 0 , n<c ⎪ c n pn = ⎨ c n⎛ ρ ⎞ ⎪ c! Am ⎜ c ⎟ p 0 , c ≤ n ≤ m . ⎝ ⎠ ⎩ Înlocuind pn de mai sus în (8.3) rezultă 1 . p0 = n c −1 cc m n ⎛ ρ ⎞ n n ∑ C m ρ + c! ∑ Am ⎜ c ⎟ ⎝ ⎠ n =0 n=c Aici pn este probabilitatea ca, la un moment dat, să existe în sistem n autobasculante, p0 este probabilitatea ca în sistem să nu existe nici o

autobasculantă la un moment dat, iar

ρ
c

< 1 pentru evitarea supraaglomerării.

Calculul elementelor necunoscute ale modelului După calcule laborioase se obţin pentru elementele necunoscute ale modelului următoarele relaţii: • numărul mediu de clienţi din sistem c ⎡ cρ + c − mρ c−1 n n cρ c −1C m ⎤ mρ − c M [ N (t )] = p 0 ⎢ ∑ Cm ρ + 1 + ρ ⎥ + ρ ⎦ ⎣ ρ (1 + ρ ) n=0 • numărul mediu de clienţi de la coadă c −1 ⎡ ⎤ ⎡ c ⎤ n c M [ Lc ] = ⎢m − − c ⎥ ⋅ ⎢1 − p 0 ∑ C m ρ n ⎥ + cρ c−1C m p 0 ρ n =0 ⎦ ⎣ ⎦ ⎣ • numărul mediu de staţii în lucru

184

Modele şi algoritmi de optimizare

M[ns] = M[N(t)] − M[Lc] • timpul mediu de aşteptare la coadă M [ Lc ] M [WT ] = µ M [n s ] • timpul mediu de aşteptare în sistem M [W ] = M [WT ] + 1 .

µ

Aplicaţie numerică Balastiera are 2 excavatoare care trebuie să încarce 20 autobasculante. S-a constatat că sosirile autobasculantelor sunt poissoniene cu parametrul λ = 0.3 autobasculante pe oră, iar timpul de încărcare este exponenţial de parametru µ = 4 autobasculante pe oră pentru fiecare excavator. Să se determine elementele necunoscute ale fenomenului de aşteptare. Rezolvare

ρ=
p0 =

λ 0.3 = = 0.075 ; c = 2 ; m = 20 µ 4
1
n

22 C (0.075) + ∑ 2! n =0
1 n 20

⎛ 0.075 ⎞ ∑A ⎜ 2 ⎟ ⎝ ⎠ n=2
20 n 20

n

= 0.18756

2 ⎡ 2 ⋅ 0.075 + 2 − 20 ⋅ 0.075 1 n 2(0.075)1 C 20 ⎤ M [N (t )] = p 0 ⎢ C 20 (0.075) n + ⎥+ ∑ 0.075 ⋅ 1.075 1.075 n =0 ⎦ ⎣ 20 ⋅ 0.075 − 2 + = 2.08595 0.075 1 2 ⎤ ⎡ ⎤ ⎡ n 2 − 2⎥ ⋅ ⎢1 − p 0 ∑ C 20 (0.075) n ⎥ + + 2(0.075)1 C 20 p0 = 0.74239 M [ L2 ] = ⎢20 − 0.075 ⎣ ⎦ ⎣ n =0 ⎦

M [n s ] = M [ N (t )] − M [ L2 ] = 1.34355 M [WT ] = M [L2 ] = 0.13814 = 8 min 17 s 4 ⋅ M [ ns ] 1 = 0.38814 = 23 min 17 s . 4

M [W ] = M [WT ] +

Rezolvăm modelul de mai sus şi cu Management Scientist. După lansarea pachetului de programe selectăm modulul Waiting Lines, apoi modelul Poisson Arrivals/Exponential Service (Finite Pop.) şi introducem datele ca în Figura 8.5. După apăsarea butonului Solve obţinem rezultatele din Tabelul 8.4 care coincid cu cele determinate anterior.

8. Elemente de teoria aşteptării

185

Figura 8.5 Tabelul 8.4
WAITING LINES ************* NUMBER OF CHANNELS = 2 POISSON ARRIVALS WITH MEAN RATE = 0.3 EXPONENTIAL SERVICE TIMES WITH MEAN RATE = 4 PER CHANNEL FINITE CALLING POPULATION OF SIZE = 20 OPERATING CHARACTERISTICS ------------------------THE PROBABILITY OF NO UNITS IN THE SYSTEM 0.1876 THE AVERAGE NUMBER OF UNITS IN THE WAITING LINE 0.7424 THE AVERAGE NUMBER OF UNITS IN THE SYSTEM 2.0859 THE AVERAGE TIME A UNIT SPENDS IN THE WAITING LINE 0.1381 THE AVERAGE TIME A UNIT SPENDS IN THE SYSTEM 0.3881 THE PROBABILITY THAT AN ARRIVING UNIT HAS TO WAIT 0.5311 Number of Units in the System Probability --------------------------------------0 0.1876 1 0.2813 2 0.2005 3 0.1353 4 0.0863 5 0.0518 6 0.0291 7 0.0153 8 0.0075 9 0.0034 10 0.0014 11 0.0005 12 0.0002 13 0.0001 14 0.0000

8.7. Simulare
Modelele matematice corespunzătoare sistemelor reale sunt folosite pentru a analiza rezultatele deciziilor înainte de implementare. Simularea nu determină soluţia optimă a modelului matematic, ci compară rezultatele mai multor alternative predefinite cu scopul de a o reţine pe cea mai avantajoasă. Modelul de simulare urmăreşte evoluţia în timp a sistemului real şi ţine seamă şi de factorul aleatoriu. În situaţia în care modelul matematic poate fi rezolvat analitic, această metodă este preferabilă simulării, deoarece se obţine soluţia optimă. Simularea se foloseşte în

186

Modele şi algoritmi de optimizare

cazurile în care rezolvarea analitică a modelului matematic este imposibilă sau destul de dificilă.
Simulare probabilistă Vom ilustra această metodă printr-un exemplu de model de aşteptare adaptat după Bonini et al. (1997). Considerăm un depozit care are o rampă de descărcare a vagoanelor. Vagoanele sosesc noaptea şi descărcarea unui vagon durează o jumătate de zi. Dacă sunt mai mult de două vagoane la rând pentru descărcare, atunci unele dintre ele rămân să fie descărcate în ziua următoare. S-a constatat că numărul de vagoane care sosesc noaptea urmează repartiţia din Tabelul 8.5 şi este independent de numărul de vagoane sosite în oricare altă noapte.
Tabel 8.5 Nr. vagoane Probabilitatea 0 0.23 1 0.30 2 0.30 3 0.10 4 0.05 5 0.02 cel puţin 6 0.00

Numărul mediu de sosiri pe noapte este de 1.5 vagoane. Suntem în cazul unui model de aşteptare cu o singură staţie de servire, FIFO, coadă infinită, cu rata serviciilor µ=2 şi rata sosirilor λ=1.5 . Se poate arăta că sosirile nu sunt poissoniene şi din acest motiv nu se poate aplica nici unul din modelele clasice. În vederea simulării avem nevoie de un eşantion de sosiri aleatoare pentru un număr de nopţi. Pentru aceasta se poate folosi o tabelă de numere aleatoare sau un generator de astfel de numere. Vom folosi generatorul de numere aleatoare din Microsoft Excel pentru a genera numere uniform repartizate între 0 şi 99, pe care le vom asocia cu un număr de sosiri ca în Tabelul 8.6.
Tabelul 8.6 Număr aleatoriu generat 0-22 23-52 53-82 83-92 93-97 98-199

Număr de sosiri 0 1 2 3 4 5

Frecvenţa relativă 0.23 0.30 0.30 0.10 0.05 0.02

Vom considera comportarea sistemului de aşteptare pe o perioadă de 30 zile. Pentru că simularea începe fără vagoane la descărcare, este necesară o perioadă de

8. Elemente de teoria aşteptării

187

iniţializare (o considerăm de 5 zile) pentru ca sistemul să se apropie de o situaţie normală. Au fost generate 35 de numere, care sunt trecute în Tabelul 8.7, împreună cu rezultatele simulării.
Tabelul 8.7. Număr Total de sosiri descărcat 5 0 0 0 0 0 2 2 3 3 0 1 1 0 1 1 3 2 2 1 2 2 1 1 4 0 0 4 1 0 1 0 2 3 0 2 1 2 0 2 40 1,33 1 1 1 0 1 1 3 3 3 2 2 2 1 1 4 2 0 4 3 1 1 0 2 3 1 2 1 2 0 2

Ziua x x x x x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Număr aleatoriu 99 6 15 62 86 12 39 39 16 24 45 88 81 53 26 56 77 31 34 94 11 15 92 38 14 36 9 56 84 12 79 25 81 1 65 Total Media

Amânate 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 2 0 0 2 1 0 0 0 0 1 0 0 0 0 0 0 9 0,3

Descărcate 0 0 0 2 2 1 1 1 0 1 1 2 2 2 2 2 2 1 1 2 2 0 2 2 1 1 0 2 2 1 2 1 2 0 2 41 1,36

188

Modele şi algoritmi de optimizare

Observăm că a fost descărcat şi un vagon în plus faţă de cele sosite în cele 30 de zile care constituie perioada de simulare, deoarece atunci când începem simularea pentru 30 de zile mai era un vagon de descărcat. Cunoscând care este penalizarea pentru amânarea descărcării unui vagon, se poate calcula pierderea cauzată pe perioada simulată. Se pot reface calculele pentru o capacitate de descărcare sporită, de exemplu 3 vagoane pe zi, şi se compară pierderea cauzată de vagoanele amânate, putând decide care este cea mai avantajoasă configuraţie pentru acest sistem de aşteptare. Rolul simulării manuale este de a înţelege în ce constă simularea unui model de aşteptare, urmând ca pentru un eşantion mare să se folosească simularea cu calculatorul. Există multe pachete de programe specializate în simulare, de exemplu SIMUL8 care are o interfaţă grafică atrăgătoare şi se pot realiza destul de comod simulări pentru modele de aşteptare. Se poate folosi şi EXCEL pentru realizarea simulării modelelor de aşteptare sau de stocuri.

8.8. Probleme propuse

1. La un magazin de decoraţiuni interioare sosesc în medie 80 de clienţi pe oră, iar solicitările unui client sunt satisfăcute în medie într-un minut şi jumătate. Analizând statistic datele culese la acest sistem de aşteptare, s-a constatat că sosirile clienţilor sunt poissoniene, iar serviciile, exponenţiale. Să se determine: a) intervalul mediu dintre două sosiri consecutive b) numărul mediu de persoane servite pe oră c) probabilitatea ca într-un interval de 3 minute să nu soseacă nici un client d) numărul vânzătorilor necesari pentru a se evita algomerarea.

R. Se consideră unitatea de timp minutul şi atunci, numărul mediu de sosiri într-un 80 minut este λ = = 1.333 . 60 1 60 = = 0.75 minute. a) Intervalul mediu dintre două sosiri consecutive este de λ 80 60 = 40 . b) Numărul mediu de persoane ce pot fi servite pe oră este de µ = 1 .5 (3 ⋅ 0.75) 0 (λt ) n , rezultă că P0 (3) = e −3⋅0.75 = 0.1054 . c) Deoarece Pn (t ) = e −λt 0! n! d) Dacă sistemul de aşteptare are o singură staţie de servire (un singur vânzător), λ 80 ρ= = = 2 > 1 şi se creează aglomeraţie. Considerând sistemul cu mai multe µ 40

staţii

~ ρ=

ρ
c

<1

şi alegem c ca fiind cel mai mic întreg pentru care este

8. Elemente de teoria aşteptării

189

satisfăcută această inegalitate. Obţinem c=2. Ca să nu se creeze aglomeraţie, este nevoie de 2 vânzători.
2. La ieşirea dintr-o staţie de betoane, sosesc pentru a li se spăla roţile în medie 15 autobasculante pe oră. Dacă repartiţia sosirii autobasculantelor pentru a li se spăla roţile este poissoniană, să se determine timpul maxim în care, cu probabilitatea de cel puţin 0.95, cel mult 3 autobasculante aşteaptă să li se spele roţile.

R. În următoarea secvenţă MathCAD, care rezolvă această problemă, se consideră unitatea de timp minutul.
Media sosirilor
λ :=
15 60

Probabilitatea ca in intervalul de timp t sa soseasca n autobasculante numărul zilelor lucrătoare din an
P( n , t) := e
− λ ⋅ t ( λ⋅ t ) n

n!

f( t) :=

n =0

3

P( n , t)

f(0)=1

f(1)=0.99987

f(2)=0.99825 f(6)=0.934

f(3)=0.99271

f(4)=0.98101

f(5)=0.96173

În maximum 5 minute, cu probabilitatea 0.95, cel mult 3 autobasculante vor aştepta să li se spele roţile.
3. La o staţie de betoane sosesc bene care sunt încărcate şi părăsesc imediat staţia. S-a constatat că la intervale de o oră pe o perioadă de o săptămână benele au sosit conform cu Tabelul 8.8 . În aceeaşi perioadă s-au notat şi timpii de încărcare a benelor, iar rezultatele sunt trecute în Tabelul 8.9 .
Tabelul 8.8 1 2 23 24 Tabelul 8.9 2 2 0 5 1 1 9 4 8 0 0 8 5 2 9 0 0

Nr bene sosite/ora (xi) Frecvenţa (Ni)

0 8

3 21

4 14

5 6

6 3

7 1

Minute/benă (tj) Frecvenţa(Nj) 6 5 4

5 5 0 7 0 2

1 0 3 4 7 5 0

1 5 2 9

3 0 1 3 9 5 0

3 5 8 10 0 0

4 0 6

4 5 4 10 5 0

5 0 6 11 0 2

5 5 3 11 5 0

6 0 3 12 0 1

Minute/benă (tj) Frecvenţa(Nj)

a) Să se testeze că sosirile la staţia de betoane sunt repartizate Poisson.

190

Modele şi algoritmi de optimizare

b) Să se testeze că timpii de servire sunt repartizaţi exponenţial. c) Să se determine numărul mediu de bene din sistemul de aşteptare care este dat de staţia de betoane. d) Să se determine numărul mediu de bene care aşteaptă să fie încărcate. e) Să se determine timpul mediu de aşteptare la rând pentru a fi încărcate benele. f) Să se determine timpul mediu petrecut de o benă în sistemul de aşteptare dat de staţia de betoane. g) Să se determine numărul punctelor de încărcare necesare pentru a evita aglomerarea în perioada de vârf.
Rezolvare a) Vom folosi testul χ 2 pentru a verifica ipoteza H0 : „Sosirile sunt repartizate

Po(λ)” , cu λ =
N i′ = N i e

∑x N
i =1 8 i

8

i

∑N
i =1

= 2.45 . Determinăm statistica

χc2 = ∑
i =1

8

( N i − N i′ ) 2 , Ni

i 2

unde

− λxi

, (∀)i = 1,8 . Obţinem χ c = 0.52657 . Din tabela repartiţiei

găsim, pentru pragul α = 0.05 şi numărul gradelor de libertate, l = (8 − 1) − 1 = 6 (deoarece avem un parametru media sosirilor), λ,

χ2

χ 02.05; 6 = 12.592 . Cum

χ c2 < χ 02.05; 6

admitem ipoteza

H0

cu pragul de

semnificaţie 0.05 ; b) Vom folosi testul Kolmogorov pentru a verifica ipoteza H0: „Timpii de servire sunt repartizaţi Exp(µ)”. Pentru aceasta calculăm un estimator pentru media timpilor de servire t=

∑ (t
i =1

24

i

− 2.5) N i
24

∑ Ni
i =1

= 19.5

minute (am considerat mijlocul

intervalului de referinţă). Atunci Fi = 1 − e
−0.05128 t i

µ = 0.05128 . Calculăm funcţia de repartiţie
Fei =

∑N
j =1 24

i

j

teoretică

, funcţia de repartiţie empirică

∑N
j =1

,
j

(∀) i = 1,24
semnificaţie

şi determinăm

d = max Fi − Fei = 0.0283 . Pentru pragul de
1≤i ≤ 24

α = 0.01 , în tabela funcţiei
u
23

K (u ) (testul asimptotic al lui
= 0.33272 se admite ipoteza H0

Kolmogorov) găsim u=1.63 . Deoarece d <

cu pragul de semnificaţie α = 0.01 ; c) Numărul benelor servite într-o oră 60 ⋅ 0.5128 = 3.0768 . Suntem în cazul modelului Po(2.45)/Exp(3.07)/1:(∞,FIFO) şi atunci M[N(t)]=3.9;

8. Elemente de teoria aşteptării

191

d) M[L1]=3.11 ; e) M[WT]=3.7 min ; f) M[W]=23.24 min ; λ 2.45 g) ρ = = < 1 şi astfel este suficient un singur punct de încărcare. µ 3.07

4. La o carieră, care are un singur utilaj de încărcare a autobasculantelor, sosesc în medie 15 autobasculante pe oră. În medie, utilajul poate să încarce 20 autobasculante pe oră. Din analiza statistică a datelor culese la faţă locului s-a constatat că sosirile sunt poissoniene, iar servirile, exponenţiale. Să se determine: a) probabilitatea ca o autobasculantă să nu aştepte pentru a fi încărcată b) numărul mediu de autobasculante din sistemul de aşteptare creat la carieră c) numărul mediu de autobasculante din şirul de aşteptare d) timpul mediu de aşteptare al unei autobasculante în sistemul de aşteptare e) timpul mediu de aşteptare al unei autobasculante în şirul de aşteptare pentru a fi încărcată f) probabilitatea ca în sistemul de aşteptare să existe mai mult de 2 autobasculante g) probabilitatea ca autobasculanta să aştepte la rând să fie încărcată mai mult de două minute.

R. Se consideră unitatea de timp minutul. Modelul corespunzător acestei probleme 3 este Po(λ)/Exp(µ)/1:(∞,FIFO) cu λ=10, µ=20 şi ρ = . 4 a) p0=0.25, b) M[N(t)]=3, c) M[L1]=2.25, d) M[WT]=0.15 min, e) M[W]=0.2 min, f) P(N(t)>2)=1-p0-p1-p2=1-0.25-0.1875-0.1406=0.4219, g) P(M[WT]>2)=0.0067 (extrem de rar se întâmplă ca autobasculanta să aştepte mai mult de 2 minute la rând pentru a fi încărcată!).
5. La o cantină a unei firme de construcţii, cu autoservire, cu un singur ghişeu, sosesc salariaţii la masă după legea Poisson cu rata 0.75 salariat/minut. Un funcţionar ia comanda, stabileşte preţul şi încasează contravaloarea comenzii. Până i se pregăteşte meniul, funcţionarul ia comanda următorului client aşezat la rând. S-a constatat că timpul mediu de servire este de 1 min/salariat. Se apreciază că în medie cei ce aşteaptă să ia masa sunt plătiţi cu 10 u.m./oră, iar funcţionarul de la ghiseu cu 7 u.m./oră. Conducerea firmei este interesată să cunoască: a) probabilitatea ca nici un salariat să nu fie în cantină, b) numărul mediu de salariaţi aşteptând să dea comanda, c) timpul mediu petrecut la rând de un salariat, aşteptând să dea comanda, d) probabilitatea ca un salariat care vine în cantină să aştepte să dea comanda şi e) costul orar al serviciului în cantină.

R. a) p0=0.25 , b) 2.25 , c) 3min , d) 0.75 , e) 37 u.m.
6. Proprietarul unui service auto doreşte să înfiinţeze propria spălătorie auto, astfel ca în atelierul de reparaţii să intre autoturismele care au fost spălate. Ştiind că sosirile autoturismelor pentru service care trebuie şi spălate sunt poissoniene, cu rata medie de 3 autoturisme pe oră, iar un muncitor are nevoie în medie de 20 de

192

Modele şi algoritmi de optimizare

minute pentru spălarea unui autoturism şi probabilitatea de aşteptare pentru spălare să nu depăşească 0.2, câţi muncitori pentru spălarea autoturismelor ar trebui angajaţi?

R. Trebuie ca P(N[t]>c)<0.2 , adică 1 − P ( N [t ] ≤ c) < 0.2 . Deoarece λ = 3 şi 60 λ µ= = 3 , atunci ρ = = 1 şi astfel sunt necesari cel puţin 2 muncitori, c=2. 20 µ Este cazul modelului Po(λ)/Exp(µ)/c:( ∞, FIFO). Luând pentru început c=2, obţinem P(N[t]>c)=1–(p0+p1)=1–(0.3333+0.3333+1.6667)=0.1666<0.2 Aşadar, ar trebui angajaţi 2 muncitori.
7. La o secţie de poliţie de constatări accidente uşoare sosesc în medie 15 automobile pe oră, repartiţia sosirilor fiind poissoniană. Într-o oră, un poliţist constatator întocmeşte actele pentru 6 automobile, iar timpul necesar acestei operaţii este repartizat exponenţial. Secţia are rezervate 5 locuri de parcare, iar dacă sunt ocupate aceste locuri, celelalte automobile parchează în alte locuri din vecinătate. Să se determine: a) numărul poliţiştilor necesari pentru a se evita supraaglomerarea b) probabilitatea ca la secţie să nu fie automobile pentru constatare c) probabilitatea ca să fie automobile parcate în alte locuri decât cele ale secţiei d) numărul mediu de automobile care aşteaptă începerea întocmirii actelor e) timpul mediu de aşteptare la rând până când un poliţist vine să înceapă constatarea.

R. λ=15 automobile/oră , µ=6 automobile/oră, ρ =
singur poliţist ar fi supraaglomerare. a) Alegem numărul c de poliţişti astfel încât aşteptare devine Po(λ)/Exp(µ)/3:( ∞, FIFO) ; b) p0=0.0449;
5

λ 15 = = 2.5 > 1 şi dacă ar fi un µ 6
< 1 , adică c=3 . Modelul de

ρ
c

c)

P (n > 5) = 1 − P (n ≤ 5) = 1 − ∑ p i =
i =0

= 1 − (0.0449 + 0.1124 + 0.1404 + 0.1170 + 0.0975 + 0.0813) = 0.4065 d) M[L3]=3.5112 automobile ; e) M[WT]=14 minute .
8. Un depozit închiriază de la o firmă de transporturi 4 camioane pentru a se aproviziona sau pentru a transporta marfa la clienţi. Depozitul are 2 rampe de încărcare/descărcare care încarcă/descarcă un camion în medie în 20 minute. La depozit sosesc în medie 4 camioane pe oră. S-a constatat că intervalele dintre sosiri şi timpii de încărcare au repartiţia exponenţială. Să se determine: a) probabilitatea ca ambele rampe să fie libere b) numărul mediu de camioane de la depozit c) probabilitatea ca un camion care vine la depozit să aştepte intrarea la rampă

8. Elemente de teoria aşteptării

193

d) ştiind că pentru o oră chiria pentru un camion este de 20 u.m., care este suma medie orară plătită pentru nefolosirea unui camion?

R. a) p0=0.0246 , b) M[N(t)]=2.6351 , c) P(M[N(t)]>2)=1-(p0+p1+p2)=0.5823 , d) S = M [WT ] ⋅ 20 = 2.986 u.m.
9. La o dană din port, proprietatea unei companii petroliere, sosesc pentru descărcare tancuri petroliere la intervale de timp repartizate exponenţial, cu media 1.4 zile. Timpul mediu necesar descărcării este de asemenea presupus repartizat exponenţial, cu media 0.8 zile. Să se determine: a) numărul mediu de tancuri petroliere care aşteaptă la rând pentru descărcare b) timpul mediu de aşteptare în port înainte de a începe descărcarea c) timpul mediu de aşteptare în port din momentul sosirii şi până la plecarea tancului petrolier d) dacă se închiriază o dană cu 1500 u.m./zi, la care se lucrează la fel ca la prima şi dacă tancurile petroliere se duc la dana liberă pentru descărcare, în ordinea sosirii lor, care este timpul mediu de aşteptare până la începerea descărcării e) în condiţiile de la d) care este numărul mediu de tancuri petroliere care aşteaptă la rând pentru descărcare f) este avantajoasă închirierea celei de-a doua dane dacă pentru fiecare zi pe care tancul petrolier o petrece la rând aşteptând pentru descărcare compania pierde 4000 u.m. ?

R. a) M[L1]=7.4098 ; b) M[WT]=10.3779 ; c) M[W]=11.6279 ; d) M[WT]=0.3108 ; e) M[L2]=0.2219 ; f) Pierderea pentru primul caz 4000 ⋅ M [ L1 ] = 41511.6 , iar pentru cel de-al doilea caz 4000 ⋅ M [ L2 ] + 1500 = 2387.6 . Da.
10. O firmă are 30 de instalaţii de aer condiţionat şi frigidere şi pentru întreţinerea lor a angajat 2 specialişti. Ştiind că solicitările pentru intervenţii sosesc în medie una pe zi şi sunt repartizate Poisson, iar un specialist reuşeşte să depaneze un aparat (aer condiţionat sau frigider) în medie în 20 minute, timpul necesar depanării fiind repartizat exponenţial, să se determine: a) numărul mediu de aparate care aşteaptă să fie depanate b) numărul mediu de aparate care nu funcţionează la un moment dat c) probabilitatea ca să nu aibă de lucru cei doi specialişti d) timpul mediu de aşteptare până când un specialist începe depanarea unui aparat e) timpul mediu de nefuncţionare a unui aparat

R. a) M[L2]=0.5037 , b) M[N(t)]=1.6836 , c) p0=0.2524 , d) 8 min 32 s , e) 28 min 32 s .

9. ELEMENTE DE TEORIA STOCURILOR

9.1. Introducere în teoria stocurilor 9.1.1. Punerea problemei
În desfăşurarea unei activităţi de producţie intervin valori materiale care intră în procesul de prelucrare (materii prime, fonduri băneşti etc.) şi valori care rezultă în urma acestui proces (produse finite). Pentru ca procesul de producţie într-o întreprindere să se desfăşoare neîntrerupt, este necesar ca întreprinderea să dispună de un stoc de materiale care să poată alimenta în mod sistematic producţia. Există astfel o cerere din stocul de materiale care vine din partea producţiei. Întreprinderea trebuie să investească o sumă de bani în aceste materiale pentru a fi capabilă să satisfacă necesităţile procesului de producţie. Imobilizarea unor sume mari de bani în stocurile de materiale poate să conducă la pierderi pentru întreprindere. Pe de altă parte, dacă investiţia în stocul de materiale va fi mică, adică, stocul este subdimensionat, vor exista perioade când procesul de producţie încetează şi întreprinderea înregistrează din nou pierderi datorate nefolosirii maşinilor şi utilajelor în procesul de producţie. Apare astfel necesitatea dimensionării optime a stocurilor de materii prime şi materiale astfel încât costurile care rezultă din imobilizarea fondurilor sau neutilizarea resurselor să fie minime. Problemele care constau în dimensionarea optimă a stocurilor de materii prime şi materiale se numesc probleme de stoc aprovizionare. Produsele rezultate din procesul de producţie sunt cerute în afara întreprinderii în diferite cantităţi care variază în timp. Pentru ca întreprinderea să poată asigura întotdeauna satisfacerea cererii pe un interval de timp dat, este necesar să se realizeze un stoc de produse rezultate în urma procesului de producţie. Dacă întreprinderea menţine un stoc prea mare de produse, poate apărea o pierdere, constând din imobilizarea fondurilor băneşti investite în aceste produse, precum şi în eventuala depreciere a produselor sau recondiţionarea lor periodică. Dacă stocul nu ar putea să satisfacă cererea înregistrată de întreprindere pe o perioadă de timp, ar apărea din nou pierderi datorate penalizărilor plătite, pentru nesatisfacerea comenzilor.

9. Elemente de teoria stocurilor

195

Se pune din nou problema dimensionării optime a stocului astfel încât pierderile datorate imobilizării valorilor în stoc, precum şi pierderile rezultate din nesatisfacerea cererilor (penalizările) să fie minime. Problemele care constau în dimensionarea optimă a stocului de produse rezultate din procesul de producţie se numesc probleme de stoc producţie (Văduva et al, II, 1974).

9.1.2. Concepte utilizate în teoria stocurilor
Rezolvarea problemelor legate de determinarea stocurilor optime se face cu ajutorul unor modele matematice ale teoriei stocurilor. Stocul sau inventarul este o resursă de orice fel care are o valoare economică şi care se caracterizează prin intrări în resursă (reaprovizionarea stocului) şi ieşiri din resursă. Valoarea resursei I = I (t) este o funcţie de timp. Scopul menţinerii unui stoc este acela de a satisface o cerere. În urma satisfacerii cererii stocul se micşorează şi, de aici, nevoia reaprovizionării lui. Fie a(t), rata intrărilor în resursă la momentul t şi b(t), rata ieşirilor din resursă, iar r(t), rata cererii la momentul t. Cererea nu se confundă întotdeauna cu ieşirea, deoarece există situaţii în care materialele din stoc se depreciază în timp şi atunci la ieşirea din stoc la cerere se adaugă şi materialele depreciate în acel interval de timp. De cele mai multe ori însă b(t) = r(t) . Fie I(0) = I0, nivelul stocului la momentul t = 0, considerat momentul iniţial de la care se urmăreşte evoluţia stocului. Variaţia stocului este dată de relaţia

I (t ) = I 0 + ∫ (a (t ) − b(t ) )dt .
0

t

Ieşirile din stoc, b(t), şi/sau cererea, r(t), pot fi deterministe sau aleatoare, iar funcţia a(t) trebuie aleasă astfel încât să se realizeze un obiectiv sau o eficienţă dorită. Eficienţa se defineşte în funcţie de costuri şi acestea pot fi: • costul de depozitare, ce rezultă din imobilizarea fondurilor băneşti în materii prime sau produse (cheltuieli de producţie) şi din cheltuielile pentru asigurarea depozitării şi conservării stocului, • costul de lansare, care rezultă din cheltuielile pentru lansarea comenzilor de reaprovizionare şi introducerea lor în stoc sau lansarea fabricaţiei, • costul lipsei de stoc, care se determină în funcţie de toate cheltuielile şi pierderile cauzate de lipsa din stoc a materiilor prime sau produselor (inclusiv penalizările rezultate din nelivrarea la timp a produselor fabricate). Eficienţa unui stoc de-a lungul unui interval de timp este dată de o funcţională de forma

196

Modele şi algoritmi de optimizare

C(t) = C[a(t), b(t), r(t)]. În general, r(t) este o funcţie cunoscută şi uneori se cunoaşte şi funcţia b(t). În acest caz, trebuie determinată funcţia a(t) astfel încât eficienţa să fie optimă. Dacă C este o variabilă aleatoare, atunci se determină funcţiile necunoscute din condiţia ca valoarea medie a lui C să fie optimă. Pentru determinarea optimului lui C pot să intervină uneori şi anumite restricţii legate de elementele necunoscute.
În modelele de teoria stocurilor intervin şi variabile sau parametri legate în special de mecanismul reaprovizionării, adică de mecanismul intrărilor în stoc. Din motive practice, se presupune că intrarea în stoc, reaprovizionarea, se face la momente discrete de timp. Astfel, a(t) ia valori nenule numai la anumite momente de timp t0 < t1 < t2 < ... . Intervalele de timp Ti = ti+1 − ti, i = 0, 1, 2, ..., se numesc cicluri de reaprovizionare. Într-un interval de timp [0,T*] pot avea loc mai multe reaprovizionări.
I(t) S a(t1) P T0 t0 L t1 T1 t2 Figura 9.1 T2 t3 T3 t’ T* t a(t2) a(t3)

În Figura 9.1, variaţia stocului este reprezentată prin segmentele oblice, rata cererii fiind presupusă constantă. Se observă că pe intervalul de timp (t’, T *) există lipsă de stoc. Cantităţile a(ti) reprezintă valorile comenzilor care intră în stoc la momentele ti, iar între aceste momente de timp au loc numai ieşiri din stoc, care micşorează nivelul stocului. În diferite modele ale teoriei stocurilor, ciclurile de reaprovizionare Ti, i = 0, 1, 2, ..., pot fi egale sau nu, pot fi constante sau aleatoare. În ceea ce priveşte mărimea loturilor de reaprovizionare a(ti), acestea pot fi egale sau nu, pot depinde sau nu de Ti. În unele modele ale teoriei stocurilor din optimizarea funcţiei de eficienţă se poate deduce ciclul optim de reaprovizionare, Topt. Aşadar, modelele de teoria stocurilor determină mărimea lotului de reaprovizionare optim, aopt, şi/sau ciclul de reaprovizionare optim, Topt. Reaprovizionarea la anumite momente de timp impune utilizarea şi a altor variabile care au importanţă practică.

9. Elemente de teoria stocurilor

197

Astfel, lotul de reaprovizionare optim nu intră în stoc în momentul când a fost lansat, ci după un interval de timp L, numit timp de avans. Comanda a(t1) a fost lansată la momentul t1 − L, când stocul avea valoarea P0 = I(t1 − L). Mărimea P0 se numeşte nivel de reaprovizionare şi se observă că ea este strâns legată de timpul de avans L, în sensul că stocul P0 poate satisface cererea pe perioada timpului de avans L. În unele modele, L este presupus variabilă aleatoare, iar P0 este constant sau variabil. Mărimile L şi P0 pot fi presupuse cunoscute sau pot fi variabile de decizie, care trebuie alese de decident în vederea realizării eficienţei optime. De obicei se cunoaşte una dintre aceste mărimi, cealaltă urmând a fi determinată cu ajutorul modelului de stocare. Intervalul de control este intervalul de timp dintre două lansări de comenzi succesive. Momentul lansării comenzii este momentul când nivelul stocului scade la nivelul de reaprovizionare P0. Uneori, drept variabilă de decizie se consideră şi nivelul S până la care trebuie încărcat stocul prin introducerea comenzii (nivelul maxim al stocului). Totalitatea elementelor care definesc mecanismul de reaprovizionare formează o politică de reaprovizionare. Aceasta constă din: • loturile de reaprovizionare, • ciclurile de reaprovizionare, • nivelul de reaprovizionare, • timpul de avans. Politica este optimă dacă elementele ce o caracterizează au fost determinate ca elemente ce realizează eficienţa optimă pe un interval de timp dat. Modelele de teoria stocurilor se pot clasifica după mai multe criterii. 1. După modul cum evoluează în timp − modele dinamice, − modele statice. 2. După natura aleatoare sau nu a elementelor sale − modele stochastice, − modele deterministe. 3. După valorile posibile ale unor variabile (de exemplu, cererea) − modele cu cerere continuă, − modele cu cerere discretă. 4. După numărul de stocuri de materiale distincte (se mai numesc şi staţii) – criteriu topologic − modele de stocare cu o singură staţie – stocarea unui singur tip de material, produs etc., − modele de stocare cu mai multe staţii – stocarea mai multor tipuri de materiale, produse etc.

198

Modele şi algoritmi de optimizare

Modelele de teoria stocurilor se aseamănă cu cele de teoria cozilor. Sosirile din cadrul teoriei aşteptării corespund intrărilor în stoc, iar ieşirile corespund ieşirilor din stoc. Deosebirea dintre cele două tipuri de modele constă în aceea că, în timp ce în teoria aşteptării se presupune că venirile şi serviciile sunt variabile aleatoare cunoscute, în teoria stocurilor se cunoaşte numai cererea sau ieşirea şi se caută să se determine intrarea optimă. Aplicarea modelelor de teoria aşteptării în teoria stocurilor este posibilă numai atunci când variabila I(t) este o variabilă discretă. Pentru modelele ce vor fi prezentate în continuare se fac următoarele ipoteze. 1. Ipoteze referitoare la mecanismul de intrare/ieşire a) Cererea este continuă, are rata r=const. şi poate fi satisfăcută dacă nivelul curent al stocului I(t) > 0. b) Intrările se realizează la intervale de timp T, constante sau nu. Între lansarea comenzii şi sosirea ei (nu) există un interval L de timp, timpul de avans. c) Momentul lansării unei noi comenzi este semnalat de nivelul critic P0, nivel de reaprovizionare. d) În perioada T intră o cantitate a cu rata constantă p – ritmul de reaprovizionare. e) Parametrii P0, a, T sunt constanţi (modele statice). f) Procesul de reaprovizionare continuă nedefinit. 2. Ipoteze privind costurile, pe baza cărora se poate defini eficienţa a) Costul s de lansare a comenzii este constant. b) Preţul ca de cumpărare a unei unităţi de materie primă sau produs poate depinde de a. c) Pentru I(t) > 0, există un cost de stocare, h, pentru unitatea de produs / unitatea de timp. d) Pentru I(t) < 0, există un cost al lipsei de stoc, d, pentru unitatea de produs / unitatea de timp. Problemele generale care se pun şi trebuie rezolvate de modelele de stocuri sunt: • determinarea valorilor optime pentru a şi T astfel încât costul total unitar pe unitatea de timp să fie optim, • determinarea nivelului de reaprovizionare P0 astfel încât costul total unitar pe unitatea de timp să fie optim, • nivelul maxim al stocului, • nivelul mediu al stocului, • numărul optim de cereri de reaprovizionare a stocului într-un an.

9. Elemente de teoria stocurilor

199

9.2. Modelul clasic al lotului economic
Parametrii cunoscuţi: − intrările au loc în mod continuu cu rata p – constantă, − ieşirile au loc în mod continuu cu rata r – constantă; p > r, − costul de stocare h este constant pe unitatea de stoc / unitatea de timp, − costul de lansare a comenzii a este s = constant, − L = 0. Parametrii necunoscuţi: − cantitatea comandată a (mărimea lotului de reaprovizionare), − mărimea ciclului de reaprovizionare T. Ipoteze: − nu se admite lipsa de stoc, − nu există stoc de rezervă sau stoc intangibil, I0 = 0. Construcţia modelului (determinarea funcţiei obiectiv)
Figura 9.2 ilustrează comportarea stocului pe durata unui ciclu de reaprovizionare. a Din ipotezele modelului rezultă că funcţia I(t) este periodică cu perioada T = . r a⎞ ⎛ Este suficient să rezolvăm problema de optim pe intervalul ⎜ 0, ⎟ . ⎝ r⎠ ⎛ a⎞ a Întreaga cantitate a va intra în stoc până la momentul , şi în intervalul ⎜ 0, ⎟ , ⎜ p⎟ p ⎝ ⎠

⎛ a a⎞ I(t) va creşte, iar în intervalul ⎜ , ⎟ , I(t) descreşte. ⎜p r⎟ ⎝ ⎠
I(t)

a I(t) = (p − r) t I(t) = a − rt

0

a p

T=

a r

t

Astfel,

Figura 9.2

200

Modele şi algoritmi de optimizare

⎧ ⎛ a⎞ ⎪( p − r )t , t ∈ ⎜ 0, ⎟ ⎜ p⎟ ⎪ ⎝ ⎠ I (t ) = ⎨ ⎛ a a⎞ ⎪ a − rt , t ∈ ⎜ , ⎟ ⎜p r⎟ ⎪ ⎝ ⎠ ⎩ Costul total pe perioada T este CT = Ch,T + s, unde Ch,T este costul de stocare, dat de
⎡ ( p − r) a2 ⎛ 1 1 ⎞ ra 2 ⎛ 1 1 ⎞⎤ ha 2 ( p − r ) ⎜ 2 − 2 ⎟⎥ = ⋅ 2 + a2 ⎜ − ⎟ − . C h ,T = h ∫ I (t )dt = h ⎢ ⎜r p⎟ p 2 ⎜r p ⎟⎦ 2 pr ⎝ ⎝ ⎠ ⎠ 0 ⎣ 2 Costul total de stocare şi de lansare pe unitatea de timp este C h , T ⎡ ha 2 ( p − r ) ⎤ r ha ( p − r ) rs =⎢ + s⎥ ⋅ = + . C (a) = 2 pr 2p T a ⎣ ⎦ a Figura 9.3 reprezintă costul total, costul de păstrare şi costul de lansare, abscisa punctului de intersecţie a ultimelor două constituind mărimea optimă a comenzii (Q reprezintă cantitatea necesară pe un întreg an).
Costurile total, de lansare, dede păstrare totale, de lansare, pastrare
a r

CT ( Q , a , s , h) CL( Q , a , s) Ch( Q , a , h)

a marimea comenzii mărimea comenzii

Figura 9.3

Rezolvarea modelului

9. Elemente de teoria stocurilor

201

Costul minim îl obţinem din relaţia C’(a) = 0 (deoarece C”(aopt)>0, rezultă că aopt determinat realizează minimul pentru C(a) ), de unde rezultă cantitatea optimă de reaprovizionare: h( p − r ) rs 2 prs − 2 = 0 ⇒ a opt = . 2p h( p − r ) a Costul minim pe unitatea de timp este

C opt =

2 prs h 2 ( p − r)2 ⋅ + 2 h( p − r ) 4p

2hrs ( p − r ) r 2 s 2 h( p − r ) = . 2 prs p

Astfel, avem costul unitar optim şi intervalul de reaprovizionare optim date de relaţiile 2hrs ( p − r ) 2 ps C opt = , Topt = . p rh( p − r ) şi numărul optim de 2 numarul numărul zilelor lucratoare din an lucrătoare din an . reaprovizionări pe an dat de Topt Se pot determina: nivelul mediu al stocului ca fiind În practică se presupune că
r ≈0, p

a opt

adică p >> r ( se consideră p = ∞), r ceea ce revine la a accepta că =0 p (Figura 9.4). Costul de stocare pe unitatea de timp este C h ,T ha = T 2 şi reprezintă costul de stocare al unui a stoc mediu pe unitatea de timp. 2

I(t)

a

0

T
Figura 9.4

2T

t

Astfel, costul de stocare pe o perioadă de timp t0 este ha C h ,t 0 = t0 . 2 În acest caz − mărimea optimă a comenzii de reaprovizionare a stocului este 2rs I a opt = h − costul minim pe unitatea de timp este

(9.1)

202
I C opt = 2rsh

Modele şi algoritmi de optimizare

(9.2)

ciclul optim de reaprovizionare este 2s I Topt = hr

(9.3)

În anumite situaţii cererea este exprimată prin valoarea în bani. Se disting două cazuri (Turban şi Meredith, 1988): 1. Se dă preţul unitar al produsului. În acest caz se află numărul de produse şi astfel se ajunge la situaţia studiată mai înainte. 2. Preţul unitar nu se cunoaşte şi atunci trebuie să se dea costul de stocare ca un procent din valoarea cererii de produse. În acest caz modelul dă valoare optimă a unei cereri de reaprovizionare. Costul total anual Q a CT = h + s (9.4) a 2 Q unde Q este cantitatea (sau valoarea acesteia) necesară pe un an, iar a reprezintă numărul de comenzi de reaprovizionare lansate într-un an. Atunci 2 sQ (9.5) . a opt = h
Exemplu. O întreprindere de prefabricate primeşte o comandă de 120 000 de dale pe care trebuie să le livreze municipalităţii, pentru pavarea trotuarelor. Cererea firmei de construcţii care realizează pavarea este constantă. Costurile sunt: • h = 500 lei o dală /zi – stocarea, • s = 30 000 000 lei – lansarea unei comenzi pentru un lot de dale. În ce ritm trebuie întreprinderea de prefabricate să-şi aprovizioneze stocul dacă nu i se admite nici o întârziere în livrare ? Se consideră anul cu 300 zile lucrătoare. Rezolvare Se consideră modelul de stocare al lotului economic şi, utilizând formulele (9.1)−(9.3), se obţin rezultatele de mai jos: 120000 r= = 400 – rata ieşirilor zilnice, 300 2rs 400 ⋅ 30000000 I a opt = = 2⋅ = 6928.20 , h 500
I Topt =

2s 2 ⋅ 30000000 = 17.32 zile , = hr 500 ⋅ 400

I C opt = 2rsh = 2 ⋅ 400 ⋅ 30000000 ⋅ 500 = 3464101.61 lei/zi.

Costul total anual este 1 039 230 484.51 lei, iar costul de lansare a comenzilor de reaprovizionare pe un an este 5196×108.

9. Elemente de teoria stocurilor

203

Se poate rezolva problema din exemplul precedent cu Management Scientist. După lansarea pachetului de programe, se selectează modulul Inventory, apoi, din meniul File se alege New şi din fereastra care apare se selectează modelul Economic Order Quantity, ca în Figura 9.5.

Figura 9.5

Se introduc datele de intrare ca în Figura 9.6, având în vedere că trebuie introdus costul anual de stocare (500 lei/zi × 300 zile). Se presupune că sunt necesare 3 zile pentru a se satisface o cerere de reaprovizionare (L=3). Atunci trebuie să se determine şi nivelul optim de reaprovizionare.

Figura 9.6

Rezultatele obţinute sunt prezentate în Tabelul 9.1.
Tabelul 9.1
INVENTORY MODEL

204
*************** ECONOMIC ORDER QUANTITY ***********************

Modele şi algoritmi de optimizare

YOU HAVE INPUT THE FOLLOWING DATA: ********************************** ANNUAL DEMAND = 120000 UNITS PER YEAR ORDERING COST = $30000000 PER ORDER INVENTORY HOLDING COST = $150000 PER UNIT PER YEAR WORKING DAYS PER YEAR = 300 DAYS LEAD TIME FOR A NEW ORDER = 3 DAYS INVENTORY POLICY **************** OPTIMAL ORDER QUANTITY ANNUAL INVENTORY HOLDING COST ANNUAL ORDERING COST TOTAL ANNUAL COST MAXIMUM INVENTORY LEVEL AVERAGE INVENTORY LEVEL REORDER POINT NUMBER OF ORDERS PER YEAR CYCLE TIME (DAYS)

6,928.20 $519,615,242.27 $519,615,242.27 $1,039,230,484.54 6,928.20 3,464.10 1,200.00 17.32 17.32

Rotunjirea rezultatelor Rezultatul obţinut în urma rezolvării unui model de stocare poate să nu fie un număr întreg, ca în exemplul de mai sus (mărimea optimă a comenzii de reaprovizionare, numărul de zile ale ciclului optim de reaprovizionare). Atunci, se evaluează funcţia obiectiv pentru [aopt] şi pentru [aopt]+1 şi se reţine valoarea care dă „cea mai bună” valoare pentru costul total ( [x]=partea întreagă a lui x).

9.3. Modelul clasic al lipsei de stoc
Aşa cum arată şi numele, în acest model se acceptă lipsa de stoc, adică se păstrează cererile care nu au putut fi satisfăcute după epuizarea stocului, iar după reaprovizionare, acestea vor fi satisfăcute (Văduva et al, II, 1974). Există şi cazuri în care cererea nesatisfăcută, pe perioada epuizării stocului, se pierde. În continuare se consideră numai primul caz. Parametrii cunoscuţi: − intrările au loc în mod continuu cu rata p – constantă, − ieşirile au loc în mod continuu cu rata r – constantă, p > r, − costul de stocare h, pe unitatea de stoc / unitatea de timp, este constant, − d – costul (deficitul) datorat lipsei unei unităţi de stoc pe unitatea de timp este constant,

9. Elemente de teoria stocurilor

205

costul de lansare a comenzii a este s.

Parametrii necunoscuţi: − cantitatea comandată a, − S – nivelul maxim la care trebuie adus stocul la intrarea în stoc a comenzii, − mărimea lotului de aprovizionare T. Ipoteze: − se admite lipsa de stoc şi cererea pe perioada lipsei de stoc se păstrează şi se reportează pe perioada ciclului de reaprovizionare următor, r − =0. p Formularea problemei I(t) Să se determine cantitatea a care trebuie introdusă în stoc după timpul T (care trebuie de asemenea determinat), presupunând că după ce se epuizează stocul S în intervalul de S timp (0, t’ ), poate să mai a treacă un interval de timp t” (t’, T ) până când intră t’ T cantitatea a în stoc. Figura 9.7 arată 0 t comportarea acestui model de stocare. După ce Figura 9.7 se recuperează lipsa de stoc, stocul a ajuns la nivelul S. Parametrii necunoscuţi ai modelului trebuie determinaţi astfel încât costul total, provenit din costul de depozitare, costul de lansare şi costul lipsei de stoc, să fie minim. Construcţia modelului Considerând modelul anterior, se stabileşte funcţia de minimizat astfel : - costul de depozitare a cantităţii S pe intervalul de timp (0, t’ ) este S C h ,t ' = h ⋅ ⋅ t ' 2 - costul lipsei de stoc este a−S C d ,t " = d ⋅ ⋅ t" . 2 Astfel, costul unitar total este

206

Modele şi algoritmi de optimizare

1⎛ S a−S ⎞ ⋅ t"⎟ . ⎜ s + h ⋅ ⋅ t '+ d ⋅ T⎝ 2 2 ⎠ Se exprimă membrul drept al relaţiei precedente în funcţie de S, T ţinând seama că a S S Tr − S T = , t ' = , t" = T − = , r r r r astfel că s hS 2 d (rT − S ) 2 + . C (S , T ) = + T 2rT 2rT Se determină min C(S,T): ⎧ hS d (rT − S ) ⎧ ∂C =0 =0 ⎪ rT − ⎪ ∂S rT ⎪ ⇒ ⎨ ⎨ ∂C hS 2 ⎞ d 2r (rT − S )T − (rT − S ) 2 1 ⎛ ⎟+ ⎪ ⎪− 2 ⎜ s + ⋅ =0 =0 2r ⎟ 2r T2 ⎪ T ⎜ ⎩ ∂T ⎝ ⎠ ⎩ C=
II ⇒ Topt =

2s rh

h+d II , S opt = d

2rs h

d d II , C opt = 2rsh . h+d h+d

Deoarece ⎛ ∂ 2C ∂ 2C ⎛ ∂ 2C ⎞ 2 ⎞ ⎛ ∂ 2C ⎞ ⎜ ⎟ ⎟ > 0 şi ⎜ 2 ⎟ ⋅ 2 −⎜ ⎜ ∂ S ⎟ II II > 0 ⎜ ∂ 2 S ∂ T ⎜ ∂S∂T ⎟ ⎟ ⎝ ⎝ ⎠ (S opt ,Topt ) ⎠ ⎠ (S II ,T II ) ⎝ opt opt valorile obţinute realizează minimul costului. d < 1 şi relaţiile de mai sus devin Se notează cu ρ = h+d 2s 2rsρ II II II Topt = , S opt = , C opt = 2rshρ rhρ h de unde rezultă că II I C opt = C opt ρ . Această relaţie arată că este mai convenabilă politica de aprovizionare care admite lipsa de stoc ! Mărimea optimă a lotului de reaprovizionare este 2rs h + d II a opt = Tr = h d iar lipsa de stoc este h II II II a opt − S opt = a opt . h+d Ultima relaţie arată că numărul articolelor din perioada lipsei de stoc creşte pentru articolele cu cost unitar de stocare mare. Aceasta explică de ce articolele care au un preţ de stocare unitar mai mare sunt tratate mai economic într-un model cu lipsă de stoc. Pe de altă parte, când costul unitar al lipsei de stoc creşte, numărul articolelor din perioada lipsei de stoc scade. Astfel, modelul arată intuitiv că articolele cu cost mare pentru lipsă de stoc vor fi foarte puţine pe perioada lipsei de stoc.

9. Elemente de teoria stocurilor

207

Deoarece
II S opt II Topt

= ρ ⋅r ⇒ ρ =

II S opt II r ⋅ Topt

=

II S opt

a

ρ se numeşte şi indice de lipsă de stoc. În (1–ρ)% din cazuri, pe perioada T,
stocul se epuizează. Probabilitatea epuizării stocului este h 1−α h. ⇒ d= d +h α Această relaţie arată că, dacă se acceptă drept cunoscută probabilitatea epuizării stocului, atunci costul lipsei de stoc este proporţional cu cel al stocării. Acest fapt nu concordă totdeauna cu realitatea, şi de aici rezultă un inconvenient al modelului, deoarece costurile h şi d sunt practic independente. Comparând cele două modele se obţine I Topt 1 II I II I II , Topt = S opt = S opt ρ , a opt = a opt ,

α =1− ρ =

ρ

ρ

adică
II I II I II I S opt < S opt , a opt > a opt , Topt > Topt .

Exemplu. În exemplul din §9.2. se consideră că lipsa dalelor din stoc va fi penalizată cu 3500 lei/dală/zi (d = 3500) . Să se determine elementele optime ale modelului de stocare în acest caz. Rezolvare

ρ=
S
II opt

3500 = 0.875 ; 500 + 3500
II = a ρ ≈ 6481 ; Topt = II opt I Topt

ρ = 0.93541 ;

II a opt =

10141.85 ≈ 7407 ; 0.93541

ρ

II I ≈ 18.51 ; Copt = Copt ρ ≈ 3 240 370.34 .

Modelul se poate rezolva şi utilizând Management Scientist. După lansarea pachetului de programe se alege modulul Inventory. Din meniul File se selectează New şi din fereastra arătată în Figura 9.5 se alege modelul Economic Order Quantity with Planned Shortages. În fereastra care apare după apăsarea butonului OK, se introduc datele de intrare ca în Figura 9.8, unde costul de stocare şi cel de lipsă de stoc sunt considerate pe întregul an (d× numărul de zile lucrătoare din an , respectiv, h× numărul de zile lucrătoare din an). Se consideră că sunt necesare 3 zile pentru satisfacerea comenzii de reaprovizionare din momentul lansării acesteia.

208

Modele şi algoritmi de optimizare

Figura 9.8

Apăsând butonul Solve se obţine soluţia modelului sub forma dată în Tabelul 9.2.
Tabelul 9.2 INVENTORY MODEL *************** ECONOMIC ORDER QUANTITY WITH PLANNED SHORTAGES ********************************************** YOU HAVE INPUT THE FOLLOWING DATA: ********************************** ANNUAL DEMAND = 120000 UNITS PER YEAR ORDERING COST = $30000000 PER ORDER INVENTORY HOLDING COST = $150000 PER UNIT PER YEAR BACKORDER COST = $1050000 PER UNIT PER YEAR WORKING DAYS PER YEAR = 300 DAYS LEAD TIME FOR A NEW ORDER = 3 DAYS
INVENTORY POLICY **************** OPTIMAL ORDER QUANTITY ANNUAL INVENTORY HOLDING COST ANNUAL ORDERING COST ANNUAL BACKORDER COST TOTAL ANNUAL COST MAXIMUM INVENTORY LEVEL AVERAGE INVENTORY LEVEL MAXIMUM BACKORDERS REORDER POINT NUMBER OF ORDERS PER YEAR CYCLE TIME (DAYS)

7,406.56 $425,298,608.33 $486,055,552.38 $60,756,944.05 $972,111,104.76 6,480.74 2,835.32 925.82 274.18 16.20 18.52

În continuare sunt prezentate alte două variante ale modelului clasic.

9. Elemente de teoria stocurilor

209

9.3.1. Modelul de stocare considerând influenţa preţului de cumpărare
Acest model se referă la problemele de stoc-aprovizionare şi presupune că preţurile de achiziţie a materiilor prime şi materialelor depind de mărimea comenzii, adică ca = ca(a) (Văduva et al, II, 1974). În modelul lotului economic se consideră a r C (a) = h + s + r ⋅ c a (a) , a 2 unde primul termen este costul stocării unei cantităţi medii pe unitatea de timp, al doilea este costul lansării, iar cel de-al treilea termen este costul de cumpărare a materiilor prime consumate din stoc. Se poate considera costul de stocare ca fiind o fracţiune din costul de cumpărare, h = k⋅ca(a), şi atunci: 1 r C (a) = kc a (a ) + s + r ⋅ c a ( a) . 2 a De obicei, în practică, ca(a) este o funcţie în scară descrescătoare. k r Ci (a ) = ca , i a + s + rca , i , pentru li ≤ a ≤ ui , (li = ui −1 ) , i = 1,2,..., m . 2 a Se determină minimul local al acestei funcţii, obţinut pentru: ⎧l i , dacã a i ≤ l i 2rs ⎪ * a i = ⎨a i , dacã l i < a i < u i , iar a i = kc a , i ⎪u , dacã u ≤ a . i i ⎩ i Atunci, costul minim local este ⎧C (c a , i ) , dacã a i* = l i ⎪ C i opt = ⎨ 2rsk + c a , i r , dacã a i* = a i ⎪C (u ) , dacã a i* = u i . i ⎩ Costul minim total va fi C opt = min C i opt , iar Topt =
1≤ i ≤ m

a i* . r

9.3.2. Modelul de stocare considerând influenţa costului de producţie
Acest model se referă la problemele de stoc−producţie şi consideră costul de stocare h ca funcţie de costul de producţie unitar cp (Văduva et al, II, 1974) h = k ⋅ cp,

210

Modele şi algoritmi de optimizare

iar cp depinde de cantitatea produsă a. Notând cu cf costul unitar de fabricaţie, atunci costul de fabricaţie pentru întreaga cantitate este s ⎛s ⎞ s + cf⋅a şi astfel c p = + c f , deci h = k ⎜ + c f ⎟ , 0 < k < 1 . a ⎝a ⎠ Se presupune că nu se admite lipsa de stoc. Atunci costul total de lansare şi stocare pe unitatea de timp este sr ⎛s ⎞ a C (a) = + k ⎜ + c f ⎟ ⋅ . a ⎝a ⎠ 2 Din condiţia de minim, C’(a) = 0, rezultă 2rs 2s ks , C = 2kc f rs + , T= . a= kc f r 2 kc f
Comentariu. Mărimea lotului de reaprovizionare a depinde de costul unitar total de producţie cf; dacă cf este mare, mărimea lotului se micşorează, adică nu este indicat să se menţină stocuri mari din produse scumpe. Se mai pot considera: modele cu costul stocării variabil, descris de o funcţie în salturi, modele cu cererea depinzând de preţurile de vânzare etc. (Văduva et al, II, 1974) .

9.4. Extensii ale modelului clasic al lotului economic

Vânzătorii oferă deseori reduceri de preţ pentru cumpărarea unui lot mai mare de produse. Există preţuri pentru intervale ale numărului de produse cumpărate. Această practică este larg răspândită pentru că oferă avantaje atât cumpărătorului cât şi vânzătorului, avantaje prezentate în Tabelul 9.3 .
Tabelul 9.3 Avantaje -preţuri reduse -mai puţine hârtii de completat -transport mai ieftin -mai puţine momente cu lipsă de stoc -produse uniforme -securitate sporită (ar putea să crească preţurile) -transport mai ieftin -mai puţine hârtii de completat -producţie mai mare Dezavantaje -stocuri mari -cheltuieli sporite de stocare -riscul deteriorării -învechirea produselor

Cumpărător

Vânzător

-preţ unitar scăzut -putere scăzută de tranzacţionare cu clienţii

Se disting două cazuri :

9. Elemente de teoria stocurilor

211

i) Reduceri oferite pentru un singur nivel de preţ ii) Reduceri oferite pentru mai multe niveluri de preţuri.
Reduceri oferite pentru un singur nivel de preţ

Vom prezenta metoda pe un exemplu. Pentru iluminatul stradal al unui oraş sunt necesare 100 de becuri pe lună pentru înlocuirirea celor care se defectează. Fiecare bec costă 8 u.m. Costul de lansare a unei comenzi de reaprovizionare este de 27 u.m. indiferent de mărimea comenzii, iar cel de păstrare al unui bec pe un an de zile este de 25% din valoare. Onorarea comenzii se face în momentul lansării acesteia şi nu se acceptă lipsa de stoc. Furnizorul oferă municipalităţii o reducere de 2%, dacă se cumpără 600 de becuri deodată. Să se satabilească dacă municipalitatea acceptă sau nu oferta furnizorului.
Rezolvare i) Vom folosi modelul lotului economic fără lipsă de stoc şi nu vom lua în seamă reducerea furnizorului. Pentru acest caz avem : Q=100×12=1200 becuri pe an, h=0.25×8=2 u.m. , s=27 u.m. , p=8 u.m. (p=preţul de achiziţie al unui bec). Folosind formulele (9.4)-(9.5) obţinem valoarea optimă pentru comanda de reaprovizionare
a opt =
2Qs = h 2 ⋅ 27 ⋅ 1200 = 180 , 2

costul total anual de stocare
CT = a opt Q 27 ⋅ 1200 180 ⋅ 2 s+ h= + = 180 , a opt 2 180 2

iar costul becurilor este Q×p=1200×8=9600. Aşadar, fără reducere, municipalitatea ar cheltui 9600+360=9960 u.m. ii) Vom reface calculele ţinând seama de reducerea oferită de furnizor pentru un lot de 600 becuri. În acest caz vor fi doar două lansări de comenzi de reaprovizionare şi atunci costul de lansare total ar fi de 54 u.m. Costul unitar anual de păstrare devine h’=0.98×0.25×8=1.96 u.m., iar costul total anual de păstrare este 600 ⋅ 1.96 = 588 . Costul de achiziţie devine 9600 − 9600 ⋅ 0.02 = = 9408 . În acest 2 caz municipalitatea ar plăti 9408+588+54=1050 u.m. În concluzie, oferta de reducere trebuie respinsă pentru că, dacă ar fi acceptată, municipalitatea ar fi în dezavantaj !

212

Modele şi algoritmi de optimizare

Reduceri oferite pentru mai multe niveluri de preţuri

Înainte de a da metoda generală vom considera un exemplu. Un spital trebuie să achiziţioneze antibiotice de la un furnizor care face oferta din Tabelul 9.4 .
Tabelul 9.4 Cantitate 1 – 4999 5000 – 9999 >10000 Preţ 2.75 2.60 2.50

Cererea spitalului este de 50 000 unităţi pe an. Costul lansării unei comenzi de reaprovizionare este de 50 u.m. şi costul de păstrare este 20% din costul medicamentului pe an. Nu se admite lipsă de stoc şi se presupune că onorarea comenzii se face imediat ce a fost lansată. Să se stabilească politica optimă a spitalului de achiziţionare a medicamentelor. Vom utiliza modelul lotului economic fără lipsă de stoc şi vom rezolva problema în următorii paşi. Pas 1. Cu modelul lotului economic fără lipsă de stoc, stabilim pentru cel mai mic preţ mărimea optimă a comenzii de reaprovizionare. Costul unitar anual de păstrare este h1=2.5×0.02=0.5 u.m. 2Qs 2 ⋅ 50 ⋅ 50000 (1) a opt = = = 10000000 = 3163 h 0 .5 (1) (1) Pas 2. Se compară a opt cu intervalul corespunzător preţului 2.50. Dacă a opt ar fi în interval, soluţia este fezabilă şi optimă în acelaşi timp şi problema este rezolvată. Altfel, soluţia nu este fezabilă şi se caută mărimea optimă a comenzii de reaprovizionare pentru preţul 2.60 u.m. Pas 3. În acest caz costul de păstrare este h2=2.6×0.02=0.52 u.m. Atunci, 2Qs 2 ⋅ 50 ⋅ 50000 (2 = = 9615385 = 3101 . a opt) = h 0.52 (2 Se compară a opt`) cu intervalul corespunzător preţului 2.60.
(2 Pas 4. Dacă a opt) ar fi în interval, soluţia este fezabilă şi optimă în acelaşi timp şi

problema este rezolvată. Altfel, soluţia nu este fezabilă şi se caută mărimea optimă a comenzii de reaprovizionare pentru preţul 2.75 u.m. Pas 5. Costul de păstrare este h3=2.75×0.02=0.55 u.m. Atunci,
(3 a opt) =

2Qs = h

2 ⋅ 50 ⋅ 50000 = 9090910 = 3015 . 0.55

9. Elemente de teoria stocurilor

213

(3 Pas 6. a opt) este în intervalul corespunzător preţului 2.75 şi soluţia găsită este

fezabilă. Pas 7. {Compararea costurilor} Costul total anual este Q a CT (a ) = s + h + Q ⋅ p . a 2 Aplicăm formula pentru cele trei valori ale marginii din stânga intervalului pentru categoriile de preţ şi avem :
( ( ( CT1) (10 000) = 127 750 , CT2 ) (5000) = 131 800 , CT3) (5000) = 139 158 .

Deoarece o cerere de 10 000 de unităţi o dată conduce la cel mai mic preţ, se va adopta această politică. Bazat pe acest exemplu putem scrie următorul algoritm general.
Algoritm general Pas 1. {Iniţializări} Intrare: necesarul anual Q, costul de lansare s, costul unitar de stocare h, intervalele pentru care se acordă reduceri q = (qk ,1 , qk , 2 )1≤k ≤n , n numărul

acestor intervale, preţurile unitare reduse

( pu )1≤k ≤n .

Pas 2. k:=n; Determină cantitatea optimă aopt comandată cu modelul lotului economic pentru pun . Dacă aopt ≥qk,1 , determină Cn+1, costul total optim cu modelul lotului economic pentru aopt; sw:=0; an+1:=aopt ; Pas 3. Dacă sw≠0, atunci Cât timp (k≥0 şi sw≠4) execută Calculează ak:=aopt ; Dacă a k ∉ [q k ,1 , q k , 2 ] atunci sw:=1; an+1:=qk,1 ; k:=k-1; optim cu modelul lotului economic pentru aopt ; Dacă sw=4, atunci Pentru k:=1,n Calculează Ck costul total optim cu modelul lotului economic Determină C n +1 := min C k ; a n +1 := min a k ;
1≤ k ≤ n +1 1≤ k ≤ n +1

Dacă a k ∈ [q k ,1 , q k , 2 ] atunci sw:=4; an+1:=aopt ; Cn+1, costul total

Pas 4. Reţine an+1 şi Cn+1. Stop!

214

Modele şi algoritmi de optimizare

În continuare este redat algoritmul de mai sus, programat în MathCAD şi aplicat exemplului precedent.

Determinarea lotului optim de reaprovizionare si a costului optim pentru preturi unitare cu discount-uri
Intervalele pentru care se acorda discount Preturile unitare de achizitionare

⎛ 1 4999 ⎞ ⎜ q := ⎜ 5000 9999 ⎟ ⎜ 10000 106 ⎝ ⎠
Necesarul anual Q := 50000 Costul de lansare a comenzii de reaprovizionare

⎛ 2.75 ⎞ pu := ⎜ 2.60 ⎜ ⎝ 2.50 ⎠

s := 50

Costul unitar anual de stocare este o fractiune ρ din costul de achizitionare

ρ := 0.2 s h

Lotul optim de reaprovizionare

aopt ( h ) := 2⋅ Q⋅

Determinarea minimului elementelor unui sir si a pozitiei sale

Mn ( x) :=

m← x i←1

1

for k ∈ 1 .. last ( x) if m > x
k k

m← x i←k

⎛ m⎞ ⎜ ⎝i⎠

9. Elemente de teoria stocurilor
Discount ( Q , s , pu , ρ ) := k ← last ( pu ) n←k sw ← 1 CT n+ 1 ← Q qk, 1 ⋅ s + pu k⋅ ρ ⋅ qk, 1 2 + Q⋅ pu k

215

a n+ 1 ← aopt ( pu k⋅ ρ ) sw ← 0 if a n+ 1 ≥ q k , 1 if sw ≠ 0 while ( k ≥ 1) ∧ ( sw ≠ 4) h k ← pu k⋅ ρ a k ← aopt ( h k) if ¬( q k , 1 ≤ a k ≤ q k , 2) ak ← q k , 1 k←k−1 if q k , 1 ≤ a k ≤ q k , 2 CT n+ 1 ← a n+ 1 ← a k sw ← 4 if sw = 4 for k ∈ 1 .. n CT k ← Q qk, 1 ⋅ s + h k⋅ qk, 1 2 + Q⋅ pu k Q ak ⋅ s + h k⋅ ak 2 + Q ⋅ pu k

Ao ← Mn ( CT ) CT n+ 1 ← Ao1 i ← Ao2 a n+ 1 ← ai

⎛ a n+ 1 ⎞ ⎜ ⎝ CT n+ 1 ⎠
Apelul subprogramului MathCAD se face cu secvenţa
Discount ( Q , s , pu , ρ ) =

.

216

Modele şi algoritmi de optimizare

9.5. Model pentru stocarea mai multor tipuri de produse

Se presupune că stocul este format din p tipuri de produse. Atât parametrii cunoscuţi cât şi cei necunoscuţi se referă la fiecare tip de produse aflate în stoc. Parametrii cunoscuţi: − rata cererii – ri, − costurile de stocare unitare – hi, − costurile de lansare – si, i = 1, p . Parametrii necunoscuţi: − mărimea optimă, ai, a lotului de reaprovizionare din produsul i , − ciclul optim de reaprovizionare, Ti, a stocului cu produsul i , i = 1, p . Formularea problemei: Să se determine elementele necunoscute astfel încât costul de stocare şi lansare pe unitatea de timp pentru produsul i ha sr C i (ai ) = i i + i i ai 2 să fie minim, şi deci şi costul total pe unitatea de timp C (a1 ,..., a p ) = ∑ C i (a i )
i =1 p

să fie minim. Se obţin: a i opt = 2ri s i 2s i , Ti opt = . hi ri hi

Comentariu. Determinarea loturilor economice pentru mai multe produse revine la determinarea lotului economic pentru fiecare produs în parte.

9.6. Modele stochastice de stocare

Într-un model aleatoriu, pe lângă variabilele de decizie d1, ... , dn (de exemplu, mărimi de comenzi, cicluri de reaprovizionare) intervin şi variabile aleatoare A1, ..., An, a căror repartiţie se presupune cunoscută. Funcţia de eficienţă C(d1, ... , dn, A1, ... , An) va fi o variabilă aleatoare, iar valorile optime ale variabilelor de decizie vor fi determinate din condiţia ca eficienţa medie să fie optimă. Printre elementele aleatoare ale unui model de teoria stocurilor, cel mai important este cererea pe unitatea de timp. Repartiţia cererii în cazul cererii continue poate fi: normală, log-normală, Weibull etc., iar în cazul cererii discrete,

9. Elemente de teoria stocurilor

217

poate fi: Poisson, Pascal, binomială etc. Dacă cererea este un proces aleatoriu, atunci modelul de stocare este un model stochastic dinamic. Timpul de avans, L, şi stocul intangibil (de siguranţă), I S = P0 − R , R fiind cererea medie pe perioada timpului de avans, pot fi variabile aleatoare continue sau discrete. Mărimea stocului de siguranţă şi, corespunzător, nivelul de reaprovizionare reduc şansa apariţiei lipsei de stoc, şi invers. Tabelul 9.5 dă efectul creşterii sau reducerii nivelului de reaprovizionare asupra costurilor.
Tabelul 9.5 Acţiune Reducerea nivelului de reaprovizionare Reducerea lotului de reaprovizionare Creşterea nivelului de reaprovizionare Creşterea lotului de reaprovizionare Rezultat Scade costul de stocare al stocului de siguranţă şi creşte costul lipsei de stoc a Scade costul de stocare al stocului mediu ( ) şi cresc costul 2 lipsei de stoc şi costul total de lansare comenzi Creşte costul de stocare al stocului de siguranţă şi scade costul lipsei de stoc Creşte costul de stocare al stocului mediu şi descreşte costul total de lansare comenzi

9.6.1. Determinarea nivelului optim de reaprovizionare
Pentru determinarea nivelului optim de reaprovizionare P0, aplicăm analiza marginală (Bonini et al, 1997), adică se începe analiza costului total cu o valoare iniţială pentru P0 , fie P0 = R . Să vedem ce se întâmplă cu costul total dacă se adaugă o unitate de produs de stoc la P0. Costul total pe perioada analizată (de exemplu, un an) va creşte cu aproximativ h , deoarece IS creşte cu o unitate. Dacă nu se adaugă o unitate la P0 , creşterea costului va rezulta din faptul că o cerere cu o unitate mai mare pe perioada timpului de avans va mări probabilitatea lipsei de stoc, astfel (Figura 9.9): Creşterea costului prin neadăugarea unei unităţi la P0 este egală cu ⎡Q ⎤ (Probabilitatea unei unităţi de stoc cerute în plus) d· ⎢ ⎥ ⎣a⎦ ⎡Q ⎤ ⎢ a ⎥ fiind numărul de cicluri de reaprovizionare pe perioada analizată. ⎣ ⎦ Se consideră următoarea ipoteză: Cererea r, pe unitatea de timp, este o variabilă aleatoare cu repartiţia cunoscută, F(x).

218 Creşterea costurilor

Modele şi algoritmi de optimizare

(1 − F ( P0 )) ⋅ d ⋅

Q a

Costul neadăugării unei unităţi

h

O P0 opt
Figura 9.9

P0

Atunci, cererea R, pe perioada timpului de avans L, este de asemenea o variabilă aleatoare cu funcţia de repartiţie cunoscută, F(x)=P(R<x). Probabilitatea unei unităţi de stoc cerute în plus este 1 − F ( P0 ) . Figura 9.9 reprezintă costurile adăugării şi neadăugării unei unităţi de stoc la P0 . Din egalitatea celor două costuri avem : a⋅h a⋅h ⎡Q ⎤ . h = (1 − F ( P0 ) ) ⋅ d ⋅ ⎢ ⎥ ⇒ 1 − F ( P0 ) = ⇒ F ( P0 ) = 1 − d ⋅Q d ⋅Q ⎣a⎦ P0 poate fi acum obţinut din tabela funcţiei de repartiţie F. Se poate scrie următorul algoritm pentru determinarea nivelului optim de reaprovizionare.
Algoritm pentru determinarea nivelului optim de reaprovizionare P0 Pas 1. Date de intrare : h, d, Q, s R , σ R ;

2⋅s ⋅Q a⋅h ; α =1− ; h d ⋅Q Pas 3. Din tabela funcţiei de repartiţie a cererii pe perioada de avans R, se ia Zα. Popt = R + Z α ⋅ σ R . Stop ! Pas 2. Calculează a opt =
Observaţii

9. Elemente de teoria stocurilor

219

1. Stocul de siguranţă este I S = P0 − R = Z α ⋅ σ R . 2. Pentru un α ∈ (0, 1) , un risc asumat de a avea lipsă de stoc pe perioada timpului de avans, se poate determina nivelul critic al stocului astfel : α = P(R≥ P0)=1−F(P0) ⇒ F(P0)=1−α , relaţie ce permite determinarea nivelului critic al stocului P0. Determinarea costului total Costul total=Costul de lansare+Costul de stocare+Costul lipsei de stoc ⎡ ∞ ⎤ Q Q ⎛a ⎞ CT (a, P0 ) = s + ⎜ + P0 − R ⎟h + ⎢d ∫ (R − P0 ) f ( R )dR ⎥ ⋅ . (9.6) a ⎝2 ⎠ ⎢ P0 ⎥ a ⎣ ⎦
Q reprezintă costul de lansare al tuturor comenzilor de reaprovizionare pe a perioada de timp analizată, Q numărul comenzilor de reaprovizionare pe perioada de timp analizată, a ⎡ ∞ ⎤ Q ⎢d ∫ (R − P0 ) f ( R)dR ⎥ ⋅ costul lipsei de stoc pe perioada de timp analizată, ⎢ P0 ⎥ a ⎣ ⎦

unde: s

P0

∫ (R − P ) f ( R)dR
0

numărul mediu de unităţi de stoc lipsă din stoc pe un ciclu

de reaprovizionare, f(x) densitatea de repartiţie a cererii. Se determină P0 opt şi aopt din condiţia impusă costului total dat de (9.6), să fie minim: Q Q ⎧ ⎧ ∂CT ⎪h − a d ⋅ P0 ⋅ f ( P0 ) + a d ⋅ [F ( P0 ) + P0 ⋅ f ( P0 ) − 1] = 0 ⎪ ∂P = 0 ⎪ ⎪ 0 . ⇒⎨ ∞ (9.7) ⎨ ⎞ h Q⎛ ⎪− 2 ⎜ s + d ∫ (R − P0 ) f ( R )dR ⋅ ⎟ + = 0 ⎪ ∂CT = 0 ⎟ 2 ⎪ ∂a ⎪ a ⎜ ⎩ P0 ⎠ ⎝ ⎩ Prima relaţie (9.7) se poate rescrie astfel: Q Q h − d + d F ( P0 ) = 0 . a a Atunci a⋅h ⇒ P0 opt . F ( P0 ) = 1 − (9.8) d ⋅Q
∞ ⎛ ⎞ 2Q⎜ s + d ∫ (R − P0 opt ) f ( R )dR ⎟ ⎜ ⎟ P0 ⎝ ⎠ = . h

(9.9)

a opt

220

Modele şi algoritmi de optimizare

Se observă că P0 apare în exprimarea lui aopt (9.9) şi a apare în exprimarea lui P0 opt (9.8). Pentru rezolvarea acestei probleme se poate folosi un procedeu iterativ astfel : - cu un a estimat, de exemplu dat de modelul lotului economic, se calculează P0, din tabela funcţiei de repartiţie F din relaţia (9.8), - apoi, cu acest P0 se calculează a cu relaţia (9.9) şi aşa mai departe, până când cele două valori găsite satisfac relaţiile (9.7). Dacă R a N ( R, σ R ) , atunci

P0

∫ (R − P ) f ( R)dR = σ
0

R

N ( Z ) , unde N(Z) este

numărul mediu de comenzi de reaprovizionare a stocului pe perioada timpului de avans. Astfel, relaţia (9.7) devine 2Q(s + dσ R N ( Z ) ) (9.9’) a opt = h şi costul total optim este ⎞ Q ⎛ a opt +⎜ + P0 opt − R ⎟h . C opt = CT (a opt , P0 opt ) = [s + dσ R N ( Z )] (9.6’) ⎟ a opt ⎜ 2 ⎝ ⎠

Particularizări 1) Dacă timpul de avans, L, este constant şi cunoscut şi cererea, r, este o variabilă aleatoare repartizată N (m,σR), atunci R=L⋅r este o variabilă aleatoare
repartizată N L ⋅ m, L ⋅ σ R . Notând cu –zα , α – cuantila inferioară a variabilei aleatoare N (0,1) , adică

(

)

α=

1 2π

− zα

−∞

∫e

u2 2

du ,

rezultă că în acest caz nivelul de reaprovizionare este P0 = L ⋅ m + z α Lσ R . 2) Presupunând timpul de avans, L, constant şi cererea, r, variabilă aleatoare repartizată Exp(λ), atunci cererea pe perioada timpului de avans este R = r1 + ... + rL a Erlang (λ , L) şi P0 se determină din relaţia
P0

∫ f ( x)dx = 1 − α = P( R < P )
0 0

(α riscul asumat fiind mic) folosind tabela repartiţiei Erlang(λ,L).

9. Elemente de teoria stocurilor

221

3) Dacă L este o variabilă aleatoare cu media M[L]=l, iar r este o variabilă aleatoare repartizată N (m,σR), independentă de L, atunci R=L⋅r este o variabilă aleatoare normală cu M[R] = l⋅m şi D2[R] = l⋅σR2, adică N l ⋅ m, l ⋅ σ R . În acest caz nivelul de reaprovizionare este P0 = l ⋅ m + z α lσ R 

(

)

Exemplu. La un service auto sunt necesare 1800 bidoane de ulei de motor pe an. Costul de lansare a unei comenzi de reaprovizionare cu ulei este de s=10 u.m., costul de păstrare h=0.6 u.m./an, iar timpul de avans este de 20 zile. Cererea medie pe timpul de avans este R = 30 bidoane, R a N ( R, σ R ) . Costul lipsei din stoc a unui bidon de ulei este d=5 u.m. Să se determine cantitatea optimă de reaprovizionare şi punctul optim de reaprovizionare. Rezolvare. Consideră mărimea optimă a lotului de reaprovizionare 2 sQ 2 ⋅ 10 ⋅ 1800 = = 245 bidoane de ulei. a opt = h 0 .6 Indicele de lipsă de stoc asumat este h⋅a 0.6 ⋅ 245 Φ ( P0 ) = 1 − =1− = 0.9837 = α d ⋅Q 5 ⋅ 1800 Φ fiind funcţia de repartiţie a unei variabile aleatoare normale. Din tabelele repartiţiei normale luăm α – cuantila corespunzătoare, Z α = 2.14 . Se obţine punctul optim de reaprovizionare P0=100+2.14·30=164 . Astfel, stocul de siguranţă este I S = Popt − R = 164 − 100 = 64 bidoane de ulei.
În anumite ipoteze asupra repartiţiei ciclului de reaprovizionare, T a G (τ ) , numărului de cereri din intervalul de timp (0, t), n(t ) a Po(λ ⋅ t ) , mărimii unei cereri X, X a F ( x) , se poate determina repartiţia cererii totale pe intervalul de timp ( 0, t ).

9.6.2. Modele de stocare pe o singură perioadă cu cerere aleatoare
Dacă rata cererii nu este deterministă, modelul de stocare cu cerere aleatoare presupune cunoscută repartiţia acesteia. Modelele de stocare pe o singură perioadă se referă la situaţia în care o singură comandă este lansată pentru un produs. La sfârşitul perioadei produsul a fost fie epuizat, fie există un surplus de articole nevândute care vor fi vândute la o valoare de lichidare de stoc. Modelul pentru o singură perioadă este aplicabil în situaţii ce implică articole sezoniere sau perisabile care nu pot fi păstrate în stoc şi vândute în perioada următoare. De exemplu: hainele

222

Modele şi algoritmi de optimizare

de sezon (costume de baie, hainele de iarnă), ziare etc. Cum comanda se face o singură dată pe perioada considerată, singura decizie de stoc care trebuie luată este: ce cantitate din produsul respectiv să se comande la începutul perioadei ? O astfel de problemă este cunoscută sub numele de problema vânzătorului de ziare.

Exemplu de cerere cu repartiţie discretă Un magazin cumpără roşii o dată pe săptămână de la producător cu 6 u. m. / kg şi le vinde cu 11 u. m. / kg. La sfârşitul săptămânii preţul de lichidare de stoc este de 2 u. m./kg. Din experienţa avută (reflectată în Tabelul 9.6) magazinul vinde între 160 şi 200 kg de roşii pe săptămână. Deoarece cererea este relativ stabilă, se presupune că este continuă cu acea rată. Să se determine mărimea comenzii de reaprovizionare pentru magazin, astfel ca profitul magazinului să fie maxim (Turban şi Meredith, 1988) .
Tabelul 9.6 Număr kilograme vândute (x) 160 170 180 190 200 Total Număr de săptămâni 4 10 12 15 9 50 Probabilitatea cererii 0.08 0.2 0.24 0.3 0.18 Funcţia empirică de repartiţie (P(x≤a)) 0.08 0.28 0.52 0.82 1

Rezolvare În rezolvarea acestui tip de probleme este indicată folosirea metodei analizei incrementale. Analiza incrementală compară câştigul sau pierderea realizată prin comandarea unui articol suplimentar pentru care nu ar fi existat cerere, cu câştigul sau pierderea realizată prin necomandarea unui articol pentru care ar fi existat cerere. Fie: a cererea de aprovizionare cu roşii pentru o săptămână, c+ costul unitar al supraestimării cererii, adică pierderea datorată comandării unui kilogram suplimentar care apoi se constată că nu se poate vinde, c- costul unitar al subestimării cererii, adică pierderea datorată necomandării unui kilogram suplimentar care apoi se constată că s-ar fi putut vinde, D+ pierderea totală datorată supraestimării comenzii de aprovizionare, D+(a)=c+⋅P(a≤aopt) D- pierderea totală datorată subestimării comenzii de aprovizionare, D-(a)=c-⋅ P(a>aopt )= c- (1-P(a≤aopt)) . Din egalitatea D+(a)= D-(a) se determină cantitatea optimă comandată astfel: c_ . P (a ≤ a opt ) = (9.10) c+ + c−

9. Elemente de teoria stocurilor

223

11 − 6 = 0.5555 . Din Tabelul 9.6 c + + c − (6 − 2) + (11 − 6) se constată că P (a ≤ a opt ) = 0.5555 şi se obţine aopt=190 kg . Pentru această problemă c_

=

Exemplu de cerere cu repartiţie continuă O reţea de magazine comandă la o fabrică de încăţăminte un nou model de pantofi bărbăteşti de primăvară-vară. La sfârşitul sezonului (30 septembrie) patronul magazinelor va avea lichidare de stoc pentru ce nu s-a vândut până la acea dată. Preţul de achiziţie de la fabrică este de 40 u.m. perechea, iar magazinul îi vinde cu 60 u.m. Preţul de lichidare de stoc este de 30 u.m. perechea şi se aşteaptă ca la acest preţ stocul să fie lichidat. Câte perechi de pantofi ar trebui să comande patronul magazinelor pentru a obţine profit maxim (pierderi minime) ? (Anderson et al, 1994) Rezolvare Din experienţa anilor trecuţi, cererea pentru pantofi bărbateşti, măsura 42, este uniformă şi cuprinsă între 350 şi 650 perechi, având media 500. Se apelează la analiza incrementală pentru rezolvarea acestei probleme. Fie: a cererea de aprovizionare cu pantofi bărbăteşti mărimea 42, c+ costul unitar al supraestimării cererii, adică pierderea datorată comandării unei perechi de pantofi suplimentare, care apoi se constată că nu se poate vinde, c- costul unitar al subestimării cererii, adică pierderea datorată necomandării unei perechi de pantofi suplimentare, care apoi se constată că s-ar fi putut vinde, D+ pierderea totală datorată supraestimării comenzii de aprovizionare D- pierderea totală datorată subestimării comenzii de aprovizionare.
Pentru această problemă c+=40–30=10, iar c-=60–40=20. Considerând cererea egală cu media, analiza incrementală pentru două cazuri este arătată de Tabelul 9.7.
Tabelul 9.7 Cazul I II Mărimea comenzii 501 500 Pierderea produsă dacă Cererea este supraestimată şi o unitate nu poate fi vândută Cererea este subestimată şi o unitate ar fi putut să fie vândută Pierderea posibilă Probabilitatea

c+=10 c-=20

P(a≤500) P(a>500)

P(a≤500)= P(a>500)=0.5, D+(a)=c+⋅0.5=5 u.m. , D-(a)=c-⋅0.5=10 u.m. Este de preferat să se comande 501 perechi de pantofi. Se continuă investigarea până când D+(a)= D-(a) . Ţinând seama de relaţia (9.4), se obţine pentru acest exemplu a opt − 350 2 P (a ≤ a opt ) = = , 650 − 350 3

224

Modele şi algoritmi de optimizare

iar aopt=550. În situaţiile practice apare problema cunoaşterii repartiţiei cererii pentru produsul respectiv şi cea a costurilor c+ şi c- . c_ are rol esenţial în În modelele cu o singură perioadă, cantitatea c+ + c− determinarea cantităţii optime de reaprovizionare. Când c+<c- se recomandă să fie mai mic lotul de reaprovizionare. Când c-<c+ se recomandă să fie mai mare lotul de reaprovizionare. Când cele două costuri sunt egale, probabilitatea de a avea surplus este egală cu probabilitatea de a avea lipsă de stoc şi atunci se recomandă ca lotul de reaprovizionare să fie egal cu media.

9.6.3. Modele stochastice de stocare bazate pe modele de aşteptare
Aplicarea modelelor de aşteptare la rezolvarea problemelor legate de gestiunea stocurilor se poate prezenta astfel (Văduva et al, II, 1974): 1. cererile ce urmează a fi satisfăcute sunt considerate clienţi în modelul de aşteptare. Pentru ca să fie satisfăcute cererile ar trebui ca în stoc să se afle o cantitate practic infinită, ceea ce în realitate nu este posibil; 2. încărcarea stocului corespunde venirilor în sistemul de aşteptare şi satisfacerea cererilor corespunde ieşirilor din sistemul de aşteptare. În continuare vor fi prezentate două modele de stocare având la bază modele de aşteptare.

9.6.4. Modelul P0(λ)/Exp(µ)/1:(∞, FIFO)
Ipotezele modelului − stocul este unic (un singur tip de produse, c=1), − variaţia stocului este discretă, − intervalul de timp dintre două intrări în stoc este o variabilă aleatoare exponenţială negativă de parametru λ, − fiecare cerere este egală cu unitatea (r=1), − τ – intervalul de timp dintre două cereri este o variabilă aleatoare exponenţială negativă de parametru µ, − intrările în stoc pot avea loc indefinit, − N(t) – numărul unităţilor din stoc este un proces aleatoriu staţionar descris de un proces de naştere şi deces. Cu notaţiile de la modelele de aşteptare avem

9. Elemente de teoria stocurilor

225

1− ρ Construcţia funcţiei de cost. Notăm cu: cu – costul unei unităţi din stoc, α − fracţiunea pe care o reprezintă costul de stocare din costul unităţii de stoc, (h=αcu) , d – costul unitar al lipsei de stoc, p0 – probabilitatea de a avea lipsă de stoc. Atunci obţinem • costul mediu de stocare = cu⋅α⋅M[N(t)], • costul mediu al lipsei de stoc = d⋅p0, • funcţia de eficienţă (costul mediu ce trebuie optimizat) =C(ρ), unde

M [N (t )] =

ρ

, ρ=

λ , p0 = 1 − ρ . µ

+ d ⋅ (1 − ρ ) . 1− ρ Din condiţia ca C(ρ) să fie minim ( C ′( ρ ) = 0 , C ′′( ρ ) > 0) , se obţine
C ( ρ ) = c u ⋅ α ⋅ M [ N (t )] + d ⋅ p 0 = c u ⋅ α ⋅ cu ⋅ α d şi astfel se pot determina elementele necunoscute ale modelului. Practic se cunoaşte cererea τ a Exp( µ ) şi astfel numărul de unităţi cerute pe unitatea de timp este o variabilă aleatoare Poisson de parametru µ, µ fiind intensitatea cererii, presupusă cunoscută. Se cere determinarea parametrului λ opt = intensitatea optimă de încărcare a

ρ

ρ opt = 1 −

stocului. Dar

⎛ cu ⋅ α ⎞ ⎟. ⎜ d ⎟ ⎠ ⎝ Se poate determina probabilitatea ca nivelul stocului să depăşească o anume valoare ν ,

λ = µ ⋅ ρ = µ ⋅ ⎜1 −

P(N (t ) ≥ ν ) = ∑ p n = (1 − ρ ) ⋅ ρ ν ⋅ ∑ ρ j = ρ ν
n =ν j =0

deoarece

p n = ρ n ⋅ (1 − ρ ) .

Problema se poate formula şi astfel: Să se determine nivelul stocului care să fie atins şi/sau depăşit cu probabilitatea π∈(0, 1) suficient de mică. ln π . Atunci, din relaţia ρ ν = π obţinem ν π = ln ρ Ipoteza că intrările în stoc pot avea loc în mod indefinit se poate înlocui cu alta, rezultată din faptul că stocul are o limită a capacităţii, m. Atunci

226

Modele şi algoritmi de optimizare

⎧ρ n ⋅ p 0 pn = ⎨ ⎩0
şi deoarece

pentru 1 ≤ n ≤ m pentru n > m

∑p
n =1

m

n

= 1 se obţine
p0 = 1− ρ . 1 − ρ m +1

Astfel M [N (t )] = ∑ n ⋅ p n = ∑ n ⋅ ρ n ⋅ p 0 =
n =1 n =1 m m

ρ ⋅ (1 − ρ ) m ⋅ ∑ n ⋅ ρ n −1 . 1 − ρ m +1 n =1

Însă

∑ρn = ρ
n =1

m

1− ρm 1− ρ
m m +1

de unde rezultă că

∑ n ⋅ ρ n−1 =
n =1

m

[1 − (m + 1) ⋅ ρ ]⋅ (1 − ρ ) + ρ − ρ
(1 − ρ )2

.

ρ (1 − ρ ) [1 − (m + 1) ⋅ ρ m ]⋅ (1 − ρ ) + ρ − ρ m +1 ⋅ = 1 − ρ m +1 (1 − ρ )2 [1 − (m + 1) ⋅ ρ m + m ⋅ ρ m+1 ]⋅ ρ . = (1 − ρ ) ⋅ (1 − ρ m+1 )
N = M [N (t )] = Înlocuind M[N(t)] în funcţia de cost şi punând condiţia de minim se obţine ρopt cu ajutorul căruia se pot determina elementele modelului. De exemplu, numărul mediu de cereri ce urmează a fi satisfăcute (adică lungimea medie a cozii) ρ 2 ⋅ 1 − m ⋅ ρ m +1 + (m − 1) ⋅ ρ m R = M [N (t ) − 1] = . (1 − ρ ) ⋅ 1 − ρ m+1

Obţinem

[

(

)

]

Se obţine o nouă funcţie de cost dacă se consideră valorile medii N , R astfel

Din condiţia de optim (min C1(ρ) ) rezultă ρopt elementele modelului.

(1 − ρ ) ⋅ (1 − ρ m+1 ) ⋅ {cu ⋅ α ⋅ [1 − (m + 1) ⋅ ρ m + m ⋅ ρ m+1 ] + d ⋅ ρ ⋅ [1 − m ⋅ ρ m−1 + (m − 1) ⋅ ρ m ]}

C1 ( ρ ) = c u ⋅ α ⋅ N + d ⋅ R =

ρ

. şi acum se pot calcula

9.6.5. Modelul cu mai multe staţii paralele şi cu timp de avans L aleatoriu

9. Elemente de teoria stocurilor

227

Ipotezele modelului • în momentul când se scoate o unitate din stoc se comandă alta, astfel încât numărul de unităţi din stoc plus cele comandate să fie S=constant, • fiecare cerere este egală cu unitatea (r=1); numărul de cereri pe unitatea de timp este o variabilă aleatoare Poisson, de parametru λ, • timpul de avans L este o variabilă aleatoare exponenţială negativă de parametru µ.

A. Cererea nesatisfăcută nu se păstrează Analogia cu modelul de aşteptare Exp( µ )/Exp(λ )/c : (∞, N d ) Se consideră • cele c locuri din stoc drept staţiile de serviciu ale sistemului de aşteptare, • Nd semnifică faptul că există clienţi nedisciplinaţi care, dacă nu pot fi serviţi, părăsesc sistemul, • N(t) − numărul de unităţi din sistem la momentul t este un proces finit, • Pn(t)=P(N(t)=n) – probabilitatea de a avea n unităţi în stoc. Când sunt n unităţi în stoc înseamnă că sunt lansate c−n comenzi.
Determinarea coeficienţilor λn , µn, n∈{1, 2, . . . , c}. Deoarece o comandă soseşte după timpul aleatoriu L, care are repartiţia Exp(µ), rezultă că intensitatea intrării în stoc a unuia din cele c articole este µ·c, adică, λ0= µ·c. Dacă există n unităţi în stoc, atunci poate să sosească numai una din cele c−n comenzi, deci λn= µ·(c−n) , 1 ≤ n ≤ c , λc = 0. Pentru a determina intensitatea ieşirii ţinem seama de faptul că ieşirea depinde de cerere, deci µn = λ, 1 ≤ n ≤ c. Se pot scrie ecuaţiile de stare ale modelului astfel ⎧ P0′(t ) = −cµ ⋅ P0 (t ) + λ ⋅ P1 (t ) ⎪ P′(t ) = −[λ + (c − n) ⋅ µ ]P (t ) + λ ⋅ P (t ) + µ ⋅ (c − n + 1) P (t ) , 1 ≤ n ≤ c − 1 ⎪ n n n +1 n −1 ⎨ ⎪ Pc′(t ) = −λ ⋅ Pc (t ) + µ ⋅ Pc −1 (t ) ⎪ Pn (t ) = 0 , n > c. ⎩ Rezolvarea pentru cazul staţionar conduce la soluţia 1 , p0 = c 1 c!⋅∑ ⋅ n n = 0 (c − n)! ρ iar 1 c! ⋅ p0 = ρ c − n p c , 1 ≤ n ≤ c, pn = n (c − n ) ! (c − n)!⋅ρ unde

228

Modele şi algoritmi de optimizare

ρ=
Se poate determina stocul mediu

λ . µ

M[N(t)] = p c ∑

c−n n ρ . n n =0
c

Numărul mediu de cereri pe unitatea de timp este λ, deci numărul mediu de 1 λ , va fi , iar numărul cereri pe intervalul mediu de timp de avans, egal cu

µ

µ

mediu de cereri satisfăcute pe intervalul de timp de avans este M[R] = c−M[N(t)]. Stabilirea funcţiei obiectiv Fie cv – preţul de vânzare al unei unităţi de stoc şi h − costul de stocare pe intervalul de timp de avans mediu Profitul pe perioada T este B(c) = M[R]·cv−h·M[N(t)] = c v ⋅ c − (h + v) ⋅ unde x n −x ⋅e . n = 0 n! c fiind o variabilă întreagă, condiţia B’(c) = 0, revine la B(c+1)−B(c) = 0, adică ⎡ E (ρ ) E (ρ ) ⎤ h = ρ ⋅⎢ c − c −1 ⎥. h + cv ⎣ E c +1 ( ρ ) E c ( ρ ) ⎦ E c ( x) = ∑
c

1

µ

.

c ⋅ E c ( ρ ) − ρE c −1 ( ρ ) , Ec (ρ )

Dându-se h, c, cv, ultima relaţie permite determinarea stocului optim pentru obţinerea unui profit maxim.

B. Cererea nesatisfăcută se păstrează Pot exista cel mult m cereri nesatisfăcute şi atunci numărul de unităţi din stoc satisface relaţia −m≤ n ≤ c.
Analogia cu modelul de aşteptare Exp( µ )/Exp(λ )/c : (m, FIFO)

9. Elemente de teoria stocurilor

229

Formularea problemei. Să se determine nivelul optim al stocului c în funcţie de ρ, L, costul unitar de stocare h şi costul unitar al lipsei de stoc d. În acest caz N(t) reprezintă numărul de cereri înregistrate, 0 ≤ N(t) ≤ c+m. În stoc vor exista j = c−N(t) unităţi. Determinarea coeficienţilor λn, µn, 0 ≤ n ≤ c+m Dacă există n cereri înregistrate, intensitatea cu care apare o nouă cerere este λn = λ, 0 ≤ n ≤ c+m, λn = 0 pentru n > c+m. Intensitatea satisfacerii cererilor µn se determină astfel. Dacă există n cereri la un moment dat t, 1 ≤ n ≤ c, atunci ele se pot satisface cu unităţile ce vor sosi în stoc cu intensitatea µ, deci µn = n⋅µ , 1 ≤ n ≤ c. Dacă c ≤ n ≤ c+m, nu pot sosi în stoc decât c unităţi ce au fost comandate, care intră în stoc cu intensitatea µ, deci numai c din cele n cereri vor fi satisfăcute, atunci µn = c⋅µ , c ≤ n ≤ c+m. Deoarece numărul maxim de cereri ce se pot realiza este c+m, rezultă că µn = 0, pentru n > c+m. Astfel, ecuaţiile de stare ale modelului sunt ⎧ P0′ (t ) = −λ ⋅ P0 (t ) + µ ⋅ P1 (t ) ⎪ P ′ (t ) = −(λ ⋅ + n ⋅ µ ) ⋅ P (t ) + λ ⋅ P (t ) + µ ⋅ (n + 1) ⋅ P (t ) 1 ≤ n ≤ c ⎪ n n n −1 n +1 . ⎨ Pn′ (t ) = −(λ ⋅ + S ⋅ µ ) Pn (t ) + λ ⋅ Pn −1 (t ) + µ ⋅ S ⋅ Pn +1 (t ) c≤n≤c+m ⎪ ⎪ Pc′+ m (t ) = −c ⋅ µ ⋅ Pc + c (t ) + λ ⋅ Pc + m −1 (t ). ⎩ Soluţia pentru cazul staţionar în funcţie de ρ =

λ este µ

⎧ρ n 1≤ n ≤ c ⋅ p0 ⎪ n! ⎪ n ⎪ ρ p n = ⎨ n−c ⋅ p0 c ≤ n ≤ c + m ⎪ c!⋅c ⎪ ⎪0 n>c+m ⎩
c+m

(9.11)

Din

∑p
n =0

n

= 1 deducem
p0 = 1
m +1

⎛ρ⎞ 1− ⎜ ⎟ n c c −1 ρ ρ c⎠ ∑ n! + c! ⋅ ⎝ ρ n =0 1− c Se pot determina acum: − numărul mediu de unităţi existente în stoc

(9.12)

230

Modele şi algoritmi de optimizare

M[N+(t)] =

∑ (c − n ) p
n=0 c+m

c

n

,

− numărul mediu de unităţi lipsă din stoc
M[N−(t)] =
n = c +1

∑ (c − n ) p

n

.

Astfel, funcţia de cost care trebuie optimizată este C(c)= M[N+(t)]·h− M[N−(t)]·d. Notăm Q( n) = ∑ p j − funcţia de repartiţie a variabilei aleatoare discrete n.
j =0 n

Atunci C ′(c) ≈ C (c + 1) − C (c) = h ⋅ ∑ (c + 1 − n) ⋅ p n − d ⋅
n =0 c +1 c +1+ m n =c + 2

∑ (c + 1 − n ) ⋅ p
n

n

− h ⋅ ∑ ( S − n) ⋅ p n + d ⋅
n =0

S

S+L

n = S +1

∑ ( S − n) ⋅ p

=

= h ⋅ ∑ (c + 1 − n − c + n ) ⋅ p n − d ⋅
n =0

c

c+m

− d ⋅ (c + 1 − c − m − 1) ⋅ p c +1+ m = h ⋅ Q(c) − d ⋅ (1 − Q(c) ) . d Din condiţia de optim, C’(c)=0, se obţine Q(c) = . d +h Pentru a găsi o soluţie întreagă a acestei ecuaţii se poate folosi următorul algoritm. Pas 0. Intrare m, d, h, ρ; d k := , c := 0 ; d +h Pas 1. c:=c+1; Calculează p0 conform cu (9.12) şi pn, 1 ≤ n ≤ c + m , conform cu (9.11); Σ := p 0 ; i := 0 ; Pas 2. i:=i+1 ; Σ:= Σ+pi ; dacă Σ<k şi i<c+m mergi la Pasul 2; Pas 3. Dacă Σ<k şi i=c+m mergi la Pasul 1 ; Pas 4. Dacă Σ ≥ k şi i ≤ c + mL atunci c este optim. Stop! Se observă că algoritmul determină acea valoare întreagă pentru care d Q (c − 1) < ≤ Q (c) . d +h

n = c +1

∑ (c + 1 − n − c + n ) ⋅ p

n

9.7. Probleme propuse

9. Elemente de teoria stocurilor

231

1. Din experienţa anilor trecuţi, universitatea are nevoie pentru consumurile curente de 1200 de cutii de hârtie A4 pentru un an. Costul de lansare a unei comenzi de reaprovizionare cu hârtie este de 150 000 lei, iar pentru depozitarea unei cutii se consideră că se cheltuiesc 35 000 lei pe un an. Să se stabilească un plan optim de aprovizionare cu hârtie A4, care să conducă universitatea la cheltuieli minime. Se consideră că anul are 300 zile lucrătoare şi că nu se admite lipsa hârtiei în depozit. R. Pentru un an avem: aopt=101.42 cutii ≈ 101 cutii, costul total anual este de 3 549 647.87, numărul de comenzi lansate într-un an este 12, Topt ≈ 25 zile. 2. Firma care se ocupă cu semaforizarea intersecţiilor din Capitală are nevoie de 10 000 de becuri pe an. Costul de lansare a unei comenzi de reaprovizionare este de 1 500 000 lei, costul anual de păstrare a unui bec este de 3500 lei. Presupunând că anul are 300 zile lucrătoare şi că nu se admite lipsa becurilor din depozit, să se determine: a) cantitatea optimă de reaprovizionare b) costul total anual al stocării c) câte comenzi de reaprovizionare vor fi lansate anual.

R. a) Qopt=2927.7 ≈ 2928 , b) CT =10 246 950.77 ≈ 10 246 951 , c) N=3.42 ≈ 3 .
3. RomTelecom cumpără anual consumabile în valoare de 500 000 euro. Costul de lansare a unei comenzi de reaprovizionare este de 80 euro, iar costul anual de păstrare este de 20% din valoarea consumabilelor păstrate. Să se determine: a) care este valoarea optimă a unei comenzi de reaprovizionare? b) de câte ori într-un an se lansează cereri de reaprovizionare? c) care este costul total anual de lansare a comenzilor? d) care este costul total anual de stocare?

R. a) Valoarea optimă a comenzii de reaprovizionare este 20 000 euro; b) se lansează într-un an 25 cereri de reaprovizionare; c) costul total anual de lansare a comenzilor de reaprovizionare este de 2000 euro; d) costul total anual de stocare este de 4000 euro.
4. O firmă de reparaţii aparatură electronică are o componentă pentru care poate aplica modelul cu lipsă de stoc. Cererea nuală este de 2000 unităţi, costul anual unitar de păstrare este h=10 u.m. , costul de lansare a unei comenzi de reaprovizionare este de s=25 u.m. , costul anual unitar al lipsei de stoc este d=30 u.m.. Se presupune că anul are 250 zile lucrătoare. Să se determine: a) mărimea optimă a comenzii de reaprovizionare b) numărul maxim de unităţi lipsă din stoc pe perioada lipsei de stoc. c) nivelul maxim al stocului d) ciclul optim de reaprovizionare

232

Modele şi algoritmi de optimizare

e) costul total anual

R. a) mărimea optimă a comenzii de reaprovizionare a opt = 115
b) numărul maxim de unităţi lipsă din stoc pe perioada lipsei de stoc, S=29. c) nivelul maxim al stocului Imax= a opt − S =86 d) ciclul optim de reaprovizionare, Topt=11.4 zile lucrătoare e) Ch=322, Cs=435, Cd=110 şi atunci, costul total anual, CT=867 .

5. O companie trebuie să asigure un produs chimic (soluţie) la fiecare 6 luni unui client. Cum procesul de producţie durează două luni, producţia trebuie începută înaintea formulării cererii de către client. Câţi litri trebuie produşi ştiind că : preţul de vânzare este de 20 u. m. / litru, costul de producţie este de 15 u. m. / litru, lipsa de stoc este rezolvată prin cumpărarea soluţiei de la altă firmă cu 19 u. m. / litru, surplusul se vinde cu 5 u. m. / litru. Din experienţa care există cererea se consideră ca fiind N (1000,100). Care este planul de producţie optim ? 4 = 0.29 . Din tabela Rezolvare. c-=19-15=4, c+=15-5=10, P (a ≤ a opt ) = 4 + 10 repartiţiei normale standard

∫ e dx = 0.29 2π − ∞ se ia z=0.55. Atunci aopt=µ-0.55σ=1000-0.55⋅100=0.945 litri. În acest caz, costul de subestimare este mai mic decât cel de supraestimare şi atunci compania îşi asumă un risc mai mare de apariţie a lipsei de stoc. La valoarea aopt obţinută, probabilitatea de a avea surplus este 0.29, iar cea de a avea lipsă de stoc este 0.71 .
P(a ≤ z ) =

1

z

x2 2

6. Folosind algoritmul general din §9.4. să se rezolve următoarea problemă : Un magazin de încălţăminte bărbătească vinde în medie la fiecare 3 luni 500 perechi de pantofi negri. Făcând aprovizionarea în loturi de câte 500 perechi de pantofi, magazinul obţine de la producător cel mai mic preţ petru o pereche, 28 u.m. Costul de depozitare este 20% din preţul de achiziţie. Ştiind că o lansare de comandă de aprovizionare este de 30 u.m. şi că producătorul oferă şi alte reduceri de preţuri în funcţie de mărimea comenzii, conform cu Tabelul 9.8, să se stabilească mărimea optimă a comenzii de reaprovizionare a magazinului şi să se precizeze dacă este mai avantajoasă vechea politică de reaprovizionare.
Tabelul 9.8 Cantitate Preţ unitar 0 – 99 36 100 – 199 32 200-299 30 28 ≥300

ANEXĂ Noţiuni generale de probabilităţi şi statistică matematică
A.1. Câmp de evenimente. Axioma lui Kolmogorov

A.1.1. Evenimente. Probabilităţi
Fie Ω o mulţime nevidă dată, K o familie de submulţimi ale lui Ω, K ⊂ P (Ω). Elementele lui K le numim subevenimente. Familia K se numeşte câmp complet aditiv dacă sunt verificate următoarele axiome: A1. (∀) X ∈ K , cX ∈ K (cX=Ω \ X) A2. U X α ∈ K dacă Xα ∈ K , (∀) α∈ I , I familie de indici cel mult
α ∈I

numărabilă ( I – submulţime a lui N ).

A.1.2. Probabilitate
Funcţia de mulţime P : K → R se numeşte probabilitate dacă: P1. (∀) X ∈ K , P(X) ≥ 0; P2. (∀)I familie de indici cel mult numărabilă, este îndeplinită relaţia: X α ∈ K , (∀)α ∈ I , X α ∩ X β = φ , α , β ∈ I , α ≠ β ⇒ ⎞ ⎛ ⇒ P⎜ U X α ⎟ = ∑ P ( X α ) ; ⎟ ⎜ ⎠ α ∈I ⎝ α ∈I P3. P(Ω) = 1.

A.1.3. Câmp de probabilitate complet aditiv
Câmp de probabilitate complet aditiv este tripletul {Ω , K , P} , iar Ω se numeşte evenimentul sigur şi φ – evenimentul imposibil. P(Ω) = 1, P(φ ) = 0 .

234

Modele şi algoritmi de optimizare

A.1.4. Probabilitate condiţionată
Fie {Ω , K , P} un câmp de probabilitate complet aditiv, A, B∈ K cu P(B)>0. Numim probabilitatea evenimentului A condiţionată de B şi notăm P( A ∩ B) PB(A) sau P(A⏐B) raportul . P( B)

A.1.5. Evenimente independente
Fie {Ω , K , P} un câmp de probabilitate complet aditiv şi A, B ∈ K . Spunem că evenimentele A şi B sunt independente dacă se verifică relaţia: P ( A ∩ B) = P ( A) ⋅ P ( B ) . Dacă evenimentele A şi B sunt independente, atunci au loc relaţiile: P (cA ∩ B) = P (cA) ⋅ P ( B ) P ( A ∩ cB) = P( A) ⋅ P (cB) P (cA ∩ cB) = P(cA) ⋅ P (cB).

Observaţie. Dacă A şi B sunt independente, atunci PB(A) = P(A).

A.2. Variabile aleatoare

Fie

{Ω , K

, P}

un câmp de probabilitate complet aditiv sau câmp de

probabilitate şi X o funcţie, X : Ω → R. Aplicaţia X este variabilă aleatoare ω dacă { ∈ Ω X (ω ) > c}∈ K , pentru (∀) c ∈ R. .

Proprietăţi Teorema 1. Fie X o variabilă aleatoare şi b un număr finit. Atunci: a) X + b b) b⋅ X c) X
d) X 2 1 e) , pentru X ≠ 0 X sunt de asemenea variabile aleatoare.

Anexă

235

Teorema 2. Dacă X şi Y sunt două variabile aleatoare, atunci: a) X − Y b) X + Y c) X ⋅ Y X , pentru Y ≠ 0 d) Y sunt variabile aleatoare.

A.2.1. Funcţia de repartiţie
Fie x ∈ R şi X o variabilă aleatoare. Notăm F(x) = P( X (ω)) < x ) (de fapt, F ( x) = P ( { ∈ R X (ω ) < x} ) . Funcţia F se numeşte funcţia de repartiţie a ω variabilei aleatoare X .

Exemplu. Dacă X este o variabilă aleatoare discretă (ia numai un număr finit sau o infinitate numărabilă de valori), atunci funcţia de repartiţie este suma probabilităţilor valorilor lui X (ω) situate la stânga lui x.
x 0 p 0.2 1 0.3 2 0.1 3 0.3 4 0.1

Deci, pentru variabila aleatoare discretă, F ( x) = P( X < x) = ∑ P ( X = x i ) .
xi < x

⎧0 ⎪0.2 ⎪ ⎪0.2 + 0.3 ⎪ F ( x) = ⎨ ⎪0.2 + 0.3 + 0.1 ⎪0.2 + 0.3 + 0.1 + 0.3 ⎪ ⎪1 ⎩

x≤0 0 < x ≤1 1< x ≤ 2 2< x≤3 3< x ≤ 4 4< x

Proprietăţi Teorema 3. Fie X o variabilă aleatoare, F funcţia sa de repartiţie şi x1, x2 ∈ R. Atunci: a) P( x1 ≤ X < x2 ) = F( x2 ) − F( x1 ) ; b) P( x1 < X < x2 ) = F( x2 ) − F( x1 ) − P(X = x1 ) ; c) P( x1 < X < x2 ) = F( x2 ) − F( x1 ) − P(X = x1 ) + P(X = x2 ) ; d) P( x1 ≤ X ≤ x2 ) = F( x2 ) − F( x1 ) + P(X = x2 ) . Teorema 4. Fie X o variabilă aleatoare şi F funcţia sa de repartiţie. Atunci:

236

Modele şi algoritmi de optimizare

a) F( x1 ) ≤ F( x2 ) , x1 < x2 ; b) lim F ( x) = F (+∞) = 1 ; lim F ( x) = F (−∞) = 0 ;
x →∞ x → −∞

c) F( x − 0) = F( x ) (continuitate la stânga).

A.2.2. Densitate de repartiţie
F ( x) = ∫
x

Dacă există o funcţie nenegativă

f( y )

astfel încât

−∞

f ( y )dy ,

(∀)x∈R , atunci numim funcţia f densitate de repartiţie sau de probabilitate.
Proprietăţi a) f ( x ) ≥ 0 , (∀) x ∈ R ;

b) (∀) x1 , x2 ∈ R , P(x1 ≤ X < x 2 ) = ∫ f ( x)dx ;
x1

x2

c)

−∞

f ( x ) dx = 1 .

A.2.3. Variabile aleatoare independente în sensul Steinhaus−Kaç
Fie

( X α )α∈I

, I – familie oarecare de indici. Spunem că aceasta este o familie

independentă în sensul Steinhaus−Kaç dacă, (∀) J ⊂ I , J finită, avem: ⎛ ⎞ − − P⎜ I X α 1 (−∞, aα ) ⎟ = ∏ P X α 1 (−∞, aα ) . ⎜ ⎟ ⎝ x∈J ⎠ α ∈J

(

)

A.2.4. Valoare medie. Dispersie. Momente
Fie {Ω , K , P} un câmp de probabilitate şi X o variabilă aleatoare. Se numeşte media variabilei aleatoare X valoarea M [ X ] = ∫ X (ω )dP .

Dacă

variabila aleatoare este discretă, atunci M [ X ] = ∑ a i P ( X = a i ) . Dacă variabila
i∈I

aleatoare are densitatea de probabilitate f, atunci M [ X [= ∫ xf ( x)dx .
−∞

Proprietăţi Fie X , Y – variabile aleatoare, iar a, b – constante reale. Atunci:

Anexă

237

a) M[ a X + b] = aM[X] + b ; b) M[ X + Y] = M[X] + M[Y] ; c) M[ X ⋅ Y] = M[ X] ⋅ M[ Y] numai dacă X şi Y sunt independente. Dispersia unei variabile aleatoare X este 2 2 D 2 [ X ] = M ( X − M [X ]) = M X 2 − (M [ X ]) .

[

] [ ]

Proprietăţi Fie X , Y – variabile aleatoare independente, iar a, b – constante reale. Atunci: a) D[ a X + b] = a2D[X] ; b) D[ X + Y] = D[X] + D[Y] .

Abaterea medie pătratică se defineşte ca fiind σ [ X ] = D 2 [ X ] . Momentul de ordinul r (r>1) al unei variabile aleatoare este M r [ X ] = ∫ X r (ω )dP (ω ) = ∫ x r f ( x)dx
−∞ ∞

dacă X are densitatea de probabilitate f.

A.3. Câteva repartiţii clasice

A.3.1. Repartiţia uniformă
O variabilă aleatoare X urmează repartiţia uniformă pe intervalul [a,b] dacă are densitatea de probabilitate ⎧ 1 ⎪ dacã x ∈ [a,b] f ( x) = ⎨ b − a ⎪ 0 altfel . ⎩ Funcţia sa de repartiţie este x x−a F ( x) = ∫ ρ (t )dt = , (∀)x ∈ [ a, b] . b−a a Pentru variabila aleatoare uniformă X media şi dispersia sunt 1 1 M [ X ] = ( a + b) , D 2 [ X ] = (b − a ) 2 . 2 12

A.3.2. Repartiţii Markov

238

Modele şi algoritmi de optimizare

În modelele de aşteptare intervin repartiţia Poisson pentru modelarea sosirilor în sistem şi repartiţia exponenţială pentru modelarea timpilor de servire. Cele două repartiţii, prima discretă şi cea de-a doua continuă, sunt repartiţii complementare. Ambele sunt numite repartiţii Markov. Repartiţia Poisson O variabilă aleatoare discretă X urmăreşte repartiţia Poisson de parametru λ dacă n! unde λ>0 , iar n=0, 1, 2, ... Pentru acest tip de variabilă aleatoare M[X]= λ şi D2[X]= λ.. Repartiţia exponenţială O variabilă aleatoare are repartiţia exponenţială dacă are densitatea de probabilitate f (t ) = λe − λxt , t ≥ 0 , λ > 0 , iar funcţia de repartiţie este F (t ) = 1 − e − λt , t ≥ 0 . Dacă Y a Exp(λ ) , atunci M [Y ] = ⎛1⎞ , iar D 2 [Y ] = ⎜ ⎟ . λ ⎝λ⎠ 1
2

P ( X = n) = f ( n) =

λn

e −λ ,

Repartiţia Erlang(λ,n) Fie Y1, Y2,..., Yn , n variabile aleatoare repartizate Exp(λ) şi independente, iar X = ∑ Yi . Variabila aleatoare X este repartizată Erlang(λ,n) şi are densitatea de
i =1 n

repartiţie
f ( x) =

λn
Γ ( n)

x n−1e −λx ,

iar Γ este funcţia gama (funcţia lui Euler de speţa a II-a) Γ(a) = ∫ x a −1 e − x dx .
0

Dacă X a Erlang (λ ) atunci M [ X ] =

n

λ

, iar D 2 [ X ] =

n3

λ2

.

A.3.3. Repartiţia normală unidimensională a lui Gauss

Anexă

239

O variabilă aleatoare X urmează repartiţia normală dacă are densitatea de probabilitate f ( x) = iar funcţia de repartiţie 1

( x−µ )2 2σ 2

σ 2π

e

(∀)x ∈ (− ∞, ∞ ) ,
x

σ 2π −∞ unde M[X]=µ, iar D2[X]=σ2. Când µ=0 şi σ=1 , variabila X se numeşte variabilă
aleatoare normală standard (sau redusă), iar pentru aceasta F(x) este tabelată.

F ( x) =

1

∫e

(t − µ )2 2σ 2

dt ,

A.3.4. Repartiţia Beta
O variabilă aleatoare X urmează repartiţia Beta de parametri a şi b dacă are densitatea de repartiţie ⎧ 1 x a −1 (1 − x) b −1 (∀)x ∈ (0,1) ⎪ f ( x ) = ⎨ B ( a, b) , ⎪0 altfel ⎩ unde B(a,b) este funcţia beta (funcţia lui Euler de speţa I) Γ(a )Γ(b) B ( a , b) = , a>0 , b>0. Γ ( a + b) Pentru o variabilă aleatoare de acest tip, 2 a 1 ⎛ a ⎞ . M[X ] = şi D 2 [ X ] = ⎜ ⎟ a+b ⎝ a + b ⎠ a + b +1

A.4. Procese aleatoare
Fie {Ω , K , P} un câmp de probabilitate şi E = { X : Ω → R X variabilã aleatoare} , T o mulţime oarecare de numere reale. Se numeşte proces aleatoriu sau proces stochastic cu mulţimea de parametri T o aplicaţie ξ : T → E . Considerăm că variabilele din E descriu starea unui anumit sistem, iar mulţimea T reprezintă timpul. Astfel, un proces aleatoriu reflectă evoluţia în timp a unui real sistem dat. Dacă mulţimea T este finită, procesul aleatoriu este echivalent cu un vector aleatoriu. Frecvent T=R, T=[0, ∞) sau T=[0, 1] şi se spune că procesul aleatoriu este cu timp continuu. Dacă T=Z sau T=N termenul de proces aleator se înlocuieşte cu cel de lanţ.

240

Modele şi algoritmi de optimizare

După cum o variabilă aleatoare se consideră determinată din punct de vedere probabilistic atunci când i se cunoaşte funcţia de repartiţie, pentru definirea unui proces aleatoriu ar trebui cunoscute toate funcţiile de repartiţie finit dimensionale, adică (∀)n ∈ N , (∀)t1 , t 2 , ... , t n ∈ T şi (∀)x1 , x 2 , ... , x n ∈ R trebuie să fie cunoscute probabilităţile Ft1 , t2 ,...,tn ( x1 , x 2 , ..., x n ) = P ω ξ t1 (ω ) < x1 , ξ t2 (ω ) < x 2 ,..., ξ tn (ω ) < x n .

({

})

În cele ce urmează vom presupune că intervalul de interes este în timp. Un proces aleatoriu ξ se numeşte proces Markov dacă pentru (∀)n ∈ N , (∀)t1 , t 2 , ... , t n ∈ T , t1 < t 2 < ... < t n şi (∀)a ∈ R are loc relaţia unde B = (− ∞, a ), sau (− ∞, a ], sau (a,−∞ ), sau [a,−∞ ). . Din această definiţie rezultă că procesul dinamic descris de procesul Markov are o evoluţie în viitor care depinde numai de starea precedentă şi nu de ceea ce s-a petrecut cu el la momentele t1 , t 2 , ..., t n −1 . Un proces aleatoriu ξ : [0, ∞ ) → E se numeşte cu creşteri independente dacă pentru (∀)n ∈ N şi (∀)t1 , t 2 , ... , t n ≥ 0 cu proprietatea că t1 < t 2 < ... < t n , variabilele aleatoare ξ (t1 ) , ξ (t 2 ) − ξ (t1 ) , ξ (t 3 ) − ξ (t 2 ) ,..., ξ (t n ) − ξ (t n −1 ) sunt independente. Un proces aleatoriu cu creşteri independente şi satisfăcând condiţia ξ(0)=0 se numeşte proces Poisson dacă ia numai valori întregi nenegative şi dacă pe orice interval [s,t] , creşterile sale urmează repartiţii Poisson de parametru λ (t − s ) , adică n! Se poate considera că ξ (t ) înregistrează numărul de apariţii ale unui eveniment în intervalul de timp [0, t] . Media şi dispersia procesului Poisson sunt M [ξ (t )] = λt , D 2 [ξ (t )] = λt . Într-un proces Poisson probabilitatea apariţiei unui eveniment este constantă şi apariţia unui eveniment este independentă de ceea ce s-a întâmplat imediat înaintea observaţiei curente. Pot fi considerate procese Poisson: numărul erorilor de tipar dintr-o carte, ziar etc., numărul pieselor defecte dintr-un lot de fabricaţie, vânzările unui produs etc. Repartiţia probabilităţii Poisson aplicată procesului Poisson dă probabilitatea numărului de evenimente pe un interval, [0, t] , date fiind: a) numărul mediu de evenimente pe unitatea de timp, λ=rata sau intensitatea procesului, b) lungimea intervalului, t . Atunci, probabilitatea apariţiei a n evenimente în intervalul [0, t] este e − λt (tλ ) n P( X = n λ , t ) = . n! P ({ξ (t ) ∈ B ξ (t1 ), ξ (t 2 ),..., ξ (t n )}) = P ({ξ (t ) ∈ B ξ (t n )}) ,

[λ (t − s ] P(ξ (t ) − ξ ( s ) = n ) = e −λ (t − s )

n

, (∀)n ∈ N * .

Anexă

241

Notăm m = λt şi atunci m este numărul de evenimente care s-ar produce în intervalul [0, t ] . Într-un proces Poisson este interesant de cunoscut intervalul de timp dintre două evenimente succesive. Vrem să ştim care este repartiţia de probabilitate pentru aceste intervale. Aceasta este repartiţia exponenţială. Pentru m de mai sus P (Y > t ) = e − m reprezintă probabilitatea ca timpul dintre două evenimente să fie mai mare ca t este e-m , adică probabilitatea ca să nu apară nici un eveniment în intervalul [0,t] . Astfel, repartiţia Poisson pentru evenimentele petrecute pe unitatea de timp şi repartiţia exponenţială a intervalului dintre două astfel de evenimente sunt două modalităţi alternative de a descrie acelaşi lucru. Se poate spune că numărul de evenimente pe unitatea de timp este repartizat Poisson cu media λ pe unitatea de timp, sau că intervalul dintre două evenimente este 1 exponenţial cu media µ = unităţi de timp.

λ

A.5. Teste de concordanţă

În practică apare necesitatea comparării a două procese tehnologice diferite, a două metode de cercetare diferite etc. Este necesar să se cunoască dacă metodele comparate dau rezultate identice, iar dacă nu, care este mai eficace. În statistică o diferenţă semnificativă este aceea care nu poate fi pusă pe seama întâmplării la un anumit nivel de probabilitate sau de încredere. De exemplu, cu cât este mai mică diferenţa dintre două medii, cu atât este mai mare probabilitatea ca ele să aparţină unei selecţii extrase din aceeaşi colectivitate de bază. Se numeşte ipoteză statistică orice presupunere cu privire la caracteristicile unei variabile aleatoare, faţă de legea ei de repartitie sau faţă de parametrii ce o determină (Mihăilă şi Popescu, 1978). Mijloacele de verificare a ipotezelor statistice se numesc teste statistice. Când ipoteza se referă la natura repartiţiei, de exemplu afirmaţia că „o variabilă empirică are o anumită repartiţie teoretică”, testul se numeşte test de concordanţă. Afirmaţia H0 : „o variabilă empirică are o anumită repartiţie teoretică” este numită ipoteza H0 , iar ipoteza alternativă: H1 : „variabila empirică poate avea oricare altă repartiţie”. Testul pentru verificarea ipotezei nule dă o regulă de descompunere a spaţiului n-dimensional al selecţiilor Rn (n este volumul selecţiei) în două regiuni R1n , R0n cu
n R n = R1n ∪ R0 şi

R1n ∩ R0n = φ , astfel încât dacă valorile observate se

( X 1 , X 2 ,..., X n ) ∈ R1n se acceptă ipoteza H0 , iar dacă ( X 1 , X 2 ,..., X n ) ∈ R0n

242

Modele şi algoritmi de optimizare

respinge ipoteza H0 . R0n se numeşte domeniul critic sau regiunea critică a testului. Probabilităţile n α = P ( R0 H 0 ) = P(resping H 0 când H 0 este adevărată)

β = P( R1n H 1 ) = P (accept H 0 când H 0 este falsã )
se numesc riscul de genul întâi şi respectiv riscul de genul al doilea. α se mai numeşte şi prag de semnificaţie şi de obicei se ia α=0.05 .

A.5.1. Etapele verificării ipotezelor statistice
1. Enunţarea ipotezei; 2. Se specifică α şi β . Pe baza acestora se va determina numărul de observaţii care trebuie făcute pentru a calcula statistica aleasă; 3. Se determină care valori ale unei anumite statistici, valori ce formează regiunea critică, determină respingerea ipotezei şi care determină acceptarea ipotezei; 4. Se calculează valoarea statisticii de selecţie; 5. Se acceptă sau nu ipoteza, după cum valoarea obţinută pentru statistică este în afara sau în interiorul regiunii critice. Concordanţa dintre repartiţia empirică şi cea teoretică se stabileşte cu ajutorul unui test de concordanţă. Se pune problema racordării unei variabile empirice Xe la o variabilă teoretică X, n x2 L xn ⎞ ⎛x ⎛ x ⎞ ⎟ , ∑ Ni = N , X = ⎜ Xe =⎜ 1 ⎜ ρ (x) ⎟ , ⎟ ⎜N N L N ⎟ i =1 2 n ⎠ ⎝ ⎠ ⎝ 1 adică se cercetează dacă şirul numeric al frecvenţelor absolute empirice Ni reflectă legitatea ipotetică a variabilei aleatoare teoretice. Răspunsul respectiv este util în aprecierea caracteristicilor variabilei empirice prin prisma legităţii variabilei teoretice. Rezolvarea acestei probleme se face în următoarele etape : 1. Estimarea parametrilor ţinând seama de semnificaţia pe care ar putea să o aibă în legătură cu caracteristicile repartiţiei teoretice; 2. Se construieşte variabila pseudoteoretică: x2 L xn ⎞ n ~ ⎛x X =⎜ 1 ⎟ ⎜ N ′ N ′ L N ′ ⎟ , ∑ N i′ = N i =1 2 n ⎠ ⎝ 1 făcându-se astfel legătura între variabila empirică Xe şi cea teoretică X. Determinarea frecvenţelor absolute N i′ , (∀)i = 1, n se face cu ajutorul funcţiei N′ de probabilitate f ( x i ) = i ⇒ N i′ = Nf ( x i ) , (∀) i = 1, n . N

Anexă

243

3. Verificarea concordanţei dintre repartiţia empirică şi cea teoretică, adică se stabileşte dacă diferenţele dintre N i − N i′ , (∀)i = 1, n , sunt datorate întâmplării, adică nu sunt semnificative, sau diferenţele sunt semnificative şi atunci există o neconcordanţă între repartiţia teoretică şi cea empirică.

A.5.2. Testul de concordanţă χ 2
Acest test este datorat lui K. Pearson care a arătat că, în cazul unui sondaj nonexhaustiv în populaţia chestionată, când probabilităţile pi nu sunt aproape de 0 sau 1, iar produsele N i′ = Np i , unde p i = f ( x i ) , (∀)i = 1, n , calculate după estimarea parametrilor, nu sunt prea mici ( N i′ > 5 ), atunci χ c2 = ∑
i =1 2 n

(N i − N i′ )2
N i′

are repartiţia χν cu ν = n − 1 − k , n fiind numărul de valori observate, iar k , numărul parametrilor estimaţi (Văduva, 1977).

Observaţie. Numărul gradelor de libertate este strâns legat de cantitatea de informaţie de care se dispune în cercetarea care se efectuează. Ea se reflectă în volumul n, de
date experimentale, n-1 informaţii sunt independente, deoarece

∑N
i=1

n

i

= N , şi se

mai pierde informaţie pentru determinarea celor k parametri estimaţi. 2 Pentru ν < 30 şi α daţi se determină χ n −1− k , α din tabela repartiţiei χ 2 ,
2 2 ( P χ 2 > χ n −1− k , α = α ) şi dacă χ c2 < χ n −1− k , α , atunci există concordanţă, iar dacă

(

)

χ ≥χ
2 c

2 n −1− k , α

nu există concordanţă între cele două repartiţii.

A.5.3. Testul Kolmogorov
Acest test de concordanţă are la bază următoarea teoremă:

Teorema lui Kolmogorov (Văduva, 1977). Fie X o variabilă aleatoare a cărei funcţie de repartiţie F(x) este continuă şi X1, X2, ..., Xn o selecţie efectuată asupra sa. Fie Fn(x) funcţia de repartiţie empirică (sau de selecţie) asociată selecţiei numãrul valorilor lui X i ≤ x date, adică Fn ( x) = . Atunci n 2 2 ⎛ u ⎞ ∞ ⎟ = ∑ (−1) k e − 2u k = K (u ) . lim P⎜ max Fn ( x) − F ( x) < ⎜ ⎟ n←∞ n ⎠ −∞ ⎝

244

Modele şi algoritmi de optimizare

Funcţia K(u) se numeşte funcţia lui Kolmogorov şi există tabele cu cuantilele ei.
Algoritm pentru aplicarea testului Kolmogorov (Văduva, 1977) Pas 1. Se formulează ipoteza H0: „Variabila aleatoare X are funcţia de repartiţie F(x)”; Pas 2. Se fixează un prag de semnificaţie α (de exemplu, α=0.05 , α=0.01 , α=0.025); Pas 3. Se determină uα , din tabelele funcţiei K(u) , astfel K (uα ) = 1 − α ; Pas 4. Se ordonează crescător X (1) ≤ X ( 2 ) ≤ ... X ( n ) ;

Pas 5. Se calculează d i = Fn ( X (i ) ) − F ( X i ) , (∀)i = 1, n ; Pas 6. Se determină d = max d i ;
1≥ i≤ n

Pas 7. Dacă d <

uα n

, se acceptă ipoteza H0 , altfel se respinge. Stop!

BIBLIOGRAFIE
Anderson, D. R. , Sweeney, D. J., Williams, Th. A. An Introduction to Management Science. Quantitative Approaches to Decision Making, ediţia a 7−a. West Publishing Company, 1997. Anderson, D. R. , Sweeney, D. J., Williams, Th. A., Joseph, D. A. The Management Scientist, ediţia a 7−a. West Publishing Company, 1998. Bergounioux, M. Optimization et Contrôle des systèmes linéaires. Ed. Dunod, 2001. Bonini, C. P. , Hausman, W. H., Bierman, H. Jr. Quantitative Analysis for Management, ediţia a 9−a. Irwin McGraw−Hill, 1997. Cohen, G. Convexite et optimisation, ENPC, Paris, 2000 Cohen, V. La Recherche Opérationnelle. Presses Universitaires de France, 1995. Dragomirescu, M., Maliţa, M. Programare pătratică. Editura Ştiinţifică, Bucureşti, 1968. Fletcher, R. Practical Methods of Optimization, vol. 1 – Unconstrained Optimization şi vol. 2 – Constrained Optimization. John Wiley & Sons, 1981. Fuente, Angel de la. Mathematical Methods and Models for Economists, Cambridge University Press, 2000. Henry-Labordere, A. Recherche Operationnelle. Presses de l’École Nationale des Ponts et Chaussées, 1995. Hsiao, J. C., Cleaver, D.S. Management Science. Houghton Mifflin Company, 1982. Ionescu, H., Dinescu, C., Săvulescu, B. Probleme ale cercetării operaţionale. Editura Didactică şi Pedagogică, Bucureşti, 1972. Kaufmann, A. Metode şi modele ale cercetării operaţionale, vol. I, II. Editura Ştiinţifică, Bucureşti, 1967. Lee, A. M. Teoria aşteptării cu aplicaţii. Editura Tehnică, Bucureşti , 1976. Lange, O. Decizii optimale − Bazele programării. Editura Ştiinţifică, Bucureşti, 1970. Luenberger, D. G. Linear and Nonlinear Programming. Addison−Wesley, 1989. Maliţa, M., Zidăroiu, C. Matematica organizării. Editura Tehnică, Bucureşti, 1971. Mihăilă, N., Popescu, O. Matematici speciale aplicate în economie, Editura Didactică şi Pedagogică, Bucureşti, 1978. Popescu, O şi colectiv. Matematici aplicate în economie, Editura Didactică şi Pedagogică, Bucureşti, 1997. Popescu, O şi colectiv. Matematici aplicate în economie Culegere de probleme, Editura Didactică şi Pedagogică, Bucureşti, 1996. Preda, V şi Bad, M. Culegere de probleme de Cercetări Operaţionale, Tipografia Universităţii din Bucureşti, 1978.

246

Modele şi algoritmi de optimizare

Turban, E., Meredith, J. R. Fundamentals of Management Science, Ediţia a 4−a. Irwin, 1998. Ştefănescu, A. Curs de Cercetări Operaţionale, Tipografia Universităţii din Bucureşti, 1989. Văduva, I. Modele de simulare cu calculatorul. Editura Tehnică, Bucureşti, 1977. Văduva, I., Dinescu, C., Săvulescu, B. Modele matematice ale organizării şi conducerii producţiei, vol. I, II. Editura Didactică şi Pedagogică, Bucureşti, 1974. Vrănceanu, Gh. Gh., Mititelu, Şt. Probleme de cercetare operaţională. Editura Tehnică, Bucureşti , 1983. Zidăroiu, C. Programare dinamică discretă. Editura Tehnică, Bucureşti , 1975. Zidăroiu, C. Programare liniară. Editura Tehnică, Bucureşti , 1983.

INDEX ALFABETIC

abaterea medie pătratică ........................... 235 algoritmul de transport .......................................... 104 Dijkstra .................................................. 25 Kruskal .................................................. 21 lui Prim .................................................. 23 simplex .................................................. 61 simplex dual........................................... 88 simplex revizuit ..................................... 63 Wolfe................................................... 125 alternativă ................................................... 13 analiza convergenţei globale .............................................. 16 locale................................................. 16 marginală ............................................. 215 prospectivă........................................... 142 retrospectivă......................................... 142 sensibilităţii............................................ 68 arbore .......................................................... 20 de acoperire de lungime minimă............ 20 arborescenţă ............................................... 18 arc al grafului............................................... 17 incident .................................................. 18 bază dual admisibilă....................................... 83 primal admisibilă ................................... 83 Bellman, principiul ..................... 15, 141, 150 Bland, regula lui ......................................... 72 câmp complet aditiv................................... 231 capacitatea sistemului de aşteptare ........... 159 câştigul parţial................................................... 143 total ...................................................... 143 celulă ........................................................ 102 cerere ........................................................ 192 ciclare ......................................................... 71 ciclu .......................................................... 102 de reaprovizionare ............................... 194 eulerian .................................................. 20 hamiltonian ............................................ 20 ciclu într-un graf ......................................... 20 circuit.......................................................... 18 eulerian .................................................. 20 hamiltonian ............................................ 20 clienţi ........................................................ 159

coeficienţi de cost redus...................................59, 106 coeficienţii funcţiei obiectiv .................62, 93 condiţia de balansare...................................52 condiţiile de nenegativitate ....................................50 Kuhn-Tucker ..................................49, 125 conul direcţiilor admisibile ..............................48 tangent....................................................48 costul de depozitare.............................................193 lansare ..........................................193, 197 stocare ..................................................197 costul lipsei de stoc ...........................193, 203 costul total.................................................198 costul unitar al subestimării.......................................220 al supraestimării ...................................220 de fabricaţie..........................................208 de transport ............................................53 costuri reduse ..............................................67 criteriu de ieşire din bază ..........................61, 90, 107 intrare în bază...........................61, 90, 106 cuantila inferioară .....................................218 cuplu de probleme duale .............................82 asimetrice ...............................................83 simetrice.................................................83 degenerare...................................................72 densitate de repartiţie ................................234 diagrama activităţilor ..................................30 direcţie admisibilă.......................................48 disciplina de serviciu ................................160 dispersia variabilei aleatoare.....................235 domeniul de admisibilitate........................142 drum............................................................17 critic .......................................................30 eulerian ..................................................20 hamiltonian ............................................20 ecuaţiile de recurenţă..........................................146 Kolmogorov−Feller..............................161 ecuaţiilor de stare......................................180 evenimentul imposibil ..............................................231 sigur .....................................................231

248
factor de serviciu ...................................... 164 FIFO ......................................................... 159 fluxul intrărilor în sistemul de aşteptare ... 159 formă pătratică negativ definită .................................... 122 negativ semidefinită............................. 122 pozitiv definită..................................... 122 pozitiv semidefinită ............................. 122 funcţia lui Kolmogorov ............................ 242 funcţie beta ...................................................... 237 convexă.................................................. 43 de repartiţie .......................................... 233 decompozabilă prospectiv........................................ 143 retrospectiv ..................................... 143 gama .................................................... 236 obiectiv .................................................. 14 pozitiv semidefinită ............................... 43 strict concavă ......................................... 44 strict convexă......................................... 43 grad exterior................................................... 18 interior ................................................... 18 graf complet .................................................. 19 neorientat ............................................... 19 orientat................................................... 17 parţial..................................................... 18 ponderat ................................................. 19 simetric .................................................. 19 simplu conex.......................................... 20 tare conex............................................... 18 indice de lipsă de stoc............................... 205 înfăşurătoarea convexă ............................... 42 intensitate de trafic ................................... 164 intensitatea de trafic.................................. 175 intensitatea optimă de încărcare a stocului223 intensitatea procesului .............................. 238 intensităţi de deces.................................... 161 intensităţi de natalitate.............................. 161 intervalul de control.................................. 195 inventar ..................................................... 193 ipoteză alternativă ............................................ 239 statistică ............................................... 239 lagrangean .................................................. 46 lanţ.............................................................. 19 eulerian .................................................. 20 hamiltonian ............................................ 20 lege de evoluţie......................................... 142 lema Farkas-Minkowski ................................. 48 substituţiei.............................................. 87 lot de reaprovizionare ............................... 194

Modele şi algoritmi de optimizare
lungimea cozii...........................................159 lungimea maximă a cozii ..........................160 lungimea medie a cozii ............. 163, 170, 175 mărimea optimă a comenzii de reaprovizionare ....................................199 marja ...........................................................32 matrice triunghiulară..................................102 maxim global .....................................................45 local........................................................45 mecanismul reaprovizionării ....................................194 serviciului.............................................159 media variabilei aleatoare .........................234 metoda celor două faze .......................................76 colţului nord-vest .................................107 costului minim .....................................108 PERT......................................................29 model ....................................................11, 12 de aşteptare ....................................15, 159 de stocare ...............................................15 modelare......................................................11 modele de simulare................................................183 modele de stocare cu cerere continuă...........................................195 discretă ............................................195 cu mai multe staţii................................195 cu staţie ................................................195 deterministe..........................................195 dinamice...............................................195 statice ...................................................195 stochastice............................................195 momentul lansării comenzii ......................195 muchiile grafului.........................................19 mulţime convexă.........................................42 multiplicatorii lui Lagrange ...........................................48 simplex.................................................104 nivel de reaprovizionare............................195 nivelul mediu al stocului...........................199 nod ascendent................................................18 descendent..............................................18 precedent................................................18 succesor..................................................18 nodurile grafului .........................................17 numărul de clienţi din sistem ....................159 numărul de staţii de serviciu .....................160 numărul mediu al clienţilor de la coadă ....165 numărul mediu de clienţi de la coadă........181 numărul mediu de clienţi din sistem 162, 165, .....................................................169, 181

Index alfabetic
numărul mediu de clienţi serviţi la un moment dat .......................................... 169 numărul mediu de servicii ........................ 176 numărul mediu de staţii de servire care lenevesc ............................................... 177 numărul mediu de staţii în lucru ............... 181 numărul mediu de staţii neocupate ........... 163 obiectiv ....................................................... 13 optimizare............................................. 13, 14 pivot............................................................ 62 poligonul soluţiilor.................................... 74 politică ...................................................... 141 de reaprovizionare ............................... 195 optimă .................................................. 144 pondere ....................................................... 20 ponderea arcelor ......................................... 19 prag de semnificaţie.................................. 240 preţ dual...................................................... 68 preţ umbră ................................................... 91 probabilitate.............................................. 231 problemă de decizii.............................................. 142 cu orizont finit................................. 141 cu orizont infinit ............................. 141 de programare convexă ............................................. 44 liniară ................................................ 15 pătratică .................................... 15, 124 forma canonică........................... 124 forma standard ........................... 126 duală ...................................................... 81 nedegenerată .......................................... 72 primală................................................... 81 probleme de stoc aprovizionare ....................................... 192 producţie............................................... 193 proces aleatoriu ............................................... 237 cu creşteri independente ...................... 238 Markov ................................................ 238 Poisson................................................. 238 stochastic ...................... v. proces aleatoriu proces de naştere şi deces ......................... 160 program de bază ................................................... 57 de transport ............................................ 52 degenerat................................................ 71 optim...................................................... 57 program liniar ............................................. 51 forma canonică ....................................... 55 forma standard ....................................... 55 programare........................... 14, v. optimizare cu restricţii ............................................. 14 dinamică ................................................ 15 fară restricţii........................................... 14

249
punct admisibil............................................15 punct de extrem...........................................43 punct regulat ...............................................47 rata cererii ...................................................193 ieşirilor .................................................193 intrărilor ...............................................193 regiunea admisibilă .....................................15 regiunea critică a testului ..........................240 regula dreptunghiului..................................62 repartiţia Beta ................................................34, 237 Erlang...........................................218, 236 exponenţială .................................164, 236 normală ................................................237 Poisson .................................................236 uniformă...............................................235 repartiţii Markov.......................................236 restricţie activă......................................................46 inactivă...................................................46 restricţii.......................................................13 riscul de genul al doilea................................................240 întâi ......................................................240 rotunjirea rezultatelor................................202 simulare probabilistă.................................184 soluţie admisibilă.........................................15, 56 de bază ...................................................56 degenerată ..............................................56 globală....................................................45 locală......................................................45 nedegenerată ..........................................56 optimă ..............................................15, 57 starea finală ....................................................142 iniţială ..................................................142 staţie de servire ..........................................159 stoc....................................................192, 193 stoc intangibil....................................197, 215 subgraf ........................................................18 tabel simplex...............................................62 teoria aşteptării ..............................................159 grafurilor................................................15 test de concordanţă ...................................239 testul χ2 ........................................................241 lui Kolmogorov....................................242 timpul de aşteptare ...............................................159
P P

250
avans .................................................... 195 neocupare a staţiilor............................. 159 timpul mediu de aşteptare în sistem 163, 165, 170, 177, 182 aşteptare la coadă 163, 165, 170, 177, 182 lenevire ................................................ 163 servire .................................................. 163 topologia sistemului de servire................... 159 traiectoria optimă...................................... 144 vârf adiacent.................................................. 18 al grafului............................................... 19

Modele şi algoritmi de optimizare
variabilă aleatoare ...............................................232 normală standard .............................237 artificială ................................................76 ecart........................................................56 variabile de decizie ...............................................12 externe....................................................12 intermediare ...........................................13 vector de decizie ..................................................141 stare......................................................141

Sign up to vote on this title
UsefulNot useful