Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

274
Bazele cercetării operaţionale MODELAREA MATEMATICĂ ROLUL EI ÎN CERCETAREA OPERAŢIONALĂ Cercetarea operaţională şi disciplinele înrudite Cercetarea operaţională este una din disciplinele care a apărut către sfârşitul primei jumătăţi a secolului nostru şi s-a dezvoltat spectaculos în special în ultimii ani, în strânsă legătură cu o serie de alte discipline ale organizării şi conducerii, cum ar fi cibernetica, informatica sau analiza sistemelor. Pentru a avea o imagine de ansamblu asupra obiectului cercetării operaţionale aplicate în economie, considerăm, deci, util să examinăm succint cum au apărut şi au evoluat disciplinele organizării şi conducerii precum şi legăturile pe care le prezintă între ele. Concepţia "organizării ştiinţifice", conturată către sfârşitul secolului al 19-lea şi începuturile celui actual, consideră unitatea productivă ca un mecanism, în care oamenii, ajutaţi de maşini, lucrează într-un determinism aproape total, pe baza unor dispoziţii acţionând ierarhic, conform unor competenţe riguros definite. Principalii reprezentanţi ai începuturilor organizării ştiinţifice, care formează aşa-numita ″şcoală clasică", stabilesc pentru prima oară o serie de principii ale conducerii ştiinţifice. Printre acestea figurează binecunoscutul (şi încă actualul) principiu al excepţiei, principiul specializării organizaţionale, principiul definirii riguroase a sarcinilor, principiul organizării ierarhice (Staff and Line) ş.a. Între conceptele utilizate de şcoala clasică nu figurează informaţia şi nici decizia: conducerea "mecanismului" economico-social revine (în ultimă instanţă prin parcurgerea treptelor piramidei ierarhice), întotdeauna, unui centru unic de decizie, pentru care informaţiile sunt presupuse, aprioric, disponibile complet şi instantaneu, fără nici un fel de restricţie (de timp, de spaţiu, de tehnică a transmiterii şi înmagazinării etc.). Cu toată perspectiva sa limitată, şcoala clasică are marele merit al desţelenirii unui domeniu virgin. Pionierii organizării ştiinţifice (Taylor, Gantt, Fayol) şi ceilalţi reprezentanţi ai şcolii clasice pun pentru prima oară problema abordării raţionale a mecanismului funcţionării unei întreprinderi. 1

Transcript of Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Page 1: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

MODELAREA MATEMATICĂ ROLUL EI ÎN CERCETAREA OPERAŢIONALĂ

Cercetarea operaţională şi disciplinele înrudite

Cercetarea operaţională este una din disciplinele care a apărut către sfârşitul primei jumătăţi a secolului nostru şi s-a dezvoltat spectaculos în special în ultimii ani, în strânsă legătură cu o serie de alte discipline ale organizării şi conducerii, cum ar fi cibernetica, informatica sau analiza sistemelor.

Pentru a avea o imagine de ansamblu asupra obiectului cercetării operaţionale aplicate în economie, considerăm, deci, util să examinăm succint cum au apărut şi au evoluat disciplinele organizării şi conducerii precum şi legăturile pe care le prezintă între ele.

Concepţia "organizării ştiinţifice", conturată către sfârşitul secolului al 19-lea şi începuturile celui actual, consideră unitatea productivă ca un mecanism, în care oamenii, ajutaţi de maşini, lucrează într-un determinism aproape total, pe baza unor dispoziţii acţionând ierarhic, conform unor competenţe riguros definite.

Principalii reprezentanţi ai începuturilor organizării ştiinţifice, care formează aşa-numita ″şcoală clasică", stabilesc pentru prima oară o serie de principii ale conducerii ştiinţifice. Printre acestea figurează binecunoscutul (şi încă actualul) principiu al excepţiei, principiul specializării organizaţionale, principiul definirii riguroase a sarcinilor, principiul organizării ierarhice (Staff and Line) ş.a.

Între conceptele utilizate de şcoala clasică nu figurează informaţia şi nici decizia: conducerea "mecanismului" economico-social revine (în ultimă instanţă prin parcurgerea treptelor piramidei ierarhice), întotdeauna, unui centru unic de decizie, pentru care informaţiile sunt presupuse, aprioric, disponibile complet şi instantaneu, fără nici un fel de restricţie (de timp, de spaţiu, de tehnică a transmiterii şi înmagazinării etc.).

Cu toată perspectiva sa limitată, şcoala clasică are marele merit al desţelenirii unui domeniu virgin. Pionierii organizării ştiinţifice (Taylor, Gantt, Fayol) şi ceilalţi reprezentanţi ai şcolii clasice pun pentru prima oară problema abordării raţionale a mecanismului funcţionării unei întreprinderi.

O mare parte din ideile şcolii clasice au fost criticate de reprezentanţii diferitelor şcoli care s-au dezvoltat ulterior în ştiinţele organizării, dând naştere, după cum vom arăta în continuare, unor teorii din ce în ce mai abstracte şi mai complexe. Merită să arătăm că în deceniul al şaselea, ca o reacţie împotriva excesului de teoretizare, s-a dezvoltat o aşa-numită şcoală neoclasică, având drept obiectiv reîntoarcerea la practică.

În deceniile care urmează după apariţia şi dezvoltarea şcolii clasice, problemele informaţional-decizionale îşi afirmă prezenţa din ce în ce mai acut, pe măsura creşterii dimensiunilor şi complexităţii organizaţiilor social-economice şi îşi caută rezolvări empirice de cele mai multe ori nu la nivelul necesităţilor. Se stabilesc adesea circuite informaţionale paralele şi supraabundente (redundante) iar în afara fluxurilor oficiale (formale) de date, se dezvoltă o circulaţie neformală, uneori mai eficientă, dar cu caracter strict local. În procesele de decizie continuă să prevaleze rutina, bunul simţ, talentul sau chiar improvizaţia.

În perioada următoare primului război mondial au putut fi constatate, ca urmare a acestor rezolvări empirice, diferenţe considerabile, din punctul de vedere al competitivităţii, între unităţi economice cu structuri organizatorice şi dotări tehnice identice sau similare. Analizele efectuate au condus la o primă includere în perimetrul cercetării privind problemele organizării şi conducerii a aspectelor informaţional-decizionale, până atunci ignorate şi totodată şi a aspectelor relaţiilor umane. Se lărgeşte considerabil problematica organizării şi conducerii şi încep să circule cu din ce în ce mai multă autoritate denumirile de management (ca activitate practică) şi management science (ştiinţa conducerii).

Această perioadă este dominată de "şcoala comportamentului" care pune în centrul preocu-părilor sale observaţia minuţioasă a comportamentului oamenilor în timpul procesului motivaţiilor

1

Page 2: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

care determină coeziunea grupurilor.Diferenţele substanţiale între şcoala comportamentului şi şcoala clasică se referă în special

la aspecte ca: descentralizarea deciziilor, promovarea încrederii între membrii unui grup (şi neglijarea autorităţii) cu accentul pus pe responsabilitate (şi nu pe control)1.

Începând din deceniul al cincilea al secolului nostru2, se produce un fenomen care promovează informaţia şi decizia printre elementele esenţiale ale epocii în care trăim.

La acest fenomen contribuie în primul rând creşterea extraordinară a complexităţii structurale şi funcţionale, a organizaţiilor economice. Procesele de comasare-integrare, apariţia structurilor organizaţionale cu activităţi productive pe arii geografice foarte mari (şi, de asemenea, cu multiple probleme legate de desfacerea produselor), ridicarea nivelului de tehnicitate a instalaţiilor şi corespunzător o specializare accentuată a profesiunilor - sunt numai câteva din aspectele acestei complexităţi a unităţilor productive moderne.

Ca o consecinţă a acestei stări de fapt apare o extraordinară creştere a cantităţii de informaţii deţinute şi manipulate în unităţile productive, accentuată şi de formularea unor condiţii mult mai severe în ceea ce priveşte calitatea informaţiei (pertinenţa şi operativitatea acesteia). Alături de producţia de bunuri apare o producţie de informaţii din ce în ce mai însemnată, informaţia devine chiar un produs sau marfă ce se poate negocia, ajungând, alături de servicii, obiectiv al unor organizaţii specializate.

În ceea ce priveşte procesele de decizie, pentru prima oară se pune în mod riguros şi pe scară largă problema găsirii unor soluţii optime sau apropiate de cele optime, în marea diversitate de probleme organizatorice şi de conducere.

Se poate considera că toate aceste schimbări au condus la o veritabilă revoluţie informaţional-decizională în domeniul organizări şi conducerii şi, ca o consecinţă, la apariţia managementului ştiinţific modern.

Principalele discipline privind conducerea, care au apărut în această etapă sunt: cercetarea operaţională, cibernetica, informatica, psihosociologia organizării şi teoria generală a sistemelor.

Cercetarea operaţională, care poate fi definită succint ca disciplină a optimizării deciziilor cu ajutorul modelării matematice, a apărut în perioada celui de-al doilea război mondial.

Considerată de unii ca reprezentând şcoala matematică în disciplinele organizării şi conducerii, cercetarea operaţională se caracterizează în primul rând prin procesul de elaborare a modelelor, de regulă matematizate, care descriu procesele economice pentru care urmează a se lua decizii cât mai avantajoase. Având în vedere importanţa modelării în cercetarea operaţională, îi vom consacra în întregime paragraful următor.

Cibernetica este ştiinţa care se ocupă cu conducerea şi reglarea sistemelor complexe.Printre încercările cele mai caracteristice de perfecţionare a metodelor folosite în ultimele

decenii în ştiinţele organizării şi conducerii, alături de întrebuinţarea masivă a procedeelor matematice şi a calculatoarelor electronice, se află şi utilizarea concepţiei sistemico-cibernetice.

Poate fi definită ca sistem orice secţiune a realităţii în care se identifică un ansamblu de fenomene, obiecte, procese, concepte, fiinţe sau grupuri interconectate printr-o mulţime de relaţii reciproce, precum şi cu mediul înconjurător şi care acţionează în comun în vederea realizării unor obiective bine definite. Mulţimea elementelor şi a relaţiilor dintre acestea, precum şi a relaţiilor între componente şi ansamblu formează structura sistemului. Mulţimea caracteristicilor unui sistem, la un moment dat, determină starea sa.

Pentru analiza comportamentului sistemelor, în ansamblul lor, s-a propus conceptul de "cutie neagră" care reprezintă sistemul privit ca un tot, făcând abstracţie de procesele sale interne. Cutia neagră primeşte impulsuri din partea mediului înconjurător (″intrările" în sistem) şi, prelucrând aceste impulsuri, le transformă în acţiuni asupra mediului ("ieşirile") din sistem.

Sistemele se pot clasifica: după natura lor (sisteme naturale - cum sunt organismele vii şi

1 Printre reprezentanţii "şcolii comportamentului" pot fi citaţi Mayo, Abraham Zalesnick şi D. G. Peltz.2 Desigur, referirea la un moment în timp nu poate fi decât pur orientativă; aici am avut în vedere apariţia

primei generaţii de calculatoare electronice, a primelor lucrări de cibernetică şi a primelor echipe de cercetare operaţională.

2

Page 3: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

sisteme elaborate - tehnice, economice, conceptuale), după modul de funcţionare (deschise - în care ieşirile nu influenţează intrările, şi închise, în care are loc influenţa intrărilor de către ieşiri) şi după comportament (deterministe sau probabilistice1).

Mecanismul transformării intrărilor în ieşiri poate fi descris cu ajutorul funcţiilor de transfer, care au diverse forme, particulare, după natura sistemului.

Sistemul devine cibernetic2 atunci când apare reglarea (conexiunea inversă, feedback-ul), adică o intervenţie asupra intrărilor în scopul menţinerii ieşirilor la nivelul unor parametri-obiectiv doriţi.

Se înţelege că expresia analitică a funcţiilor de transfer şi a mecanismului reglării conduce la forme matematice foarte diverse şi de cele mai multe ori foarte complexe.

Ansamblul economiei poate fi privit ca un sistem ale cărui elemente componente (organizaţiile social-economice de diferite mărimi) sunt intercorelate prin fluxuri materiale şi informaţionale şi au un comportament orientat spre atingerea unor obiective precise. La rândul lor, organizaţiile, care sunt elemente componente ale sistemului-ansamblu, pot fi considerate sisteme, diviziunea putându-se continua până la identificarea unor componente elementare indivizibile. Scopul cercetării cibernetico-sistemice aplicată la realitatea social-economică îl constituie surprinderea comportamentului sistemelor, una din căile de descriere a acestui comportament fiind găsirea expresiei funcţiilor de transfer şi a mecanismului reglării.

Adoptarea perspectivei cibernetico-economice în ştiinţele social-economice reprezintă un câştig teoretic remarcabil şi este foarte probabil ca, în următorii ani, să asistăm la închegarea unei teorii cibernetico-sistemice complete şi unitare aplicată la realitatea social-economică pe scară largă.

Informatica poate fi definită ca disciplina prelucrării datelor cu ajutorul echipamentelor automate de prelucrare.

Principalele probleme care pot fi considerate ca aparţinând informaticii sunt: culegerea datelor, pregătirea datelor, codificarea acestora, transmiterea lor, prelucrarea datelor pe echipamente, stocarea şi conservarea lor.

Problema dezvoltării explozive a informaticii şi a rolului ei în economie, administraţie, cercetare spaţială, strategie militară, ştiinţă, învăţământ etc, este bine cunoscută şi de nespecialişti. Vom arăta numai că, de la câteva calculatoare electronice şi puţini specialişti în informatică, în 1945, s-a ajuns azi, pe plan mondial, la milioane de calculatoare şi specialişti.

Psihosociologia organizării a apărut ca o nouă orientare în disciplinele conducerii în jurul anului 1950.

St. March, F. Simon şi alţi reprezentanţi ai aşa-numitei "şcoli psihosociologice" abordează, în principal, problema influenţei factorilor psihologici şi sociologici în compartimentul decizional. Luarea deciziilor, în concepţia acestei şcoli, nu este funcţie numai de criterii raţionale ci şi de modul de percepere a stimulilor, depinzând de poziţia decidentului şi de relaţiile cu ceilalţi membri ai grupului.

Cu alte cuvinte, oricât s-ar face apel, în organizarea şi conducerea organismelor economice, la metode şi echipamente de mare fineţe şi tehnicitate, în ultimă instanţă oamenii sunt cei de care depinde funcţionarea eficientă a sistemului, de aceea, trebuie studiate reacţiile individuale şi relaţiile dintre indivizii din sistem.

Teoria generală a sistemelor (TGS), strâns legată de cibernetică, propune o perspectivă care să sintetizeze ideile viabile ale diferitelor orientări în ştiinţele organizării şi conducerii.

Iată câteva din ideile de bază ale teoriei generale a sistemelor, după "Industrial Dynamics" a lui J. Forrester:

a) orice sistem este alcătuit din elemente (părţi) interdependente, acţionând în comun în virtutea unui scop;

1 Sistemele deterministe au o comportare previzibilă, în timp ce sistemele probabilistice au o comportare aleatoare.2 Apariţia şi dezvoltarea ciberneticii (începând din deceniul al 5-lea al secolului nostru) este legată de numele unor

savanţi celebri ca Norbert Wiener, Claude Shannon, Ross Ashby etc.3

Page 4: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

b) ansamblul legăturilor între elementele sistemului, precum şi al legăturilor cu întregul, formează structura sistemului S;

c) complexitatea sistemelor depinde mai mult de structura sistemului decât de natura părţilor sale;

d) două sisteme cu structuri parţial identice se numesc homomorfe (sistemul mai simplu va constitui un model al sistemului homomorf mai complex);

e) două sisteme homomorfe vor avea un comportament asemănător, de unde rezultă posibilitatea de studiu a proprietăţilor sistemelor reale prin simulare;

f) structura (statică) unui sistem preexistă comportamentului său (dinamicii sistemului);g) mişcările într-un sistem se realizează prin fluxuri presupuse concrete şi continue;h) într-un organism economic toate categoriile de mişcări pot fi grupate în următoarele tipuri

de fluxuri interconectate; 1) fluxuri materiale; 2) fluxuri de comenzi; 3) fluxuri băneşti; 4) fluxuri umane; 5) fluxuri de echipamente şi 6) fluxuri informaţionale;

i) fluxul informaţional are un rol central în funcţionarea sistemelor;j) procesele decizionale sunt considerate şi ele ca având un rol central în mecanismul

sistemelor; ele sunt presupuse a fi discontinue;k) reglarea este un element caracteristic al funcţionării sistemelor;l) procesele care au loc în sistemele economice sunt, de regulă, neliniare.

Pe baza acestor premise, Forrester construieşte un procedeu de descriere a comportamentului unei întreprinderi, care utilizează metode cibernetice, informatice, psihosociologice, precum şi procedee de modelare matematică. De asemenea, sunt folosite analogii fizice şi tehnice (de exemplu, fluxurile sunt examinate în sens hidraulic) iar simularea este utilizată ca un procedeu de bază în descrierea comportamentului sistemelor.

În linii mari în "Industrial Dynamics" se urmăreşte înţelegerea stării unui sistem cu ajutorul unor ecuaţii care descriu în timp intrările, transformările şi ieşirile din sistem, pentru cele şase tipuri de fluxuri amintite mai sus. (E vorba deci de găsirea funcţiilor de reacţie ale sistemului.) Pe baza acestei descrieri matematice se pot face simulări pe calculator, cu ajutorul cărora se prevede evoluţia sistemului.

Ideile şi procedeele TGS, impresionante prin complexitatea lor, sunt în curs de sedimentare metodologică şi experimentare practică.

Marea majoritate a propoziţiilor enumerate mai sus şi care stau la baza teoriei lui Forrester se regăsesc explicit sau implicit şi la baza metodologiilor practice de analiză sistemică. Conceptele de flux informaţional şi proces decizional sunt dominante şi în analiza sistemică la fel ca în TGS, iar urmărirea mecanismului transformării intrărilor în ieşiri constituie obiectul principal al analizei de sistem la fel ca şi al TGS. Procedeul folosit de analiza sistemică nu mai este însă matematic, ci bazat pe descrierea explicită, calitativă, a proceselor informaţional-decizionale. În plus, în practica analizei de sistem, odată cu proiectarea proceselor informaţionale şi în special a celor decizionale, se urmăreşte îmbunătăţirea lor, deci se au în vedere criterii de optim. În acţiunea aceasta de proiectare eficientă a procesului informaţional-decizional, analiza sistemică face din plin apel la procedeele cercetării operaţionale şi la tehnicile informaticii. În ceea ce priveşte folosirea metodelor psihosociologice, în analiza de sistem există încercări recente în acest sens.

Rolul modelării în cercetarea operaţională

Conceptul de "model", atât de mult folosit în ştiinţa modernă, este relativ nou, dar metoda modelării este tot atât de veche pe cât sunt preocupările oamenilor pentru cunoaşterea ştiinţifică3.

Putem considera că modelul este o reprezentare izomorfă a realităţii, care, oferind o imagine intuitivă şi totuşi riguroasă, în sensul structurii logice, a fenomenului studiat, facilitează descoperirea unor legături şi legităţi imposibil sau foarte greu de găsit pe alte căi.

3 Oamenii de ştiinţă din toate timpurile au folosit "modele" în cele mai diverse domenii ale cunoaşterii ştiinţifice. Până de curând însă ei utilizau modelarea fără a folosi termenul respectiv.

4

Page 5: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În elaborarea modelelor economico-matematice, teoria economică are un rol deosebit de important întrucât ea formulează categoriile, conceptele şi legile obiective ale realităţii economice. Numai sprijinindu-se pe teoria economică modelele matematice pot reprezenta fidel fenomenele economice.

Modelul, ca instrument al cunoaşterii ştiinţifice, este folosit în foarte numeroase discipline teoretice şi practice. Fără pretenţia de a face o clasificare riguroasă a tipurilor de modele, vom arata că ele pot fi: modele verbal-descriptive - folosite în toate disciplinele nematematizate, modele matematice, modele fizice analogice (de tipul machetelor statice sau dinamice), modele grafice etc.

În ştiinţele economice, în special în disciplinele organizării şi conducerii, modelele sunt utilizate în toată diversitatea de tipuri care există. În ultimele decenii însă, se conturează din ce în ce mai mult tendinţa utilizării cu precădere, în aceste discipline, a modelelor de tip matematic, datorită în special capacităţii acestora de a condensa riguros esenţialul, cât şi posibilităţii lor de a fi programate cu ajutorul calculatoarelor electronice, alcătuind împreună un instrument de investigaţie ştiinţifică de o putere necunoscută până în prezent, o prodigioasă "prelungire" a inteligenţei umane.

O sistematizare metodologică a modelelor matematice întrebuinţate în disciplinele organizării şi conducerii social-economice ar fi riscantă, având în vedere mutaţiile continue şi spectaculoase care au loc în aceste discipline şi, în plus, ar avea un caracter pur scolastic, fără utilitate teoretică sau practică reală. De aceea, ne vom limita, în continuare, să enumerăm principalele tipuri de modele matematice cunoscute în acest domeniu.

După întinderea domeniului studiat, modelele care descriu realitatea economică pot fi: macroeconomice - cele care se referă la economia naţională, la ramură (subramură) sau la economia unui teritoriu mare (un judeţ, o anumită zonă industrială, agricolă etc.) şi microeconomice - la nivel de întreprindere, uzină, trust, combinat etc.

Modelele cibernetico-economice urmăresc să studieze relaţia dintre intrări şi ieşiri într-un organism economic, cu evidenţierea fenomenelor de reglare care determină buna funcţionare a sistemului. Majoritatea modelelor cibernetico-economice sunt macroeconomice.

Modelele econometrice descriu comportamentul organismelor economice cu ajutorul unor sisteme de ecuaţii în care elementele numerice sunt determinate statistic. Şi aceste modele sunt, de obicei, macroeconomice.

Modelele de simulare încearcă să stabilească modul de funcţionare al unor organisme macro sau microeconomice prin acordarea unor combinaţii de valori întâmplătoare variabilelor independente care descriu procesele. Prin "citirea" valorilor pe care le capătă în felul acesta variabilele dependente, se obţin mărimi semnificative în procesul studiat.

Modelele sistemice au drept obiectiv surprinderea ansamblului aspectelor dintr-un organism economic (de exemplu, în modelele Forrester se consideră că prin identificarea celor şase fluxuri caracteristice se poate cunoaşte comportarea sistemului ca un tot).

Modelele cercetării operaţionale se caracterizează prin căutarea unei soluţii optime sau apropiată de optim, pentru fenomenul studiat. Modelele cercetării operaţionale se bazează pe o mare diversitate de procedee matematice şi au aplicaţii la nivel macro, dar în special la nivel microeconomic. Ele reprezintă principalul instrument pentru optimizarea deciziilor în analiza de sistem.

Tipologia de mai sus este foarte relativă, între grupele menţionate existând frecvente asemănări şi întrepătrunderi. Astfel, modelele econometrice sunt adesea de tip cibernetic, simularea se utilizează în mai toate tipurile de modele matematice, modelele cercetării operaţionale pot fi folosite în descrierea sistemică a unui organism etc.

Vom examinăm, în continuare, procedeele practice de elaborare şi utilizare a modelelor matematice în disciplinele organizării şi conducerii.

În primul rând trebuie subliniat faptul că activitatea de modelare, pentru a fi eficientă, trebuie desfăşurată întotdeauna în cadrul analizei de sistem, şi anume ca un moment al etapei de proiectare a noului sistem. O serie de operaţii care se desfăşoară în cadrul analizei de sistem înaintea acestui moment au un caracter pregătitor pentru efectuarea modelării, iar altele, ulterioare ei, sunt necesare pentru aplicarea în practică a modelelor elaborate.

5

Page 6: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Vom arăta în continuare care sunt principalele faze ale elaborării unui model matematic într-o problemă de organizare-conducere social-economică, având grijă să evidenţiem cum se împletesc aceste faze cu alte operaţii ale analizei de sistem.

Prima fază a modelării, care are un caracter pregătitor, este cunoaşterea realităţii în organismul studiat, în scopul îmbunătăţirii mecanismului informaţional-decizional. Descrierea logicii proceselor decizionale, alături de considerarea obiectivelor viitorului sistem, sunt principalele elemente ale cunoaşterii realităţii necesare modelării.

A doua fază a modelării o reprezintă construirea propriu-zisă a modelului. Această operaţie, în marea majoritate a cazurilor din practică, constă în aplicarea unui instrument clasic de modelare ales din gama extrem de variată pe care ne-o pune la dispoziţie teoria cercetării operaţionale. În astfel de situaţii, abilitatea analistului constă în stabilirea corespondenţei dintre realitate şi instrumentul de modelare cunoscut din literatura de specialitate. Există şi cazuri când nu se poate stabili o astfel de corespondenţă, analistul fiind obligat să elaboreze modele noi. Acestea pot fi de două feluri: a) combinaţii de modele clasice, din domeniul teoriei şi b) modele noi propriu-zise. În primul caz, totul se reduce la buna cunoaştere a realităţii şi a teoriei, la care trebuie adăugată o doză de abilitate în combinarea metodelor. În cazul al doilea, este vorba despre creaţie originală. Elaborarea unui model matematic realmente original reclamă, pe lângă profunda cunoaştere a realităţii care urmează a fi modelată, o foarte solidă cultură matematică, imaginaţie şi talent. După cum va rezulta din parcurgerea în prezentul curs a modelelor clasice ale cercetării operaţionale, există o mare diversitate în structura, matematica şi logica modelelor, de la modele foarte simple, neaxiomatizate, cum sunt cele din programarea liniară, la modele combinatorice, în probleme de teoria grafelor, analiza drumului critic şi programarea operativă a producţiei şi până la modele de mare fineţe, prezentate axiomatizat, cum sunt cele ale utilităţii sau deciziilor de grup. Evident, elaborarea în forma axiomatizată a unui model reprezintă un stadiu superior în procesul modelării care, însă, nu poate fi totdeauna atins în practică.

Un model axiomatizat (sistem axiomatic) cuprinde:

- axiomele sistemului, reprezentând propoziţii exprimate în formă matematică, de regulă foarte puţine, care conţin unele adevăruri de mare generalitate privind fenomenul care se modelează, atât de generale, încât toate constatările concrete şi particulare vor putea fi deduse din cele generale;

- reguli de inferenţă, reprezentând prescripţii riguroase, singurele admise în sistem, prin care se trece de la axiome la teoreme, sau de la teoreme deja demonstrate, la altele noi;

- teoreme, adică propoziţii mai mult sau mai puţin particulare, exprimate matematic, deduse prin reguli de inferenţă din aproape în aproape din axiome şi care exprimă proprietăţi ale fenomenului modelat.

Când în procesul de modelare axiomatică se explicitează limitativ conceptele care urmează a fi utilizate, adică se dă de la început o listă a noţiunilor şi operaţiilor matematice admise în sistem, se obţine o formă superioară de sistem axiomatic numit sistem formal.

Sistemele formale sunt încă foarte puţin utilizate în ştiinţă şi cu atât mai puţin în disciplinele organizării şi conducerii economice.

Axiomatizarea şi, în ultima analiză, formalizarea, reprezintă viitorul în modelarea matematică, datorită rigorii excepţionale pe care o introduc, diminuării considerabile a elementelor de intuiţie şi arbitrar, care, deşi mult mai puţine decât în modelele nematematizate, sunt încă prezente în modelarea matematică axiomatizată.

A treia fază a modelării este confruntarea modelului cu realitatea şi eventual experimentarea sa. Această fază se realizează în cadrul implementării sistemului, care poate fi considerată a patra şi ultima fază a modelării.

În încheierea acestui paragraf, să examinăm câteva caracteristici ale instrumentelor de modelare matematică pe care ni le pune la dispoziţie cercetarea operaţională.

Una din principalele caracteristici ale tuturor metodelor cercetării operaţionale este faptul că

6

Page 7: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

unele probleme ale cercetării operaţionale pot fi privite, din perspectivă pur teoretică, ca probleme de matematică pură. Evident, nu aceasta va fi perspectiva pe care o vom adopta în cele ce urmează, întrucât vom privi metodele cercetării operaţionale strâns legate de problemele practice.

Din punct de vedere istoric, unele dintre problemele cercetării operaţionale s-au ivit, ce e drept, în special sub aspect pur matematic, cu mult înainte de a fi apărut activitatea organizată şi denumirea de cercetare operaţională. Astfel, unele noţiuni de teoria grafelor se cunosc de mai bine de un secol, teoria aşteptării îşi are originea în unele lucrări ale lui Erlang din deceniul al 2 -lea al secolului nostru, iar teoria stocurilor apare către anul 1930. Ca disciplină de sine stătătoare, cercetarea operaţională a apărut însă în timpul celui de-al doilea război mondial, prin înfiinţarea unor echipe complexe (matematicieni, ingineri, economişti, biologi, psihologi ş.a.) însărcinate cu optimizarea deciziilor privind unele acţiuni pregătitoare operaţiilor militare. După război, echipele astfel formate s-au reprofilat rapid pentru activităţi paşnice. Dezvoltându-se spectaculos în ultimele trei decenii, preocupările teoretice şi în special practice, în domeniul cercetării operaţionale, au ajuns să antreneze astăzi pe plan mondial sute de mii de specialişti.

În prezent nu se mai poate concepe conducerea unei activităţi tehnico-economice importante fără a face apel la metodele cercetării operaţionale, bineînţeles împreună cu celelalte tehnici moderne cum ar fi informatica, analiza de sistem ş.a..

7

Page 8: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

PROGRAMAREA LINIARĂ

Prezentare generală

Mulţimea sistemelor economice concrete şi multitudinea problemelor conducerii acestora au creat o diversitate de reprezentări economico-matematice, denumite modele.

Varietatea acestora este determinată, în principal, de structura "obiectului" analizat, de scopul cercetării precum şi de informaţia disponibilă.

Modelele de programare matematică şi mai ales subclasa acestora – modelele de programare liniară – ocupă un loc deosebit de important, atât în teoria cât şi în practica economică. Teoria economică a beneficiat de aportul abordării interdisciplinare care a permis aprofundarea analizei eficienţei maximale a sistemelor complexe, a permis descoperirea unor concepte noi ale optimului economic, a perfecţionat metodele de cercetare şi cunoaştere iar practica economică s-a îmbogăţit cu un instrument deosebit de util analizei economice şi fundamentării deciziilor.

Structura modelului general de programare liniară se constituie în primul rând prin mulţimea de activităţi {A1, A2, ... An} care compun sistemul economic analizat, mulţimea de resurse utilizate {R1, R2, ... Rm} precum şi prin relaţiile tehnico-economice dintre acestea. Legătura dintre activităţi şi resurse este determinată de tehnologia de fabricaţie corespunzătoare fiecărei activităţi A j

(j=1,...,n) şi poate fi caracterizată numeric prin vectorul coloană a(j) de componente (a1j, a2j, ... amj). Elementele {aij, i = 1,...,m; j = 1,...,n} se numesc coeficienţi tehnici sau coeficienţi de consum specific şi arată ce cantitate din resursa Ri se consumă pentru producerea unei unităţi din produsul (serviciul) Pj (ca rezultat al activităţii Aj). Toate "tehnologiile" de fabricaţie definite de vectorii coloană a(j) se pot organiza într-o matrice A cu m linii şi n coloane; fiecare linie se referă la o resursă Ri (i = 1,...,m) şi fiecare coloană se referă la o activitate Aj (j = 1,...,n).

Notând cu xj (j = 1,...,n) rezultatul activităţii Aj într-o perioadă dată şi cu bi (i = 1,...,m) cantităţile disponibile din resursele Ri (i = 1,...,m), se pot scrie matematic următoarele restricţii tehnico-economice:

(1) sau Ax b

unde A = ; x = şi b =

Fiecare inecuaţie/restricţie încorporează două afirmaţii:

a. cantitatea consumată dintr-o resursă nu poate depăşi volumul disponibil (propoziţie de logică economică)

b. consumul total Rij din resursa Ri pentru efectuarea activităţii Aj este proporţional cu intensitatea acesteia, adică cu xj, deci Rij

() = aij xj (ipoteză simplificatoare)

() De aici rezultă posibilitatea să calculăm coeficienţii a ij pe baza informaţiilor disponibile privind cantităţile consumate

Rij şi nivelul xj: aij = ; i = 1,...,m; j = 1,...,n

8

Page 9: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Sistemul de restricţii (1) realizează legătura dintre resurse şi activităţi prin intermediul celor m restricţii liniare.

Modelul problemei de programare liniară conţine restricţii de tipul (1) precum şi un criteriu de "performanţă" care să permită evaluarea eficienţei fiecărei activităţi. În funcţie de scopul urmărit, putem alege drept criteriu de eficienţă un indicator care măsoară efortul, unul care măsoară rezultatul sau un indicator exprimat ca raport între rezultat şi efort (sau efort pe rezultat).

Este evident că eficienţa maximă înseamnă minimizarea efortului şi maximizarea rezultatului, iar conceptul de optim se defineşte, în acest caz, ca un program x Rn care minimizează sau maximizează o funcţie obiectiv şi, în acelaşi timp, satisface toate restricţiile tehnico-economice.

Presupunând că fiecare componentă a vectorului linie c = (c1, c2, ..., cn) măsoară eficienţa unei unităţi din rezultatul activităţii Aj, atunci se poate introduce funcţia liniară:

f(x) = c1x1 + c2x2 + ... + cnxn

care evaluează performanţa oricărui program x.Sintetizând, obţinem următorul program de programare liniară:

Relaţiile (1), (2) şi (3) constituie împreună modelul general al unei probleme de programare liniară, având fiecare un rol specific:

1. relaţia (1), unde f(x) = este denumită funcţia obiectiv de eficienţă a problemei,

evaluează eficienţa/performanţa fiecărei variante de program x;

2. relaţiile (2) de tipul reprezintă restricţii de tip resurse; iar restricţiile de tipul

se referă la restricţii tehnico-economice de tip calitativ (şi ca urmare

indicatorul bk este limita inferioară impusă "reţetei optime";3. relaţia (3) xj 0 j = 1,...,n, numită condiţia de nenegativitate a variabilelor, asigură

obţinerea unei soluţii realizabile din punctul de vedere al logicii economice.

După cum s-a arătat la început, structura concretă a unei aplicaţii în economie este determinată în primul rând de obiectivul urmărit.

Astfel, în cazul problemei determinării structurii sortimentale optime a producţiei, se cunosc cantităţile disponibile (cantităţile de care se poate face rost pe perioada analizată) din fiecare materie primă {bi, i =1,...,m}, coeficienţii tehnologici {aij, i = 1,...,m, j = 1,...,n} (aij reprezintă cantitatea din materia primă i necesară fabricării unei unităţi din produsul de tipul j), cantităţile maxime { , j = 1,...,n} şi minime { , j = 1,...,n} ce pot fi produse din fiecare sortiment în perioada analizată şi profiturile unitare {pj, j = 1,...,n} ale fiecărui tip de produs. Se cere găsirea acelor cantităţi xj care trebuie fabricate din fiecare tip de produs astfel încât să se obţină profitul maxim, în condiţiile nedepăşirii disponibilurilor din fiecare resursă.

Pentru simplificarea modelului, se presupune că preţul unui bun nu depinde de cantitatea produsă din acesta sau din celelalte, consumul din fiecare materie primă este direct proporţional cu

9

unde I1 I2 = {1,2,...,m}

(1)

(2)

(3)

Page 10: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

cantitatea produsă şi, pentru fiecare bun, consumurile dintr-o resursă sau alta nu se condiţionează reciproc.

Problema matematică echivalentă este:

În unele probleme, în loc de profiturile pj se cunosc veniturile unitare vj sau costurile unitare cj sau alt criteriu de eficienţă, scopul fiind maximizarea venitului, minimizarea costurilor respectiv optimul indicatorului de eficienţă respectiv, sau toate la un loc. De asemenea pot lipsi condiţiile de limitare a producţiei sau pot exista şi alte condiţii.

La o problemă de programare operativă a producţiei restricţiile se referă la o serie de maşini (utilaje) cu care se execută produsele dorite, b i fiind disponibilul de timp al utilajului i pe perioada analizată iar aij timpul necesar prelucrării unui produs de tipul j pe utilajul i, scopul fiind maximizarea producţiei.

Ca urmare, modelul are forma:

Dacă se doreşte obţinerea unui meniu (reţete furajere), care să asigure necesarurile {b i, i = 1,...,m} dintr-un număr de m substanţe esenţiale organismului, având la dispoziţie un număr de n alimente, cunoscându-se cantităţile {aij, i = 1,...,m, j = 1,...,n} din fiecare substanţă pe care le conţine o unitate de măsură din fiecare aliment şi costurile {c j, j = 1,...,n} unei unităţi de măsură din fiecare aliment, putem scrie modelul:

Variabilele xj reprezintă, în acest caz, cantitatea din fiecare aliment ce va intra în meniu iar

f(x) = este costul total al reţetei definită de vectorul x.

10

Page 11: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Vom încheia exemplificarea cu prezentarea modelului amestecului optim de produse petroliere. Presupunem că o rafinărie dispune de n tipuri de benzine, prin amestecarea acestora urmând să obţină o benzină cu m caracteristici impuse şi la un preţ minim posibil. O serie de caracteristici trebuie să fie îndeplinite cu o limită inferioară (de exemplu cifra octanică), altele cu o limită superioară (de exemplu densitatea sau temperatura de fierbere) şi altele cu egalitate (de exemplu cantitatea necesară), aceste limite fiind , i = 1,...,m1 , , i = 1,...,m2 respectiv , i = 1,...,m3 cu m1 + m2 + m3 = m. De asemenea, trebuie ţinut cont de cantităţile disponibile din fiecare benzină Di, i = 1,...,n. Se cunosc caracteristicile fiecărei benzine disponibile, date într-o matrice A Mmn, unde aij este valoarea caracteristicii i pentru benzina j şi preţurile unitare ale fiecărei benzine, notate pj, j = 1,...,n. Dacă notăm cu xj, j = 1,...,n, cantităţile din fiecare benzină care vor forma amestecul optim, atunci avem de rezolvat problema:

Programarea matematică

Se observă că toate aceste probleme, cu toate că reprezintă situaţii economice total diferite, sunt aplicaţii în sfera activităţii economice ale următoarei probleme de optimizare:

în care funcţiile f,gi : Rn R pot avea orice formă şi proprietăţi (liniare, convexe, continui, diferenţiabile etc) iar poate fi orice submulţime a lui Rn (continuă sau discretă, mărginită sau nemărginită, convexă sau neconvexă, finită sau infinită etc) şi în care dorim să găsim minimul sau maximul funcţiei f în variabilele xi care îndeplinesc restricţiile 1.2 şi 1.3. O astfel de problemă se numeşte problemă de programare matematică.

Funcţia (1.1) se numeşte funcţia obiectiv a problemei de optimizare. În aplicaţiile economice, ea reprezintă criteriul de performanţă urmărit: maximizarea beneficiului, maximizarea producţiei marfă, minimizarea costului producţiei, maximizarea gradului de încărcare al utilajelor sau minimizarea timpului de staţionare al acestora, maximizarea veniturilor etc.

Inegalităţile (1.2), în care gi sunt funcţii de n variabile iar bi sunt constante, se numesc restricţii ale problemei de optimizare. Ele traduc în limbaj matematic condiţiile de natură economică sau tehnologică în care se desfăşoară procesul economic modelat, cum ar fi: nedepăşirea stocurilor

11

Page 12: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

disponibile de resurse (materii prime, capacităţi de producţie, forţă de muncă, fonduri băneşti, timp etc), îndeplinirea sau depăşirea unor indicatori economici (producţia fizică, netă) etc.

Condiţiile (1.3), impuse "direct" variabilelor, depind de natura problemei studiate. De cele mai multe ori, este mulţimea vectorilor x = (xl,...,xn) Rn cu toate componentele nenegative şi acest fapt se justifică prin aceea că, în general, x i reprezintă "nivelele" unor activităţi de producţie, nivele care nu pot fi negative. În unele probleme de optimizare, cum ar fi cele de croire sau ordonanţare, variabilele desemnează mărimi indivizibile şi deci nu pot lua decât valori întregi. Mulţimea va fi formată în acest caz din vectori x cu toate componentele întregi şi nenegative. În alte probleme, ca de pildă cele de afectare, portofoliu etc, variabilele nu pot lua decât valorile 0 sau 1 (variabile bivalente) şi ca atare va fi formată din vectorii x = (x1, …,xn) cu toate componentele 0 sau 1. Caracteristic acestor tipuri de probleme este faptul că devine o submulţime discretă din Rn, de unde şi numele generic de probleme de optimizare discretă dat acestora.

O soluţie a unei astfel de probleme are deci trei proprietăţi:

P1. verifică restricţiile 1.2P2. verifică restricţiile "directe" 1.3P3. optimizează funcţia obiectiv pe mulţimea vectorilor care îndeplinesc condiţiile P1. şi P2.

În teoria programării matematice se folosesc, pentru claritatea şi simplitatea expunerii, următoarele noţiuni:

soluţie a problemei de optimizare = un vector x Rn care verifică restricţiile 1.2soluţie admisibilă a problemei de optimizare = un vector x Rn care verifică restricţiile 1.2 şi 1.3

o soluţie care verifică restricţiile 1.3soluţie optimă a problemei de optimizare = un vector x Rn care verifică restricţiile 1.2 şi

1.3 şi optimizează funcţia obiectiv pe mulţimea tuturor vectorilor cu această proprietate o soluţie care verifică restricţiile 1.3 şi optimizează funcţia obiectiv pe mulţimea tuturor soluţiilor cu această proprietate o soluţie admisibilă care optimizează funcţia obiectiv pe mulţimea soluţiilor admisibile

Izvorâtă din studiul problemelor extremale ale analizei matematice clasice, programarea matematică a cunoscut în ultimele decenii o dezvoltare spectaculoasă, explicabilă numai în parte prin progresele înregistrate în matematică. Într-adevăr, această dezvoltare a fost puternic stimulată de creşterea vertiginoasă a complexităţii activităţilor economice, care a furnizat probleme cu structuri din ce în ce mai complicate, ca şi de rapida perfecţionare a mijloacelor automate de calcul, singurele capabile să testeze eficienţa practică a metodelor teoretice elaborate. La rândul ei, programarea matematică, prin rezultatele ei, a adus un considerabil aport la perfecţionarea metodelor de conducere în economie şi a impulsionat cercetările - în plan teoretic - privind modelarea sistemelor economice complexe, studiul şi interpretarea legilor şi proceselor economice.

În ceea ce priveşte rezolvarea acestor probleme, este evident că varietatea extremă a acestora face imposibilă găsirea unui algoritm practic care să le poată rezolva pe toate, dar putem găsi (sau ne putem aştepta să găsim), pentru fiecare caz particular, un algoritm de rezolvare care să-şi tragă eficacitatea tocmai din folosirea tuturor particularităţilor cazului respectiv. În prezent există sute de algoritmi de rezolvare, cercetarea problemei evoluând din ce în ce mai mult spre testarea şi îmbunătăţirea acestora decât spre găsirea unora noi.

12

Page 13: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Problema de programare liniară

Definiţia 1. Dacă într-o problemă de programare matematică funcţia obiectiv f şi funcţiile gi, din restricţiile 1.2, sunt funcţii liniare atunci problema se numeşte problemă de programare liniară. O problemă de programare liniară este, deci, un caz particular al problemelor de programare matematică şi, ţinând cont de forma oricărei funcţii liniare, rezultă că forma generală a oricărei probleme de programare liniară este:

unde cj (coeficienţii funcţiei obiectiv), aij (coeficienţii restricţiilor) şi bi (termenii liberi) sunt constate reale.

Forma conică şi forma standard a unei probleme de programare liniară

Cu toate că problema de programare liniară este cea mai simplă dintre problemele de programare matematică, ea este încă destul de complicată, prin faptul că orice restricţie poate avea trei forme diferite iar obiectivul poate fi minimizarea sau maximizarea funcţiei f. Este puţin probabil că există un algoritm şi simplu şi aplicabil la toate cazurile.

Din acest motiv este mult mai simplu să găsim o anumită formă (cât mai simplă) cu proprietatea că pentru orice problemă P, există o alta problemă P' de această formă, echivalentă cu problema iniţială P (spunem că două probleme sunt echivalente dacă există un izomorfism între mulţimile soluţiilor celor două probleme şi un homeomorfism între funcţiile lor obiectiv) şi să dispunem de un algoritm care să rezolve problemele de această formă şi de o regulă prin care să găsim soluţia problemei iniţiale P din soluţia problemei P', găsită cu acest algoritm.

În acest sens (dar şi din cauza frecvenţei apariţiei lor în practică) s-au evidenţiat două forme ale problemelor de programare liniară, forma canonică şi forma standard.

Definiţia 2. Spunem că o problemă este la forma canonică dacă are una din următoarele

două forme:

Forma canonică de minim Forma canonică de maxim

Această formă este cel mai des întâlnită în practică (vezi problema determinării structurii sortimentale optime a producţiei sau problema dietei) şi, în plus, restricţiile economice sunt în general inegalităţi şi foarte rar egalităţi. De asemenea, această formă este invariantă la anumite transformări (vezi problema duală) şi asigură existenţa soluţiei (orice problemă la această formă, care are termenii liberi şi coeficienţii restricţiilor pozitivi, are soluţie).

13

Page 14: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Definiţia 3. Spunem că o problemă este la forma standard dacă are forma:

Această formă, deşi nenaturală din punct de vedere economic, este cea care se pretează cel mai bine la rezolvarea cu metodele algebrei clasice.

Propoziţie. Pentru orice problemă de programare liniară P există o problemă la forma canonică PFC şi o problemă la forma standard PFS echivalente cu P.

Demonstraţie. Într-adevăr:

a) orice problemă de maxim poate fi transformată în una de minim şi reciproc folosind relaţia:

max f(x) = – min f(–x)

b) orice restricţie de tipul "" poate fi transformată într-o restricţie de forma "" şi reciproc folosind relaţia:

– –

c) orice restricţie inegalitate poate fi transformată în egalitate, prin introducerea unei variabile suplimentare nenegative şi folosind relaţiile:

şi

Toate variabilele introduse pentru transformarea inegalităţilor în egalităţi se numesc variabile de abatere sau variabile de compensare.

d) orice restricţie egalitate poate fi transformată în restricţii inegalitate, folosind relaţia:

=

e) orice variabilă cu restricţie de semn negativă (x 0) poate fi înlocuită cu o variabilă cu restricţie de semn pozitivă (y 0), folosind relaţia:

x 0

f) orice variabilă fără restricţie de semn poate fi înlocuită cu două variabile cu restricţie de semn pozitivă, folosind relaţia:

x oarecare

14

Page 15: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Se demonstrează fără un efort matematic deosebit că dacă P' se obţine din P folosind doar transformările de mai sus (numite şi transformări elementare) atunci P şi P' sunt două probleme echivalente şi între soluţiile lor optime există o bijecţie.

Din cele de mai sus rezultă cum poate fi adusă orice problemă de programare liniară la forma standard (sau canonică) şi cum se obţine soluţia problemei iniţiale din soluţia problemei la forma standard (sau canonică).

Exemplu: Problemei P de mai jos îi corespunde problema la forma standard PFS alăturată:

P PFS

(min) f = 3x1 –2x2 + 4x3 (max) g = +3a1 + 2y2 – 2z2 – 4x3

Problema PFS are o singură soluţie optimă:

a1 = 3, y2 = , z2 = 0, x3 = 0, x4 = , x5 = 0, x6 = , x7 = 0

care dă un maxim al funcţiei g egal cu .

Acestei soluţii îi corespunde singura soluţie optimă pentru P:

x1 = -3, x2 = , x3 = 0

care dă un minim al funcţiei f, egal cu .

Rezolvarea problemei de programare liniară.

Analiza problemei

Fie o problemă P despre care presupunem (fără a restrânge generalitatea) că a fost adusă la forma standard. De asemenea presupunem (tot fără a restrânge generalitatea) că variabilele problemei au fost numerotate şi denumite xj cu j = 1,...,n (n = numărul de necunoscute), coeficienţii variabilelor din funcţia obiectiv f cu cj (cj = coeficientul variabilei xj), că în ecuaţii variabilele apar în ordinea indicilor, ecuaţiile fiind numerotate de la 1 la m (m = numărul de ecuaţii) şi că am notat cu bi termenul liber al ecuaţiei i şi cu aij coeficientul variabilei j din ecuaţia i. În acest caz putem aşeza variabilele problemei într-un vector cu n componente, coeficienţii funcţiei obiectiv într-un vector cu n componente, termenii liberi într-un vector cu m componente, coeficienţii variabilelor din ecuaţii într-o matrice cu m linii şi n coloane şi vom avea:

x = , c = , b = , A =

15

Page 16: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

(vom nota cu xT, cT şi bT transpuşii acestor vectori şi cu AT transpusa matricei A).Alegerea aşezării ca vectori coloană a fost făcută din raţiuni de uşurinţă a calculelor şi a

memorării acestora. După aceste notaţii, problema poate fi scrisă mult mai simplu:

sau

Se ştie că un sistem de forma Ax = b are soluţie doar dacă rang(A) = rang( ), unde este matricea extinsă obţinută adăugând matricei A vectorul b, în acest caz sistemul devenind echivalent cu sistemul obţinut prin eliminarea restricţiilor care nu corespund minorului principal (dacă sistemul nu are soluţie atunci evident nici problema nu are soluţii, caz care este total neinteresant).

Presupunem că au fost eliminate aceste restricţii. Dacă rang A = n atunci sistemul are o singură soluţie care, dacă este admisibilă, este şi soluţia optimă căutată, altfel problema nu are soluţie. Este evident că şi acest caz este la fel de neinteresant ca primul.

Presupunem deci în continuare că:

rang(A) = m < n

Rezolvarea sistemului Ax = b se poate face într-un mod simplu (cel puţin teoretic) folosind algebra matricială astfel:

împărţim coloanele matricei A în două submatrici: minorul principal (notat cu B, care este o matrice pătratică de dimensiune m şi va fi numit bază a sistemului) şi restul coloanelor (notat cu S, care este o matrice cu m linii şi n – m coloane);

împărţim variabilele problemei în doi vectori: vectorul variabilelor principale (corespunzătoare coloanelor bazei) şi vectorul variabilelor secundare (notat cu xS). Făcând eventual o renumerotare, pentru uşurinţa expunerii şi fiind evident că nu se restrânge generalitatea problemei, presupunem că variabilele principale sunt chiar primele m (această presupunere va fi făcută de câte ori va fi posibil, fără a mai specifica acest lucru).

aducem succesiv sistemul la forma de mai jos:

Ax = b (BS) = b BxB + SxS = b BxB = b – SxS xB = B-1b – B-1SxS

soluţia sistemului va fi submulţimea lui Rn:

DB = {x = {xB,xS} / xS Rn-m oarecare, xB = B-1b – B-1SxS}

Orice alegere a lui xS dă o soluţie. Dintre toate alegerile posibile este remarcabilă (prin simplitatea ei) soluţia xS = 0, care duce la soluţia particulară:

xB =

numită soluţia de bază asociată bazei B. Deci xB este xB = B-1b la care se adaugă n-m zerouri. Cu toate acestea, vor fi ambele numite soluţie de bază, rezultând din context de care este vorba.

16

n – m zerouri

Page 17: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Observaţie: Este evident că fiecărui minor principal al sistemului (= minor de dimensiune m = bază) îi corespunde o unică soluţie de bază. O soluţie de bază care are toate componentele nenule strict pozitive se va numi soluţie de bază admisibilă iar o soluţie optimă care este de bază se va numi soluţie optimă de bază. Se observă că o soluţie de bază are cel mult m componente diferite de 0. Din cauza importanţei lor în rezolvarea problemei, vom evidenţia soluţiile de bază care au mai puţin decât m componente nenule, numite soluţii degenerate şi pe cele care au fix m elemente nenule, numite soluţii nedegenerate.

DB este izomorfă cu Rn, adică are tot atâtea elemente câte puncte sunt într-un spaţiu cu n_–_m dimensiuni. "Alegându-le" din acestea doar pe cele cu toate elementele pozitive, găsim mulţimea în care vom "căuta" vectorul (vectorii) care dă (dau) extremul lui f.

Rezolvarea problemei poate duce la următoarele rezultate:R1. Sistemul Ax = b nu are soluţii sau nu are soluţii admisibile. În acest caz problema

nu are soluţie.R2. Imaginea funcţiei obiectiv pe mulţimea soluţiilor admisibile este nemărginită (la +

într-o problemă de maxim sau la - într-o problemă de minim). În acest caz spunem că problema are optim infinit.

R3. Imaginea funcţiei obiectiv pe mulţimea soluţiilor admisibile este mărginită. În acest caz problema are cel puţin o soluţie şi spunem că problema are optim finit.

Greutatea găsirii soluţiei problemei constă în imensitatea numărului de soluţiilor posibile ale sistemului şi în respectarea condiţiei de nenegativitate a celor printre care căutăm extremul dorit al funcţiei f. Este natural ca primele încercări în rezolvare să caute în primul rând o limitare cât mai puternică a locului în care căutăm. Pe baza unor reprezentări geometrice ale problemei au fost descoperite următoarele proprietăţi ale problemei, care poartă denumirea de teoreme fundamentale ale programării liniare:

Teorema 1. Dacă problema de programare liniară are soluţii admisibile atunci are şi soluţii de bază admisibile.

Teorema 2. Dacă problema de programare liniară are soluţii optime atunci are şi soluţii optime de bază.

Teorema 3. Mulţimea soluţiilor admisibile (optime) este închisă şi convexă. Dacă este şi mărginită atunci punctele extremale ale acesteia sunt chiar soluţiile admisibile (optime) de bază ale problemei.

Cele două teoreme realizează efectiv trecerea către o problemă rezolvabilă pe calculator.

Într-adevăr, deoarece o bază este un minor de ordinul m al matricii A şi unei baze îi corespunde o unică soluţie de bază rezultă că sunt cel mult soluţii de bază, adică un număr finit. În acest moment s-ar părea că nu avem decât să lăsăm calculatorul să calculeze toate soluţiile de bază şi valorile funcţiei obiectiv în cele admisibile găsind-o prin comparare pe cea care dă minimul sau maximul funcţiei printre acestea. Totuşi, această variantă se dovedeşte nepractică la o analiză mai atentă, ţinând cont de următoarele observaţii:

1. faptul că numărul soluţiilor de bază este finit ne asigură doar că problema se va termina cândva, ceea ce, din punct de vedere economic, este evident nemulţumitor. Noi dorim ca problema să fie rezolvată în timp util, adică repede. Rezolvând problema ca mai sus vom avea, pentru o problemă cu 50 variabile şi 20 restricţii, de calculat, listat şi comparat soluţii de bază, adică în jur de 1020. Presupunând că suntem dotaţi cu un supercalculator care ar termina un miliard de baze pe secundă, rezolvarea ar dura 3000 ani. De altfel, o problemă ca cea de sus este foarte mică în comparaţie cu problemele "serioase" ce au peste 1000 de variabile şi 100 de restricţii. În plus, un calculator ca cel de sus nu există încă, deci în nici un caz nu e disponibil întreprinderilor obişnuite.

17

Page 18: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

2. Cu algoritmul de mai sus vom găsi cea mai bună soluţie dintre soluţiile admisibile de bază, fără însă să ştim dacă problema admite, de fapt, optim (ar putea să aibă optim infinit).

3. Nu vom şti dacă un minor de mm este bază decât după ce-i vom calcula determinantul şi nu vom şti dacă soluţia de bază corespunzătoare este admisibilă decât după ce o vom calcula.

4. Soluţia optimă, odată găsită, nu va fi recunoscută ca atare decât după ce vom calcula toate celelalte soluţii de bază, chiar dacă ea a apărut chiar la începutul calculelor.

În concluzie, pentru a fi eficient, un algoritm ar trebui să aibă următoarele proprietăţi:

a) să dispună de un criteriu de recunoaştere a faptului că problema nu are soluţii admisibile;b) să dispună de un criteriu de recunoaştere a faptului că problema are optim infinit;c) să dispună de un criteriu de recunoaştere dacă o soluţie este optimă sau nu;d) să treacă de la o soluţie de bază admisibilă la una cel puţin la fel de bună (o soluţie x este

mai bună decât o soluţie y dacă f(x) > f(y) într-o problemă de maxim şi f(x) < f(y) într-o problemă de minim;

e) să treacă de la o soluţie la cea mai bună dintre soluţiile cel puţin la fel de bune posibile ca succesoare;

f) să nu revină la o soluţie deja analizată;g) să efectueze un număr de iteraţii comparabil polinomial cu dimensiunea problemei.h) să nu introducă erori de rotunjire (sau nu prea mari);i) să fie cât mai simplu de implementat;

Condiţiile de mai sus reprezintă de fapt un algoritm ideal. La începuturile cercetării operaţionale era suficient, de fapt, şi un algoritm care să îndeplinească măcar condiţiile b), c), d), e) şi h). Acest algoritm a fost dat de G.B. Dantzig, în 1947, care la numit algoritmul simplex. El rămâne şi în zilele noastre cel mai eficient algoritm în ceea ce priveşte viteza de lucru, simplitatea şi implementarea pe calculator, pentru problemele care apar efectiv în practica economică.

Totuşi, el nu îndeplinea condiţiile a), f) şi g). Condiţia a) este relativ uşor de îndeplinit şi ea este acoperită prin introducerea unei faze

iniţiale suplimentare la algoritmul simplex, rezultând algoritmul simplex în două faze.Condiţia f) a fost pusă în momentul în care s-a observat că, în condiţiile existenţei soluţiilor

degenerate, se poate ajunge în situaţia când, de la o soluţie dată, nu se poate ajunge decât la una la fel de bună şi tot aşa, astfel încât, dacă nu se iau măsuri de evitare, se poate ajunge la o soluţie care a mai fost, fenomen numit ciclare. Astfel de exemple a fost efectiv găsite, unul fiind exemplul lui Beale prezentat mai jos:

Se observă imediat baza admisibilă B0 = (a1,a2,a3), de la care, aplicând algoritmul sub forma clasică, se vor obţine succesiv bazele admisibile B1 = (a4,a2,a3), B2 = (a4,a5,a3), B3 = (a6,a5,a3), B4 = (a6,a7,a3), B5 = (a6,a2,a3), B6 = (a4,a2,a3) ... . Cititorul poate verifica uşor că toate aceste baze au ca soluţie de bază soluţia (0,0,1,0,0,0,0) şi valoarea funcţiei 0, dar nu îndeplinesc condiţia de optim. Pe

18

Page 19: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

de altă parte se vede că B6 = B1 şi deci algoritmul va repeta la infinit această succesiune de baze,

neatingând niciodată valoarea maximă , corespunzătoare soluţiei ( ,0,0,1,0,1,0).

Această situaţie este îngrijorătoare nu atât din considerente practice imediate (încă nu a fost găsită o problemă din practică la care să apară acest fenomen, toate exemplele existente fiind artificial construite, ca şi cel de mai sus) cât din faptul că un algoritm implementat pe calculator s-ar putea să fie pus în faţa unei astfel de probleme, situaţie în care n-am putea rezolva problema nici pe calculator, nici manual, ea fiind prea mare. Situaţia a fost depăşită prin diferite tehnici suplimentare adăugate celei de trecere la o soluţie cel puţin la fel de bună (insuficientă, cum s-a văzut), cea mai cunoscută fiind cea care foloseşte ordonarea lexicografică a soluţiilor, care va fi prezentată şi în această carte.

În fine, referitor la condiţia g), a durat mult timp până s-a demonstrat că algoritmul, sub această formă, nu este în timp polinomial, un exemplu fiind clasa de probleme de mai jos, găsită de Klee şi Minty în 1972, în care algoritmul trebuie să analizeze 2n baze (n = numărul de necunoscute) până la găsirea celei optime.

Pentru o astfel de problemă, la 100 de variabile, algoritmul va avea 2100 1030 iteraţii, şi chiar la o viteză de un miliard iteraţii pe secundă (mult peste puterea unui calculator actual) va termina în 1013 ani.

Nu se ştie încă dacă există sau nu o altă modalitate de trecere de la o bază la alta, folosind tabelele simplex, prin care algoritmul să devină în timp polinomial. Au fost însă găsiţi algoritmi care nu folosesc tabelele simplex, primul fiind algoritmul de punct interior al lui Karmakar, despre care s-a demonstrat că lucrează în timp polinomial.

În ceea ce priveşte erorile de rotunjire, inevitabile când se fac calculele pe un calculator, algoritmul se comportă într-adevăr foarte rău, orice eroare propagându-se imediat la tot tabelul cu efecte foarte mari. Acest lucru poate fi însă depăşit aplicând o variantă a algoritmului, numită varianta revizuită a algoritmului simplex.

Toate punctele slabe ale algoritmului, amintite mai sus, nu au înmormântat însă algoritmul simplex, deoarece folosirea acestuia aduce informaţii mult mai ample decât găsirea soluţiei propriu-zise, este mult mai maleabil în cazul modificărilor ulterioare ale datelor problemei (vezi analiza senzitivităţii soluţiei la datele problemei), se pretează mult mai bine la interpretări economice, este uşor de scris un program de calculator asociat, este implementat pe foarte multe calculatoare şi în plus, aşa cum aminteam mai sus, încă nu a apărut o problemă practică în faţa căruia să clacheze. Noii algoritmi rămân doar ca alternative teoretice sau pentru cazurile în care algoritmul simplex este lent, dar ei nu-l pot înlocui complet.

Fundamentarea matematică a algoritmului simplex

Algoritmul simplex pleacă de la presupunerea că dispunem deja de o soluţie admisibilă de bază xB, corespunzătoare unei baze B. De asemenea, presupunem că am rezolvat sistemul Ax = b folosind această bază, rezultând astfel variabilele principale în funcţie de cele secundare:

19

Page 20: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

xB = B-1b – B-1SxS

Înlocuind variabilele, cu formula găsită, în funcţia obiectiv, obţinem:

f(x) = (B-1b – B-1SxS) + xS = B-1b – ( B-1S – )xS =

= f(xB) – ( B-1S – )xS = f(xB) – (z– )xS = f(xB) – xS

unde: f(xB) = B-1b este valoarea funcţiei obiectiv în soluţia de bază

B-1S = z este un vector n-m componente z = (zm+1, zm+2,...,zn).

= z – este un vector n-m componente = (m+1, m+2,..., n) Obţinem următoarea formă a problemei:

Din motive de organizare şi concentrare a datelor problemei, Danzig le-a trecut pe acestea într-un tabel ca cel de mai jos, numit tabel simplex.

c1 c2 ... cm cm+1 ... cn

cB xB xB x1 x2 ... xm xm+1 ... xn

c1

c2

cm

x1

x2

xm

B-1b Im B-1S

f(xB) 0 zm+1 ... zn

0 m+1 ... n

Fiecărei soluţii de bază îi corespunde un tabel simplex şi reciproc, deci, de fiecare dată când vom vorbi de un tabel simplex, vom spune şi care este baza asociată.

Din forma funcţiei obiectiv se vede că:

într-o problemă de maxim:

xB este soluţie optimă oricare ar fi xS 0

0 oricare ar fi xS 0 j 0, j = 1,...,n (toţi j sunt pozitivi)

într-o problemă de minim:

xB este soluţie optimă oricare ar fi xS 0

0 oricare ar fi xS 0 j 0, j = 1,...,n (toţi j negativi)

20

Page 21: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Pentru a evita complicarea expunerii vom presupune în continuare că problema este de maxim, pentru cazul de minim raţionamentul fiind analog.

Rezultatul obţinut reprezintă criteriul de recunoaştere a optimalităţii soluţiei sau, mai simplu, criteriul de optim.

Dacă soluţia nu este optimă atunci există evident o altă soluţie de bază admisibilă mai bună. Se poate demonstra că dacă x şi y sunt două soluţii admisibile de bază cu f(x) f(y) şi numărul de variabile principale prin care diferă cele două este k, cu 1 k m, atunci există un şir de soluţii admisibile de bază: {x1 = x, x2, ..., xk = y} astfel încât:

1. f(xi) f(xi+1) oricare ar fi 1 i < k2. xi diferă de xi+1 printr-o singură variabilă, oricare ar fi 1 i < k

Din cele de mai sus rezultă că e suficient să căutăm o soluţie de bază admisibilă mai bună doar printre cele care diferă de cea actuală printr-o singură variabilă.

Trebuie deci să găsim acea variabilă principală care iese din bază şi acea variabilă secundară care intră în bază. Rezultatul schimbării trebuie să fie:

1. o soluţie de bază (deci coloanele corespunzătoare noii variabile să formeze un minor principal);

2. o soluţie admisibilă (adică să aibă toate componentele pozitive);3. o soluţie mai bună;4. cea mai bună posibilă dintre soluţiile mai bune.

Presupunem că înlocuim variabila principală xi (1 i m) cu variabila secundară xj (m+1 j m). Aceasta este echivalent cu a scoate din ecuaţia i (singura în care apare x i) variabila xj, în funcţie de variabila xi şi de celelalte variabile secundare. Este evident că acest lucru (care este echivalent cu faptul că noua soluţie trebuie să fie de bază) este posibil doar dacă coeficientul lui x j

din această ecuaţie este diferit de 0 (aij 0). În acest caz avem succesiv:

xi + + aijxj = xi xj + + xi = xi

xj = xi – – xi

Înlocuind variabila xj în celelalte ecuaţii obţinem:

xs + + asj( xi – – xi ) = xs

xs + – xi = xs – xi pentru s = 1,...,m şi s i

Conform formulelor de mai sus rezultă că noua soluţie de bază este admisibilă dacă:

xs – xi 0 oricare ar fi s =1,...,m diferit de i oricare ar fi s =1,...,m, s i

şi în urma schimbării noua soluţie de bază va fi:

= xi şi = xs – xi pentru s i

21

Page 22: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În concluzie, dacă ne hotărâm să introducem în bază variabila j, singura variabilă care o poate înlocui (pentru ca noua soluţie să fie admisibilă de bază) nu poate fi decât aceea care corespunde acelui aij strict pozitiv din coloana j din matricea B-1S, pentru care se obţine valoarea minimă a rapoartelor dintre componentele soluţiei de bază actuale şi componentele coloanei j. Pentru evidenţierea acestora, ele se notează cu s şi avem:

i =

Condiţia de mai sus este numită criteriul de ieşire din bază.Mai înainte am văzut ce efect are schimbarea unei variabile din bază asupra sistemului. Este

important însă să vedem efectul ei şi asupra funcţiei obiectiv. Valoarea funcţiei obiectiv în noua soluţie de bază va fi:

f( ) = =

Pentru ca această soluţie să fie cel puţin la fel de bună trebuie ca:

f( ) f(xB) f(xB) j 0

În concluzie, dacă vrem să obţinem o soluţie strict mai bună vom alege o variabilă x j

corespunzătoare unui j < 0. Noua soluţie va exista efectiv doar dacă pe coloana j din matricea B -

1S există o componentă aij strict pozitivă şi va fi efectiv strict mai bună doar dacă componenta

corespunzătoare xi din soluţia de bază este diferită de 0, îmbunătăţirea fiind egală cu .

Situaţia în care toate componentele coloanei j din matricea B -1S sunt mai mici sau egale cu 0 este lămurit de următoarea teoremă:

Teoremă: Dacă pe coloana j din matricea B-1S, corespunzătoare unei variabile xj cu j < 0, toate componentele sunt mai mici sau egale cu zero atunci problema are optim infinit.

Demonstraţie: Fie o soluţie particulară a sistemului, în care variabila secundară xj = > 0, oarecare iar celelalte sunt 0. În acest caz, variabilele principale vor fi: yi = xi – aij şi vor fi toate pozitive, ţinând cont de faptul că toţi aij 0 şi, deci, soluţia va fi admisibilă. Pentru o astfel de soluţie, valoarea funcţiei obiectiv este:

f(y) = f(xB) – j. şi avem:

deci imaginea funcţiei f este nemărginită şi afirmaţia este demonstrată.Presupunem în continuare că există o componentă aij strict pozitivă. Deoarece dorim să

trecem la cea mai bună dintre bazele posibile, vom alege dintre toate variabilele cu j < 0, pe cea pentru care se obţine:

Această condiţie este criteriul de intrare în bază.Deoarece calculul necesar găsirii acestuia este laborios, Danzig a preferat înlocuirea acestei

alegeri cu alegerea acelui j care corespunde celui mai negativ j (= – ), variantă care

22

Page 23: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

este uşor de aplicat, îmbunătăţeşte soluţia şi prin care se obţine, în marea majoritate a cazurilor, acelaşi j.

În acest moment ştim cum să găsim o soluţie mai bună, dacă ea există şi am putea calcula din nou elementele necesare analizării noii soluţii, din tabelul simplex, folosind formulele fiecăruia:

xB = B-1bz = B-1A = z – c

Acest mod de lucru este efectiv folosit în anumite variante ale algoritmului simplex (vezi forma revizuită) dar el presupune calcularea inversei matricei B, ceea ce necesită foarte mult timp. Acest motiv era suficient de convingător pentru ca Danzig să-şi fi pus problema dacă nu cumva noul tabel simplex poate fi calculat pe baza fostului tabel simplex, făcând mult mai puţine calcule şi utilizând formule uşor de memorat şi aplicat. Această întrebare era natural de pus, dacă ţinem cont că noua soluţie diferă de fosta soluţie printr-o singură variabilă. Aceste formule au fost efectiv găsite, ele putând fi obţinute urmărind efectul înlocuirii lui xi cu xj asupra sistemului:

noua soluţie de bază se obţine din fosta soluţie cu formulele deja găsite mai sus:

= xi şi

= xs – xi pentru s i

noii coeficienţii ai variabilelor în cele m ecuaţii vor fi:

1. variabilă principală xs va avea coeficientul 1 în ecuaţia k şi 0 în celelalte ecuaţii;

2. o variabilă secundară xk, diferită de xi, va avea coeficienţii în ecuaţiile s

i şi coeficientul în ecuaţia i.

3. noua variabilă secundară xi va avea coeficienţii – în ecuaţiile s i şi coeficien-

tul în ecuaţia i.

4. noua valoare a funcţiei obiectiv va fi: f( ) =

5. noii j îi obţinem înlocuind în funcţia obiectiv variabila xj în funcţie de xi:

f(x) = f( ) – – j(– – xi + xi) =

= – – xi =

= f( ) – – xi

23

Page 24: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

de unde rezultă că pentru k i şi

Deşi par să fie foarte multe formule complicate, frumuseţea algoritmului şi meritul lui Danzig constă tocmai în faptul că toate respectă o regulă vizuală uşor de memorat, numită regula dreptunghiului, aşa cum se va vedea în algoritmul simplex.

ALGORITMUL SIMPLEX

Reamintim că presupunem că problema este la forma standard de maxim şi că dispunem de o soluţie de bază admisibilă.

Pasul 1. Se construieşte tabelul simplex corespunzător bazei de care dispunem în ordinea următoare:

1. pe linia a doua se trec toate variabilele într-o ordine oarecare;2. pe prima linie se trec coeficienţii funcţiei obiectiv, fiecare deasupra variabilei

corespunzătoare;3. se construieşte matricea A, fiecare coloană fiind formată din coeficienţii unei

variabile din toate ecuaţiile (ordinea în care se parcurg ecuaţiile trebuie să fie aceeaşi pentru toate variabilele), având grijă ca, coloanele să fie trecute în ordinea în care au fost trecute variabilele pe linia 2;

4. se construieşte baza B, ordinea coloanelor fiind cea în care apar ele în matricea A;5. se calculează B-1;6. se calculează B-1A şi se trece în partea centrală a tabelului;7. se trec variabilele principale în a doua coloană, în aşa fel încât, la intersecţia liniei şi

coloanei corespunzătoare acestei variabile, să se afle valoarea 1.8. se trec în prima coloană coeficienţii corespunzători variabilelor principale din funcţia

obiectiv, fiecare în dreptul variabilei corespunzătoare;9. se calculează soluţia de bază cu formula B-1b, având grijă ca ordinea în care au fost

trecuţi termenii liberi în vectorul b să fie aceeaşi cu ordinea în care au fost parcurse ecuaţiile la formarea matricii A;

10. se trec în a treia coloană valorile variabilelor principale din soluţia de bază, fiecare în dreptul variabilei corespunzătoare;

11. se calculează f(xB) înmulţind două câte două componentele coloanei 1 cu cele din coloana 3 aflate pe aceeaşi linie şi adunând toate produsele între ele (adică facem produsul scalar dintre cB şi xB);

12. se calculează pe rând fiecare zj j = 1,...,n un zj obţinându-se înmulţind scalar cB cu coloana j din B-1A aflată în centrul tabelului (această linie se calculează şi se trece doar în primul tabel, scopul ei fiind calcularea lui );

13. se calculează pe rând fiecare j j = 1,...,n scăzând din linia lui z linia lui c (j = zj - cj)

Pasul 2. Se analizează valorile j corespunzătoare variabilelor secundare (e uşor de văzut că întotdeauna, cei corespunzători variabilelor principale sunt toţi 0, deci neinteresanţi). dacă toţi sunt mai mari sau egali cu 0 atunci soluţia actuală este cea optimă. Dacă

există j = 0 în afara bazei, atunci pot apărea două cazuri:1) toate elementele din coloana aj din B-1A sunt mai mici sau egale cu 0.

Atunci toate soluţiile de forma xB - aj sunt soluţii optime, unde > 0 oarecare;

2) există o componentă aij a coloanei aj strict pozitivă. Atunci introducând variabila xj în bază în locul variabilei principală xi obţinem altă soluţie de bază optimă.

24

Page 25: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Dacă apar numai cazuri de tipul 2), obţinem toate soluţiile de bază optime, mulţimea tuturor soluţiilor optime fiind formată din toate combinaţiile convexe ale acestora. Dacă apare şi cazul 1) atunci mulţimea soluţiilor optime este nemărginită fiind formată din combinaţiile convexe ale soluţiilor de forma xB - aj unde xB sunt toate soluţiile optime de bază.

dacă există j < 0 atunci îl alegem pe cel mai negativ: k = . Variabila xj

va fi cea care intră în noua bază. Dacă minimul este multiplu atunci alegem, la întâmplare, unul dintre aceştia (cei minimi).

Pasul 3. Se analizează elementele coloanei aj din B-1A, corespunzătoare variabilei alese la pasul 2.

Dacă toate sunt mai mici sau egale cu 0 atunci problema are optim infinit şi algoritmul ia sfârşit;

Dacă există componente strict pozitive, pentru acestea se calculează rapoartele s

= . Variabila xi corespunzătoare raportului minim este cea care va ieşi din

bază. Dacă acest minim este multiplu sunt posibile două cazuri:1) minimul este strict pozitiv. În acest caz se alege unul dintre aceştia la

întâmplare;2) minimul este 0. Atunci xi corespunzători sunt 0, deci soluţia este

degenerată şi noua soluţie este la fel de bună. Această situaţie poate duce la ciclarea algoritmului şi alegerea la întâmplare nu mai este suficientă, fiind nevoie de o regulă de alegere suplimentară care să evite ciclarea. O metodă de alegere se bazează pe faptul că, aşa cum vom vedea, întotdeauna prima bază este matricea unitate şi în dreptul ei, în toate tabelele simplex, se va afla inversa bazei corespunzător fiecăruia. În acest caz, pentru poziţiile în care s-a obţinut minimul împărţim prima coloană a lui B-1 la coloana aj şi alegem minimul dintre aceste rapoarte. Dacă minimul dintre aceştia este tot multiplu continuăm procedeul, pentru poziţiile ce dau noul minim, cu coloana a doua din B-1 şi aşa mai departe, până minimul rămâne unic. Nu este posibil să se epuizeze toate coloanele lui B-1 şi minimul să rămână multiplu, deoarece, în acest caz, am avea:

, pentru toţi indicii jk ai coloanelor lui B-1, i1 şi i2 fiind doi din

indicii care dau acelaşi minim până la sfârşit sau altfel scris

pentru orice jk liniile i1 şi i2 din B-1 sunt proporţionale, fapt ce contrazice faptul că B-1 este inversabilă.

Pasul 4. Se calculează componentele tabelului simplex corespunzător noii baze pe baza tabelului actual şi folosind următoarele reguli:

1. se încadrează elementul aij, aflat la intersecţia coloanei variabilei care intră în bază cu linia variabilei care iese din bază, care a fost numit de Danzig pivot, într-un dreptunghi

2. coloana pivotului va avea 1 în dreptul pivotului şi 0 în rest (inclusiv j);3. linia pivotului este linia actuală împărţită la pivot (inclusiv în soluţia de bază);4. restul elementelor se calculează cu regula dreptunghiului (inclusiv soluţia de bază,

şi f(xB)). Regula dreptunghiului se bazează pe observaţia că în toate formulele prin care se calculează acestea nu apare decât valoarea lor actuală, pivotul şi cele două elemente care ar completa dreptunghiul ce are poziţia de calculat şi pivotul pe diagonală. Regula dreptunghiului se enunţă literar astfel: "noua valoare =

25

Page 26: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

produsul dintre elementele de pe diagonala pivotului minus produsul dintre cele aflate pe cealaltă diagonală totul împărţit la pivot". (pentru scurtarea timpului de lucru se poate observa că elementele unei linii care are 0 pe coloana pivotului rămân aceleaşi şi de asemenea elementele unei coloane care are 0 pe linia pivotului)

Operaţia de calculare a noului tabel prin regulile de mai sus poartă denumirea de pivotare.

Pasul 5. Se reia algoritmul de la pasul 2.

Exemplu: Fie problema de programare liniară:

pentru care ştim că baza formată din coloanele a1, a2, a3 este admisibilă. Pentru rezolvare vom aduce problema la forma standard de maxim introducând variabilele de abatere x7, x8, x9 obţinând:

Vom aşeza în tabelul simplex variabilele în ordinea indicilor şi vom avea:

c = , A = , B = , cB =

26

Page 27: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

vom calcula matricea B-1 = şi pe baza acesteia soluţia de bază xB = B-1b = şi

matricea B-1A = care se trec în tabelul simplex:

3 2 1 4 3 5 0 0 0cB xB xB x1 x2 x3 x4 x5 x6 x7 x8 x9

3

2

1

x1

x2

x3

1

2

3

şi în final se vor calcula valoarea funcţiei obiectiv în această soluţie, zj şi j:

3 2 1 4 3 5 0 0 0cB xB xB x1 x2 x3 x4 x5 x6 x7 x8 x9

3

2

1

x1

x2

x3

1

2

3

10

Din tabel se observă că există j < 0, aceştia fiind 4, 5, 6, 8 iar minimul lor este 6.Observaţie Dacă vom căuta acel j care dă cea mai bună îmbunătăţire vom avea de găsit

acel j dintre cei negativi pentru care se obţine şi deci de calculat:

= =

27

Page 28: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

= =

= =

= =

şi în final max ( , , , ) = şi corespunde tot lui 6.

În concluzie, soluţia actuală nu este optimă şi soluţia cea mai bună dintre cele posibile ca succesoare va avea variabila x6 printre cele principale.

Analizând coloana a6 observăm că există componente strict pozitive (de fapt, în acest caz sunt chiar toate) şi calculăm pentru acestea rapoartele i obţinând:

1 = = , 2 = = 14, 3 = =

deci minimul corespunde variabilei x1 şi aceasta este cea care va ieşi din bază. În cest moment cunoaştem noua bază şi vom construi tabelul simplex pe baza regulilor de calcul de la pasul 4:

1. pivotul este a16 =

4. de exemplu, pentru elementul de pe poziţia a34 avem dreptunghiul:

şi noua valoare de pe această poziţie va fi: = –1

În final, tabelul corespunzător noii baze va fi:

3 2 1 4 3 5 0 0 0cB xB xB x1 x2 x3 x4 x5 x6 x7 x8 x9

5

2

1

x6

x2

x3

Continuând algoritmul vom găsi tabelele:

28

Page 29: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

3 2 1 4 3 5 0 0 0cB xB xB x1 x2 x3 x4 x5 x6 x7 x8 x9

5

2

0

x6

x2

x8

3 2 1 4 3 5 0 0 0cB xB xB x1 x2 x3 x4 x5 x6 x7 x8 x9

5

3

0

x6

x5

x8

5

1

2

28

Ultimul tabel conţine soluţia optimă, deoarece toţi j 0. Deoarece nu mai există nici un j

= 0 în afara celor din bază rezultă că soluţia optimă este unică.

Determinarea unei soluţii de bază admisibile de start

Presupunem încă odată că problema este la forma standard.Algoritmul simplex necesită, pentru pornire, o soluţie admisibilă de bază. Găsirea acesteia

pur şi simplu prin încercări nu este deloc o sarcină uşoară, gândindu-ne că aceasta presupune găsirea unui minor principal, inversarea acestuia şi calcularea soluţiei, abia în acest moment putând vedea dacă aceasta are toate componentele pozitive, această căutare putând dura foarte mult.

Rezolvarea problemei pleacă de la observaţia că singura bază pentru care calculul de mai sus se poate face imediat este matricea unitate, caz în care soluţia de bază corespunzătoare este chiar vectorul termenilor liberi. Aceasta presupune ca problema să aibă toţi termenii liberi mai mari sau egali cu 0 şi în matricea A să existe toate coloanele matricii unitate.

Dacă toţi termenii liberi pot fi făcuţi mai mari sau egali cu 0 foarte simplu, prin înmulţirea eventual cu –1 a restricţiei respective, existenţa tuturor coloanelor matricii unitate este evident că este foarte puţin probabilă şi mai greu de obţinut.

În acest sens plecăm de la observaţia că existenţa unui vector din coloana unitate printre coloanele matricii A este echivalentă cu existenţa unei variabile care apare doar în ecuaţia corespunzătoare lui 1 din acel vector, cu coeficientul 1. Acest lucru poate fi obţinut în două moduri:

a) Începând de la prima ecuaţie, căutăm o variabilă care are coeficientul de acelaşi semn cu termenul liber, o scoatem din această ecuaţie în funcţie de celelalte variabile, o înlocuim în celelalte şi repetăm procedeul pornind de la a doua ecuaţie. Pot apărea trei cazuri:

29

Page 30: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

1) la un moment dat obţinem o ecuaţie în care toţi coeficienţii variabilelor au semn contrar termenului liber, măcar unul dintre toţi fiind diferit de 0. În acest caz ecuaţia nu are evident soluţie admisibilă(pozitivă) şi deci problema nu are soluţie;

2) toţi coeficienţii variabilelor şi termenul liber sunt 0. În acest caz rezultă că această ecuaţie rezultă din cele anterioare şi ea va fi eliminată, trecându-se la următoarea;

3) se epuizează toate ecuaţiile. În acest moment, variabilele care au fost scoase din fiecare ecuaţie formează baza dorită.

Procedeul de mai sus poate părea atractiv, dar presupune introducerea unui algoritm diferit de simplex, cu efect asupra omogenităţii calculelor şi a vitezei de lucru. De asemenea, prin efectuarea calculelor de mai sus, datele problemei nu mai au semnificaţia economică iniţială, ne mai putându-se face interpretări economice.

b) Pentru toţi vectorii coloană introducem în ecuaţiile corespunzătoare câte o variabilă cu coeficientul 1. Vom obţine evident un nou sistem de restricţii şi rămâne de văzut ce legătură este între soluţiile acestuia şi cel iniţial. Cele două sisteme au forma:

Ax = b şi Ax + y = bEste evident că o soluţie a primului sistem este soluţie şi a celui de-al doilea (luăm y = 0) iar o soluţie a celui de-al doilea este soluţie şi pentru primul doar dacă y = 0. Scopul nostru va fi deci, ca pornind de la soluţia iniţială a celei de-a doua probleme să ajungem la o soluţie a acesteia în care y = 0. Ţinând cont că în soluţiile de bază, variabilele secundare sunt toate egale cu 0, vom încerca să scoatem din bază variabilele y. Scopul algoritmului simplex este însă maximizarea funcţiei obiectiv, nu scoaterea a uneia sau alteia din variabile din bază. Pentru a echivala cele două scopuri putem proceda în două feluri:

1) Alegem o nouă funcţie obiectiv care să-şi atingă extremul printre soluţiile pozitive chiar pentru y = 0 şi în momentul când am obţinut soluţia respectivă pornim cu aceasta ca soluţie iniţială algoritmul simplex pentru fosta problemă.

2) Adăugăm la fosta funcţie obiectiv noile variabile cu nişte coeficienţi de asemenea natură aleşi încât aportul variabilelor y la valoarea funcţiei să fie contrar scopului dorit (foarte mari pozitivi într-o problemă de minim şi foarte mari negativi într-o problemă de maxim).

Vom detalia în continuare cele două metode:

Algoritmul simplex în două faze

Dată problema de programare liniară la forma standard de maxim:

în care am aranjat deja ca toţi termenii liberi să fie pozitivi (b 0).

Faza 1 Construim problema:

pe care o rezolvăm cu algoritmul simplex pornind rezolvarea de la baza matrice unitate, putând ajunge la două situaţii:

30

Page 31: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

1) minimul funcţiei g este strict pozitiv. Aceasta este echivalent cu faptul că egalitatea Ax + y = b se poate obţine doar pentru y > 0 sau altfel spus Ax > b pentru orice x 0, deci sistemul Ax = b nu are soluţii admisibile şi în concluzie problema iniţială nu are soluţie.

2) minimul funcţiei g este 0. În acest caz, soluţia optimă obţinută are y = 0, deci verifică Ax = b fiind în concluzie o soluţie admisibilă de bază a primei probleme.

Faza 2 Începând de la soluţia găsită la faza 1 se rezolvă problema iniţială cu algoritmul simplex.

Dezavantajul metodei constă în faptul că tabelul simplex final de la faza 1 trebuie modificat pentru a obţine tabelul simplex iniţial de la faza 2 (vectorii x, c, cB, z, , f(xB), se elimină coloanele corespunzătoare lui y) şi în plus nu vom mai avea în tabelele simplex ale problemei iniţiale inversa bazei (care se găsea în dreptul coloanelor matricii unitate din prima fază) necesară în anumite variante ale algoritmului simplex.

Metoda bazei artificiale (metoda penalizării)

Dată problema de programare liniară la forma standard de maxim:

în care am aranjat deja ca toţi termenii liberi să fie pozitivi (b 0).

Construim problema:

în care M este o constantă presupusă foarte mare (mai mare decât orice constantă care ar putea apare în rezolvarea problemei). Rezolvăm problema cu algoritmul simplex pornind rezolvarea de la baza matrice unitate, putând ajunge la trei situaţii:

1) problema are optim infinit. În acest caz, problema iniţială are optim infinit.2) problema are optim finit şi în soluţia de bază avem cel puţin o variabilă din vectorul y. În

acest caz problema iniţială nu are soluţii admisibile.3) problema are optim finit şi în soluţia de bază nu avem nici o variabilă din vectorul y. În

acest caz problema iniţială are optim finit, soluţia optimă şi maximul funcţiei fiind aceleaşi cu cele ale problemei modificate.

În final vom remarca faptul că variabilele y nu corespund unor mărimi economice ca celelalte, ele fiind introduse doar ca un artificiu de calcul pentru a putea porni algoritmul simplex. Din acest motiv ele se numesc variabile artificiale.

31

Page 32: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Exemplu Fie problema de programare liniară:

Forma standard a problemei va fi:

Avem deja termenii liberi şi o coloană a matricii unitate corespunzătoare variabilei x3.

Pentru a obţine şi a doua coloană vom introduce variabila x5 cu coeficientul 1 în a doua ecuaţie

şi în final vom avea de rezolvat problema:

Algoritmul simplex în două faze Metoda bazei artificiale

Aplicând algoritmul simplex în două faze vom obţine în prima fază succesiunea de tabele:

0 0 0 0 1cB xB xB x1 x2 x3 x4 x5

0 x3 10 3 1 1 0 01 x5 2 1 4 0 -1 1

2 1 4 0 -1 11 4 0 -1 0

0 0 0 0 1cB xB xB x1 x2 x3 x4 x5

0 x3 0 1

0 x2 1 0

0 0 0 0 0 -1

Am obţinut optimul egal cu 0 în soluţia de bază (x3,x2) care va fi soluţia iniţială pentru algoritmul simplex aplicat problemei iniţiale în a doua fază. Eliminăm din tabel coloana lui x 5, înlocuim valorile coeficienţilor funcţiei obiectiv şi deci şi valoarea acesteia, valorile şi obţinem tabelul:

32

Page 33: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

2 3 0 0cB xB xB x1 x2 x3 x4

0 x3 0 1

3x2 1 0

0 0

2 3 0 0

cB xB xB x1 x2 x3 x4

0 x3 4 0 -11 1 32 x1 2 1 4 0 -1

4 0 5 0 -2

2 3 0 0cB xB xB x1 x2 x3 x4

0 x4 0 1

2x1 1 0

0 0

2 3 0 0cB xB xB x1 x2 x3 x4

0 x4 38 11 0 4 13 x2 10 3 1 1 0

30 7 0 3 0

Soluţia optimă a primei probleme este deci x1 = 0 şi x2 = 10 care dă un maxim al funcţiei egal cu 30. Dacă aplicăm a doua metodă vom obţine succesiv tabele:

2 3 0 0 -McB xB xB x1 x2 x3 x4 x5

0 x3 10 3 1 1 0 0-M x5 2 1 4 0 -1 1

-2M -M -4M 0 M -M-M-2 -4M-3 0 M 0

2 3 0 0 -McB xB xB x1 x2 x3 x4 x5

0 x3 0 1

3x2 1 0

0 0 M+

2 3 0 0 -M

33

Page 34: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

cB xB xB x1 x2 x3 x4 x5

0 x3 4 0 -11 1 3 -32 x1 2 1 4 0 -1 1

4 0 5 0 -2 2+M

2 3 0 0 -McB xB xB x1 x2 x3 x4 x5

0 x4 0 1 -1

2x1 1 0 0

0 0 M

2 3 0 0 -McB xB xB x1 x2 x3 x4 x5

0 x4 38 11 0 4 1 -13 x2 10 3 1 1 0 0

30 7 0 3 0 M

Rezultatul final este evident acelaşi.

VARIANTE ALE ALGORITMULUI SIMPLEX

1. Algoritmul simplex dual

Pentru expunerea acestui algoritm trebuie introduse noţiunile de bază dual admisibilă şi soluţie dual admisibilă de bază. Prin definiţie numim:

soluţie de bază dual admisibilă = soluţie de bază pentru care toţi j 0

bază dual admisibilă = bază corespunzătoare unei soluţii de bază dual admisibile

Ca şi în cazul algoritmului simplex, pentru a putea rezolva problema cu algoritmul simplex dual trebuie să dispunem deja de o bază iniţială dual admisibilă. Această soluţie poate exista ca urmare a unor calcule anterioare (vezi capitolul cu reoptimizarea) sau, ca şi în cazul algoritmului simplex, poate fi aplicată o procedură prin care să găsim această bază. Prezentarea acesteia este mai complicată decât cea de la algoritmul simplex astfel încât:

dacă dispunem de o bază dual admisibilă vom rezolva problema cu algoritmul simplex dual

dacă nu dispunem de o bază dual admisibilă vom rezolva problema cu algoritmul simplex.

Pentru a evita orice confuzie, vom numi în continuare algoritmul simplex obişnuit algoritm simplex primal şi o bază admisibilă bază primal admisibilă.

Se observă că o soluţie dual admisibilă nu este în general primal admisibilă şi reciproc, iar o soluţie care este simultan primal şi dual admisibilă este o soluţie optimă şi reciproc.

Presupunem că am adus problema la forma standard de maxim şi dispunem de o bază dual admisibilă şi dispunem deja de de o bază dual admisibilă. Algoritmul simplex dual constă în următorii paşi:

34

Page 35: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Pasul 1. Se construieşte tabelul simplex asociat acestei baze, la fel ca şi la algoritmul simplex primal;

Pasul 2. Se analizează componentele soluţiei: Dacă toate componentele sunt mai mari sau egale cu 0 atunci soluţia este şi

primal admisibilă, deci optimă. Dacă există componente strict negative, variabila corespunzătoare celei mai

negative (xi = ) este cea care iese din bază. Dacă minimul este multiplu se

ia una la întâmplare.Pasul 3. Se analizează linia li corespunzătoare variabilei xi aleasă la pasul 2:

Dacă toate componentele aij j = 1,...,n sunt mai mari sau egale cu 0, atunci am avea o ecuaţie cu toţi coeficienţii necunoscutelor pozitivi şi termenul liber strict negativ, deci problema nu are soluţii primal admisibile.

Dacă există componente strict negative, atunci pentru acestea se găseşte acel

indice pentru care se obţine (prin am notat modulul numărului ).

Dacă minimul este multiplu alegem unul dintre aceştia la întâmplare. Variabila corespunzătoare acestuia este cea care intră în bază.

Pasul 4. Se construieşte tabelul corespunzător noii baze aplicând aceleaşi reguli ca la algoritmul simplex primal;

Pasul 5. Se reia algoritmul de la pasul 2

2. Forma secundară

Este evident că modul de organizare al datelor în tabelul simplex nu este unicul mod de a organiza datele într-un tabel. Forma secundară este tocmai o astfel de alternativă. Presupunem şi în acest caz că problema este la forma standard de maxim, că problema este la forma standard şi că dispunem de o soluţie iniţială de bază care este primal sau dual admisibilă.

Pasul 1. Datele problemei vor fi organizate într-un tabel de forma:

cS

c x f xS

f(xB) S

cB xB xB = B-

1bB-1S

cS xS 0 –In-m

Se observă că singura diferenţa este că la coloana variabilelor bazei din stânga se adaugă şi cele secundare, pe orizontală se lasă doar variabilele secundare iar în loc de matricea unitate în dreptul variabilelor principale vom avea matricea unitate în dreptul celor secundare (dar cu minus), fiind calculat la fel, neglijându-se cei din dreptul variabilelor principale, care oricum erau 0.

Pasul 2. + Pasul 3. Se găsesc variabila care iese din bază şi cea care intră în bază cu aceleaşi reguli ca la algoritmul simplex primal sau, după caz, ca la cel dual.

35

Page 36: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Pasul 4. Se construieşte tabelul asociat noii baze aplicând regulile:

1) Pivotul este acelaşi ca la tabelul simplex;2) Linia pivotului are –1 în dreptul pivotului şi 0 în rest;3) Coloana pivotului se împarte la pivotul cu semn schimbat4) Celelalte elemente se calculează cu regula dreptunghiului

Pasul 5. Se reia algoritmul de la pasul 2.

Exemplu Fie problema de programare liniară rezolvată mai sus:

Forma standard a problemei va fi:

iar după introducerea variabilelor artificiale obţinem:

Tabelul corespunzător va fi:

2 3 0cB xB xB x1 x2 x4

-2M -M-2 -4M-3 M2 x1 0 -1 0 03 x2 0 0 -1 00 x3 10 3 1 00 x4 0 0 0 -1

-M x5 2 1 4 -1

Aplicăm simplex primal şi obţinem cel mai negativ j corespunzător lui x2 şi i minim corespunzător lui x5. În acest moment avem o soluţie de bază a problemei iniţiale şi putem elimina variabila x5. Obţinem:

2 -M 0 2 0cB xB xB x1 x5 x4 cB xB xB x1 x4

M+¾ -¾ -¾

2 x1 0 -1 0 0 2 x1 0 -1 03 x2 ½ ¼ ¼ -¼ 3 x2 ½ ¼ -¼ 0 x3

-¼ ¼ 0 x3 ¼

36

Page 37: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

0 x4 0 0 0 -1 0 x4 0 0 -1-M x5 0 0 -1 0

şi în continuare:

37

Page 38: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

3 0 3 0cB xB xB x2 x4 cB xB xB x2 x3

4 5 -2

2 x1 2 4 -1 2 x1

3 x2 0 -1 0 3 x2 0 -1 00 x3 4 -11 3 0 x3 0 0 -10 x4 0 0 -1 0 x4

2 0cB xB xB x1 x3

30 7 3 2 x1 0 -1 0

3 x2 10 3 10 x3 0 0 -10 x4 38 11 4

Din rezolvarea de mai sus se observă că această metodă este mai eficientă doar dacă numărul variabilelor secundare este mai mic decât numărul variabilelor principale. Totuşi, motivul principal pentru care a fost introdusă această variantă, este existenţa unor probleme în care, pe parcursul rezolvării, se adaugă foarte multe restricţii (de exemplu rezolvarea problemelor în numere întregi), pentru o restricţie în plus tabelul simplex mărindu-se cu o linie şi o coloană (cum se va vedea la capitolul de reoptimizare) iar tabelul corespunzător formei secundare doar cu o linie.

3. Forma revizuită a algoritmului simplex

O problemă mare (de exemplu cu 1000 variabile şi 100 restricţii) necesită în algoritmul simplex introducerea, memorarea şi lucrul cu un tabel cu 100.000 componente, adică un număr imens de date. Din acest motiv, şi remarcând faptul că în algoritmul simplex doar o parte din acestea contribuie efectiv la luarea deciziilor, s-a construit un algoritm care să ţină cont de observaţiile de mai sus, numit "forma revizuită a algoritmului simplex", în care se lucrează cu minimul necesar din datele tabelului simplex. Astfel, pentru testarea soluţiei actuale şi trecerea eventuală la o nouă bază avem nevoie doar de următoarele elemente:

(1) inversa bazei curente B-1

(2) componentele vectorului pentru a face testul de optim şi a găsi variabila care intră în bază (dacă soluţia nu e optimă)

(3) coloana ak din B-1A corespunzătoare celui mai negativ j (dacă există strict negativi) pentru a face testul de optim infinit

(4) soluţia curentă pentru a găsi variabila care iese din bază (dacă mai e cazul)

Aceste elemente se aşează într-un tabel de forma:

cB xB

xB = B-1bB-1

f(xB) π = B-1

38

Page 39: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

numit tabelul simplex redus.Operaţiile ce se efectuează în cadrul algoritmului simplex revizuit sunt (presupunem că

problema este la forma standard de maxim şi deţinem o soluţie admisibilă de bază şi inversa bazei corespunzătoare):

Pasul 1. Se calculează j corespunzători variabilelor secundare cu formula cunoscută:

j = B-1Pj - cj = πPj - cj

unde Pj este coloana corespunzătoare variabilei xj din matricea iniţială.

Pasul 2. Se analizează j calculaţi:

dacă toţi sunt mai mari sau egali cu 0 soluţia curentă este optimă. STOP dacă există j strict negativi se alege minimul dintre aceştia k, variabila xk va intra în

bază şi se trece la pasul 3.

Pasul 3. Se calculează ak = B-1Pk care se ataşează ca nouă coloană la tabel:

cB xB

xB = B-1bB-1

ak = B-1Pk

f(xB) π = B-1 k

Pasul 4. Se analizează componentele coloanei ak:

dacă toate sunt mai mici sau egale cu 0 problema are optim infinit. STOP dacă există aik strict pozitivi se alege cel pentru care se obţine:

ark =

şi variabila xr va ieşi din bază apoi se trece la pasul 5.

Pasul 5. Se pivotează întregul tabel simplex şi se elimină ultima coloană.Pasul 6. Se reia algoritmul de la pasul 2.

Exemplu Fie problema de programare liniară rezolvată mai sus:

Forma standard a problemei va fi:

39

Page 40: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

iar după introducerea variabilelor artificiale obţinem:

Iteraţia 1. Prima bază este B = I2 = B-1 corespunzătoare variabilelor x3 şi x5 de unde rezultă xB =

şi π = (0,-M)I2 = (0,-M). Primul tabel redus va fi:

0-M

x3

x5

102

10

01

-2M 0 -M

Se calculează S = πS – cS = (0,-M) – =

de unde rezultă că cel mai negativ este 2 şi vom calcula coloana a2 = I2

= care se adaugă la tabelul anterior rezultând:

0-M

x3

x5

102

10

01

14

-2M 0 -M -4M-3

i minim este cel corespunzător lui x5 şi deci variabila x2 va intra în locul variabilei x5. După pivotare şi eliminarea ultimei coloane obţinem:

03

x3

x2

½

10

-¼¼

0 ¾

Deoarece variabila artificială x5 a ieşit din bază ea va fi eliminată din problemă.

Iteraţia 2. S = πS – cS = (0,¾) – = ( )

cel mai negativ este 1 şi vom calcula coloana a1 = = care se

adaugă la tabelul anterior rezultând:03

x3

x2

½

10

-¼¼ ¼

0 ¾

i minim este cel corespunzător lui x2 şi deci variabila x1 va intra în locul variabilei x2. După pivotare şi eliminarea ultimei coloane obţinem:

40

Page 41: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

02

x3

x1

42

10

-31

4 0 2

Iteraţia 3. S = πS – cS = (0,2) – = ( )

cel mai negativ este 4 şi vom calcula coloana a4 = = care se

adaugă la tabelul anterior rezultând:

02

x3

x1

42

10

-31

3-1

4 0 2 -2

i minim este cel corespunzător lui x3 şi deci variabila x4 va intra în locul variabilei x3. După pivotare şi eliminarea ultimei coloane obţinem:

02

x4

x1

-10

0

Iteraţia 4. S = πS – cS = ( ,0) – = ( )

cel mai negativ este 2 şi vom calcula coloana a2 = = care se

adaugă la tabelul anterior rezultând:

02

x4

x1

-10

0

i minim este cel corespunzător lui x1 şi deci variabila x2 va intra în locul variabilei x1. După pivotare şi eliminarea ultimei coloane obţinem:

03

x4

x2

3810

41

-10

30 3 0

Iteraţia 5. S = πS – cS = (3,0) – = ( ) >0 deci soluţia este optimă (şi unică)

STOP

Chiar dacă la prima vedere calculele par mai împrăştiate şi deci mai lente, pentru probleme mari, pe calculator se economiseşte foarte multă memorie şi se măreşte foarte mult viteza de calcul.

41

Page 42: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Totuşi, marele avantaj al acestei metode este acela că, la fiecare iteraţie, se folosesc datele problemei iniţiale, ceea ce face ca erorile inerente de rotunjire să nu se propage, rămânând în limite acceptabile.

42

Page 43: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Problema duală

Problema duală este o problemă de programare liniară. Existenţa ei presupune existenţa unei alte probleme de programare liniară numită problema primală, împreună cu care formează cuplul primală – duală. Pentru a vedea cum arată problema duală trebuie să cunoaştem cum arată problema primală şi care este legătura dintre ele.

A cunoaşte cum arată problema primală înseamnă a şti:

1. Dacă problema este de maxim sau de minim;

2. Care sunt necunoscutele problemei, adică vectorul variabilelor:

xT = (x1,x2, … ,xn)

3. Care sunt coeficienţii funcţiei obiectiv, adică elementele vectorului:

cT = (c1,c2, … ,cn)

4. Care sunt termenii liberi ai restricţiilor, adică elementele vectorului:

bT = (b1,b2, … ,bm)

5. Care sunt coeficienţii combinaţiei liniare din fiecare restricţie, adică elementele matricei:

A =

6. Care este natura fiecărei restricţii, adică dacă:

ai1x1 + ai2x2 + … + ainxn bi sau ai1x1 + ai2x2 + … + ainxn bi sau ai1x1 + ai2x2 + … + ainxn = bi

7. Care este restricţia de semn a fiecărei variabile, adică dacă:

xj 0 sau xj 0 sau xj – oarecare

Problema duală se construieşte folosind elementele problemei primale şi o serie de reguli, câte una pentru fiecare din cele şase componente ale unei probleme de programare liniară, listate mai sus.

În acest scop vom nota elementele problemei duale cu:

uT = vectorul variabilelor problemei duale; = vectorul coeficienţilor funcţiei obiectiv ai problemei duale;

= vectorul termenilor liberi ai restricţiilor din problema duală; AD = matricea coeficienţilor combinaţiilor liniare din restricţiile problemei duale;

şi vom introduce noţiunile de restricţie concordantă şi restricţie neconcordantă:

43

Page 44: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

O restricţie se numeşte concordantă dacă:

Este de tipul: ai1x1 + ai2x2 + … + ainxn bi într-o problemă de minim sau Este de tipul: ai1x1 + ai2x2 + … + ainxn bi într-o problemă de maxim.

O restricţie se numeşte neconcordantă dacă:

Este de tipul: ai1x1 + ai2x2 + … + ainxn bi într-o problemă de maxim sau Este de tipul: ai1x1 + ai2x2 + … + ainxn bi într-o problemă de minim.

O restricţie de tipul: ai1x1 + ai2x2 + … + ainxn = bi nu este nici concordantă nici neconcordantă.

În aceste condiţii, problema duală va avea componentele:

Duala va fi o problemă de minim dacă primala este de maxim şi reciproc; uT = (u1, u2, … um), deci duala va avea m variabile, număr egal cu numărul de restricţii

al primalei, fiecare variabilă ui fiind asociată unei restricţii i a primalei; = bT, deci coeficienţii funcţiei obiectiv a dualei sunt termenii liberi ai restricţiilor

primalei; = cT, deci termenii liberi din restricţiile dualei sunt coeficienţii funcţiei obiectiv a

primalei. AD = AT, deci restricţiile dualei se obţin înmulţind fiecare coloană a matricei primalei

cu vectorul variabilelor dualei. În acest mod şi variabilelor primalei li se asociază câte o restricţie a dualei;

restricţia j a dualei va fi: concordantă dacă xj 0 neconcordantă dacă xj 0 egalitate dacă xj oarecare

variabila ui va fi: ui 0 dacă restricţia corespunzătoare din primală este concordantă ui 0 dacă restricţia corespunzătoare din primală este neconcordantă ui oarecare dacă restricţia corespunzătoare din primală este egalitate

Din cele de mai sus se observă că, pentru a scrie restricţia j a dualei, avem nevoie de:

coloana coeficienţilor corespunzători variabilei j din matricea problemei primale pentru a scrie termenul stâng al restricţiei:

a1ju1 + a2ju2 + … + amjum

restricţia de semn a variabilei xj pentru a stabili natura restricţiei; coeficientul lui xj din funcţia obiectiv a primalei, care va fi termenul liber al restricţiei;

Pentru o cât mai bună ilustrare a modului în care se găseşte duala unei probleme vom da câteva exemple.

44

Page 45: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Exemplul 1. Ne propunem să construim duala problemei următoare:

(max) f = 2x1 – 5x2 + 4x3

x1 0, x2 oarecare, x3 0

Conform regulilor de mai sus vom avea:

duala este de minim deoarece primala este de maxim; variabilele dualei vor fi:

u1 corespunzătoare restricţiei: x1 – x2 + 4x3 7u2 corespunzătoare restricţiei: x2 – 5x1 + 3x3 = 6u3 corespunzătoare restricţiei: x1 + 2x3 3u4 corespunzătoare restricţiei: –x3 + 2x1 - 5x2 8

funcţia obiectiv a dualei va fi produsul dintre termenii liberi ai restricţiilor primalei cu variabilele corespunzătoare din duală: g = 7u1 + 6u2 + 3u3 + 8u4

duala va avea 3 restricţii, câte variabile are primala, ele obţinându-se astfel:

prima restricţie (asociată variabilei x1) termenul stâng al restricţiei se obţine înmulţind coeficienţii variabilei x1 din cele 4

restricţii ale primalei cu variabilele corespunzătoare acestora din duală:

u1 –5u2 + u3 + 2u4

termenul liber al restricţiei va fi coeficientul lui x1 din funcţia obiectiv a primalei, adică b1 = c1 = 2

deoarece variabila corespunzătoare acestei restricţii, x1, este negativă, restricţia va fi neconcordantă şi deoarece duala este problemă de minim rezultă că va fi cu .

În concluzie, prima restricţie va fi: u1 –5u2 + u3 + 2u4 2

a doua restricţie (asociată variabilei x2) termenul stâng al restricţiei se obţine înmulţind coeficienţii variabilei x2 din cele 4

restricţii ale primalei cu variabilele corespunzătoare acestora din duală:

-u1 + u2 - 5u4

termenul liber al restricţiei va fi coeficientul lui x2 din funcţia obiectiv a primalei, adică b2 = c2 = -5

deoarece variabila corespunzătoare acestei restricţii, x2, este oarecare, restricţia va fi o egalitate.

În concluzie, a doua restricţie va fi: -u1 + u2 - 5u4 = -5

a treia restricţie (asociată variabilei x3) termenul stâng al restricţiei se obţine înmulţind coeficienţii variabilei x3 din cele 4

restricţii ale primalei cu variabilele corespunzătoare acestora din duală:

45

Page 46: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

4u1 +3u2 + 2u3 - u4

termenul liber al restricţiei va fi coeficientul lui x3 din fiuncţia obiectiv a primalei, adică b3 = c3 = 4

deoarece variabila corespunzătoare acestei restricţii, x3, este pozitivă, restricţia va fi concordantă şi deoarece duala este problemă de minim rezultă că va fi cu .

În concluzie, a treia restricţie va fi: 4u1 + 3u2 + 2u3 - u4 4

restricţiile de semn ale variabilelor dualei vor fi:

u1 0, deoarece restricţia corespunzătoare este neconcordantă; u2 oarecare, deoarece restricţia corespunzătoare este egalitate; u3 0, deoarece restricţia corespunzătoare este concordantă; u4 0, deoarece restricţia corespunzătoare este neconcordantă.

În final, problema duală este:

(min) g = 7u1 + 6u2 + 3u3 + 8u4

u1 0, u2 oarecare, u3 0, u4 0

Exemplul 2. Considerăm o unitate economică care fabrică produsele P1, P2 şi P3. Pentru obţinerea lor se utilizează trei resurse: forţa de muncă, mijloacele de muncă şi materii prime. În tabelul de mai jos se dau consumurile specifice şi cantităţile disponibile din cele trei resurse, precum şi preţurile de vânzare ale celor trei produse.

ProduseResurse

P1 P2 P3Disponibil

(unităţi fizice)Forţa de muncă 1 3 4 15

Mijloace de muncă 2 5 1 10Materii prime 4 1 2 25

Preţ de vânzare(unităţi monetare)

3 2 6_

Dorim să producem acele cantităţi xi din fiecare produs pentru care:

1. se utilizează în întregime forţa de muncă;2. se produce cel puţin o unitate din produsul de tipul P2;3. se obţine valoarea maximă a vânzărilor.

Modelul matematic pe baza căruia se stabileşte programul optim de producţie are forma:

46

Page 47: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

(max) f = 3x1 + 2x2 + 6x3

xj 0 (j = 1,2,3)

Duala sa va fi:

(min) g = 15u1 + 10u2 + 25u3 + u4

u1 oarecare, u2 0, u3 0, u4 0

Se remarcă faptul că, într-o problemă economică, nenegativitatea variabilelor primalei (xj0) impune ca în duală toate restricţiile să fie concordante.

Exemplul 3.

Primala

(min) f = 4x1 + 3x2

x1, x2 0

Duala

(max) g = 56u1 + 43u2 + 31u3 + 20u4 + 30u5 + 41u6 + 65u7

uI 0 (i = 1,7)

Corespondenţa care există între problema primală şi problema duală, atât sub aspect matematic, cât şi economic, va fi lămurită de observaţiile şi teoremele de mai jos:

Lema 1. Duala problemei duale este problema primală.

Demonstraţia acestei leme este uşoară, făcându-se pe baza simetriilor care se observă în construcţia dualei şi va fi lăsată în seama cititorului, semnificaţia ei fiind că operaţia de trecere la duală este o operaţie involutivă (adică e o transformare f cu proprietatea: (f ○ f )(x) = x) şi, deci, perechea primală-duală formează un cuplu în care fiecare este duala celeilalte. Din această cauză vom vorbi de cuplul primală-duală fără a mai specifica expres care este primala şi care duala.

Observaţia 1. Dacă o problemă este la forma canonică atunci şi duala sa este o problemă la

forma canonică.

47

Page 48: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Observaţia 2. Dacă o problemă este la forma standard atunci duala sa nu este la forma standard.

Lema 2. Dacă P1 şi P2 sunt două probleme de programare liniară echivalente atunci şi dualele lor sunt de asemenea echivalente. Vom înţelege, în această afirmaţie, prin probleme echivalente, două probleme care se pot obţine una din cealaltă prin transformări elementare. Aceste transformări realizează un izomorfism între mulţimile soluţiilor celor două probleme şi un homeomorfism între funcţiile lor obiectiv.

Teorema fundamentală a dualităţii.

Rezolvarea celor două probleme din cuplul primală-duală poate duce doar la unul din următoarele trei rezultate:

Dacă una din cele două probleme are soluţie optimă finită atunci şi cealaltă are soluţie optimă finită şi valorile funcţiilor obiectiv corespunzătoare celor două soluţii sunt egale;

Dacă una din cele două probleme are optim infinit atunci cealaltă nu are soluţii admisibile.

Dacă una din cele două probleme nu are soluţii admisibile atunci cealaltă are optim infinit sau nu are soluţii admisibile.

Rezolvare. Presupunem că cele două probleme au fost aduse la forma canonică:

Primala

(max) cTxAx bx 0

Duala

(min) bTuATu c

u 0

Această presupunere nu va afecta rezultatul, deoarece, dacă nu erau deja aşa, noile probleme sunt echivalente cu cele iniţiale. În continuare, pentru rezolvarea acestei teoreme demonstrăm următoarea lemă:

Lema 3. Dacă există soluţii admisibile pentru fiecare problemă atunci pentru orice x soluţie admisibilă a primalei şi orice u soluţie admisibilă a dualei avem:

cTx bTu

Demonstraţie: Avem: ATu c (ATu)T cT uTA cT

De asemenea:

Obţinem:

Pentru a demonstra teorema, presupunem că am rezolvat una din cele două probleme, aceasta fiind considerată ca fiind primala. Avem trei variante:

48

Page 49: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

1. Problema are optim finit. Fie în acest caz fie xB o soluţie de bază a primalei sub forma

standard, care dă optimul problemei, adică cTxB = . Toţi j corespunzători acestei baze

vor fi pozitivi şi ţinând cont de expresia lui j, rezultă:

B-1A cT AT( B-1)T c

relaţie care spune că vectorul cu m componente u* = ( B-1)T este o soluţie de bază admisibilă a problemei duale (primala fiind la forma standard, variabilele dualei pot avea orice semn).

Avem, conform lemei 3: cTxB uTb pentru orice soluţie admisibilă a problemei duale. Pe de altă parte cTxB = cTB-1b = (u*)Tb de unde rezultă că pentru orice soluţie admisibilă a problemei duale se verifică:

(u*)Tb uTb

care este echivalent cu faptul că u* este soluţia de optim a dualei şi că f(xB) = g(u*).

2. Problema are optim infinit. În acest caz, dacă duala ar avea soluţii admisibile u, g(u) ar fi un majorant pentru mulţimea {f(x)/ x admisibilă}, în contradicţie cu ipoteza de optim infinit.

3. Problema nu are soluţii. În acest caz, dacă duala ar avea optim finit ar rezulta, conform celor arătate în varianta 1, că primala are optim finit, în contradicţie cu ipoteza.

În concluzie, deoarece cele trei variante acoperă toate situaţiile posibile, toate ducând la unul din rezultatele afirmate ca posibile în teoremă şi ţinând cont de faptul că nu a avut importanţă care problemă a fost aleasă spre rezolvare, teorema este demonstrată.

Teorema ecarturilor complementare.

Fie x* = şi u* = două soluţii admisibile ale primalei, respectiv dualei, scrise sub forma canonică. Atunci ele sunt soluţii optime ale celor două probleme dacă şi numai dacă verifică sistemul:

sau, matricial

Demonstraţie.

“” Presupunem că x* şi u* sunt soluţiile optime ale celor două probleme. Atunci:

(u*)T(b – Ax*) 0

(( u*)TA - c)(x*) 0

cum (u*)Tb = cx* (conform teoremei fundamentale) (u*)T(b – Ax*) + (( u*)TA - c)(x*) = (u*)Tb – (u*)T Ax* + ( u*)TA x* - cx* = 0

49

Page 50: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

(u*)T(b – Ax*) = (( u*)TA - c)(x*) = 0

“” Dacă (u*)T(b – Ax*) = (( u*)TA - c)(x*) = 0 (u*)T(b – Ax*) + (( u*)TA - c)(x*) = 0 (u*)Tb =

cx* ( conform teoremei fundamentale) x* şi u* sunt soluţiile optime ale celor două probleme. Teorema ecarturilor complementare dă o caracterizare pentru optimalitatea soluţiilor

primalei şi dualei, dacă ele există. Sistemul din teoremă se obţine aplicând metoda multiplicatorilor lui Lagrange pentru extreme cu legături, în cazul particular al unei probleme de programare liniară.

Această teoremă nu reprezintă o modalitate practică de a rezolva cele două probleme decât în anumite cazuri simple, rezolvarea sistemului fiind mai grea, în cazul problemelor liniare, decât rezolvarea cu algoritmul simplex al fiecărei probleme, dar, pe baza ei, se poate găsi soluţia uneia din probleme dacă se cunoaşte soluţia celeilalte sau se poate verifica dacă o soluţie a unei probleme este optimă, introducând-o în sistem, găsind celelalte necunoscute şi verificând că ele formează o soluţie admisibilă a dualei.

Observaţia 3. Demonstrarea teoremei fundamentale s-a făcut găsind efectiv soluţia optimă a dualei, considerându-se că primala a fost rezolvată cu algoritmul simplex. Ea este B-1 şi, pentru găsirea practică a acesteia, trebuie cunoscută B-1. Matricea B-1 nu apare explicit în rezolvarea problemei cu algoritmul simplex, dar se poate demonstra că este formată din coloanele din tabelul simplex al soluţiei optime corespunzătoare poziţiilor care formau baza soluţiei iniţiale. B-1

reprezintă chiar zj corespunzătoare acestor coloane din ultimul tabel, deci putem formula rezultatul:

“soluţia dualei este formată din valorile zj ale tabelului soluţiei optime, corespunzăoare vectorilor coloană ai bazei iniţiale”

Introducerea dualităţii este motivată din mai multe puncte de vedere:

1. Teoretic. Una din problemele centrale ale programării matematice este caracterizarea situaţiilor în care există optimul unei probleme şi găsirea unor metode prin care să recunoaştem optimalitatea unei soluţii. Teorema fundamentală a dualităţii şi teorema ecarturilor complementare reprezintă rezultate chiar în acest sens, în care se foloseşte dualitatea.

2. Practic. Rezultatele obţinute mai sus conturează faptul că putem rezolva o problemă rezolvând problema duală a acesteia sau cunoscând soluţia dualei. În unele cazuri, rezolvarea dualei este mult mai uşoară decât rezolvarea primalei, de exemplu când numărul de restricţii al primalei este mai mare decât numărul de variabile al acesteia sau când primala necesită mai multe variabile suplimentare decât duala. Astfel, pentru exemplul 3 de mai sus, rezolvarea primalei duce la opt iteraţii cu tabele cu 7 linii şi 16 coloane, iar rezolvarea dualei la 5 tabele cu 2 linii şi 9 coloane. În alte cazuri, soluţiile dualei sunt deja cunoscute, găsirea soluţiilor primalei revenind la a rezolva sistemul din teorema ecarturilor complementare, după ce au fost înlocuite soluţiile celei duale.

3. Economic. În cele mai multe probleme economice, a căror rezolvare se face printr-un model de programare liniară, soluţia dualei aduce o serie de informaţii suplimentare despre problema studiată. Semnificaţia economică a soluţiei dualei depinde de specificul problemei şi trebuie găsită de la caz la caz. Expunem în continuare interpretarea economică a variabilelor şi soluţiilor dualei în cazul unei probleme de producţie.

În paragrafele precedente s-a demonstrat că, prin rezolvarea unei probleme de programare liniară, se obţine atât soluţia optimă a problemei iniţiale cât şi a problemei duale. Corespondenţa dintre problema iniţială şi duală se reflectă în conţinutul economic al parametrilor incluşi în soluţia

50

Page 51: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

problemei duale. Semnificaţia economică a indicatorilor u i este determinată de natura problemei economice şi de tipul restricţiilor problemei primale.

Într-o problemă sub formă canonică, în care se cere maximizarea funcţiei obiectiv, restricţiile pot fi interpretate ca inecuaţii ce se referă la resurse şi, de aceea, interpretarea variabilelor ui este mai simplă.

Vom analiza modelul de programare liniară al problemelor de mai jos:

Exemplul 1: O unitate economică fabrică produsele P1, P2 şi P3 utilizând trei resurse: forţa de muncă, mijloace de muncă şi materii prime. Consumurile specifice, cantităţile disponibile din fiecare resursă şi preţurile de vânzare ale produselor sunt date în tabelul de mai jos:

ProduseResurse

P1 P2 P3Disponibil

(unităţi fizice)Forţa de muncă 1 3 4 15

Mijloace de muncă 2 5 1 10Materii prime 4 1 2 25

Preţ de vânzare(unităţi monetare)

3 2 6 -

Modelul matematic pe baza căruia se stabileşte programul optim de producţie, având drept

criteriu de eficienţă valoarea maximă a producţiei, are forma:

(max) f = 3x1 + 2x2 + 6x3

x1, x2, x3 0

Utilizând regulile de trecere la duală, rezultă următoarea problemă duală:

(min) g = 15u1 + 10u2 + 25u3

u1, u2, u3 0

După rezolvarea cu algoritmul simplex se obţine soluţia optimă a celor două probleme în ultimul tabel simplex, dat în continuare:

51

Page 52: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

3 2 6 0 0 0cB xB xB x1 x2 x3 s1 s2 s3

6 x3 0 1 0

3 x1 1 0 0

0 x6 0 -9 0 0 -2 1

zj - 3 6 0

j - - 0 0 0

Exemplul 2: Activitatea unei întreprinderi industriale se concretizează în fabricarea produselor omogene P1, P2, P3 şi P4, ale căror costuri unitare de producţie sunt: c1 = 4, c2 = 3, c3 = 7 respectiv c4 = 2 unităţi monetare. Pentru desfăşurarea procesului de producţie este necesar ca din produsul P1 să se asigure un stoc de cel puţin 5 unităţi şi, în plus, câte cel puţin 2 unităţi pentru fiecare piesă P3 (produsul P1 intră în componenţa produsului P3). În anul de bază, volumul producţiei realizate de întreprindere a fost de 20 unităţi. În urma analizei desfacerilor s-a ajuns la concluzia că cererea este în creştere. De asemenea, întreprinderea îşi propune ca în perioada de plan să obţină un beneficiu total cel puţin egal cu cel din perioada de bază, care a fost de 100 u.m.. Beneficiul unitar corespunzător celor 4 produse s-a estimat a fi de 2, 5, 8 respectiv 3 u.m..

Modelul matematic corespunzător problemei primale şi respectiv problemei duale are forma:

Primală Duală

(min) f = 4x1 + 3x2 + 7x3 + 2x4

în condiţiile

x1, x2, x3, x4 0

(max) g = 5x1 + 20x2 + 100x3

în condiţiile

u1 oarecare, u2,u3 0 şi u4 0

Exemplul 3: Considerăm problema dată în exemplul 1 căreia îi ataşăm două modificări:

1. forţa de muncă trebuie folosită în întregime;2. volumul producţiei planificate al produsului P2 trebuie să fie cel puţin egal cu o unitate

fizică;

Cuplul de probleme primală-duală va avea forma:

52

Page 53: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Primală Duală

(max) f = 3x1 + 2x2 + 6x3

x1, x2, x3 0

(min) g = 15u1 + 10u2 + 25u3 + u4

u1 oarecare, u2, u3 0, u4 0

Se constată ca, în funcţia obiectiv a problemei duale, apar cantităţile disponibile din cele trei resurse, înmulţite cu mărimile u1, u2, şi respectiv u3. Întrucât resursele reprezintă valori de întrebuinţare diferite, cantităţile bi nu se pot însuma decât dacă indicatorii ui evaluează resursele în aceeaşi unitate de măsură. După cum se vede din aceste model, valoarea indicatorilor u i depinde de cantitatea de resurse disponibile, de structura consumurilor directe din resursa respectivă şi de structura matematică a modelului.

Conform teoremei ecarturilor complementare, resurselor utilizate în întregime le corespund evaluări ui strict pozitive, iar resurselor excedentare le corespund indicatori u i = 0. Un produs Pj va apărea în soluţia optimă, (xj > 0) numai atunci când costul său unitar de producţie, obţinut prin evaluarea resurselor consumate cu ajutorul indicatorilor ui, nu depăşeşte preţul unitar de producţie cj, adică atunci când:

= cj (R)

Ideea enunţată mai sus se confirmă şi în cazul exemplelor analizate. Astfel, în exemplul 1, produsul P2 nu apare în soluţia optimă (x2 = 0) deoarece costul său de producţie depăşeşte preţul unitar de realizare:

a12u1 + a22u2 + a32u3 > c2

adică: 3 + 5 + 10 = 8,1 > 2.

Celelalte două produse intră în programul optim, întrucât este satisfăcută relaţia (R). Deci, fabricarea unui produs care nu figurează în programul optim este neeficientă din punctul de vedere al folosirii resurselor.

Prin urmare, pentru o problemă de programare liniară scrisă sub forma canonica, în care se urmăreşte maximizarea funcţiei f (x), mărimea ui reprezintă valoarea ultimei unităţi folosite în producţie din resursa Ri.

Având în vedere că max[f(x)] = min [g(u)], rezultă că, dacă, cantitatea disponibilă din resursa Ri creşte cu o unitate, atunci valoarea funcţiei obiectiv creşte cu u i, deci ui măsoară creşterea valorii funcţiei obiectiv determinată de creşterea cu o unitate a cantităţii disponibile bi.

Aceste evaluări obţinute dintr-un program optim au fost denumite în literatura de specialitate "preţuri umbră" sau "evaluări obiectiv determinate".

Preţul umbră ui arată cu cât se modifică funcţia obiectiv a problemei duale4, atunci când termenul liber al restricţiei Ri se "relaxează" cu o unitate. A "relaxa" are semnificaţia de a spori cantitatea disponibilă bi a unei resurse deficitare sau, pentru restricţiile de tip calitativ cu limită

4 Dar şi a problemei primale, întrucât f(x) şi g(u) sunt legate prin teorema dualităţii53

Page 54: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

inferioară impusă ( bi), de a reduce nivelul termenului liber bi. Este evident că, dacă o

resursă nu este utilizată în întregime pentru satisfacerea programului optimal xB ( < bi),

atunci ui = 0 iar funcţia obiectiv nu este afectată de sporirea5 cantităţii disponibile bi. În cazul restricţiilor de tip calitativ, acestea nu constituie un "loc îngust" pentru programul optimal xB dacă şi

numai dacă > bi, ca urmare ui = 0 iar funcţia obiectiv nu este influenţată de reducerea2

nivelului pentru indicatorul bi. Pentru o problemă scrisă sub formă canonică, în care se cere minimizarea funcţiei f(x),

restricţiile se referă, aşa cum s-a arătat, la caracteristici economice cărora li se impun limite inferioare sau la indicatori calitativi cu limită inferioară stabilită; în acest caz preţul umbră u i

măsoară creşterea costului total al producţiei, a cheltuielilor de muncă, a cheltuielilor cu fondurile fixe etc., determinată de creşterea cu o unitate a componentei b i a vectorului termenilor liberi. Astfel, daca la exemplul 2 planul de producţie prevede o creştere a volumului producţiei de la 20 unităţi la 21 unităţi, atunci costul total al producţiei va creşte cu u2 unităţi.

În cazul problemelor de programare liniară care conţin restricţii neconcordante şi egalităţi, la interpretarea preturilor umbră trebuie să se ţină seama de natura economică a funcţiei obiectiv şi de semnul variabilei ui. Pentru a elucida acest aspect, ne vom referi la modelul matematic ce rezultă din exemplul 3.

Soluţiile optimale ale problemei primale şi duale sunt:

xB = (x1, x2, x3, x4, x5, x6) = (8/7, 1, 19/7, 0, 14, 0)

uB = (u1, u2, u3, u4) = (9/7, 6/7, 0, – 43/7).

Se constată imediat că valoarea funcţiei obiectiv f(xB) = g(uB) = 152/7 este mai mică decât cea obţinută prin rezolvarea modelului din exemplul 1, cu f(x) = 195/7 – 152/7 = 43/7 unităţi monetare6. Această diferenţă apare datorită introducerii restricţiei x2 > 1, al cărei preţ umbră este u4

= – 43/7. Prin urmare variabila u4 arată cu cât scade valoarea funcţiei obiectiv f(x) atunci când nivelul minim impus variabilei x2 este mai mare cu o unitate.

În sfârşit variabila u1 = 9/7, care este ataşată unei restricţii sub formă de egalitate, arată că sporirea cu o unitate a nivelului forţei de muncă disponibile conduce la creşterea valorii producţiei cu 9/7 unităţi monetare.

Rezultă că preţurile umbră aduc informaţii suplimentare pentru analiza eficienţei economice a resurselor şi a diferiţilor indicatori economici sau tehnici care apar în restricţiile unei probleme de programare liniară. Pe baza lor se pot fundamenta deciziile privind alocarea judicioasă a resurselor, se pot stabili măsuri de stimulare a consumului raţional al resurselor, se determină cât mai corect nivelul minim şi maxim al diferiţilor indicatori tehnici şi economici de care depinde structura planului optim.

Soluţia optimă obţinută prin utilizarea datelor iniţiale poate constitui un punct de plecare pentru analiza economică privind alocarea eficientă a resurselor. Vom ilustra acest aspect folosind modelul matematic elaborat în cadrul exemplului 1.

În tabelul de mai jos se dau soluţiile optime ale cuplului primală-duală, pentru diferite valori ale primei resurse (b2 = 10, b3 = 25).

5 Variaţia termenului liber bi trebuie interpretată ca o modificare bi, în condiţiile în care celelalte restricţii nu se modifică. Vezi exemplul 1.6 Reamintim că exemplul 3 s-a obţinut din exemplul 1 ca urmare a unor transformări. Precizăm că, în soluţiile optime ale ambelor modele, prima restricţie se verifică cu egalitate. De aceea, diferenţa dintre cele două soluţii este determinată numai de restricţia x2 > 1.

54

Page 55: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Cantitatea disponibilă din prima resursă (b1)Variabile 15 16 26 36 40 41

u4

x1

325/7

324/7

32

34/7

30

30

u5

x2

57/70

57/70

57/70

57/70

57/70

300

u6

x3

620/7

622/7

66

662/7

610

610

u1

x4

9/70

9/70

9/70

9/70

9/70

01

u2

x5

6/70

6/70

6/70

6/70

6/70

60

u3

x6

05

05

05

05

05

05

f(x) 195/7 204/7 42 55 60 60

Se observă că între anumite limite de variaţie ale primei resurse, preţurile umbră au aceeaşi valoare. Pentru valori mai mari decât 40 unităţi, preţurile umbră au o altă valoare, deoarece, în acest caz, prima resursă şi a treia devin excedentare. Valoarea funcţiei de eficienţă va creşte cu u 1b1, unde b1 reprezintă sporul disponibilului din prima resursă. Pentru b1 > 40 preţul umbră al resursei a doua este u2 = 6, deci valoarea funcţiei eficienţă va creşte cu 6 unităţi, atunci când b 2 creşte cu o unitate. Aste informaţii sunt utile pentru fundamentarea planului de producţie aprovizionare cu diverse resurse.

La interpretarea influenţei pe care variaţia cantităţii disponibile b i o are asupra preţurilor umbră, trebuie să se ţină seama că bi este o variabilă continuă. Din această cauză ui se defineşte astfel:7

ui =

Este clar că ui va avea o altă valoare când bi creşte (scade) peste o anumită limită (de exemplu bi > 40).

După cum s-a arătat mai înainte, în cadrul algoritmului simplex se stabileşte activitatea cea mai eficientă ak, prin folosirea criteriului de intrare:

Zk = min (zj – cj) la problemele de maxim

Zk = max (zj – cj) la. problemele de minim

Având în vedere relaţia formulele de calcul ale lui Z şi uB, rezultă că:

zj = = j JS

unde yij reprezintă elementele coloanei j din tabelul simplex corespunzător unei soluţii de bază. În cea de a doua sumă a relaţiei precedente se evaluează coeficienţii consumurilor directe,

7 F este o funcţie de tip Lagrange, obţinută din problema standard de programare liniară astfel:

F = f(x) + uiRi (x)

unde Ri(x) reprezintă restricţiile problemei de programare liniară iar ui, 1 i m sunt multiplicatorii lui Lagrange.55

Page 56: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

corespunzători activităţii aj, prin preţurile umbră ataşate celor m restricţii şi, de aceea, mărimea rezultată poate fi interpretată ca un preţ umbră al produsului sau activităţii j. Trebuie precizat că, pentru fiecare bază, vom dispune de un vector u = (u1, u2, ... , um) care se referă la fluxurile intrări - ieşiri corespunzătoare soluţiei de bază. De aceea, evaluările privind eficienţa economică a activităţilor aj (j JS = indicii variabilelor secundare), făcute cu ajutorul indicatorilor u i, sunt valabile numai pentru baza considerată.

Concluziile obţinute pe baza analizei corespondenţei biunivoce dintre problema primală şi cea duală ne permit să înţelegem sensul economic al criteriului de intrare în bază.

Pentru problemele în care se cere maximizarea funcţiei f(x), indicatorii zj reprezintă costul unitar de fabricaţie al produsului j, rezultat din evaluarea coeficienţilor a ij prin preţurile umbră ataşate restricţii1or. Rezultă că, prin calcularea diferenţei j, se compară acest cost unitar cu coeficientul cj (preţ unitar, beneficiu unitar etc.) din funcţia obiectiv. Dacă există diferenţe negative (j < 0) înseamnă că, la activităţile respective, preţul umbră al produsului j (costul unitar de fabricaţie exprimat în indicatori ui) este mai mic decât venitul realizat şi de aceea activitatea a j este eficientă. Aşa se explică faptul că va intra în bază vectorul ak ce corespunde diferenţei zj minime. În momentul în care toate diferenţele sunt pozitive (zj 0) rezultă că nu mai există activităţi eficiente şi prin urmare soluţia de bază analizată este optimă.

În cazul problemelor de minim, indicatorii zj se pot interpreta ca venituri, exprimate în preţurile umbră ale restricţiilor, ce se obţin prin realizarea unei unităţi din produsul j. Prin urmare, dacă există diferenţe pozitive (zj > 0), activităţile aj corespunzătoare sunt eficiente, deoarece se realizează un venit unitar mai mare decât costul unitar de fabricaţie (zj > cj). De aceea, va intra în bază activitatea ak, corespunzătoare diferenţei maxime, iar soluţia de bază se consideră optimă atunci când toate diferenţele zj sunt nepozitive (zj

0).

56

Page 57: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Reoptimizare

Presupunem că am rezolvat o problemă de programare liniară, cunoscând pentru aceasta soluţia optimă de bază xB =B-1b, inversa bazei B-1 şi tabelul simplex corespunzător soluţiei optime. Ne propunem să vedem, în condiţiile în care se modifică unele din datele problemei, ce anume din rezolvarea fostei probleme mai poate fi folosit la rezolvarea noii probleme, în încercarea de a rezolva noua problemă într-un timp mai scurt decât cel necesar rezolvării acesteia de la zero, cu algoritmul simplex. Acest deziderat corespunde ideii de a folosi experienţa anterioară. De asemenea, ne propunem să vedem ce influenţă au diferitele tipuri de modificări ale datelor problemei asupra soluţiilor, atât din punct de vedere matematic cât şi economic.

Datele problemei sunt constituite din:

coeficienţii funcţiei obiectiv = componentele vectorului c termenii liberi ai restricţiilor = componentele vectorului b coeficienţii variabilelor din restricţii = elementele matricii A

O modificare poate afecta toate cele trei grupe.Vom analiza efectele modificărilor începând de la cazurile cele mai simple:

Cazul 1. Dacă se modifică doar elementele vectorului c c’

Deoarece matricea A şi vectorul b rămân aceleaşi, avem acelaşi sistem de restricţii şi deci aceeaşi mulţime de soluţii admisibile. Soluţia optimă a fostei probleme, fiind în particular soluţie de bază admisibilă a sistemului de restricţii, va fi soluţie admisibilă de bază şi în noua problemă. Dispunem deci de o soluţie iniţială admisibilă de bază şi, deci, putem aplica algoritmul simplex primal direct de la faza a doua. Se construieşte tabelul simplex corespunzător soluţiei, în problema modificată:

xB xB xB xS

B-1b Im

B-1S

B-1b 0

care este de fapt fostul tabel, în care se recalculează . Avem două cazuri:

a) Dacă toţi 0, soluţia este optimă;

b) Dacă există un < 0, se aplică în continuare algoritmul simplex primal, până la găsirea soluţiei optime.

Exemplu: Pentru problema:F.S.

(max) f = 3x1 –x2 + 2x3

x1, x2, x3 0

(max)f = 3x1 – x2 +2x3 – Ma1

x1, x2, x3, s1, s2, a1 0

obţinem în final următorul tabel simplex:

57

Page 58: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

3 -1 2 0 0 0 -MxB xB x1 x2 x3 s1 s2 s3 a1

3 x1 3 1 0 0 1 1 2 -22 x3 2 0 0 1 0 1 1 -1-1 x2 1 0 1 0 0 -1 -2 2

12 0 0 0 3 6 10 M - 10

1. Dacă noua funcţie obiectiv este f’ = x1 – 2x2 + 5x3 atunci tabelul corespunzător va fi:

1 -2 5 0 0 0 -MxB xB x1 x2 x3 s1 s2 s3 a1

1 x1 3 1 0 0 1 1 2 -25 x3 2 0 0 1 0 1 1 -1-2 x2 1 0 1 0 0 -1 -2 2

11 0 0 0 1 8 11 M - 11

toţi 0, ne aflăm în cazul a) şi soluţia care dădea optimul fostei probleme este soluţia optimă şi în noua problemă.

2. Dacă noua funcţie obiectiv este f” = x1 + 3x2 - 2x3 atunci tabelul corespunzător va fi:

1 3 -2 0 0 0 -MxB xB x1 x2 x3 s1 s2 s3 a1

1 x1 3 1 0 0 1 1 2 -2-2 x3 2 0 0 1 0 1 1 -13 x2 1 0 1 0 0 -1 -2 2

2 0 0 0 1 -4 -6 M + 6

există < 0 (de exemplu ), ne aflăm în cazul b) şi soluţia care dădea optimul fostei

probleme nu este optimă şi în noua problemă, pentru găsirea celei optime (dacă există!) trebuind să aplicăm în continuare algoritmul simplex primal.

Cazul 2 Dacă se modifică doar componentele vectorului b b’

Deoarece matricea A rămâne aceeaşi, fosta bază rămâne bază şi în noua problemă. Soluţia corespunzătoare va fi: iar . În concluzie, noua soluţie ar putea sau nu să aibă toate componentele pozitive (după cum este noul b’), dar sigur toţi j rămân pozitivi (fiind aceeaşi cu cei ai soluţiei fostei probleme, care era optimă), deci soluţia este cel puţin dual admisibilă de bază. Vom avea două cazuri:

a) Dacă atunci soluţia este şi primal admisibilă, deci este soluţia optimă a noii probleme;

b) Dacă are cel puţin o componentă negativă atunci soluţia este doar dual admisibilă de bază şi vom continua cu algoritmul simplex dual pentru găsirea celei optime (dacă ea există!).

58

Page 59: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Exemplu Pentru problema:F.S.

(max) f = - 4x1 – x2 + 2x3

x1, x2, x3 0

(max) f = - 4x1 – x2 + 2x3 –Ma1

x1,x2, x3, s1, s2, s3,

a1 0

obţinem în final următorul tabel simplex:

-4 -1 2 0 0 0 -MxB xB x1 x2 x3 s1 s2 s3 a1

0 s1 22 0 1 0 0

0 s2 11 0 0 1 -1

2 x3 5 1 0 0 0

10 0 0 0 M

din care obţinem inversa bazei B = ca fiind B-1 =

1. Dacă noul vector al termenilor liberi, din problema la forma standard, ar fi b’ = (2, 5, 6) T

atunci tabelul corespunzător ar fi:

-4 -1 2 0 0 0 -MxB x’B x1 x2 x3 s1 s2 s3 a1

0 s1 4 0 1 0 0

0 s2 5 0 0 1 -1

2 x3 2 1 0 0 0

4 0 0 0 M

toate componentele soluţiei ar fi pozitive, ne-am afla în cazul a) şi soluţia găsită ar fi soluţia optimă în noua problemă.

2. Dacă noul vector al termenilor liberi din problema la forma standard ar fi b’ = (5, 6, 3)T

atunci tabelul corespunzător ar fi:

-4 -1 2 0 0 0 -MxB x’B x1 x2 x3 s1 s2 s3 a1

0 s1 6 0 1 0 0

59

Page 60: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

0 s2 -1 0 0 1 -1

2 x3 1 1 0 0 0

2 0 0 0 M

ar exista componente ale soluţiei strict negative (de exemplu x3 = -1), ne-am afla în cazul b), soluţia nu ar fi primal admisibilă şi, pentru găsirea celei optime, (dacă există!) vom aplica în continuare algoritmul simplex dual.

Cazul 3. Dacă apar k variabile suplimentare, cu coeficienţii corespunzători, în funcţia obiectiv şi în restricţii.

Această modificare are ca efect adăugarea a k coloane la matricea A şi a k elemente la vectorul c, numărul de restricţii (şi deci de linii ale matricii A şi de elemente ale vectorului b) rămânând acelaşi.

Deoarece, în momentul ajungerii la soluţia optimă, în sistem se află doar restricţii independente între ele, rangul matricii este egal cu numărul de linii (care este mai mic decât numărul de coloane) şi, din acest motiv, adăugarea oricâtor coloane nu îl va modifica. Baza fostei matrici rămâne deci bază şi în noua matrice, soluţia xB = B-1b 0 rămâne soluţie de bază a noului sistem de restricţii (B şi b fiind aceeaşi), deci este şi o soluţie de bază primal admisibilă a noii probleme. Tabelul corespunzător acestei baze, în noua problemă, este cel anterior, la care se adaugă k coloane astfel:

pe linia variabilelor se adaugă noile variabile; pe linia coeficienţilor funcţiei obiectiv se adaugă coeficienţii corespunzători noilor

variabile; în interiorul tabelului, sub fiecare variabilă nou introdusă, se adaugă coloana B -1ak,

unde ak este vectorul coloană format din coeficienţii variabilei xk, nou introduse în restricţiile problemei;

k, corespunzători noilor variabile, se calculează cu formula cunoscută: k = B-1ak

- ck.

Vom avea două cazuri:

a) Dacă toţi k sunt pozitivi, soluţia optimă a fostei probleme este soluţie optimă şi pentru noua problemă;

b) Dacă există un indice k, pentru care k < 0, atunci soluţia este doar primal admisibilă şi vom aplica în continuare algoritmul simplex primal, pentru găsirea soluţiei optime (dacă ea există!)

60

Page 61: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Exemplu Fie problema:F.S.

(max) f = 3x1 + 4x2 – 2x3

x1, x2, x3 0

(max) f = 3x1 + 4x2 – 2x3 –Ma1

x1,x2, x3, s1, s2, s3, a1

0

pentru care obţinem tabelul simplex final:

3 4 -2 0 0 0 -MxB xB x1 x2 x3 s1 s2 s3 a1

4 x2 4 0 1 0 3

3 x1 1 1 0 0 -2

-2 x3 2 0 0 1 0 1 -1 0

15 0 0 0 4 2 M

de unde găsim inversa bazei B = ca fiind B-1 = .

1. Dacă introducem, în plus, variabilele x4, x5 şi x6, obţinând problema la forma standard:

(max) f = 3x1 + 4x2 – 2x3 +2x4 – 20x5 –x6 –Ma1

x1, x2, x3, x4, x5, x6, s1, s2, s3, a1 0

vom obţine tabelul corespunzător bazei B, în noua problemă, prin:

adăugarea variabilelor x4, x5, x6 la linia variabilelor; adăugarea coeficienţilor 2, -20, -1 corespunzători acestor variabile la linia coeficienţilor

funcţiei obiectiv; adăugarea coloanelor:

a4 = = ,

61

Page 62: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

a5 = = ,

a6 = = .

adăugăm: 4 = B-1a4 – c4 = 1

5 = B-1a5 – c5 =

6 = B-1a6 – c6 =

şi, final, obţinem tabelul:

3 4 -2 2 -20 -1 0 0 0 -MxB xB x1 x2 x3 x4 x5 x6 s1 s2 s3 a1

4 x2 4 0 1 0 5 3

3 x1 1 1 0 0 -3 -2

-2 x3 2 0 0 1 4 -1 3 0 1 -1 0

15 0 0 0 1 4 2M

Se observă că toţi j sunt pozitivi, deci soluţia este optimă.

2. Dacă, pentru aceeaşi modificare, alegem coeficientul lui x5 egal cu –10, în loc de –20, în

tabel se va modifica doar 5, care va avea valoarea şi ne vom afla în cazul b) (deoarece 5 <

0); vom continua căutarea soluţiei optime cu algoritmul simplex primal.

Cazul 4. Dacă se adaugă o restricţie

Efectul este adăugarea unei linii la matricea A şi a unui element la vectorul b. Se verifică dacă fosta soluţie de optim verifică noua restricţie. Dacă o verifică, ea este

soluţia de optim şi a noii probleme. Dacă nu o verifică, vom căuta în continuare noua soluţie de optim (dacă ea există!).

Deoarece rangul matricii A era egal cu numărul de linii (care era mai mic decât numărul de coloane), prin adăugarea unei linii rangul noii matrici va fi cu 1 mai mare (dacă nu s-ar întâmpla aşa ar rezulta că noua restricţie este o combinaţie a celor anterioare şi, deci, nu are nici un efect asupra mulţimii soluţiilor, putând fi eliminată din sistem, noua problemă fiind de fapt aceeaşi cu fosta problemă, care e deja rezolvată).

62

Page 63: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În acest caz, fosta bază nu mai este bază în noua matrice, ci doar un minor cu determinantul diferit de zero, de dimensiune cu 1 mai mică decât rangul matricii. Pentru a obţine baza noii probleme vom borda fosta bază cu noua linie şi o coloană.

Din ultimul tabel simplex al fostei probleme, putem scrie fostul sistem la forma:

xB +B-1·S·xS = B-1·b = xB

de unde scoatem variabilele principale în funcţie de cele secundare, le înlocuim în noua restricţie şi apoi aranjăm ca termenul liber bm+1 obţinut să fie pozitiv (înmulţind eventual restricţia cu –1). Adăugăm noua restricţie, sub forma obţinută, la sistemul iniţial, scris sub forma corespunzătoare ultimului tabel simplex. Avem trei cazuri:

a) Dacă restricţia este de tipul “”, introducem variabila de abatere s, care va avea coeficientul +1 şi baza va fi formată din coloanele corespunzătoare fostelor variabile principale, plus coloana variabilei s, obţinând matricea unitate. Tabelul corespunzător în noua problemă va fi fostul tabel, la care se adaugă:

o linie în plus, pe care: cs = 0 în coloana coeficienţilor din funcţia obiectiv ai variabilelor din baza, s în coloana variabilelor bazei, bm+1 în coloana soluţiei de bază, coeficienţii noii restricţii (adusă la ultima formă) în interiorul tabelului şi 1 in dreptul noii variabile s.

o coloană în plus corespunzătoare lui s, care va fi vector unitar.

În acest caz, noii j vor fi foştii j (deoarece cs = 0), la care se adaugă cel corespunzător lui s (egal cu 0, deoarece s este din bază). Soluţia are toate componentele pozitive şi toţi j pozitivi, deci este soluţia optimă căutată.

b) Dacă restricţia este de tipul “” variabila de abatere va avea coeficientul –1 şi soluţia corespunzătoare este doar dual admisibilă (deoarece s = -bm+1 < 0); vom continua căutarea soluţiei optime cu algoritmul simplex dual.

c) Dacă restricţia este cu “=”, se introduce variabila artificială a, cu c a = -M, se construieşte tabelul asociat ca la cazul a) şi se obţine o soluţie admisibilă (deoarece a = b m+1 0), cu j depinzând de M (deoarece ca = -M). Se continuă cu algoritmul simplex primal.

Exemplu Fie problema:

F.S.

(max) f = x1 –3x2 + 2x3

x1, x2, x3 0

(max) f = x1 –3x2 + 2x3

x1, x2, x3, s1, s2, s3, a1 0

pentru care obţinem tabelul final:

63

Page 64: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

1 -3 2 0 0 0 -McB xB xB x1 x2 x3 s1 s2 s3 a1

0 s2 54 0 11 0 2 1 3 -12 x3 99 0 22 1 3 0 4 01 x1 27 1 6 0 1 0 1 0

225 0 53 0 7 0 9 M

din care putem scrie sistemul de restricţii sub forma:

1. Dacă noua restricţie ar fi 2x1 + x2 – x3 7 atunci soluţia de optim (x1 = 27, x2 = 0, x3 = 99) ar verifica noua restricţie şi ar fi soluţie de optim şi pentru noua problemă.

2. Dacă noua restricţie ar fi 3x1 +2x2 + x3 8 ea nu ar fi verificată de fosta soluţie de optim. Înlocuind în această restricţie s2, x1 şi x3, cu expresiile obţinute în sistemul de mai sus, rezultă:

3·(27 – 6x2 – s1 – s3) + 2x2 + (99 – 22x2 – 3s1 – 4s3) 8 -38x2 – 6s1 – 7s3 -172 38x2 + 6s1 + 7s3 172

38x2 + 6s1 + 7s3 – s = 172

şi sistemul: iar în final, tabelul:

1 -3 2 0 0 0 0cB xB xB x1 x2 x3 s1 s2 s3 s0 s2 54 0 11 0 2 1 3 02 x3 99 0 22 1 3 0 4 01 x1 27 1 6 0 1 0 1 00 s -172 0 38 0 6 0 7 1

225 0 53 0 7 0 9 0

în care soluţia de bază este dual admisibilă. Se continuă rezolvarea problemei cu algoritmul simplex dual.

3. Dacă noua restricţie ar fi x1 + x2 + x3 = 100 ea nu ar fi verificată de fosta soluţie. Prin înlocuirea lui x1 şi x3 obţinem:

(27 – 6x2 – s1 – s3) + x2 + (99 – 22x2 – 3s1 – 4s3) = 100 -27x2 – 4s1 – 5s3 = -26 27x2 + 4s1 + 5s3 = 26

27x2 + 4s1 + 5s3 + a = 26

64

Page 65: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

rezultă sistemul: iar în final, tabelul:

1 -3 2 0 0 0 -McB xB xB x1 x2 x3 s1 s2 s3 a0 s2 54 0 11 0 2 1 3 02 x3 99 0 22 1 3 0 4 01 x1 27 1 6 0 1 0 1 0

-M a 26 0 27 0 4 0 5 1-26M + 225 0 -27M + 53 0 -4M + 7 0 -5M + 9 0

în care soluţia de bază este primal admisibilă. Se continuă rezolvarea problemei cu algoritmul simplex primal.

Cazul 5. Dacă se modifică coeficienţii unei variabile xj

Efectul este modificarea coloanei aj din A şi/sau a coeficientului cj din funcţia obiectiv. Avem două variante:

Cazul 5.1 Coloana aj nu face parte din B. În acest caz fosta bază B rămâne bază şi în noua problemă, soluţia corespunzătoare este aceeaşi: xB = B-1·b şi tabelul corespunzător este fostul tabel, în care se modifică doar coloana corespunzătoare variabile xj:

cj , B-1·aj B-1· , j

Avem două cazuri:

Dacă fosta soluţie optimă rămâne optimă şi în noua problemă.

Dacă < 0 fosta soluţie optimă este doar primal admisibilă şi se va continua rezolvarea problemei cu algoritmul simplex primal.

Exemplu Fie problema:F.S.

(max) f = 2x1 +3x2 + 4x3

x1, x2, x3 0

(max) f = 2x1 +3x2 + 4x3

x1, x2, x3, s1, s2, s3, a1 0

După rezolvare, se obţine tabelul simplex final de mai jos, din care se găseşte inversa bazei

B = ca fiind B-1 =

65

Page 66: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

2 3 4 0 0 0 -McB xB xB x1 x2 x3 s1 s2 s3 a1

2 x1 10 1 0 0 0

0 s1 90 0 0 15 1 5 6 -1

3 x2 9 0 1 1 0 0

47 0 0 2 0 M

1. Dacă se modifică coeficienţii variabilei x3, problema devenind:F.S.

(max) f = 2x1 +3x2 + 2x3

x1, x2, x3 0

(max) f = 2x1 +3x2 + 2x3

x1, x2, x3, s1, s2, s3, a1 0

noua coloană corespunzătoare lui x3 va fi a/3 = · = iar /

3 = < 0, deci

ne aflăm în cazul b) şi vom continua rezolvarea problemei cu algoritmul simplex primal, de la tabelul:

2 3 2 0 0 0 -McB xB xB x1 x2 x3 s1 s2 s3 a1

2 x1 10 1 0 0 0 0

0 s1 90 0 0 -1 1 5 6 -1

3 x2 9 0 1 0 0

47 0 0 0 M

2. Dacă se modifică coeficienţii variabilei x3, problema devenind:

F.S.(max) f = 2x1 +3x2 - 3x3

x1, x2, x3 0

(max) f = 2x1 +3x2 – 3x3

x1, x2, x3, s1, s2, s3, a1 0

66

Page 67: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

noua coloană corespunzătoare lui x3 va fi a/3 = · = iar /

3 = < 0, deci ne

aflăm în cazul a) cu fosta soluţie optimă şi pentru noua problemă, tabelul final fiind:

2 3 -3 0 0 0 -McB xB xB x1 x2 x3 s1 s2 s3 a1

2 x1 10 1 0 0 0

0 s1 90 0 0 16 1 5 6 -1

3 x2 9 0 1 0 0

47 0 0 0 M

Cazul 5.2 Coloana aj face parte din baza B. În acest caz fosta bază nu mai există în noua matrice A. Noul minor B’, obţinut prin înlocuirea lui aj cu în B, poate fi:

neinversabil (det B’ = 0) caz în care trebuie căutată altă bază; inversabil, soluţia corespunzătoare xB’ = (B’)-1·b putându-se în următoarele situaţii: are toate componentele pozitive (xB’ 0), deci este primal admisibilă şi putem aplica

în continuare algoritmul simplex primal; are componente strict negative, dar are toţi j pozitivi, deci este dual admisibilă şi

putem aplica în continuare algoritmul simplex dual; are componente strict negative şi există j strict negativi, deci nu este nici primal nici

dual admisibilă şi trebuie căutată altă bază.

Se observă că există variante când trebuie căutate alte baze şi, chiar în cazurile când putem folosi noua bază, avem de făcut calcule laborioase (inversarea lui B’, calculul produselor B -1·b şi B-

1·A şi calculul noilor j). Din acest motiv vom aplica următorul procedeu (fără a mai verifica posibilitatea existenţei unui caz favorabil de mai sus):

pasul 1. Se scriu în noua problemă (adusă la forma canonică) toţi termenii cu variabila x j ca o sumă de doi termeni, unul având coeficient fostul coeficient al variabilei x j iar celălalt diferenţa dintre aceştia:

· xj = cj · xj + ( - cj) · xj

· xij = aij · xj + ( - aij) · xj

pasul 2. Se înlocuieşte în toţi termenii de forma ( - cj) · xj şi ( - aij) · xj, variabila xj cu o nouă variabilă y şi se adaugă la sistem restricţia xj = y, obţinându-se o problemă echivalentă.

pasul 3. Pentru noua problemă, se aplică procedeul de la cazul 4 pentru varianta c), obţinându-se o soluţie de bază admisibilă cu care se continuă cu algoritmul simplex primal.

Exemplu După rezolvarea problemei:F.S.

67

Page 68: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

(max) f = 2x1 +3x2 + 5x3

x1, x2, x3 0

(max) f = 2x1 +3x2 + 5x3

x1, x2, x3, s1, s2, s3 0

se obţine soluţia optimă şi tabelul pentru baza corespunzătoare variabilelor (x1, x3, s3), în care (x1 = 2, x3 = 2, s3 = 0) şi tabelul:

2 3 5 0 0 0cB xB xB x1 x2 x3 s1 s2 s3

2 x1 2 1 0 0

5 x3 2 0 1 0

0 s3 0 0 0 1

14 0 0 0

B şi B-1 fiind date mai jos:

B = B-1 =

Dacă presupunem că se modifică coeficienţii variabilei x3, noua problemă fiind:F.S.

(max) f = 2x1 +3x2 + 2x3

x1, x2, x3 0

(max) f = 2x1 +3x2 + 2x3

x1, x2, x3, s1, s2, s3 0

deoarece x3 face parte din bază, vom face transformarea:F.S.

(max) f = 2x1 +3x2 + 2x3

x1, x2, x3, s1, s2, s3 0

(max) f = 2x1 +3x2 + 5x3 - 3y

x1, x2, x3, s1, s2, s3, y 0

68

Page 69: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Din primele trei ecuaţii scoatem variabilele fostei baze (x1, x3, s3) în funcţie de celelalte, înmulţind sistemul cu B-1. Coeficienţii fostelor variabile se iau din ultimul tabel iar ai lui y se calculează înmulţind coloana coeficienţilor lui cu B-1. Avem:

B-1 · = · =

deci sistemul va avea forma:

Din primele trei ecuaţii se scot variabilele bazei în funcţie de celelalte:

apoi se înlocuiesc în ultima ecuaţie: în

care se adaugă variabila de abatere a şi se adaugă la sistem. Se obţine în final problema:

(max) f = 2x1 +3x2 + 5x3 - 3y

Tabelul corespunzător va fi:

69

Page 70: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

2 3 5 -3 0 0 0 -McB xB xB x1 x2 x3 y s1 s2 s3 a

2 x1 2 1 0 0 0

5 x3 2 0 1 0 0

0 s3 0 0 0 1 0

-M a 2 0 0 0 1

14-2M 0 - M 0 M + M - M 0 0

în care soluţia de bază este admisibilă şi vom continua rezolvarea cu algoritmul simplex primal.

Din punct de vedere economic, situaţiile de mai sus pot fi foarte bine exemplificate pe cazul unei întreprinderi care fabrică n produse folosind m materii prime şi doreşte găsirea acelor cantităţi ce trebuie fabricate din fiecare produs astfel încât să obţină profitul total maxim.

În acest caz coeficienţii problemei vor fi:

cj = profiturile unitare obţinute prin vânzarea celor n produse. bi = disponibilurile din cele m materii prime. aij = coeficienţii tehnologici.

1. Modificarea coeficienţilor funcţiei obiectiv poate însemna fie o reevaluare a profiturilor unitare, fie pur şi simplu schimbarea obiectivului propus (de exemplu maximizarea veniturilor sau minimizarea cheltuielilor în loc de maximizarea profitului, caz în care c i

ar avea alte semnificaţii (venit unitar, cost unitar) şi deci cu totul alte valori).2. Modificarea termenilor liberi poate însemna modificarea posibilităţilor de procurare a

materiilor prime prin pierderea unor furnizori sau realizarea de contracte cu noi furnizori.

3. Apariţia de coloane în plus înseamnă lărgirea gamei de produse.4. Apariţia de noi restricţii poate înseamnă existenţa unei resurse care nu fusese luată în

considerare până acum, deoarece limitele datorate acesteia erau suficient de largi pentru a nu influenţa soluţia, în urma modificării acestor limite ele putând modifica soluţia.

5. Modificarea coloanelor poate însemna fie schimbarea gamei sortimentale, fie schimba-rea tehnologiei de fabricaţie.

70

Page 71: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Parametrizare

Sunt cazuri în care coeficienţii unei probleme nu sunt cunoscuţi, sau nu pot fi estimaţi cu exactitate, sau nu sunt constanţi, ei variind în funcţie de unul sau mai mulţi parametrii, după o lege cunoscută, care este mai mult sau mai puţin complicată, putând lua valori într-o mulţime oarecare, finită sau infinită, discretă sau continuă, mărginită sau nemărginită. Ne-ar interesa să cunoaştem, pentru fiecare valoare posibilă a coeficienţilor, care este soluţia optimă a problemei, sau invers, pentru fiecare soluţie, care este mulţimea parametrilor pentru care aceasta rămâne optimă.

Este evident că problema este atât de complicată încât nu se poate da o unică rezolvare, aplicabilă pentru orice mulţime a parametrilor şi oricare ar fi legile de dependenţă a coeficienţilor de parametrii.

Ne propunem să facem rezolvarea doar pentru cazurile în care termenii liberi ai restricţiilor sau coeficienţii funcţiei obiectiv variază liniar în funcţie de un singur parametru.

Cazul 1 Parametrizarea termenilor liberi ai restricţiilor

Aşadar termenii liberi ai restricţiilor au forma:

b() = b0 + b1 bi() =

unde R este parametrul considerat iar b0, b1 Rm sunt doi vectori cu componentele constante reale. Pentru rezolvarea problemei pentru orice , vom parcurge următorii paşi:

Pasul 1. Se rezolvă problema pentru un 0 iniţial; presupunem că există cel puţin un pentru care problema are soluţie (altfel am avea un caz neinteresant) şi în plus putem presupune că el este egal chiar cu 0, acest lucru putând fi aranjat eventual prin schimbarea de variabilă:

= 0 +

şi scrierea lui b sub forma:

b() = (b0 + b10) + b1.

Vom găsi o soluţie x0 şi baza corespunzătoare B0.

Pasul 2. Se calculează soluţiile de bază xB(), corespunzătoare bazei găsite la pasul 1, pentru variabil:

xB() =

Deoarece valorile j = nu depind de , ele sunt pozitive pentru orice , nu doar pentru 0 şi deci soluţia xB() va fi optimă atâta timp cât are toate componentele pozitive. Acei pentru care xB() 0 reprezintă mulţimea valorilor parametrului pentru care baza B0 dă soluţia optimă.

Pasul 3. Se rezolvă sistemul de inecuaţii xB() 0, a cărui soluţie va fi, ţinând cont că toate

inecuaţiile sunt liniare, un interval , unde poate fi şi - iar poate fi şi + (în general,

pentru orice bază, mulţimea pe care soluţia este pozitivă are această formă şi deci şi mulţimea pe care nu există nici o bază cu soluţia pozitivă va fi o reuniune de astfel de intervale, însă deschise şi,

71

Page 72: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

cum există un număr finit de baze, mulţimea numerelor reale va fi împărţită într-un număr finit de intervale, ca mai sus, pentru fiecare corespunzând o bază optimă sau nici una. Se poate demonstra că intervalele pe care nu există soluţie sunt neapărat de forma (-,a) sau (a,+)). Deoarece B-1 este inversabilă, cel puţin unul dintre şi este finit. Fie acesta.

Pentru > , cel puţin una din componentele soluţiei de bază corespunzătoare bazei B0 va fi strict negativă. Este clar că, pentru > , trebuie căutată altă bază optimă, dacă aceasta există.

Pasul 4. Reluăm algoritmul, pentru o valoare a lui aflată în imediata vecinătate a lui şi > , astfel încât să ne situăm în intervalul imediat următor intervalului . Pentru găsirea

bazei corespunzătoare acestuia (sau pentru aflarea faptului că nu există nici o soluţie pentru > ) se aplică în continuare algoritmul simplex dual (deoarece toţi j 0).

Se obţine o succesiune de valori < < <…< = + şi o succesiune de baze şi soluţii optime asociate fiecărui interval.

Pasul 5. Reluăm algoritmul pentru o valoare a lui aflată în imediata vecinătate a lui şi < , astfel încât să ne situăm în intervalul imediat anterior lui . Pentru găsirea bazei

corespunzătoare acestuia (sau pentru aflarea faptului că nu există nici o soluţie pentru < ) se aplică în continuare algoritmul simplex dual (deoarece toţi j 0).

Se obţine o succesiune de valori > > >…> = - şi o succesiune de baze şi soluţii optime asociate fiecărui interval.

În acest moment, cunoaştem, pentru fiecare valoare posibilă a parametrului , soluţia optimă a problemei sau invers, pentru fiecare bază, care este mulţimea parametrilor pentru care aceasta este optimă şi algoritmul este terminat.

Exemplu O întreprindere are gama sortimentală formată din 6 produse {Pj / j = 1,6} pentru fabricarea cărora foloseşte 3 materii prime {Mi / i = 1,3}. Se cunosc:

a) disponibilurile din fiecare materie primă {bi() / i = 1,3}, care sunt dependente liniar de un parametru .

b) profiturile/1000 unităţi vândute din fiecare produs {cj / j = 1,6}.c) coeficienţii tehnologici {ai,j / i = 1,3; j = 1,6} (ai,j = cantitatea din materia primă i

necesară fabricării a 1000 produse de tipul j)

toate date în tabelul de mai jos:

produsemat. prime

P1 P2 P3 P4 P5 P6 Disponibil

M1 3 5 7 2 1 2 20 + 3M2 5 6 9 3 4 5 40 + 2M3 7 8 10 3 2 8 60 +

profit/1000 prod. 2 3 4 1 1 2

Se doreşte găsirea acelor cantităţi {xj / j = 1,6} ce trebuie fabricate din fiecare produs, astfel încât să se obţină profitul total maxim.

Rezolvare Avem de rezolvat o problemă de parametrizare a termenului liber, deci vom aplica algoritmul de mai sus.

Se scrie problema de programare asociată şi se aduce la forma standard:F.S.

max (2x1 + 3x2 + 4x3 + x4 + x5 + 2x6) max (2x1 + 3x2 + 4x3 + x4 + x5 + 2x6)

72

Page 73: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

x1, x2, x3, x4, x5, x6 0 x1, x2, x3, x4, x5, x6 0

Pasul 1. Rezolvăm problema pentru = 0 şi obţinem baza optimă:

B = (a5,a6,a2) =

soluţia optimă xB = , inversa bazei B-1 = şi ultimul tabel simplex:

2 3 4 1 1 2 0 0 0cB xB xB x1 x2 x3 x4 x5 x6 s1 s2 s3

1 x5 0 1 0

2 x6 0 0 1

3 x2 1 0 0

0 0 0

Pasul 2. Se calculează soluţia de bază corespunzătoare bazei optime pentru oarecare:

xB() = B-1b() = = Pasul 3. Se rezolvă sistemul de inecuaţii xB 0:

xB 0 = şi =

Pasul 4. Se observă că pentru aflat în imediata vecinătate a lui şi > vom avea o singură variabilă negativă şi anume x6. Pentru un astfel de , soluţia corespunzătoare bazei B este dual admisibilă şi, aplicând algoritmul simplex dual, aceasta va fi scoasă din bază şi înlocuită cu x3. Se obţin:

73

Page 74: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

noua bază B = (a5, a3, a2) = şi B-1 =

noua soluţie:

xB() = B-1b() = =

noul tabel simplex corespunzător noii baze:

2 3 4 1 1 2 0 0 0cB xB xB x1 x2 x3 x4 x5 x6 s1 s2 s3

1 x5 0 0 1

4 x3 0 1 0

3 x2 1 0 0

0 0 0

noul interval pe care este optimă noua bază:

= şi =

Reluând algoritmul vom obţine succesiv intervalele şi soluţiile următoare:

1. B = (a7, a3, a2) xB =

2. B = (a7, a3, a5) xB =

Pasul 5. Începând înapoi de la = obţinem:

74

Page 75: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

1. B = (a5, a6, a9) xB =

2. B = (a5, a8, a9) xB =

3. - sistemul nu are soluţii admisibile.

La marginile intervalelor problema va avea cel puţin două soluţii de bază şi, deci, o infinitate de soluţii optime (toate combinaţiile convexe dintre acestea).

În concluzie, dacă:

disponibilul din M1 ar fi negativ, caz fără sens economic.

întreprinderea va fabrica doar produse de tipul P5

întreprinderea va fabrica doar produse de tipul P5 şi P6

întreprinderea va fabrica doar produse de tipul P5, P6 şi P2

întreprinderea va fabrica doar produse de tipul P5, P3 şi P2

întreprinderea va fabrica doar produse de tipul P3 şi P2

întreprinderea va fabrica doar produse de tipul P3 şi P5

75

Page 76: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Cazul 2 Parametrizarea coeficienţilor funcţiei obiectiv

Aşadar, coeficienţii funcţiei obiectiv au forma:

c() = c0 + c1 cj() =

unde R este parametrul considerat iar c0, c1 Rn sunt doi vectori cu componentele constante reale. Pentru rezolvarea problemei pentru orice , vom parcurge următorii paşi:

Pasul1. Se rezolvă problema pentru un 0 iniţial; presupunem că există cel puţin un pentru care problema are soluţie (altfel am avea un caz neinteresant) şi în plus putem presupune că el este egal chiar cu 0, acest lucru putând fi aranjat eventual prin schimbarea de variabilă:

= 0 +

şi scrierea lui b sub forma:

c() = (c0 + c10) + c1.

Vom găsi o soluţie x0 şi baza corespunzătoare B0.

Pasul2. Se calculează j() corespunzători bazei găsite la pasul 1, pentru variabil:

j() = – c()

Deoarece componentele soluţiei de bază corespunzătoare xB = nu depind de , ele sunt pozitive pentru orice , nu doar pentru 0 şi soluţia xB va fi optimă atâta timp cât toţi j() 0. Acei pentru care j() 0 reprezintă mulţimea valorilor parametrului pentru care baza B0 dă soluţia optimă.

Pasul3. Se rezolvă sistemul de inecuaţii j() 0, a cărui soluţie va fi, ţinând cont că toate

inecuaţiile sunt liniare, un interval , unde poate fi şi - iar poate fi şi + (în

general, pentru orice bază, mulţimea pe care j() 0 are această formă şi, deci, şi mulţimea pe care nu există soluţie optimă va fi o reuniune de astfel de intervale, însă deschise şi, cum există un număr finit de baze, mulţimea numerelor reale va fi împărţită într-un număr finit de intervale, pentru fiecare corespunzând o bază optimă sau nici una. Se poate demonstra că intervalele pe care nu există soluţie optimă sunt neapărat de forma (-,a) sau (a,+)). Deoarece B-1 este inversabilă, cel puţin unul dintre şi este finit. Fie acesta.

Pentru > cel puţin unul dintre j() corespunzători bazei B0 va fi strict negativ. Este clar că pentru > trebuie căutată altă bază optimă, dacă aceasta există.

Pasul4. Reluăm algoritmul pentru o valoare a lui aflată în imediata vecinătate a lui şi > ,

astfel încât să ne situăm în intervalul imediat următor intervalului . Pentru găsirea

bazei corespunzătoare acestuia (sau pentru aflarea faptului că nu există nici o soluţie optimă pentru > ) se aplică în continuare algoritmul simplex primal (deoarece xB 0).

Se obţine o succesiune de valori < < <…< = + şi o succesiune de baze şi soluţii optime asociate fiecărui interval.

76

Page 77: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Pasul5. Reluăm algoritmul pentru o valoare a lui aflată în imediata vecinătate a lui şi < ,

astfel încât să ne situăm în intervalul imediat anterior lui . Pentru găsirea bazei

corespunzătoare acestuia (sau pentru aflarea faptului că nu există nici o soluţie optimă pentru < ) se aplică în continuare algoritmul simplex primal (deoarece xB 0).

Se obţine o succesiune de valori > > >…> = - şi o succesiune de baze şi soluţii optime asociate fiecărui interval.

În acest moment, cunoaştem, pentru fiecare valoare posibilă a parametrului , soluţia optimă a problemei sau invers, pentru fiecare bază, care este mulţimea parametrilor pentru care aceasta este optimă şi algoritmul este terminat.

Exemplu Analizăm cazul aceleiaşi întreprinderi în cazul în care disponibilul din fiecare materie primă rămâne constant dar profiturile variază în funcţie de un parametru , acestea fiind date în tabelul de mai jos:

produsemat. prime

P1 P2 P3 P4 P5 P6 Disponibil

M1 3 5 7 2 1 2 20M2 5 6 9 3 4 5 40M3 7 8 10 3 2 8 60

profit/1000 prod. 2 + 4 3 + 3 4 + 2 1 + 4 1 + 2 2 + 3

Rezolvare. Avem de rezolvat o problemă de parametrizare a coeficienţilor funcţiei obiectiv, deci vom aplica algoritmul de mai sus.

Se scrie problema de programare asociată şi se aduce la forma standard:

F.S.max [(2+4)x1 + (3+3)x2 + (4+2)x3 +

(1+4)x4 + (1+2)x5 + (2+3)x6]

x1, x2, x3, x4, x5, x6 0

max [(2+4)x1 + (3+3)x2 + (4+2)x3 + (1+4)x4

+ (1+2)x5 + (2+3)x6]

x1, x2, x3, x4, x5, x6 0

Pasul 1. Rezolvăm problema pentru = 0 şi obţinem baza optimă:

B = (a5,a6,a2) =

soluţia optimă xB = , inversa bazei B-1 = şi ultimul tabel simplex:

2 + 4 3 + 3 4 + 2 1 + 4 1 + 2 2 + 3 0 0 0cB xB xB x1 x2 x3 x4 x5 x6 s1 s2 s3

1 + 2 x5 0 1 0

77

Page 78: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

2 + 3 x6 0 0 1

3 + 3 x2 1 0 0

0 0 0

Pasul 2. Se calculează j corespunzători bazei optime, pentru oarecare:

() = – c() =

=

Pasul 3. Se rezolvă sistemul de inecuaţii xB 0:

() 0 = şi =

Pasul 4. Se observă că pentru aflat în imediata vecinătate a lui şi > vom avea un singur j negativ şi anume 4. Pentru un astfel de , soluţia corespunzătoare bazei B este primal admisibilă şi, aplicând algoritmul simplex primal, x4 va fi introdusă în bază şi înlocuită cu x5. Se obţin:

noua bază B = (a4, a6, a2) = şi B-1 =

noua soluţie:

xB = B-1b = =

noul tabel simplex corespunzător noii baze:

2 + 4 3 + 3 4 + 2 1 + 4 1 + 2 2 + 3 0 0 0cB xB xB x1 x2 x3 x4 x5 x6 s1 s2 s3

78

Page 79: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

1 + 4 x4 0 1 0

2 + 3 x6 0 0 1

3 + 3 x2 1 0 0

0 0 0

noul interval pe care este optimă noua bază:

= şi =

Reluând algoritmul vom obţine succesiv intervalele şi soluţiile următoare:

1. B = (a4, a6, a9) xB =

2. B = (a4, a5, a9) xB =

Pasul 5. Începând înapoi de la = obţinem:

3. B = (a3, a6, a2) xB =

4. B = (a3, a6, a9) xB =

5. B = (a3, a8, a9) xB =

79

Page 80: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

6. B = (a7, a8, a9) xB =

La marginile intervalelor, problema va avea cel puţin două soluţii de bază şi, deci, o infinitate de soluţii optime (toate combinaţiile convexe dintre acestea).

În concluzie, dacă:

disponibilul din M1 ar fi negativ, caz fără sens economic.

întreprinderea va fabrica doar produse de tipul P5.

întreprinderea va fabrica doar produse de tipul P5 şi P6.

întreprinderea va fabrica doar produse de tipul P5, P6 şi P2.

întreprinderea va fabrica doar produse de tipul P5, P3 şi P2.

întreprinderea va fabrica doar produse de tipul P3 şi P2.

întreprinderea va fabrica doar produse de tipul P3 şi P5.

80

Page 81: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

PROBLEMA CLASICĂ DE TRANSPORT

Problema clasică de transport face parte din clasa mult mai largă a problemelor modelate prin reţele de transport. O reţea de transport modelează o situaţie economică în

care, dintr-un anumit număr de puncte, numite surse, trebuie transportată o cantitate dintr-o anumită substanţă, într-un alt număr de puncte, numite destinaţii. Situaţia extrem de

generală de mai sus poate fi apoi concretizată într-un număr deosebit de mare de moduri, specificând dacă există sau nu puncte intermediare între surse şi destinaţii, modul în care se face transportul (care sunt rutele posibile, costul transportului, limite minime şi/sau maxime

pentru cantitatea transportată pe fiecare rută, timpul necesar transportului), scopurile urmărite etc. Din această cauză există o multitudine de probleme care implică reţele de

transport, dintre acestea putând aminti:

1. Problema clasică de transport2. Problema transferului3. Problema drumului de cost minim4. Problema fluxului maxim5. Problema fluxului maxim de cost minim6. Probleme de flux dinamic7. Problema cuplajului maxim8. Problema de afectare9. Problema de ordonanţare10. Problema comis voiajorului11. Problema arborelui de cost minim

În continuare o vom detalia pe prima dintre acestea. Caracteristicile unei probleme de transport clasice sunt:

1. fiecare sursă aprovizionează cel puţin o destinaţie şi fiecare destinaţie este aprovizionată de la cel puţin o sursă;

2. pot exista perechi sursă-destinaţie între care nu se poate face transfer (rute blocate);3. nu există limitări în ceea ce priveşte cantitatea transportată pe fiecare rută;4. se cunosc cantităţile disponibile în fiecare sursă şi cantităţile necesare în fiecare destinaţie;5. fiecărei rute i s-a asociat un cost care nu depinde de sensul de parcurgere.

Scopul problemei este găsirea acelor cantităţi care trebuie transportate pe fiecare rută astfel încât să se asigure necesarul fiecărei destinaţii, în limitele cantităţilor aflate la surse, cu costul minim posibil.

Datele problemei sunt:

1. m = numărul de surse (furnizori);2. n = numărul de destinatari (consumatori);3. {Ai, i = 1,...,m} = cantităţile disponibile în fiecare sursă;4. {Bj, j = 1,...,n} = cantităţile necesare la fiecare sursă;5. {cij, i = 1,...,m; j = 1,...,n} = costurile unitare pe fiecare rută (costul transportării unei

unităţi de măsură de la sursa i la destinaţia j).

Acestea au fost organizate într-un tabel ca cel de mai jos:

81

Page 82: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

DestinaţiiSurse

C1 C2 Cn

F1 c11 c12 c1n A1

F2 c21 c22 c2n A2

Fm cm1 cm2 cmn Am

B1 B2 Bmdisponibil

necesar

Dacă notăm cu xij cantitatea care va fi transportată de la sursa i la destinaţia j atunci avem de rezolvat problema:

care este un caz particular de problemă de programare liniară.Într-o primă analiză, se observă imediat că problema nu are soluţii admisibile dacă

disponibilul total este mai mic decât cererea totală. Matematic, afirmaţia de mai sus este justificată prin relaţiile obţinute prin adunarea primelor m restricţii şi apoi a ultimelor n:

disponibil total = = cerere totală

De asemenea, condiţia ca este şi suficientă, deoarece, în acest caz, se verifică

uşor că soluţia este soluţie admisibilă.

În altă ordine de idei, chiar dacă disponibilul total este mai mare decât cererea totală, este clar că se va transporta doar necesarul, deoarece transportarea unei cantităţi mai mari decât necesarul va duce la un cost suplimentar, în contrast cu scopul urmărit. Matematic, unei soluţii în care una din ultimele n restricţii ar fi verificată strict, îi corespunde o soluţie în care am scăzut cantitatea suplimentară din valorile variabilelor implicate în restricţie, care este de asemenea admisibilă (aceste variabile nu apar în alte restricţii dintre ultimele n, iar primele m vor fi cu atât mai mult verificate dacă xij scad) şi care este evident mai bună, dând un cost mai mic.

În concluzie, dacă există soluţie optimă, se va transportă exact cantitatea cerută.Totuşi, în practică se poate întâlni oricare din cele trei cazuri:

(1)

(2)

(3)

82

Page 83: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În primul caz, problema are soluţie optimă, iar cantitatea în exces faţă de cerere va rămâne la furnizori, fiind reprezentată de variabilele de abatere din primele m restricţii. Aceste cantităţi pot fi privite ca nişte cereri ale unui consumator fictiv şi ţinând cont că, de fapt, aceste cantităţi nu sunt transportate nicăieri, costurile unitare pe rutele care ar lega furnizorii de acest consumator sunt 0.

Adăugând acest consumator la tabel, cu cererea egală cu , vom obţine o problemă de

tipul (3).Analog, în al treilea caz, chiar dacă disponibilul este mai mic decât necesarul, nu înseamnă

că nu se va mai transporta nimic, ci doar că unora dintre consumatori nu li se va satisface toată cererea. Această cerere nesatisfăcută poate fi privită ca disponibilul unui furnizor fictiv şi ţinând cont că, de fapt, această cantitate nu există, costurile unitare pe rutele care ar lega consumatorii de

acest furnizor sunt 0. Adăugând acest furnizor la tabel, cu disponibilul egal cu , vom

obţine o problemă de tipul (3).În concluzie, orice problemă poate fi transformată într-o problemă de tipul (3). Deşi acest

caz este foarte rar în practică, el este cel mai simplu din punct de vedere matematic şi va fi ales pentru formalizarea problemei. O astfel de problemă se numeşte problemă de transport echilibrată.

De asemenea, este uşor de văzut că, pentru o problemă de transport echilibrată, toate soluţiile admisibile verifică toate restricţiile cu egal. Astfel, dacă măcar una din primele m restricţii ar fi verificată cu "<" atunci am avea prin însumare:

, în contradicţie cu

iar dacă măcar una din ultimele n restricţii ar fi verificată cu ">" atunci am avea prin însumare:

, în contradicţie cu

În concluzie, orice problemă de transport este echivalentă cu o problemă de forma:

unde

care este forma standard a problemei de transport.Rezolvarea problemei de transport

Este evident că problema de transport la forma standard este o problemă de programare liniară la forma standard, dar, la fel de evident este şi faptul că este o problemă de programare care devine foarte repede uriaşă (un exemplu practic obişnuit cu, de exemplu, 50 de furnizori şi 50 consumatori, va duce la un tabel simplex de 100 2500, şi sunt cazuri şi cu mii de furnizori şi consumatori), motiv pentru care algoritmul simplex sub forma clasică nu este aplicabil. Cum s-a văzut însă, există şi metode prin care se poate reduce mult volumul de calcule (vezi algoritmul simplex revizuit). În plus, datele problemei de transport au o structură cu totul deosebită, în matricea A a sistemului, toate componentele fiind 1 sau 0, din care 0 sunt mult mai mulţi. Din acest

83

Page 84: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

motiv este natural să căutăm un algoritm special pentru problema de transport care să se folosească la maximum caracteristicile acesteia.

Pentru ilustrarea celor de mai vom scrie matricea A desfăşurat:

Această matrice are m + n linii, mn coloane şi deci (m + n)mn componente din care doar 2mn sunt 1, restul fiind 0. O problema cu 50 furnizori şi 50 consumatori va avea doar un procent de:

= 2% componente egale cu 1

Observând că suma primelor m linii minus suma ultimelor n este 0, rezultă că liniile matricii

sunt liniar dependente, deci rangul lui A este mai mic decât m + n. Se poate găsi însă un minor de dimensiune m + n – 1 cu determinantul diferit de 0 (cititorul îl poate găsi singur), deci o bază a unei probleme de transport are dimensiunea m+n–1 şi o soluţie de bază are cel mult m+n–1 componente diferite de 0 (o soluţie nedegenerată are deci m+n–1 componente diferite de 0). Preferarea soluţiilor nedegenerate se face din acelaşi motiv ca şi la algoritmul simplex şi anume evitarea ciclării (la problema de transport este mult mai important acest aspect deoarece soluţiile de bază ale acesteia sunt, în general, puternic degenerate).

Înainte de a da algoritmul pentru rezolvarea problemei de transport, trebuie remarcat că într-o problemă de transport nu poate apărea decât varianta de optim finit, existând întotdeauna soluţii admisibile (aşa cum s-a demonstrat mai sus) iar minimul – nu este posibil, ţinând cont că avem de minimizat o funcţie liniară cu toţi coeficienţii pozitivi pe o mulţime de soluţii cu toate componentele pozitive.

Ca şi în algoritmul simplex, rezolvarea problemei de transport se face în două etape:

Etapa 1. Găsirea unei soluţii iniţiale de bază

Deoarece fiecare variabilă corespunde unei rute (este cantitatea transportată pe această rută) iar fiecare rută corespunde unei perechi furnizor-consumator, vom identifica fiecare variabilă x ij cu ruta (i,j). A găsi o soluţie de bază nedegenerată este echivalent cu a găsi cel mult m+n–1 rute, din cele m·n posibile, pe care să transportăm toată cantitatea disponibilă. Rutele vor fi organizate într-un tabel asemănător celui în care sunt organizate datele problemei, fiecărei rute corespunzându-i o căsuţă (i,j):

DestinaţiiSurse

C1 C2 Cj Cn

F1 A1

84

m linii

n linii

n coloane

n coloane n coloane

m ori

ruta (i,j)

Page 85: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

F2 A2

Fi Ai

Fm Am

B1 B2 Bj Bm disponibilnecesar

Spre deosebire de algoritmul simplex, găsirea unei soluţii iniţiale de bază nu este dificilă. De fapt, este atât de uşor de găsit o astfel de soluţie, încât există o multitudine de metode în acest scop, care încearcă nu numai găsirea acesteia, ci chiar găsirea uneia cât mai bună. Vom expune dintre acestea:

1. Metoda nord – vest;2. Metoda minimului pe linii;3. Metoda minimului pe coloane;4. Metoda costului minim;5. Metoda diferenţelor maxime;

Cu toate că sunt foarte multe, toate metodele urmează o schemă comună:

Pasul 1. Se alege o rută iniţială după o anumită regulă. Această regulă diferă în funcţie de metoda folosită, fiind:

Metoda nord – vest; – ruta din colţul stânga sus al tabeluluiMetoda minimului pe linii – ruta de cost minim de pe prima linie (dacă

minimul este multiplu se ia prima din stânga)Metoda minimului pe coloane – ruta de cost minim de pe prima coloană (dacă

minimul este multiplu se ia cea mai de sus)Metoda costului minim – ruta de cost minim din întregul tabel (dacă

minimul este multiplu se ia una la întâmplare)Metoda diferenţelor maxime – 1. Pentru fiecare linie şi fiecare coloană se

calculează diferenţa dintre cele mai mici două costuri ale rutelor acesteia (diferenţa poate fi şi 0 dacă minimul este multiplu) şi se găseşte maximul dintre aceste diferenţe;

2. Dintre toate rutele de pe liniile şi coloanele corespunzătoare acestui maxim se alege ruta de cost minim (dacă minimul este multiplu se ia una la întâmplare)

Pasul 2. Se transportă pe această rută maximul posibil. Acest maxim este egal cu minimul dintre cantitatea care mai e disponibilă la furnizorul corespunzător acestei rute şi cantitatea care mai e necesară la consumatorul corespunzător rutei, în momentul alegerii acestei rute. Se transportă în acest fel pentru ca să se folosească cât mai puţine rute şi deci să se obţină o soluţie de bază.

Pasul 3. După folosirea unei rute este clar că fie se epuizează disponibilul furnizorului corespun-zător, fie se asigură întregul necesar al consumatorului corespunzător, fie ambele. Dacă se epuizează disponibilul furnizorului este clar că nici o rută care pleacă de la acesta nu va mai fi folosită şi analog, dacă se asigură întregul necesar al consumatorului, nici o rută spre acesta nu va mai fi folosită. Rutele care nu vor mai fi folosite se numesc rute blocate,

85

Page 86: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

sunt cele nefolosite încă de pe linia sau /şi coloana ultimei rute folosite şi se evidenţiază în tabel prin haşurarea acestora.

Pasul 4. Se alege următoarea rută, folosind regula:

Metoda nord – vest; – cea mai apropiată ruta de ultima aleasă dintre cele neblocate încă;

Metoda minimului pe linii – ruta de cost minim de pe prima linie pe care mai sunt încă rute neblocate (dacă minimul pe aceasta este multiplu se ia prima din stânga);

Metoda minimului pe coloane – ruta de cost minim de pe prima coloană pe care mai sunt încă rute neblocate (dacă minimul pe aceasta este multiplu se ia cea mai de sus);

Metoda costului minim – ruta de cost minim din întregul tabel dintre cele neblocate încă (dacă minimul este multiplu se ia una la întâmplare);

Metoda diferenţelor maxime – se repetă procedeul de la pasul 1 pentru rutele neblocate încă.

Pasul 5. Se reia algoritmul de la pasul 2 până când nu mai rămâne nici o rută nefolosită sau neblocată.

Se observă că, dacă prima metodă este pur geometrică, neţinând cont de costurile rutelor, toate celelalte încearcă să micşoreze cât mai mult costul întregului transport. Cu toate că, statistic vorbind, ultima metodă este cea mai bună, ea dând de foarte multe ori chiar soluţia optimă, totuşi şi existenţa celorlalte metode este justificată de faptul că sunt mai simplu de aplicat şi există cazuri în care fiecare dă soluţia cea mai bună.

Etapa 2. Găsirea soluţiei optime

Algoritmul care urmează reprezintă algoritmul simplex pentru o problemă de minim, aplicat în cazul particular al problemei de transport.

Pasul 1. Se asociază fiecărui furnizor Fi o variabilă ui şi fiecărui consumator Cj o variabilă vj;Pasul 2. Fiecărei rute (i,j) folosită în soluţia actuală i se asociază ecuaţia u i + vj = cij, rezultând un

sistem cu m + n necunoscute (m de ui şi n de vj) şi m + n – 1 ecuaţii (egal cu rangul matricii A);

Pasul 3. Se găseşte o soluţie particulară a acestui sistem, egalând una din necunoscute cu 0 (pe cea care apare de cele mai multe ori);

Pasul 4. Se calculează toţi ij = ui + vj – cij pentru toate rutele care nu fac parte din soluţie (ceilalţi sunt 0, ţinând cont de felul cum au fost găsiţi ui, i = 1,...,m şi vj, j = 1,...,n)

Pasul 5. Se analizează ij găsiţi.

dacă toţi sunt mai mici sau egali cu 0 soluţia găsită este optimă STOP dacă există ij strict pozitivi atunci soluţia actuală nu este optimă şi ruta

corespunzătoare lui ij maxim va fi cea care intră în bază (dacă maximul este multiplu se ia una la întâmplare)

Pasul 6. Se construieşte un circuit, pornind din această rută, trecând doar prin rutele soluţiei, mergând doar pe verticală sau orizontală şi fiecare trecere de la o rută la alta făcându-se doar perpendicular pe trecerea anterioară. S-a demonstrat că există un singur circuit cu

86

Page 87: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

aceste proprietăţi şi se poate demonstra uşor că trece printr-un număr par de rute.Pasul 7. Începând cu + din ruta care va intra în bază se notează alternativ cu "+" şi "–" rutele

circuitului;Pasul 8. Se notează cu minimul dintre cantităţile transportate pe rutele notate cu "–" şi ruta pentru

care s-a obţinut acest minim este cea care va ieşi din bază (cazul minimului multiplu va fi analizat după expunerea algoritmului);

Pasul 9. Se scade din cantităţile transportate pe rutele notate cu "–" şi se adaugă la cele notate cu "+", rutele care nu sunt pe circuit păstrându-şi valoarea;

Pasul 10. Se reia algoritmul de la pasul 2

Aşa cum s-a văzut mai sus, se poate ca la pasul 8 minimul să fie multiplu. Atunci, pe toate rutele pe care se transporta nu se va mai transporta nimic, adică vor dispărea din soluţie. Cum în soluţie a intrat doar o singură rută rezultă că noua soluţie este degenerată. Cum existenţa acestui tip de soluţii poate duce la ciclarea algoritmului, au fost imaginate mai multe metode de evitare, toate bazându-se pe modificarea datelor iniţiale, în aşa fel încât, pe parcursul algoritmului, să nu mai avem nici o soluţie degenerată. Această modificare (perturbare) poate fi făcută chiar de la începutul rezolvării, încât problema să nu mai aibă nici o soluţie degenerată, fie doar atunci când apare o soluţie degenerată, eliminând perturbaţia imediat ce nu mai e necesară. Pentru a vedea cum trebuie să arate o astfel de modificare, dăm următoarea teoremă care caracterizează existenţa soluţiilor degenerate:

Teoremă. O problemă de transport are soluţii degenerate dacă şi numai dacă există o submulţime strictă şi nevidă a furnizorilor şi o submulţime strictă şi nevidă a consumatorilor astfel încât suma disponibilurilor furnizorilor din prima submulţime este egală cu suma cererilor consumatorilor din a doua.

Lemă. Soluţia este degenerată de k ori dacă şi numai dacă mulţimea furnizorilor şi a consumatorilor se pot partiţiona în k submulţimi 1, 2, ..., k şi 1, 2 ,..., k astfel încât consumatorii din fiecare clasă i se aprovizionează numai de la furnizorii din clasa i.

În concluzie, dacă vrem să dispară toate soluţiile degenerate, trebuie modificate disponibilurile şi cererile în aşa fel încât să nu mai poată exista varianta din teoremă. Una din metodele posibile este să adăugăm la fiecare furnizor Fi cantitatea i şi să introducem un consumator fictiv cu cererea egală cu + 2 + ... + m, unde este o valoare foarte mică (oricât de mică este necesar). O altă variantă este să adăugăm la fiecare furnizor F i cantitatea i şi să introducem un consumator fictiv cu cererea egală cu + 2 + ... + m, unde este de asemenea o valoare foarte mică (oricât de mică este necesar). Se pot găsi, evident, şi altele variante.

Această metodă este foarte bună în cazul rulării problemei pe calculator, dar, în cazul rezolvării cu creionul pe hârtie, este, evident, greoaie.

În acest caz vom folosi varianta în care introducem perturbaţia doar când este nevoie (adică când apare o soluţie degenerată). Această situaţie poate apărea fie chiar la soluţia iniţială, în urma aplicării uneia din metodele de găsire ale unei soluţii iniţiale, fie la pasul 8 din a doua etapă dacă se obţine pentru mai multe rute. Rămâne de văzut doar cum trebuie făcută această perturbare.

Conform teoremei de mai sus rezultă că mulţimea furnizorilor şi a consumatorilor se pot partiţiona în k submulţimi 1, 2, ..., k şi 1, 2 ,..., k astfel încât consumatorii unei clase i se aprovizionează numai de la furnizorii din clasa i şi reciproc. Pentru fiecare indice i k–1 vom alege o rută care corespunde unui furnizor din i şi unui consumator din i+1 şi vom adăuga la furnizorul şi consumatorul corespunzători acesteia cantitatea i (sau valoarea i într-o ordine dată a valorilor). Dacă, la un moment dat, prin anularea unui parametru introdus, soluţia rămâne nedegenerată, acesta va fi anulat.

87

Page 88: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Exemplu: Presupunem că în rezolvarea problemei:

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12

F1 2 4 5 3 7 8 9 3 5 7 3 8 1000F1 3 5 6 7 5 4 3 5 5 6 3 6 700F1 2 4 5 3 6 7 4 5 7 4 6 7 400F1 3 4 2 6 8 4 6 7 4 7 8 3 900F1 3 5 6 4 7 8 3 5 6 9 3 6 400F1 2 4 6 3 7 8 9 4 6 2 4 2 400F1 3 5 2 6 7 8 9 5 3 6 7 3 700F1 9 4 5 3 6 2 7 8 9 4 7 5 400F1 8 3 4 2 6 3 7 8 3 7 4 8 800

800 300 600 400 500 200 700 300 200 600 600 500

s-a ajuns la soluţia de bază:

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12

F1 200 500 200 900F2 200 500 700F3 300 500 800F4 200 800 1000F5 400 400F6 100 300 400F7 300 100 400F8 100 300 400F9 400 300 700

400 300 200 200 500 600 700 500 600 600 800 300

care este dublu degenerată. Aceasta înseamnă că mulţimea furnizorilor şi consumatorilor pot fi partiţionate fiecare în trei grupe. Pentru a le găsi vom porni de la un furnizor, vom găsi consumatorii care se aprovizionează de la acesta, apoi furnizorii care aprovizionează aceşti consumatori şi tot aşa până vom găsi prima grupă din fiecare (furnizori şi consumatori). Pentru cei rămaşi din fiecare vom continua procedeul până vom găsi toate grupele.

În cazul nostru pentru F1 găsim consumatorii C4, C5 şi C7, pentru aceştia furnizorii F5 şi F8, pentru aceştia noul consumator C12 şi am găsit prima grupă:

consumatorii {C4, C5, C7, C12} se aprovizionează de la furnizorii {F1, F5, F8}

Apoi, pentru F2 găsim consumatorii C3 şi C10, pentru aceştia furnizorul F7, pentru acesta noul consumator C6, pentru acesta noul furnizor F3, pentru acesta noul consumator C8 şi am găsit a doua grupă:

consumatorii {C3, C6, C8, C10} se aprovizionează de la furnizorii {F2, F3, F7}

A treia grupă va fi, evident: {C1, C2, C9, C11} se aprovizionează de la furnizorii {F4, F6, F9}Conform regulii de perturbare, vom alege o rută corespunzătoare unui furnizor din prima

grupă şi unui consumator din a doua, de exemplu (5,6) şi o rută corespunzătoare unui furnizor din a doua grupă şi unui consumator din a treia, de exemplu (3,9) şi vom adăuga la furnizorul F5 şi consumatorul C6 cantitatea suplimentară iar la furnizorul F3 şi consumatorul C9 cantitatea suplimentară , cu < de exemplu, obţinând problema perturbată:

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12

F1 200 500 200 900F2 200 500 700F3 300 500 800+F4 200 800 1000F5 400 400+F6 100 300 400F7 300 100 400F8 100 300 400F9 400 300 700

400 300 200 200 500 600 +

700 500 600+

600 800 300

88

Page 89: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

care nu mai este degenerată.Rămâne ca exerciţiu verificarea faptului dacă această soluţie este optimă şi dacă nu, să se

găsească soluţia de bază succesoare.

Variante ale problemei de transport

Există o gamă foarte largă de fenomene economice care pot fi reprezentate prin modele de programare liniară de tip transport sau foarte asemănătoare cu acestea. Prezentăm în continuare câteva dintre acestea

1. Cu rute blocate

În anumite cazuri pot exista situaţii în care anumite rute între furnizori şi consumatori nu pot fi folosite, cel puţin temporar. Rezolvarea acestor probleme se face cu un model de transport obişnuit, în care rutelor interzise li se asociază costuri unitare de transport foarte mari în raport cu costurile rutelor utilizabile. Prin aceste costuri de penalizare foarte mari, algoritmul de optimizare este "constrâns" să ocolească rutele interzise.

2. Cu puncte intermediare

Există situaţii în care aprovizionarea consumatorilor nu se face direct de la furnizori ci prin intermediul unor centre intermediare. De exemplu, cea mai mare parte a bunurilor produse pentru consumul populaţiei sunt mai întâi colectate în mari depozite şi apoi distribuite centrelor de desfacere. Problema de optimizare costă în minimizarea cheltuielilor de transport de la furnizori la centrele intermediare la care se adaugă costul transportului de la aceste centre la consumatorii finali.

În anumite condiţii această problemă este echivalentă cu două probleme de transport obişnuite.

3. Problema afectării

Există probleme de programare operativă care pot fi reprezentate prin modele liniare de tipul problemei de transport. Un exemplu des întâlnit este următoarea problemă concretă de programare operativă a producţiei:

"Un număr de lucrări Ll, L2,..., Ln trebuiesc executate cât mai repede. Acestea sunt efectuate de persoanele (muncitorii) Ml, M2,..., Mn, fiecare putând executa oricare din lucrările date. Cunoscând timpul tij de execuţie al lucrării Li de către muncitorul Mj, scopul optimizării este găsirea acelui mod de repartizare a lucrărilor pe muncitori astfel încât timpul total de execuţie al lucrărilor să fie minim"

Pentru modelarea matematică a acestei probleme, cunoscută în literatura de specialitate sub numele de "problema afectării", se introduc variabilele bivalente:

xij =

Condiţiile ca fiecare lucrare să fie repartizată unui muncitor precum şi condiţia ca fiecare muncitor să primească o lucrare se traduc prin restricţiile:

89

Page 90: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

în care variabilele xij satisfac cerinţa specială:

xij {0,1}

Obiectivul urmărit – minimizarea timpului total de execuţie – conduce la următoarea funcţie obiectiv:

(min) f =

Modelul rezultat diferă de modelul problemei de transport echilibrate prin condiţia impusă variabilelor de a fi doar 0 sau 1 (variabile bivalente). Totuşi rezolvarea sa se poate face cu algoritmul de la problema de transport, însă ea este greoaie, datorită faptului că soluţiile de bază ale acestei probleme sunt puternic degenerate. Există metode mai eficiente de abordare a problemei afectării, bazate pe teoria grafurilor.

4. Problema încărcării utilajelor

Făcând parte din acelaşi cadru al programării operative a producţiei, problema încărcării utilajelor (punctelor de lucru) ocupă a poziţie centrală. Această problemă poate fi formulată astfel:

"Într-o secţie a unei unităţi economice se produc reperele (bunurile) P1, P2, ..., Pn care pot fi realizate pe oricare din utilajele (grupele de utilaje) Ul,U2,...,Um. Se cunosc următoarele

date:

cantităţile N1, N2,...,Nn din reperele date, care trebuie produse într-o anumită perioadă; fondurile de timp disponibil F1, F2,...,Fm ale utilajelor, în perioada respectivă; cantitatea Pij din reperul Pj ce poate fi produsă pe utilajul Ui într-o anumită perioadă de

timp; costul cij al realizării unei unităţi specifice din reperul Pj pe utilajul Ui.

Se doreşte găsirea acelui mod de repartizare a sarcinilor de producţie pe utilaje astfel încât costul realizării cantităţilor planificate să fie minim."

Modelul matematic asociat acestei probleme este:

90

Page 91: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

unde xij reprezintă cantitatea de repere Pj ce urmează a fi realizată pe utilajul Ui. Modelul este asemănător modelului problemei de transport, pentru rezolvare putându-se folosi algoritmul de la problema clasică de transport, cu unele modificări dictate de prezenţa "ponderilor" Pij.

5. Problema de transport a lui Koopmans

Această problemă este, istoriceşte vorbind, anterioară problemei clasice de transport şi de ea s-a ocupat pentru prima oară T. C. Koopmans.

Problema se referă la la transportul materialelor de război, efectuate în perioada celui de-al doilea război mondial, din S.U.A. în Anglia şi retur. Întrucât cantităţile de produse transportate în cele două sensuri erau diferite, navele circulau de multe ori goale sau incomplet încărcate. Având în vedere şi faptul că transporturile pe mare ale aliaţilor se aflau sub ameninţarea submarinelor şi a aviaţiei germane se punea problema asigurării unei asemenea utilizări a mijloacelor de transport încât să se reducă la minimum capacitatea de transport neutilizată (măsurată în tone-kilometri) şi, implicit, să se reducă pierderile de nave.

Deşi problema de transport a lui Koopmans a avut un caracter tactico-militar, ea poate fi considerată - după cum a făcut mai târziu însuşi Koopmans - şi ca o problemă economică. Economic vorbind, reducerea capacităţii de transport neutilizate a navelor măreşte rentabilitatea transporturilor maritime. Fireşte că am putea aplica o soluţie optimă a acestei probleme pe plan mondial numai în cazul în care ar exista o formă oarecare de administrate internţională a navelor şi de dirijare a transporturilor maritime. Totuşi, se poate vedea că modelul lui Koopmans poate să-şi găsească aplicarea nu numai la transportul maritim, ci şi în transportul feroviar, în cel auto, precum şi în alte domenii similare.

Matematic, această problemă se poate formula astfel:

"Fie n porturi din care se expediază şi în care sosesc încărcături. Notăm cu wi un volum dat de mărfuri expediate (exprimate, de pildă, în tone), iar cu p i - un volum dat de mărfuri care se aduc în decursul unei anumite perioade în portul i (i = 1, 2,..., n). Se cunosc distanţele s ij dintre porturi (exprimate, de pildă, în kilometri), acestea fiind date în matricea:

S =

Dacă xij reprezintă volumul efectiv de mărfuri care urmează să fie transportate din portul i în portul j, iar yij - capacitatea de încărcare a vaselor care circulă din portul i in portul j date, de asemenea, sub forma unor matrici:

X = Y =

atunci necunoscutele problemei sunt mărimile yij (i,j = 1, 2,..., n), adică capacităţile de încărcare a navelor ce vor fi trimise din portul i în portul j.

Funcţia obiectiv f va stabili mărimea "transporturilor goale", adică mărimea tonajului neutilizat al navelor. Mărimea tonajului neutilizat pe traseul dintre portul i şi portul j va fi (y ij – xij), deci mărimea capacităţii de transport neutilizate pe toate traseele (în tone kilometri) va reprezenta:

91

Page 92: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

f =

Problema examinată constă în a găsi minimul acestei funcţiiCondiţiile auxiliare pe care trebuie să le satisfacă necunoscutele y ij pot fi notate sub forma

următoarelor ecuaţii:

Primele n ecuaţii arată că tonajul total al navelor trimise dintr-un port oarecare i în toate celelalte porturi trebuie să fie egal cu wi iar ultimele n că tonajul total al navelor sosite într-un port oarecare j din toate celelalte porturi trebuie să fie egală cu pj.

Trebuie menţionat că - întocmai ca în problema de transport - dintre cele n + n ecuaţii de

echilibru, numai (2n - 1) ecuaţii sunt independente. Aceasta se explică prin faptul că ,

adică tonajul total al navelor care pleacă din toate porturile este egal cu tonajul total al navelor care sosesc în toate porturile. Întrucât problema are (n2 – n) necunoscute yjj (i,j = l, 2,...,n), dar există 2n – 1 ecuaţii de echilibru independente, numărul gradelor de libertate (numărul variabilelor secundare) va fi (n2 – n) – (2n – 1) = n2 – 3n + 1.

În afară de relaţiile de echilibru există şi condiţiile de nenegativitate:

yij xij 0

condiţia yij xij înseamnă că tonajul vaselor care pleacă din portul i spre portul j trebuie să fie mai mare sau egal cu cantitatea de mărfuri care urmează a fi transportată pe acest traseu."

Aceasta este formularea matematică a modelului lui Koopmans. Din această formulare se vede că modelul lui Koopmans este o problemă de programare liniară, deoarece atât funcţia obiectiv, cât şi ecuaţiile de echilibru sunt relaţii liniare în raport cu necunoscutele y ij. Această problemă poate fi uşor transformată într-un model de programare neliniară dacă, de pildă, în locul distanţei sij între porturi, introducem cheltuielile de transport cu menţiunea că aceste cheltuieli nu cresc direct proporţional, ci mai lent decât distanţele. Aceasta problemă poate fi uşor înlocuită printr-o problemă duală, luând ca funcţie obiectiv rentabilitatea totală a tuturor transporturilor pe plan mondial. În acest caz, problema de minimizare a tonajului neutilizat al navelor ar fi înlocuită printr-o problemă de maximizare a rentabilităţii totale a transporturilor.

92

Page 93: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

ELEMENTE DE TEORIA GRAFURILOR

1. Noţiuni generale

În general, pentru situaţiile care necesită la rezolvare un oarecare efort mintal (şi un caz tipic este cel al celor din economie), se caută, în primul rând, o metodă de reprezentare a lor care să permită receptarea întregii probleme dintr-o privire (pe cât posibil) şi prin care să se evidenţieze cât mai clar toate aspectele acesteia.

În acest scop se folosesc imagini grafice gen diagrame, schiţe, grafice etc. O reprezentare dintre cele mai utilizate este cea prin grafuri. Acestea sunt utilizate în special pentru vizualizarea sistemelor şi situaţiilor complexe. În general, vom reprezenta componentele acestora prin puncte în plan iar relaţiile (legăturile, dependenţele, influenţele etc) dintre componente prin arce de curbă cu extremităţile în punctele corespunzătoare. Între două puncte pot exista unul sau mai multe segmente (în funcţie de câte relaţii dintre acestea, care ne interesează, există) iar segmentelor li se pot asocia sau nu orientări (după cum se influenţează cele două componente între ele), numere care să exprime intensitatea relaţiilor dintre componente etc.

Este evident, totuşi, că această metodă are limite, atât din punct de vedere uman (prea multe puncte şi segmente vor face desenul atât de complicat încât se va pierde chiar scopul pentru care a fost creat – claritatea şi simplitatea reprezentării, aceasta devenind neinteligibilă) cât şi din punct de vedere al tehnicii de calcul (un calculator nu poate "privi" un desen ca un om).

Din acest motiv, alături de expunerea naiv-intuitivă a ceea ce este un graf, dată mai sus, se impune atât o definiţie riguroasă cât şi alte modalităţi de reprezentare a acestora, adecvate în general rezolvărilor matematice.

Definiţia 1 Se numeşte multigraf un triplet G = (X, A, f) în care X şi A sunt două mulţimi iar f este o funcţie, definită pe produsul vectorial al lui X cu el însuşi (X2 = XX), care ia valori în mulţimea părţilor mulţimii A (notată P(A))

Mulţimea X se numeşte mulţimea nodurilor multigrafului şi elementele sale se numesc noduri (sau vârfuri) ale multigrafului, iar A reprezintă mulţimea relaţiilor (legăturilor) posibile între două noduri ale multigrafului.

Definiţia 2 Se numeşte graf orientat un multigraf în care mulţimea A are un singur element: A = {a}.

În acest caz mulţimea părţilor mulţimii A are doar două elemente: mulţimea vidă şi întreaga mulţime A. Dacă unei perechi orientate (x i, xj) din X2 i se asociază prin funcţia f mulţimea A atunci spunem ca există arc de la nodul xi la nodul xj iar perechea (xi,xj) se va numi arcul (xi,xj). Nodul xi se numeşte nod iniţial sau extremitate iniţială a arcului (xi,xj) iar nodul xj se numeşte nod final sau extremitate finală a arcului (xi,xj). Arcul (xi,xj) este incident spre interior vârfului xj şi incident spre exterior vârfului xi. Dacă pentru un arc nodul iniţial coincide cu nodul final atunci acesta se numeşte buclă. Nodurile xi şi xj se vor numi adiacente dacă există cel puţin unul din arcele (xi,xj) şi (xj,xi).

Dacă unei perechi orientate (xi, xj) din X2 i se asociază prin funcţia f mulţimea vidă atunci spunem că nu există arc de la nodul xi la nodul xj.

Este evident că a cunoaşte un graf orientat este echivalent cu a cunoaşte vârfurile şi arcele sale. Din acest motiv putem defini un graf orientat prin perechea (X,U), unde X este mulţimea vârfurilor sale iar U mulţimea arcelor sale.

De asemenea, putem cunoaşte un graf orientat cunoscând mulţimea nodurilor şi, pentru fiecare nod, mulţimea arcelor incidente spre exterior. Din acest motiv putem defini un graf orientat ca o pereche (X,) unde X este perechea nodurilor iar este o funcţie definită pe X cu valori în mulţimea părţilor lui X, valoarea acesteia într-un nod x i, (xi) X fiind mulţimea nodurilor adiacente nodului xi, prin arce pentru care xi este extremitatea iniţială.

93

Page 94: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Definiţia 3 Se numeşte graf neorientat un multigraf în care mulţimea A are un singur element iar funcţia f are proprietatea:

f[(xi,xj)] = f[(xj,xi)] , oricare ar fi nodurile xi şi xj din X

În aceste condiţii, dacă f[(xi,xj)] = f[(xj,xi)] = A atunci perechea neorientată {xi,xj} este o muchie iar dacă f[(xi,xj)] = f[(xj,xi)] = spunem că nu există muchie între vârfurile xi şi xj.

Deoarece, în cele mai multe din cazurile practice care vor fi analizate în acest capitol, situaţia este modelată matematic printr-un graf orientat, vom folosi, pentru simplificarea expunerii, denumirea de graf în locul celei de graf orientat iar în cazul în care graful este neorientat vom specifica acest fapt la momentul respectiv.

2. Moduri de reprezentare ale unui graf

A. O primă modalitate de reprezentare este listarea efectivă a tuturor nodurilor şi a arcelor sale.

B. Putem reprezenta graful dând pentru fiecare nod mulţimea nodurilor cu care formează arce în care el este pe prima poziţie.

C. Putem reprezenta geometric graful, printr-un desen în plan, reprezentând fiecare nod printr-un punct(cerculeţ) şi fiecare arc printr-un segment de curbă care are ca extremităţi nodurile arcului şi pe care este trecută o săgeată orientată de la nodul iniţial spre cel final.

D. Putem folosi o reprezentare geometrică în care nodurile sunt reprezentate de două ori, în două şiruri paralele, de la fiecare nod din unul din şiruri plecând săgeţi spre nodurile cu care formează arce în care el este pe prima poziţie, de pe al doilea şir (reprezentarea prin corespondenţă).

E. Un graf poate fi reprezentat printr-o matrice pătratică booleană, de dimensiune egală cu numărul de noduri, în care o poziţie aij va fi 1 dacă există arcul (xi,xj) şi 0 în caz contrar, numită matricea adiacenţelor directe.

F. Un graf poate fi reprezentat printr-o matrice pătratică latină, de dimensiune egală cu numărul de noduri, în care pe o poziţie aij va fi xixj dacă există arcul (xi,xj) şi 0 în caz contrar.

Exemplu: Dacă în reprezentarea A avem graful G = (X,U), unde X = {x1, x2, x3, x4, x5, x6} şi U = {(x1,x1), (x1,x2), (x1,x4), (x1,x5), (x2,x3), (x2,x4), (x2,x6), (x3,x1), (x3,x2), (x4,x5), (x5,x2), (x6,x4)}, atunci în celelalte reprezentări vom avea:

B x1 {x1, x2, x4, x5} Cx2 {x3, x4, x6}x3 {x1, x2}x4 {x5}x5 {x2}x6 {x4}

D (reprezentarea prin corespondenţă)x1 x2 x3 x4 x5 x6

x1 x2 x3 x4 x5 x6

E F

94

x5 x2

x6

x4

x3

x1 x2 x3 x4 x5 x6

x1 1 1 0 1 1 0x2 0 0 1 1 0 1x3 1 1 0 0 0 0x4 0 0 0 0 1 0x5 0 1 0 0 0 0x6 0 0 0 1 0 0

x1 x2 x3 x4 x5 x6

x1 x1x1

x1x2

0x1x

4

x1x5

0

x2 0 0x2x

3

x2x4

0x2x

6

x3 x3x1

x3x2

0 0 0 0

x4 0 0 0 0x4x

50

Page 95: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

3. Concepte de bază în teoria grafurilor

1. semigraf interior al unui nod xk: este mulţimea arcelor = {(xj,xk)/ (xj,xk) U} care

sunt incidente spre interior nodului xk;

2. semigraf exterior al unui nod xk: este mulţimea arcelor = {(xk,xi)/ (xk,xi) U} care

sunt incidente spre exterior nodului xk;3. semigradul interior al unui nod xk: este numărul arcelor care sunt incidente spre interior

nodului xk = cardinalul lui şi se notează cu ;

4. semigradul exterior al unui nod xk: este numărul arcelor care sunt incidente spre

exterior nodului xk = cardinalul lui şi se notează cu ;

5. gradul unui nod xk: este suma semigradelor nodului xk: = + ;

6. nod izolat: este un nod cu gradul 0;7. nod suspendat: este un nod cu gradul 1;8. arce adiacente: arce care au o extremitate comună;9. drum într-un graf: o mulţime ordonată de noduri ale grafului: (x1, x2, ..., xk), cu

proprietatea că există în graf toate arcele de forma (xi,xi+1) i = 1,...,k-1;10. lungimea unui drum: este numărul arcelor care îl formează;11. drum elementar: un drum în care fiecare nod apare o singură dată;12. drum simplu: un drum în care fiecare arc apare o singură dată;13. putere de atingere a unui nod xi X în graful G: numărul de noduri la care se poate

ajunge din xi. Puterea de atingere se notează cu p(xi), 1 i n şi evident p(xi) .

14. drum hamiltonian: un drum elementar care trece prin toate nodurile grafului;15. drum eulerian: un drum simplu care conţine toate arcele grafului;16. lanţ: un drum în care arcele nu au neapărat acelaşi sens de parcurgere;17. circuit: un drum în care nodul iniţial coincide cu cel final; 18. circuit elementar: un drum în care fiecare nod apare o singură dată, cu excepţia celui

final, care coincide cu cel iniţial;19. circuit simplu: un drum în care fiecare arc apare o singură dată;20. circuit hamiltonian: un circuit care trece prin toate nodurile grafului;21. ciclu: este un circuit în care arcele nu au neapărat acelaşi sens de parcurgere;22. ciclu elementar: un ciclu în care fiecare nod apare o singură dată, cu excepţia celui

final, care coincide cu cel iniţial;23. ciclu simplu: un ciclu în care fiecare arc apare o singură dată;

Observaţie: Într-un graf neorientat noţiunile de drum şi lanţ sunt echivalente şi de asemenea cele de circuit şi ciclu.

24. graf parţial al unui graf G = (X,U): este un graf G'(X,U') cu U' U;25. subgraf al unui graf G = (X,): este un graf G'(X',') unde X' X şi '(xi) = (xi) X'

pentru orice xi X';26. graf redus al unui graf G = (X,U): este un graf G*(X*,U*) unde X* este formată din

mulţimile unei partiţii de mulţimi nevide ale lui X, iar ( , ) există doar dacă i j şi există cel puţin un arc în U, de la un nod din la un nod din .

27. graf tare conex: este un graf în care între oricare două noduri există cel puţin un drum;

95

Page 96: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

28. graf simplu conex: este un graf în care între oricare două noduri există cel puţin un lanţ;Observaţie: Pentru grafuri neorientat noţiunile de tare conex şi simplu conex sunt echivalente, graful numindu-se doar conex;29. componentă tare conexă a unui graf G = (X,U): este un subgraf al lui G care este tare

conex şi nu este subgraful nici unui alt subgraf tare conex al lui G (altfel spus, între oricare două noduri din componentă există cel puţin un drum şi nu mai există nici un nod în afara componentei legat printr-un drum de un nod al componentei).

4. Găsirea drumurilor într-un graf orientat

Dacă privim graful ca imagine a unui sistem, nodurile reprezentând componentele sistemu-lui, atunci o interpretare imediată a unui arc (xi,xj) este că, componenta xi influenţează direct componenta xj. Dacă nodurile au semnificaţia de stări posibile ale unui sistem atunci un arc (x i,xj) semnifică faptul că sistemul poate trece direct din starea xi în starea xj. În ambele cazuri se vede că avem de-a face doar cu informaţii despre legături directe; totuşi, chiar dacă o componentă x i nu influenţează direct componenta xj ea o poate influenţa prin intermediul altor componente, existând un şir de componente intermediare: x1 x2 ,..., xk, fiecare influenţând-o direct pe următoarea şi xi

direct pe x1 iar xk direct pe xj. Astfel, dacă dintr-o stare xi nu se poate trece direct într-o stare xj s-ar putea totuşi în mai multe etape, prin alte stări intermediare. Deoarece găsirea acestor influenţe sau treceri posibile este de obicei foarte importantă iar pentru un sistem cu mii sau zeci de mii de componente acest lucru nu mai poate fi făcut "din ochi", este necesară formalizarea noţiunii de "influenţe" şi "treceri" posibile, nu neapărat directe. Acest lucru a şi fost făcut mai sus, deoarece este evident că "xi influenţează xj" sau "din starea xi se poate trece în starea xj" este echivalent cu existenţa în graf a unui drum de la nodul xi la nodul xj.

În continuare vom da un algoritm prin care putem găsi toate drumurile dintr-un graf orientat cu un număr finit de noduri.

Pasul 1. Se construieşte matricea booleană a adiacenţelor directe corespunzătoare grafului, notată cu A. În aceasta se află, evident, toate drumurile de lungime 1.

Este interesant de văzut ce legătură există între această matrice şi drumurile de lungime 2. Fie două noduri xi şi xj oarecare din graf. Existenţa unui drum de lungime 2 între ele presupune existenţa unui nod xk, din graf, cu proprietatea că există atât arcul (xi,xk) cât şi arcul (xi,xk). Pentru a vedea dacă acesta există, luăm pe rând fiecare nod al grafului şi verificăm dacă există sau nu ambele arce ((xi,xk) şi (xi,xk)). Aceasta este echivalent cu a verifica dacă, în matricea booleană a adiacenţe-lor directe, există vreun indice k astfel încât elementul k al liniei i şi elementul k al coloanei j să fie ambele egale cu 1. Dacă folosim operaţiile algebrei booleene de adunare şi înmulţire:

0 1 0 10 0 1 0 0 01 1 1 1 0 1

atunci verificările de mai sus sunt echivalente cu a verifica dacă elementul de pe poziţia (i,j) din A 2

este egal cu 1. Valoarea 1 spune doar că există cel puţin un drum de lungime 2 de la x i la xj. Dacă dorim să vedem şi câte sunt, vom folosi regulile de înmulţire şi adunare obişnuită.

De asemenea, se poate observa că existenţa unui drum de lungime 3 de la x i la xj presupune existenţa unui nod xk astfel încât să existe un drum de lungime 2 de la x i la xk şi un arc de la xk la xj, care este echivalent cu a verifica dacă există vreun indice k astfel încât elementul k al liniei i din matricea A2 şi elementul k al coloanei j din A sunt ambele egale cu 1 sau, mai simplu, dacă elementul (i,j) din A3 este 1.

Din cele de mai sus se observă că existenţa drumurilor de lungime k este dată de valorile matricei Ak, dacă s-au folosit regulile algebrei booleene şi numărul lor este dat de Ak, dacă s-au folosit regulile obişnuite.

96

Page 97: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Pasul 2. Vom calcula succesiv puterile lui A până la puterea An-1

Dacă între nodurile xi şi xj există un drum de lungime n atunci el va conţine un număr de noduri mai mare sau egal nu n+1 şi, cum în graf sunt doar n vârfuri, este clar că cel puţin unul, să zicem xk, va apărea de două ori. Vom avea în acest caz un drum de la x i până la prima apariţie a lui xk, şi un drum de la ultima apariţie a lui xk la xj. Eliminând toate nodurile dintre prima apariţie a lui xk şi ultima apariţie a sa vom obţine un drum de la x i la xj, în care xk apare o singură dată. Aplicând acest procedeu pentru toate nodurile care apar de mai multe ori pe drum, vom obţine un drum de la xi la xj, în care fiecare nod apare o singură dată (deci un drum elementar), care are evident cel mult n-1 arce. În concluzie, dacă există vreun drum de la x i la xj atunci există şi un drum elementar şi, deci, va exista o putere a lui A, între A1 şi An-1, în care poziţia (i,j) este diferită de 0. Pentru deciderea existenţei unui drum între oricare două noduri este suficientă, deci, calcularea doar a primelor n-1 puteri ale lui A. Pasul 3. Se calculează matricea D = A + A2 + ... + An-1

Dacă ne interesează doar existenţa drumurilor dintre noduri, nu şi numărul lor, vom folosi înmulţirea şi adunarea booleană şi conform observaţiei de mai sus:

dij =

În acest caz, observând că:

A(A + I)n–2 = A + A2 + A3 + ... + An–1 = A + A2 + A3 + ... + An-1 = D

rezultă că e suficient să calculăm doar puterea n-2 a matricei A + I şi apoi s-o înmulţim cu A. Avantajul acestei metode, în ceea ce priveşte economia de timp, este susţinut şi de următoarea observaţie: dacă D conţine toate perechile de arce între care există drum atunci:

D = (A + A2 + ... + An-1) + An + An+1 + ... + An+k = D oricare ar fi k 0 A(A + I)n–2+k = (A + A2 + ... + An-1) + An + An+1 + ... + An+k-1 = D = A(A + I)n–2

A(A + I)n–2+k = A(A + I)n–2 oricare ar fi k 0

deci de la puterea k = n-2 toate matricile Ak sunt egale. Putem, deci, calcula direct orice putere a lui A+I mai mare sau egală cu n-1 (de exemplu calculând (A+I)2, (A+I)4, (A+I)8, ..., , r fiind prima putere a lui 2 pentru care 2r n-2).

Procedeul de mai sus nu asigură decât aflarea faptului dacă există sau nu drum între două noduri, eventual ce lungime are şi câte sunt de această lungime. Totuşi, în problemele practice cel mai important este să ştim care sunt efectiv aceste drumuri. Deoarece toate drumurile pot fi descompuse în drumuri elementare şi în problemele practice în general acestea sunt cele care interesează, paşii următori ai algoritmului vor fi dedicaţi găsirii lor. Pentru găsirea acestora se foloseşte reprezentarea grafului prin matricea latină de la cazul F.

Pasul 4. Construim matricea latină L asociată grafului, unde:

lij =

şi matricea , definită prin:

=

numită matricea latină redusă.97

Page 98: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Găsirea unui drum de lungime 2 de la xi la xj presupune găsirea unui nod cu proprietatea că există arcele (xi,xk) şi (xk,xj) şi memorarea vectorului (xi, xk, xj). Aceasta este echivalent cu a găsi un indice k astfel încât elementul de pe poziţia k a liniei i, din matricea L, să fie x i,xk şi elementul de pe poziţia k al coloanei j, din matricea , să fie xj. Vom înmulţi deci matricea L cu matricea , folosind însă nişte reguli de calcul speciale, numite înmulţire şi adunare latină.

Definiţia 1: Se numeşte alfabet o mulţime de semne numite simboluri sau litere {si/iI} unde I este o mulţime oarecare de indici, finită sau nu.

Definiţia 2: Se numeşte cuvânt un şir finit de simboluri notat .Definiţia 3: Se numeşte înmulţire latină o operaţie definită pe mulţimea cuvintelor unui

alfabet, notată " ", astfel:

=

(produsul a două cuvinte se obţine prin concatenarea lor)Înmulţirea latină este asociativă, are ca element neutru cuvântul vid, nu e comutativă şi un element este inversabil doar dacă este cuvântul vid.

Definiţia 3: Se numeşte adunare latină o funcţie definită pe mulţimea cuvintelor unui alfabet cu valori în mulţimea parţilor mulţimi cuvintelor, notată " " astfel:

=

(suma a două cuvinte este mulţimea formată din cele două cuvinte)

Pasul 5. Se calculează succesiv matricile:

L2 = L , L3 = L2 , ... ,Lk+1 = Lk

folosind operaţiile de înmulţire şi adunare latină, alfabetul fiind mulţimea nodurilor grafului, unde operaţia de înmulţire este uşor modificată, produsul dintre două elemente ale matricilor fiind 0, dacă unul dintre ele este 0 sau au un nod comun şi este produsul latin al lor, în caz contrar.

Din felul cum a fost construită, matricea Lk va conţine toate drumurile elementare de lungime k. Cum un drum elementar poate avea cel mult n noduri (câte are graful cu totul) rezultă că:

primele n-1 puteri ale lui L conţin toate drumurile elementare din graf; puterile lui L mai mari sau egale cu n au toate elementele egale cu 0; matricea Ln-1 conţine toate drumurile hamiltoniene din graf (dacă există).

Observaţie: Deoarece obţinerea matricii D prin metoda de mai sus presupune un volum foarte mare de calcule (de exemplu, dacă graful are 100 de noduri, ridicarea unei matrici de 100×100 la puterea 100) pentru obţinerea acesteia se poate aplica şi următorul algoritm:

Pas 1. Se construieşte matricea de adiacenţă A;Pas 2. Pentru fiecare linie i se adună boolean la aceasta toate liniile j pentru care aij = 1.Pas 3. Se reia pasul 2 până când, după o aplicare a acestuia, matricea rămâne aceeaşi (nu

mai apare nici un 1)Ultima matrice obţinută este matricea drumurilor D numită şi matricea conexiunilor totale.Această metodă, deşi mai simplă nu spune însă şi care sunt aceste drumuri, pentru găsirea

lor aplicându-se, de exemplu, înmulţirea latină

98

Page 99: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

5. ARBORI. Problema arborelui de valoare optimă

În acest subcapitol grafurile vor fi considerate neorientate.

5.1. Noţiunea de arbore

Un arbore este un graf neorientat, finit, conex şi fără cicluri. Grafurile din fig. 4.1. sunt arbori.

Studiul arborilor este justificat de existenţa în practică a unui număr mare de probleme care pot fi modelate prin arbori. Dintre acestea amintim:

1. construirea unor reţele de aprovizionare cu apă potabilă (sau cu energie electrică sau termică etc) a unor puncte de consum, de la un punct central;

2. construirea unor căi de acces între mai multe puncte izolate;3. desfăşurarea unui joc strategic;4. luarea deciziilor în mai multe etape (arbori decizionali);5. evoluţii posibile ale unui sistem pornind de la o stare iniţială;6. construirea unei reţele telefonice radiale, a unei reţele de relee electrice;7. legarea într-o reţea a unui număr mare de calculatoare;8. organigramele întreprinderilor;9. studiul circuitelor electrice în electrotehnică (grafe de fluenţă etc);10. schemele bloc ale programelor pentru calculatoare etc.

În toate problemele de mai sus se doreşte ca, dintre muchiile unui graf neorientat, să se extragă arborele optim din mulţimea tuturor arborilor care pot fi extraşi din graful dat.

Deoarece definiţia arborelui este dificil de aplicat pentru deciderea faptului că un graf este arbore sau nu (şi în special sunt greu de verificat conexitatea şi mai ales existenţa ciclurilor) există mai multe caracterizări posibile ale unui arbore, acestea fiind date de teorema de mai jos:

Teoremă. Dacă H este un graf neorientat finit, atunci următoarele afirmaţii sunt echivalente:

1) H este arbore;2) H nu conţine cicluri şi, dacă se unesc printr-o muchie două noduri neadiacente, se

formează un ciclu (şi numai unul). Arborele este, deci, pentru o mulţime de noduri dată, graful cu numărul maxim de arce astfel încât să se păstreze proprietatea că nu are cicluri);

3) H este conex şi dacă i se suprimă o muchie se creează două componente conexe (arborele este graful conex cu numărul minim de arce);

4) H este conex şi are n-1 muchii;5) H este fără cicluri şi are n-1 muchii;

99

x1

x1

a)

x1

x1

x1

x1

x1

b)

x1 x1

x1

x1

c)

Figura 4.1

Page 100: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

6) Orice pereche de noduri este legată printr-un lanţ şi numai unul.

Demonstraţie :

1) 2). între cele două noduri adiacente noii muchii introduse exista deja un drum în fostul graf. Acest drum, împreună cu noul arc va forma evident un ciclu şi afirmaţia 2) a fost demonstrată.

2)3). Pentru oricare două vârfuri neunite printr-o muchie, adăugând muchia dintre cele două vârfuri s-ar crea, conform ipotezei, un ciclu care conţine această muchie, deci două drumuri între cele două noduri, din care unul nu conţine noua muchie, adică în graful iniţial exista un drum între cele două noduri. Dacă nu există cicluri înseamnă că între oricare două noduri există un singur drum. Pentru două noduri unite printr-o muchie, aceasta este chiar drumul corespunzător celor două noduri. Dacă suprimăm această muchie între cele două noduri nu va mai exista nici un drum, formându-se două componente conexe.

3)4). Demonstraţia se face prin inducţie după n = numărul de noduri ale grafului. Pentru n=2 este evident. Presupunem afirmaţia adevărată pentru toate grafurile cu cel mult n noduri. Dacă graful are n+1 noduri, prin suprimarea unei muchii se formează două componente conexe fiecare având cel mult n noduri (n1 n, n2 n şi n1 + n2 = n+1) şi deci au n1 – 1 respectiv n2 – 1 muchii. În concluzie graful iniţial a avut (n1 – 1) + (n2 – 1) +1 = n1 + n2 – 1= (n+1)-1 muchii, ceea ce era de demonstrat.

4)5). Dacă ar avea un ciclu atunci prin suprimarea unui arc al acestuia ar rămâne de asemenea conex. Eliminăm acest arc apoi repetăm procedeul pentru graful parţial rămas şi tot aşa până când nu mai rămâne nici un ciclu. În acest moment graful rămas este conex şi nu are cicluri deci este arbore şi deci are n-1 arce, în contradicţie cu faptul că el avea n-1 arce înainte de a începe suprimarea arcelor;

5)6). Dacă între două noduri ar exista două drumuri atunci acestea ar forma la un loc un ciclu. Deci între 2 noduri este cel mult un drum. Dacă între două noduri nu ar exista nici un drum ar fi cel puţin două componente conexe în graf, fiecare fiind arbore (pentru că nu există cicluri) şi deci fiecare ar avea un număr de arce cu 1 mai mic decât numărul de noduri. Făcând adunarea, ar rezulta că în graf sunt strict mai puţin de n-1 arce.

6)1). Dacă H ar avea un ciclu, între două noduri ale acestuia ar exista două lanţuri, în contradicţie cu ipoteza.

Presupunem că avem un graf pentru care am verificat deja dacă este conex. Dacă nu este atunci acesta, evident, nu are nici un graf parţial care să fie arbore.

Presupunem de asemenea că fiecărei muchii îi este asociată o valoare reală.

5.2. Algoritmi pentru găsirea arborelui de valoare optimă

Vom da mai jos trei algoritmi pentru determinarea unui graf parţial al grafului, care să fie arbore şi pentru care suma valorilor arcelor sale să fie minimă (sau maximă).

Toţi algoritmii descrişi în continuare extrag arborele prin colectarea una câte una a muchiilor acestuia.

A. Algoritmul lui Kruskal

Pasul 1. Dintre toate muchiile grafului se alege muchia de valoare minimă (maximă). Dacă minimul este multiplu se alege la întâmplare una din muchiile respective. Deoarece acest "la întâmplare" trebuie cumva tradus în limbajul calculatorului, în cazul implementării unui program bazat pe acest algoritm, vom perturba din start valorile muchiilor, la k muchii cu aceiaşi valoare V adunând respectiv valorile , 2, ... , k, unde este foarte mic (în orice

100

Page 101: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

caz, k mai mic decât diferenţa dintre valoarea acestor arce si valoarea imediat superioară a unui arc), pozitiv.

Pasul 2. Dintre toate muchiile rămase, se alege cea de valoare minimă (maximă);Pasul 3. Dintre toate muchiile rămase, se alege cea de valoare minimă (maximă), astfel încât să nu

se formeze cicluri cu cele deja alese;Pasul 4. Se reia algoritmul de la pasul 3 până se colectează n-1 muchii.

Deşi s-a demonstrat că algoritmul găseşte întotdeauna arborele optim, el are dezavantajul că este foarte laborios (de fiecare dată trebuie calculat minimul unei mulţimi mari sau foarte mari – există situaţii în practică în care graful are sute de mii de arce) şi, în plus, trebuie aplicat un algoritm special ca să respectăm condiţia de a nu se forma cicluri, la alegerea unui nou arc.

O metodă posibilă este ca, după adăugarea fiecărui arc, să se împartă graful în componente conexe şi să alegem apoi un arc care nu are ambele extremităţile în aceeaşi componentă conexă.

De asemenea este clar că, în cazul existenţei arcelor de valori egale, deoarece se alege la întâmplare, există mai multe variante de evoluţie a alegerii arcelor. Totuşi, cu toate că pot fi mai multe grafuri la care se poate ajunge prin acest algoritm, ele vor avea toate aceeaşi valoare (minima (sau maxima) posibilă).

B. Algoritmul lui Sollin

Pasul 1. Pentru fiecare nod se alege muchia adiacentă de valoare minimă (maximă).Pasul 2. Se evidenţiază componentele conexe, existente în graful parţial format din arcele alese

până în acest moment.Pasul 3. Pentru fiecare componentă conexă se alege muchia adiacentă de valoare minimă

(maximă). Prin muchie adiacentă unei componente conexe înţelegem o muchie care are o singură extremitate printre nodurile componentei respective.

Pasul 4. Se reia algoritmul de la pasul 2 până rămâne o singură componentă conexă. Aceasta este arborele optim căutat.

Acest algoritm asigură de asemenea găsirea arborelui optim, necesită mult mai puţine calcule (la fiecare alegere se calculează minimul doar pentru muchiile adiacente unui singur nod), evită automat formarea ciclurilor, dar, pentru grafuri foarte mari, la un moment dat pot exista atât de multe componente conexe care trebuie memorate succesiv, încât calculul devine greoi sau, pe calculator, depăşeşte posibilităţile de memorare ale calculatorului.

C. O variantă a algoritmului lui Kruskal

Pasul 1. Dintre toate muchiile grafului se alege cea de valoare minimă (maximă);Pasul 2. Dintre toate muchiile adiacente componentei conexe formată din arcele alese până în acest

moment, se alege cea de valoare minimă (maximă);Pasul 3. Se reia pasul 2 până se colecţionează n-1 muchii.

Algoritmul are toate avantajele algoritmului lui Sollin şi, în plus, lucrează cu o singură componentă conexă, fiind mult mai uşor de implementat pe calculator şi mult mai rapid în execuţie.

Exemplu: Administraţia unei localităţi montane a hotărât construirea unor linii de teleferic care să lege oraşul de cele 8 puncte turistice importante din jurul acestuia. În urma unui studiu au fost puse în evidenţa toate posibilităţile şi costurile de conectare a obiectivele turistice între ele şi cu oraşul, acestea fiind prezentate în figura 4.2.

Se cere găsirea variantei de construcţie de cost minim, care să asigure accesul din oraş la oricare din obiectivele turistice.

101

O

P2

P1

P6

P3

P7

P4

P5

P8

97

88

4

53

3

2

25

7

3

48

768

8

Figura 4.2

9

Page 102: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Rezolvare

Condiţia de cost minim implică două obiective:1. Să se construiască minimul de arce necesare;2. Să se construiască cele mai ieftine legături.

Referitor la numărul de arce necesar, facem observaţia că, dacă din oraş se va putea ajunge la orice obiectiv turistic, atunci se va putea ajunge şi de la orice staţiune la oricare alta (trecând prin oraş), deci trebuie ca arcele alese pentru construcţie să formeze la un loc un graf conex.

În concluzie, căutăm un graf parţial conex cu un număr minim de arce, adică un arbore. În plus, suma costurilor arcelor sale trebuie să fie minimă. Vom aplica pe rând cei trei algoritmi pentru găsirea acestuia:

A. Kruskal

La primul pas poate fi ales unul din arcele OP3 sau OP7, ele având valoarea minimă 2. Putem alege oricum primul arc dintre cele două pentru că la al doilea pas va fi ales celălalt.

La pasul trei poate fi ales unul din arcele OP5, OP6 sau P1P6 care au valoarea minimă 3. Nici în acest caz nu are vre-o importanţă ordinea alegerii, deoarece pot fi alese succesiv toate trei fără a se forma nici un ciclu.

Al şaselea arc poate fi ales dintre arcele P4P5 şi P1P2, care au valoarea minimă 4. Nici în acest caz nu are vre-o importanţă ordinea alegerii, deoarece pot fi alese succesiv ambele, fără a se forma nici un ciclu.

Următoarea valoare disponibilă a unui arc este 5, dar arcul opt nu poate fi ales dintre arcele OP1, P6P7, deşi au valoarea minimă 5. Arcul OP1 nu poate fi ales deoarece s-ar forma ciclul OP1P6, iar P6P7 ar duce la ciclul OP6P7. Următoarea valoare minimă este 6, pentru arcul P5P7 dar nu poate fi ales deoarece se formează ciclul OP5P7.

Valoarea următoare, 7, o au arcele OP4, P2P3 şi P5P8. OP4 nu poate fi ales deoarece s-ar forma ciclul OP5P4. Arcul P2P3 nu poate fi ales deoarece s-ar forma ciclul OP6P1P2P3. Arcul P5P8 nu formează nici un ciclu şi el va fi al optulea arc ales. În acest caz, deoarece s-au adunat 8 arce într-un graf cu 9 noduri, am obţinut graful căutat.

Acest arbore este reprezentat în figura 4.3.

102

O

P2

P1

P6

P3

P7

P4

P5

P8

4

33

2

2

3

4

Figura 4.3

7

Page 103: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

B. Sollin

Vom alege: pentru nodul O arcul OP3

pentru nodul P1 arcul P1P6

pentru nodul P2 arcul P1P2

pentru nodul P3 arcul OP3

pentru nodul P4 arcul P4P5

pentru nodul P5 arcul OP5

pentru nodul P6 arcul P1P6

pentru nodul P7 arcul OP7

pentru nodul P8 arcul P5P8

Rezultă graful parţial:

După cum se vede, s-au format două componente conexe: C1 = {P1,P2,P6}

C2 = {O,P3,P4,P5,P7,P8}.

Vom alege: pentru C1 arcul OP6

pentru C2 arcul OP6

şi obţinem o singură componentă conexă, care este arborele căutat.

C. Varianta algoritmului lui Kruskal

Succesiunea alegerii arcelor va fi:

1 OP3

2 OP7

3 OP6

4 OP5

5 P1P6

103

O

P2

P1

P6

P3

P7

P4

P5

P8

4

32

2

3

4

7

Figura 4.4

Page 104: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

6 P1P2

7 P4P5

8 P5P8

104

Page 105: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

6. Cuplajul a două mulţimi disjuncte. Probleme de afectare (de repartiţie)

În practica economică sunt foarte des întâlnite probleme în care se doreşte asocierea optimă a elementelor unei mulţimi X = {x 1, x2, ... , xn} cu elementele unei alte mulţimi Y = {y1, y2, ... , ym} în condiţiile unor limitări existente (şi cunoscute) ale posibilităţilor de asociere.

În general, fiecare asociere posibilă xi yj aduce un anumit efect aij (profit, cost etc) care poate fi calculat şi vom presupune că este cunoscut.

Limitările asupra asocierilor se traduc de obicei prin faptul că:

1. Un element xi poate fi asociat doar cu anumite elemente din Y şi reciproc;

2. La sfârşit, fiecărui element din X i s-a asociat cel mult un element din Y şi reciproc.

Asocierea optimă presupune, de obicei, două obiective:

1. Să se facă maximul de asocieri;

2. Suma efectelor asocierilor să fie maximă (sau minimă, în funcţie de semnificaţia acestora).

Reprezentarea geometrică a situaţiei de mai sus este un graf de forma:

numit graf bipartit.

Definiţia 1: Se numeşte graf bipartit un graf G = (X, U) în care mulţimea nodurilor poate fi împărţită în două mulţimi disjuncte A şi B astfel încât orice arc are extremitatea iniţială în A şi cea finală în B.

Definiţia 2: Se numeşte cuplaj al unui graf bipartit o submulţime de arce W U cu proprietatea că nu există două arce adiacente (sau altfel spus, pentru orice nod există cel mult un arc incident acestuia).

Definiţia 3: Se numeşte cuplaj maxim un cuplaj cu proprietatea că orice arc care nu face parte din cuplaj este adiacent cu un arc din cuplaj ( orice arc am adăuga, nu mai rămâne cuplaj nu există nici un cuplaj în care să se includă strict conţine numărul maxim de arce neadiacente)

Este evident că numărul de arce ale unui cuplaj este mai mic sau egal cu numărul de elemente din fiecare din mulţimile A şi B ( min (A,B). Este interesant de văzut însă cât de mare este el efectiv şi în ce condiţii este egal chiar cu min (A,B).

Referitor la prima întrebare, în 1931 König a demonstrat o teoremă care permite stabilirea numărului de arce ale unui cuplaj maxim:

Teoremă: Numărul maxim de arce ale unui cuplaj într-un graf bipartit G = (AB, ) este egal cu

În ceea ce priveşte a doua problemă, observăm mai întâi că putem presupune că întotdeauna AB, în caz contrar inversând sensul tuturor arcelor grafului, problema rămânând aceeaşi.

În acest caz:

105

x1

x2

xn

y1

y2

ym

Page 106: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

= A – A = 0 = 0

= 0 oricare ar fi C A

sau altfel spus, pentru orice submulţime C a lui A, mulţimea nodurilor atinse de arce care pleacă din nodurile sale, adică (C), are cel puţin atâtea elemente cât C.

De exemplu, la repartizarea angajaţilor pe posturi, fiecare angajat poate obţine un post dorit dacă şi numai dacă oricare ar fi mulţimea de r angajaţi există cel puţin r posturi diferite din care pot alege.

Presupunem, în continuare, că s-a asociat fiecărui arc (xi,xj) o valoare vij.

Definiţia 4: Se numeşte valoare a unui cuplaj suma valorilor arcelor care îl formează.

În acest moment putem spune că determinarea unei asocieri optime a mulţimilor X şi Y de la început este echivalentă matematic cu determinarea unui cuplaj maxim de valoare optimă (minimă sau maximă) în graful bipartit asociat.

Dintre problemele întâlnite în practica economică, ce se reduc matematic la găsirea unui cuplaj maxim de valoare optimă, amintim:

1. Problema repartizării muncitorilor unei secţii la utilajele acesteia în funcţie de pregătirea şi preferinţele muncitorilor, complexitatea maşinilor etc;

2. transferarea unor informaţii într-un grup;

3. Repartizarea angajaţilor pe posturi;

4. Formarea grupelor de lucru după afinităţile dintre membrii colectivului.

În 1955, bazându-se pe teorema lui König, H.W. Kuhn a elaborat un algoritm, cunoscut în literatura de specialitate sub denumirea de algoritmul ungar, cu ajutorul căruia se poate determina un cuplaj maxim de valoare minimă într-un graf bipartit pentru care A=B= n.

El se bazează pe observaţia că, dacă se adună (sau scade) aceeaşi număr la toate valorile arcelor, nu se modifică ierarhia cuplajelor maxime, în ceea ce priveşte valoarea lor.

Vom prezenta algoritmul concomitent cu rezolvarea unui caz particular, pentru o mai bună receptare a acestuia:

"Într-o secţie produsele finite se obţin în urma efectuării succesive a 6 operaţii pe 6 maşini. În această secţie sunt angajaţi 6 muncitori, fiecare fiind calificat pentru efectuarea oricărei din cele 6 operaţii. Pentru a optimiza activitatea în secţie cei 6 muncitori au fost supuşi la un test în care fiecare a prelucrat un număr de piese, pe toate cele şase maşini. În final, calculându-se timpul mediu în care muncitorul M i efectuează operaţia Oj

s-au obţinut valorile (în ore) date în tabelul de mai jos:

M1 M2 M3 M4 M5 M6

O1 4 3 6 2 6 8

O2 5 4 8 3 8 9

O3 5 6 8 2 8 7

O4 4 5 7 2 7 8

O5 4 6 6 3 6 7

O6 6 6 8 3 8 9

Să se găsească acea repartiţie a muncitorilor la maşini astfel încât timpul în care o piesă se prelucrează succesiv pe cele 6 maşini să fie minim."

Pasul 1. Se construieşte matricea pătratică M care are elementele:

mij =

106

Page 107: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Pentru exemplul ales vom avea: M =

Pasul 2. Se scade din fiecare linie minimul acesteia apoi, în matricea obţinută, din fiecare coloană minimul acesteia (se poate face şi invers, rezultatul final va fi acelaşi). Pentru exemplul dat vom obţine succesiv matricile:

M1 = şi apoi M2 =

Ultima matrice este cea asupra căreia se aplică următoarele calcule. În acest moment pe fiecare linie şi pe fiecare coloană se află cel puţin un 0, care corespunde celui mai mic timp. Se încearcă în continuare folosirea doar a acestor repartizări:

Pasul 3. În ordinea crescătoare a numărului de zerouri şi de sus în jos (în cazul existenţei mai multor linii cu acelaşi număr de zerouri ) se încadrează pentru fiecare linie zeroul a cărui coloană conţine cele mai puţine zerouri (primul de la stânga dintre acestea, în caz de egaliate) şi se barează celelalte zerouri de pe linia şi coloana acestuia. Pe parcursul algoritmului sunt luate în considerare la numărare doar zerourile neîncadrate şi nebarate încă. În final, pe fiecare linie şi pe fiecare coloană va fi cel mult un zero încadrat. Dacă în final sunt n (= dimensiunea matricei) zerouri, atunci arcele corespunzătoare formează cuplajul căutat. Dacă sunt mai puţine se trece la pasul 4.

În exemplul nostru avem trei linii cu câte un zero (a 3-a, a 4-a şi a 5-a) .Îl încadrăm pe cel de pe linia 3 (prima dintre ele) şi barăm restul zerourilor de pe linia 3 şi coloana 3, obţinând:

În acest moment pe liniile 1 şi 2 se află un zero. Se încadrează cel de pe linia 1 şi se barează celelalte de pe linia 1 şi coloana 2, obţinând:

Ultima linie cu zerouri este linia 5 din care îl încadrăm pe primul şi le barăm pe celelalte:

107

Page 108: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În total nu sunt 6 zerouri încadrate (sunt doar trei) şi deci trecem la pasul 4.

Pasul 4. La acest pas se va stabili numărul minim posibil de linii şi coloane care să conţină toate zerourile matricii. În acest sens vom proceda astfel:

a) se marchează liniile care nu au nici un zero încadrat;

b) se marchează coloanele care au un zero barat pe o linie marcată;

c) se marchează liniile care au un zero încadrat pe o linie marcată (dacă există);Se repetă operaţiile b) şi c) până nu mai poate fi marcată nici o linie şi nici o coloană.

În cazul nostru vom avea: a) se marchează liniile 2, 4 şi 6;

b) se marchează coloanele 2 şi 4;

c) se marchează liniile 1 şi 3;

b) nu mai marcăm nici o coloană deoarece nu mai există nici un zero barat pe liniile 1 şi 3, care să corespundă unei coloane nemarcate;

c) nu mai marcăm nici o linie, deoarece nu a mai apărut nici o coloană marcată.

Rezultă:

Pasul 5. Se taie liniile nemarcate şi coloanele marcate:

Pasul 6. Se împart elementele matricei în trei grupe:

G1 = elemente aflate la intersecţii de linii netăiate cu coloane netăiate;

G2 = elemente situate la intersecţii de linii tăiate cu coloane netăiate sau de linii netăiate cu coloane tăiate;

G3 = elemente situate la intersecţii de coloane tăiate cu linii tăiate

Pasul 7. Se găseşte minimul grupei G1, care se scade din fiecare element al lui G1 şi se adună la fiecare element al grupei G3. Elementele grupei G2 rămân neschimbate.

108

Page 109: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Pentru exemplul dat, minimul lui G1 este 1 şi obţinem noua matrice:

Pasul 8. Se reia algoritmul de la pasul 3.

Vom avea după marcare:

Deoarece avem 6 zerouri încadrate, am obţinut cuplajul maxim de valoare minimă căutat, căruia îi va corespunde repartizarea muncitorilor pe operaţii de mai jos:

care duce la o durată totală a prelucrării unei piese de 6 + 4 + 7 + 6 + 3 = 26 ore

Observaţie: Deoarece regula de a alege de sus în jos la linii cu acelaşi număr de zerouri este arbitrară şi de asemenea alegerea primului zero de la stânga, putem ajunge şi la alte cuplaje maxime, dar toate vor avea aceeaşi valoare, cea minimă. De exemplu, un alt cuplaj optim este:

adică

care are de asemenea valoarea 26.

109

M1

M2

M3

M4

M5

M6

O1

O2

O3

O4

O5

O6

6

4

4

7

63

M1

M2

M3

M4

M5

M6

O1

O2

O3

O4

O5

O6

64

4

7

6

3

Page 110: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Observaţia 1. Dacă dorim un cuplaj de valoare maximă atunci vom calcula la pasul 1 matricea M astfel:

1. Construind matricea A de elemente:

aij =

2. Matricea M va avea componentele: mij =

apoi aplicăm în continuare algoritmul.

Observaţia 2. Dacă AB atunci aplicăm acelaşi algoritm cu singura diferenţă că ne vom opri când vom obţine un număr de zerouri egal cu min (A,B).

110

Page 111: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

7. Drumuri şi circuite hamiltoniene

Una dintre cele mai cunoscute probleme economice este problema comis voiajorului. Comis voiajorul este un individ care trebuie să prezinte s-au să distribuie marfa comandată la o serie de centre distribuite în general neliniar pe o anumită zonă teritorială (localităţile dintr-un judeţ, magazinele dintr-un cartier, persoanele dintr-un sat etc). Dacă numărul de obiective care trebuie vizitate este mare sau foarte mare iar timpul disponibil foarte limitat atunci devine vitală o asemenea organizare a trecerii pe la fiecare obiectiv încât să se efectueze în timpul minim posibil. Acest timp minim se traduce prin drumul cel mai scurt, iar cel mai scurt drum este evident cel în care se trece pe la fiecare obiectiv o singură dată. În plus, la sfârşit trebuie să se afle în punctul iniţial, adică sediul firmei la care lucrează.

O reprezentare a regiunii aprovizionate, în care centrele pe la care se trece sunt vizualizate prin puncte iar căile de acces la acestea prin segmente de curbe, va fi evident un graf, problema reducându-se la a găsi circuitul hamiltonian de lungime minimă.

În timp, s-au evidenţiat o multitudine de probleme reductibile la găsirea unui drum (sau circuit) hamiltonian într-un graf, cum ar fi:

1. Problema poştaşului (găsirea traseului cel mai scurt care trece pe la toate locuinţele ce aparţin de oficiul poştal la care lucrează acesta);

2. Problema adunării deşeurilor (cel mai scurt drum care trece pe la toate punctele de depozitate a deşeurilor);3. Problema succesiunii operaţiilor (executarea mai multor operaţii pe o maşină în acea ordine în care suma timpilor consumaţi cu

pregătirea maşinii pentru trecerea de la o operaţie la următoarea să fie minim) 4. Ordinea lipirii unor componente electronice pe o placă, etc;

Determinarea drumurilor hamiltoniene

Problema determinării drumului (circuitului) hamiltonian de valoare optimă s-a dovedit deosebit de dificilă, neexistând nici acum un algoritm care să rezolve problema în timp polinomial şi nici măcar o metodă simplă prin care să se decidă dacă într-un graf dat există sau nu drumuri hamiltoniene.

Există însă mai mulţi algoritmi, unii exacţi alţii heuristici, care reuşesc, într-un caz sau altul, să rezolve problema satisfăcător şi în timp util.

A. Algoritmul lui Foulkes

Pasul 1. Se scrie matricea booleană A asociată grafului G.

Pasul 2. Se determină matricea D a drumurilor grafului G prin procedeul expus la începutul capitolului şi apoi matricea M = I + D.

Pasul 3. Se împarte mulţimea nodurilor grafului în submulţimi disjuncte astfel:

1. Se consideră în matricea M liniile pline (cu toate elementele 1). Nodurile ce corespund liniilor pline cu 1 formează submulţimea C1.

2. Se elimină liniile şi coloanele care corespund nodurilor din submulţimea stabilită.3. Se reia raţionamentul de la punctul 1 pe matricea redusă obţinută la punctul 2 obţinându-se

următoarea submulţime şi în continuare toate celelalte până se epuizează toate liniile matricei.

Pasul 4. Se construieşte graful G' în care:

1. Nodurile care formează o submulţime sunt reprezentate prin puncte în interiorul unui dreptunghi şi între acestea se trasează arcele existente în graful iniţial G.

2. Se trasează legăturile dintre submulţimi. Ele sunt reprezentate prin arcele existente în graful iniţial G între nodurile submulţimii C1 şi cele ale submulţimii C2, între nodurile submulţimii C2 şi cele ale submulţimii C3 etc.

Pasul 5. Se găsesc drumurile hamiltoniene111

Page 112: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Un drum hamiltonian se găseşte plecând de la un vârf din submulţimea C1, trecând prin toate vârfurile acesteia cu un drum hamiltonian, din ultimul vârf la care se ajunge în C1 trecând la un vârf din C2, parcurgând în continuare un drum hamiltonian în a doua submulţime şi tot aşa, trecând prin toate submulţimile şi parcurgând, deci, toate nodurile grafului iniţial, o singură dată. Aplicând acest procedeu în toate modurile posibile se obţin toate drumurile hamiltoniene din graful iniţial G. (Observaţie: poate să nu existe nici un drum hamiltonian în graful G, caz în care algoritmul se opreşte deoarece la un anumit pas nu mai exista nici o linie plina cu 1).

Observaţie. Algoritmul lui Foulkes reduce găsirea drumurilor hamiltoniene în graful iniţial G (care în problemele practice este foarte mare) la găsirea mai multor drumuri hamiltoniene mai mici în componente tare conexe ale grafului. Dacă un graf are o singură componentă tare conexă, algoritmul lui Foulkes nu este eficient, în acest caz trebuind aplicaţi alţi algoritmi cum ar fi cel bazat pe înmulţirea latină.

B. Algoritmul lui Chen pentru determinarea drumurilor hamiltoniene în grafuri fără circuite

Fie G = (X,U) un graf orientat fără circuite, cu n noduri: X = {x1, x2, … , xn}. Vom considera că am calculat matricea drumurilor D şi puterile de atingere ale tuturor nodurilor.

Dacă în graful G există un drum de la nodul xi la nodul xj atunci evident p(xi) > p(xj), deoarece în orice vârf în care se poate ajunge din x j se poate ajunge şi din xi dar din xj nu se poate ajunge în xj pentru că nu există circuite.

Teorema 2.3 (Chen) Un graf cu n noduri, fără circuite conţine un drum hamiltonian dacă şi numai dacă există relaţia:

Demonstraţie “” Fie H un drum hamiltonian şi presupunem că nodurile grafului au fost notate în ordinea

în care apar în acest drum. Atunci din orice nod x i se poate ajunge în toate nodurile cu indice mai mare şi numai în acestea (altfel ar exista circuite) şi deci puterea unui nod xi este n – i, de unde:

= (n – 1) + (n – 2) + … + 1 + 0 =

“” Ordonând vârfurile în ordinea descrescătoare a puterii lor de atingere (i > j p(xi) < p(xj)) şi cum graful nu are circuite, vom obţine o matrice D cu toate zerourile deasupra diagonalei (evident pe o poziţie (i,i) nu se află nici un 1 iar dacă ar fi un 1 pe poziţia (i,j) cu i > j ar însemna că din xi se poate ajunge în xj, deci în toate nodurile în care se poate ajunge din xj, iar din xj nu se poate ajunge în xi, deci p(xi) > p(xj) în contradicţie cu ipoteza de ordonare a nodurilor). Cum deasupra

diagonalei sunt poziţii iar suma puterilor vârfurilor este chiar rezultă că toate

poziţiile de deasupra diagonalei sunt 1. Aceasta înseamnă că există toate arcele de forma (x i,xi+1) (altfel n-ar exista drum de la xi la xi+1, deoarece toate drumurile au indicii nodurilor în ordine descrescătoare) şi deci drumul hamiltonian (x1, x2, … , xn) q.e.d.

Teorema 2.4 Dacă într-un graf orientat fără circuite există un drum hamiltonian atunci acesta este unic.

112

Page 113: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Demonstraţie Deoarece un drum hamiltonian se identifică cu o permutare a nodurilor grafului, existenţa a două drumuri hamiltoniene implică existenţa a două permutări distincte a nodurilor grafului şi cum două permutări distincte diferă prin cel puţin o inversiune vor exista două noduri xi şi xj în ordinea xi xj pe un drum şi invers pe celălalt, existând deci un drum atât de la xi

la xj cât şi de la xj la xi, cele două formând împreună un circuit, în contradicţie cu ipoteza.

Pe aceste teoreme se bazează algoritmul lui Chen de determinare a drumului hamiltonian într-un graf orientat fără circuite:

Pasul1. Se scrie matricea de adiacenţă A Pasul2. Se calculează matricea drumurilor DPasul3. Dacă există un indice i cu dii = 1 atunci graful are circuite, nu se poate aplica algoritmul lui

Chen şi algoritmul se opreşte. Dacă nu, se trece la pasul 4.Pasul4. Se calculează puterile de atingere pentru fiecare nod.

Pasul5. Dacă nu se verifică relaţia atunci graful nu are drumuri hamiltoniene şi

algoritmul se opreşte, altfel se trece la pasul 6.Pasul6. Se ordonează nodurile în ordinea descrescătoare a puterilor lor de atingere şi obţinem

drumul hamiltonian căutat.

C. Algoritmul lui Kaufmann

Pasul 1. Construim matricea latină L asociată grafului, unde:

lij =

Pasul 2. Construim matricea , definită prin:

=

numită matricea latină redusă.

Pasul 3. Se calculează succesiv matricile:

L2 = L , L3 = L2 , ..., Lk+1 = Lk , ...

folosind operaţiile de înmulţire şi adunare latină, alfabetul fiind mulţimea nodurilor grafului, unde operaţia de înmulţire este uşor modificată, produsul dintre două elemente ale matricilor fiind 0, dacă unul dintre ele este 0 sau au un nod comun, şi este produsul latin al lor, în caz contrar.

Din felul cum a fost construită, matricea Lk va conţine toate drumurile elementare de lungime k. Cum un drum elementar poate avea cel mult n noduri (câte are graful cu totul) rezultă că:

primele n-1 puteri ale L conţin toate drumurile elementare din graf; puterile lui L mai mari sau egale cu n au toate elementele egale cu 0; matricea Ln-1 conţine toate drumurile hamiltoniene din graf.

Pasul 4. Dacă se doresc şi circuitele atunci se verifică pentru fiecare drum hamiltonian dacă poate fi completat până la un circuit (adică dacă există în graf arcul care uneşte nodul final cu cel iniţial);

113

Page 114: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Pasul 5. Dacă se doreşte şi drumul (sau circuitul) de valoare optimă (maximă sau minimă) se calculează suma valorilor pentru fiecare drum şi/sau circuit şi se alege cel cu valoarea optimă.

În concluzie, metoda înmulţirii latine (A. Kaufmann – J. Melgrange) determină toate drumurile elementare din graf, prin calcularea matricelor M(1), M(2), M(3), …, M(n-1).

În matricea M(n-1) se citesc drumurile hamiltoniene.Această metodă a înmulţirii latine (algoritmul lui Kaufmann) este utilă, mai ales, în cazul

grafurilor tare conexe, unde algoritmul lui Foulkes nu este eficient. Totuşi, metoda este greu de aplicat în grafuri cu un număr mare de noduri. În acest caz este preferabil să se construiască graful condensat, să se determine drumurile hamiltoniene în fiecare în parte cu algoritmul lui Kaufmann şi apoi, ca la algoritmul lui Foulkes, să se caute drumurile hamiltoniene în graful iniţial.

D. Un algoritm bazat pe algoritmul ungar

Fie G = (X,U) un graf orientat cu n noduri X = {x1, x2, … , xn}.

Pasul 1. Se construieşte graful bipartit H = (AB,V) în care A = B = X şi V = U (adică am folosit pentru G reprezentarea prin corespondenţă).

Pasul 2. Se găseşte pentru graful H cuplajul maxim de valoare minimă.Pasul 3. Se construieşte graful parţial al lui G format doar cu arcele cuplajului găsit. Este uşor de

demonstrat că, componentele tare conexe ale acestuia sunt toate nişte circuite. Dacă s-a format un singur circuit acesta este circuitul hamiltonian de valoare minimă. Dacă s-au format mai multe se trece la pasul 4.

Pasul 4. Pentru fiecare arc aflat pe circuitul de lungime minimă (dacă sunt mai multe se iau în considerare arcele tuturor) se reia algoritmul de la pasul 1 pentru graful parţial rezultat din G prin eliminarea acestui arc.

Pasul 5. Pentru fiecare graf parţial se continuă procedeul până se ajunge la unul din cazurile:

Cazul1. Cuplajului maxim găsit îi corespunde un singur circuit. Dacă acest circuit este primul obţinut atunci valoarea sa i se atribuie unei variabile Z şi circuitul este păstrat. Dacă nu este primul atunci valoarea sa se compară cu Z şi, dacă este mai mică, ea devine noua valoare a lui Z şi circuitul se păstrează, eliminându-l pe cel corespunzător fostei valori a lui Z. În caz contrar se trece la alt graf parţial neanalizat încă.

Cazul2. Cuplajul maxim are o valoare mai mare decât Z. Pentru acest graf parţial se abandonează ramificarea.

Pasul 6. Se continuă analiza grafurilor parţiale până sunt analizate toate ramificaţiile. Valoarea Z finală este valoarea circuitului de valoare minimă iar circuitul corespunzător este cel optim.

Analiza de mai sus poate fi schematizată printr-un arbore de tipul:

114

Page 115: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

în care fiecare nod este un graf parţial de analizat, iar pentru fiecare arc, nodul inferior este un graf parţial care provine din graful corespunzător nodului superior, prin suprimarea unui arc de pe circuitele de lungime minimă corespunzătoare cuplajului maxim de valoare minimă al acestuia.

Observaţie: Algoritmul asigură găsirea circuitului de valoare minimă iar în cazul în care algoritmul lui Foulkes nu funcţionează este o alternativă mai bună decât algoritmul lui Kaufmann. Totuşi el nu lucrează în timp polinomial şi în unele cazuri (de exemplu cazuri în care se formează foarte multe cicluri cu lungime minimă) necesită un număr imens de calcule.

În aceste cazuri se pot folosi metode euristice prin care se elimină din start o serie de arce, considerate a avea valori prea mari pentru a se putea afla pe circuitul hamiltonian de valoare minimă, apoi se aplică în graful parţial rămas unul din algoritmii de mai sus.

115

Page 116: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

8. Drumuri optime într-un graf

În marea majoritate a problemelor care pot fi modelate prin grafuri nu ne interesează numai dacă există sau nu legături între componentele reprezentate prin nodurile grafului ci şi intensitatea acestora. Această intensitate are semnificaţia unei valori numerice (pozitive sau negative) asociate arcului corespunzător legăturii a cărei intensitate o măsoară.

În aplicaţiile economice această valoare poate fi:

lungimea drumului dintre două localităţi; costul parcurgerii rutei reprezentate prin arcul corespunzător; durata parcurgerii rutei respective; cantitatea transportată pe ruta respectivă; capacitatea maximă a rutei respective; câştigul realizat prin trecerea de la o stare la alta a sistemului; consum de energie pentru efectuarea trecerii respective; punctaj realizat etc.

Una din problemele care poate apărea în aceste situaţii este găsirea, pentru o anumită pereche de noduri (sau mai multe perechi), a drumului optim între acestea.

Pentru formalizarea problemei vom introduce noţiunea de valoare a unui drum, care este egală cu suma valorilor arcelor care îl compun. Vom nota în continuare valoarea unui arc (x i,xj) cu v(xi,xj) sau cu vij. În aceste condiţii putem enunţa problema drumului optim astfel:

"Dat un graf G = (X,U) şi o funcţie care asociază fiecărui arc o valoare reală, să se găsească, pentru o pereche dată de noduri, drumul (drumurile) de valoare optimă (minimă sau/şi maximă) între cele două noduri şi valoarea acestuia (acestora)"

Deoarece este vorba de găsirea minimului unei mulţimi de numere reale, prima întrebare care se pune este dacă aceasta admite minim. Dacă mulţimea nodurilor grafului este infinită atunci pot exista o infinitate de drumuri elementare distincte între cele două noduri şi mulţimea valorilor acestora poate avea orice formă (închisă sau nu, mărginită sau nu) devenind foarte greu de caracterizat cazurile când minimul dorit există. Deoarece totuşi majoritatea covârşitoare a problemelor economice se modelează prin grafuri cu număr finit de noduri, ne vom limita în continuare doar la acestea.

Un număr finit de noduri n atrage după sine existenţa unui număr finit de arce (cel mult n2)

şi a unui număr finit de drumuri elementare ( cel mult nn! ). Deoarece oricărui drum d îi

corespunde un drum elementar de (obţinut prin eliminarea tuturor subcircuitelor lui d) putem calcula valoarea oricărui drum ca sumă între valoarea drumului elementar corespunzător şi valorile unor subcircuite ale sale, fiecare înmulţită cu numărul de parcurgeri ale circuitului respectiv.

În concluzie, dacă există un circuit de valoare negativă înseamnă că există drumuri de valoare oricât de mică (cele care conţin acest circuit), obţinută prin parcurgerea acestuia de oricâte ori dorim) şi, deci, mulţimea valorilor drumurilor este nemărginită inferior, neexistând drum de valoare minimă. Dacă există un circuit de valoare pozitivă atunci există drumuri de valoare oricât de mare şi mulţimea valorilor drumurilor este nemărginită superior, neexistând drum de valoare maximă.

Dacă nu există circuite de valoare negativă atunci valoarea oricărui drum este mai mare sau egală cu a drumului elementar corespunzător, deci drumul de valoare minimă (dacă există) va fi un drum elementar. Cum mulţimea drumurilor elementare este finită (şi deci şi mulţimea valorilor lor) va avea minorant şi am lămurit problema compatibilităţii problemei. Analog, dacă nu există circuite de valoare pozitivă atunci valoarea oricărui drum este mai mică sau egală cu a drumului elementar

116

Page 117: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

corespunzător, deci drumul de valoare maximă (dacă există) va fi un drum elementar. Cum mulţimea drumurilor elementare este finită (şi deci şi mulţimea valorilor lor), va avea majorant.

Obs. 1. Dacă în graf nu există decât arce de valoare pozitivă atunci există drum de valoare minimă.

Obs. 1. Dacă în graf nu există decât arce de valoare negativă atunci există drum de valoare maximă.

Obs. 1. Dacă în graf nu există circuite atunci există şi drum de valoare minimă şi drum de valoare maximă.

Deoarece din cele de mai sus se sesizează importanţa existenţei circuitelor într-un graf vom da în continuare un algoritm de depistare a existenţei circuitelor într-un graf:

Pasul 1. Se construieşte mulţimea A formată din nodurile pentru care toate arcele incidente sunt incidente spre interior ( noduri în care toate arcele "intră" sau, altfel spus, noduri din care nu "pleacă" nici un arc).

Pasul 2. Se găsesc toate nodurile care nu sunt din A pentru care toate arcele incidente au cealaltă extremitate în A (noduri din care se poate "ajunge" doar in A). Dacă nu există nici un astfel de arc se trece la pasul 4.

Pasul 3. Se adaugă arcele găsite la pasul 2 la mulţimea A apoi se reia algoritmul de la pasul 2, pentru noua mulţime A.

Pasul 4. Dacă A conţine mulţimea tuturor nodurilor atunci graful nu conţine circuite. Dacă au rămas noduri în afara lui A atunci graful conţine circuite.

Algoritmi de găsire a drumului optim

Din cauza varietăţii nelimitate a grafurilor posibile, nu există un algoritm care să rezolve orice problemă în timp util, dar s-au elaborat o mulţime de algoritmi, fiecare fiind cel mai eficace în anumite cazuri. Aceşti algoritmi pot fi grupaţi în cinci categorii:

1. Algoritmi prin calcul matricial (Bellman-Kalaba, I. Tomescu, Bellman-Schimbell);2. Algoritmi prin ajustări succesive: (Ford);3. Algoritmi prin inducţie (Dantzig);4. Algoritmi prin ordonare prealabilă a vârfurilor grafului;5. Algoritmi prin extindere selectivă (Dijkstra).

În continuare vom prezenta trei dintre aceşti algoritmi.

A. Algoritmul lui Bellman - Kalaba

Algoritmul se aplică în grafuri finite care nu au circuite de valoare negativă (pentru o problemă de minim) sau care nu au circuite de valoare pozitivă (într-o problemă de maxim) şi găseşte drumurile de valoare minimă (maximă) de la toate nodurile grafului la un nod oarecare, fixat. Dacă dorim să cunoaştem drumurile de valoare minimă (maximă) între oricare două noduri vom aplica algoritmul, pe rând, pentru fiecare nod al grafului.

Fie G = {x1, x2, ... ,xn} un graf orientat finit. Presupunem (fără a restrânge generalitatea, că am numerotat nodurile astfel încât nodul spre care căutăm drumurile de valoare minimă (maximă) de la celelalte noduri să fie xn.

Pasul 1. Se construieşte matricea pătratică M cu dimensiunea egală cu numărul de noduri ale grafului ale cărei elemente sunt:

117

Page 118: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

mij =

Pasul 2. Se adaugă succesiv liniile Li la matricea M, elementele acestora calculându-se prin relaţiile de recurenţă:

1. L1j = mjn j = 1,...,n (prima linie este ultima coloană, transpusă, a matricii M)

2. Lij = min (Li-1,j , (mjk + Li-1,k)) într-o problemă de minim

sau Lij = max (Li-1,j , (mjk + Li-1,k)) într-o problemă de maxim

Pasul 3. După calcularea fiecărei linii noi se compară elementele ei cu cele ale precedentei: Dacă Lij = Li-1,j pentru orice j = 1,...,n atunci se opreşte recurenţa şi ultima linie

calculată conţine valorile minime ale drumurilor de la celelalte noduri la nodul xn. Dacă există cel puţin un indice j cu Lij Li-1,j se trece la calcularea noii linii Li+1

Pasul 4. Pentru găsirea drumului care dă valoarea minimă de la un nod x j la nodul xn se găsesc, începând înapoi de la ultima linie, pe care s-au obţinut valorile finale, notată Lf, nodurile

, , ..., care formează drumul căutat, unde = xj, = xn şi fiecare alt indice ki+1

este cel pentru care s-a obţinut minimul(maximul) de pe poziţia ki al liniei Li.Observaţie: Pentru grafuri foarte mari, algoritmul necesită un volum mare de memorie, prin necesitatea memorării matricei M, care este greu de manipulat. Chiar dacă din cele n2 arce posibile graful ar avea doar un procent foarte mic matricea grafului va avea tot n2 poziţii de memorat şi analizat.Exemplu: Presupunem dat graful orientat de mai jos, în care se doreşte găsirea drumului de valoare minimă de la nodul x1 la nodul x9.

118

x2

x1

x6

x3

x7

x4

x8

x9

97

38

4

53

3

2

25

7

9

43

768

8

9x5

Page 119: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Matricea M va fi

iar după calcularea liniilor Li obţinem:

x1 x2 x3 x4 x5 x6 x7 x8 x9

x1 0 4 5 x2 0 7 9 x3 0 3 9x4 0 3x5 8 2 7 0 3 2 9 x6 8 0 5 x7 0 6 8x8 4 0 7x9 0L1 9 3 8 7 0L2 12 6 3 10 13 8 7 0L3 15 12 6 3 8 13 8 7 0L4 13 12 6 3 8 13 8 7 0L5 13 12 6 3 8 13 8 7 0

Deoarece L4 = L5 oprim calcularea liniilor după calcularea liniei 5. În această linie se află valorile celor mai scurte de la toate nodurile la nodul x9. Drumul dorit de noi (x1 x9) are valoarea dată de prima poziţie a liniei 5, fiind egal cu 13.

Pentru a găsi acest drum, plecăm înapoi de la linia 4 şi avem:

x1 x5

13 = 8 + 5 x3

8 = 6 + 2 x4

6 = 3 + 3

3 x9

B. Algoritmul lui Ford simplificat

Algoritmul lui Ford simplificat se aplică doar în grafuri care nu admit circuite. Cu ajutorul lui se găseşte drumul de valoare optimă între două noduri fixate x i şi xj. Printr-o eventuală renumerotare a nodurilor putem presupune că nodul de la care porneşte drumul este x 1, care va fi numit nod iniţial, iar nodul la care se termină este xn, numit nod final.

119

Page 120: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Algoritmul este:

Pasul 1. I se dă vârfului iniţial valoarea 0 (zero): w(x0) = 0Pasul 2. Se construieşte mulţimea A formată din nodul iniţial: A = {x1}Pasul 3. Se analizează nodurile din afara mulţimii A.

Dacă există noduri în care se poate ajunge prin arce directe doar de la nodurile mulţimii A, acestea se adaugă la mulţimea A, cu valoarea:

w(xi) = , în problemele de minim

sau w(xi) = , în problemele de maxim

apoi se trece la pasul 4 Dacă nu există nici un nod de acest tip atunci nu există nici un drum de la x1 la xn.

STOP

Pasul 4. Se analizează mulţimea A: Dacă xn A atunci valoarea sa reprezintă valoarea drumului de valoare optimă de la

x1 la xn. Pentru găsirea acestui drum se porneşte înapoi de la nodul final xn şi se găsesc nodurile , , ..., care formează drumul căutat, unde = xn, = x1 şi fiecare alt indice ki+1 este cel pentru care:

w( ) + v( , ) = w( ) STOP Dacă xn A se reia algoritmul de la pasul 3.

Exemplu: Pentru acelaşi graf şi aceeaşi pereche de noduri din exemplul rezolvat cu algoritmul lui Bellman-Kalaba vom avea succesiv:

pas1: w(x1) = 0 pas2: A = {x1}pas3: Nodurile în care se poate ajunge doar din x1: {x5}

w{x5) = min( w(x1) + v(x1,x5)) = 0 + 5 = 5pas4: x9 Apas3: A = {x1,x5} şi nodurile în care se poate ajunge prin arce directe doar din x1 şi x5 sunt: {x6}

w{x6) = min( w(x1) + v(x1,x6), w(x5) + v(x5,x6)) = min(0 + 3 , 5 + 3) = 3pas4: x9 Apas3: A = {x1,x5,x6} şi nodurile în care se poate ajunge prin arce directe doar din x1, x5 şi x6 sunt:

{x2,x7} w{x2) = min( w(x1) + v(x1,x2), w(x5) + v(x5,x2), w(x6) + v(x6,x2)) = min(0 + 4,5 + 8,3 + 8) = 4w{x7) = min( w(x5) + v(x5,x7), w(x6) + v(x6,x7)) = min(5 + 2,3 + 5) = 7

pas4: x9 Apas3: A = {x1,x2,x5,x6,x7} şi nodurile în care se poate ajunge prin arce directe doar din x1, x2, x5, x6 şi

x7 sunt: {x3,x8} w{x3) = min( w(x2) + v(x2,x3), w(x5) + v(x5,x3)) = min(4 + 7,5 + 2) = 7w{x8) = min( w(x5) + v(x5,x8), w(x7) + v(x7,x8)) = min(5 + 9,7 + 6) = 13

pas4: x9 Apas3: A = {x1,x2,x3,x5,x6,x7,x8} şi nodurile în care se poate ajunge prin arce directe doar din x1,

x2,x3,x5, x6, x7 şi x8 sunt: {x4} w{x4) = min( w(x2) + v(x2,x4), w(x3) + v(x3,x4),w(x5) + v(x5,x4), w(x8) + v(x8,x4)) = min(4 + 9,7 + 3,5 + 7,13 + 4) = 10

pas4: x9 A

120

Page 121: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

pas3: A = {x1,x2,x3,x4,x5,x6,x7,x8} şi nodurile în care se poate ajunge prin arce directe doar din x1, x2, x3, x4, x5, x6, x7 şi x8 sunt: {x9} w{x9) = min( w(x3) + v(x3,x9), w(x4) + v(x4,x9), w(x7) + v(x7,x9), w(x8) + v(x8,x9)) = min(7 + 9, 10 + 3, 7 + 8, 13 + 7) = 13

pas4: x9 A şi urmează să găsim drumul care are lungimea 13.Avem succesiv:

w(x9) = w(x4) + v(x4,x9)w(x4) = w(x3) + v(x3,x4)w(x3) = w(x5) + v(x5,x3)w(x5) = w(x1) + v(x1,x5)

deci drumul căutat este: x1 x5 x3 x4 x9

Observaţia 1. Dacă graful are un circuit atunci se poate demonstra uşor că nu vom putea da valoare nici unui nod al acestuia şi dacă există vreun drum de la x1 la xn care trece prin unul din nodurile circuitului nu vom putea da valoare nici lui xn, cu toate că există drum de la x1 la xn.

Observaţia 2: Algoritmul necesită pentru memorare şi manipulare doar cunoaşterea, pentru fiecare nod, a nodurilor spre care "pleacă" arce din acesta şi valorile acestor arce, fiind mult mai uşor de aplicat sau implementat pe calculator. El are însă dezavantajul că se poate aplica doar în grafuri fără circuite.

C. Algoritmul Ford generalizat

Algoritmul lui Ford generalizat a fost creat cu scopul de a putea găsi drumul optim şi în grafurile care au circuite. Cu ajutorul lui se găseşte drumul de valoare optimă între două noduri fixate xi şi xj. Printr-o eventuală renumerotare a nodurilor putem presupune că nodul de la care porneşte drumul este x1, care va fi numit nod iniţial, iar nodul la care se termină este x n, numit nod final.

Algoritmul este:

Pasul 1. I se dă vârfului iniţial valoarea 0 (zero): w(x0) = 0 şi tuturor celelalte valoarea + (într-o problemă de minim) sau - (într-o problemă de maxim).

Pasul 2. În ordinea crescătoare a indicilor nodurilor se calculează pentru fiecare nod, pe bază fostelor valori, noile valori cu formula:

w*(xi) = în problemele de minim

sau w*(xi) = în problemele de maxim

Pasul 3. Se compară noile valori w*(xi) cu fostele valori w(xi): Dacă w*(xi) = w(xi) pentru orice nod xi atunci:

dacă w(xn) < (la problema de minim) sau w(xn) > - (la problema de maxim), valoarea nodului xn reprezintă valoarea drumului de valoare minimă(maximă) de la x1 la xn. Pentru găsirea acestui drum se porneşte înapoi de la nodul final xn şi se găsesc nodurile , , ..., care formează drumul căutat, unde = xn, = x1 şi fiecare alt indice ki+1 este cel pentru care:

w( ) + v( , ) = w( ) STOP dacă w(xn) = + (-) atunci nu există nici un drum de la x1 la xn. STOP

Dacă există cel puţin un nod pentru care w*(xi) < w(xi) se reia algoritmul de la pasul 2 pentru noile valori ale vârfurilor.

121

Page 122: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Observaţie: Algoritmul poate găsi drumul şi în grafuri cu circuite dar este evident mult mai lent decât cel simplificat. Pentru scurtarea duratei de execuţie se poate modifica algoritmul în sensul că o valoare nou calculată a unui vârf va fi folosită imediat ca atare la calculul noilor valori ale celorlalte, nu doar după ce se calculează noile valori ale tuturor vârfurilor.

D. Algoritmul lui Dijkstra

În algoritmul Ford simplificat, pentru a găsi valoarea nodului final, deci a drumului minim, plecăm de la nodul iniţial în toate direcţiile posibile, păstrând de fiecare dată toate nodurile analizate. Acest fapt duce la un consum inutil de timp, deoarece foarte multe din aceste noduri nu vor face parte din drumul optim. Pentru a elimina acest neajuns, algoritmul lui Dijkstra încearcă să păstreze, la fiecare iteraţie, mulţimea minimă de noduri care să le conţină pe toate cele care vor forma efectiv drumul optim. În plus, algoritmul se poate aplica şi în drumuri cu circuite. Ca un minus este faptul că se aplică doar la probleme de minim. Algoritmul are următorii paşi:

Pasul 1. I se dă vârfului iniţial valoarea 0 (zero): w(x0) = 0Pasul 2. Se construieşte mulţimea A formată din nodul iniţial: A = {x1}Pasul 3. Se analizează nodurile din afara mulţimii A.

Dacă există noduri în care se poate ajunge prin arce directe de la noduri din A (nu doar de la nodurile mulţimii A, ca la algoritmul lui Ford simplificat) se calculează pentru toate acestea:

w(xi) = în problemele de minim

dar, spre deosebire de algoritmul lui Ford simplificat, se adaugă la mulţimea A doar cel pentru care se obţine valoarea minimă, apoi se trece la pasul 4. Dacă nu există nici un nod de acest tip atunci nu există nici un drum de la x1 la xn.

STOP

Pasul 4. Se analizează mulţimea A: Dacă xn A atunci valoarea sa reprezintă valoarea drumului de valoare optimă de la

x1 la xn. Pentru găsirea acestui drum se porneşte înapoi de la nodul final xn şi se găsesc nodurile , , ..., care formează drumul căutat, unde = xn, = x1 şi fiecare alt indice ki+1 este cel pentru care:

w( ) + v( , ) = w( ) STOP Dacă xn A se reia algoritmul de la pasul 3.

Exemplu Vom aplica algoritmul la acelaşi graf folosit la ceilalţi algoritmi, pentru a putea face comparaţii:

pas1: w(x1) = 0 pas2: A = {x1}pas3: Nodurile în care se poate ajunge şi din x1: {x2, x5, x6}

w{x2) = min( w(x1) + v(x1,x2)) = 0 + 4 = 4w{x5) = min( w(x1) + v(x1,x5)) = 0 + 5 = 5w{x6) = min( w(x1) + v(x1,x6)) = 0 + 3 = 3min(w{x2),w{x5),w{x6)) = w{x6) = 3

pas4: x9 A

122

Page 123: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

pas3: A = {x1,x6} şi nodurile în care se poate ajunge prin arce directe din x1 sau x6 sunt: {x2,x5,x7}

w{x2) = min( w(x1) + v(x1,x2), w(x6) + v(x6,x2)) = min(0 + 4 , 3 + 8) = 4w{x5) = min( w(x1) + v(x1,x5)) = min(0 + 5) = 5w{x7) = min( w(x6) + v(x6,x7)) = min(3 + 5) = 8min(w{x2),w{x5),w{x7)) = w{x2) = 4

pas4: x9 Apas3: A = {x1,x2,x6} şi nodurile în care se poate ajunge prin arce directe din x1, x2 sau x6 sunt:

{x3,x4,x5,x7} w{x3) = min( w(x2) + v(x2,x3)) = min(4 + 7) = 11w{x4) = min( w(x2) + v(x2,x4)) = min(2 + 9) = 11w{x5) = min( w(x1) + v(x1,x5)) = min(0 + 5) = 5w{x7) = min( w(x6) + v(x6,x7)) = min(3 + 5) = 0min(w{x3),w{x4),w{x5),w{x7)) = w{x5) = 5

pas4: x9 Apas3: A = {x1,x2,x5,x6} şi nodurile în care se poate ajunge prin arce directe din x1, x2, x5, x6 şi x7

sunt: {x3,x4,x7,x8} w{x3) = min( w(x2) + v(x2,x3), w(x5) + v(x5,x3)) = min(4 + 7,5 + 2) = 7w{x4) = min( w(x2) + v(x2,x4), w(x5) + v(x5,x4)) = min(4 + 9,5 + 7) = 12w{x7) = min( w(x5) + v(x5,x7), w(x6) + v(x6,x7)) = min(5 + 2,3 + 5) = 7w{x8) = min( w(x5) + v(x5,x8)) = min(5 + 9) = 14min(w{x3),w{x4),w{x7),w{x8)) = w{x3) = w{x7) = 7

pas4: x9 Apas3: A = {x1,x2,x3,x5,x6,x7} şi nodurile în care se poate ajunge prin arce directe din x1, x2, x3, x5, x6,

şi x7 sunt: {x4,x8,x9} w{x4) = min( w(x2) + v(x2,x4), w(x3) + v(x3,x4),w(x5) + v(x5,x4)) = min(4 + 9,7 + 3,5 + 7) =10w{x8) = min( w(x5) + v(x5,x8), w(x7) + v(x7,x8)) = min(5 + 9,7 + 6) = 13w{x9) = min( w(x3) + v(x3,x9), w(x7) + v(x7,x9)) = min(7 + 9,7 + 8) = 15min(w{x4),w{x8),w{x9)) = w{x4) = 10

pas4: x9 Apas3: A = {x1,x2,x3,x4,x5,x6,x7} şi nodurile în care se poate ajunge prin arce directe din x1, x2, x3, x4,

x5, x6, şi x7 sunt: {x8,x9} w{x9) = min( w(x3) + v(x3,x9), w(x4) + v(x4,x9), w(x7) + v(x7,x9)) = min(7 + 9,10 + 3,7+8)=13w{x8) = min( w(x5) + v(x5,x8), w(x7) + v(x7,x8)) = min(5 + 9,7 + 6) = 13min(w{x8),w{x9)) = w{x8) = w{x9) = 13

pas4: x9 A şi urmează să găsim drumul care are lungimea 13.Avem succesiv:

w(x9) = w(x4) + v(x4,x9)w(x4) = w(x3) + v(x3,x4)w(x3) = w(x5) + v(x5,x3)w(x5) = w(x1) + v(x1,x5)

deci drumul căutat este: x1 x5 x3 x4 x9

123

Page 124: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

9. Reţele de transport

Într-o mare varietate de situaţii concrete din practica economică se pune problema deplasării unei cantităţi de materie, energie, informaţie etc, din anumite locuri, numite surse, în alte locuri, numite destinaţii. Pentru realizarea acestui transport se folosesc o serie de trasee, numite rute de legătură. Unităţile indivizibile ale cantităţii Q, care se deplasează de-a lungul rutelor între surse şi destinaţii, se numesc unităţi de flux, iar ansamblul rutelor, surselor, destinaţiilor şi, eventual, a altor puncte intermediare se numeşte reţea de transport.

Situaţia de mai sus poate fi reprezentată geometric printr-un graf finit, conex şi fără bucle.Pentru ca o astfel de problemă să fie suficient de complexă pentru a necesita un studiu

matematic riguros, trebuie ca fiecare sursă să poată aproviziona mai multe destinaţii şi orice destinaţie să poată fi aprovizionată de mai multe surse.

Aprovizionarea destinaţiilor se poate face direct de la surse sau prin intermediul altor puncte, numite puncte intermediare. În cazul cel mai general pot exista de asemenea legături între surse şi/sau legături între destinaţii.

Aşa cum s-a văzut şi la problema de transport, situaţia de mai sus este un cadru extrem de larg, care permite existenţa unui număr foarte mare de tipuri de probleme posibile, diferite între ele prin informaţiile suplimentare pe care le avem despre reţea şi prin obiectivele urmărite.

Una dintre acestea este problema determinării cantităţii maxime (minime) care poate fi transportată de la surse la destinaţii, în situaţia în care sursele dispun de cantităţi limitate (inferior sau superior), destinaţiile au un necesar sau o putere de absorbţie limitată inferior sau superior iar pe fiecare rută se poate transporta doar o cantitate cuprinsă între anumite limite.

Pentru studiul matematic al acestei situaţii vom da definiţiile matematice ale obiectelor implicate în problemă şi ipotezele modelului.

Definiţia 1: Se numeşte reţea de transport standard un graf finit, simplu, conex, fără bucle G = (X,U) care are următoarele proprietăţi:

1. Există şi este unic s a.î. , (din care doar "ies" arce), numit intrarea reţelei de transport;

2. Există şi este unic t a.î. = , (în care doar "intră" arce) numit ieşirea reţelei de transport;

3. S-a definit o funcţie c: U R+ care asociază fiecărui arc u un număr strict pozitiv cu numit capacitatea arcului.

Observaţie: Este clar că exemplele obişnuite au doar rareori o singură sursă şi o singură destinaţie. Totuşi, printr-o tehnică foarte simplă, orice reţea de transport se poate aduce la forma standard:

1. Dacă sunt mai multe surse se introduce un nod suplimentar din care "pleacă" câte un arc spre fiecare sursă (şi numai spre acestea), iar capacităţile acestor arce vor fi egale cu disponibilurile surselor corespunzătoare;

2. Dacă sunt mai multe destinaţii se introduce un nod suplimentar spre care "pleacă" câte un arc din fiecare destinaţie (şi numai din acestea), iar capacităţile acestor arce vor fi egale cu necesarurile destinaţiilor corespunzătoare;

Definiţia 2: Se numeşte flux într-o reţea de transport R = (X,U) o funcţie : U R+ care are următoarele proprietăţile:

P1. 0 u cu oricare ar fi u din U; valoarea u se numeşte flux al arcului u

P2. oricare ar fi i s,t (suma fluxurilor arcelor care "intră" într-un nod i

este egală cu suma fluxurilor arcelor care "ies" din acest nod, cu excepţia nodului iniţial şi al celui final.

124

Page 125: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Definiţia 3: Se numeşte valoare a fluxului suma fluxurilor arcelor care "pleacă" din nodul iniţial s şi se notează cu .

Observaţie: Se poate demonstra uşor că această valoare este egală şi cu suma fluxurilor arcelor care "intră" în nodul final t. În concluzie avem:

=

Valoarea fluxului reprezintă cantitatea care se transportă efectiv pe reţea de la surse la destinaţii.

Definiţia 4: Se numeşte flux de valoare maximă într-o reţea un flux în această reţea, cu proprietatea că, pentru orice alt flux ' pe această reţea, avem '.

Valoarea fluxului de valoare maximă reprezintă cea mai mare cantitate care se poate transporta efectiv pe reţea, de la surse la destinaţii.

Economic vorbind, ne interesează, referitor la o reţea, răspunsurile la următoarele întrebări:

1. Putem transporta întreaga cantitate necesară la destinaţii?2. Dacă da, cum transportăm efectiv această cantitate de la surse la destinaţii? 3. Dacă nu, din ce motiv nu putem realiza acest transport?4. Cum putem înlătura cu eforturi minime acest motiv?

Răspunsul la primele două întrebări se poate afla prin găsirea fluxului de valoare maximă şi compararea valorii lui cu suma necesarurilor destinaţiilor. În plus, valoarea acestuia pe un arc reprezintă cantitatea care trebuie transportată pe ruta respectivă, pentru a obţine această valoare a fluxului.

Răspunsul la ultimele două întrebări porneşte de la observaţia că cea mai mare cantitate care poate traversa reţeaua de la un cap la altul este egală cu dimensiunea celui mai îngust loc de trecere prin reţea. Dacă vrem, deci, să mărim fluxul va trebui să lărgim tocmai acest cel mai îngust loc de traversare al reţelei.

Pentru formalizarea consideraţiilor de mai sus vom introduce noţiunea de tăietură într-o reţea:

Definiţia 5: Dată o reţea de transport G(X,U) cu s = nodul iniţial şi t = nodul final, se numeşte tăietură în reţea o partiţie a mulţimii vârfurilor reţelei de transport, formată din două submulţimi V şi W (VW = , VW = X) astfel încât s V şi t W.

O tăietură poate fi privită, intuitiv, ca o secţiune a reţelei, care lasă nodul iniţial cu o submulţime din noduri într-o parte, nodul final cu restul nodurilor în cealaltă parte şi retează toate arcele care trec dintr-o parte în cealaltă.

A cunoaşte o tăietură este echivalent cu a cunoaşte care sunt elementele celor două mulţimi, V şi W, care formează partiţia.

Vom nota o tăietură prin T = (V,W), convenind ca mulţimea scrisă pe prima poziţie să conţină nodul iniţial s al reţelei iar cea scrisă pe a doua, nodul final t.

Definiţia 6: Se numeşte capacitate a unei tăieturi T = (V,W) într-o reţea de transport G(X,U), notată C(T), suma capacităţilor tuturor arcelor care au extremitatea iniţială în V şi cea finală în W.

C(T) =

Pentru a nu exista nici o ambiguitate, insistăm asupra faptului că se vor lua în considerare doar arcele care trec de la mulţimea ce conţine nodul iniţial spre mulţimea care conţine nodul final, adică în sensul normal de transport (surse destinaţie).

Definiţia 7: Se numeşte tăietură de valoare minimă într-o reţea o tăietură T în această reţea, cu proprietatea că, pentru orice altă tăietură T' în această reţea, avem C(T) C(T').

Următoarele teoreme fac legătura matematică dintre fluxurile unei reţele şi tăieturile sale:

125

Page 126: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Teorema 1. Dată o tăietură T = (V,W) şi un flux într-o reţea de transport avem:

= –

sau, altfel spus, valoarea unui flux oarecare este egală cu suma fluxurilor arcelor care trec de la V la W din care se scade suma fluxurilor arcelor care trec invers, de la W la V, oricare ar fi tăietura T = (V,W).

Demonstraţie: Avem succesiv:

= = + =

= + - = –

Corolar: Într-o reţea de transport valoarea oricărui flux este mai mică sau egală decât valoa-rea oricărei tăieturi.

Demonstraţie: Fie T o tăietură oarecare şi un flux oarecare. Avem succesiv:

= – = C(T)

Corolar: Într-o reţea de transport valoarea fluxului maxim este mai mică sau egală decât valoarea tăieturii minime.

Demonstraţia e evidentă. În plus, din cele de mai sus se vede că egalitatea are loc numai dacă, pentru tăietura minimă, există un flux pentru care toate arcele de la V la W sunt folosite la maxim (fluxul e egal cu capacitatea arcelor) iar pe toate arcele de la W la V nu se transportă nimic.

Teorema lui Ford-Fulkerson Dacă fluxul este maximal atunci există o tăietură de capacitate egală cu valoarea fluxului.

Demonstraţie: Fie un flux maximal. Introducem următorul procedeu de marcare a vârfurilor:

Pasul 1. Se marchează nodul iniţial s cu 0(zero);

Pasul 2. Pentru fiecare vârf marcat xi se marchează cu: [+xi] toate vârfurile nemarcate xj pentru care există arcul (xi,xj) şi (xi,xj) < c(xi,xj) (adica nodurile spre care mai e loc

pentru a se transporta ceva din xi); [–xi] toate vârfurile nemarcate xj pentru care există arcul (xj,xi) şi (xj,xi) > 0 (adică toate nodurile spre care pleacă deja

ceva din xi);

Pasul 3. Se repetă pasul 2 până nu mai poate fi marcat nici un vârf.

Dacă vârful final t ar fi marcat, atunci începând de la acesta, am putea construi lanţul , , ..., unde = s, = t şi marcajul

oricărui vârf este + sau – . Adăugând la fluxul fiecărui arc al lanţului de tipul ( , ) valoarea:

= min( , )

şi scăzând din fluxul fiecărui arc de tipul ( , ) aceeaşi valoare , obţinem un flux de valoare + , deci fluxul nu ar fi maximal.

126

Page 127: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În concluzie vârful t nu va fi marcat. Fie tăietura T = (V,W), unde V este formată din mulţimea nodurilor marcate iar W din cele nemarcate. În acest caz, pentru fiecare arc (xi,xj) care "traversează" tăietura avem:

dacă xi V atunci (xi,xj) = c(xi,xj) deoarece nodul xj nu e marcat dacă xi W atunci (xi,xj) = 0 deoarece nodul xi nu e marcat

În acest caz avem:

C(T) = = – =

şi teorema e demonstrată.

Teorema lui Ford-Fulkerson poate stabili doar valoarea fluxului maxim dar nu dă o metodă de găsire a acestuia. Pentru a rezolva problema găsirii fluxului de valoare maximă se poate folosi algoritmul lui Ford-Fulkerson.

Pentru expunerea acestuia vom introduce şi noţiunile de:

arc saturat = un arc pe care fluxul este egal cu capacitatea;

drum complet = un drum de la nodul iniţial s la nodul final t care conţine cel puţin un arc saturat;

flux complet = un flux pentru care orice drum de la nodul iniţial s la nodul final t este complet.

Algoritmul lui Ford-Fulkerson

ETAPA I Se determină un flux complet.

Pasul 1. Se numerotează nodurile reţelei de transport astfel încât x1 = s şi xn = t;

Pasul 2. Se asociază grafului fluxul nul (u = 0 pentru orice arc u din graf);

Pasul 3. În ordine lexicografică, se ia pe rând fiecare drum D de la nodul iniţial la cel final, se calculează valoarea D = şi se

adaugă la fluxul de pe fiecare arc al drumului. Arcul(arcele) unui drum D pentru care s-a obţinut valoarea minimă D va fi după această adăugare, în mod evident, saturat şi deci drumul D va fi complet.

După epuizarea tuturor drumurilor se obţine un flux complet, de valoare = . Deoarece alegerea drumurilor în ordine lexicografică nu

ţine cont de structura reţelei, aşa cum se poate vedea pe un exemplu, acest procedeu nu asigură întotdeauna găsirea fluxului maxim. Acest impediment poate fi depăşit fie prin găsirea unei ordini de parcurgere a tuturor drumurilor, care să dea pentru fiecare reţea fluxul maxim, în urma procedeului de mai sus, fie prin redistribuirea judicioasă a fluxului găsit la etapa I. A doua variantă este cea care se aplică la etapa II.

ETAPA II Se determină fluxul maxim

Pasul 4. Se marchează nodul iniţial s cu 0(zero);

Pasul 5. Pentru fiecare vârf marcat xi se marchează cu: [+xi] toate vârfurile nemarcate xj pentru care există arcul (xi,xj) şi (xi,xj) < c(xi,xj) (adica nodurile spre care mai e loc pentru a se

transporta ceva din xi); [–xi] toate vârfurile nemarcate xj pentru care există arcul (xj,xi) şi (xj,xi) > 0 (adică toate nodurile spre care pleacă deja ceva din

xi);

Pasul 6. Se repetă pasul 5 până este marcat nodul final sau până când nu mai poate fi marcat nici un vârf;

Pasul 7. Dacă nodul final a fost marcat atunci fluxul este maxim şi algoritmul se opreşte, în caz contrar trecându-se la pasul 8;

Pasul 8. Construim un lanţul L = , , ..., unde = s, = t şi marcajul oricărui vârf este + sau – . Se calculează:

L = min( , )

care se adaugă la fluxul fiecărui arc al lanţului de tipul ( , ) şi se scade din fluxul fiecărui arc de tipul ( , ).

Pasul 9. Se şterge marcajul şi se reia algoritmul de la pasul 4.

127

Page 128: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În final, tăietura de valoare minimă este cea în care V = mulţimea nodurilor marcate iar W = mulţimea nodurilor nemarcate.

Observaţia 1. Algoritmul nu asigură întotdeauna găsirea fluxului maxim, deoarece se poate ca creşterea fluxului la fiecare iteraţie să se facă cu cantităţi din ce în ce mai mici astfel încât suma lor să nu atingă niciodată marginea superioară dată de valoarea tăieturii minime, algoritmul având o infinitate de paşi. Teorema de mai jos dă o condiţie suficientă pentru ca algoritmul să se termine într-un număr finit de paşi:

Teoremă Dacă toate capacităţile rutelor reţelei sunt numere raţionale atunci algoritmul lui Ford-Fulkerson are un număr finit de paşi.

Demonstraţie Prin înmulţirea tuturor acestor capacităţi cu cel mai mic multiplu comun al numitorilor se obţine o reţea cu toate capacităţile numere naturale. Ţinând cont de formula de calcul, la fiecare iteraţie cantitatea adăugată va fi număr natural şi cum valoarea fluxului maxim este mărginită de capacitatea tăieturii minime Cmin, care este de asemenea număr natural, algoritmul va avea nevoie de cel mult Cmin paşi pentru a o atinge.

Observaţia 2. Teorema de mai sus asigură doar o limitare superioară a numărului de iteraţii ale algoritmului, faţă de capacitatea tăieturii minime. Această valoare poate fi însă, în anumite cazuri, foarte mare şi, dacă nu se iau precauţii suplimentare, algoritmul nu va da soluţia în timp util. Depăşirea acestei situaţii este asigurată de următoarea teoremă:

Teoremă Dacă la fiecare iteraţie se alege drumul (lanţul) de lungime minimă atunci algoritmul va avea cel mult mn iteraţii, unde n =

numărul de noduri iar m = numărul de muchii.

Observaţia 3. Există probleme în care se doreşte găsirea fluxului minim într-o reţea, valorile fluxului pe arce fiind limitate inferior de capacităţile acestora. În acest caz se aplică de asemenea algoritmul lui Ford-Fulkerson astfel:

Pasul 1. Se calculează M = maximul capacităţilor arcelor

Pasul 2. Se construieşte reţeaua R', care este fosta reţea, în care au fost modificate doar capacităţile arcelor, acestea devenind = M

– cu

Pasul 3. Se găseşte cu algoritmul Ford-Fulkerson fluxul , de valoare maximă, în această reţea

Pasul 4. Fluxul de valoare minimă în reţeaua iniţială va avea valorile ' = M –

Observaţia 4. Există şi alte tipuri de probleme asemănătoare celor de mai sus. Astfel, se poate pune problema:

găsirii capacităţilor minime ale arcelor cu care se poate asigura transportarea întregii cantităţi de la surse la destinaţii fluxului minim(maxim) într-o reţea în care capacităţile rutelor sunt limitate atât superior cât şi inferior; În cazul în care rutelor li se asociază şi costuri unitare de parcurgere, putem căuta fluxul maxim de cost minim;

128

Page 129: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

TEORIA ORDONANŢĂRII

O problemă de ordonanţare constă în stabilirea unei ordini de efectuare a operaţiilor (activităţilor) unui proiect, astfel ca interdependenţele dintre ele să fie respectate în cadrul resurselor disponibile şi durata totală de execuţie a acestuia să fie minimă.

Pentru a putea concretiza definiţia de mai sus, trebuie clarificate noţiunile de proiect, operaţii (activităţi) ale acestuia, interdependenţe între operaţii şi resursă a proiectului.

1. Prin proiect vom înţelege o acţiune de mare amploare sau un proces complex destinat atingerii unui scop bine precizat. La un proiect deosebim următoarele caracteristici:

un obiectiv, care poate fi un produs, o cantitate de informaţii sau un rezultat de natură organizatorică;

un ansamblu de activităţi (subacţiuni, subprocese, operaţii), corelate logic şi tehnologic, a căror realizare permite atingerea scopului propus;

un proces tehnologic prin care se precizează intercondiţionărilor între activităţi, interesând în special ordinea de execuţie a acestora.

Proiectele pot fi clasificate după natura lor în:

proiecte industriale şi proiecte de investiţii, prin care se obţine un produs material (de exemplu construcţia unei clădiri, pod, tunel, etc);

proiecte organizatorice al căror scop este de a obţine un rezultat de natură informaţională sau organizatorică (de exemplu un proiect de cercetare ştiinţifică).

Pentru a permite o analiză amănunţită a desfăşurării lui, o alegere a variantelor optime de execuţie şi un control continuu al evoluţiei sale, trebuie să descompunem proiectul în părţi componente la un nivel care să permită tratarea unitară a fiecărei părţi şi stabilirea conexiunilor între acestea. Aceste componente se numesc operaţii sau activităţi.

O activitate este o parte distinctă dintr-un proiect, un subproces precis determinat, care consumă timp şi resurse. Vom presupune în continuare că activităţile au următoarele proprietăţi:

fiecare activitate este indivizibilă (nu se mai descompune în subactivităţi); fiecare activitate are o durată cunoscută; o activitate, odată începută, nu mai poate fi întreruptă.

Dintre intercondiţionările (interdependenţele) dintre activităţi, ne interesează, în special, cele temporale, numite relaţii de precedenţă, care pot fi de trei tipuri:

1. de tip "terminare – început". Acest tip este cel mai frecvent întâlnit şi spunem că o activitate A precede activitatea B printr-o interdependenţă de tip "terminare – început" dacă activitatea B nu poate începe decât după un interval de timp tAB de la terminarea activităţii A. Acest interval poate fi egal şi cu zero, caz în care spunem că activitatea A precede direct activitatea B;

2. de tip "început – început". Acest tip este frecvent întâlnit şi spunem că o activitate A precede activitatea B printr-o interdependenţă de tip "început – început" dacă activitatea B nu poate începe decât după un interval de timp tAB de la începerea activităţii A. Acest interval poate fi chiar mai mare decât durata activităţii A, caz în care avem de fapt o dependenţă de tipul "terminare – început", putând chiar privi primul tip ca un caz particular al celui de-al doilea;

129

Page 130: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

3. de tip "terminare – terminare". Spunem că o activitate A precede activitatea B printr-o interdependenţă de tip "terminare – terminare" dacă activitatea B nu se poate termina decât după un interval de timp tAB de la terminarea activităţii A sau că activitatea A trebuie terminată cu cel puţin tAB unităţi de timp înaintea terminării activităţii B.

Prin durată totală de execuţie a unui proiect înţelegem intervalul de timp în care se efectuează toate activităţile acestuia, respectând toate interdependenţele dintre activităţi.

A programa un proiect înseamnă a stabili termenele de începere pentru fiecare activitate în parte, ţinând seama de restricţiile impuse de procesul tehnologic, duratele activităţilor şi resursele disponibile. Pentru un proiect dat, există un număr enorm de programări admisibile. Un interes deosebit prezintă programul optim, adică acel program care, pe de o parte, satisface restricţiile impuse iar, pe de altă parte, optimizează un anumit criteriu de eficienţă economică.

Criteriul de optimizare nu este acelaşi pentru toate proiectele, el este stabilit pentru fiecare caz în parte şi defineşte obiectivele majore ale conducerii proiectului. În funcţie de aceste obiective, criteriul poate fi durata totală minimă, costul total minim, folosirea cât mai uniformă a resurselor sau o sinteză a acestora. Deci, programul optim este acea desfăşurare a proiectului, precizată prin termenele de începere ale activităţilor, care conduce la o eficienţă maximă.

Deoarece, aşa cum se vede şi din cele spuse mai sus, situaţiile din practică ce necesită rezolvarea unei probleme de ordonanţare sunt foarte variate, s-au propus numeroase modele pentru rezolvarea lor. În continuare vor fi prezentate câteva dintre modelele cele mai frecvent utilizate în practică.

1. Modele de analiză a drumului critic (ADC)

Principiul analizei drumului critic constă în divizarea unui proiect (acţiuni complexe) în părţi componente, la un nivel care să permită corelarea logică şi tehnologică a acestora, adică să facă posibilă stabilirea interacţiunilor între părţile componente. Aceste părţi componente sunt activităţile acţiunii complexe.

La definirea listei de activităţi specialistul sau specialiştii care participă la această operaţie folosesc experienţa lor pentru a răspunde pentru fiecare activitate la întrebările: ”ce alte activităţi succed sau preced în mod necesar această activitate ?”; ”care este durata activităţii ?”. Ia naştere în acest fel un tabel care conţine activităţile proiectului, intercondiţionările între activităţi şi duratele acestora.

Un astfel de tabel trebuie să conţină cel puţin următoarele elemente:

activităţi: în această coloană se enumeră activităţile proiectului, fiind puse în evidenţă printr-o denumire sau printr-un simbol (codul activităţii);

condiţionări: se precizează, pentru fiecare activitate, activităţile imediat precedente, prin simbolurile lor; activităţile de start nu au activităţi precedente, în căsuţă fiind trecută o liniuţă;

durata: pentru fiecare activitate se precizează durata de execuţie, într-o anumită unitate de măsură. Durata unei activităţi este o constantă.

Modelele de analiză a drumului critic se bazează pe reprezentarea proiectului printr-un graf, elementele tabelului asociat acestuia fiind suficiente pentru a construi graful corespunzător.

În tabelul 1 este prezentat un proiect, activităţile fiind notate prin litere mari A, B, C, …. Activităţile A şi B sunt activităţile de început ale proiectului. Activitatea A este direct precedentă activităţii C. De asemenea, activitatea C este direct precedentă activităţilor E şi F.

130

Page 131: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Tabelul 1

Nr.crt.

Activităţile proiectului

Activităţile direct precedente

(condiţionări)Durate

1 A - 32 B - 23 C A 24 D B 65 E B 46 F C,D,E 47 G E 1

Există mai multe moduri de a reprezenta un proiect printr-un graf, cele mai cunoscute fiind prezentate mai jos:

A. Metoda CPM (Critical Path Method)

Metoda CPM este un procedeu de analiză a drumului critic în care singurul parametru analizat este timpul şi în reprezentarea graficului reţea se ţine seama de următoarele convenţii:

fiecărei activităţi i se asociază un segment orientat numit arc, definit prin capetele sale, astfel fiecare activitate identificându-se printr-un arc;

fiecărui arc i se asociază o valoare egală cu durata activităţii pe care o reprezintă; condiţionarea a două activităţi se reprezintă prin succesiunea a două arce adiacente.Nodurile grafului vor reprezenta momentele caracteristice ale proiectului, reprezentând

stadii de realizare a activităţilor (adică terminarea uneia sau mai multor activităţi şi/sau începerea uneia sau mai multor activităţi).

Procedeul CPM se bazează pe existenţa unei corespondenţe bipartide între elementele unui proiect (activităţi, evenimente) şi elementele unui graf (arce şi noduri). Se obţine o relaţie model-obiect, care pune în evidenţă particularităţile de o mare însemnătate practică, în special, proprietăţile de succesiune temporală.

Pentru reprezentarea corectă a proiectului (respectarea interdependenţelor, claritatea desenului etc), cât şi pentru o standardizare a reprezentării (pentru a putea fi înţeles şi de altcineva decât cel care l-a desenat) în desenarea grafului se respectă următoarele reguli:

1. fiecare activitate se reprezintă printr-un arc a cărui orientare indică, pentru activitate, desfăşurarea ei în timp;

2. un arc este limitat prin două noduri (reprezentate prin cerculeţe) care simbolizează momentele de început şi de sfârşit ale executării activităţii corespunzătoare;

3. lungimea fiecărui arc, în general, nu este proporţională cu lungimea activităţii;4. activităţile vor fi reprezentate prin arce de forma:

sau sau sau

sau sau sau

esenţială fiind porţiunea orizontală, pe care se vor trece informaţiile despre activitate, porţiunile oblice fiind la 45.

131

Page 132: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Lungimea şi înclinarea arcului au în vedere numai considerente grafice, pentru urmărirea uşoară a întregului graf.

5. deoarece respectarea tuturor regulilor nu se poate face doar cu arce care corespund doar activităţilor proiectului, vor exista şi arce care nu corespund nici unei activităţi, care vor fi reprezentate punctat şi care, pentru unitatea prezentării, vor fi numite activităţi fictive, ele neconsumând resurse şi având durata 0.

6. pentru reprezentarea unor dependenţe de tipul "terminare – început" în care tAB > 0, vom introduce nişte arce reprezentate prin linii duble, care corespund intervalului tAB, având semnificaţia unor aşteptări (în acest interval se "consumă" doar timp, nu şi resurse) şi care vor fi numite activităţi de aşteptare.

Dacă se presupune că o activitate A este precedentă activităţii B, în funcţie de tipul de interdependenţă, în graficul reţea arcele corespunzătoare activităţilor A şi B vor avea următoarea reprezentare:

sau (pentru tAB = 0)

7. în graf nu sunt admise circuite (existenţa unuia ar însemna că orice activitate a acestuia ar fi precedentă ei însuşi). Deoarece, pentru un proiect foarte mare graful va avea foarte multe arce, se poate întâmpla să creăm un circuit fără să ne dăm seama. Pentru a evita acest lucru, vom introduce o regulă mai uşor de respectat, care o implică pe cea dinainte:

8. nodurile vor fi numerotate, numerotarea făcându-se în aşa fel încât, pentru fiecare activitate, numărul nodului de început să fie mai mic decât numărul nodului de final al activităţii.

9. graful are un singur nod iniţial (semnificând evenimentul "începerea proiectului") şi un singur nod final (semnificând evenimentul "sfârşitul proiectului");

10. orice activitate trebuie să aibă cel puţin o activitate precedentă şi cel puţin una care îi succede, exceptând bineînţeles activităţile care încep din nodul iniţial al proiectului şi pe cele care se termină în nodul final al proiectului;

11. deşi există activităţi care se execută în paralel, care pot începe în acelaşi moment şi se pot termina în acelaşi moment, este interzis ca cele două arce corespunzătoare să aibă ambele extremităţi comune, altfel desenul care rezultă nu mai e graf. În desenul de mai jos se arată care este reprezentarea corectă, F fiind o activitate fictivă:

132

tAB

B

A

lBAFig. 8.9lBAFig. 8.8lBAB

Figura 1

A tAB B A B

terminare - început

tAB

A

B

început - început

terminare - terminare

A1 A2

Bsau

B1

B2

A

tABsau

tAB

Page 133: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

12. nu trebuie introduse dependenţe nereale (neprevăzute în tabelul de condiţionări). Astfel, dacă în tabelul de condiţionări vom avea situaţia:

Tabelul 2

ActivitateActivitate direct precedentă

(condiţionări)A -B -C A,BD A

atunci reprezentarea:

este incorectă, deoarece introduce condiţionarea, inexistentă în tabel, a activităţii D de activitatea B. Reprezentarea corectă este:

13. să se folosească, pe cât posibil, numărul minim de activităţi fictive, pentru a nu complica excesiv desenul. De exemplu acelaşi efect ca în figura 4 putea fi obţinut şi prin reprezentarea:

133

A

B

A

B

F A

B F

incorect corect

sau

Figura 2

A

B

C

D

Figura 3

A

B

C

D

Figura 4

A

B

C

D

Figura 5

Page 134: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

dar am fi folosit o activitate fictivă în plus, inutilă.

Dacă două sau mai multe activităţi au aceeaşi activitate direct precedentă, de exemplu A precede B şi A precede C, reprezentarea în graful-reţea va avea forma din figura 5 (a). Arcele B şi C simbolizează două activităţi care nu pot începe decât după ce s-a terminat activitatea A. Activităţile B şi C pot fi executate simultan. De asemenea execuţia unei activităţi poate depinde de terminarea mai multor activităţi direct precedente, de exemplu A precede C şi B precede C ca în figura 5 (b). În această situaţie, activitatea C nu poate începe, logic, decât după ce s-au terminat activităţile A şi B.

Proiectul dat prin tabelul 1, poate fi modelat, în reprezentarea activităţilor pe arce, prin graful-reţea din figura 6, numerotat secvenţial.

Numerotarea nodurilor permite să identificăm fiecare activitate prin perechea de noduri (de început şi sfârşit). De exemplu, activitatea D se identifică prin perechea (3,5), activitatea E prin (3,4) etc.

Analiza proiectului

Analiza proiectului constă în determinarea duratei minime a proiectului, determinarea intervalelor de timp în care poate avea loc fiecare din evenimentele reprezentate prin noduri şi determinarea intervalelor de timp în care pot fi plasate activităţile, astfel încât să se respecte toate condiţionările şi să obţinem timpul minim de execuţie al proiectului.

Este evident că durata minimă de execuţie a proiectului este cel mai mic interval de timp în care pot fi efectuate toate succesiunile de activităţi din proiect. O succesiune de activităţi corespunde unui drum în graf şi deci, durata minimă de execuţie a proiectului este cel mai mic minorant al lungimilor tuturor drumurilor din graf. Cum există un număr finit de drumuri, mulţimea lungimilor acestora este finită şi cel mai mic minorant al ei este maximul acesteia, adică durata drumului de lungime maximă. Deoarece graful nu are circuite şi are un singur punct iniţial şi unul

134

Figura 6

C

A

BC

A

B

(a) (b)

1

2

3

5

4

6

Figura 7

A

B

C

D

E

F

G

Page 135: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

singur final, este evident că cele mai lungi drumuri vor fi cele dintre nodul iniţial şi cel final. Avem deci de găsit drumul de lungime maximă dintr-un graf fără circuite, caz în care se poate aplica algoritmul lui Ford simplificat.

Conform acestui algoritm, se calculează pentru fiecare nod al grafului:

A. Termenul cel mai devreme de realizare a evenimentului j. Acest termen reprezintă momentul cel mai devreme posibil de terminare a tuturor activităţilor care converg în nodul j şi este egal cu valoarea maximă a drumurilor dintre evenimentul iniţial 1 şi evenimentul j, pe care îl vom nota cu = dmax(1,j). Termenul cel mai devreme (numit şi termenul minimal) a evenimentului j, conform algoritmului lui Ford în grafuri G = (X,) fără circuite, se calculează astfel:

=

Vom presupune, fără a restrânge generalitatea, că t1 = 0, pentru evenimentul iniţial 1 şi, în acest caz, termenul de realizare cel mai devreme al unui eveniment oarecare j va fi dat de formula:

=

Această formulă permite calculul termenelor pentru evenimente, prin parcurgerea grafului-reţea în sens-înainte (parcursul înainte) şi durata minimă de execuţie a proiectului va fi termenul cel mai devreme de realizare al nodului final al grafului.

Acest termen devine termenul impus de realizare al proiectului şi el nu mai poate fi depăşit, depăşirea lui însemnând doar o proastă organizare a lucrului.

B. Termenul cel mai târziu de realizare a evenimentului i. Acest termen (numit şi termen maximal) reprezintă momentul cel mai târziu posibil de începere a activităţilor care pleacă din nodul i astfel încât toate succesiunile de activităţi dintre acest nod şi nodul final să mai poată fi efectuate până la termenul final de realizare al proiectului şi este egal cu diferenţa între durata minimă de realizare a proiectului şi durata drumului de lungime maximă dintre evenimentul i şi n. Acest termen se notează cu = dmax(1,n) – dmax(i,n).

Pentru calcularea acestor momente trebuie calculate duratele drumurilor de la nodul final spre nodul iniţial şi apoi scăzute din durata minimă a proiectului, calcul care va fi făcut aplicând, de asemenea, algoritmul lui Ford simplificat.

Conform celor de mai sus, termenul cel mai târziu de realizare a unui eveniment, cu respectarea duratei minime a proiectului (notată T= dmax(1,n) = ), este dată de formula:

=

Intervalul [ , ] se numeşte intervalul de fluctuaţie al evenimentului j. Evenimentul j se poate plasa în orice moment al acestui interval de fluctuaţie, fără a periclita durata totală a întregului proiect. Acest interval îl putem defini ca pe o rezervă de timp R(j) a evenimentului j:

R(j) = –

135

Page 136: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Dacă R(j) = 0 evenimentul j trebuie să aibă loc la termenul fixat = , pentru că orice întârziere va duce la prelungirea duratei întregului proiect.

Exemplu: Vom arăta în continuare modul cum se calculează aceste termene, pentru proiectul dat de tabelul 1. Pentru o bună organizare a datelor vom reprezenta fiecare eveniment al proiectului printr-un cerc divizat în trei părţi (vezi figura 7), în care vom trece în partea de sus numărul evenimentului i, în partea inferioară-stânga termenul cel mai devreme de realizare şi în partea

inferioară-dreapta termenul cel mai târziu de realizare .

În figura 8 a fost desenat graful asociat proiectului.

Primul eveniment se consideră a avea loc la momentul t1 = 0. Calculul termenelor minimale porneşte de la primul eveniment, având în vedere că se poate calcula termenul cel mai devreme al unui eveniment numai dacă acesta a fost calculat pentru toate evenimentele precedente:

= 0

= max ( + d 12) = max (0 + 3) = 3

= max ( + d13) = max (0,2) = 2

= max ( + d34) = max (2 + 4) = 6

= max ( + d25, + d35, + d45) = max (3 + 2, 2 + 6, 6 + 0) = 8

= max ( + d46, + d56) = max (6 + 1, 8 + 4) = 12

136

mjt

Figura 8

2

3 6

1

0 0

3

2 2

5

8 8

4

6 8

6

12 12

A

3

B

2

C

2

E

4

D

6

F

4

G

1

Figura 9

i

Page 137: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Calculul termenelor maximale se face considerând durata minimă a proiectului T = 12, începând de la ultimul nod, având în vedere că se poate calcula termenul cel mai târziu al unui eveniment numai dacă acesta a fost calculat pentru toate evenimentele succesoare. Pentru aceasta se ia = 12 şi se calculează:

= min ( – d56) = min (12 – 4) = 8

= min ( – d46, - d45) = min (12 – 1, 8 – 0) = 8

= min ( – d35, – d34) = min (8 – 6, 8 – 4) = 2

= min ( – d25) = min (8 – 2) = 6

= min ( – d12, – d13) = min (6 – 3, 2 – 2) = 0

Următoarea etapă în analiza proiectului constă în aflarea termenelor între care trebuie să se efectueze activităţile, calculându-se în acest sens, pentru fiecare activitate (i,j), momentul minim de începere: (i,j), momentul minim de terminare: (i,j) , momentul maxim de

începere: (i,j) şi momentul maxim de terminare: (i,j).

1. Momentul (termenul minim) de începere cel mai devreme a activităţii ( i.j). Deoarece o activitate nu poate începe decât după ce se termină toate cele precedente, momentul minim de începere este evident termenul cel mai devreme de realizare al evenimentului i:

(i,j) =

2. Momentul (termenul minim) de terminare cel mai devreme a activităţii (i.j) este egal cu suma dintre termenul cel mai devreme de începere şi durata activităţii:

(i,j) = (i,j) + dij

3. Momentul (termenul maxim) de terminare cel mai târziu a activităţii (i,j) este definit de termenul cel mai târziu de realizare a evenimentului j:

(i,j) =

4. Momentul (termenul maxim) de începere cel mai târziu a activităţii (i,j) este egal cu diferenţa dintre termenul cel mai târziu de terminare şi durata activităţii:

(i,j) = (i,j) - dij

Aceste momente spun doar în ce interval poate fi situată o activitate, dar nu spun care este diferenţa între o plasare posibilă sau alta. În acest scop vom calcula, pentru fiecare activitate (i,j), următoarele repere de timp:

a) Rezerva totală de timp (Rt) a unei activităţi (i,j), ca fiind diferenţa dintre termenul cel mai târziu de terminare şi termenul cel mai devreme de terminare:

Rt(i,j) = – = – – dij = – – dij

137

Page 138: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Rezerva totală de timp a unei activităţi (i,j) reprezintă timpul maxim cu care se poate amâna sau se poate mări durata activităţii, fără depăşirea termenului final de execuţie al proiectului.

b) Rezerva liberă de timp (Rl) a unei activităţi (i,j):

Rl(i,j) = – – dij

Diferenţa între rezerva totală şi rezerva liberă:

Rt(i,j) - Rl(i,j) = –

pentru o activitate (i,j), este egală cu fluctuaţia evenimentului final j al activităţii. De aici rezultă că rezerva liberă a unei activităţi (i,j) reprezintă intervalul de timp ca parte a rezervei totale de timp, cu care o activitate se poate amâna (sau se poate mări durata activităţii) fără a perturba termenul cel mai devreme de realizare al termenului final j (adică fără a consuma din rezervele de timp ale activităţilor care o succed).

c) Rezerva independentă de timp (Rs) a unei activităţi (i,j):

Ri(i,j) = – – dij

Rezerva independentă de timp a unei activităţi (i,j) există dacă R i(i,j) > 0 şi dacă există, ea reprezintă timpul maxim cu care se poate amâna (sau se poate mări durata activităţii) astfel încât să nu perturbe fluctuaţia evenimentelor de la extremităţilor activităţii. Dacă Ri(i,j) 0 atunci activitatea (i,j) nu are rezervă independentă de timp. Rezerva inde-pendentă de timp arată intervalul în care poate fi plasată o activitate fără a consuma nici din rezervele de timp ale activităţilor ce o preced, nici din cele ale celor ce o succed.

Diferenţa între rezerva liberă şi rezerva independentă:

Rl(i,j) – Ri(i,j) = –

este egală cu fluctuaţia evenimentului i (cu care începe activitatea).

Intervalele de fluctuaţie pentru evenimente şi rezervele libere de timp pentru activităţi caracterizează elasticitatea unui program de ordonanţare. Cu cât acestea sunt mai mici cu atât programul este mai rigid.

Drumul (drumurile) a cărui lungime este egală cu durata minimă de execuţie a proiectului se numeşte drum critic. Este clar că orice amânare a unei activităţi a acestuia duce la lungirea duratei de execuţie a proiectului, deci nici una din aceste activităţi nu dispune de rezervă de timp. Activităţile de pe drumul critic şi prin extensie, orice activitate care nu dispune de rezervă de timp, se numeşte activitate critică.

O activitate critică (i,j) este caracterizată prin:

= , = , – = dij

De aici rezultă că, pentru o activitate critică, avem:

Rt(i,j) = Rl(i,j) = Ri(i,j) = 0

Termenele calculate pentru evenimente sunt utile în primul rând pentru calculul termenelor pentru activităţi, dar ele servesc şi pentru evaluarea stadiului de realizare al proiectului, verificând dacă termenele de realizare pentru fiecare eveniment se află în intervalul de fluctuaţie.

138

Page 139: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În practică este nevoie de mai multe ori să ne interesăm de activităţi, în ceea ce priveşte stadiul realizării acestora, decât de evenimente. În primul rând interesează activităţile critice (cele situate de-a lungul drumului critic), ele trebuind să fie realizate la datele calculate. Aceste activităţi nu dispun de rezervă de timp, deci trebuie să înceapă şi să se termine exact la termenele calculate, pentru a nu depăşi termenul de finalizare al proiectului. Celelalte activităţi pot fi amânate cu rezervele lor de timp, dar consumarea acestora face ca proiectul să devină rigid.

Pentru activităţile proiectului analizat mai sus, termenele activităţilor şi rezervele de timp sunt date în tabelul de mai jos:

Tabelul 3Activităţi Cond. Durate Rt Rl Ri

A = (1,2) - 3 0 3 3 6 3 0 0B = (1,3) - 2 0 2 0 2 0 0 0C = (2,4) A 2 3 5 6 8 3 3 0D = (3,4) B 6 2 8 2 8 0 0 0E = (3,5) B 4 2 6 4 8 2 0 0F = (4,6) C,D,E 4 8 12 8 12 0 0 0G = (5,6) E 1 6 7 11 12 5 5 0

Conform tabelului 3 proiectul este foarte rigid, nici o activitate nedispunând de rezervă

independentă de timp.Examinarea reperelor de timp permite cunoaşterea posibilităţilor pe care le are un

management de program de a interveni la timp pentru executarea la termenele calculate a tuturor activităţilor unui proiect dat. Durata proiectului calculată prin această metodă nu poate fi redusă prin micşorarea rezervelor.

Printre avantajele metodei CPM (şi în general ale analizei drumului critic) evidenţiem: determinarea cu anticipaţie a duratei de execuţie a proiectelor complexe; pe timpul desfăşurării proiectului permite un control permanent al execuţiei acestuia; explicitarea legăturilor logice şi tehnologice dintre activităţi; evidenţierea activităţilor critice; evidenţierea activităţilor necritice, care dispun de rezerve de timp; permite efectuarea de actualizări periodice fără a reface graful; oferă posibilitatea de a efectua calcule de optimizare a duratei unui proiect, după criteriul

costului; reprezintă o metodă operativă şi raţională care permite programarea în timp a activităţilor

ţinând seama de resurse.

Dezavantajele acestei metode sunt în principal:

greutatea desenării grafului, fiind foarte greu de reprezentat exact toate condiţionările din proiect, în condiţiile în care acestea sunt foarte complicate iar desenul trebuie să fie destul de simplu şi clar încât să fie inteligibil şi deci util;

chiar dacă se respectă toate regulile de construire a grafului, rămân încă destule variante de desenare astfel încât două reprezentări ale aceluiaşi proiect făcute de doi indivizi pot să nu semene aproape deloc.

din cele de mai sus se vede că reprezentarea este greoaie chiar dacă toate condiţionările ar fi de tipul "terminare – început" cu precedenţă directă, încercarea de a forma graful în condiţiile existenţei şi a celorlalte tipuri de interdependenţe ducând foarte repede la un desen extrem de încărcat şi greu de folosit.

B. Metoda MPM (Metro Potenţial Method)

139

Page 140: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Metoda potenţialelor sau MPM este un procedeu de analiză a drumului critic care încearcă să depăşească neajunsurile metodei CPM, în care, ca şi în metoda CPM, se analizează parametrul timp, diferenţa constând în felul în care se construieşte graful reţea:

fiecărei activităţi A i se asociază un nod A; fiecărui nod i se asociază o valoare dată de durata activităţii pe care o reprezintă; condiţionarea (succesiunea) a două activităţi se reprezintă printr-un arc, orientat de la o

activitate la alta; fiecărui arc dintre două activităţi A şi B i se asociază un număr reprezentând valoarea

tAB.

Reprezentarea activitate – nod permite ca între activităţile unui proiect să avem mai multe tipuri de legături de precedenţă. Cele trei tipuri de precedenţă se vor reprezenta astfel:

1) Legătura "terminare - început" se reprezintă grafic în fig. 10.

Activitatea B începe după ce s-a terminat activitatea A. Putem considera că arcul (A,B) are el însuşi o durată tAB 0, ceea ce înseamnă că activitatea B poate începe după ce s-au scurs tAB unităţi de timp de la terminarea activităţii A. În general, nu toate legăturile "terminare - început" au durată, cele mai multe având durata tAB = 0.

2) Legătura "început-început" poate fi utilizată pentru a arăta simultaneitatea executării a două activităţi prin puncte de început. Aceasta este reprezentată în fig. 11.

Activitatea B poate începe cu cel puţin tAB unităţi de timp după începerea activităţii A. Dacă tAB = 0 activităţile pot începe în acelaşi timp.

3) Legătura "terminare – terminare" poate fi, de asemenea, utilizată pentru a indica simultaneitatea executării a două activităţi prin punctul de terminare (fig. 12). Această

legătură arată că activitatea A este terminată cu cel puţin tAB unităţi de timp înaintea terminării activităţii B.

140

A BtAB

Fig. 10

A

BtAB

Fig. 11

A

B

tAB

Fig. 12

Page 141: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Vom numi activitate de bază orice activitate folosită ca bază de referinţă, faţă de care este format timpul de aşteptare. În figura 11 activitatea de bază este A iar în figura 12 activitatea de bază este B. Durata de aşteptare tAB se raportează la activitatea de bază.

Proiectului dat prin tabelul 2 îi corespunde în reprezentarea activitate nod graful-reţea din figura 13.

Tabelul 4Activităţi Dependenţe

A -B -C AD BE CF CG F,DH E,F

Graficul reţea în reprezentarea activitate – nod nu conţine activităţi fictive, eventual cu excepţia unei activităţi de începere şi/sau a unei activităţi de terminare a proiectului, necesare în cazul în care există mai multe activităţi care nu sunt condiţionate de nici o activitate a proiectului (acestea devenind toate noduri iniţiale ale proiectului, deşi trebuie să fie un singur nod iniţial) sau, analog, în cazul în care sunt mai multe activităţi care nu au nici o activitate succesoare.

Între un graf reţea în reprezentarea activitate – nod şi un graf reţea în reprezentarea activitate – arc se pot defini următoarele corespondenţe (vezi figura 14):

MPM CPM

Calculul termenelor şi rezervelor

141

s

A

B

C

D

E

F

H

G

t

Fig. 13

A BtAB = 0

A BtAB > 0

A

BtAB

A

B

tAB

A B

A tAB B

A1 A2

BtAB

B1

B2

A

tAB

Figura 14

Page 142: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Calcularea termenelor în reprezentarea activitate – nod este asemănătoare cu cea din reprezentarea activitate – arc. În această reprezentare un nod al grafului se reprezintă printr-un dreptunghi compartimentat în şase părţi, care vor fi completate astfel:

centru – sus: numărul sau simbolul activităţii: i, A, … centru – jos: durata activităţii: d(i), d(A), … stânga – sus: termenul cel mai devreme al începerii activităţii: , , …

dreapta – sus: termenul cel mai devreme al terminării activităţii: , , …

stânga – jos: termenul cel mai târziu al începerii activităţii: , , …

dreapta – jos: termenul cel mai târziu al terminării activităţii: , , …

Aceste elemente pot fi urmărite în figura 15.

Ne vom referi în continuare la cazul a două activităţi A şi B, considerând cele trei tipuri de relaţii între activităţi. Pentru uşurinţa calculului vom urmări figurile 16 şi 17.

1. Termenul cel mai devreme al începerii activităţii B, conform figurii 16 va fi dat de formula:

unde activitatea A este precedentă activităţii B şi tAB este o durată de aşteptare 0.2. Termenul cel mai devreme al terminării activităţii B este egal cu suma dintre

termenul cel mai devreme al începerii activităţii B şi durata sa:

142

îmtîMt

tmt

tMt

A

d(A)

îmtîMt

tmt

tMt

B

d(B)

Figura 16

îmtîMt

tmt

tMt

A

d(A)

îmtîMt

tmt

tMt

A

d(A)

tAB

tAB

tAB

îmt

îMt

tmt

tMt

i

d(i)îMt

tmt

tMt

A

d(A)

Figura 15

îmt

Page 143: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

= + d(B)

3. Termenul cel mai târziu de terminare a activităţii A, conform figurii 17 va fi dat de formula:

unde activitatea A este direct precedentă activităţii B şi tAB este o durată de aşteptare 0.

4. Termenul cel mai târziu de începere al activităţii A este egal cu diferenţa dintre termenul cel mai târziu de terminare al activităţii A şi durata sa:

= – d(A)

Pentru fiecare activitate vom defini următoarele rezerve de timp:

a) Rezerva totală de timp (Rt) a unei activităţi A:

Rt(A) = – = – – d(A)

b) Rezerva liberă de timp (Rl) a unei activităţi A:

Rl(A) =

unde activitatea A este direct precedentă activităţii B.Modul cum se calculează termenele şi rezervele de timp pentru activităţile unui proiect prin

metoda MPM este pus în evidenţă de exemplul dat prin tabelul 1 şi reprezentat în figura 18.

143

îmtîMt

tmt

tMt

A

d(A)

îmtîMt

tmt

tMt

B

d(B)

Figura 17

îmtîMt

tmt

tMt

B

d(B)

îmtîMt

tmt

tMt

B

d(B)

tAB

tAB

tAB

s

0

0

0

0

0

A

3

0

3

3

6

B

2

0

0

2

2

C

2

3

6

5

8

D

6

2

2

8

8

E

4

2

4

6

8

F

4

8

8

12

12

G

1

6

11

7

12

t

0

12

12

12

12

Figura 18

Page 144: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Din acest graf reţea se formează tabelul 5 cu termenele şi rezervele de timp pentru activităţile proiectului:

Tabelul 5Activităţi Cond. Durate Rt Rl

A - 3 0 3 3 6 3 0B - 2 0 2 0 2 0 0C A 2 3 5 6 8 3 3D B 6 2 8 2 8 0 0E B 4 2 6 4 8 2 0F C,D,E 4 8 12 8 12 0 0G E 1 6 7 11 12 5 5

2. Grafuri ADC integrate şi condensate

În practica managementului acţiunilor economice complexe prim metodele ADC, nivelul de detaliere în activităţi a proiectelor depinde de scopul urmărit (coordonare de ansamblu sau conducere de detaliu), de timpul avut la dispoziţie pentru elaborarea grafurilor, de specialiştii disponibili etc.

Dacă graful sumar care se întocmeşte pentru orientarea generală a echipei de conducere a acţiunii (să-l numim graf director) este totdeauna necesar, când se face trecerea la conducerea de amănunt, sunt tot atât de necesare grafurilor detaliate.

În general grafurile detaliate se fac pe părţi din acţiunea complexă, numite obiective sau obiecte. Astfel, dacă ne referim de exemplul la un proiect de construcţii, graful corespunzător întregului proiect poate fi divizat în grafuri pe obiect, cum ar fi:

graful proiectării; graful organizării şantierului; unul sau mai multe grafuri pentru lucrări de drumuri; mai multe grafuri pentru lucrări de reţele (apă, canal abur, electrice etc.); mai multe grafuri pentru lucrări de construcţii-montaj (câte unul pentru fiecare hală sau

clădire) etc.

Grafurile pe obiect au individualitatea lor şi se tratează ca entităţi de programare distincte; în acelaşi timp însă, trebuie gândită coordonarea lor în cadrul acţiunii complexe din care fac parte. În acest scop, după întocmirea separată a grafurilor pe obiect apare necesitatea asamblării lor într-un tot, care constituie graful integrat.

În continuare vom arăta cum se obţine graful integrat al mai multor grafuri pe obiect. 144

Page 145: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Fie P1, P2,...,Pn mai multe grafuri ADC pe obiect şi presupunem că între activităţile diferitelor grafe există condiţionări logice şi tehnologice. Presupunem de asemenea că fiecare din grafuri are o numărătoare proprie a evenimentelor, cunoscută.

Pasul 1. se desenează cele n grafuri alăturat;Pasul 2. se reprezintă prin activităţi fictive (în reprezentarea activitate-arc) sau săgeţi (în

reprezentarea activitate-nod) toate condiţionările logice şi tehnologice existente între activităţi din proiecte diferite;

Pasul 3. se introduce un nod suplimentar fictiv I (activitate fictivă) care va fi legat la toate nodurile (activităţile) iniţiale ale grafurilor P1, P2, ..., Pn prin activităţi fictive (săgeţi), acesta fiind nodul (activitatea) iniţial al grafului integrat;

Pasul 4. se introduce un alt nod suplimentar fictiv F (activitate fictivă), de care se vor lega toate nodurile (activităţile) finale ale grafelor specificate, prin activităţi fictive (săgeţi), acesta fiind nodul (activitatea) final al grafului integrat.

Pasul 5. se găseşte drumul critic în graful integrat şi se recalculează termenele activităţilor întregului graf.

De exemplu, dacă grafurilele din figurile 13 şi 18 ar fi grafurile obiect ale unui proiect complex, atunci integrarea acestora ar avea reprezentarea din figura de mai jos:

Am reprezentat cu linii groase drumurile critice din cele două grafuri şi cu linii dublate condiţionările dintre activităţi din grafuri diferite.

Dacă la nivelul conducerii operative interesează construirea şi urmărirea grafurilor pe obiecte, deci determinarea drumului critic pentru fiecare graf în parte, la nivelul coordonării întregii acţiuni va fi necesară cunoaşterea drumului critic pentru graful integrat. Acesta, de regulă, diferă de fiecare din drumurile critice ale grafelor componente şi de aceea trebuie calculat separat.

Graful integrat trebuie să respecte toate condiţiile de construcţie enumerate (de exemplu, prin legăturile integrate să nu apară circuite).

În foarte multe cazuri din practică, numărul activităţilor care rezultă prin integrarea mai multor grafuri pe obiect este considerabil, putând ajunge la zeci de mii, ceea ce depăşeşte de multe ori posibilitatea de a le calcula şi urmări, chiar cu ajutorul calculatoarelor puternice.

145

s

0

00

00

A

3

03

36

B

2

00

22

C

2

36

58

D

6

22

88

E

4

24

68

F

4

88

1212

G1

611

712

t

0

1212

1212

s

A

B

C

D

E

F

H

G

t

I F

Page 146: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Cu atât mai puţin ar fi posibilă cuprinderea sintetică a unui asemenea graf la nivelul conducerii întregii acţiuni.

Pentru aceste motive a fost necesară găsirea unui mijloc de a reduce graful integrat, păstrându-i în acelaşi timp principalele caracteristici. Această operaţie poartă numele de condensare iar rezultatul aplicării acesteia asupra unui graf se numeşte graf condensat. Condensarea se face după următoarele reguli:

a) graful condensat va conţine în mod obligatoriu nodurile de început şi de sfârşit ale grafului şi ale fiecăruia din grafurile pe obiect componente;

b) el va cuprinde de asemenea toate activităţile şi nodurile de pe drumul critic al grafului integrat;

c) în graful condensat se vor reprezenta toate activităţile considerate deosebit de importante şi care trebuie explicitate;

d) din restul activităţilor nu se reprezintă decât activităţi sau grupe de activităţi strict necesare pentru a nu lăsa activităţi sau noduri "în aer", adică nelegate de alte activităţi precedente sau succesoare.

În cazul grafurilor mari şi foarte mari, condensarea poate face ca numărul activităţilor păstrate să reprezinte 10-20% din totalul celor din graful integrat, ceea ce reprezintă, evident, o simplificare considerabilă.

Legătura dintre diferitele grafuri care alcătuiesc graful integrat se poate evidenţia cu ajutorul aşa-numitelor noduri de conexiune. Acestea au, în primul rând, rolul de a permite desenarea grafurilor cu foarte multe activităţi, care nu încap pe a singură foaie de hârtie, prin împărţirea unui astfel de graf în mai multe componente, ce se reprezintă pe câte o foaie, legătura dintre ele făcându-se prin nodurile de conexiune. Un exemplu este dat în desenul de mai jos, în care nodurile de conexiune au fost desenate prin puncte negre

Fiecare graf se poate calcula independent, ţinând seama, atât la calculul termenelor minime

cât şi la cel al termenelor maxime, de influenţa termenelor din celălalt graf, cu ajutorul arcelor care intră în nodurile de conexiune.

3. Actualizarea grafurilor ADC

În practica realizării acţiunilor complexe, sunt numeroase cazurile când estimările iniţiale de durată ale activităţilor nu pot fi respectate. Apare astfel necesitatea ca, periodic, să se examineze modul cum se realizează termenele calculate, în scopul punerii în evidenţă a eventualelor întârzieri

146

Page 147: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

şi a luării măsurilor de recuperare a acestora.Această activitate poartă numele de actualizare a grafurilor iar noul graf se numeşte graf

actualizat.Tehnica de actualizare a grafurilor poate fi descrisă succint astfel:

la data actualizării se examinează care activităţi sunt terminate, care sunt în curs de execuţie şi care sunt încă neîncepute. Cu această ocazie se reestimează duratele acţiunilor în curs de execuţie precum şi cele neîncepute;

se trece la recalcularea noilor termene considerând duratele activităţilor executate ca având durate nule, iar pentru restul activităţilor duratele reestimate;

se calculează noul drum critic; fie durata sa Dca. Dacă momentul în care se face actualizarea este Ta, noua estimare a duratei proiectului va fi Da = Ta + Dca. Dacă această nouă durată este egală sau mai mică decât cea iniţială (D), nu sunt necesare măsuri speciale, deoarece lucrarea se va încadra în termenul stabilit. Dacă, dimpotrivă, D a > D se vor lua măsuri de scurtare a lui Dca, prin suplimentări sau redistribuiri de resurse.

Tehnica de actualizare descrisă mai sus este, evident, valabilă când la momentul Ta al actualizării, succesiunile şi condiţionările dintre activităţile neexecutate nu se modifică. Când apar astfel de modificări, odată cu reevaluarea datelor, se stabilesc noile condiţionări, operând modificările respective în graful refăcut. Întrucât, însă, astfel de situaţii sunt relativ rare, procedeul de actualizare a grafelor rămâne foarte operativ, incomparabil mai simplu decât reactualizarea grafelor tip Gantt, care necesită de fiecare dată refacerea integrală a graficului.

4. Optimizări cost-durată

Estimarea duratelor acţiunilor complexe (problema ADC/TIMP) prin metodele expuse mai înainte, deşi reprezintă o problemă deosebit de importantă din punct de vedere economic, nu este nici pe departe singurul aspect care poate fi urmărit cu ajutorul acestor metode.

O altă problemă în care pot fi utilizate instrumentele ADC sunt cele de analiză a costului execuţiei acţiunilor complexe, în funcţie de durata de execuţie a acesteia.

Este evident că, în funcţie de pregătirea celor care efectuează lucrarea, de tehnologia folosită, de oportunităţile momentului etc, durata de execuţie a unei acţiuni complexe poate varia, existând totuşi o durată minimă posibilă Tmin şi una maximă Tmax acceptabilă.

Evident, durata lucrării are numeroase implicaţii asupra costului, drept pentru care prezintă un deosebit interes determinarea acelei durate de execuţie, intermediare lui Tmin şi Tmax, căreia îi corespunde costul minim. În cele ce urmează vom prezenta succint această problemă.

Costurile unei activităţi

Vom considera că o activitate oarecare A, din cadrul unei acţiuni complexe, se poate efectua cu o durată dA care, din punct de vedere tehnologic, se situează între o limită inferioară dmin şi una superioară dmax (dmin dA dmax).

De asemenea, este evident că mărimea costului activităţii (cA) depinde de durata de execuţie a acesteia: cA = f(dA). Vom numi durată normală de execuţie a activităţii durata care corespunde costului minim de execuţie. O durată de execuţie mai mare decât durata normală este dezavantajoasă atât din punct de vedere al timpului cât şi al costului, astfel încât durata normală va fi şi durata maximă acceptabilă de execuţie dmax. O durată mai scurtă de execuţie va costa mai mult din cauza eforturilor de urgentare (efectuarea de ore suplimentare care sunt plătite mai scump, aplicarea unor tehnologii mai costisitoare, folosirea unor substanţe mai scumpe etc), dar activitatea se va termina mai repede, cu beneficiile corespunzătoare. Dependenţa funcţională între cA şi dA

147

Page 148: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

poate fi foarte complexă (pătratică, neliniară, concavă sau chiar discretă), însă ea poate fi aproximată cu o funcţie liniară. S-a observat de asemenea că, în general, costul este descrescător în funcţie de durată pe intervalul (dmin, dmax). Ţinând cont de toate acestea, rezultă că graficul lui cA = f(dA) este o dreaptă, ca în figura de mai jos:

Din ipoteza liniarităţii costului rezultă că, costul urgentării cu o zi al proiectului este acelaşi, indiferent de a câta zi este vorba; acest cost este costul unitar al urgentării. El se calculează cu

formula evidentă: cu = şi cu ajutorul lui se poate calcula foarte uşor costul oricărei

durate intermediare lui dmin şi dmax, cu una din formulele:

c(dA) = cmin + cu (dA – dmin) sau c(dA) = cmax – cu (dmax – dA)

Costul total al acţiunilor complexe

În general, costul total al unei acţiuni complexe are o structură identică cu acela al unei investiţii, fiind format din:

costuri directe (CD) - legate nemijlocit de realizarea activităţilor (costul resurselor, manoperei etc.);

costuri indirecte (CI) - cheltuieli generale, salariile personalului tehnic-administrativ, alte cheltuieli de regie;

costul imobilizării fondurilor CIF - pe perioada când investiţia nu intră în funcţiune.

Dintre aceste costuri, costurile directe se calculează pentru fiecare activitate în parte, depind de durata de execuţie a fiecărei activităţi şi vor face obiectul analizei cost-durată, iar ultimele două reprezintă cheltuieli globale ale proiectului şi depind doar de durata totală a proiectului.

Toate aceste costuri sunt evident, funcţie de durata de execuţie a investiţiei. În figura de mai jos se reprezintă forma generală a graficului funcţiilor CD, CI, CIF, în care t reprezintă durata totală a investiţiei.

148

cmax

cmin

dmin dmax

cA

dA

CT minim

CT

CI

CIF

CD

C

t

tmin tmax topt

Page 149: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Curba CT reprezintă graficul funcţiei – sumă a celor trei funcţii luate în considerare iar pe grafic se poate citi timpul optim de execuţie al proiectului (topt) corespunzător costului total minim (min CT).

În practică, CI şi CIF se calculează la nivel contabil şi nu pun probleme deosebite de calcul, iar CD se găseşte în urma unei analize cost-durată. CD(t) reprezintă costul direct minim cu care se poate obţine o durată t [tmin, tmax] de execuţie a întregului proiect. Aflarea funcţiei CD(t) presupune aflarea valorilor costului direct pentru orice durată de efectuare a proiectului, ceea ce în cazul discret presupune un volum de calcule imens iar în cazul continuu este imposibil. De aceea se calculează de fapt doar un număr suficient de valori, celelalte obţinându-se prin interpolarea acestora. Cum se vede din desen, graficul lui CT are forma aproximativă a unei parabole, deci numărul minim de valori pentru găsirea acesteia este 3, din care două sunt calculate pentru tmin şi tmax, acestea fiind cele mai importante.

În cele ce urmează vom prezenta un algoritm pentru determinarea aproximativă a lui topt folosind 3 puncte ca suport al interpolării.

Algoritm pentru determinarea aproximativă a duratei optime de execuţie a unei acţiuni complexe

Etapa 1

Se construieşte graful asociat proiectului conform condiţionărilor dintre activităţi.

Etapa 2

Se găseşte durata minimă de execuţie şi drumul critic pentru cazul în care toate activităţile ar fi efectuate la durata lor maximă (normală). Acesta este durata maximă acceptabilă de execuţie a proiectului (tmax)şi îi corespunde costul direct minim (CD(tmax) = CDmin) de execuţie a proiectului, care se calculează adunând costurile minime ale tuturor activităţilor.

Etapa 3

Se găseşte durata minimă de execuţie şi drumul critic pentru cazul în care toate activităţile ar fi efectuate la durata lor minimă. Aceasta este durata minimă posibilă de realizare a proiectului (tmin). Totuşi, costul aferent acestei durate nu este suma costurilor maxime ale activităţilor, deoarece este evident că nu are sens să fie urgentate la maxim activităţile necritice (cele care dispun de rezervă de timp), aceasta neaducâd decât o scumpire inutilă a proiectului.

Etapa 3

Se relaxează activităţile necritice, în limita rezervei disponibile de timp a fiecăreia, alegându-se acea variantă de relaxare care duce la cea mai mare scădere a costului total, apoi se calculează costul proiectului pentru această variantă. Acesta este CD(tmin) = CDmax.

Etapa 4

În acest moment avem deja două puncte ale graficului. Pentru al găsi pe al treilea alegem o

149

Page 150: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

durată intermediară t între tmin şi tmax, relaxăm activităţile drumului critic obţinut la etapa 2 cu un total de t – tmin zile şi apoi şi celelalte activităţi în limita rezervelor de timp disponibile ale lor, alegând acea variantă de relaxare care duce la cea mai mare scădere a costului total, în final calculându-se costul proiectului pentru această variantă. Rezultă al treilea punct al graficului, de coordonate (t, CD(t)).

Etapa 5

Se găseşte ecuaţia parabolei care trece prin cele trei puncte, se adună expresiile funcţiilor corespunzătoare celor trei tipuri de costuri obţinându-se funcţia costului total şi se găseşte cu ajutorul derivatei întâi valoarea topt în care se obţine minimul acesteia.

Etapa 6

Se găseşte, ca la etapa 4, costul direct minim cu care se poate executa proiectul în timpul topt

care se adună la valorile celorlalte două costuri în topt şi rezultă CTmin.

5. Graficul Gantt

Un instrument de mare utilitate în analiza drumului critic îl constituie graficul calendaristic tip Gantt, apărut la începutul secolului. Graficul (diagramă) Gantt exprimă la scara timpului, prin linii orizontale, durata activităţilor, şi prin linii întrerupte (de exemplu) rezervele de timp. Graficul Gantt presupune divizarea acţiunii complexe pe care o reprezintă proiectul, în părţi componente (activităţi) şi eşalonarea acestora în timp, ţinând seama de succesiunea tehnologică, termene impuse, resurse etc.

Dacă este întocmit în urma unei analize temeinice, graficul Gantt oferă informaţii bogate şi extrem de sugestiv prezentate, privind desfăşurarea lucrărilor, precum şi o serie de informaţii derivate, privind eşalonarea resurselor (forţă de muncă, materii prime, materiale, fonduri băneşti). Aceste avantaje scad dacă, datorită fie amplorii acţiunii considerate, fie nivelului de detaliere dorit, numărul activităţilor ce compun graficul Gantt creşte mult, ajungând la câteva sute sau mii.

Graficul Gantt exprimă la scara timpului un program de ordonanţare. Astfel, avem graficul Gantt la termenele cele mai devreme sau graficul Gantt la termenele cele mai târzii.

Pentru trasarea graficului Gantt se procedează astfel:

Pasul 1. Se ordonează activităţile proiectului crescător conform unui program de ordonanţare.

Pasul 2. Se reprezintă activităţile prin bare orizontale de lungimi egale cu duratele activităţilor (axa orizontală fiind axa timpului), fiecare bară începând de la momentul de începere al activităţii corespunzătoare;

Pasul 3. Se marchează fiecare activitate prin simbolul asociat sau prin numerele de ordine ale evenimentelor de la extremităţi deasupra barei corespunzătoare.

Pasul 4. Rezerva totală de timp se figurează cu linie întreruptă, adiacent cu durata activităţii, după sau înainte (după tipul programului).

Pasul 5. Pe fiecare linie orizontală se obişnuieşte să se figureze o singură activitate, iar aceasta să fie imprimată de sus în jos şi de la stânga la dreapta.

Pentru proiectul dat prin tabelul 1 şi calculat prin grafurile din fig. 9 sau fig. 18 se desenează graficul Gantt din fig. 19, corespunzător programului de ordonanţare minorant (activităţile încep la termenele cele mai devreme) şi din fig. 20, corespunzător programului de ordonanţare majorant (activităţile încep la termenele cele mai târzii).

150

Page 151: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

151

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

(1,2) = A

(1,3) = B

(3,4) = D

(3,5) = E

(2,4) = C

(5,6) = G

(4,6) = F

A

B

D

E

C

G

F

Figura 19

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

(1,2) = A A

(1,3) = BB

(3,4) = D D

(3,5) = E E

(2,4) = C C

(5,6) = G G

F

Figura 20

Page 152: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

6. Analiza resurselor

Dacă din punct de vedere al condiţionărilor de tip precedenţă (temporale) existenţa activităţilor paralele este corectă din punct de vedere logic, putând exista oricâte activităţi care se desfăşoară în acelaşi timp, dacă nu se intercondiţionează între ele, neexistând nici o diferenţă între zilele proiectului, din punct de vedere practic, este clar că o zi în care se desfăşoară în acelaşi timp 10 activităţi este mult mai intensă din punct de vedere al organizării şi aprovizionării cu resurse decât o zi în care se desfăşoară o singură activitate. Deci, dacă se ţine cont doar de condiţionările temporale pot apărea dezechilibre foarte mari în desfăşurarea proiectului şi/sau pot apărea zile în care necesarul de resurse ar fi mai mare decât disponibilul acestora.

Din cele spuse mai sus, se desprinde faptul că există cel puţin două probleme importante legate de resursele unui proiect:

problema alocării resurselor, în care se încearcă programarea activităţilor în aşa fel încât în nici o zi să nu se depăşească disponibilul din nici o resursă;

problema nivelării resurselor, în care se încearcă programarea activităţilor în aşa fel încât în toate zilele să se folosească cam aceiaşi cantitate de resurse (sau, altfel spus, suma variaţiilor de la o zi la alta să fie minimă).

Trebuie făcută şi observaţia că analiza în cele două probleme de mai sus se face în general pentru resurse refolosibile, care nu se consumă în timp, adică cele care, după terminarea activităţii la care au fost alocate, se pot folosi la altă activitate. Resursele de acest tip sunt în principal forţa de muncă şi maşinile şi utilajele.

Pentru expunerea celor două probleme este necesară şi introducerea noţiunilor de intensitate a unei resurse şi de profil a unei resurse.

1. Intensitatea unei resurse este cantitatea necesară sau disponibilă din acea resursa, la un moment dat;

2. Profilul unei resurse este diagrama în care se figurează variaţia intensităţii unei resurse în timp.

A. Problema alocării resurselor

Soluţia acestei probleme se poate obţine, în cazurile foarte simple (puţine activităţi şi puţine resurse), prin glisarea activităţilor în limitele termenelor lor maxime de începere şi de terminare, aceasta făcându-se cel mai uşor pe baza graficului Gantt.

Dar, în practică, problemele au de cele mai multe ori sute sau chiar mii de activităţi şi este necesară luarea în considerare a zeci de resurse importante, ceea ce face imposibilă rezolvarea problemei prin mijloace empirice, de tipul încercărilor de a glisa activităţile "după ochi" şi obligă la căutarea unor metode riguroase, programabile pe calculator.

Formularea riguros-matematică a problemei alocării resurselor conduce la modele de dimensiuni şi complexităţi foarte mari, imposibil de rezolvat chiar cu calculatoarele cele mai puternice.

Din aceste motive se utilizează procedee heuristice, care, fără a da întotdeauna soluţia optimă, oferă soluţii cel puţin satisfăcătoare.

În cele ce urmează vom examina unele aspecte ale folosirii procedeelor heuristice de rezolvare a problemelor de alocare a resurselor.

Mersul operaţiilor este, în general următorul:

* În prezentarea noastră ne referim la rezolvarea mintală a problemelor, evident însă că toate operaţiile se transferă corespunzător sistemelor de calcul (de altfel mintal nu se pot rezolva decât probleme foarte mici, cu caracter de exemplu).

152

Page 153: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

a) se rezolvă problema ADC - timp, construindu-se graful corespunzător acţiunii complexe considerate şi se calculează termenele activităţilor, rezervele şi drumul critic;

b) se încearcă plasarea tuturor activităţilor la momentul cel mai devreme de începere şi se trasează profilul disponibilului resurselor considerate;

c) începând cu activităţile care încep la termenul minim de începere zero şi apoi în ordinea crescătoare a termenelor minime de începere, se examinează posibilitatea de a programa aceste activităţi, astfel ca să nu apară depăşiri ale necesarului faţa de disponibil, pentru nici a resursă;

d) când se ajunge în situaţia ca, la un anumit moment să apară o astfel de depăşire, se încearcă rezolvarea ei prin operaţii de "amânare" a unora din activităţi (evident, nu întotdeauna acest procedeu dă rezultate: este posibil ca necesarul dintr-o resursă, pentru o anumită activitate, să depăşească el singur disponibilul, caz în care, evident, problema alocării nu are soluţii;

e) când, la un anumit moment, apar necesităţi de amânare şi operaţia de amânare poate fi aplicată la două sau mai multe activităţi care încep la acelaşi termen, se introduce o regulă de prioritate, care permite să se stabilească, care anume dintre activităţi se programează şi care se amână: teoria şi practica drumului critic menţionează următoarele criterii de amânare folosite de diverşi autori: Prioritatea după rezerva totală cea mai mică (se amână activitatea cu rezerva cea mai

mare de timp); Prioritatea după durata cea mai mică; Prioritatea după termenul minim de începere (se preferă activitatea cu termenul cel

mai devreme de începere cel mai mic); Prioritatea după termenul maxim de începere (se preferă activitatea cu termenul cel

mai târziu de începere cel mai mic); Prioritatea după termenul maxim de terminare (se preferă activitate cu termenul cel

mai târziu de terminare cel mai mic); Prioritatea după intervalul corespunzător activităţii (se preferă activitatea cu

termenul cel mai devreme de terminare minim). Prioritate după cantitatea din resurse consumată (se preferă activitatea care consumă

cel mai mult din resurse), etcNu se poate vorbi despre a concluzie generală privind valabilitatea unora sau altora dintre

criteriile de amânare deoarece, în anumite cazuri, apare eficientă folosirea unuia dintre ele, în alte cazuri a altuia etc.

f) pentru fiecare activitate care s-a decis să fie amânată se încearcă plasarea ei la primul moment posibil, acesta fiind primul moment când se disponibilizează din resurse, adică primul moment când se termină una din resursele în curs de desfăşurare;

g) pentru fiecare activitate amânată se analizează toate activităţile care o succed şi, dacă este nevoie, se amână şi acestea, încât să se respecte toate intercondiţionările existente (în fapt, se face reactualizarea grafului);

h) Se reia procedeul, de la primul moment la care ar putea să înceapă o activitate neplanificată încă, până când toate activităţile sunt programate şi toate resurse1e a1ocate nu depăşesc disponibilul; în multe cazuri sunt necesare amânări care conduc chiar la depăşirea termenului final al proiectului calculat în faza ADC-timp; ca urmare, în aceste cazuri, noţiunea de drum critic suferă o modificare, devenind echivalentul duratei minime în care poate fi executată o acţiune complexă în limita resurselor disponibile.

În general, procedeele heuristice de rezolvare a problemei alocării resurselor iau în considerare durate fixe pentru activităţi şi nu admit întreruperea acestora. Există însă şi procedee care recomandă scurtarea (lungirea) duratelor după nevoie, prin alocare suplimentară, sau retragere de resurse, precum şi posibilitatea de a întrerupe anumite activităţi.

B. Problema nivelării resurselor

După cum am arătat, această problemă constă în planificarea activităţilor cu limitarea

153

Page 154: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

termenului final de execuţie a acţiunii complexe, astfel încât profilul necesarului resurselor să fie cât mai uniform.

Există mai multe moduri de a exprima obiectivul uniformizării profilului necesarului, putându-se urmări:

minimizarea sumei variaţiilor absolute ale profilului; minimizarea sumei creşterilor; minimizarea deviaţiilor absolute de la medie; minimizarea valorii maxime; minimizarea variaţiei maxime; minimizarea sumei pătratelor diferenţelor între profilul necesarului şi un profil ideal (de

obicei o linie paralelă cu axa timpului) etc.

Utilizând criteriul minimizării sumei pătratelor diferenţelor, Burgens şi Killebrew au elaborat un algoritm de nivelare pentru o singură resursă, ale cărui operaţii sunt următoarele:

a) Se întocmeşte graficul-reţea şi se calculează drumul critic;b) Se programează activităţile la termenul minim de începere, se întocmeşte profilul

necesarului şi se calculează suma pătratelor diferenţelor (pe fiecare unitate de timp) între profilul necesarului şi profilul disponibilului;

c) Începând de la sfârşitul graficului-reţea se ia prima activitate care dispune de rezervă şi se găseşte poziţia cea mai avantajoasă posibilă a ei, din punct de vedere al criteriului enunţat; când sunt mai multe poziţii egal avantajoase se alege cea mai din dreapta;

d) Se trece la următoarea activitate, spre început, care dispune de rezervă şi se procedează la fel şi tot aşa, pentru toate activităţile;

e) Se calculează valoarea criteriului corespunzător noii planificări obţinute, apoi se aplică din nou algoritmul de la pasul c, până nu mai sunt posibile îmbunătăţiri.

În cazul problemelor de nivelare după mai multe resurse este posibilă adaptarea algoritmului Burgess-Killebraw după cum urmează:

se ierarhizează importanţa relativă a resurselor stabilindu-se nişte coeficienţi de pondere; se începe aplicarea algoritmului, urmărindu-se simultan pentru toate rezervele efectul

deplasării unei activităţi în limita intervalului ei aferent; se pot ivi următoarele cazuri:1. deplasarea unei activităţi îmbunătăţeşte valoarea criteriului pentru toate resursele

considerate; în acest caz nu se face nici un calcul, deplasarea efectuându-se cât mai avantajos;

2. deplasarea unei activităţi îmbunătăţeşte valoarea criteriului pentru o parte din resurse şi o înrăutăţeşte pentru altele din ele; în acest caz se urmăreşte acea poziţie a activităţilor care face ca suma sumei pătratelor diferenţelor pentru fiecare resursă, ponderată cu coeficienţii de pondere stabiliţi, să fie minimă.

154

Page 155: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

7. Metoda PERT

Metodele CPM şi MPM analizate anterior furnizează, aşa cum s-a văzut, informaţii care sunt utile în procesul de conducere, însă ele nu ţin seama de posibilele variaţii ale duratelor de execuţie ale activităţilor.

Metoda PERT încearcă să corecteze acest lucru. În acest scop metoda permite calcularea timpului mediu de terminare a unui proiect, identificarea activităţilor critice, precum şi estimarea probabilităţilor de realizare a termenelor planificate. Pentru că în practică, în foarte multe programe din domeniul cercetării şi dezvoltării, duratele activităţilor sunt insuficient cunoscute sau chiar incerte prin considerarea conceptelor statistice, duratele activităţilor sunt considerate variabile aleatoare caracterizate prin media şi dispersia lor.

Metoda PERT porneşte de la următoarele considerente:

a) Pentru fiecare activitate (i,j) se estimează trei durate: durata optimistă (aij), care este considerată durata minimă de execuţie pentru

activitate, în condiţii generale normale de execuţie; durata cea mai probabilă (mij) ca fiind estimaţia cu cea mai mare şansă de realizare

în condiţii normale; durata pesimistă (bij) ca fiind durata maximă de realizare a activităţii, atunci când

există împrejurările cele mai defavorabile de execuţie.Un graf reţea înzestrat cu cele trei tipuri de durate pentru activităţile sale este numit reţea PERT.

b) Durata fiecărei activităţi a proiectului are o distribuţie . Se propune distribuţia beta pentru că aceasta satisface condiţii care au un suport practic: intersectează axa abciselor în două puncte aij şi bij, care corespund duratei minime şi

duratei maxime; este unimodală, adică are o singură valoare maximă, care corespunde duratei cele

mai probabile mij. valoarea bij – aij este intervalul de variaţie a distribuţiei şi poate indica gradul de

împrăştiere a duratelor posibile.c) Durata medie de execuţie ( ) a unei activităţi (i,j) este dată de formula:

=

d) Dispersia duratei de execuţie ( ) a activităţii (i,j) se calculează cu formula:

=

Dispersia este o măsură a gradului de nesiguranţă în estimarea duratei activităţii (i,j); o valoare mare a dispersiei înseamnă o mare nesiguranţă în privinţa duratei sale de execuţie.

e) Durata totală a proiectului este o variabilă aleatoare cu distribuţie normală având media şi dispersia:

unde Dcrit reprezintă mulţimea tuturor arcelor grafului care sunt pe drumul critic.

155

Page 156: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

f) Probabilitatea de realizare a duratei planificate Tplan a unui proiect se determină calculând, mai întâi, factorul de probabilitate z, după relaţia:

z =

şi apoi se deduce din tabelul valorilor funcţiei Laplace probabilitatea p( Tplan).g) Graful trebuie să conţină un număr suficient de mare de activităţi pentru a se întruni toate

condiţiile aplicării teoremei limită centrală iar duratele activităţilor să fie variabile aleatoare independente. Se recomandă, de asemenea, să nu existe mai multe drumuri critice.

Metoda PERT se utilizează, în general, pentru descrierea unui proiect atât pe reţele CPM cât şi MPM.

Algoritmul pentru calcularea unui program PERT este următorul:

Pasul 1. Se calculează durata medie a fiecărei activităţi din reţeaua PERT, utilizând relaţiile de la punctul c);

Pasul 2. Se calculează termenele activităţilor reţelei PERT, considerând duratele activităţilor deterministe şi egale cu mediile lor, utilizând una din metodele CPM sau MPM;

Pasul 3. Se calculează dispersia duratei fiecărei activităţi cu formula de la punctul d);Pasul 4. Se calculează durata totală de execuţie a întregului proiect ( ) şi dispersia ( ) cu

formulele de la punctul e);Pasul 5. Se determină probabilitatea de realizare a duratei planificate a proiectului după relaţia de

la punctul f) folosind tabelul funcţiei Laplace;Pasul 6. Se face analiza proiectului, conform probabilităţilor de realizare a duratei a proiectului:

dacă p( Tplan) este mai mică decât 0,25 există un mare risc ca proiectul să nu se realizeze la termenul planificat şi este necesară revizuirea duratelor de execuţie ale activităţilor în sensul urgentării acestora;

dacă p( Tplan) 0,5 programarea este justă; dacă p( Tplan) este mai mare decât 0,6, programarea utilizează excesiv de multe

resursePasul 7. Dacă se doreşte să se urmărească anumite activităţi (i,j) pentru care sunt date termenele

planificate de execuţie Tij, atunci se calculează probabilităţile ca fiecare activitate să fie executată la termenul planificat utilizând relaţia:

zij =

şi tabelul valorilor funcţiei lui Laplace. dacă pij(tî Tij) < 0,6 atunci trebuie luate măsuri de urgentare a executării activităţii

(i,j) în vederea realizării ei în termenul planificat; dacă pij(tî Tij) 0,6 activitatea (i,j) se execută în termenul planificat.

Exemplu: Fie G un graf reţea definit de elementele din tabelul 8.7 în care, pentru fiecare activitate, sunt definite trei estimări ale duratei (în săptămâni) corespunzătoare duratelor a ij, mij, bij. Se rezolvă reţeaua PERT ştiind că Tplanificat = 24 săptămâni:

tabelul 8.7Durate

156

Page 157: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Activităţi Condiţionări Durata medie

a m b

A – 2 5 8 5 0 7B – 2 5 8 5 0 5 1,00C B 1 2 3 2 5 7 0,11D A 2 3 4 3 5 13,16E A 1 3 5 3 5 11,33F A,C 3 6 10 6,16 7 14,50G A,C 4 6 7 5,83 7 12,83 0,25H A,C 3 4 6 4,16 7 16,66I D 1 2 3 2 8 15,16J I 3 5 6 4,83 10 19,99K F 2 4 5 3,83 13,16 18,33L G 2 4 5 3,83 12,83 16,66 0,25M E 4 6 11 6,50 8 17,83N M 4 5 7 5,16 14,50 22,99Q K 2 5 6 4,66 15,99 22,99R L,H 5 6 9 6,33 16,66 22,99 0,44S J 2 3 4 3 14,83 22,99

Rezolvarea este dată în acelaşi tabel, din care se observă că activităţile critice (fără rezervă de timp) sunt B, C, G, L şi R iar după efectuarea calculelor obţinem:

tn = 22,99 săptămâni = 1,00 + 0,11 + 0,25 + 0,25 + 0,44 = 2,05

Z = = 0,70

Din tabelul cu valorile funcţiei Laplace găsim, corespunzător valorii 0,70, probabilitatea 0,758. Avem, astfel, o situaţie în care se face risipă de resurse, deci este necesar să se redefinească duratele în vederea obţinerii unei planificări juste.

157

Page 158: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

GESTIUNEA STOCURILOR

1. Introducere în problematica stocurilor

1.1. Stocurile într-un sistem de producţie

În activitatea curentă a agenţilor economici apar probleme operative de producţie, de planificare sau proiectare, care se cer rezolvate în aşa fel încât ele să corespundă unui anumit scop, de exemplu: un program de producţie realizat cu beneficii cât mai mari, cu cheltuieli cât mai mici sau într-un timp cât mai scurt etc.

Pornind de la anumite date cunoscute, caracteristice procesului economic, respectiv: beneficii unitare, coeficienţi tehnologici, disponibil de resurse, cheltuieli unitare, consumuri specifice etc., se pot formula probleme care să ţină seama de scopul agenţilor economici atunci când porneşte procesul tehnologic.

Teoria stocurilor a apărut din necesitatea asigurării unei aprovizionări ritmice şi cu cheltuieli minime a stocurilor de materii prime şi materiale în procesul de producţie, sau a stocurilor de produse finite şi bunuri de larg consum în activitatea de desfacere a mărfurilor.

STOCURILE reprezintă cantităţi de resurse materiale sau produse (finite sau într-un stadiu oarecare de fabricaţie) acumulate în depozitele de aprovizionare ale unităţilor economice într-un anumit volum şi o anumită structură, pe o perioadă de timp determinată, în vederea unei utilizări ulterioare.

Pe perioada respectivă resursele materiale sunt disponibile, dar nu sunt utilizate, deci sunt neactive, scoase din circuitul economic, sau care prelungesc acest circuit (aspect considerat negativ).

Stocul este o rezervă de material destinat să satisfacă cererea beneficiarilor, aceştia identificându-se, după caz, fie unei clientele (stoc de produse finite), fie unui serviciu de fabricaţie (stocuri de materii prime sau de semifabricate), fie unui serviciu de întreţinere (articole de consum curent sau piese de schimb), fie unui serviciu de după vânzare (piese detaşate).

Tratarea procesului de stocare ca proces “obiectiv necesar” se impune, nu numai ca urmare a naturii economice a acestuia, ci şi pentru că realizarea lui atrage cheltuieli apreciabile, concretizate în afectarea unor importante spaţii de depozitare-păstrare, de utilaje pentru transport-depozitare, de fonduri financiare etc.

Deşi diferite, procesele de stocare au totuşi o serie de caracteristici comune, dintre care esenţială este acumularea unor bunuri în scopul satisfacerii cererii viitoare. O problemă de teoria stocurilor există doar atunci când cantitatea resurselor poate fi controlată şi există cel puţin o componentă a costului total care scade pe măsură ce cantitatea stocată creşte.

Evoluţia nivelului stocului este interesantă din două puncte de vedere: a) din punctul de vedere al producătorului, care este preocupat de valoarea medie a

nivelului stocului, deoarece această valoare permite cunoaşterea imobilizării totale a stocului şi scopul producătorului va fi reducerea imobilizării la valoarea sa minimă;

b) din punctul de vedere al beneficiarului, care dorind să fie satisfăcut imediat, apreciază că trebuie să evite, în măsura posibilităţilor, rupturile de stoc. Obiectivul beneficiarului va fi reducerea la minim a riscului de ruptură de stocuri.

Aceste două puncte de vedere sunt contradictorii: riscurile de ruptură de stocuri nu sunt reduse decât dacă imobilizările sunt foarte mari. Este deci necesar să se stabilească un echilibru, obiectivul conducerii stocului constând în căutarea acestui echilibru.

158

Page 159: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

1.2. Importanţa stocurilor în procesul de producţie

Procesul de producţie propriu-zis este supus în mod aleator unei sume de perturbaţii cum ar fi: instabilitatea personalului, prezenţa rebuturilor, existenţa timpilor morţi datoraţi defectării utilajelor etc.

În felul acesta, producţia devine un rezultat aleator al unei combinaţii de fenomene care au loc în conformitate cu legile probabilităţii. Nici un proces de producţie nu e fiabil dacă este supus direct acţiunii perturbatoare a parametrilor ce apar în mod aleator. Este deci absolut necesar de a elimina aceste influenţe directe, adică să se deconecteze sistemul de la fluctuaţiile externe. Elementul care asigură deconectarea şi care joacă rolul de tampon, de amortizor al variaţiilor îl reprezintă stocurile.

Ca proces economic complex, gestiunea stocurilor are o sferă largă de cuprindere, aceasta incluzând atât probleme de conducere, dimensionare, de optimizare a amplasării stocurilor în teritoriu, de repartizare a lor pe deţinători, de formare şi evidenţă a acestora, cât şi probleme de recepţie, de depozitare şi păstrare, de urmărire şi control, de redistribuire şi mod de utilizare.

Cu toate că stocurile sunt considerate resurse neactive, este necesar, în mod obiectiv, să se recurgă la constituirea de stocuri (de resurse materiale) bine dimensionate, pentru a se asigura ritmicitatea producţiei materiale şi a consumului.

Obiectivitatea formării de stocuri este justificată de acţiunea mai multor factori care le condiţionează existenţa şi nivelul de formare, le stabilizează funcţia şi scopul constituirii. Între aceştia amintim:

contradicţia dintre specializarea producţiei şi caracterul nespecializat al cererii; diferenţa spaţială dintre producţie şi consum; caracterul sezonier al producţiei sau al consumului; pentru majoritatea produselor producţia

este continuă, în timp ce consumul este sezonier; la produsele agricole situaţia este inversă; periodicitatea producţiei şi consumului, a transportului; necesitatea condiţionării materialelor înaintea intrării lor în consum; punerea la adăpost faţă de dereglările în procesul de aprovizionare-transport sau faţă de

factorii de forţă majoră (stare de necesitate, calamităţi naturale, seisme, caracterul deficitar al resurselor);

necesitatea executării unor operaţii specifice pentru a înlesni procesul de livrare sau consum al materialelor (recepţie, sortare, marcare, ambalare – dezambalare, formarea loturilor de livrare, pregătirea materialelor pentru consum ş.a.m.d.);

necesitatea eficientizării procesului de transport etc.

Ţinând seama de această dublă influenţă a procesului de stocare, este necesară găsirea de modele şi metode în vederea formării unor stocuri, care prin volum şi structură, să asigure desfăşurarea normală a activităţii din economie, dar în condiţiile unor stocări minim necesare şi a unor cheltuieli cât mai mici.

Rolul determinant al stocurilor este evidenţiat de faptul că acestea asigură certitudine, siguranţă şi garanţie în alimentarea continuă a producţiei şi ritmicitatea desfacerii rezultatelor acesteia. Altfel spus, procesul de stocare apare ca un regulator al ritmului aprovizionărilor cu cel al producţiei, iar stocul reprezintă acel “tampon inevitabil” care asigură sincronizarea cererilor pentru consum cu momentele de furnizare a resurselor materiale.

Alte motive pentru crearea stocurilor ar putea fi: investirea unei părţi din capital în stocuri pentru a reduce cheltuielile de organizare; capitalul investit în stocuri e uşor de evidenţiat; asigurarea desfăşurării neîntrerupte a procesului de producţie; asigurarea unor comenzi de aprovizionare la nivelul consumului imediat nu este

întotdeauna posibilă şi eficientă din punct de vedere economic; comenzile onorate de către furnizorii din alte localităţi nu pot fi introduse imediat în

procesul de fabricaţie;

159

Page 160: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

anticiparea unei creşteri a preţurilor (exceptând speculaţiile) etc.

1.3. Tipuri de stocuri

În cadrul gamei foarte largi de stocuri, se disting cu deosebire:A. din punct de vedere al producţiei stocurile pot fi de trei feluri:

a) cel de materii prime şi materiale destinat consumului unităţilor de producţie; este vorba de stocul de producţie, stoc în amonte;

b) cel de produse finite, destinate livrării către beneficiari; este vorba de stocul de desfacere, stoc în aval;

c) cel destinat asigurării funcţionării continue a unor maşini sau a unor linii de fabricaţie; este vorba de stocul interoperaţional.

Ponderea cea mai mare o deţine stocul de producţie.B. din punct de vedere al rolului jucat pe plan economic stocurile pot fi:

a) stocuri cu rol de regulator; au ca rol reglarea fluxurilor de intrare şi de ieşire ale produselor între două stadii succesive ale procesului tehnologic;

b) stocuri cu rol strategic; sunt formate din piese sau din subansamble folosite de serviciul de întreţinere , necesare înlocuirii rapide a lor în caz de avarie la instalaţiile vitale ale întreprinderii;

c) stocuri speculative; sunt mai puţin legate de activitatea agenţilor economici şi se referă în general la produse şi materiale rare, a căror valoare nu este fluctuantă.

C. Din punct de vedere al modului de depozitare, care ţine seama şi de unele proprietăţi fizico-chimice ale elementelor. Aşa avem: produse periculoase, voluminoase, fragile etc.

D. Din punct de vedere al modului de gestionare avem:a) stocuri cu gestiune normală; b) stocuri cu “afectare directă” (comandate special pentru o anume comandă); c) stocuri “fără gestiune” (din magaziile intermediare, cu o supraveghe-re globală);d) stocuri de produse consumabile;E. Din punct de vedere al caracteristicilor formării şi destinaţiei lor stocurile pot fi:

a) stoc curent;b) stoc de siguranţă;c) stoc de pregătire sau de condiţionare;d) stoc pentru transport intern;e) stoc de iarnă;

1.4. Obiective şi rezultate ale gestiunii ştiinţifice a stocurilor

Având în vedere particularităţile diferitelor procese de stocare, activitatea de conducere a acestora are totuşi unele trăsături comune; aşa de pildă, orice proces de stocare necesită prevederea desfăşurării lui şi a condiţiilor în care urmează a se efectua.

Formarea stocurilor este predeterminată de o anumită comandă, iar desfăşurarea procesului de stocare poate avea loc în baza organizării sale raţionale. Realizarea în condiţii de eficienţă economică maximă şi de utilitate impune o coordonare permanentă a procesului de stocare şi un control sistematic al modului de derulare al acestuia.

Obiectivele principale ale conducerii proceselor de stocare pot fi sintetizate astfel: asigurarea unor stocuri minim necesare, asortate, care să asigure desfăşurarea normală a

activităţii economico-productive a agenţilor economici prin alimentarea continuă a punctelor de consum şi în condiţiile unor cheltuieli cât mai mici;

prevenirea formării de stocuri supranormative, cu mişcare lentă sau fără mişcare şi valorificarea operativă a celor existente (devenite disponibile);

asigurarea unor condiţii de depozitare-păstrare corespunzătoare în vederea prevenirii degradãrilor de materiale existente în stocuri;

folosirea unui sistem informaţional simplu, operativ, eficient, util şi cuprinzător care să evidenţieze în orice moment starea procesului de stocare;

160

Page 161: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

aplicarea unor metode eficiente de urmărire şi control care să permită menţinerea stocului în anumite limite, să prevină imobilizările neraţionale.

Soluţionarea oricărei probleme de stoc trebuie să conducă la obţinerea răspunsului pentru următoarele două chestiuni (şi care constituie de fapt obiectivele principale ale gestiunii):

1) determinarea mărimii optime a comenzii de aprovizionare;2) determinarea momentului (sau frecvenţei) optime de aprovizionare.Desigur, pentru unele probleme particulare (de exemplu cele statice) este suficient un singur

răspuns şi anume la prima problemă.Se realizează următoarele deziderate:

* reducerea frecvenţei fenomenului de rupere a stocului şi prin aceasta satisfacerea în mai bune condiţii a cererii către beneficiari;

* reducerea cheltuielilor de depozitare; * mărirea vitezei de rotaţie a fondurilor circulante ale agenţilor economici;* reducerea imobilizărilor de fonduri băneşti;* reducerea unor riscuri inerente oricărui proces de stocare;* obţinerea de economii la nivelul cheltuielilor generale ale întreprinderii (de exemplu, la

produsele cu o durată de depozitare a stocului de materii prime mai mare decât durata ciclului de fabricaţie);

* descoperirea şi valorificarea rezervelor interne etc.

1.5. Elementele principale ale unui proces de stocare

Stabilirea politicii de gestiune a stocurilor este nemijlocit legată de cunoaşterea elementelor prin care se caracterizează procesele de stocare şi care determină nivelul de formare al stocurilor:

A. CEREREA DE CONSUM, element de bază în funcţie de care se determină nivelul şi ritmul ieşirilor, volumul şi ritmul necesar pentru intrări şi nivelul stocului. Cererea de consum reprezintă numărul de produse solicitate în unitatea de timp. Acest număr nu coincide întotdeauna cu cantitatea vândută deoarece unele cereri pot rămâne nesatisfăcute datorită deficitului în stoc sau întârzierilor în livrare. Evident, dacă cererea poate fi satisfăcută în întregime, ea reprezintă cantitatea vândută.

După natura ei, cererea poate fi: a) determinată - cererea pentru o perioadă e cunoscută şi poate fi constantă pentru toate

perioadele sau variabilă pentru diferite perioade; b) probabilistă - cererea e de mărime sau frecvenţă necunoscute, dar previzibile şi

reprezentată printr-o repartiţie de probabilitate dată. Caracteristicile şi tipul cererii se stabilesc pe bază de observaţii, prin studii asupra perioadelor trecute. Stabilirea caracteristicilor şi tipului de cerere pe baza observaţiilor, prin studii asupra perioadelor trecute, nu este satisfăcătoare, din cel puţin două motive:

- presupunând că şi în viitor cererea ar urma aceeaşi repartiţie de probabilitate ca în perioadele trecute, parametrii ei nu se menţin întotdeauna;

- se exclude posibilitatea influenţei unor fluctuaţii sezoniere asupra cererii.Cererea probabilistă poate fi stabilă din punct de vedere statistic sau nestabilă din punct de

vedere statistic (sezonieră). c) necunoscută - cererea pentru care nu dispunem nici de datele necesare stabilirii unei

repartiţii de probabilitate (este cazul, de exemplu, al produselor noi).B.COSTURILE reprezintă cheltuielile ce trebuie efectuate pentru derularea procesului de

aprovizionare-stocare (respectiv cele cu comandarea, contractarea, transportul, depozitarea, stocarea materialelor etc.).

În calculul stocurilor se au în vedere:a) Costurile de stocare care cuprind suma cheltuielilor ce trebuie efectuate pe timpul

staţionării resurselor materiale în stoc şi anume: - cheltuieli cu primirea-recepţia;

161

Page 162: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

- cheltuieli de transport intern; - cheltuieli de manipulare, care cuprind costul forţei de muncă nece-sare pentru

deplasarea stocurilor, a macaralelor, cărucioarelor, elevatoarelor şi a celorlalte utilaje necesare în acest scop;

- cheltuieli de depozitare propriu-zisă: chiria spaţiului de depozitare sau amortizările, în cazul unui spaţiu propriu;

- cheltuieli de conservare; - cheltuieli cu paza; - cheltuieli de evidenţă care apar datorită faptului că stocurile sunt practic inutilizabile

fără o evidenţă bine pusă la punct, care să ne spună dacă produsul necesar se găseşte sau nu în stoc;

- cheltuieli administrative; - impozite şi asigurări; - cheltuieli datorate deprecierii, deteriorării, uzurii morale care sunt caracteristice pentru

produsele “la modă” sau pentru cele care se modifică chimic în timpul stocării (alimente, de exemplu); la care se adaugă costul capitalului investit; acest cost reprezintă un anumit procent din capitalul investit, însă determinarea cifrei exacte necesită o analiză atentă. Procentul exact depinde, în primul rând de ce alte utilizări ce se pot găsi pentru capitalul ”imobilizat” în stocuri.

Capitalul investit în stoc este neproductiv, costul său este dat de mărimea beneficiului ce s-ar putea obţine dacă acest capital ar fi fost investit într-un mod productiv sau de dobânda ce trebuie plătită dacă ar fi fost împrumutat.

Costul stocării depinde de mărimea stocului şi durata stocării. Aceste cheltuieli se pot grupa după cum urmează:

- cheltuieli constante pentru durata totală a procesului de gestiune (amortismentul clădirii, cheltuieli pentru întreţinerea depozitului, iluminat, încălzit etc.;

- cheltuieli variabile proporţionale cu cantitatea depozitată şi cu durata depozitării (deci cu stocul mediu), exprimate prin dobânda pentru fondurile imobilizate în stoc;

- cheltuieli variabile neproporţionale cu mărimea lotului (salarii ale forţei de muncă, pierderi datorate uzurii reale şi demodării, cheltuieli pentru chirie etc.) şi cu durata de stocare.

La cheltuielile de existenţă a stocului în depozit, prezentate mai sus, se pot adăuga şi cheltuielile pentru surplus de stoc (excedent), care intervin atunci când, după satisfacerea cererii, rămâne o anumită cantitate nevândută (de exemplu, desfacerea unor articole de sezon). În modelele dinamice unde se lansează mai multe comenzi în timpul unui sezon, penalizarea pentru surplus se ataşează numai ultimei comenzi nedesfăcute complet.

b) Costul de penurie sau costul ruperii stocului este definit atunci când volumul cererii depăşeşte stocul existent. Referitor la acest stoc, există trei situaţii. Prima apare atunci când stocul (de materii prime sau semifabricate) este nul la primirea comenzii şi firma se reaprovizionează de urgenţă pentru a produce cantităţile solicitate.

Componentele cheltuielilor de penurie sunt, în acest caz, următoarele: - cheltuieli suplimentare pentru satisfacerea cererii în condiţii neobişnuite; - penalizări primite de către firmă din partea beneficiarului, dacă termenele de livrare

prevăzute în contracte nu se respectă; - cheltuieli suplimentare pentru manipulare, ambalare, expediţie etc. A doua situaţie are loc atunci când desfacerea nu se poate realiza (pierderea beneficiarului)

din cauza nelivrării imediate a unui articol. Estimarea cheltuielilor de penurie este aici destul de dificilă şi adesea imposibilă.

A treia, şi cea mai dificilă, apare atunci când firma este în lipsă de materii prime (sau piese de schimb) ce afectează întregul proces de producţie, cu toate consecinţele sale, reflectate în penali-zări şi uneori chiar în costul producţiei care ar fi rezultat în timpul stagnării.

c) Cheltuieli datorate variaţiilor ritmului de producţie. Din această categorie fac parte:

162

Page 163: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

- cheltuielile fixe legate de creşterea ritmului de producţie, de la nivelul zero, la un anumit nivel dat. Dacă este vorba de achiziţii, aici vor intra cheltuielile administrative legate de lansarea comenzilor;

- cheltuieli de lansare care includ toate cheltuielile care se fac cu: întocmirea comenzii, trimiterea acesteia la furnizor, pregătirea livrării unei partizi de materiale, cheltuieli de transport a lotului, deplasării la furnizori, telefoane, poştă etc.; în general aceste cheltuieli sunt fixe pentru o comandă.

- cheltuieli legate de angajarea şi instruirea unui personal suplimentar sau de concediere a unor salariaţi.

d) Preţul de achiziţie sau cheltuielile directe de producţie. Preţurile pe unitatea de produs pot depinde de cantitatea achiziţionată, dacă se acordă anumite reduceri de preţ în funcţie de mărimea comenzii. Cheltuielile de producţie pe unitatea de produs pot fi şi ele mai scăzute, datorită unei eficienţe superioare a muncitorilor şi maşinilor într-o producţie de serie mare.

C) CANTITATEA DE REAPROVIZIONAT reprezintă necesarul de aprovizionat care se stabileşte în funcţie de necesarul pentru consum pentru întreaga perioadă de gestiune.

Cantitatea de aprovizionat (cantitatea intrată în stoc) poate fi din producţia proprie sau obţinută prin alte mijloace şi se poate referii la fiecare resursă separat sau la ansamblul lor.

Această cantitate e limitată de capacităţile de depozitare.D) LOTUL reprezintă cantitatea cu care se face aprovizionarea la anumite intervale în cadrul

perioadei de gestiune stabilită (trimestru, semestru, an) şi care este în funcţie de caracterul cererii.E) PARAMETRII TEMPORALI sunt specifici dinamicii proceselor de stocare. Aceştia

sunt: a) perioada de gestiune - determină şi orizontul procesului de gestiune. De obicei se

consideră a fi un an; b) intervalul de timp între două aprovizionări consecutive; c) durata de reaprovizionare - reprezintă timpul ce se scurge din momentul calendaristic

la care s-a emis comanda de reaprovizionare până la sosirea în întreprindere a cantităţii de reaprovizionat;

d) momentul calendaristic la care se emit comenzile de reaprovi-zionare. (data de reaprovizionare);

e) coeficientul de actualizare.Dacă în modelele probabiliste folosirea tuturor parametrilor temporali este obligatorie, unii

dintre ei (de exemplu, durata de reaprovizionare sau data de reaprovizionare) nu prezintă nici o importanţă în modelele deterministe. De asemenea durata de aprovizionare poate fi o constantă sau o variabilă aleatoare, determinând în baza legăturii pe care o are cu volumul şi frecvenţa cererii, cheltuielile de penurie.

F) GRADUL DE PRELUCRARE A PRODUSELOR. Cu cât bunurile păstrate în stoc sunt într-un stadiu mai avansat de finisare, cu atât mai repede pot fi satisfăcute comenzile, dar cu atât mai mari vor fi cheltuielile de stocare. Cu cât produsele sunt mai puţin finisate (cazul limită îl constituie materia primă), cu atât mai mici sunt cheltuielile de stocare, dar timpul necesar pentru livrarea unei comenzi este mai mare. În plus, erorile de previziune tind să crească pe măsură ce gradul de prelucrare a produselor este mai avansat; pentru a reduce influenţa factorilor nefavorabili este necesar de aceea să crească şi stocul tampon. Numărul tipurilor de produse ce trebuie stocate creşte rapid, pe măsură ce gradul de finisare este mai avansat.

Variabilele care influenţează stocurile sunt de două feluri: variabile controlabile: cantitatea intrată în stoc, frecvenţa sau momentul achiziţiilor,

gradul de prelucrare a produselor; variabile necontrolabile: costurile, cererea, durata de reaprovizionare, cantitatea

livrată.

2. Modele de gestiune a stocurilor

163

Page 164: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

2.1. Modelul Willson

Ipotezele modelului:

1. cerere constantă în timp (cereri egale pe intervale egale de timp);2. perioadă fixă de aprovizionare (aprovizionarea se face la intervale egale de timp);3. cantităţi egale de aprovizionare;4. aprovizionarea se face în momentul în care stocul devine 0 (nu se admit intervale de timp

pe care stocul să fie 0);5. aprovizionarea se face instantaneu (durata dintre momentul lansării comenzii şi intrarea

mărfii în depozit este zero)

Datele modelului:

T = perioada totală de timp pe care se studiază stocarea; N = cererea totală pe perioada T; cs = costul unitar de stocare (costul stocării unei unităţi de marfă pe o unitate de timp) cl = costul lansării unei comenzi

Variabilele modelului:

= intervalul dintre două aprovizionări succesive; n = cantitatea comandată şi adusă la fiecare aprovizionare; s(t) = nivelul stocului din depozit la momentul t

Obiectivul modelului

minimizarea costului total de aprovizionare CT

Relaţiile dintre mărimile modelului

Ipoteza 1 = cererea pe unitatea de timp s(t) = liniară

Ipoteza 2 acelaşi între oricare două comenziIpoteza 3 n acelaşi pentru toate comenzileIpoteza 4 s(t) 0 pentru orice tIpoteza 5 la sfârşitul unei perioade s(t) are un salt de la 0 la n

Rezolvare

Situaţia de mai sus poate fi vizualizată prin trasarea graficului variaţiei stocului în timp:

164

N

n

T

s(t)

Figura 1

Page 165: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În figura 1 a fost reprezentată evoluţia stocului, dacă toată cantitatea necesară ar fi adusă la începutul perioadei (graficul de deasupra) sau dacă s-ar aduce câte n unităţi din în unităţi de timp (graficul de jos). Se observă că evoluţia este periodică, de perioadă . În concluzie vom calcula costul total cu aprovizionarea calculând costul pe o perioadă şi înmulţind apoi cu numărul de perioade:

pe o perioadă avem o lansare, deci un cost c l şi cheltuieli de stocare pe o durată , stocul

variind liniar de la n la 0. Din acest motiv costul cu stocarea va fi: cs · · (În general

costul de stocare se calculează cu formula ).

numărul de perioade este egal cu

costul total cu aprovizionarea va fi CT = (cl + cs · · ) ·

În concluzie rezolvarea problemei se reduce la a găsi minimul funcţiei:

CT(n,) = (cl + cs · · ) ·

dacă variabilele n şi verifică şi n şi sunt strict pozitive şi n (0,N], (0,T]. Pentru

rezolvare vom scoate pe în funcţie de n din relaţia :

= n ·

şi înlocuim în expresia costului total cu aprovizionarea obţinând:

CT(n) = (cl + cs · · n · ) · =

Cei doi termeni în care a fost separat costul total reprezintă cheltuielile totale cu lansările respectiv cheltuielile totale cu stocarea, observându-se că primele sunt descrescătoare în n iar celelalte liniar crescătoare. În concluzie, dacă vom aduce toată cantitatea într-o singură tranşă vor fi foarte mari costurile de stocare iar dacă vom aduce de foarte multe ori câte foarte puţin vor fi foarte mari cheltuielile cu lansarea. Soluţia optimă n* va fi deci foarte probabil undeva între 0 şi N. Pentru a o determina facem tabloul de variaţie al costului total în funcţie de n pe intervalul (0,N].

165

Page 166: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Calculăm derivata costului total:

care are zerourile: n1,2 =

n1 =

n2 =

În concluzie:

a) dacă adică dacă costul de lansare este de mai mult de ori mai mare decât

costul de stocare tabloul de variaţie va fi:n 0 N

CT’(n) - - - - - - CT(n)

şi deci se va face o singură aprovizionare la începutul perioadei T în care se va aduce toată

cantitatea N, costul total fiind de .

b) dacă obţinem tabloul:

n 0 N

CT’(n) - - - - - 0 + + + + CT(n)

în concluzie se vor face aprovizionări la intervale de topt = în care se

va aduce câte nopt = , variantă prin care se va face aprovizionarea cu costul total

minim posibil:CT =

Obs. Dacă nu se acceptă decât soluţii în numere întregi pentru n sau t se va calcula costul pentru:

n = şi n = + 1

t = şi t = + 1

166

Page 167: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

alegându-se dintre toate variantele cea mai ieftină. ( [x] = partea întreagă lui x).

2.2. Modelul Willson cu ruptură de stoc

Ipotezele modelului:

1. cerere constantă în timp (cereri egale pe intervale egale de timp);2. perioadă fixă de aprovizionare (aprovizionarea se face la intervale egale de timp);3. cantităţi egale de aprovizionare;4. aprovizionarea nu se face în momentul în care stocul devine 0, admiţându-se scurgerea

unui interval de timp în care depozitul va fi gol şi cererea nu va fi satisfăcută;5. aprovizionarea se face instantaneu (durata dintre momentul lansării comenzii şi intrarea

mărfii în depozit este zero)

Datele modelului:

T = perioada totală de timp pe care se studiază stocarea; N = cererea totală pe perioada T; cs = costul unitar de stocare (costul stocării unei unităţi de marfă pe o unitate de timp) cl = costul lansării unei comenzi cp = costul unitar de penalizare (pierderea cauzată de nesatisfacerea unei unităţi din

cerere timp de o zi)

Variabilele modelului:

= intervalul dintre două aprovizionări succesive; 1 = durata de timp în care în depozit se află marfă; 2 = durata de timp în care în depozitul este gol; n = cantitatea comandată şi adusă la fiecare aprovizionare; s = cantitatea maximă de marfă aflată în depozit; s(t) = nivelul stocului din depozit la momentul t

Obiectivul modelului

minimizarea costului total de aprovizionare CT

167

N

s

T

s(t)

Figura 2

2

1

n

Page 168: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Relaţiile dintre mărimile modelului

Ipoteza 1 = cererea pe unitatea de timp s(t) = liniară

Ipoteza 2 , 1, 2, aceiaşi între oricare două comenzi şi = 1 + 2.Ipoteza 3 n, s aceiaşi pentru toate comenzile.Ipoteza 4 pe intervalul 2 depozitul este gol (deci stocul zero); totuşi graficul a fost

desenat în prelungirea perioadei 1 (deci cu valori negative) deoarece în această perioadă se presupune că cererea este aceeaşi ca în perioadele în care există marfă în depozit, nivelul cererii nesatisfăcute fiind privit ca stocul care s-ar fi consumat dacă aveam marfă în depozit.

Ipoteza 5 la sfârşitul unei perioade este livrată instantaneu cantitatea n – s în contul cererii nesatisfăcute în perioada 2 şi introdusă în depozit cantitatea s.

Rezolvare Situaţia de mai sus poate fi vizualizată prin trasarea graficului variaţiei stocului în timp din

figura 2:În figură a fost reprezentată evoluţia stocului dacă toată cantitatea necesară ar fi adusă la

începutul perioadei (graficul de deasupra) sau dacă s-ar aduce câte n unităţi din în unităţi de timp (graficul de jos). Se observă că evoluţia este periodică, de perioadă . În concluzie vom calcula costul total cu aprovizionarea calculând costul pe o perioadă şi înmulţind apoi cu numărul de perioade:

pe o perioadă avem o lansare, deci un cost cl, cheltuieli de stocare pe o durată 1, stocul variind liniar de la s la 0 şi cheltuieli de penalizare, cererea neonorată variind liniar de la

0 la n - s. Din acest motiv costul cu stocarea va fi: cs · · 1 iar costul de penalizare va

fi: cp · · 2 (În general costul de penalizare, ca şi cel de stocare, se calculează cu

formula ).

numărul de perioade este egal cu

costul total cu aprovizionarea va fi CT = (cl + cs · · 1 + cp · · 2 ) ·

În concluzie rezolvarea problemei se reduce la a găsi minimul funcţiei:

CT(n,s,,1,2) = (cl + cs · · 1 + cp · · 2 ) ·

168

Page 169: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

unde variabilele n, s, , 1 şi 2 verifică următoarele condiţii şi relaţii:

Condiţii Relaţii

1. 0 < n N2. 0 s n3. 0 < T4. 0 1 5. 0 2

1. 1 + 2 =

2.

3.

În concluzie, din cele 5 variabile doar două sunt independente şi din cele trei relaţii vom scoate trei dintre ele ca fiind variabile secundare în funcţie de celelalte două ca fiind principale. Fie cele două variabile principale n şi s. În acest caz avem rezolvând sistemul de relaţii:

1 =

2 =

=

Acestea se înlocuiesc în expresia costului total şi obţinem în final o problemă de minim a unei cu două variabile:

CT(n,s) = (cl + cs · · + cp · · ) ·

unde 0 < n N şi 0 s n.

Pentru rezolvare vom calcula derivatele parţiale ale funcţiei CT(n,s) pe domeniul D = {(n,s)/ 0 < n N şi 0 s n}. Obţinem:

= cp(n – s) - [cl + css2 + cp(n – s)2 ]

= [(cs + cp)s - cpn]

Rezolvăm sistemul: scoţându-l pe s în funcţie de n din a doua ecuaţie (s =

n) şi înlocuindu-l în prima obţinând: T - cl = 0 de unde rezultă n2 =

şi în final unica soluţie pozitivă: n0 = şi s0 = .

169

Page 170: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Această soluţie este soluţia optimă doar dacă 0 < n0 N şi sunt îndeplinite condiţiile de ordinul 2:

Evident n0 > 0 şi avem:

= (cs + cp) > 0

= > 0

= > 0

n0 N este echivalentă cu: NT.

În concluzie, dacă NT atunci problema admite soluţia optimă:

n0 =

s0 =

1 =

2 =

=

CT maxim = CT(n0,s0) =

Expresia = măsoară intensitatea lipsei de stoc şi din expresia lui CT maxim se

observă că admiterea lipsei de stoc duce la micşorarea costului total cu stocarea, explicaţia constând în micşorarea numărului de lansări pentru că, deşi cp este mult mai mare decât cs, cl este şi mai mare

decât cp. Dacă cp este mult mai mare decât cs ( ) atunci se obţin aceleaşi soluţii ca în modelul

Willson fără ruptură de stoc.

Dacă > NT atunci se va face o singură lansare (deci n0 = N) şi vom avea s0 = n0,

1 = = T şi 0 = 0 iar CT = cl + cs T exact ca şi în modelul Willson fără ruptură de stoc.

2.3. Generalizări ale modelului Willson

170

Page 171: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În practică ipoteza că cs (costul unitar) este acelaşi, indiferent de cantitatea stocată, nu este în general îndeplinită decât pentru variaţii mici ale stocului sau ale duratei de stocare, fiind mult mai realistă ipoteza că acesta depinde (invers proporţional) de cantitatea stocată s, de durata de stocare (direct sau invers proporţional) etc, dependenţele fiind exprimate prin funcţii mai mult sau mai puţin complicate. Aceleaşi consideraţii sunt valabile şi pentru cp (dependent de mărimea cererii neonorate sau mărimea întârzierilor). În concluzie putem imagina modele în care: cs = f(s,ts) şi/sau cp = f(p,tp) unde am notat cu:

s = cantitatea stocată ts = durata de stocare p = cererea neonorată tp = durata întârzierii onorării cererii

sau şi mai complicate, neexistând evident limite în acest sens. Motivele care ne opreşte totuşi în a discuta teoretic aceste modele sunt următoarele:

orice complicare a modelelor anterioare duce la ecuaţii matematice complicate, ale căror soluţii nu mai pot fi scrise cu operatorii matematici obişnuiţi (de exemplu, chiar dacă am presupune că unul singur dintre cs sau cp este funcţie liniară în variabilele expuse mai sus s-ar ajunge în rezolvare la ecuaţii de gradul patru ale căror soluţii încap pe o foaie întreagă (cititorul poate încerca singur analiza acestor variante); ele ar fi practic de nefolosit şi oricum scopul studierii gestiunii stocurilor nu este găsirea unor modele cât mai impunătoare;

aceste modele mai complicate pot apărea şi pot fi aplicate evident în practică, existând algoritmi matematici de rezolvare (cel puţin aproximativi) pentru orice model matematic, dar acesta ar fi doar un pur calcul matematic;

modelele mai complicate nu ar adăuga nimic ideii teoretice, desprinse din modelul Willson clasic, că în orice model de stocare există întotdeauna două tipuri de costuri, indiferent de variabilele de decizie şi anume: unele direct proporţionale şi celelalte invers proporţionale cu variabilele de decizie, fapt care face ca soluţia să fie una de mijloc, şi nu o valoare extremă evidentă şi deci banală.

în foarte multe cazuri un model de stocare presupune şi multe alte variabile, care sunt de obicei aleatoare, caz în care devine nerealizabilă dorinţa de a găsi o soluţie matematică simplă. În aceste cazuri sunt chemate spre rezolvare alte ramuri ale analizei matematice şi economice, cum ar fi, de exemplu, simularea, algoritmii genetici etc.

2.4. Model de producţie – stocare

Presupunem că o unitate economică fabrică un singur tip de produse cu un ritm al producţiei de produse în unitatea de timp pentru care are o cerere de N bucăţi într-o perioadă T. Presupunem că T > N (adică dacă întreprinderea ar lucra non-stop întreaga perioadă T ar produce mai mult decât ceea ce poate efectiv să vândă) motiv pentru care perioadele de producţie sunt alternate cu perioade de oprire a producţiei astfel încât producţia totală să devină egală cu cererea totală N. Pentru simplificarea calculelor se va presupune că

cererea este constantă în timp, adică în fiecare unitate de timp este egală cu = .

Deoarece > este evident că pe parcursul perioadelor de producţie se va acumula o cantitate de produse care trebuie stocate într-un depozit, acest stoc epuizându-se în perioadele în care producţia este oprită. De asemenea este evident că oprirea şi repornirea producţiei implică o serie de costuri. Pentru formalizarea modelului vom face şi următoarele ipoteze:

1. duratele ciclurilor de producţie sunt egale între ele;

171

Page 172: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

2. intervalele de staţionare sunt egale între ele;3. costul stocării este direct proporţional cu cantitatea stocată şi durata stocării cu un factor

de proporţionalitate cs (costul unitar de stocare)4. costul unei secvenţe oprire-pornire a producţiei este acelaşi pentru toate secvenţele;5. se admite ruptura de stoc;6. valoarea penalizării este direct proporţională cu mărimea cererii neonorate şi cu durata

întârzierii cu un factor de proporţionalitate cp (costul unitar de penalizare)Se cere în aceste condiţii găsirea acelor intervale de producţie şi staţionare care duc la un

cost total pe unitatea de timp minim.Situaţia de mai sus poate fi vizualizată foarte bine desenând graficul evoluţiei stocului în

timp în figura 3.

În acest desen am notat cu:

n = cantitatea produsă peste cerere într-un ciclu de producţie; s = cantitatea maximă acumulată în depozit; t1 = intervalul de timp în care se formează stocul; t2 = intervalul de timp în care se epuizează stocul ca urmare a opririi producţiei; t3 = intervalul de timp în care se acumulează comenzi neonorate ca urmare a faptului că

nu se produce şi s-a epuizat stocul; t4 = intervalul de timp în care este lichidat deficitului în paralel cu satisfacerea cererii

curente.

Se observă că avem de-a face cu un fenomen ciclic în care o perioadă poate fi aleasă ca intervalul dintre două porniri succesive ale producţiei. Într-o perioadă costul va fi format din:

costul unei secvenţe lansare-oprire a producţiei cl;

cheltuieli de stocare pe intervalele t1 şi t2, cs · · (t1 + t2);

cheltuieli de penalizare pe intervalele t3 şi t4: cp · · (t3 + t4)

172

Figura 3

N

T

s(t)Ciclu deproducţie

sn

t2t1 t3t4Formareastocului

Consumarea stocului

Acumulare de comenzi neonorate

Lic

hida

rea

defi

citu

lui

în p

aral

el

cu

sati

sfac

erea

ce

reri

i cur

ente

Page 173: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Costul total unitar va fi:

CT(n,s,t1,t2,t3,t4) =

şi vom avea de rezolvat problema de minim cu legături:

Pentru rezolvare vom scoatem din sistemul de restricţii patru variabile în funcţie de celelalte, de exemplu variabilele n, s, t1 şi t4 în funcţie de t2 şi t3 şi le vom înlocui în CT.

Avem: s = t2 n = (t2 + t3)

t1 =

t4 =

şi înlocuind în funcţia obiectiv obţinem:

CT(t2,t3) =

Se calculează ca şi în modelul Willson cu ruptură de stoc derivatele parţiale în t2 şi t3 şi din condiţia ca ele să se anuleze în punctul de minim obţinem un sistem în t2 şi t3 care are soluţia:

t2 = , t3 =

şi în continuare:

t1 = , t4 =

s = , n =

CTminim =

Soluţia de mai sus verifică evident şi celelalte restricţii, deci este unica soluţie optimă.

173

Page 174: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Observaţie Dacă ritmul producţiei este mult mai mare decât intensitatea cererii ( mult mai

mare decât sau echivalent spus ) se obţine soluţia din modelul Willson cu ruptură de stoc.

2.5. Model de gestiune cu preţuri de achiziţie sau cu cheltuieli de producţie variabile

În modelul anterior, cu excepţia cheltuielilor de lansare (presupuse fixe), cheltuielile de producţie erau ignorate. Acest lucru este valabil dacă cheltuielile de producţie pe unitatea de produs nu variază cu volumul producţiei iar cererea este satisfăcută în întregime (sau, în modelele de aprovizionare, cheltuielile de aprovizionare pe unitatea de produs nu variază cu volumul comenzii).

Cheltuielile de producţie depind de volumul producţiei, notat cu q, şi anume printr-o funcţie nedescrescătoare f(q) care se anulează în origine şi are un salt egal cu cl în aceasta, pentru cheltuieli de lansare cl 0 . Uneori funcţia f(q) are şi alte salturi care trebuie luate în consideraţie când se determină cantitatea optimă q ce trebuie achiziţionată (produsă).

Caz 1 Să presupunem acum că intensitatea cererii de produse este şi să presupunem că preţul unitar al produsului este p când volumul comenzii este mai mic decât o cantitate Q şi p' când volumul comenzii este mai mare sau egal cu Q, cu p' < p.

Atunci f(q) are expresia:

f(q) =

Dacă presupunem că nu se admite neonorarea comenzilor şi că aprovizionarea se face

instantaneu, atunci ne aflăm în situaţia de la modelul anterior în care t1 = t3 = t4 = 0, = şi s = q.

Formula cheltuielilor medii pe unitatea de timp va deveni:

CT = = +

Adăugând la acestea şi cheltuielile unitare de producţie obţinem:

C(q) =

Pentru a calcula minimul acestei funcţii vom calcula derivata:

C'(q) = pentru q Q

care se anulează în q0 = . Punctul de minim este q0 sau Q, punctul în care funcţia nu e

continuă. Rămâne doar să mai comparăm valorile funcţiei C(q) în q0 şi Q:

174

Page 175: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

C(q0) =

Dacă q0 < Q atunci soluţia optimă este q0 iar dacă q0 > Q se compară valorile

şi .

Dacă: < se alege q0 altfel se alege Q.

Caz 2 Să presupunem acum că intensitatea cererii de produse este şi să presupunem că preţul unitar al produsului este p pentru primele Q produse şi este cu p' mai mare pentru produsele fabricate peste cantitatea Q.

Atunci f(q) are expresia:

f(q) =

şi vor rezulta cheltuielile totale în unitatea de timp:

C(q) =

şi în continuare se găseşte soluţia optimă ca şi la cazul 1.

175

Page 176: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

2.6. Modele de gestiune cu cerere aleatoare

Presupunem că un produs este stocat într-un depozit intermediar, care este aprovizionat dintr-un depozit mai mare la intervale egale de timp t. Se presupune că cererea pe un interval este aleatoare cu o distribuţie de probabilitate cunoscută din observaţii statistice:

=

ea realizându-se uniform pe fiecare interval. Pentru simplificarea aprovizionării se decide ca la fiecare aprovizionare să se aducă aceeaşi

cantitate de produse, care trebuie aleasă astfel încât, în timp, să se minimizeze cheltuielile. Cheltuielile legate de aprovizionare pot fi privite cel puţin din două puncte de vedere:

a) cu costuri de stocare şi costuri de penalizare unitare

Presupunem că se cunosc cheltuielile unitate de stocare cs şi cheltuielile unitare de penalizare cp. Atunci, dacă vom aduce de fiecare dată bucăţi, vom avea într-o perioadă cu cererea doar cheltuieli cu stocarea iar într-o perioadă cu > atât cheltuieli cu stocarea cât şi penalizări.

Dacă evoluţia stocului va fi cea din figura 4a) şi costul unitar de stocare va fi:

C(,) =

iar dacă > evoluţia stocului va fi cea din figura 4b) şi costul unitar de stocare va fi:

C(,) =

unde . Înlocuind t1 în funcţie de t2 din această relaţie în expresia costului unitar vom

obţine:

C(,) = cs + cp

176

t

t

t2

t1

a) b)

Figura 4

Page 177: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

În concluzie, pentru o valoare aleasă a lui costul mediu va fi o variabilă aleatoare cu aceleaşi probabilităţi ale evenimentelor ca şi cererea :

C() =

Al alege pe acel astfel încât, în timp, să se minimizeze cheltuielile este echivalent cu a găsi acel pentru care media variabilei aleatoare C() este minimă.

Avem:

=

unde R şi valorile formează un şir real. Pentru a găsi minimul acestui şir observăm că funcţia cu valori reale este o funcţie de gradul doi cu coeficientul lui 2 pozitiv, deci are un singur punct de minim local, care este şi global şi deci valoarea întreagă care dă minimul lui este cea care îndeplineşte simultan relaţiile:

> <

sistem care, după efectuarea unor calcule simplificatoare, este echivalent cu:

L( - 1) < < L()unde:

L() = p( ) + iar = .

Practic, pentru găsirea lui vom calcula toate valorile lui L() într-un tabel ca cel de mai jos şi vom alege acel pentru care se obţine valoarea lui L() imediat superioară lui .

p(

p( )

L(

p(0)p(1)p(2)

În final, pentru 0 găsit, se calculează costul mediu minim

Generalizări

Caz 1 Sunt situaţii în care cererea de produse se poate situa într-un interval foarte mare (produse de valoare mică), caz în care calcularea probabilităţilor pentru fiecare valoare a cererii ar cere un efort prea mare, acesta nefiind justificat şi prin faptul că probabilitatea

177

Page 178: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

pentru o anumită cerere este practic aceeaşi pentru un întreg interval de valori din vecinătatea acesteia. Din acest motiv se împart valorile cererii în intervale egale, se presupune că cererile din fiecare interval au aceeaşi probabilitate de manifestare şi vom avea de estimat doar atâtea probabilităţi câte intervale posibile există (sau se presupune că numai anumite valori ale cererii sunt posibile, de exemplu mijloacele acestor intervale).

Cererea este o variabilă aleatoare de forma:

=

sau:

=

unde a este valoarea minimă a cererii iar l lungimea intervalelor. Vom presupune În acest caz costul mediu va avea forma:

=

iar minimul acesteia va fi dat de acea valoare 0 pentru care:

L(0 – l) < < L(0) unde L() = p( ) +

Caz 2 Sunt de asemenea cazuri când cererea poate lua valori într-o mulţime continuă, fiind o variabilă aleatoare continuă cu densitatea de repartiţie f(). În acest caz valoarea medie a costului este:

=

care este o funcţie continuă în . Pentru rezolvare vom deriva această funcţie (folosind şi formula de derivare a integralelor cu parametru:

fiind îndeplinite condiţiile care permit aplicarea acesteia.) şi apoi vom găsi punctul în care se anulează aceasta: 0 = soluţia căutată.

b) cu pierderi

Presupunem că cheltuielile de stocare sunt neglijabile. În acest caz pentru fiecare piesă stocată peste cererea manifestată se face o cheltuială inutilă c1 iar pentru fiecare piesă lipsă, în cazul unei cereri mai mare decât stocul, o penalizare c2 (în general c2 > c1). În acest caz, costul mediu va fi:

178

Page 179: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

=

Valoarea întreagă care dă minimul lui este cea care îndeplineşte simultan relaţiile:

> <

sistem care, după efectuarea unor calcule simplificatoare, este echivalent cu:

p( - 1) < < p( )

din care va fi aflat optim şi apoi .

Observaţie. Şi în acest caz se pot analiza variantele cu cerere împărţită în intervale sau cu cerere continuă, cazuri care sunt lăsate ca exerciţii cititorului.

3 Modalităţi practice de aplicare a modelelor teoretice

3.1. Modelul S-s

Gestiunea de tip S-s sau cu două depozite se caracterizează prin faptul că reaprovizionarea se face în momentul în care nivelul curent al stocului a atins o anumită valoare notată generic cu “s”. Acest lucru este echivalent unei gestiuni cu două depozite, în cadrul căreia reaprovizionarea se face în momentul în care primul depozit s-a golit. În perioada de reaprovizionare (de avans) consumul se va realiza din cel de-al doilea depozit, care joacă rolul stocului de siguranţă.

În acest model considerăm:

cererea totală pentru perioada T este R, aleatorie; costul stocării este cS; costul lansării unei comenzi de reaprovizionare este cL; termenul de livrare poate fi:

a) neglijabil; în acest caz obţinem costul total pentru intervalul T ca fiind:

CRc

q

cqL S

2,

unde q reprezintă cantitatea de reaprovizionat.b) cvasiconstant. Fie nivelul minim de reaprovizionare Ns; când stocul atinge acest

nivel se lansează o comandă de q piese. Mărimile date sunt: T, , R, cS, cL şi ne propunem să determinăm pe Ns şi pe q astfel încât costul stocului pentru perioada T să fie minim. O metodă aproximativă constă în a admite că ritmul mediu al cererii este constant; în acest caz optimul cantităţii q0 este independent de Ns:

179

Page 180: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

qR

T

c

cL

S

0 2 T

T

R

c

cL

S

0 2 C RTc cL S

0 2

Dacă este durata medie a termenului de reaprovizionare (cu o abatere medie pătratică mică) se va evalua legea de probabilitate a cererii pentru acest interval de timp.

Fie F (r) probabilitatea cererii de r produse în intervalul : F (r) = P(R r) = probabilitatea cumulată.

Impunem condiţia ca probabilitatea epuizării stocului să fie mai mică sau egală cu valoarea dată (0 < 1); reprezintă probabilitatea de penurie.

Trebuie să avem: 1 - F (r) = . Fie Q soluţia ecuaţiei: 1 - F (r) = , de unde rezultă Q = Ns.Această metodă este aproximativă, deoarece implică ipoteze de lucru distincte pentru

stocurile fiecărui depozit. Calculele pot fi efectuate fără ipoteze restrictive cu metoda Monte - Carlo (nu face obiectul lucrării de faţă).

3.2 Metoda A.B.C.

Metoda A.B.C. este un procedeu rapid pentru analiza aprovizionării şi gestiunii economice a materialelor. Această analiză clasifică mărfurile achiziţionate în funcţie de valorile de aprovizionare ale acestora şi de ponderea achiziţiilor. Prin aceasta pot fi văzute punctele de plecare pentru realizarea unei politici raţionale a achiziţiilor; pe aceasta se pot baza mai multe măsuri, începând cu simplificarea procedeelor de comandă, până la numărul de salariaţi folosiţi în depozite.

Factorul esenţial în folosirea metodei A.B.C. constă în alegerea unui criteriu corespunzător pe baza căruia se efectuează împărţirea materialelor în cele trei grupe A, B, C. Un asemenea criteriu poate fi valoarea de consum a materialului dat, în timpul stabilit, valoarea specială a materialului cu privire la folosirea lui în producţie, provenienţa din import etc.

O dată criteriul ales şi împărţirea în grupe efectuată, metoda A.B.C. poate fi utilizată în diferite domenii ale gestiunii stocurilor:

Controlul selectiv al stocurilor

Metoda A.B.C. permite o gestiune selectivă a stocurilor. Stocurile tampon ale articolelor de valoare mare sunt menţinute la un nivel destul de mic.

Aceste articole trebuie să fie supuse unui control de gestiune foarte strâns din partea personalului aprovizionării (articolele de mare valoare sunt adesea gospodărite cu ajutorul unui sistem de reaprovizionare periodică şi dacă intervalele sunt suficient de frecvente, un stoc tampon este mai puţin necesar).

Această metodă dă o atenţie mai mică articolelor de valoare mică, a căror epuizare se evită prin asigurarea unor stocuri tampon.

Cu ajutorul metodei A.B.C. se pot reduce investiţiile în stocuri, micşorând în acelaşi timp riscurile de epuizare.

Din analiza structurii materiale a unităţilor economice rezultă că valoarea mare în stoc este deţinută de un număr relativ mic de materiale, care nu numai că influenţează direct volumul de mijloace circulante atras, dar joacă şi rolul principal în desfăşurarea procesului de fabricaţie.

Stocurile sunt împărţite în trei clase:

clasa A: în care intră articolele cu valoare mare reprezentând cantitativ 10 % din stoc şi 70 % valoric;

clasa B: în care intră articole reprezentând 20 % atât cantitativ cât şi valoric;clasa C: în care intră articole ce reprezintă cantitativ 70 % din stoc şi valoric 10 %.

180

Page 181: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

CLASA PONDEREA NUMERICĂ PONDEREA VALORICĂA 10 70B 20 20C 70 10

Gruparea materialelor în funcţie de ponderea lor valorică în stocul total, pe baza datelor din tabelul de mai sus, se prezintă într-o formă expresivă în “graficul de evoluţie al curbei valorilor cumulate”:

Datorită importanţei lor pentru procesul de fabricaţie şi datorită influenţei asupra volumului de mijloace circulante, fiecare grupă se va aborda diferenţiat, atât din punct de vedere a metodologiei de stabilire a stocurilor cât şi din punct de vedere al conducerii şi desfăşurării procesului de stocare ca atare.

Deci, metoda A.B.C., pe lângă că oferă o politică diferită pentru articolele din categoria mai scumpă, permite şi utilizarea unor metode de gospodărire diferită.

Întrucât în categoria A sunt puţine articole, se poate controla zilnic nivelul stocurilor, pentru a observa variaţia cererii şi a supraveghea de aproape respectarea termenelor de către furnizori. Cu alte cuvinte, se înlocuieşte o parte din stocul tampon de articole scumpe printr-un control al gestiunii mai strâns. Această decizie este eficientă întrucât ea aduce la o reducere apreciabilă a investiţiilor în stocuri.

Se vor folosi, deci, modele economico-matematice exigente, care vor avea în vedere elemente (factori) concrete ce condiţionează nivelul stocurilor şi care asigură constituirea lor la dimensiuni cat mai mici, determinând creşterea vitezei de rotaţie a mijloacelor circulante la maxim.

Pentru materialele din categoria C se pot folosi procedee mai puţin exigente (chiar cu caracter statistic) şi care vor avea în vedere factorii cu acţiune hotărâtoare în optimizarea proceselor de stocare (cheltuielile de transport, sursa de provenienţă etc.).

Cu articolele din categoria B se poate adopta o politică intermediară, exercitând un oarecare control, dar baza rămâne tot stocul tampon, spre deosebire de politica dusă pentru categoria A. La articolele mai ieftine este mai eficient să se suporte sarcina stocurilor, decât să se plătească salariile personalului care ar fi indispensabil pentru mărirea controlului.

Pentru grupa B se pot aplica două soluţii:

a) stabilirea de modele distincte pentru dimensionarea stocurilor de materiale din această grupă cu un grad de exigenţă mediu;

b) folosirea pentru materialele care, ca pondere valorică, tind către grupa A de importanţă, a modelelor precizate pentru această din urmă grupă, iar pentru materialele ce tind ca valoare către grupa C a modelelor specifice acestora.

181

Ponderevalorică

% 100

90

70 C B A 10 30 100 Pondere numerică %

Page 182: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Viabilitatea unui sistem de gestiune a stocurilor este determinată, în general, de felul în care acesta răspunde unor cerinţe de bază, cum ar fi:

gradul ridicat de utilitate practică; adaptabilitatea la utilizarea mijloacelor electronice de calcul; supleţea şi operaţionalitatea în derularea şi adaptarea proceselor de stocare; aria de cuprindere mare; concordanţa cu fenomenele reale ale procesului de formare şi consum a stocurilor; reducerea la minim a imobilizărilor de resurse materiale şi creşterea vitezei de rotaţie a

mijloacelor circulante ale agenţilor economici; cheltuielile de conducere, organizare şi desfăşurare a proceselor de stocare cât mai mici.

Analizat din aceste puncte de vedere sistemul A.B.C. răspunde în mare măsură cerinţelor. Acest sistem aplicat la gestiunea stocurilor are în vedere, în primul rând reducerea imobilizărilor la materialele de bază şi care se consumă în cantităţi mari, aspect asigurat prin exigenţa metodologică de dimensionare a stocurilor şi de urmărire a derulării proceselor de stocare.

3.3. Strategia IMPACT

IMPACT (Inventory Management Program and Control Techniques) este considerat ca un model eficient de stabilire a stocurilor de siguranţa. Este o metodă de depozitare economică, adaptată cerinţelor calculatoarelor electronice. Acest model a fost dezvoltat de IBM.

Estimarea necesarului se face prin extrapolarea valorilor din trecut. Influenţele conjuncturale şi sezoniere sunt luate în calcul prin metoda de nivelare exponenţială.

Stocul de siguranţă se determină cu ajutorul calculului probabilităţilor.Conform metodei IMPACT, sortimentelor din depozit se împart în trei grupe:

1. produse cu desfacere mare (vitale); 2. produse cu desfacere mijlocie (importante);3. produse cu desfacere redusă ( obişnuite).

Mărimea stocului de siguranţă depinde de precizia estimării necesităţilor (cererii). Cu cât va fi apreciată mai precis în prealabil cererea, cu atât va fi mai mic stocul de siguranţă.

Pentru a putea aplica metoda IMPACT sunt necesare: cunoaşterea cererilor ri (i = 1, 2,..., T), pe T intervale de timp şi calculul abaterii medii pătratice .

Pentru determinarea stocului de siguranţă, metoda IMPACT foloseşte următorii indicatori:

a) cererea medie (necesarul mediu)

rT

irii

tT

1

1

, (V.3.1)

unde T este numărul de intervale de timp cercetate; ri este cererea în intervalul i, i = 1, 2,..., T;

b) MAD (Mean Absolut Deviation) reprezintă abaterea absolută de la medie a cererilor, ca unitate de măsură a “împrăştierii” valorilor efective în jurul valorii medii.

MADT

i r rii

T

1

1

. (V.3.2)

MAD se determină ca valoare medie a valorilor absolute ale abaterilor de la cererea medie.

182

Page 183: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

c) coeficientul de siguranţă exprimă potenţialul de livrare al furnizorilor. Coeficientul de siguranţă (K) se stabileşte pe bază de tabele ale funcţiei normale, în cadrul căreia sunt date valorile lui K, corespunzător diferitelor niveluri ale potenţialului de livrare al furnizorilor.

Potenţialul de livrare (Z) exprimă gradul de satisfacere de către furnizor a unei comenzi. Acest potenţial de livrare se mai numeşte grad de deservire sau nivel de serviciu.

Potenţialul de livrare (Z) se determină după relaţia

ZC

CLE

LC

, (V.3.3)

unde CLE este cantitatea livrată efectiv; CLC este cantitatea ce trebuie livrată conform comenzii.Rezultă 0 < Z < 1; Z = 0 înseamnă că se înregistrează lipsa materialelor în stoc, fără o posibilitate eficientă de acoperire;

Z = 1 înseamnă că avem de-a face cu un serviciu perfect de servire din partea furnizorilor.Relaţia de determinare a potenţialului de livrare se poate exprima şi sub alte forme, ca de

exemplu:

1. ZN N

N

N

NUC UL

UC

UL

UC

1 , (V.3.4)

unde NUC reprezintă numărul de unităţi (bucăţi) comandate; NUL reprezintă numărul de unităţi (bucăţi) lipsă.

2. ZN N

N

N

NZT ZL

ZT

ZL

ZT

1 , (V.3.5)

unde NZT reprezintă numărul total de zile lucrătoare din perioada de gestiune; NZL reprezintă numărul de zile cu lipsă de stoc.

Când un produs se fabrică din mai multe materii prime, care intră simultan în consum, potenţialul de livrare se calculează în funcţie de necesitatea prezenţei în acelaşi moment în depozit a tuturor materiilor prime care concură la obţinerea lui.

Stocul de siguranţă se calculează după formula:

NS = K MAD

Între potenţialul de livrare şi costul stocării necesitat de constituirea şi deţinerea stocului de siguranţă există o corelaţie strânsă. Creşterea potenţialului de livrare determină creşterea costului total de stocare, dar într-o proporţie mai mică, ceea ce înseamnă că eficienţa este cu atât mai mare cu cât potenţialul de livrare se apropie de unu.

Trebuie excluse influenţele întâmplătore, însă luate în considerare influenţele conjuncturale şi sezoniere. IMPACT foloseşte în acest scop metoda nivelării exponenţiale. Această metodă a fost dezvoltată de Robert Brown şi este cunoscută sub numele de exponential smoothing.

Valoarea medie a cererii se corectează cu eroarea de previziune şi se stabileşte introducând o anumită parte a erorii în noua valoare a estimaţiei.

Fie V1 estimarea cererii pentru prima perioadă şi r1 cererea reală a primei perioade. Estimarea cererii pentru următoarele perioade se obţine din relaţiile:

Vi = Vi-1 + (ri-1 - Vi-1), unde reprezintă constanta de nivelare; (0,1) şi determină măsura în care valorile din trecut sunt cuprinse în estimarea cererii.

183

Page 184: Cercetari Operationale (Prof. Univ. Dr. Eugen Tiganescu, Lect. Drd. Dorin Mitrut)

Bazele cercetării operaţionale

Constanta de nivelare trebuie astfel aleasă încât să ţină seama suficient de influenţele conjuncturale şi sezoniere, eliminând totuşi influenţa întregului.

0 < < 1 = 0 înseamnă că erorile de prevedere care apar nu sunt luate în considerare = 1 înseamnă că estimarea corespunde exact cererii din perioada anterioară; toate influenţele

întâmplătoare sunt introduse în estimare.Abaterea absolută de la medie (MAD) poate fi folosită după aceleaşi principii: abaterea

medie a perioadei i va fi dată de relaţia

MADi = MADi-1 + ( ri-1 - Vi-1 - MADi-1).

În acest caz ri-1 - Vi-1 este valoarea abaterii precedente faţă de valoarea reală.Cererea medie (necesarul mediu) şi abaterea absolută de la medie (MAD) vor fi apreciate în

prealabil prin metoda nivelării exponenţială, urmând ca abia după aceea să se determine nivelul stocului de siguranţă (NS).

184