Sunteți pe pagina 1din 184

Bazele cercetării operaţionale

|
||  
||
| |||| ||  || 
|

|||| |
|
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
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.
: | , 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 °   î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.
: ! 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
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ă.
: "# 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.
: $%|%& 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.
: | %| | # (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

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
Bazele cercetării operaţionale

virtutea unui scop;


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 &|#. 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.

 |#||||
|
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ă
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
Bazele cercetării operaţionale

descoperirea unor legături şi legităţi imposibil sau foarte greu de găsit pe alte căi.
Î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 Y Y 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:

    - 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 
    - la nivel
de întreprindere, uzină, trust, combinat etc.
Modelele  
      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   
  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 
 î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   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 

 
  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

5
Bazele cercetării operaţionale

ei, sunt necesare pentru aplicarea în practică a modelelor elaborate.


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.
:  
a modelării, care are un caracter pregătitor, este Y  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 modelării o reprezintă Y   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:

- '#| #  , 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;
- % | | ", 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;
- #, 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 modelării este confruntarea modelului cu realitatea şi eventual
experimentarea sa. Această fază se realizează în cadrul implementării sistemului, care poate fi
considerată  ş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ă.
6
Bazele cercetării operaţionale

Una din principalele caracteristici ale tuturor metodelor cercetării operaţionale este faptul că
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
Bazele cercetării operaţionale

( || 


|
&|%|

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, ... R m} 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 A4
(4=1,...,n) şi poate fi caracterizată numeric prin vectorul coloană a(4) de componente (a14, a24, ... a4).
Elementele {a4,  = 1,...,; 4 = 1,..., } se numesc coeficienţi tehnici sau coeficienţi de consum
specific şi arată ce cantitate din resursa R se consumă pentru producerea unei unităţi din produsul
(serviciul) P4 (ca rezultat al activităţii A4). Toate "tehnologiile" de fabricaţie definite de vectorii
coloană a(4) se pot organiza într-o matrice A cu  linii şi coloane; fiecare linie se referă la o
resursă R ( = 1,...,) şi fiecare coloană se referă la o activitate A4 (4 = 1,..., ).
Notând cu x4 (4 = 1,..., ) rezultatul activităţii A4 într-o perioadă dată şi cu b ( = 1,...,)
cantităţile disponibile din resursele R ( = 1,...,), se pot scrie matematic următoarele restricţii
tehnico-economice:
a 11 x 1 a 12 x 2 ... a 1n x n Ê b 1
(1) a 21 x 1 a 22 x 2 ... a 2n x n Ê b 2 sau Aöx b
V V V V V V V V V V V V
a m1 x 1 a m2 x 2 ... a mn x n Ê b m

 a 11 a 12 V a 1n   x1   b1 
 a 2n  ; x = x  b 
unde A =  a 21 a 22 V
  2  şi b =  2
      
 a m1 a m2 V a mn  xn  bn 

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 R4 din resursa R pentru efectuarea activităţii A4 este proporţional cu
intensitatea acesteia, adică cu x4, deci R4(Å) = a4 ö x4 (ipoteză simplificatoare)

(Å )
De aici rezultă posibilitatea să calculăm coeficienţii a ij pe baza informaţiilor disponibile privind cantităţile consumate
R ij
Rij şi nivelul xj: aij = ; i = 1,...,m; j = 1,...,n
xj

8
Bazele cercetării operaţionale

Sistemul de restricţii (1) realizează legătura dintre resurse şi activităţi prin intermediul celor
 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 Ü
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, ..., c ) măsoară eficienţa
unei unităţi din rezultatul activităţii A4, atunci se poate introduce funcţia liniară:
(x) = c1öx1 + c2öx2 + ... + c öx
care evaluează performanţa oricărui program .
Sintetizând, obţinem următorul program de programare liniară:

optim
x  (1)

n
 a i ö x  Ê b i i  I1

1
n
unde I1 ] I2 = {1,2,...,m} (2)
a k ö x   b k


 k I2
1

 x  0  1, n (3)



Relaţiile (1), (2) şi (3) constituie împreună modelul general al unei probleme de programare
liniară, având fiecare un rol specific:
n
1.| relaţia (1), unde (x) = « c j ö  j este denumită funcţia obiectiv de eficienţă a problemei,
j 1
evaluează eficienţa/performanţa fiecărei variante de program ;
n
2.| relaţiile (2) de tipul « a ij ö x j b i reprezintă restricţii de tip resurse; iar restricţiile de
j 1
n
tipul « a kj ö x j  b k se referă la restricţii tehnico-economice de tip calitativ (şi ca urmare
j 1
indicatorul b* este limita inferioară impusă "reţetei optime";
3.| relaţia (3) x4  0 4 = 1,..., , 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    
  Y          Y, se
cunosc cantităţile disponibile (cantităţile de care se poate face rost pe perioada analizată) din fiecare
materie primă {b,  =1,...,}, coeficienţii tehnologici {a4,  = 1,...,, 4 = 1,..., } (a4 reprezintă
cantitatea din materia primă  necesară fabricării unei unităţi din produsul de tipul 4), cantităţile
maxime {  4 , 4 = 1,..., } şi minime {  4 , 4 = 1,..., } ce pot fi produse din fiecare sortiment în
perioada analizată şi profiturile unitare {p4, 4 = 1,..., } ale fiecărui tip de produs. Se cere găsirea
acelor cantităţi x4 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ă.

9
Bazele cercetării operaţionale

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
cantitatea produsă şi, pentru fiecare bun, consumurile dintr-o resursă sau alta nu se condiţionează
reciproc.
Problema matematică echivalentă este:

max
p x p x ... p n x n

x j 1, n 1 1 2 2
j

a i1x1 a i2 x 2 ... a in x n b i
 i 1,..., m
x j x j x j j 1,..., n
xj  0 j 1,..., n

În unele probleme, în loc de profiturile p4 se cunosc veniturile unitare v4 sau costurile unitare
c4 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|   
    
    Y restricţiile se referă la o serie de
maşini (utilaje) cu care se execută produsele dorite, b fiind disponibilul de timp al utilajului  pe
perioada analizată iar a4 timpul necesar prelucrării unui produs de tipul 4 pe utilajul , scopul fiind
maximizarea producţiei.
Ca urmare, modelul are forma:

max
x 1 x 2 ... x n

x ( j 1,..., n)
j


 a i1 x 1 a i2 x 2 ... a in x n bi i 1,..., m

x j  0 i 1,..., n

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


min
c 1 x 1 c 2 x 2 ... c n x n


x j ( j 1,..., n)

 a i1 x 1 a i2 x 2 ... a in x n  b i i 1,..., m

x j  0 j 1,..., n

Variabilele x4 reprezintă, în acest caz, cantitatea din fiecare aliment ce va intra în meniu iar
n
(x) = «cj öj este costul total al reţetei definită de vectorul x.
j 1

10
Bazele cercetării operaţionale

Vom încheia exemplificarea cu| prezentarea    Y      


 . Presupunem că o rafinărie dispune de tipuri de benzine, prin amestecarea acestora
urmând să obţină o benzină cu  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 b 1i , i = 1,...,m1 , b 2i , i = 1,...,m2 respectiv b 3i , 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 Ü
Mm n, 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:

 n 
min   p j ö  j 
xj
 j1 
n
 a ij ö x j  b1i i  1,..., m1
jn1
 a ö x Ê b 2 i  m1 1,..., m1 m 2
j1 ij j i

n
 a ij ö x j  b 3i i  m1 m 2 1,..., m
j1
x j Ê D j j  1,..., n
x  0 j  1,..., n
j

%#|##

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:


max sau
min
x 1 , x 2 ,..., x n 1.1

 
x1 , x 2 ,..., x n Ê b i i  1,..., n 1 .2
 1.3
x 1 , x 2 ,..., x n 

în care funcţiile ,  :
›
pot avea orice formă şi proprietăţi (liniare, convexe, continui,
diferenţiabile etc) iar A poate fi orice submulţime a lui
(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 în variabilele xi care îndeplinesc restricţiile 1.2 şi 1.3. O astfel de problemă se
numeşte !#||%#|##.
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  sunt funcţii de variabile iar b 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
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.

11
Bazele cercetării operaţionale

Condiţiile (1.3), impuse "direct" variabilelor, depind de natura problemei studiate. De cele
mai multe ori, A este mulţimea vectorilor x = (xl,...,xn) Ü
cu toate componentele nenegative şi
acest fapt se justifică prin aceea că, în general, xi 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 A 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 A va fi formată din vectorii x = (x1, «,xn) cu toate componentele
0 sau 1. Caracteristic acestor tipuri de probleme este faptul că A devine o submulţime discretă din

, 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.2


P2.|verifică restricţiile "directe" 1.3
P3.|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:

 |a problemei de optimizare = un vector x Ü


care verifică restricţiile 1.2
 |#!|a problemei de optimizare = un vector x Ü
care verifică restricţiile 1.2 şi 1.3
M o soluţie care verifică restricţiile 1.3
 |#|a problemei de optimizare = un vector x Ü
care verifică restricţiile 1.2 şi
1.3 şi optimizează funcţia obiectiv pe mulţimea
tuturor vectorilor cu această proprietate
M o soluţie care verifică restricţiile 1.3 şi
optimizează funcţia obiectiv pe mulţimea
tuturor soluţiilor cu această proprietate
M 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
Bazele cercetării operaţionale

|
!#||%#||
|
á  1. Dacă într-o problemă de programare matematică funcţia obiectiv şi funcţiile
 , 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:

max
min c 1 ö x 1 c 2 ö x 2 ... c n ö x n



a i1 ö x 1 a i2 ö x 2 ... a in ö x n b i i 1,..., n

0
x 1 , x 2 ,..., x n  0
oarecare

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

|
)#|||"#||| |!#||%#||
|
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 . 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ă, "#| şi "#|.

á   2. Spunem că o problemă este la "#|  dacă are una din următoarele
două forme:

Forma canonică de minim Forma canonică de maxim



min c1 ö x1 c2 ö x2 ... cn ö xn 
max c1 ö x1 c2 ö x2 ... cn ö xn


 i1 ö x1 ai2 ö x2 ... ain ö xn  bi i
a 1,...,n 
ai1 ö x1 ai2 ö x2 ... ain ö xn bi i 1,...,n
x1, x2,...,xn  0 
x1, x2,...,xn  0

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
Bazele cercetării operaţionale

á  3. Spunem că o problemă este la "#| dacă are forma:



min sau
max c1 ö x1 c2 ö x2 ... cn ö xn

 i1 ö x1 ai2 ö x2 ... ain ö xn bi i 1,...,n
a
x1, x2,...,xn  0

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


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

á 
. Într-adevăr:

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

max (x) = ± min (±x)

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

M ±  ±

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

 x 
 x


M   x0 şi  
M   x0
 
Toate variabilele introduse pentru transformarea inegalităţilor în egalităţi se numesc _!||
! sau _!||#.

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

=
M 
 

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 -y
x 0M 
y  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  y-z

x oarecare M  y  0

z  0

14
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ă  # poate fi adusă orice problemă de programare liniară la
forma standard (sau canonică) şi  # se obţine soluţia problemei iniţiale din soluţia problemei la
forma standard (sau canonică).

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

P PFS

(min) = 3x1 ±2x2 + 4x3 (max) = +3a1 + 2y2 ± 2z2 ± 4x3


9x 1 13x 2 15x 3 16  9a 1 13y 2 13z 2 15x 3 x 4 16
l19x 1 36x 2 6 x 3  9 l 19a 1 36y 2 36z 2 6 x 3 x 5 9
l l
 7 x 1 7 x 2 14x 3 21  7a 1 7 y 2 7z 2 14x 3 x 6 21
l 3x 1 30x 2 5x 3 31 l 3a 1 30y 2 30z 2 5x 3 x 7 31
lx 1 0, x 2 oarecare, x 3  0 l a1 , y 2 , z 2 , x 3 , x 4 , x 5 , x 6 , x 7  0

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


4 77 154
a1 = 3, y2 = , z2 = 0, x3 = 0, x4 = , x5 = 0, x6 = , x7 = 0
3 3 3
35
care dă un maxim al funcţiei egal cu .
3
Acestei soluţii îi corespunde singura soluţie optimă pentru P:
4
x1 = -3, x2 = , x3 = 0
3
35
care dă un minim al funcţiei , egal cu .
3

&_|!#||%#|*

&|!#|
|
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 4 = 1,..., ( = numărul de necunoscute), coeficienţii
variabilelor din funcţia obiectiv cu c4 (c4 = 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:

 x1   c1   b1   a 11 a 12 V a 1n 
  c  b  a a 2n 
x = x2  , c =  2 , b=  2 , A=  21
a 22

V

       
xn  cn  bn   a m1 a m2 V a mn 

(vom nota cu xT, cT şi bT transpuşii acestor vectori şi cu AT transpusa matricei A).

15
Bazele cercetării operaţionale

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:


min cT ö x
max cT ö x
Aöx b
 x0
sau A ö x b
 x0

Se ştie că un sistem de forma Aö x = b are soluţie doar dacă rang(A) = rang( A ), unde A 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ă:

%+,|-|#|.||

Rezolvarea sistemului Aö x = 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 !&| | #  ) şi restul
coloanelor (notat cu S, care este o matrice cu  linii şi ±  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:

Aö x = b M (BS)ö  B  = b M Bö xB + SöxS = b M Bö xB = b ± SöxS M xB = B-1öb ± B-1öSöxS


x
 xS 
| soluţia sistemului va fi submulţimea lui
:

DB = {x = {xB,xS} / xS Ü
n-m oarecare, xB = B-1ö b ± B-1öSöxS}

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ă:
B 1b
 0 
 =  0  n ± m zerouri
B
 
 0 
 
numită  | | !&| | !&| /. Deci xB este B = B-1öb 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.

 
: 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

16
Bazele cercetării operaţionale

componentele nenule strict pozitive se va numi  | | !&| #! iar o soluţie
optimă care este de bază se va numi  |#||!&. 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  |
% şi pe cele care au fix m elemente nenule, numite  |%.
DB este izomorfă cu
, 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 .

Rezolvarea problemei poate duce la următoarele rezultate:


R1.|Sistemul Aö x = 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 . 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 #|" #
ale programării liniare:

!
1. Dacă problema de programare liniară are soluţii admisibile atunci are şi  |
|!&|#!.

!
 2. Dacă problema de programare liniară are soluţii optime atunci are şi  |
#||!&.

!
 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 C m n 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
20 20
50 soluţii de bază, adică în jur de 10 . 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.
2.| u algoritmul de mai sus vom găsi cea mai bună soluţie dintre soluţiile admisibile de

17
Bazele cercetării operaţionale

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 m m 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ă (x) > f(y) într-o problemă de maxim şi (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 %# | #'. 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 %# |#'|| |"&.
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 . Astfel de exemple a fost efectiv găsite, unul fiind '# | |
/ prezentat mai jos:

3 1

max  x 4 20 x 5 x 6 6x 7
4 2
 1
x 1 x4 8x 5 x6 9x 7 0
4

 1 1
 x2 x4 12x 5 x6 3x 7 0
 2 2
 x3 x6 1

 x i  0, i  1,...,7

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
Bazele cercetării operaţionale

de altă parte se vede că B6 = B1 şi deci algoritmul va repeta la infinit această succesiune de baze,
7 3
neatingând niciodată valoarea maximă , corespunzătoare soluţiei ( ,0,0,1,0,1,0).
4 4
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 | '%" 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ă,  |||#|#, un exemplu fiind clasa de probleme de mai jos, găsită
de Klee şi Minty în 1972, în care algoritmul trebuie să analizeze 2 baze ( = numărul de
necunoscute) până la găsirea celei optime.

n 

max   10 n-
x

1
 i -1  

 2 ö 10 i- x   x i Ê 100 i-1 i  1,..., n
  1 
 

 x  0  1,..., n

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ă

 
 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ă 
    
YY
î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.

) #|##||%#  ||#'|
|
|
Algoritmul simplex pleacă de la presupunerea că  #|0 de o soluţie admisibilă de
bază xB, corespunzătoare unei baze B. De asemenea, presupunem că am rezolvat sistemul Aö x = b
folosind această bază, rezultând astfel variabilele principale în funcţie de cele secundare:

19
Bazele cercetării operaţionale

xB = B-1öb ± B-1öSöxS

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

(x) = c T ö(B-1ö b ± B-1ö SöxS) + c ST öxS = c TB öB-1öb ± ( c TB ö B-1öS ± c ST )öxS =


= (B) ± ( c TB öB-1öS ± c ST )öxS = (B) ± (z± c T )öxS = (B) ± ÖöxS

unde:
| (B) = c TB öB-1öb este valoarea funcţiei obiectiv în soluţia de bază
| c TB ö B-1öS = z este un vector n-m componente z = (zm+1 , zm+2 ,...,zn).
| Ö = z ± c T este un vector n-m componente Ö = (Öm+1 , Öm+2 ,..., Ön)

Obţinem următoarea formă a problemei:


! n

max sau
min 
 Ö öx
m 1
 n
x i

a
m 1
i ö x  i i  1,..., m
 x  0,  1,..., n


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

c1 c2 ... c m cm+1 ... cn


cB xB B x1 x2 ... x m xm+1 ... xn
c1 x1
c2 x2
B-1ö b Im B-1öS
cm xm
(B) 0 z m+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ă:

| ð 

  :
# n
B
 este soluţie optimă M

"
" ö x"
 B
oricare ar fi xS  0 M
m 1
n
$ ö x $  0 oricare ar fi xS  0 $  0,
$ 
M M = 1,...,n (|Ö0| |&_)
m 1
| ð 

   :
& n
B este soluţie optimă M

% 
% ö x% 
 B
oricare ar fi xS  0 M
m 1

20
Bazele cercetării operaţionale
n
M «Ö
j m 1
j öxj 0 oricare ar fi xS  0 M Öj 0, j = 1,...,n (|Ö0|%_)

Pentru a evita complicarea expunerii vom presupune în continuare că 


   
, pentru cazul de minim raţionamentul fiind analog.
Rezultatul obţinut reprezintă criteriul de recunoaştere a optimalităţii soluţiei sau, mai
simplu,  ||#.
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 (x) (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, ..., x k = y} astfel încât:

1.| (xi) (xi+1 ) oricare ar fi 1 i < k


2.| 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 xi) 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 xj
din această ecuaţie este diferit de 0 (0|ƒ|1). În acest caz avem succesiv:

n n
a ik
' 
1 1
xi + a ik ö x k + 0ö xj = i M xj + öxk + öxi = öi M
k m 1 k m 1 a ij a ij a ij
k k j
n
a ik

1 1
M xj = öi ± öxk ± ö xi
a ij k  m( 1 a i
( a i(
k
Înlocuind variabila x4 în celelalte ecuaţii obţinem:

n n
a ik

1 1
xs + «
k m 1
a sk ö x k + asj ö(
a ij
ö i ±
k  m) 1 a i
) ö xk ±
a i)
öxi ) = s M
kƒ j k
n
 a ik  a a*
M xs + «  a
k m 1
sk a sj ö
a ij
 ö x k ± sj öxi = s ± s öi pentru s = 1,...,m şi s ƒ i

 a ij a i*
kƒ j

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

21
Bazele cercetării operaţionale

a s+  
s ± öi  0 oricare ar fi s =1,...,m diferit de i M ||  |||"||-23***3#3||ƒ|
a i+  0  0
şi în urma schimbării noua soluţie de bază va fi:
1 a s,
j= öi şi   = s ± öi pentru s ƒ i
a ij a i,
În concluzie, dacă ne hotărâm să introducem în bază variabila j, % |_!|| |
|  | + | |  |  | | "| #!| | !&, nu poate fi decât aceea care
corespunde acelui aij |&_ din coloana j din matricea B-1öS, 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:
  
|-| # ë  |
2  #  0 
 1  0

|
Condiţia de mai sus este numită  ||||!&.
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:
.

(  B) =  B Ö j ö x j =  - ö
1

a i-
ö i

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

/ 1 i  0
(  )  (B) M
 0 ö
1
a i0
ö  i  (B) M 2 ö ö  i Ê 0
1
a i2
 Öj 0
a i3  0

În concluzie, dacă vrem să obţinem o soluţie strict mai bună vom alege o variabilă xj
corespunzătoare unui Öj < 0. Noua soluţie va exista efectiv doar dacă pe coloana j din matricea B-1öS
există o componentă aij strict pozitivă şi va fi efectiv strict mai bună doar dacă componenta
1
corespunzătoare i din soluţia de bază este diferită de 0, îmbunătăţirea fiind egală cu Ö j ö ö i .
a ij
Situaţia în care toate componentele coloanei j din matricea B-1öS sunt mai mici sau egale cu
0 este lămurit de următoarea teoremă:

!
 : Dacă pe coloana j din matricea B-1öS, corespunzătoare unei variabile xj cu Ö0|.|1,
|#| |#|#| |%| |& atunci problema are #|".

á 
: 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: :i =i ± 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:

(:) = (B) ± Öjö. şi avem: lim


:   

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:

22
Bazele cercetării operaţionale

 
 4 ö min  i 
max 4
m 1Ê Ê n  1Ê i Ê m a 4 
5 0  a i5  0 i 
 
Această condiţie este  ||||!&.
Deoarece calculul necesar găsirii acestuia este laborios, Danzig a preferat înlocuirea acestei
alegeri cu alegerea acelui j care corespunde celui mai negativ Öj (= ± max
Ö j ), variantă care
m 1 j n
Ö j 0

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:

B = B-1ö b
z = c 6T ö -1ö A
Ö=z±c

Acest mod de lucru este efectiv folosit în anumite variante ale algoritmului simplex (vezi
forma revizuită) dar el presupune calcularea inversei matricei , 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ă  7 se obţine din fosta soluţie cu formulele deja găsite mai sus:

1
 j= ö i şi
a ij
a s8
  = s ± öi pentru s ƒ i
a i8

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


a
2.| o variabilă secundară xk, diferită de xi, va avea coeficienţii a sk a sj ö ik în
a ij
a ik
ecuaţiile s ƒ i şi coeficientul în ecuaţia i.
a ij
a s9
3.| noua variabilă secundară xi va avea coeficienţii ± în ecuaţiile s ƒ i şi coeficien-
a i9
1
tul în ecuaţia i.
a ij
:
4.| noua valoare a funcţiei obiectiv va fi: (  ) =
 B
Öj ö
1
a ij
ö i

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

23
Bazele cercetării operaţionale
n n
a ik 1 1
(x) = (  ) ± B
«Ö
k m 1
k ö x k ± Öjö(± «
k m 1 a ij
öxk ±
a ij
ö xi +
a ij
öi) =
kƒ j kƒ j

< n
   Ö 
=
 ; ö
1
a i;
ö i ± «  Ö k Öj
a ik
a ij
 ö xk ± j
  a ij
 öxi =

k m 1   
kƒ j

= n
   > 
>
a ik
= ( )± > 
k m 1
k
a i>
öxk ±


 a>
 i
 öxi


k

a ik >
de unde rezultă că k  k > pentru k i şi i 
a i> a 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ă % |
 %$  , aşa cum se va vedea în algoritmul simplex.

( ||4 5|


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

 |2*| 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-1ö A ş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-1ö b, 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ă (B) î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 B);
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-1ö A 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)
24
Bazele cercetării operaţionale

 |6*| 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-1ö A sunt mai mici sau egale cu 0.
Atunci toate soluţiile de forma B - 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ă.
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  
   
  fiind
formată din combinaţiile convexe ale soluţiilor de forma B - ajö unde B sunt toate
soluţiile optime de bază.
| dacă există Öj < 0 atunci îl alegem pe cel mai negativ: Ök = min Ö j . Variabila xj
m 1 j n
Ö j 0

va fi cea care intră în noua bază. Dacă minimul este multiplu atunci alegem, la
întâmplare, unul dintre aceştia (cei minimi).
 |7*| Se analizează elementele coloanei aj din B-1ö A, 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|

-| s *| Variabila xi corespunzătoare raportului minim este cea care va ieşi din
a sj
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 i 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 ##|#||
|  | /82| | | 0 ş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:
b i1 jk b i 2 jk
, pentru toţi indicii jk ai coloanelor lui B-1, i1 şi i2 fiind doi
a i1 j a i2 j
din indicii care dau acelaşi minim până la sfârşit sau altfel scris
b i1 jk a i1 j
pentru orice jk  liniile i1 şi i2 din B-1 sunt proporţionale,
b i 2 jk a i 2 j
fapt ce contrazice faptul că B-1 este inversabilă.
25
Bazele cercetării operaţionale

 |9*| 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 _, î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 (B)). 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 =
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
_.
 |:*| Se reia algoritmul de la pasul 2.

R: Fie problema de programare liniară:


max 3x 1 2 x 2 x 3 4 x 4 3x 5 5x 6
? x 1 2x 2 x 3 x 4 3x 5 x 6 8
l2x 1 2 x 2 3x 3 x 4 3x 5 2 x 6 15
 3x x 2x 2x x 2 x 11
l 1 2 3 4 5 6
x i  0, i 1,...,6

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:


max 3x 1 2 x 2 x 3 4 x 4 3x 5 5x 6
@ x 1 2x 2 x 3 x 4 3x 5 x 6 x 7 8
l2x 1 2 x 2 3x 3 x 4 3x 5 2 x 6 x 8 15
 3x x 2 x 2 x x 2 x x 11
l 1 2 3 4 5 6 9
x i  0, i 1,...,9

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


 3
 2
1
 4  1 2 1 1 3 1 1 0 0 1 2 1  3
c =  3  , A =  2 2 3 1 3 2 0 1 0  , B =  2 2 3  , cB =  2
 5  3 1 2 2 1 2 0 0 1  3 1 2 1
     
 0
 0 
 0

26
Bazele cercetării operaţionale

 1 3 4 
 
 7 7 7 
1
vom calcula matricea B-1 =  5 1 1  şi pe baza acesteia soluţia de bază B = B-1öb =  2  şi
 7 7 7  3
 4  
5 2
 
 7 7 7
 6 2 3 1 3 4 
1 0 0 
 7 7 7 7 7 7 
2 11 1 5 1 1
matricea B ö A =  0 1 0
-1
 care se trec în tabelul simplex:
 7 7 7 7 7 7
 3 1 2 4 5 2
0 0 1 
 7 7 7 7 7 7

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

ş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 0
cB xB B x1 x2 x3 x4 x5 x6 x7 x8 x9
6 2 3 1 3 4
3 x1 1 1 0 0
7 7 7 7 7 7
2 11 1 5 1 1
2 x2 2 0 1 0
7 7 7 7 7 7
3 1 2 4 5 2
1 x3 3 0 0 1
7 7 7 7 7 7
19 17 13 9 6 8
10 3 2 1
7 7 7 7 7 7
9 4 22 9 6 8
0 0 0
7 7 7 7 7 7

Din tabel se observă că există Öj < 0, aceştia fiind Ö4, Ö5, Ö6, Ö8 iar minimul lor este Ö6.
 
 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 max  Ö j ö min i  şi deci de calculat:
4 Ê jÊ 9
 1Ê i Ê 3 a 
Ö j 0  a ij  0 ij 

 
 9  1 2  3
4 ö min i = ö min , =
1Ê i Ê 3 a
a i4  0 i4
7  6 2  2
 
 7 7 

27
Bazele cercetării operaţionale

 
i 4  2 3  8
5 ö min = ö min , =
1Ê i Ê 3 a
i5 7  11 1  11
a i5  0  
 7 7 

 
i 22  1 2 3  22
6 ö min = ö min , , =
1Ê i Ê 3 a
i6 7  3 1 2  3
a i6  0  
 7 7 7 

 
i 6  3  18
Ö 8 ö min = ö min  =
1 i 3a
a i8  0 i8
7  5  5
 
 7 
3 8 22 18 22
şi în final max ( , , , )= şi corespunde tot lui Ö6.
2 11 3 5 3
Î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 7 2 3 21
1 = = , 2 = = 14, 3 = =
3 3 1 2 2
7 7 7
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:

3
1.| pivotul este a16 =
7
4.| de exemplu, pentru elementul de pe poziţia a34 avem dreptunghiul:

6 3
7 7

3 2

7 7

3  3 6 2
ö  ö
7  7 7 7
şi noua valoare de pe această poziţie va fi: = ±1
3
7
În final, tabelul corespunzător noii baze va fi:

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

28
Bazele cercetării operaţionale

7 7 2 1 4
5 x6 0 0 2 1 1
3 3 3 3 3
5 1 5 2 1
2 x2 1 0 0 0 0
3 3 3 3 3
7 2 1 2 2
1 x3 0 1 1 0 1
3 3 3 3 3
52 22 8 7 16
0 0 5 0 4
3 3 3 3 3

Continuând algoritmul vom găsi tabelele:

3 2 1 4 3 5 0 0 0
cB xB B x1 x2 x3 x4 x5 x6 x7 x8 x9
14 5 1 1 2
5 x6 0 1 1 1 0
3 3 3 3 3
5 1 5 2 1
2 x2 1 0 0 0 0
3 3 3 3 3
7 2 1 2 2
0 x8 0 1 1 0 1
3 3 3 3 3
80 14 4 1 8
0 4 1 0 0
3 3 3 3 3

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

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ă.

|
#| | ||!&|#!|||

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

29
Bazele cercetării operaţionale

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:
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:
Aö x = b şi Aöx + y = b
Este 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:

%# |#'|| |"&|


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

30
Bazele cercetării operaţionale


max  c T ö x

 öx  b
 x0


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

)&|2 Construim problema:





min  y
 öx y  b

 x, y  0

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

1)| ## |" ||||&_. 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 !#| |  | |
 .
2)| ## |" | ||1. Î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.
|
)&|6 Î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, Ö, (B), 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.

|!&|"|+#|&,|
|
Dată problema de programare liniară la forma standard de maxim:


max  c T ö x

 öx  b
 x 0


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

Construim problema:

max  c T x y

 öx y  b

 x, y  0

î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:

31
Bazele cercetării operaţionale

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 _!|".

32
Bazele cercetării operaţionale

R Fie problema de programare liniară:


max  2 x 1 3x 2
3x 1 x 2 Ê 10

 x 1 4x 2  2

 x1, x 2  0
Forma standard a problemei va fi:

max 2 x 1 3x 2
A3x x 2 x 3 10
l 1
 x 1 4x 2 x 4 2
lx 1 , x 2 , x 3 , x 4  0

Avem deja termenii liberi şi o coloană a matricii unitate  10  corespunzătoare variabilei x3.
 
Pentru a obţine şi a doua coloană  1  vom introduce variabila x5 cu coeficientul 1 în a doua ecuaţie
0
 
şi în final vom avea de rezolvat problema:

%# |#'|| |"& Metoda bazei artificiale


min  x5
max  2 x 1 3x 2 x 5
 3x 1 x 2 x 3  10  3x 1 x 2 x 3  10
 
x 1 4x 2 x 4 x 5  2 x 1 4 x 2 x 4 x 5  2

x 1 , x 2 , x 3 , x 4 , x 5  0 
x 1 , x 2 , x 3 , x 4 , x 5  0

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

0 0 0 0 1
cB xB B x1 x2 x3 x4 x5
0 x3 10 3 1 1 0 0
1 x5 2 1 4 0 -1 1
2 1 4 0 -1 1
1 4 0 -1 0

0 0 0 0 1
cB xB B x1 x2 x3 x4 x5
19 11 1 1
0 x3 0 1
2 4 4 4
1 1 1 1
0 x2 1 0
2 4 4 4
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 x5,
înlocuim valorile coeficienţilor funcţiei obiectiv şi deci şi valoarea acesteia, valorile Ö şi obţinem
tabelul:

33
Bazele cercetării operaţionale

2 3 0 0
cB xB B x1 x2 x3 x4
19 11 1
0 x3 0 1
2 4 4
1 1 1
3 x2 1 0
2 4 4
3 5 3
0 0
2 4 4

2 3 0 0
cB xB B x1 x2 x3 x4
0 x3 4 0 -11 1 3
2 x1 2 1 4 0 -1
4 0 5 0 -2

2 3 0 0
cB xB B x1 x2 x3 x4
4 11 1
0 x4 0 1
3 3 3
10 1 1
2 x1 1 0
3 3 3
20 7 2
0 0
3 3 3

2 3 0 0
cB xB B x1 x2 x3 x4
0 x4 38 11 0 4 1
3 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 | |# vom obţine succesiv tabele:

2 3 0 0 -M
cB xB B 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 -M
cB xB B x1 x2 x3 x4 x5
19 11 1 1
0 x3 0 1
2 4 4 4
1 1 1 1
3 x2 1 0
2 4 4 4
3 5 3 3
0 0 M+
2 4 4 4

34
Bazele cercetării operaţionale

2 3 0 0 -M
cB xB B x1 x2 x3 x4 x5
0 x3 4 0 -11 1 3 -3
2 x1 2 1 4 0 -1 1
4 0 5 0 -2 2+M

2 3 0 0 -M
cB xB B x1 x2 x3 x4 x5
4 11 1
0 x4 0 1 -1
3 3 3
10 1 1
2 x1 1 0 0
3 3 3
20 7 2
0 0 M
3 3 3

2 3 0 0 -M
cB xB B x1 x2 x3 x4 x5
0 x4 38 11 0 4 1 -1
3 x2 10 3 1 1 0 0
30 7 0 3 0 M

Rezultatul final este evident acelaşi.

o ||||(  ||4 5|


|
2*| %# |#'| |
|
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ă pentru care toţi Öj  0


!&| |#! = 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 %#|
#'|# şi o bază 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.

35
Bazele cercetării operaţionale

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:

 |2*| Se construieşte tabelul simplex asociat acestei baze, la fel ca şi la algoritmul simplex
primal;
 |6*| Se analizează componentele soluţiei:
|Dacă |#| |#|#| |%| |1 atunci soluţia este şi primal
admisibilă, deci optimă.
|Dacă '| #| | %_, variabila corespunzătoare celei mai
negative (xi = min x k ) este cea care iese din bază. Dacă minimul este multiplu se
1Ê k Ê m
ia una la întâmplare.
 |7*| Se analizează linia li corespunzătoare variabilei xi aleasă la pasul 2:
|Dacă |# aij j = 1,...,n sunt #|#| |%| |1, 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ă '|#||%_, atunci pentru acestea se găseşte acel indice
Öj
pentru care se obţine min (prin  am notat modulul numărului ). Dacă
a ij  0 a
ij

minimul este multiplu alegem unul dintre aceştia la întâmplare. Variabila


corespunzătoare acestuia este cea care intră în bază.
 |9*| Se construieşte tabelul corespunzător noii baze aplicând aceleaşi reguli ca la algoritmul
simplex primal;
 |:*| Se reia algoritmul de la pasul 2

6*| )#| |


|
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ă.

 |2*| Datele problemei vor fi organizate într-un tabel de forma:

cS
c x  xS
(B) ÖS
cB xB B = B-1öb B-1öS
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.

 |6*| ;| | |  | 7*| | 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.

36
Bazele cercetării operaţionale

 |9*| 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 schimbat
4)| Celelalte elemente se calculează cu regula dreptunghiului

 |:*| Se reia algoritmul de la pasul 2.

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


max 2 x 1 3x 2
 1 x 2 Ê 10
3 x

 x 1 4x 2  2

 x1 , x 2  0

max  2 x 1 3x 2
3x x 2 x 3  10
Forma standard a problemei va fi: 
 1
 x 1 4x 2 x 4  2

x 1 , x 2 , x 3 , x 4  0

max
 2 x 1 3x 2 x 5
3x x 2 x 3  10
iar după introducerea variabilelor artificiale obţinem: 
 1
x 1 4x 2 x 4 x 5  2

x 1 , x 2 , x 3 , x 4 , x 5  0
Tabelul corespunzător va fi:

2 3 0
cB xB B x1 x2 x4
-2M -M-2 -4M-3 M
2 x1 0 -1 0 0
3 x2 0 0 -1 0
0 x3 10 3 1 0
0 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 0
cB xB B x1 x5 x4 cB xB B x1 x4
3
2
5
4 M+¾ -¾ 3
2
5
4 -¾
2 x1 0 -1 0 0 2 x1 0 -1 0
3 x2 ½ ¼ ¼ -¼ M 3 x2 ½ ¼ -¼
0 x3 19
2
11
4 -¼ ¼ 0 x3 19
2
11
4 ¼
0 x4 0 0 0 -1 0 x4 0 0 -1
-M x5 0 0 -1 0

şi în continuare:

37
Bazele cercetării operaţionale

3 0 3 0
cB xB B x2 x4 cB xB B x2 x3
4 5 -2 20
3
7
3
2
3
2 x1 2 4 -1 2 x1 10
3
1
3
1
3
3 x2 0 -1 0 › 3 x2 0 -1 0
0 x3 4 -11 3 0 x3 0 0 -1
0 x4 0 0 -1 0 x4 4
3
11
3
1
3

2 0
cB xB B x1 x3
30 7 3
› 2 x1 0 -1 0
3 x2 10 3 1
0 x3 0 0 -1
0 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.

7*| )#|_& ||%#  |#'|


|
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-1 A 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 B = B-1 b B-1

(B) ʌ = c TB ö B-1

numit tabelul simplex redus.

38
Bazele cercetării operaţionale

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):

 |2*| Se calculează Öj corespunzători variabilelor secundare cu formula cunoscută:

Öj = c TB öB-1ö Pj - cj = ʌöPj - cj

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

 |6*| 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.

 |7*| Se calculează ak = B-1Pk care se ataşează ca nouă coloană la tabel:

cB xB B = B-1 b B-1 ak = B-1Pk

(B) ʌ = c TB ö B-1 Ök

 |9*| 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:

i
ark = min
1 i ma
a  0 ik
ik

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

 |:*| Se pivotează întregul tabel simplex şi se elimină ultima coloană.


 |<*| Se reia algoritmul de la pasul 2.

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


max  2 x 1 3x 2
3x 1 x 2 Ê 10

 x 1 4x 2  2

 x1 , x 2  0

max  2 x 1 3x 2
3x x 2 x 3  10
Forma standard a problemei va fi: 
 1
 x 1 4x 2 x 4  2

x 1 , x 2 , x 3 , x 4  0

39
Bazele cercetării operaţionale


max  2 x 1 3x 2 x 5
3x x 2 x 3  10
iar după introducerea variabilelor artificiale obţinem: 
 1
x 1 4 x 2 x 4 x 5  2

x 1 , x 2 , x 3 , x 4 , x 5  0

||2* Prima bază este B = I2 = B-1 corespunzătoare variabilelor x3 şi x5 de unde rezultă B =


10  şi ʌ = (0,-M)öI2 = (0,-M). Primul tabel redus va fi:
2

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

Se calculează ÖS = ʌöS ± cS = (0,-M)ö  13 14 01 ±


2 3 0 =
M 2 4 M 3 M
 
de unde rezultă că cel mai negativ este Ö2 şi vom calcula coloana a2 = I2ö  14  =  14  care se adaugă
   
la tabelul anterior rezultând:

0 x3 10 1 0 1
-M x5 2 0 1 4
-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:

0 x3 19
2 1 -¼
3 x2 ½ 0 ¼
3
2 0 ¾

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


|6*|| ÖS = ʌö S ± cS = (0,¾)ö  13 01 ±
2 0 = ( 5 4 3 4 )
 
1 1 4   3   11 4 
cel mai negativ este Ö1 şi vom calcula coloana a1 =  1 
ö  1  =  1  care se
0 4     4
adaugă la tabelul anterior rezultând:
0 x3 19 2 1 -¼ 11
4
3 x2 ½ 0 ¼ ¼
3
2 0 ¾ 54

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:

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

40
Bazele cercetării operaţionale

|7*|| ÖS = ʌö S ± cS = (0,2)ö  14 01 ±


3 0 = ( 8 2 )
 
cel mai negativ este Ö4 şi vom calcula coloana a4 =  10 13  ö  01 =  31 care se
     
adaugă la tabelul anterior rezultând:

0 x3 4 1 -3 3
2 x1 2 0 1 -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:

4 1
0 x4 3 3 -1
2 x1 10
3
1
3
0
20 2
3 3 0

|9*|| ÖS = ʌö S ± cS = ( 2 3 ,0)ö  14 10  ±
3 0 = ( 7 3 0 )
 
1  1   11 3 
cel mai negativ este Ö2 şi vom calcula coloana a2 =  1 3
1
 ö   =  1  care se
 3 0   4  3 
adaugă la tabelul anterior rezultând:

0 x4 4
3
1
3
-1 11 3
2 x1 10 1 0 1
3 3 3
20
3
2
3
0 73

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:

0 x4 38 4 -1
3 x2 10 1 0
30 3 0

|:*|ÖS = ʌöS ± cS = (3,0)ö  13 10  ±


2 0 = ( 7 3 ) >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.
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.

41
Bazele cercetării operaţionale

!#| |


      
    


  
. 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, « ,b m)

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

  11  12 V V  1 
 
  22 V V  2 
A =  21 

 
  1  2 V V   

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

ai1x1 + ai2 x2 + « + ainxn  bi  ai1 x1 + ai2x2 + « + ainxn bi  ai1 x1 + ai2x2 + « + ainxn = bi

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

xj  0  xj 0  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;


| c TD = vectorul coeficienţilor funcţiei obiectiv ai problemei duale;
| b BT = 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ă:

42
Bazele cercetării operaţionale

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

| Este de tipul: a i1x1 + ai2 x2 + « + a inxn  bi într-o problemă de ## sau


| Este de tipul: a i1x1 + ai2 x2 + « + a inxn bi într-o problemă de #'#.

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

| Este de tipul: a i1x1 + ai2 x2 + « + a inxn  bi într-o problemă de #'# sau


| Este de tipul: a i1x1 + ai2 x2 + « + a inxn bi într-o problemă de ##.

| O restricţie de tipul: ai1x1 + ai2x2 + « + ainxn - bi  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;


| | -| + 23| 63| =| #,, 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  a primalei;
|  -|!!, deci coeficienţii funcţiei obiectiv a dualei sunt termenii liberi ai restricţiilor
!

primalei;

| !  - , deci termenii liberi din restricţiile dualei sunt coeficienţii funcţiei obiectiv a
primalei.
| |-|, 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 4 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 4 a dualei, avem nevoie de:

| coloana coeficienţilor corespunzători variabilei 4 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.

43
Bazele cercetării operaţionale

R Ne propunem să construim duala problemei următoare:

(max) = 2x1 ± 5x2 + 4x3


C1 2 4 3  7
l 5 3 6
l2 1 3

l 1 2 3 3
l 3 2 1 52  8
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  7


u2 corespunzătoare restricţiei: x2 ± 5x1 + 3x3 = 6
u3 corespunzătoare restricţiei: x1 + 2x3 3
u4 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ă: = 7u1 + 6u2 + 3u3 + 8u4
| duala va avea 3 restricţii, câte variabile are primala, ele obţinându-se astfel:




  (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 .

   prima restricţie va fi: u1 ±5u2 + u3 + 2u4 2



 (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.

   a doua restricţie va fi: -u1 + u2 - 5u4 = -5

44
Bazele cercetării operaţionale




 (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ă:

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  .

   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 
 
, 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) = 7u1 + 6u2 + 3u3 + 8u4


Du 1 - 5u 2 u 3 2u 4 2
l
 - u1 u 2 - 5u 4 - 5
l4u1 3u 2 2u 3 - u 4  4
u1 0, u2 oarecare, u3  0, u4  0

R  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.

Produse Disponibil
P1 P2 P3
Resurse (unităţi fizice)
Forţa de muncă 1 3 4 15
Mijloace de muncă 2 5 1 10
Materii prime 4 1 2 25
Preţ de vânzare _
3 2 6
(unităţi monetare)

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 P 2;
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:

45
Bazele cercetării operaţionale

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



1 3  2 4  3  15

 2 1 5  2  3 Ê 10
4 1  2 2  3 Ê 25

 2  1
xj  0 (j = 1,2,3)

Duala sa va fi:

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


 1 2 2 4 3  3

31 5 2  3  4  2
 4  2  6
 1 2 3

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.

R

Primala Duala

(min) = 4x1 + 3x2 (max) = 56u1 + 43u 2 + 31u3 + 20u4 + 30u5 + 41u 6 + 65u7
E1 4  2  56 1  2  3  4 2 5 3 6 5 7 Ê 4
l 3   43 
l1 2 41 3 2 2 3  4  5  6  7 Ê 3
l1 2  2  31 uI  0 (i = 1,7)
l
 1  2  20
l2    30
l 1 2

l3 1  2  41
l
5 1  2  65
x1, x2  0

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:

i Duala problemei duale este problema primală.

46
Bazele cercetării operaţionale

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 cu proprietatea: (    )() = ) ş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.

 
 Dacă o problemă este la forma canonică atunci şi duala sa este o problemă la
forma canonică.

 
 . Dacă o problemă este la forma standard atunci duala sa  este la forma
standard.
i . 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.

!
     

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.



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

Primala Duala

(max) cTx (min) bTu


Ax b ATu  c
x0 u0

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ă:

i 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

á 
 Avem:
ATu  c M (ATu)T  cT M uTA  cT
u T A  cT
 F u T Ax  c T x
1
 x0
De asemenea:
47
Bazele cercetării operaţionale

G Ax b
 T
 uT Ax u T b bT u
2
u  0 Mu  0
Obţinem:

1
H
  bT u  u T Ax  cT x M bT u  cT x q.e.d.

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

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

 
, care dă optimul problemei, adică cTxB = max c T x . Toţi Öj corespunzători acestei
x admisibila

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

!
B-1 A  cT M 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-1 b = (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ă (xB) = (u*).

2.| Problema are optim infinit. În acest caz, dacă duala ar avea soluţii admisibile u, (u) ar fi
un majorant pentru mulţimea { (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ă.

! Y  Y   |

Fie x* =
1* ,  2* ,...,  * şi u* =
1* ,  2* ,...,  * 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:

I*  
l    « 4  4 
 *

l 


0  1,  J(u * ) T (b Ax* ) 0
 
4 1
sau, matricial 
l  [(u ) A c]ö x
* T *
0
 « 4 * 4   *4 0 4 1,
l1 

á 

48
Bazele cercetării operaţionale


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

 * 
  (u*)T(b ± Ax*)  0
*  0 
!  *   * T *
*   (( u ) A - c)(x )  0 
 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

 (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.

 
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:

³ 
  
4  
  

 

     

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

1. !
 . 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. 
  . 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
49
Bazele cercetării operaţionale

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. R   . Î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ă. s Y Y Y
a soluţiei dualei depinde de specificul problemei şi
trebuie găsită de la caz la caz. Expunem în continuare   Y Y
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
problemei duale. Semnificaţia economică a indicatorilor ui 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:

R: 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:

Produse Disponibil
P1 P2 P3
Resurse (unităţi fizice)
Forţa de muncă 1 3 4 15
Mijloace de muncă 2 5 1 10
Materii prime 4 1 2 25
Preţ de vânzare
3 2 6 -
(unităţi monetare)

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) = 3ö x1 + 2ö x2 + 6öx3
Kx 3x 2 4x 3
l1
15
2x 1 5x 2 x 3 10
l4x 1 x 2 2x 3 25
x1, x2, x3  0

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

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


Lu 2u 2 4u 3  3
l1
3u 1 5u 2 u 3  2
l4u 1 u 2 2u 3  6
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:

50
Bazele cercetării operaţionale

3 2 6 0 0 0
cB xB B x1 x2 x3 s1 s2 s3
20 1 2 1
6 x3 0 1 0
7 7 7 7
25 17 1 4
3 x1 1 0 0
7 7 7 7
35
0 x6 0 -9 0 0 -2 1
7
195 57 9 6
zj - 3 6 0
7 7 7 7
43 9 6
Öj - - 0 0 0
7 7 7

R : 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 P 3). Î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) = 4öx1 + 3ö x2 + 7ö x3 + 2ö x4 (max) = 5x1 + 20x2 + 100x3

în condiţiile în condiţiile

Mx 2x 2  5
l1
Nu 1 u 2 2u 3 4
x 1 x 2 x 3 x 4  20 l u 2 5u 3 3
l2x 1 5x 2 8x 3 3x 4  100  - 2u u 8u 7
l 1 2 3
x1, x2, x3, x4  0 u 2 3u 3 2
u1 oarecare, u2,u3  0 şi u4 0


R: 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:

51
Bazele cercetării operaţionale

Primală Duală

(max) = 3öx1 + 2ö x2 + 6öx3 (min) = 15öu1 + 10ö u2 + 25ö u3 + u4


x 1 3x 2 4 x 3  15 O 2u 2 4 u 3  3
u
l1
2x 1 5x 2 x 3 Ê 10 3u 1 5u 2 u 3 u 4  2
4x x 2x 3 Ê 25 l4u 1 u 2 2u 3  6
 1 2
 x2  1 u1 oarecare, u2, u3  0, u4 0
x1, x2, x3  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 ui 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 ui = 0. Un produs Pj va
apărea în soluţia optimă, (j > 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:

 u i a iP = cP
m
(R)
i 1

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:

a12ö u1 + a22öu2 + a32öu3 > c2

9 6
adică: 3ö + 5ö + 1ö 0 = 8,1 > 2.
7 7

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 (x), mărimea ui reprezintă valoarea ultimei unităţi folosite în
producţie din resursa Ri.
Având în vedere că max[ (x)] = min [ (u)], rezultă că, dacă, cantitatea disponibilă din
resursa Ri creşte cu o unitate, atunci valoarea funcţiei obiectiv creşte cu ui, 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 (x) şi (u) sunt legate prin teorema dualităţii
52
Bazele cercetării operaţionale
n
inferioară impusă ( « a ij x j  bi), de a reduce nivelul termenului liber bi. Este evident că, dacă o
j 1
n
resursă nu este utilizată în întregime pentru satisfacerea programului optimal B (  a iQ x Q < bi),
Q 1
5
atunci ui = 0 iar funcţia obiectiv nu este afectată de sporirea cantităţii disponibile bi. În cazul
restricţiilor de tip calitativ, acestea nu constituie un "loc îngust" pentru programul optimal B dacă şi
n
numai dacă « a ij x j > bi, ca urmare ui = 0 iar funcţia obiectiv nu este influenţată de reducerea2
i 1
nivelului pentru indicatorul bi.
Pentru o problemă scrisă sub formă canonică, în care se cere minimizarea funcţiei (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ă ui
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 bi 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:

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

B = (u1, u2, u3, u4) = (9/7, 6/7, 0, ± 43/7).

Se constată imediat că valoarea funcţiei obiectiv (B) = (B) = 152/7 este mai mică decât
cea obţinută prin rezolvarea modelului din exemplul 1, cu Ö (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 (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

5
Variaţia termenului liber b i 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.

53
Bazele cercetării operaţionale

ale primei resurse (b2 = 10, b3 = 25).

Cantitatea disponibilă din prima resursă (b1)


Variabile 15 16 26 36 40 41
u4 3 3 3 3 3 3
x1 25/7 24/7 2 4/7 0 0
u5 57/7 57/7 57/7 57/7 57/7 30
x2 0 0 0 0 0 0
u6 6 6 6 6 6 6
x3 20/7 22/7 6 62/7 10 10
u1 9/7 9/7 9/7 9/7 9/7 0
x4 0 0 0 0 0 1
u2 6/7 6/7 6/7 6/7 6/7 6
x5 0 0 0 0 0 0
u3 0 0 0 0 0 0
x6 5 5 5 5 5 5
(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 u1öÖ b1,
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 b2 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 bi 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
F
ui =
bi

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ă:

m m
zj = « c i y ij = « u i a ij j Ü JS
i 1 i 1

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

m
F = (x) + « uiöRi (x)
i 1

unde Ri(x) reprezintă restricţiile problemei de programare liniară iar u i, 1 i m sunt multiplicatorii lui Lagrange.
54
Bazele cercetării operaţionale

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,
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, ... , u m) 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 ui, 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 (x), indicatorii zj reprezintă costul
unitar de fabricaţie al produsului j, rezultat din evaluarea coeficienţilor aij 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 aj 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 a j 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).

55
Bazele cercetării operaţionale

|
#&|
|
Presupunem că am rezolvat o problemă de programare liniară, cunoscând pentru aceasta
soluţia optimă de bază B =B-1öb, 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.|||#"||#|_  |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ă:

ï
c
ï
s

ï xB B xB xS

B-1ö b Im B-1öS

ö B-1öb
ï 0 ï
4

care este de fapt fostul tabel, în care se recalculează ï


4 . Avem două cazuri:

a)| Dacă toţi 4   4  ö c 1 ö  4 /  0, soluţia este optimă;


/ / / /
c

b)| Dacă există un ï 4 < 0, se aplică în continuare algoritmul simplex primal, până la găsirea

soluţiei optime.
R: Pentru problema:
F.S.
(max) = 3x1 ±x2 + 2x3 (max) = 3x1 ± x2 +2x3 ± Ma1
1 2 Ê 4  1 2 1  4
 
 2 3  3 M  2 3 2 1  3
 2 3 Ê 5  2 3 3  5
 2  2
x1, x2, x3  0 x1, x2, x3, s1, s2, a1  0
56
Bazele cercetării operaţionale

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

3 -1 2 0 0 0 -M
ï xB B x1 x2 x3 s1 s2 s3 a1
3 x1 3 1 0 0 1 1 2 -2
2 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  = x1 ± 2x2 + 5x3 atunci tabelul corespunzător va fi:

1 -2 5 0 0 0 -M
ï xB B x1 x2 x3 s1 s2 s3 a1
1 x1 3 1 0 0 1 1 2 -2
5 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 ï
4
 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 = x1 + 3x2 - 2x3 atunci tabelul corespunzător va fi:

1 3 -2 0 0 0 -M
ï xB B 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 -1
3 x2 1 0 1 0 0 -1 -2 2
2 0 0 0 1 -4 -6 M+6

există ï
4
< 0 (de exemplu 2 4 ), 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.

& |6 Dacă se modifică doar componentele vectorului ! › !>

Deoarece matricea A rămâne aceeaşi, fosta bază rămâne bază şi în noua problemă. Soluţia
c  c
corespunzătoare va fi:  ï 1
ö ïiar Öï
4
ö 1 ö4 4 Ö4 . Î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ă  ï 0 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ă!).

57
Bazele cercetării operaţionale

R Pentru problema:


F.S.
(max) = - 4x1 ± x2 + 2x3 (max) = - 4x1 ± x2 + 2x3 ±Ma1

 4 2  2  3 Ê 17 R 1
l
4 2   17
 1 2 3 1

 2 1 2 5  3  14 M  2 1  2 5  3  2 1 14

 1 5  2 3  3  15 l 1 5  2 3  3 3 15
x1, x 2, x3  0 x1,x2, x3, s1, s2, s3, a1  0

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

-4 -1 2 0 0 0 -M
ï xB B x1 x2 x3 s1 s2 s3 a1
11 11 1
0 s1 22 0 1 0 0
3 3 3
11 22 5
0 s2 11 0 0 1 -1
3 3 3
1 5 1
2 x3 5 1 0 0 0
3 3 3
10 13 2
10 0 0 0 M
3 3 3

 1 
1 0 
 1 0 1  3
  5
din care obţinem inversa bazei B =  0 1 5  ca fiind B =  0
-1
1 
0 0 3   3
   1
0 0 
 3
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 -M
xB B x1 x2 x3 s1 s2 s3 a1
11 11 1
0 s1 4 0 1 0 0
3 3 3
11 22 5
0 s2 5 0 0 1 -1
3 3 3
1 5 1
2 x3 2 1 0 0 0
3 3 3
10 13 2
4 0 0 0 M
3 3 3

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:

58
Bazele cercetării operaţionale

-4 -1 2 0 0 0 -M
c
xB B x1 x2 x3 s1 s2 s3 a1
11 11 1
0 s1 6 0 1 0 0
3 3 3
11 22 5
0 s2 -1 0 0 1 -1
3 3 3
1 5 1
2 x3 1 1 0 0 0
3 3 3
10 13 2
2 0 0 0 M
3 3 3

ar exista componente ale soluţiei strict negative (de exemplu x 3 = -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.

& | 7* 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 B = B-1öb  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-1öak,
unde ak este vectorul coloană format din coeficienţii variabilei xk, nou introduse în
restricţiile problemei;
öB-1öak -
!
| Ök, corespunzători noilor variabile, se calculează cu formula cunoscută: Ök =
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ă!)






59
Bazele cercetării operaţionale

R Fie problema:


F.S.

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

 10 1 7  2  3  36 S
10  1 7  2  3  1  1
l
36

 1 2 Ê 5 M  1  2 5  3  2 5

 1 2 3 Ê 3 l 1  2  3  3 3
x1, x 2, x3  0 x1,x2, x3, s1, s2, s3, a1  0

pentru care obţinem tabelul simplex final:

3 4 -2 0 0 0 -M
xB B x1 x2 x3 s1 s2 s3 a1
1 1 1
4 x2 4 0 1 0 3
3 3 3
1 1 1
3 x1 1 1 0 0 -2
3 3 3
-2 x3 2 0 0 1 0 1 -1 0
1 1
15 0 0 0 4 2 M
3 3

 1 1
 3 
 7 10 1  3 3
 
de unde găsim inversa bazei B =  1 1 0  ca fiind B-1 =  1 2 1 .
 1 1 1 3 3
   
 0 1 1
 
1. Dacă introducem, în plus, variabilele x4, x5 şi x6, obţinând problema la forma standard:

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




10 1 7 2 3 4 5 3  6 1  1  36
 1 2 53 2 4 35 2 6 2  5

 1 2 3 2 4 2 5 6 3  3
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:
 1 1
 3 
 3 3  1   5 
1 1    
a4 =  2  ö  2  =  3 ,
3 3  2  4 
     
 0 1 1
 
60
Bazele cercetării operaţionale

 1 1
 3   28 
 3 3   1  3 
1 1    
a5 =  2  ö  3  =  19  ,
3 3    3 
   2  
0 1 1  1 
   
 1 1
 3 
 3 3  1   5 
1 1    
a6 =  2  ö  2  =  3 .
3 3    
   2  4 
0 1 1
 
| adăugăm:
| Ö4 = c öB-1öa4 ± c4 = 1
!

11
öB-1öa5 ± c5 =
!
| Ö5 =
3
17
| Ö6 = c öB-1öa6 ± c6 =
!

şi, final, obţinem tabelul:

3 4 -2 2 -20 -1 0 0 0 -M
xB B x1 x2 x3 x4 x5 x6 s1 s2 s3 a1
28 14 1 1 1
4 x2 4 0 1 0 5 3
3 3 3 3 3
19 8 1 1 1
3 x1 1 1 0 0 -3 -2
3 3 3 3 3
-2 x3 2 0 0 1 4 -1 3 0 1 -1 0
11 17 1 1
15 0 0 0 1 4 2 M
3 3 3 3

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 19 şi ne vom afla în cazul b) (deoarece Ö5 <
3
0); vom continua căutarea soluţiei optime cu algoritmul simplex primal.
|
& |9*||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
61
Bazele cercetării operaţionale

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ă).
Î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 = B

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 ca = -M, se construieşte
tabelul asociat ca la cazul a) şi se obţine o soluţie admisibilă (deoarece a = bm+1  0), cu
Öj depinzând de M (deoarece ca = -M). Se continuă cu algoritmul simplex primal.

R Fie problema:

F.S.

(max) = x1 ±3x2 + 2x3 (max) = x1 ±3x2 + 2x3


 4 1 2  2  3 Ê 9  4  1 2  2  3 1  9
 
  1 5  2  3  18 M   1 5  2  3  2  1  18
 3  4  2  3 Ê 18  3 4  2  3  3  18
 1  1

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

pentru care obţinem tabelul final:

62
Bazele cercetării operaţionale

1 -3 2 0 0 0 -M
cB xB B x1 x2 x3 s1 s2 s3 a1
0 s2 54 0 11 0 2 1 3 -1
2 x3 99 0 22 1 3 0 4 0
1 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:

 2 11 2 2 1  3  54  2  54 11 2 2 1  3
 
  3 22  2 3 1 4  3  99    3  99 22  2 31 4  3
  6 1  3  27    27 6   
 1 2  1 2 1 3

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


M -38x2 ± 6s1 ± 7s3 -172 M 38x2 + 6s1 + 7s3  172
M| 38x2 + 6s1 + 7s3 ± s = 172

T 2 11 2 21 3 54
l
l 22  2 31 4  3 99
şi sistemul:  3 iar în final, tabelul:
l 1 6  2 1  3 27
l38  2 6 1 7  3  172

1 -3 2 0 0 0 0
cB xB B x1 x2 x3 s1 s2 s3 s
0 s2 54 0 11 0 2 1 3 0
2 x3 99 0 22 1 3 0 4 0
1 x1 27 1 6 0 1 0 1 0
0 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


M -27x2 ± 4s1 ± 5s3 = -26 M 27x2 + 4s1 + 5s3 = 26
M| 27x2 + 4s1 + 5s3 + a = 26

63
Bazele cercetării operaţionale

U 2 11 2 2 1  3 54
l
l 22  2 31 4  3 99
rezultă sistemul:  3 iar în final, tabelul:
l 1 6  2 1  3 27
l27  2 4 1 5 3  26

1 -3 2 0 0 0 -M
cB xB B x1 x2 x3 s1 s2 s3 a
0 s2 54 0 11 0 2 1 3 0
2 x3 99 0 22 1 3 0 4 0
1 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.

& |:* Dacă se modifică coeficienţii unei variabile xj

4 din A şi/sau a coeficientului cj ›


Efectul este modificarea coloanei aj ›  ï 4 din funcţia
ï
obiectiv. Avem două variante:

& |:*2|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: B = B-1·b şi tabelul corespunzător este fostul tabel,
în care se modifică doar coloana corespunzătoare variabile xj :

-1 -1
4 , B ·aj › B ·  4 , Öj › 4 
cj › ï ö c 1 ö  ï
4 4
ï ï c
ï

Avem două cazuri:

| Dacă Ö ï
4  0 fosta soluţie optimă rămâne optimă şi în noua problemă.

| Dacă ï
4 < 0 fosta soluţie optimă este doar primal admisibilă şi se va continua rezolvarea

problemei cu algoritmul simplex primal.

R Fie problema:


F.S.

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


6  1 5  2  3  15 6  1 5  2  3  1  1  15
 
 6  1 5  2 4  3 Ê 15 M  6  1 5  2 4  3  2  15
4  5  3  5  4 5 2 3 3  5
 1 2  1

x1, x2, x3  0 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
 1 1
 6 1 5  0 
  -1  2 2
B=  6 0 5  ca fiind B =  1 5 6 
 4 0 5   0 2 3
 
 5 5 
64
Bazele cercetării operaţionale

2 3 4 0 0 0 -M
cB xB B x1 x2 x3 s1 s2 s3 a1
3 1 1
2 x1 10 1 0 0 0
2 2 2
0 s1 90 0 0 15 1 5 6 -1
2 3
3 x2 9 0 1 1 0 0
5 5
11 14
47 0 0 2 0 M
5 5

1.| Dacă se modifică coeficienţii variabilei x3, problema devenind:


F.S.
(max) = 2x1 +3x2 + 2x3 (max) = 2x1 +3x2 + 2x3
V6  1 5  2 2  3  15 W6  1 5  2 2  3 1  1 15
l l
 6  1 5  2 3  3 15 M  6  1 5  2 3  3  2 15
l4  5  3   5 l 4 5 3  5
1 2 3 1 2 3 3

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

 1 1  
0   2  0 
/  2 2     / 19
noua coloană corespunzătoare lui x3 va fi a 3 =  1 5 6  ·  3  =  1  iar Ö 3 = < 0, deci
2 3   3 5
0  3  
 5 5   5

ne aflăm în cazul b) şi vom continua rezolvarea problemei cu algoritmul simplex primal, de la
tabelul:

2 3 2 0 0 0 -M
cB xB B x1 x2 x3 s1 s2 s3 a1
1 1
2 x1 10 1 0 0 0 0
2 2
0 s1 90 0 0 -1 1 5 6 -1
3 2 3
3 x2 9 0 1 0 0
5 5 5
19 11 14
47 0 0 0 M
5 5 5

2.| Dacă se modifică coeficienţii variabilei x3, problema devenind:

F.S.
(max) = 2x1 +3x2 - 3x3 (max) = 2x1 +3x2 ± 3x3
X6  1 5  2 3  3  15 Y6  1 5  2 3  3 1  1 15
l l
 6  1 5  2 5  3 15 M  6  1 5  2 5  3  2 15
l4  5  2   5 l 4 5 2  5
1 2 3 1 2 3 3

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

65
Bazele cercetării operaţionale

 1 1  3
0   3  
 2 2    2 42
noua coloană corespunzătoare lui x3 va fi a/3 =  1 5 6  ·  5  = 16 iar Ö/3 = < 0, deci ne
2 3    4  5
0   2
 5 5  5
  
aflăm în cazul a) cu fosta soluţie optimă şi pentru noua problemă, tabelul final fiind:

2 3 -3 0 0 0 -M
cB xB B x1 x2 x3 s1 s2 s3 a1
3 1 1
2 x1 10 1 0 0 0
2 2 2
0 s1 90 0 0 16 1 5 6 -1
4 2 3
3 x2 9 0 1 0 0
5 5 5
42 11 14
47 0 0 0 M
5 5 5

& | :*6 Coloana aj face parte din baza B. În acest caz fosta bază nu mai există în noua
4 în B, poate fi:
matrice A. Noul minor B¶, obţinut prin înlocuirea lui aj cu  ï
| neinversabil (det B¶ = 0) caz în care trebuie căutată altă bază;
| inversabil, soluţia corespunzătoare B¶ = (B¶)-1·b putându-se în următoarele situaţii:
| are toate componentele pozitive (B¶  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):

 . Se scriu în noua problemă (adusă la forma canonică) toţi termenii cu variabila xj ca
o sumă de doi termeni, unul având coeficient fostul coeficient al variabilei xj iar celălalt diferenţa
dintre aceştia:

4 · xj = cj · xj + ( 4 - cj ) · xj
ï ï
 4ï· xij = aij · xj + (  4ï- aij) · xj

 . Se înlocuieşte în toţi termenii de forma ( ï 4 - cj) · xj şi (  4 - 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ă.

  . Pentru noua problemă, se aplică procedeul de la & | 9 pentru varianta c),
obţinându-se o soluţie de bază admisibilă cu care se continuă cu algoritmul simplex primal.

R După rezolvarea problemei:


66
Bazele cercetării operaţionale

F.S.

(max) = 2x1 +3x2 + 5x3 (max) = 2x1 +3x2 + 5x3


3  1  2 2  3 Ê 10 3  1  2 2  3  1  10
 
 1 2  2 3  3 Ê 8 M  1 2  2 3  3  2  8
2  2 
 1 2 3 Ê 6  1 2 3 3  6
x1, x2, x3  0 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 0
cB xB B x1 x2 x3 s1 s2 s3
1 3 2
2 x1 2 1 0 0
7 7 7
5 1 3
5 x3 2 0 1 0
7 7 7
4 5 1
0 s3 0 0 0 1
7 7 7
2 1 11
14 0 0 0
7 7 7

B şi B-1 fiind date mai jos:


 3 2 
 0
 3 2 0  7 7 
   1 3
B =  1 3 0 -1
B = 0
 7 7 
 2 1 1  5 
  1
 1
 7 7 
Dacă presupunem că se modifică coeficienţii variabilei x3, noua problemă fiind:
F.S.

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


Z3  1  2  3 10 [3  1  2  3  1 10
l l
 1 2  2  3 8 M  1 2  2  3  2 8
l2    6 l2     6
1 2 3 1 2 3 3

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

deoarece x3 face parte din bază, vom face transformarea:


F.S.
(max) = 2x1 +3x2 + 5x3 - 3y
(max) = 2x1 +3x2 + 2x3
3  1  2  3  1  10
\3  1  2 2  3 : 1 10
 l
l 1 2  2 3  3 2 :  2 8
 1 2  2  3  2  8 M 
2  l2  1  2  3  3 6
 1  2 3 3  6 l 3 :
x1, x2, x3, s1, s2, s3  0
x1, x2, x3, s1, s2, s3, y  0

67
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:

 3 2   1 
 0  
 1  7 7   1  7 
  1 3    5
B-1 ·  2  =  0 ·  2 =  
 
 0   7 7
  0   7
  5 1   3
 1  
 7 7   7 

 1 1 3 2
 1 7  2 7 : 7  1 7
2  2
5 5 1 3
  2  3 : 1 2  2
deci sistemul va avea forma:  7 7 7 7
4 3 5 1
 2 : 1 2 3  0
 7 7 7 7
 3  :

Din primele trei ecuaţii se scot variabilele bazei în funcţie de celelalte:

 1 1 3 2
1  2 7  2 7 : 7 1 7  2

 5 5 1 3
 3  2  2 : 1  2
 7 7 7 7
4
   : 3 5 1
1  2
 3
 7
2
7 7 7
5 5 1 3 5 2 1 3
apoi se înlocuiesc în ultima ecuaţie: 2  2 : 1  2 : M  2 : 1  2 2
7 7 7 7 7 7 7 7
în care se adaugă variabila de abatere a şi se adaugă la sistem. Se obţine în final problema:

(max) = 2x1 +3x2 + 5x3 - 3y


 1 1 3 2
 1 7  2 7
:
7
1
7
2  2
5 5 1 3
 2 3 : 1 2  2
7 7 7 7
4 3 5 1
 2 : 1 2 3  0
7 7 7 7
5 2 1 3
 2 : 1 2   2
7 7 7 7

Tabelul corespunzător va fi:

68
Bazele cercetării operaţionale

2 3 5 -3 0 0 0 -M
cB xB B x1 x2 x3 y s1 s2 s3 a
1 1 3 2
2 x1 2 1 0 0 0
7 7 7 7
5 5 1 3
5 x3 2 0 1 0 0
7 7 7 7
4 5 5 1
0 s3 0 0 0 1 0
7 7 7 7
5 2 1 3
-M a 2 0 0 0 1
7 7 7 7
2 5 2 2 1 1 11 3
14-2M 0 - M 0 M + M - M 0 0
7 7 7 7 7 7 7 7

î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 ci
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.

69
Bazele cercetării operaţionale

#&|

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 
  
 ai restricţiilor
sau         variază  
în funcţie de   
parametru.

|
& |2 Parametrizarea termenilor liberi ai restricţiilor

Aşadar termenii liberi ai restricţiilor au forma:

b() = b0 + b1ö M bi() = b i


0
b 1i ö    1, Ä
m
unde  Ü
este parametrul considerat iar b0, b1 Ü
sunt doi vectori cu componentele constante
reale. Pentru rezolvarea problemei pentru orice , vom parcurge următorii paşi:

   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 + b1ö0) + b1ö.

Vom găsi o soluţie x0 şi baza corespunzătoare B0.

   Se calculează soluţiile de bază xB(), corespunzătoare bazei găsite la pasul 1,
pentru  variabil:

xB() = B0 1 ö b


Deoarece valorile Öj = c TB ö B-1 ö a j c 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ă.

 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  ,  0 , unde  0 poate fi şi -ã iar  0 poate fi şi +ã (în general,
0

pentru orice bază, mulţimea pe care soluţia este pozitivă are această formă şi deci şi mulţimea pe
70
Bazele cercetării operaţionale

care nu există nici o bază cu soluţia pozitivă 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, 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  0 şi  0 este finit. Fie  0 acesta.
Pentru  >  0 , cel puţin una din componentele soluţiei de bază corespunzătoare bazei B0 va
fi strict negativă. Este clar că, pentru  >  0 , trebuie căutată altă bază optimă, dacă aceasta există.

 Reluăm algoritmul, pentru o valoare a lui  aflată în imediata vecinătate a lui  0 şi
 
 >  0 , astfel încât să ne situăm în intervalul imediat următor intervalului  0 ,  0 . Pentru găsirea

bazei corespunzătoare acestuia (sau pentru aflarea faptului că nu există nici o soluţie pentru  >  0 )
se aplică în continuare algoritmul simplex dual (deoarece toţi Öj  0).
Se obţine o succesiune de valori  0 < 1 <  2 <«<  * = +ã şi o succesiune de baze şi soluţii
optime asociate fiecărui interval.

 Reluăm algoritmul pentru o valoare a lui  aflată în imediata vecinătate a lui 0 şi 
 
< 0 , astfel încât să ne situăm în intervalul imediat anterior lui  0 ,  0 . Pentru găsirea bazei
corespunzătoare acestuia (sau pentru aflarea faptului că nu există nici o soluţie pentru  < 0 ) se
aplică în continuare algoritmul simplex dual (deoarece toţi Öj  0).
Se obţine o succesiune de valori  0 > 1 >  2 >«>   = -ã ş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.

R 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:

produse
P1 P2 P3 P4 P5 P6 Disponibil
mat. prime
M1 3 5 7 2 1 2 20 + 3
M2 5 6 9 3 4 5 40 + 2
M3 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.



 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:
71
Bazele cercetării operaţionale

F.S.
max (2x1 + 3x2 + 4x3 + x4 + x5 + 2x6) max (2x1 + 3x2 + 4x3 + x4 + x5 + 2x6)
31 5  2 7  3 2  4  5 2  6 Ê 20 3 31 5 2 7 3 2 4 5 2 6 1  20 3
 
5 1 6  2 9  3 3 4 4  5 5  6 Ê 40 2 M 5  1
6 2 9  3 3  4 4 5 5 6 2  40 2 
7  8  10  3  2  8  Ê 60  7  8 2 10 3 3 4 2 5 8  6 3  60 
 1 2 3 4 5 6  1
x1, x 2, x3, x4, x5, x6  0 x1, x 2, x3, x4, x5, x6  0

Pasul 1. Rezolvăm problema pentru  = 0 şi obţinem baza optimă:


1 2 5
 
B = (a5,a6,a2) =  4 5 6 
2 8 8
 

 4 12 13 
 
 31 31 62 
 10 180 50  , inversa bazei B-1 =  10
1 7

soluţia optimă xB =  , ,  şi ultimul tabel simplex:
 31 31 31   31 31 31 
 11 2 3
 
 31 31 62 

2 3 4 1 1 2 0 0 0
cB xB B x1 x2 x3 x4 x5 x6 s1 s2 s3
10 5 15 17 4 12 13
1 x5 0 1 0
31 62 31 62 31 31 62
180 14 9 2 10 1 7
2 x6 0 0 1
31 31 31 31 31 31 31
50 25 44 23 11 2 3
3 x2 1 0 0
31 62 31 62 31 31 62
520 6 5 8 9 4 3
0 0 0
31 31 31 31 31 31 31

Pasul 2. Se calculează soluţia de bază corespunzătoare bazei optime pentru  oarecare:

 4 12 13 
   10 11  
 31 31 62   20 3   31 62 
 10 1 7
 ö  40 2  =  180 25 
B() = B-1öb() =
 31 31  
 31 31 31   
 11 2 3  60    50 55 
    
 31 31 62   31 62 
Pasul 3. Se rezolvă sistemul de inecuaţii B  0:

10 11   0
31 62
180 25  20 36   = 20 36
B  0 M   0  Ü şi  0 =
31 31  11 , 5  0
11 5
50 55
  0
31 62

72
Bazele cercetării operaţionale

Pasul 4. Se observă că pentru  aflat în imediata vecinătate a lui  0 şi  >  0 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:
 4 12 13 
 
1 7 5  31 31 62 

| noua bază B = (a5, a3, a2) =  4 9 6 
  10
şi B-1 =
1 7

 31 31 31 
 2 10 8   11 2 3
   
 31 31 62 

| noua soluţie:
 4 12 13 
   10 7  
 31 31 62   20 3   6 
 10 1 7
 ö  40   25 
B() = B-1ö b() = 2  =  20 9  
 31 31 31  
 11 2 3   60    55 
    30  
 31 31 62   18 

| noul tabel simplex corespunzător noii baze:

2 3 4 1 1 2 0 0 0
cB xB B x1 x2 x3 x4 x5 x6 s1 s2 s3
7 5 1 5 2 1 1
1 x5 10  0 0 1
6 6 6 3 3 3 6
25 14 2 31 10 1 7
4 x3 20  0 1 0
9 9 9 9 9 9 9
55 47 1 44 11 2 19
3 x2 30  1 0 0 |
18 18 18 9 9 9 18
7 4 2 5 1 1 2
20  0 0 0
9 9 9 9 9 9 9

| noul interval pe care este optimă noua bază:

10 7   0
 6
 25  36 60  0
36 60
 20 9   0   Ü  ,    = şi 1 =
 55 5 7 5 7
30   0
 18

Reluând algoritmul vom obţine succesiv intervalele şi soluţiile următoare:


 15 7  
 4

 60 140   10 5 
 7 , 11  B = (a7, a3, a2) B =  3 6 
1.|  Ü 

 35 11  
 3 12 

73
Bazele cercetării operaţionale

 270 5  
 11 2 
 140   80 
2.|  Ü   B = (a 7, a3, a5) B =  
 11 ,  11
 70 1 
 11 2  
 

20
Pasul 5. Începând înapoi de la 0 = obţinem:
11

 20 11  
 3 3 
 20   40 10 
1.|  Ü B = (a5, a6, a9) B =   
 4 , 11  3 3
 100 55 
 3 3 
 
   20 3 
B = (a5, a8, a9) B =  40 10  
20
2.|  Ü
 3
, 4
  20 5 
 
 20 
3.|  Ü   ,  - sistemul nu are soluţii admisibile.
 3

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ă:


|  Ü   ,
20 
 disponibilul din M1 ar fi negativ, caz fără sens economic.
 3 

 20 
|  Ü întreprinderea va fabrica doar produse de tipul P5
 3 , 4 
 20 
|  Ü întreprinderea va fabrica doar produse de tipul P5 şi P6
 4 , 11 

|  Ü
 20 36  întreprinderea va fabrica doar produse de tipul P , P şi P
 11 , 5  5 6 2

|  Ü
 36 60  întreprinderea va fabrica doar produse de tipul P , P şi P
 5 , 7  5 3 2

 60 140 
|  Ü întreprinderea va fabrica doar produse de tipul P3 şi P2
 7 , 11 
 140 
|  Ü
 11 ,   întreprinderea va fabrica doar produse de tipul P3 şi P5

74
Bazele cercetării operaţionale

& |6 Parametrizarea coeficienţilor funcţiei obiectiv

Aşadar, coeficienţii funcţiei obiectiv au forma:

c( ) = c0 + c1ö M cj() = c ] c 1] ö  4  1,


0

n
unde  Ü
este parametrul considerat iar c0, c1 Ü
sunt doi vectori cu componentele constante
reale. Pentru rezolvarea problemei pentru orice , vom parcurge următorii paşi:

 2*| 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 + c1ö0) + c1ö.

Vom găsi o soluţie x0 şi baza corespunzătoare B0.

 6*| Se calculează Öj() corespunzători bazei găsite la pasul 1, pentru  variabil:

Öj( ) =
!
c

 ö B 01 ö A ± c()
Deoarece componentele soluţiei de bază corespunzătoare B = c ö nu depind de , ele
1

sunt pozitive pentru orice , nu doar pentru 0 şi soluţia B 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ă.

 7*| Se rezolvă sistemul de inecuaţii Öj()  0, a cărui soluţie va fi, ţinând cont că toate
 0
inecuaţiile sunt liniare, un interval  0 ,  , unde  0 poate fi şi -ã iar  0 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  0 şi  0 este finit.
Fie  0 acesta.
Pentru  >  0 cel puţin unul dintre Öj( ) corespunzători bazei B0 va fi strict negativ. Este
clar că pentru  >  0 trebuie căutată altă bază optimă, dacă aceasta există.

 9*| Reluăm algoritmul pentru o valoare a lui  aflată în imediata vecinătate a lui  0 şi  >  0 ,
 
astfel încât să ne situăm în intervalul imediat următor intervalului  0 ,  0 . Pentru găsirea
bazei corespunzătoare acestuia (sau pentru aflarea faptului că nu există nici o soluţie
optimă pentru  >  0 ) se aplică în continuare algoritmul simplex primal (deoarece B  0).

75
Bazele cercetării operaţionale

Se obţine o succesiune de valori  0 <  1 <  2 <«<  * = +ã şi o succesiune de baze şi soluţii


optime asociate fiecărui interval.

 :*| Reluăm algoritmul pentru o valoare a lui  aflată în imediata vecinătate a lui 0 şi  < 0 ,


astfel încât să ne situăm în intervalul imediat anterior lui  0 ,  0 . Pentru găsirea bazei 
corespunzătoare acestuia (sau pentru aflarea faptului că nu există nici o soluţie optimă
pentru  < 0 ) se aplică în continuare algoritmul simplex primal (deoarece B  0).
Se obţine o succesiune de valori  0 > 1 >  2 >«>   = -ã ş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.

R 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:

produse
P1 P2 P3 P4 P5 P6 Disponibil
mat. prime
M1 3 5 7 2 1 2 20
M2 5 6 9 3 4 5 40
M3 7 8 10 3 2 8 60
profit/1000 prod. 2 + 4 3 + 3 4 + 2 1 + 4 1 + 2 2 + 3



 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 + max [(2+4)x1 + (3+3)x2 + (4+2)x3 + (1+4)x4
(1+4)x4 + (1+2)x5 + (2+3)x6] + (1+2)x5 + (2+3)x6]
^ 3 1 5 2 7  3 2 4 5 2  6 20 31 5  2 7 3 2 4 5 2 6 1  20
l
 5 1 6 2 9 3 3 4 4 5 5 6 40
M 
 5 1 6 2 9 3 3 4 4 5 5 6 2  40
l7  8  10  3  2  8  60 7  8  10  3  2  8    60
1 2 3 4 5 6  1 2 3 4 5 6 3

x1, x 2, x3, x4, x5, x6  0 x1, x 2, x3, x4, x5, x6  0

Pasul 1. Rezolvăm problema pentru  = 0 şi obţinem baza optimă:

1 2 5
 
B = (a5,a6,a2) =  4 5 6 
2 8 8
 

 4 12 13 
 
 31 31 62 
 10 180 , 50  , inversa bazei B-1 =  10
soluţia optimă xB =  ,
1 7

  31 31 31 
şi ultimul tabel simplex:
 31 31 31 
 11 2 3
 
 31 31 62 

76
Bazele cercetării operaţionale

2 + 4 3 + 3 4 + 2 1 + 4 1 + 2 2 + 3 0 0 0
cB xB B x1 x2 x3 x4 x5 x6 s1 s2 s3
10 5 15 17 4 12 13
1 + 2 x5 0 1 0
31 62 31 62 31 31 62
180 14 9 2 10 1 7
2 + 3 x6 0 0 1
31 31 31 31 31 31 31
50 25 44 23 11 2 3
3 + 3 x2 1 0 0
31 62 31 62 31 31 62
520 6 5 8 9 4 3
0 0 0
31 31 31 31 31 31 31

Pasul 2. Se calculează Öj corespunzători bazei optime, pentru  oarecare:

Ö() = !c
 ö B 0 1 ö A ± c( ) =
6 79 5 73 8 157 9 5 4 15 3 7 
= , 0 , , , 0 , 0 , , , ,
 31 62 31 31 31 62 31 31 31 31 31 62 

Pasul 3. Se rezolvă sistemul de inecuaţii B  0:

_6
79
l31 62   0
l5 73
l 0
l31 31
l8 157   0
l  5 16   5 16
Ö()  0 M  31 62
0
 Ü , 0 = şi  =
9 5  73 157  73 157
l 0
l31 31
l4 15   0
l31 31
l3 7
l 0
31 62

0 0
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:
 8 24 13 
 
 2 2 5  17 17 17 
   6 1 3

| noua bază B = (a4, a6, a2) =  3 5 6  şi B-1 =
 17 17 17 
 3 8 8  9 10 4 
   
 17 17 17 
| noua soluţie:


77
Bazele cercetării operaţionale

 8 24 13 
   20 
 17 17 17   20   17 
 6 1 3
 ö  40  =  100 
B = B-1öb =  17 
 17 17 17   
 9 10 4   60   20 
   17 
 17 17 17   

| noul tabel simplex corespunzător noii baze:

2 + 4 3 + 3 4 + 2 1 + 4 1 + 2 2 + 3 0 0 0
cB xB B x1 x2 x3 x4 x5 x6 s1 s2 s3
20 5 30 62 8 24 13
1 + 4 x4 0 1 0
17 17 17 17 17 17 17
100 8 3 4 6 1 3
2 + 3 x6 0 0 1
17 17 17 17 17 17 17
20 5 13 23 9 10 4
3 + 3 x2 1 0 0 |
17 17 17 17 17 17 17
2 9 5 116 16 157 7 23 4 69 5 31
® 0 ® 0 ® 0 ® ® ®
17 17 17 17 17 17 17 17 17 17 17 17

| noul interval pe care este optimă noua bază:


 2 9
 17 17
®  0

 5 116
 ®  0
17
 17
 16 157
®  0  16 5  16 5
 17  ®Ü  ®0 = şi ® 1 =
 7
17
 157 , 31  157 31
23
 ®  0
 17 17
 4 69
®  0
 17 17
 5 31
 ®  0
 17 17
Reluând algoritmul vom obţine succesiv intervalele şi soluţiile următoare:

 5 , 3  B = (a , a , a )  =  5
1.|  Ü  5
 31 5  4 6 9 B
 5
 
 B = (a , a , a )  =  
8
3
2.|  Ü 
 5 , 
4 5 9 B 4
 28 
 

5
Pasul 5. Începând înapoi de la ®0 = obţinem:
73

78
Bazele cercetării operaţionale

2
 
3.|  Ü  5 , 5  B = (a3, a6, a2) B =  63 
 34 73  2
 3
 
 20 
 17 
 6 5  B = (a , a , a )  =  100 
4.|  Ü
 17 , 34  3 6 9 B  17 
 20 
 
 17 
 20 
 17 
 6   100 
5.|  Ü 2, B = (a3, a8, a9) B =  
 17 
 17
 20 
 17 
 
0
6.|  Ü   , 2 B = (a7, a8, a9) B =  0 
0
 
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ă:

 20 
|  Ü   ,  disponibilul din M1 ar fi negativ, caz fără sens economic.
 3 

|  Ü
 20  întreprinderea va fabrica doar produse de tipul P .
 3 , 4  5

|  Ü
 20 
 4, 11  întreprinderea va fabrica doar produse de tipul P5 şi P6.
 20 36  întreprinderea va fabrica doar produse de tipul P , P şi P .
|  Ü
 11 , 5  5 6 2

 36 60 
|  Ü întreprinderea va fabrica doar produse de tipul P5, P3 şi P2.
 5 , 7 
 60 140 
|  Ü întreprinderea va fabrica doar produse de tipul P3 şi P2.
 7 , 11 
 140 
|  Ü
 11 ,   întreprinderea va fabrica doar produse de tipul P3 şi P5.

79
Bazele cercetării operaţionale

|
PROBLEMA CLASICĂ DE
TRANSPORT
|

!#||||"||||# |#|%||!#|
#||||*|||||#&|| |#||
3|8 | #| #|| 3| #| 3|! ||||8|
 #| !3|8 || #|| 3| #|*|4 |'#||
%||#| ||"||&|8 | #|!||#||# 3|
"?||'| | | |#|| ||3|# ||||
"| |+| | |!3| |  3|#|##|@ |#'#|
 ||||"| 3|# ||  ,3| |
#|*||| &|'||#  ||!#||#|||
3||| ?|#A|
|||
2*| !#||||
6*| Problema transferului
7*| Problema drumului de cost minim
9*| Problema fluxului maxim
:*| Problema fluxului maxim de cost minim
<*| Probleme de flux dinamic
>*| Problema cuplajului maxim
U*| Problema de afectare
±*| Problema de ordonanţare
21*|Problema comis voiajorului
22*|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:

80
Bazele cercetării operaţionale

Destinaţii
C1 C2 ¥ Cn
Surse
F1 c11 c12 ¥ c1n A1
F2 c21 c22 c2n A2
`
¥

Fm cm1 cm2 ¥ cmn Am


disponibil
B1 B2 ¥ Bm
necesar

Dacă notăm cu xij cantitatea care va fi transportată de la sursa i la destinaţia j atunci avem de
rezolvat problema:
m n

min   c
i 1 j1
ij ö x ij

n
 x ij Ê A i
j1
 i  1,..., m
m


i 1
x ij  B j  j  1,..., n


 x ij  0 i  1,..., m; j  1,..., n


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:
m m n n
disponibil total = «A  ««x  «B
i 1
i
i 1 j 1
ij
j 1
j = cerere totală

m n
De asemenea, condiţia ca «
i 1
Ai  «B
j 1
j este şi suficientă, deoarece, în acest caz, se

Ai öB j
verifică uşor că soluţia x ij m
este soluţie admisibilă.
«A
i 1
i

Î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:
m n

«A  «B
(1)|
i 1
i
j 1
j

81
Bazele cercetării operaţionale
m n
(2)|«A  «B
i 1
i
j 1
j

m n
(3)|« i 1
Ai «B
j 1
j

Î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.
m n
Adăugând acest consumator la tabel, cu cererea egală cu «
i 1
Ai «B j 1
j , 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
n m
acest furnizor sunt 0. Adăugând acest furnizor la tabel, cu disponibilul egal cu «
j 1
Bj «A
i 1
i , 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 !#| | |
$!*|
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:
m m n n m n

«A  ««x  «B
i 1
i
i 1 j 1
ij
j 1
j , în contradicţie cu «A «B
i 1
i
j 1
j

iar dacă măcar una din ultimele n restricţii ar fi verificată cu ">" atunci am avea prin însumare:
m m n n m n

«
i 1
Ai  ««
i 1 j 1
x ij  «
j 1
B j , în contradicţie cu « i 1
Ai «B
j 1
j

În concluzie, orice problemă de transport este echivalentă cu o problemă de forma:


m n

min «« c
i 1 j 1
ij ö x ij

n
 x ij A i « i 1,..., m m n
j 1
unde    a
m

i
a

i 1
«
x ij B j j 1,..., n i 1 1


 x ij  0 i 1,..., m; j 1,..., n


care este forma standard a problemei de transport.
82
Bazele cercetării operaţionale

&_|!#||

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

1 1 1 V 1 0 0 0 V 0 0 0 0 V 0
m linii  0 0 0 b
V 0 1 1 1 b
V 1 V V V 0 0 0 b
V 0

0 0 0 V 0 0 0 0 V 0 1 1 1 V 1
1 0 0 V 0 1 0 0 V 0 1 0 0 V 0
0 1 0 V 0 0 1 0 V 0 0 1 0 V 0
n linii  0 0 1 bV 0 0 0 1 bV 0 V V V 0 0 1 bV 0
 
0 0 0 V 1 0 0 0 V 1 0 0 0 V 1 

n coloane n coloane n coloane

m ori

Această matrice are m + n linii, mö n 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 ö 50 ö 50
ö 100 = 2% componente egale cu 1

50 50 ö 50 ö 50
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 # |#;B2 şi o soluţie de bază are cel mult m+n±1 componente
diferite de 0 (|  | %| | | #;B2| #| "| | 1). 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:

|2*|Ë
    

Deoarece fiecare variabilă corespunde unei rute (este cantitatea transportată pe această rută)
iar fiecare rută corespunde unei perechi furnizor-consumator, vom identifica fiecare variabilă xij cu
83
Bazele cercetării operaţionale

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ţii  |+30,|
C1 C2 ¥ Cj ¥ Cn
Surse
F1 A1
F2 A2

Fi Ai

Fm Am
Bm disponibil
B1 B2 ¥ Bj ¥
necesar

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ă:

 |2*| 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 tabelului


Metoda 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)

 |6*| 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
84
Bazele cercetării operaţionale

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ă.

 |7*| 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  |!,
sunt cele nefolosite încă de pe linia sau /şi coloana ultimei rute folosite şi se evidenţiază în
tabel prin haşurarea acestora.

 |9*| 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ă.

 |:*| 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ă.

|6*|Ë
  

Algoritmul care urmează reprezintă algoritmul simplex pentru o problemă de minim, aplicat
în cazul particular al problemei de transport.

 |2*|Se asociază fiecărui furnizor Fi o variabilă ui şi fiecărui consumator Cj o variabilă vj;
 |6*|Fiecărei rute (i,j) folosită în soluţia actuală i se asociază ecuaţia ui + 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);
 |7*|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);
 |9*|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)
 |:*|Se analizează Öij găsiţi.

85
Bazele cercetării operaţionale

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

 |<*| 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
aceste proprietăţi şi se poate demonstra uşor că trece printr-un număr par de rute.
 |>*| Începând cu + din ruta care va intra în bază se notează alternativ cu "+" şi "±" rutele
circuitului;
 |U*| 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);
 |±*| 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;
 |21*| 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:

!
  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.

i  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 A1, A2 ,..., Ak astfel încât
consumatorii din fiecare clasă Ai 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 Fi 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ă 

86
Bazele cercetării operaţionale

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 A1, A2 ,..., Ak astfel încât consumatorii unei clase Ai 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 Ai+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.

R: 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 1000
F1 3 5 6 7 5 4 3 5 5 6 3 6 700
F1 2 4 5 3 6 7 4 5 7 4 6 7 400
F1 3 4 2 6 8 4 6 7 4 7 8 3 900
F1 3 5 6 4 7 8 3 5 6 9 3 6 400
F1 2 4 6 3 7 8 9 4 6 2 4 2 400
F1 3 5 2 6 7 8 9 5 3 6 7 3 700
F1 9 4 5 3 6 2 7 8 9 4 7 5 400
F1 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 900
F2 200 500
700
F3 300 500 800
F4 200 800 1000
F5 400 400
F6 100 300 400
F7 300 100 400
F8 100 300 400
F9 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ă:
87
Bazele cercetării operaţionale

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12


F1 200 500 200 900
F2 200 500700
F3 300 500
800+

F4 200 800 1000


F5  400 400+
F6 100 300 400
F7 300 100 400
F8 100 300 400
F9 400 300 700
400 300 200 200 500 600 700 500 600 600 800 300
+ +

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.

|o||!#|||

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

2*| | |!|

Î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.

6*| | |#|

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.

7*|!#|"

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"

88
Bazele cercetării operaţionale

 |#|##|||!#3|  || ||


| !| #||Cproblema afectăriiC3|| |_!|!_A|

1 daca lucrarea i este repartizata muncitorului c


xij = 
 0 în caz contrar
|
||"| ||"|&|  |# | #||||
"|# ||#|| || ||A

dn
«
l x ij
lj 1
1 1 i n
m

l x
i 1
ij 1 1 j n

în care variabilele xij satisfac cerinţa specială:

xij Ü {0,1}

!_ | #|B|##&|#  |||' |B| || #|


" |!_A|

n n
(min) =  te öx e
e
i 1 1
i i

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.

9*|!#|| 0

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:

C 8||| | |#|| ||+!  ,|23|63|***3|||


|"|&|||| 0|+% || 0,| 3 63***3 #*|4| | #|
A|

| cantităţile N1, N2,...,Nn din reperele date, care trebuie produse într-o anumită perioadă;
| fondurile de timp disponibil F1, F2,...,F m 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 P j 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:

89
Bazele cercetării operaţionale
m n

min «« c
i 1 j 1
ij ö x ij

fn 1

lj 1 Pij
ö x ij Fi 1 i m

lm
l

li 1
x ij N j 1 j n

l
lx ij  0
l

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.

:*|!#|||| |D# |
|
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 pi - 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 sij dintre porturi
(exprimate, de pildă, în kilometri), acestea fiind date în matricea:

 0 s 12 V s 1n 
 s 2n 
S =  s 21 0 V

  
 s n1 s n2 V 0 

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:

90
Bazele cercetării operaţionale

 0 x 12 V x 1n   0 y 12 V y 1n 
 x 2n   y 2n 
X =  x 21 0
g
V
 Y =  y 21 0
h
V

   
 x n1 x n2 V 0   y n1 y n2 V 0 

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 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 (yij ± xij),
deci mărimea capacităţii de transport neutilizate pe toate traseele (în tone kilometri) va reprezenta:

n n
=  s i ö
y i x i
i
i 1 1
i i i

Problema examinată constă în a găsi minimul acestei funcţii


Condiţiile auxiliare pe care trebuie să le satisfacă necunoscutele yii pot fi notate sub forma
următoarelor ecuaţii:
jn i
l y i  wi 1 i n
li 1
 n
l y i  pi
l  i
i 1
1 n

Primele n ecuaţii arată că tona ul total al navelor trimise dintr-un port oarecare i în toate
celelalte porturi trebuie să fie egal cu wi iar ultimele n că tona ul total al navelor sosite într-un port
oarecare din toate celelalte porturi trebuie să fie egală cu pi .
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ă
n n

w   p i , adică tona ul total al navelor care pleacă din toate porturile este egal cu tona ul
i 1
i i
1
total al navelor care sosesc în toate porturile. Întrucât problema are (n2 ± n) necunoscute yii (i, = 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:

yii  xii  0

condiţia yii  xii înseamnă că tona ul vaselor care pleacă din portul i spre portul 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 yii . Această
problemă poate fi uşor transformată într-un model de programare neliniară dacă, de pildă, în locul
distanţei sii î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 tona ului neutilizat al navelor ar fi înlocuită
printr-o problemă de maximizare a rentabilităţii totale a transporturilor.

91
Bazele cercetării operaţionale

  |||() |


|
2*|  |%||
|
Î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 %" . 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.

á |2 Se numeşte # %" un triplet G = (X, A, ) în care X şi A sunt două mulţimi
iar este o funcţie, definită pe produsul vectorial al lui X cu el însuşi (X2 = X X), care ia valori în
mulţimea părţilor mulţimii A (notată (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.

á | 6 Se numeşte %"|  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 (xi, xj) din X2 i se asociază prin funcţia mulţimea
A atunci spunem ca există arc de la nodul xi la nodul xj iar perechea (xi,xj) se va numi  |(xi,xj).
Nodul xi se numeşte |  sau '#|  a arcului (xi,xj) iar nodul xj se numeşte
|" sau '#|" a arcului (xi,xj). Arcul (xi,xj) este || vârfului
xj şi | | ' vârfului xi. Dacă pentru un arc nodul iniţial coincide cu nodul final
atunci acesta se numeşte ! . Nodurile xi şi xj se vor numi  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 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 arce le 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 xi, (xi)  X fiind mulţimea nodurilor
adiacente nodului xi, prin arce pentru care xi este extremitatea iniţială.
92
Bazele cercetării operaţionale


á | 7 Se numeşte %"|  un multigraf în care mulţimea A are un singur
element iar funcţia are proprietatea:
[(xi,xj)] = [(xj,xi)] , oricare ar fi nodurile xi şi xj din X
În aceste condiţii, dacă [(xi,xj)] = [(xj,xi)] = A atunci perechea neorientată {xi,xj} este o
# $ iar dacă [(xi,xj)] = [(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.

6*|  ||&||  |%"|

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 a ij 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.
R: 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} C
x2 › {x3, x4, x6}
x5 x2
x3 › {x1, x2}
x4 › {x5 }
x5 › {x2 } x6 x3
x6 › {x4 }
D (reprezentarea prin corespondenţă) x4
x1 x2 x3 x4 x5 x6

x1 x2 x3 x4 x5 x6

E F
x1 x2 x3 x4 x5 x6 x1 x2 x3 x4 x5 x6
x1 1 1 0 1 1 0 x1 x1x1 x1 x2 0 x1x4 x1x5 0
93
x2 0 0 1 1 0 1 x2 0 0 x2x3 x2x4 0 x2 x6
x3 1 1 0 0 0 0 x3 x3x1 x3 x2 0 0 0 0
x4 0 0 0 0 1 0 x4 0 0 0 0 x4x5 0
Bazele cercetării operaţionale

7*| ||!&|||%" |

1.| #%"||al unui nod xk : este mulţimea arcelor x k = {(xj,xk)/ (xj,xk) Ü } care
sunt incidente spre interior nodului xk;
2.| #%"|'|al unui nod xk: este mulţimea arcelor U x k = {(xk,xi)/ (xk,xi) Ü U} care
sunt incidente spre exterior nodului xk;
3.| #% ||al unui nod xk : este numărul arcelor care sunt incidente spre interior
nodului x k = cardinalul lui x k şi se notează cu  x k ;
4.| #% | '| al unui nod x k : este numărul arcelor care sunt incidente spre
exterior nodului x k = cardinalul lui x k şi se notează cu  x k ;
5.| %  unui nod xk : este suma semigradelor nodului xk :  x k =  x k +  x k ;
6.| |&: este un nod cu gradul 0;
7.| | : este un nod cu gradul 1;
8.| |: arce care au o extremitate comună;
9.|  # într-un graf: o mulţime ordonată de noduri ale grafului: (x 1, x2, ..., x k), cu
proprietatea că există în graf toate arcele de forma (xi,xi+1 ) i = 1,...,k-1;
10.| %#|  | #: este numărul arcelor care îl formează;|
11.| #|#: un drum în care fiecare nod apare o singură dată;|
12.| #|# : un drum în care fiecare arc apare o singură dată;
13.| | | % 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)   x i .|
14.| #|$#: un drum elementar care trece prin toate nodurile grafului;|
15.| #| : un drum simplu care conţine toate arcele grafului;|
16.|: un drum în care arcele nu au neapărat acelaşi sens de parcurgere;|
17.| : un drum în care nodul iniţial coincide cu cel final; |
18.| | #: un drum în care fiecare nod apare o singură dată, cu excepţia celui
final, care coincide cu cel iniţial;|
19.| |# : un drum în care fiecare arc apare o singură dată;|
20.| |$#: un circuit care trece prin toate nodurile grafului;|
21.| : este un circuit în care arcele nu au neapărat acelaşi sens de parcurgere;|
22.| | #: un ciclu în care fiecare nod apare o singură dată, cu excepţia celui
final, care coincide cu cel iniţial;|
23.| |# : un ciclu în care fiecare arc apare o singură dată;|
 
: Într-un graf neorientat noţiunile de drum şi lanţ sunt echivalente şi de
asemenea cele de circuit şi ciclu.
24.|%"| al unui graf G = (X,U): este un graf G'(X,U') cu U' ] U;|
25.| !%" al unui graf G = (X, ): este un graf G'(X', ') unde X' ] X şi '(xi) = (xi)  X'
pentru orice xi Ü X';|
26.|%"|   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 ( X *i , X k* ) există doar dacă i ƒ şi
există cel puţin un arc în U, de la un nod din X *i la un nod din X *k .|
94
Bazele cercetării operaţionale

27.|%"||': este un graf în care între oricare două noduri există cel puţin un drum;|
28.|%"|# |': este un graf în care între oricare două noduri există cel puţin un lanţ;|
 
: Pentru grafuri neorientat noţiunile de tare conex şi simplu conex sunt
echivalente, graful numindu-se doar conex;|
29.|#||' 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).|
|
9*| (| # |8 |%"||

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 (xi,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ă xi 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 x j.
În continuare vom da un algoritm prin care putem găsi toate drumurile dintr-un graf orientat
cu un număr finit de noduri.

 |2*| 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 1
0 0 1 0 0 0
1 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 A2
este egal cu 1. Valoarea 1 spune doar că există cel puţin un drum de lungime 2 de la xi 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 xi la xj presupune
existenţa unui nod xk astfel încât să existe un drum de lungime 2 de la xi 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.

95
Bazele cercetării operaţionale

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.

 |6*| 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 xi 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 xi 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 xi 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.

 |7*| 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 = 
l
1 dac a exista cel putin un drum de x i la x j
¢ ¢
0 daca nu exist a nici un drum de x i la x j

În acest caz, observând că:

Aö(A + I)n±2 = C 0n 2 ö A + C 1n 2 ö A2 + C 2n 2 öA3 + ... + C nn 22 ö 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 M
MAö(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
r
A+I mai mare sau egală cu n-1 (de exemplu calculând (A+I)2, (A+I)4, (A+I)8, ..., (A I) 2 , 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.

 |9*| Construim matricea latină L asociată grafului, unde:

96
Bazele cercetării operaţionale

daca exist a arcul


x i , x j
¢ ¢
lij = 
mx i x j
daca nu exist a arcul
x i , x j
¢ ¢
0
~
şi matricea , definită prin:
~ x 4 dac a exista arcul
x i , x 4
¢ ¢
lij = 
0 dac a nu exista arcul
x i , x 4
¢ ¢

numită #|| .
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 xi,xk şi elementul
de pe poziţia k al coloanei j, din matricea L , să fie xj. Vom înmulţi deci matricea L cu matricea L ,
folosind însă nişte reguli de calcul speciale, numite înmulţire şi adunare latină.

á   1: Se numeşte "! o mulţime de semne numite #!  sau  {si/iÜI}
unde I este o mulţime oarecare de indici, finită sau nu.
á   2: Se numeşte  _? un şir finit de simboluri notat s i1 s i2 ...s i n .
á   3: Se numeşte # |  o operaţie definită pe mulţimea cuvintelor unui
alfabet, notată " i ", astfel:
s i1 s i 2 ...s i n i s j1 s j2 ...s jm = s i1 s i 2 ...s i n s j1 s j2 ...s jm
(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.
á   3: Se numeşte  |  o funcţie definită pe mulţimea cuvintelor unui
alfabet cu valori în mulţimea parţilor mulţimi cuvintelor, notată " i " astfel:
ns s ...s 
s i1 s i2 ...s i n i s j1 s j2 ...s jm =  i1 i2 i n 
s j1 s j2 ...s jm 
(suma a două cuvinte este mulţimea formată din cele două cuvinte)

 |:*| Se calculează succesiv matricile:

L2 = L _ i L , L3 = L2 _ i L , ... ,L k+1 = Lk _ i L

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ă).

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

 Se construieşte matricea de adiacenţă A;


 Pentru fiecare linie i se adună boolean la aceasta toate liniile j pentru care aij = 1.

97
Bazele cercetării operaţionale

  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
Bazele cercetării operaţionale

:* /*|!#|! ||_|#|

În acest subcapitol grafurile vor fi considerate neorientate.

:*2*|  ||!|

Un ! este un graf neorientat, finit, conex şi fără cicluri. Grafurile din fig. 4.1. sunt
arbori.

x1 x1 x1 x1 x1

x1
x1

x1 x1 x1 x1

a) c)
b)

Figura 4.1

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 probl emele de mai sus se doreşte ca, dintre muchiile unui graf neorientat, să se extragă arborele optim din mulţimea tuturor arbor ilor 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:

!
 . 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
Bazele cercetării operaţionale

6)| Orice pereche de noduri este legată printr-un lanţ şi numai unul.

á 
:

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 u n graf parţial care să
fie arbore.
Presupunem de asemenea că fiecărei muchii îi este asociată o valoare reală.

:*6*|%#| |%|! ||_|# |

Vom da mai jos trei algoritmi pentru determinarea unui graf parţial al grafului, care să fie arbore şi pentru care suma valor ilor arcelor sal e să fie
minimă (sau maximă).
Toţi algoritmii descrişi în continuare extrag arborele prin colectarea una câte una a muchiilor acestuia.

*|%# | |D E|


|
 |2*| 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
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.
 |6*| Dintre toate muchiile rămase, se alege cea de valoare minimă (maximă);
 |7*| Dintre toate muchiile rămase, se alege cea de valoare minimă (maximă), astfel încât să nu
se formeze cicluri cu cele deja alese;
 |9*| Se reia algoritmul de la pasul 3 până se colectează n-1 muchii.

Deşi s-a demonstrat că algor itmul 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 apl icat 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ă).

/*|%# | ||4 |

 |2*| Pentru fiecare nod se alege muchia adiacentă de valoare minimă (maximă).
 |6*| Se evidenţiază componentele conexe, existente în graful parţial format din arcele alese
până în acest moment.
 |7*| 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.
 |9*| 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 cal culator, depăşeşte posibilităţile de memorare ale
calculatorului.

*|||_||%#  | |D E|


|
 |2*| Dintre toate muchiile grafului se alege cea de valoare minimă (maximă);|
 |6*| Dintre toate muchiile adiacente componentei conexe formată din arcele alese până în acest
moment, se alege cea de valoare minimă (maximă);|
 |7*| 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.

R A| 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.

P2
4 101 9
7
P1 8 8 P3
8 P4
2
Bazele cercetării operaţionale

 

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 lo c 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:

*|D E|

La primul pas poate fi ales unul din arcele OP 3 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 OP 5, OP6 sau P 1P6 care au valoarea minimă 3. Nici în acest caz nu are vre -o importanţă ordinea aleg erii,
deoarece pot fi alese succesiv toate trei fără a se forma nici un ciclu.
Al şaselea arc poate fi ales dintre arcele P 4P5 şi P 1P2, care au valoarea minimă 4. Nici în acest caz nu are vre -o importanţă ordinea alegerii,
deoarece pot fi alese succesiv am bele, 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 OP 1, P 6P7, deşi au valoarea minimă 5. Arcul OP 1 nu
poate fi ales deoarece s -ar forma ciclul OP 1P6, iar P 6P7 ar duce la ciclul OP 6P7. Următoarea valoare minimă este 6, pentru arcul P 5P7 dar nu poate
fi ales deoarece se formează ciclul OP 5P7.
Valoarea următoare, 7, o au arcele OP 4, 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 OP 6P1P2P3. 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.

P2
4

P1 P3
2 P4
3 4
O
3 3
P6 P5
2 7
P8
P7

Figura 4.3
102
Bazele cercetării operaţionale

/*|4

Vom alege: pentru nodul O › arcul OP 3

pentru nodul P 1 › arcul P 1P6

pentru nodul P 2 › arcul P 1P2


pentru nodul P 3 › arcul OP 3
pentru nodul P 4 › arcul P 4P5
pentru nodul P 5 › arcul OP 5
pentru nodul P 6 › arcul P 1P6
pentru nodul P 7 › arcul OP 7
pentru nodul P 8 › arcul P 5P8

Rezultă graful parţial:

P2
4

P1 P3
2 P4
3 4
O
3
P6 P5 7
2
P8
P7

Figura 4.4

După cum se vede, s-au format două componente conexe: C 1 = {P 1,P2,P6}


C2 = {O,P3,P4,P5,P 7,P8}.

Vom alege: pentru C 1 › arcul OP 6


pentru C 2 › arcul OP 6

şi obţinem o singură componentă conexă, care este arborele căutat.

|
*|o|%#  | |D E

Succesiunea alegerii arcelor va fi:

1 › OP3
2 › OP7

3 › OP6

4 › OP5

103
Bazele cercetării operaţionale
5 › P 1P 6

6 › P 1P 2

7 › P 4P 5
8 › P 5P 8

104
Bazele cercetării operaţionale
|

<*| 0 || |# #|0 * !#||"|+|,

În practica economică sunt foarte des întâlnite probleme în care se doreşte asocierea optimă a elementelor unei mulţimi X = {x1, x2, ... , x n} cu
elementele unei alte mulţimi Y = {y 1, y2, ... , ym} în condiţiile unor limităr i existente (şi cunoscute) ale posibilităţilor de asociere.

În general, fiecare asociere posibilă x i Ä yj aduce un anumit efect a ij (profit, cost etc) care poate fi calculat şi vom presupune că este cunoscut.
Limitările asupra asocierilor se traduc de obi cei prin faptul că:

1.| Un element x i 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ă maxi mul 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:

x1
y1

x2
y2

ym
xn

numit %"|!.

á   1: Se numeşte %"|! 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.

á   2: Se numeşte  0 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ă |#  un arc incident acestuia).

á   3: Se numeşte  0|#'# un cuplaj cu proprietatea că orice arc care nu face parte din cuplaj este adiacent cu un ar c din cuplaj ( M
orice arc am adăuga, nu mai rămâne cuplaj M nu există nici un cuplaj în care să se includă strict M 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ărul ui de arce ale unui cuplaj maxim:

!
 : Numărul maxim de arce ale unui cuplaj într -un graf bipartit G = (A ]B, ) este egal cu pmin

o

o
În ceea ce priveşte a doua problemă, observăm mai întâi că putem presupune că întotdeauna   B, în caz contrar inversând sensul tuturor
arcelor grafului, problema rămânând aceeaşi.
În acest caz:

105
Bazele cercetării operaţionale

min
A C
C = A M min
A C
C ± A = 0 M min
C
C =0M
C ]A C ]A C ]A

M max
C
C =0M
C C oricare ar fi C  A
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 (x i,x j) o valoare v ij.

á   4: Se numeşte valoare a unui cupl aj 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 bip artit asociat.
Dintre problemele întâlnite în practica economică, ce se reduc matematic la găsirea unui cuplaj maxim de valoare optimă, amin tim:

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 elabo rat un algoritm, cunoscut în literatura de specialitate sub denumirea de %# |
%, 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 a u 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 O j
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."

 |2*| Se construieşte matricea pătratică M care are elementele:

valoarea arcului
x i , x j daca exista arcul
x i , x j
 daca nu exista arcul
x i , x j
mij =
 

106
Bazele cercetării operaţionale

4 3 6 2 6 8
5 4 8 3 8 9
5 6 8 2 8 7
Pentru exemplul ales vom avea: M =
4 5 7 2 7 8
4 6 6 3 6 7
6 6 8 3 8 9 


 |6*| 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:
2 1 4 0 4 6 1 0 1 0 1 2
2 1 5 0 5 6 1 0 2 0 2 2
3 4 6 0 6 5 2 3 3 0 3 1
M1 =
2 3 5 0 5 6 şi apoi M 2 =
1 2 2 0 2 2
1 3 3 0 3 4 0 2 0 0 0 0
3 3 5 0 5 6  2 2 2 0 2 2 
 
Ultima matrice este cea asupra căreia se aplică următoarele calcule. În acest mo ment 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:

 |7*| Î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 arc ele 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:

1 0 1 0 1 2
1 0 2 0 2 2
2 3 3 0 3 1
1 2 2 0 2 2
0 2 0 0 0 0
2 2 2 0 2 2 


Î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 c oloana 2,
obţinând:

1 0 1 0 1 2
1 0 2 0 2 2
2 3 3 0 3 1
1 2 2 0 2 2
0 2 0 0 0 0
2 2 2 0 2 2 


Ultima linie cu zerouri este lin ia 5 din care îl încadrăm pe primul şi le barăm pe celelalte:

1 0 1 0 1 2
1 0 2 0 2 2
2 3 3 0 3 1
1 2 2 0 2 2
0 2 0 0 0 0
2 2 2 0 2 2 


În total nu sunt 6 zerouri încadrate (sunt doar trei) şi deci trecem la pasul 4.

107
Bazele cercetării operaţionale

 |9*| 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ă ex istă);
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ă:

1 0 1 0 1 2
1 0 2 0 2 2
2 3 3 0 3 1
1 2 2 0 2 2
0 2 0 0 0 0
2 2 2 0 2 2 


 |:*| Se taie liniile nemarcate şi coloanele marcate:

1 0 1 0 1 2
1 0 2 0 2 2
2 3 3 0 3 1
1 2 2 0 2 2
0 2 0 0 0 0
2 2 2 0 2 2 


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

 |>*| Se găseşte minimul grupei G 1, care se scade din fiecare element al lui G 1 şi se adună la fiecare element al grupei G 3. Elementele grupei
G2 rămân neschimbate.
Pentru exemplul dat, minimul lui G 1 este 1 şi obţinem noua matrice:

0 0 0 0 0 1
0 0 1 0 1 1
1 3 2 0 2 0
0 2 1 0 1 1
0 3 0 1 0 0
1 2 1 0 1 1 

 |U*| Se reia algoritmul de la pasul 3.

Vom avea după marcare:

108
Bazele cercetării operaţionale

0 0 0 0 0 1
0 0 1 0 1 1
1 3 2 0 2 0
0 2 1 0 1 1
0 3 0 1 0 0
1 2 1 0 1 1 

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:

M1 O1
6
M2 4 O2

4
M3 O3

M4 7 O4
3
M5 6 O5

M6 O6

care duce la o durată totală a prelucrării unei piese de 6 + 4 + 7 + 6 + 3 = 26 ore


 
 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 opt im
este:

M1 O1

M2 4 O2
0 0 0 0 0 1
0 0 1 0 1 1
1 3 2 0 2 0 M3 4 O3
0 2 1 0 1 1
adică 6
0 3 0 1 0 0
1 2 1 0 1 1  M4 7 O4

6
M5 O5
3
care are de asemenea valoarea 26. M6 O6

@ Dacă dorim un cuplaj de valoare maximă atunci vom calcula la pasul 1 matricea M astfel:

1.|Construind matricea A de elemente:

qvaloarea arcului
x i , x j daca exista arcul
x i , x j
 daca nu exista arcul
x i , x j
a ij =
ã

2.|Matricea M va avea componentele: m ij = max


a i4 a i4
1Ê i, 4Ê n

apoi aplicăm în continuare algoritmul.

109
Bazele cercetării operaţionale
@ Dacă AƒB 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
Bazele cercetării operaţionale

>*| # || |$# |

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 afl e î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 red ucâ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 t rece 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ţi i 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;

#| # |$#| |

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.
|
*|%# | |) E|
 |2*| Se scrie matricea booleană A asociată grafului G.

 |6*| Se determină matricea D a drumurilor grafului G prin procedeul expus la începutul
capitolului şi apoi matricea M = I + D.

 |7*| 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.

 |9*| 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.

 |:*| Se găsesc drumurile hamiltoniene

111
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.
( 
: 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).

 
 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ă.

/*|%# | | $| |#| # |$#| |


|%" |"|  |

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 xj se poate ajunge şi din xi dar din xj nu se poate
ajunge în xj pentru că nu există circuite.

!  ë 
    

 
    
!   °
  




1
 
  
2
 1

á 
³í Fie F un drum hamiltonian şi presupunem că nodurile grafului au fost notate în
ordinea în care apar în acest drum. Atunci din orice nod xi 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:


1
 
 = (n ± 1) + (n ± 2) + « + 1 + 0 =
2
 1
³í Ordonând vârfurile în ordinea descrescătoare a puterii lor de atingere (i > j M 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

1
1
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 (xi,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.

112
Bazele cercetării operaţionale

!   Dacă într-un graf orientat fără circuite există un drum hamiltonian atunci
acesta este unic.

á  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ă %# |  | $ de determinare a drumului hamiltonian


într-un graf orientat fără circuite:

 2*| Se scrie matricea de adiacenţă A


 6*| Se calculează matricea drumurilor D
 7*| 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.
 9*| Se calculează puterile de atingere pentru fiecare nod.


1
 :*| Dacă nu se verifică relaţia  
 
2
atunci graful nu are drumuri hamiltoniene
 1
şi algoritmul se opreşte, altfel se trece la pasul 6.
 <*| Se ordonează nodurile în ordinea descrescătoare a puterilor lor de atingere şi obţinem
drumul hamiltonian căutat.

*|%# | |D "#|


|
 |2*| Construim matricea latină L asociată grafului, unde:

daca exist a arcul


x i , x j
¢ ¢
rx x
lij =  i j
daca nu exist a arcul
x i , x j
¢ ¢
0
 |6*| Construim matricea L , definită prin:
sx dac a¢¢ exista¢ arcul
lij =  j

x i , x j
0 dac a nu exista arcul
x i , x j
¢

numită #|| .

 |7*| Se calculează succesiv matricile:


~ ~ ~
L2 = L i i , i3 = i2 i i , ..., ik+1 = ik i i , ...

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 ik 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.
113
Bazele cercetării operaţionale

 |9*| 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);
 |:*| 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.|
|
*| |%#|!&||%# | % |

Fie G = (X,U) un graf orientat cu n noduri X = {x1 , x2, « , xn}.

 |2*| Se construieşte graful bipartit H = (A]B,V) în care A = B = X şi V = U (adică am folosit


pentru G reprezentarea prin corespondenţă).
 |6*| Se găseşte pentru graful H cuplajul maxim de valoare minimă.
 |7*| 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.
 |9*| 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.
 |:*| 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.

 |<*| 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
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.

 
: 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
Bazele cercetării operaţionale

U*| # |#|8 |%"|


|
Î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 _| |  |  #, care este
egală cu suma valorilor arcelor care îl compun. Vom nota în continuare valoarea unui arc (xi,xj) cu
v(xi,xj) sau cu vij. În aceste condiţii putem enunţa problema drumului optim astfel:
"á   Ë  !"#    Y Y  Y
 Y
  Y    
" 
 

Y
"   Y
  "       
 
 $

% Y 
   Y Y "
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ărfinit de noduri atrage după sine existenţa unui număr finit de arce (cel mult n2)
n -1
1
şi a unui număr finit de drumuri elementare ( cel mult nö n!ö  k! ). Deoarece oricărui drum  îi
k 1
corespunde un drum elementar  (obţinut prin eliminarea tuturor subcircuitelor lui ) 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
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.
 1. Dacă în graf nu există decât arce de valoare pozitivă atunci există drum de valoare
minimă.
 1. Dacă în graf nu există decât arce de valoare negativă atunci există drum de valoare
maximă.
 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 %#||||'| |8 |%":

 |2*| 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).
 |6*| 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.
 |7*| 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.
 |9*| 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.

%#||%|| #  |#

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.

*||%# | |/#|8|D!

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.

 |2*| Se construieşte matricea pătratică M cu dimensiunea egală cu numărul de noduri ale
grafului ale cărei elemente sunt:

117
Bazele cercetării operaţionale


valoarea arcului (x i , x j ) daca exista arcul (x i , x j ) si i j


mij = 0 daca i  j

  (într - o problema de minim)  daca nu exista arcul (x , x )
  (într - o problema de maxim) 

i j

 |6*| 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 , min (mjk + Li-1,k)) într-o problemă de minim
k 1, n

 Lij = max (Li-1,j , max (mjk + Li-1,k )) într-o problemă de maxim


k 1, n

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

 |9*| Pentru găsirea drumului care dă valoarea minimă de la un nod xj la nodul xn se găsesc,
începând înapoi de la ultima linie, pe care s-au obţinut valorile finale, notată Lf, nodurile
x k1 , x k 2 , ..., x k r care formează drumul căutat, unde x k1 = xj, x k r = 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.

 
: 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.
R 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.
x2
4 9
7
x1 8 8 x3
3 x4
2
5 7
3 9 4
3 x5 3
9
x6 x8
2 7
5 6
8 x9
x7

118
Bazele cercetării operaţionale

0 4 ã ã 5 ã ã ã ã
ã 0 7 9 ã ã ã ã ã
ã ã 0 3 ã ã ã ã 9
ã ã ã 0 ã ã ã ã 3
Matricea M va fi  ã 8 2 7 0 3 2 9 ã
ã 8 ã ã ã 0 5 ã ã
ã ã ã ã ã ã 0 6 8
 ã ã ã 4 ã ã ã 0 7
ã ã ã ã ã ã ã ã 0 

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 ã ã ã ã 9
x4 ã ã ã 0 ã ã ã ã 3
x5 ã 8 2 7 0 3 2 9 ã
x6 ã 8 ã ã ã 0 5 ã ã
x7 ã ã ã ã ã ã 0 6 8
x8 ã ã ã 4 ã ã ã 0 7
x9 ã ã ã ã ã ã ã ã 0
L1 ã ã 9 3 ã ã 8 7 0
L2 ã 12 6 3 10 13 8 7 0
L3 15 12 6 3 8 13 8 7 0
L4 13 12 6 3 8 13 8 7 0
L5 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 (x 1 › 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

/*|%# | |)|#"

Algoritmul lui Ford simplificat  Y


 %  Y YY . 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 xn, numit nod final.
Algoritmul este:
119
Bazele cercetării operaţionale

 |2*| I se dă vârfului iniţial valoarea 0 (zero): w(x0 ) = 0


 |6*| Se construieşte mulţimea A formată din nodul iniţial: A = {x1}
 |7*| 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) = min
w
x j v
x j , x i , în problemele de minim ||
xj

 x j,xi

 ||w(xi) = max
x4


x 4 v
x 4 , x i , în problemele de maxim

 x 4 ,x i

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

 |9*| 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 x k1 , x k 2 , ..., x k r care formează drumul căutat, unde x k1 = xn, x k r =
x1 şi fiecare alt indice ki+1 este cel pentru care:

w( x k i 1 ) + v( x k i 1 , x k i ) = w( x k i ) STOP
| Dacă xn  A se reia algoritmul de la pasul 3.

R : 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 = 5
pas4: x9  A
pas3: 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) = 3
pas4: x9  A
pas3: 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) = 4
w{x7) = min( w(x5 ) + v(x5,x7), w(x6) + v(x6,x7)) = min(5 + 2,3 + 5) = 7
pas4: x9  A
pas3: 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) = 7
w{x8) = min( w(x5 ) + v(x5,x8), w(x7) + v(x7,x8)) = min(5 + 9,7 + 6) = 13
pas4: x9  A
pas3: 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
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

 
 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 x n, cu toate că există drum de la x1 la xn.
 
 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.

*||%# |)|%&|

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 xn, numit nod
final.
Algoritmul este:

 |2*| 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).
 |6*| În ordinea crescătoare a indicilor nodurilor se calculează pentru fiecare nod, pe bază
fostelor valori, noile valori cu formula:
 
 
w (xi) = min  w
x i , min
w
x 4 v
x 4 , x i  în problemele de minim|
*
x4
 
x 4 , x i

 
 
 
 ||w (xi) = max 
x i , max

x 4 v
x 4 , x i  în problemele de maxim
*
x4
 
x 4 , x i

 
 |7*| 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 x k1 , x k 2 , ..., x k r care formează drumul căutat, unde x k1 = xn,
x k r = x1 şi fiecare alt indice ki+1 este cel pentru care:
w( x k i 1 ) + v( x k i 1 , x k i ) = w( x k i ) STOP
| dacă w(xn) = +ã (-ã) atunci nu există nici un drum de la x1 la xn. STOP
121
Bazele cercetării operaţionale

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

 
: 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.

*||%# | |0E|

Î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:

 |2*| I se dă vârfului iniţial valoarea 0 (zero): w(x0 ) = 0


 |6*| Se construieşte mulţimea A formată din nodul iniţial: A = {x1}
 |7*| Se analizează nodurile din afara mulţimii A.
| Dacă există noduri % Y &  YY    —
(nu   de la nodurile mulţimii A, ca la algoritmul lui Ford simplificat) se
calculează pentru toate acestea:
w(xi ) = min
w
x j v
x j , x i în problemele de minim ||
x jÜA

 x j,xi

dar, spre deosebire de algoritmul lui Ford simplificat,   
 
 
  
  ,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

 |9*| 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 x k1 , x k 2 , ..., x k r care formează drumul căutat, unde x k1 = xn, x k r =
x1 şi fiecare alt indice ki+1 este cel pentru care:

w( x k i 1 ) + v( x k i 1 , x k i ) = w( x k i ) STOP
| Dacă xn  A se reia algoritmul de la pasul 3.

R 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 = 4
w{x5) = min( w(x1 ) + v(x1,x5)) = 0 + 5 = 5
w{x6) = min( w(x1 ) + v(x1,x6)) = 0 + 3 = 3
122
Bazele cercetării operaţionale

min(w{x2 ),w{x5 ),w{x6 )) = w{x6 ) = 3


pas4: x9  A
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) = 4
w{x5) = min( w(x1 ) + v(x1,x5)) = min(0 + 5) = 5
w{x7) = min( w(x6 ) + v(x6,x7)) = min(3 + 5) = 8
min(w{x2 ),w{x5 ),w{x7 )) = w{x2 ) = 4
pas4: x9  A
pas3: 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) = 11
w{x4) = min( w(x2 ) + v(x2,x4)) = min(2 + 9) = 11
w{x5) = min( w(x1 ) + v(x1,x5)) = min(0 + 5) = 5
w{x7) = min( w(x6 ) + v(x6,x7)) = min(3 + 5) = 0
min(w{x3 ),w{x4 ),w{x5 ),w{x7 )) = w{x5 ) = 5
pas4: x9  A
pas3: 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) = 7
w{x4) = min( w(x2 ) + v(x2,x4), w(x5) + v(x5,x4)) = min(4 + 9,5 + 7) = 12
w{x7) = min( w(x5 ) + v(x5,x7), w(x6) + v(x6,x7)) = min(5 + 2,3 + 5) = 7
w{x8) = min( w(x5 ) + v(x5,x8)) = min(5 + 9) = 14
min(w{x3 ),w{x4 ),w{x7 ),w{x8 )) = w{x3 ) = w{x7) = 7
pas4: x9  A
pas3: 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) =10
w{x8) = min( w(x5 ) + v(x5,x8), w(x7) + v(x7,x8)) = min(5 + 9,7 + 6) = 13
w{x9) = min( w(x3 ) + v(x3,x9), w(x7) + v(x7,x9)) = min(7 + 9,7 + 8) = 15
min(w{x4 ),w{x8 ),w{x9 )) = w{x4 ) = 10
pas4: x9  A
pas3: 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)=13
w{x8) = min( w(x5 ) + v(x5,x8), w(x7) + v(x7,x8)) = min(5 + 9,7 + 6) = 13
min(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
Bazele cercetării operaţionale

±*||||

Î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|  ,| în alte locuri,
numite|*| Pentru realizarea acestui transport se folosesc o serie de trasee, numite|  | |
% *|Unităţile indivizibile ale cantităţii Q, care se deplasează de-a lungul rutelor între surse şi
destinaţii, se numesc| | | " '3| iar ansamblul rutelor, surselor, destinaţiilor şi, eventual, a
altor| |#|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.
|
á  1: Se numeşte ||| un graf finit, simplu, conex, fără bucle
G = (X,U) care are următoarele proprietăţi:
1.| Există şi este unic s Ü X a.î. s /,
s / (din care doar "ies" arce), numit
 reţelei de transport;
2.| Există şi este unic t Ü X a.î. = /,
ƒ / (în care doar "intră" arce) numit
t t
 reţelei de transport;
3.| S-a definit o funcţie c: U ›
+ care asociază fiecărui arc u un număr strict
pozitiv cu numit |  .

@: 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;

á  2: Se numeşte " '|8||| R = (X,U) o funcţie r : U ›


+ care
are următoarele proprietăţile:
P1.|0 u cu oricare ar fi u din U; valoarea u se numeşte " '||  |
P2.| « r u « r u oricare ar fi i ƒ s,t (suma fluxurilor arcelor care "intră" într-
u Ü U i u Ü U i

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
Bazele cercetării operaţionale

á  3: Se numeşte _||" '   suma fluxurilor arcelor care "pleacă" din nodul
iniţial s şi se notează cu ‘.
@: Se poate demonstra uşor că această valoare este egală şi cu suma fluxurilor
arcelor care "intră" în nodul final t. În concluzie avem:

‘= « r u « r u
u Ü U s u Ü U t

Valoarea fluxului reprezintă cantitatea care se transportă efectiv pe reţea de la surse la destinaţii.

á  4: Se numeşte " '||_|#'#|8| 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 n ecesarurilor
destinaţiilor. În plus, valoarea acestuia pe un arc reprezintă ca ntitatea 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 ma i îngust loc de
traversare al reţelei.
Pentru formalizarea consideraţiilor de mai sus vom introduce noţiunea de  |8|:

á  5: Dată o reţea de transport G(X,U) cu s = nodul iniţial şi t = nodul final, se
numeşte  | |  o partiţie a mulţimii vârfurilor reţelei de transport, formată din două
submulţimi V şi W (V W = /, V]W = 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.

á  6: Se numeşte || |  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) =


c u
t
u  x i ,x 4
xi
x 4W

Pentru a nu exista nici o ambiguitate, insistăm asupra faptului că se vor lua în considerare doar arcele care trec de la mulţi mea ce conţine nodul
iniţial spre mulţimea care conţine nodul final, adică în sensul normal de transport (surse › destinaţie).

á  7: Se numeşte  | | _| ##| 8|  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').
125
Bazele cercetării operaţionale

Următoarele teoreme fac legătura matematică dintre fluxurile unei reţele ş i tăieturile sale:

! |2* Dată o tăietură T = (V,W) şi un flux  într-o reţea de transport avem:

‘=
u
«


x i ,x j
u ±
u
«


x i ,x j
u

x i ÜV x i ÜW
x jÜW x jÜV

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).

á : Avem succesiv:

 
 
‘=
«

r u = «

r « « u + 
x i ÜV  uÜU
ru ru 

« =
u s, x j u s, x j uÜU x i
x jÜX x jÜX x i ƒs  xi 

=
u
«


r
x i ,x j
u ru +
u
«

r
x i ,x j
u -
u
«

r
x i ,x j
u =
u
«

r
x i ,x j
u ±
u
«

r
x i ,x j
u

x i ÜV x i ÜV x i ÜW x i ÜV x i ÜW
x jÜV x jÜW x jÜV x jÜW x jÜV

  A Într-o reţea de transport valoarea oricărui flux este mai mică sau egală decât valoa -rea oricărei tăieturi.

á : Fie T o tăietură oare care şi  un flux oarecare. Avem succesiv:

‘=


 u ± 

 u 

 u 

c u = C(T)
u
u  x i ,x 4 u  x i ,x 4
u
u  x i ,x 4
u
u  x i ,x 4
xi
x 4W
x i W
x 4
u x i
x 4W
xi
x 4W

  A Într-o reţea de transport valoarea fluxului maxim este mai mică sau egală decât valoar ea 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.

!  '  (' ) Dacă fluxul  este maximal atunci există o tăietură de capacitate egală cu valoarea fluxului.

á A|Fie  un flux maximal. Introducem următorul procedeu de marca re a vârfurilor:

 |2*| Se marchează nodul iniţial s cu 0(zero);


 |6*| Pentru fiecare vârf marcat x i se marchează cu:
:| [+xi] toate vârfurile nemarcate x j pentru care există arcul (x i,x j) şi (xi,xj) < c(x i,xj) (adica nodurile spre care mai e loc
pentru a se transporta c eva din xi);
:| [±xi] toate vârfurile nemarcate x j pentru care există arcul (x j,x i) şi (xj,xi) > 0 (adică toate nodurile spre care pleacă deja
ceva din x i);
 |7*| Se repetă pasul 2 până nu mai poate fi marcat nici un vârf.

Dacă vârful final t ar fi marcat, atun ci începând de la acesta, am putea construi lanţul x k1 , x k 2 , ..., x k r unde x k1 = s, x k r = t şi

marcajul oricărui vârf x k i 1 este + x k i sau ± x k i . Adăugând la fluxul fiecărui arc al lanţului de tipul ( x k i , x k i 1 ) valoarea:

126
Bazele cercetării operaţionale

Ö = min( min

x k i ,x k i 1

c
x k , x k
i i 1

r x k i , x k i 1 , min

x k i 1 ,x k i

r x k i , x k i 1 )

şi scăzând din fluxul fie cărui arc de tipul ( x k , x k ) aceeaşi valoare Ö, obţinem un flux de valoare ‘ + Ö, deci fluxul r nu ar fi maximal.
i 1 i

Î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 (x i,xj) care "traversează" tăietura avem:

| dacă xi Ü V atunci (xi,x j) = c(x i,xj) deoarece nodul x j nu e marcat


| dacă xi Ü W atunci (xi,xj) = 0 deoarece nodul x i nu e marcat

În acest caz avem:

C(T) =
u
«

c
x i ,x j
u =
u
«


x i ,x j
u ±
u
«


x i ,x j
u =‘

x i ÜV x i ÜV x i ÜW
x jÜW x jÜW x jÜV

ş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ăsir ii
fluxului de valoare maximă se poate folosi algoritmul lui Ford -Fulkerson.
Pentru expunerea acestuia vom introduce şi noţiunile de:

|  = un arc pe care fluxul este egal cu capacitatea;


 #|# = un drum de la nodul iniţial s la nodul final t care conţine cel puţin un arc saturat;
" '|# = un flux pentru care orice drum de la nodul iniţial s la nodul final t este complet.

%# | |) 8) E|

| Se determină un flux complet.

 |2*| Se numerotează nodurile reţelei de transport astfe l încât x 1 = s şi x n = t;


 |6*| Se asociază grafului fluxul nul ( u = 0 pentru orice arc u din graf);
 |7*| În ordine lexicografică, se ia pe rând fiecare drum D de la nodul iniţial la cel final, se calculează valoarea şi ÖD = min
c u  u
uD
se adaugă la flux ul 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 valo are ‘ = « Ö D . Deoarece alegerea drumurilor în ordine lexicografică nu
D
ţ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 f ie 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 apli că la etapa II.

| Se determină fluxul maxim

 |9*| Se marchează nodul iniţial s cu 0(zero);


 |:*| Pentru fiecare vârf marcat x i se marchează cu:
:| [+xi] toate vârfurile nemarcate x j pentru care există arcul (x i,xj) şi (x i,x j) < c(x i,xj) (adica nodurile spre care mai e lo c pentru a se
transporta ceva din x i);
:| [±xi] toate vârfurile nemarcate x j pentru care există arcul (x j,x i) şi (xj,x i) > 0 (adică toate nodurile spre care pleacă deja ceva din
xi);
 |<*| Se repetă pasul 5 până este marcat nodul final sau până când nu mai poate fi marcat nici un vârf;
 |>*| Dacă nodul final a fost marcat atunci fluxul este maxim şi algoritmul se opreşte, în caz contrar trecându -se la pasul 8;
 |U*| Construim un lanţul L = x k1 , x k 2 , ..., x k r unde x k1 = s, x k r = t şi marcajul oricărui vârf x k i 1 este + x k i sau ± x k i . Se
calculează:

127
Bazele cercetării operaţionale

ÖL = min( min

x k i ,x k i 1

c
x k , x k
i i 1

r x k i , x k i 1 , min

x k i 1 ,x k i

r x k i , x k i 1 )

care se adaugă la fluxu l fiecărui arc al lanţului de tipul ( x k i , x k i 1 ) şi se scade din fluxul fiecărui arc de tipul ( x k i 1 , x k i ).

 |±*| Se şterge marcajul şi se reia algoritmul de la pasul 4.

În final, tăietura de valoare minimă este cea în care V = mulţimea nodurilor marcate iar W = mulţimea nodurilor nemarcate.

 
 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 mi nime, 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:

! 
Dacă toate capacităţile rutelor reţelei sunt numere raţionale atunci algoritmul lui Ford -Fulkerson are un număr finit de paşi.

á  Prin înmulţirea tuturor acestor capacităţi cu cel mai mic multiplu comun al numito rilor 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 C min, care este de asemenea număr natural, algoritmul va avea nevoie de cel mult C min paşi pentru a
o atinge.

 
2. Teorema de mai sus asigură doar o limitare superioară a numărului de iteraţii ale algoritmului, faţă de capacitatea tăietu rii 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ă:

1
! 
Dacă la fiecare iteraţie se alege drumul (lanţul) d e lungime minimă atunci algoritmul va avea cel mult ömön iteraţii, unde n =
2
numărul de noduri iar m = numărul de muchii.

 
 3. Există probleme în care se doreşte găsirea      într-o reţea, valorile fluxului pe arce fiind limitate " de
capacităţile acestora. În acest caz se aplică de asemenea algoritmul lui Ford -Fulkerson astfel:

 |2*| Se calculează M = maximul capacităţilor arcelor


 |6*| Se construieşte reţeaua R', care este fosta reţea, în care au fost modificate doar capacităţile arcelor, acestea devenind cï
u =
M ± cu
 |7*| Se găseşte cu algoritmul Ford -Fulkerson fluxul , de valoare maximă, în această reţea
 |9*| Fluxul de valoare minimă în reţeaua iniţială va avea valorile ' = M ± 

 
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
Bazele cercetării operaţionale

|  
|
O problemă de ordonanţare constă în stabilirea unei ordini de efectuare a |
(_) unui proiect, astfel ca  dintre ele să fie respectate în cadrul
  disponibile şi  |||'  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  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 :

| 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 _ 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  |  ;
| o activitate, odată începută, nu mai poate fi întreruptă.

Dintre | () dintre activităţi, ne interesează, în special,


cele temporale, numite ||, care pot fi de trei tipuri:

1.| de tip "#| B|  ". 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
| activitatea B;
2.| de tip " | B|  ". 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
Bazele cercetării operaţionale

3.| de tip "#|B|#". 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  | | | '  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ă.

2*| ||&|| #  ||+ ,

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
Bazele cercetării operaţionale

Tabelul 1
Activităţile
Nr. Activităţile
direct precedente Durate
crt. proiectului
(condiţionări)
1 A - 3
2 B - 2
3 C A 2
4 D B 6
5 E B 4
6 F C,D,E 4
7 G E 1

Există mai multe moduri de a reprezenta un proiect printr-un graf, cele mai cunoscute fiind
prezentate mai jos:
|

—* *|+ |$| $,|


|
Metoda CPM este un procedeu de analiză a drumului critic în care singurul parametru
analizat este #  ş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 45p.

131
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 _|"_,
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 _||.
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:

A tAB B A B
sau (pentru tAB = 0)

l
terminare - început

A A1 A2
tAB sau tAB
B B

început - început
A
B
sau
A tAB B1 tAB
B2
terminare - terminare

Figura 1

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
Bazele cercetării operaţionale

A A F A
B sau
B B F

incorect corect

Figura 2

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
Activitate direct precedentă
Activitate
(condiţionări)
A -
B -
C A,B
D A

atunci reprezentarea:
A C

B D

Figura 3
este incorectă, deoarece introduce condiţionarea, inexistentă în tabel, a activităţii D de activitatea B.
Reprezentarea corectă este:
A C

B D

Figura 4

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:
A

B D

Figura 5

133
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.
B A

A C

C B

(a) (b)

Figura 6

Proiectul dat prin tabelul 1, poate fi modelat, în reprezentarea activităţilor pe arce, prin
graful-reţea din figura 6, numerotat secvenţial.
A C
2
F
5
1 D
B 6
3
E G
4

Figura 7

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.

—    Y 

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
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
%# | |)|#".
Conform acestui algoritm, se calculează pentru fiecare nod al grafului:

A.|!  Y             4. 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 t mj = 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:


i, j Ü

t mj = max t im d ij , 1 j n

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:

v
l0 j 1
l
i, j Ü i

t mj =  max t m d
ij 1 j n

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.

! Y +       . 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.
w
Acest termen se notează cu t i = 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) = t m
n ), este dată de formula:

w l x
t i =  min t w d
T j 1
l
i, j Ü j

ij 1 in

w
Intervalul [ t mj , t j ] se numeşte _ ||"   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) = t M m
j ± tj

135
Bazele cercetării operaţionale

Dacă R(j) = 0 evenimentul j trebuie să aibă loc la termenul fixat t M m


j = t j , pentru că orice
întârziere va duce la prelungirea duratei întregului proiect.

R: 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 t mj şi în partea
inferioară-dreapta termenul cel mai târziu de realizare t M
j .

t mj tM
j

Figura 8

În figura 8 a fost desenat graful asociat proiectului.


A 2 C 5 F
3 3 6 2 8 8 4

1 D 6
0 0 6 12 12

B 3 E 4 G
2 2 2 4 6 8 1

Figura 9

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:

t 1m = 0
tm m
2 = max ( t 1 + d 12) = max (0 + 3) = 3

tm m
3 = max ( t 1 + d13) = max (0,2) = 2

tm m
4 = max ( t 3 + d34) = max (2 + 4) = 6

t 5m = max ( t m m m
2 + d25, t 3 + d35, t 4 + d45) = max (3 + 2, 2 + 6, 6 + 0) = 8

tm m m
6 = max ( t 4 + d46, t 5 + d56) = max (6 + 1, 8 + 4) = 12

136
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
y
se ia t 6 = 12 şi se calculează:
y y
t 5 = min ( t 6 ± d56) = min (12 ± 4) = 8
y y y
t4 = min ( t 6 ± d46, t 5 - d45) = min (12 ± 1, 8 ± 0) = 8
y y y
t3 = min ( t 5 ± d35, t 4 ± d34) = min (8 ± 6, 8 ± 4) = 2
y y
t2 = min ( t 5 ± d25 ) = min (8 ± 2) = 6
y y y
t 1 = min ( t 2 ± d12, t 3 ± 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: t mî (i,j), momentul minim de terminare: t mt (i,j) , momentul maxim de
începere: t y
î
(i,j) şi momentul maxim de terminare: t y
t
(i,j).

1.| # |+# |##,||||#|_#||_ ( 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:

t mî (i,j) = t m
i

2.| # |+# |##,||#||#|_#||_ (i.j) este egal


cu suma dintre termenul cel mai devreme de începere şi durata activităţii:

t
tm (i,j) = t mî (i,j) + dij

3.| # |+# |#'#,||#||#|?& ||_ (i,j) este definit


de termenul cel mai târziu de realizare a evenimentului j:
z
tz
t
(i,j) = t j

4.| # |+# |#'#,||||#|?& ||_ (i,j) este egal cu


diferenţa dintre termenul cel mai târziu de terminare şi durata activităţii:

t îM (i,j) = t tM (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)| &_|||# (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) = t tM ± t mt = t tM ± t mî ± dij = t M m
j ± t i ± dij

137
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)| &_|!||# (Rl) a unei activităţi (i,j):
|
Rl(i,j) = t mj ± t m
i ± dij

Diferenţa între rezerva totală şi rezerva liberă:


{
Rt(i,j) - Rl(i,j) = t j ± t mj

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)| &_|||# (Rs) a unei activităţi (i,j):
|
Ri(i,j) = t mj ± t iM ± dij

Rezerva independentă de timp a unei activităţi (i,j) există dacă Ri(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) = t iM ± t m
i

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ă  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  #|. 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 _|.
O _| (i,j) este caracterizată prin:

t im = t iM , t mj = t M m m
j , t j ± t i = dij

De aici rezultă că,  ||_|, avem:

Rt(i,j) = R l(i,j) = R i(i,j) = 0

138
Bazele cercetării operaţionale

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.
Î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 3
î t î| t|
Activităţi Cond. Durate t m tm t t Rt Rl Ri
A = (1,2) - 3 0 3 3 6 3 0 0
B = (1,3) - 2 0 2 0 2 0 0 0
C = (2,4) A 2 3 5 6 8 3 3 0
D = (3,4) B 6 2 8 2 8 0 0 0
E = (3,5) B 4 2 6 4 8 2 0 0
F = (4,6) C,D,E 4 8 12 8 12 0 0 0
G = (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 CP (ş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.
139
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 "#|8| " se reprezintă grafic în fig. 10.

A tAB
B

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 " 8 " poate fi utilizată pentru a arăta simultaneitatea executării a
două activităţi prin puncte de început. Aceasta este reprezentată în fig. 11.

tAB B

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 "#| B| #" poate fi, de asemenea, utilizată pentru a indica
simultaneitatea executării a două activităţi prin punctul de terminare (fig. 12). Această
tAB
A

Fig. 12 140
Bazele cercetării operaţionale

legătură arată că activitatea A este terminată cu cel puţin tAB unităţi de timp înaintea
terminării activităţii B.
Vom numi _||!& 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 4 E
Activităţi Dependenţe
A - A C H
B -
C A F t
D B s
E C
F C B D G
G F,D
H E,F
Fig. 13

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

tAB = 0 A B
A B M

A tAB > 0 A tAB B


B M

A A1 A2
M tAB
tAB B B

tAB A
A
M
B1 tAB
B
B2

Figura 14


141
Bazele cercetării operaţionale

 Y     



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: t m
i , t mî
A , «
t
| dreapta ± sus: termenul cel mai devreme al terminării activităţii: t m
 , t mt
A , «
| stânga ± jos: termenul cel mai târziu al începerii activităţii: t îM
i , t îM
A , «
| dreapta ± jos: termenul cel mai târziu al terminării activităţii: t tM
 , t tM
A , «

Aceste elemente pot fi urmărite în figura 15.

t îm i
t
tm t îm A
t
tm

t îM d(i) t tM t îM d(A) t tM

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.
î t
tm A tm tAB
t îM d(A) t tM

t mî A t mt tAB t mî B t mt
t îM d(A) t tM tAB t îM d(B) t tM

î t
tm A tm
t îM d(A) t tM

Figura 16

2*| # | | #| _#| | | _ B, conform figurii 16 va fi dat de
formula:
¢
}0 daca B este o activitate de început
l
l }t mt
A t AB terminare - început
î
tm
B l
max t î
A t început - început
lA  m AB
l l t m
A t AB d
B terminare - terminare
t

142
Bazele cercetării operaţionale

unde activitatea A este precedentă activităţii B şi t AB este o durată de aşteptare  0.


 # | | #| _#| | #| | _ B este egal cu suma dintre
termenul cel mai devreme al începerii activităţii B şi durata sa:

t tm
B = t îm
B + d(B)

7*|# | | #| ?& | | #| | _ A, conform figurii 17 va fi dat de
formula:
~T daca¢ A este o activitate finala¢
l ~ t îM
B t AB terminare - început
l
t M
A 
t

min t
B t AB d
A început - început
lB  M
l lt M
B t AB
t
terminare - terminare

unde activitatea A este direct precedentă activităţii B şi tAB este o durată de aşteptare  0.

9*| # | | #| ?& | | | | _| A este egal cu diferenţa dintre
termenul cel mai târziu de terminare al activităţii A şi durata sa:

t
î

— = t t
— ± d(—)

tAB t îm B t tm
t îM d(B) t tM

î t î t
tm A tm tAB tm B tm
t îM d(A) t tM tAB t îM d(B) t tM

t mî B t mt
t îM d(B) t tM

Figura 17

Pentru fiecare activitate vom defini următoarele rezerve de timp:

a)| Rezerva totală de timp (Rt) a unei activităţi A:

Rt(A) = t €
t

— ± t tm
— = t €t
— ± t €î
— ± d(—)
b)| Rezerva liberă de timp (Rl) a unei activităţi A:

Rl(A) = max t îm
B t îm
A d
A
B

unde activitatea A este direct precedentă activităţii B.

143
Bazele cercetării operaţionale

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.

0 A 3 3 C 5
3 3 6 6 2 8
8 F 12
8 4 12
0 s 0 2 D 8 12 t 12
0 0 0 2 6 8 12 0 12
0 B 2 6 G 7
0 2 2 E 11 1 12
2 6
4 4 8

Figura 18

Din acest graf reţea se formează tabelul 5 cu termenele şi rezervele de timp pentru
activităţile proiectului:
Tabelul 5
î t î t
Activităţi Cond. Durate t m tm tM tM Rt Rl
A - 3 0 3 3 6 3 0
B - 2 0 2 0 2 0 0
C A 2 3 5 6 8 3 3
D B 6 2 8 2 8 0 0
E B 4 2 6 4 8 2 0
F C,D,E 4 8 12 8 12 0 0
G E 1 6 7 11 12 5 5

6*| (" | |%|| |

Î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.
144
Bazele cercetării operaţionale

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 %" |%.
În continuare vom arăta cum se obţine graful integrat al mai multor grafuri pe obiect.
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ă.

 |2*| se desenează cele n grafuri alăturat;


 |6*| 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;
 |7*| se introduce un nod suplimentar fictiv I (activitate fictivă) care va fi legat la toate
nodurile (activităţile) iniţiale ale grafurilor P1, P2, ..., P n prin activităţi fictive
(săgeţi), acesta fiind nodul (activitatea) iniţial al grafului integrat;
 |9*| 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.
 |:*| 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:

A C H

F t
s

B D G

I F
0 A 3 3 C 5
3 3 6 6 2 8
8 F 12
8 4 12
0 s 0 2 D 8 12 t 12
0 0 0 2 6 8 12 0 12
0 B 2 6 G 7
0 2 2 E 11 1 12
2 6
4 4 8

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

145
Bazele cercetării operaţionale

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.
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
 iar rezultatul aplicării acesteia asupra unui graf se numeşte %"| .
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  | | ' . 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.

146
Bazele cercetării operaţionale

7*|| &|%" | |


Î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
şi a luării măsurilor de recuperare a acestora.
Această activitate poartă numele de actualizare a grafurilor iar noul graf se numeşte %"|
 &.
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ă, Da > 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.

9*||#&|8 |

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ă T max 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ă.

 | |_|

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  |# de execuţie a activităţii durata care corespunde
147
Bazele cercetării operaţionale

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
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 =
(dA) este o dreaptă, ca în figura de mai jos:
cA
cmax

cmin
dA
dmin dmax

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
c c min
formula evidentă: cu = max şi cu ajutorul lui se poate calcula foarte uşor costul oricărei
d max d min
durate intermediare lui dmin şi dmax, cu una din formulele:

c(dA) = cmin + cuö (dA ± dmin ) sau c(dA) = cmax ± cuö (dmax ± dA)

 ||| |#'|

Î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 C IF - pe perioada când investiţia nu intră în funcţiune.

Dintre aceste costuri, costurile direct e 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 gene rală a graficului
funcţiilor C D, C I, C IF, în care t reprezintă durata totală a investiţiei.

C 148
CT

C minim
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 (t opt) corespunzător costului total minim (min C T).
În practică, C I şi C IF se calculează la nivel contabil şi nu pun probleme deosebite de calcul, iar C D 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, t max] de execuţie a întregului proiect. Aflarea funcţiei C D(t)
presupune aflarea valorilor co stului 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 C T are forma aproximativă a unei parabole, deci numărul minim de valori pentru
găsirea acesteia este 3, din care două sunt calculate pentru t min şi t max, acestea fiind cele mai importante.
În cele ce urmează vom prezenta un algoritm pentru determinarea aproximativă a lui t opt folosind 3 puncte ca suport al interpolării.

—      


  
Y  Y Y  

|2|

Se construieşte graful asociat proiectului conform condiţionărilor dintre activităţi.

|6|

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.

|7|

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 (t min). 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.

|7|

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
149
Bazele cercetării operaţionale

calculează costul proiectului pentru această variantă. Acesta este CD(tmin) = C Dmax.
|
|9|

În acest moment avem deja două puncte ale graficului. Pentru al găsi pe al treilea alegem o
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)).

|:|

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.

|<|

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.

:*|(" |(|

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:

 |2*| Se ordonează activităţile proiectului crescător conform unui program de


ordonanţare.
 |6*| 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;
 |7*| Se marchează fiecare activitate prin simbolul asociat sau prin numerele de ordine
ale evenimentelor de la extremităţi deasupra barei corespunzătoare.
 |9*| Rezerva totală de timp se figurează cu linie întreruptă, adiacent cu durata
activităţii, după sau înainte (după tipul programului).
 |:*| 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.
150
Bazele cercetării operaţionale

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).

1 2 3 4 5 6 7 8 9 10 11 12
A
(1,2) = A
B
(1,3) = B
D
(3,4) = D
(3,5) = E E

(2,4) = C C

(5,6) = G G

(4,6) = F F

Figura 19

1 2 3 4 5 6 7 8 9 10 11 12
B
(1,3) = B
D
(3,4) = D
A
(1,2) = A
(2,4) = C C

(3,5) = E E
F

(5,6) = G G

Figura 20

151
Bazele cercetării operaţionale

<*|&| |

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:

| !#| |  , î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ă;
| !#| _|  , î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.|  |  este cantitatea necesară sau disponibilă din acea resursa, la un
moment dat;|
2.| " | |  este diagrama în care se figurează variaţia intensităţii unei resurse
în timp.|
|

*||!#|| |

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 utilizea ză 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
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), etc
Nu 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 (lung irea) duratelor după nevoie, prin alocare suplimentară, sau retragere
de resurse, precum şi posibilitatea de a întrerupe anumite activităţi.
/*||!#|_|  |

153
Bazele cercetării operaţionale

După cum am arătat, această problemă constă în planificarea activităţilor cu limitarea


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
Bazele cercetării operaţionale

>*|| ||

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 |
.
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 ( t ij ) a unei activităţi (i,j) este dată de formula:

a ij 4 ö m ij b ij
t ij =
6

d)| Dispersia duratei de execuţie ( â i42 ) a activităţii (i,j) se calculează cu formula:

2
 b ij a ij 
â ij2 =  

 6 

Dispersia â ij2 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:

tn «t ij

i, j ÜD crit
n2 «

i, j ÜD crit
2
ij

155
Bazele cercetării operaţionale

unde Dcrit reprezintă mulţimea tuturor arcelor grafului care sunt pe drumul critic.
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:

Tplan t n
z=
n2

şi apoi se deduce din tabelul valorilor funcţiei Laplace probabilitatea p( t n 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 ( t n ) şi dispersia ( â n2 ) 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( t n 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( t n Tplan)  0,5 programarea este justă;
| dacă p( t n Tplan) este mai mare decât 0,6, programarea utilizează excesiv de multe
resurse
Pasul 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:

Tij t î
zij =
â ij2
ş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.

R: 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 aij, mij, bij.
Se rezolvă reţeaua PERT ştiind că Tplanificat = 24 săptămâni:

156
Bazele cercetării operaţionale

tabelul 8.7


Activităţi Condiţionări Durate
Durata medie t t îm t â
a m b
A ± 2 5 8 5 0 7
B ± 2 5 8 5 0 5 1,00
C B 1 2 3 2 5 7 0,11
D A 2 3 4 3 5 13,16
E A 1 3 5 3 5 11,33
F A,C 3 6 10 6,16 7 14,50
G A,C 4 6 7 5,83 7 12,83 0,25
H A,C 3 4 6 4,16 7 16,66
I D 1 2 3 2 8 15,16
J I 3 5 6 4,83 10 19,99
K F 2 4 5 3,83 13,16 18,33
L G 2 4 5 3,83 12,83 16,66 0,25
E 4 6 11 6,50 8 17,83
N 4 5 7 5,16 14,50 22,99
Q K 2 5 6 4,66 15,99 22,99
R L,H 5 6 9 6,33 16,66 22,99 0,44
S 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
â n2 = 1,00 + 0,11 + 0,25 + 0,25 + 0,44 = 2,05
24 22,99
Z= = 0,70
2,05

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
Bazele cercetării operaţionale

|
(4 ||4 |
|
2*| ||!#| |
|
2*2*|4 |8 |#|| |
|
Î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 
 
 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    
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
Bazele cercetării operaţionale

2*6* #| || || |

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   de 

al variaţiilor îl
reprezintă  
.
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;

159
Bazele cercetării operaţionale

:| comenzile onorate de către furnizorii din alte localităţi nu pot fi introduse imediat în
procesul de fabricaţie;
:| anticiparea unei creşteri a preţurilor (exceptând speculaţiile) etc.

2*7*  || 

În cadrul gamei foarte largi de stocuri, se disting cu deosebire:


A. | ||_||  stocurile pot fi de trei feluri:
a) cel de materii prime şi materiale destinat consumului unităţilor de producţie; este vorba
de  
 , stoc în amonte;
b) cel de produse finite, destinate livrării către beneficiari; este vorba de   
  
, 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   

 
Ponderea cea mai mare o deţine stocul de producţie.
B. | ||_||  |0 ||||#| stocurile pot fi:
a)|  
 
 
 
" au ca rol reglarea fluxurilor de intrare şi de ieşire ale
produselor între două stadii succesive ale procesului tehnologic;
b)|  
 

  " 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)|  
 "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.|| | | _| | #  | | &3| care ţine seama şi de unele proprietăţi
fizico-chimice ale elementelor. Aşa avem: 

  
  etc
D.|| ||_||#  ||% avem:
#|  
    
 " 
#|  
 $  

  (comandate special pentru o anume comandă); 
#| 
$
   (din magaziile intermediare, cu o supraveghe-re globală);
#|  

   "
E. | ||_|||"#||| stocurile pot fi:
a)|   
 ;
b)|   
  ;
c)|  
 
   
"
d)|   

 
 
;
e)|  
;

2*9*|!_||& ||% ||"|| |

Având în vedere particularităţile diferitelor procese de stocare, activitatea de conducere a acestora are totuşi unele trăsăt uri 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 o rganizării sale
raţionale. Realizarea în condiţii de eficienţă economică ma ximă ş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;

160
Bazele cercetării operaţionale

:| folosirea unui sistem informaţional simplu, operativ, eficient, util şi cuprinzător care să
evidenţieze în orice moment starea procesului de stocare;
:| 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.

||2*:*|#|||  ||||

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:
*| | |  4 , 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) 
   cererea pentru o perioadă e cunoscută şi poate fi constantă pentru toate
perioadele sau variabilă pentru diferite perioade;
b) 
     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)       cererea pentru care nu dispunem nici de datele necesare stabilirii unei
repartiţii de probabilitate (este cazul, de exemplu, al produselor noi).
/* 4  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:

161
Bazele cercetării operaţionale

a)  | | | care cuprind suma cheltuielilor ce trebuie efectuate pe timpul
staţionării resurselor materiale în stoc şi anume:
- cheltuieli cu primirea-recepţia;
- 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)|  | |  |  |  |  |    este definit atunci când volumul cererii
depăşeşte stocul existent. Referitor la acest stoc, există trei situaţii. 
 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.
 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ă.

, ş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.

162
Bazele cercetării operaţionale

c) $ ||_|#  || * Din această categorie fac parte:


- 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ţ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.
,|  | | oF  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.
,|  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.
,|  |   sunt specifici dinamicii proceselor de stocare. Aceştia
sunt:
a) | | % | - determină şi orizontul procesului de gestiune. De obicei se
consideră a fi un an;
b) _ ||#|| |_&| _G
c)  ||_&|- 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) ## | | | | | | #| #&| | _8&. (data de
reaprovizionare);
e) " || &*|
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.
),| ( | |  | |  4. 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:
| 
   
 : cantitatea intrată în stoc, frecvenţa sau momentul achiziţiilor,
gradul de prelucrare a produselor;
| 
    
 : costurile, cererea, durata de reaprovizionare, cantitatea
livrată.
|

163
Bazele cercetării operaţionale

6*|| ||% ||  |


|
6*2*||  |H|
|
O

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)

á

| 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

o
 

|  = intervalul dintre două aprovizionări succesive;


| n = cantitatea comandată şi adusă la fiecare aprovizionare;
| s(t) = nivelul stocului din depozit la momentul t

  

| minimizarea costului total de aprovizionare CT


 



n
Ipoteza 1   = cererea pe unitatea de timp  s(t) = liniară
 T
Ipoteza 2   acelaşi între oricare două comenzi
Ipoteza 3  n acelaşi pentru toate comenzile
Ipoteza 4  s(t)  0 pentru orice t
Ipoteza 5  la sfârşitul unei perioade  s(t) are un salt de la 0 la n





Situaţia de mai sus poate fi vizualizată prin trasarea graficului variaţiei stocului în timp:

N 164
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 cl şi cheltuieli de stocare pe o durată , stocul


n
variind liniar de la n la 0. Din acest motiv costul cu stocarea va fi: cs · ·  (În general
2

costul de stocare se calculează cu formula s ö  
  ).
0
% !
| numărul de perioade este egal cu


n
‚
| costul total cu aprovizionarea va fi CT = (cl + cs · · ) ·
2

În concluzie rezolvarea problemei se reduce la a găsi minimul funcţiei:

n
ƒ
CT(n,) = (cl + cs · · ) ·
2

% !
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·
r
şi înlocuim în expresia costului total cu aprovizionarea obţinând:

n ! r 1 ö!
CT(n) = (cl + cs · ·n· )· =  örö s
ö
2 r 2

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
165
Bazele cercetării operaţionale

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].
Calculăm derivata costului total:

ör ö! 2ö ö%
T 
Cï  s
care are zerourile: n1,2 =  

2
2 s ö!

2ö ö%
n1 = 

0, % 
s ö!
2ö ö% 2ö ö% % ö!
n2 = 
Ü
0, % M 
%M 

s ö! s ö! s 2

În concluzie:

r ö! r ö!
a)| dacă 
 adică dacă costul de lansare este de mai mult de ori mai mare
s 2 2
decât costul de stocare tabloul de variaţie va fi:
n 0 N
CT¶(n) - - - - - -
CT(n) !ör
 s ö
2

şi deci se va face o singură aprovizionare la începutul perioadei T în care se va aduce toată


!ör
cantitatea N, costul total fiind de  s ö .
2
r ö!
b)| dacă 
 obţinem tabloul:
s 2
2ö ö%
n 0 
N
s ö!
CT¶(n) - - - - - 0 + + + +
CT(n) 2 ö  ö s ö! ö %

% ö! ö % 2ö ö!
în concluzie se vor face s
aprovizionări la intervale de topt = 
în
2ö  s ö%
2ö ö%
care se va aduce câte nopt = 
, variantă prin care se va face aprovizionarea cu costul
s ö!
total minim posibil:
CT = 2ö  ö s ö! ö %

 . Dacă nu se acceptă decât soluţii în numere întregi pentru n sau t se va calcula costul
pentru:

166
Bazele cercetării operaţionale

 2ö  ö r   2ö  ö r 
n=   şi n =  +1
 s ö!   s ö! 
 2 ö  ö!   2 ö  ö! 
t=   şi t =   +1
 s ö r   s ö r 

alegându-se dintre toate variantele cea mai ieftină. ( [x] = partea întreagă lui x).

6*6*||  |H| |  |||


|
O

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)

á

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

o
 

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

  

| minimizarea costului total de aprovizionare CT

N 167
Bazele cercetării operaţionale


 



n  N
Ipoteza 1  = cererea pe unitatea de timp  s(t) = liniară
 1 T
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.




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
s
0 la n - s. Din acest motiv costul cu stocarea va fi: cs · · 1 iar costul de penalizare va
2
n -s
fi: cp · · 2 (În general costul de penalizare, ca şi cel de stocare, se calculează cu
2

formula  ö  
 ï ).
0
r !
| numărul de perioade este egal cu 

168
Bazele cercetării operaţionale

s n -s r
| costul total cu aprovizionarea va fi CT = (cl + cs · · 1 + cp · · 2 ) ·
2 2

În concluzie rezolvarea problemei se reduce la a găsi minimul funcţiei:

s n -s r
CT(n,s,,1,2 ) = (cl + cs · · 1 + cp · · 2 ) ·
2 2

unde variabilele n, s, , 1 şi 2 verifică următoarele condiţii şi relaţii:

Condiţii Relaţii

1.| 0<n N 1.| 1 + 2 = 


2.| 0 s n n N
2.|
3.| 0< T  T
4.| 0 1  s 
5.| 0 2  3.|
1 2

Î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:

T
1 = s ö

T
2 =
n - s ö
T
 = nö

Acestea se înlocuiesc în expresia costului total şi obţinem în final o problemă de minim a


unei cu două variabile:

s T n -s T r
min CT(n,s) = (cl + cs · · sö + cp · ·
n - s ö )·
n,s 2 2
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:

C T
n, s T 1 T 1 T N
= cpö(n ± s)ö - [cl + öcsös2ö + ö cpö (n ± s)2ö ]ö 2
n n 2 N 2 N n
C T
n, s T
= [(cs + cp)ös - cpö n]ö
s n

169
Bazele cercetării operaţionale

 T
n, s
 0
Rezolvăm sistemul:  n scoţându-l pe s în funcţie de n din a doua ecuaţie (s =
 T
n, s
0
 s
cp 1 cscp
ön) şi înlocuindu-l în prima obţinând: ö öT - cl ö 2 = 0 de unde rezultă n2 =
cs cp 2 cs c p n
2 ö c l ö
c s c p 2 öcl ö cs cp
ö şi în final unica soluţie pozitivă: n0 = ö şi s0 =
cs c p T cs ö T cp

2 öcl ö cp
ö . Această soluţie este soluţia optimă doar dacă 0 < n0 şi sunt îndeplinite
cs ö T cs cp
 2 T
n, s 2

n, s
 2

n 0 , s 0  0, T
2

n 0 , s 0 0
 n s
condiţiile de ordinul 2:  2 2
 T
n, s
n , s ö T
n, s

n, s 
2 2

0 0
n 0 , s 0 

T

n 0 , s 0   0
 2
n 2
s  n s 

Evident n0 > 0 şi avem:
T
n, s
2
T
2

n 0 , s 0 = (cs + cp)ö > 0
s n0
2

n, s T
= 2c l
c s c p ö s 20 ö  ö 3 > 0

T
2

n 0 , s 0
n   n0
2c
c c ö T ö
2
2

n, s 2

n, s  2

n, s 
T
2

n 0 , s 0 ö T
2

n 0 , s 0  T

n 0 , s 0  = l s 4 p >0
n s  n s  n0
2 öcl cp
n0 este echivalentă cu: ö öT.
cs cs cp
2 öcl cp
În concluzie, dacă ö ö T atunci problema admite soluţia optimă:
cs cs cp
2 öcl ö cs cp
n0 = ö
cs ö T cp

2 ö cl ö cp
s0 = ö
cs ö T cs cp

2 öcl öT cp
1 = ö
cs ö cs cp

2 ö c l ö T  c s c p cp 

2 = ö
cs ö  cp cs c p 
 
2 ö c l ö T cs c p
 = ö
cs ö cp
cp
T maxim = T(n0,s0) = 2ö ö ö! ö % ö
cs cp
 s

170
Bazele cercetării operaţionale

cp
Expresia o = măsoară intensitatea lipsei de stoc şi din expresia lui CT maxim se
cs cp
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
c
decât cp. Dacă cp este mult mai mare decât cs ( s  0 ) atunci se obţin aceleaşi soluţii ca în modelul
cp
Willson fără ruptură de stoc.
2 ö cl cp
Dacă ö > NöT atunci se va face o singură lansare (deci n0 = N) şi vom avea s0 =
c s cs c p
N
n0, 1 =  = T şi 0 = 0 iar CT = cl + csö öT exact ca şi în modelul Willson fără ruptură de stoc.
2

6*7*||(&||#  |H

Î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 = (s,ts) şi/sau
cp = (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.
171
Bazele cercetării operaţionale

6*9*|| || |B||


|
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ă
N
cererea este constantă în timp, adică în fiecare unitate de timp este egală cu  = .
T
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;
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.

Ciclu de s(t)
producţie
deficitului în paralel
satisfacerea
cererii curente

s Acumulare
Lichidarea

de comenzi
n neonorate
cu

T
t4 t1 t2 t3
Formarea Consumarea stocului
stocului
Figura 3

În acest desen am notat cu:

172
Bazele cercetării operaţionale

| 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 ;
s
| cheltuieli de stocare pe intervalele t1 şi t2, cs · · (t1 + t2);
2
n -s
| cheltuieli de penalizare pe intervalele t3 şi t4: cp · · (t3 + t4)
2

Costul total unitar va fi:


s n s

t 1 t 2 c p
c l cs
t 3 t 4
CT(n,s,t1,t2,t3,t4) = 2 2
t1 t 2 t 3 t 4
şi vom avea de rezolvat problema de minim cu legături:

s n s
cl cs
t 1 t 2 c p
t 3 t 4
min 2 2
n,s, t1 , t 2 , t 3 , t 4 t1 t 2 t 3 t 4
n s s …
t  t  
 4 1
 n s  s 
 t t2
 3
 0sÊn
0  t , 1 Ê i Ê 4
 i

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 C T.
Avem:
| s = t2 ö 
| n = (t2 + t3)ö 

| t1 = † t2


| t4 = ‡ t3

şi înlocuind în funcţia obiectiv obţinem:

CT(t2,t3) =
2c l
 

 c s t 22 c p t 23
2 
t 2 t3

173
Bazele cercetării operaţionale

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:

2c l

ˆ cp 2c l

ˆ cs
t2 = ö , t3 = ö
ˆ
c s cs cp ˆ
c p cs cp
şi în continuare:
2ˆc l cs 2ˆc l cp
t1 = ö , t4 = ö

c p

ˆ cs c p
c s

ˆ cs cp

2ˆc l

ˆ cp 2ˆc l

ˆ  cp c s 
s= ö , n= ö

c s cs cp

c s c p  cs cp 
 
 ˆ  cp
CTminim = 2 ö ˆ ö c s ö c p 1 

 cs cp

Soluţia de mai sus verifică evident şi celelalte restricţii, deci este unica soluţie optimă.
 
 Dacă ritmul producţiei este mult mai mare decât intensitatea cererii (
mult mai

mare decât  sau echivalent spus
0 ) se obţine soluţia din modelul Willson cu ruptură de stoc.

6*:*|| ||% | | ||$&| | |$ || |_! |


|
Î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 (q) are şi alte salturi care trebuie luate în consideraţie când se
determină cantitatea optimă q ce trebuie achiziţionată (produsă).
&| 2 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 (q)are expresia:
0 q0

(q) = c l p ö q 0  q  ®
cl pï öq q  ®


Dacă presupunem că nu se admite neonorarea comenzilor şi că aprovizionarea se face


s
instantaneu, atunci ne aflăm în situaţia de la modelul anterior în care t1 = t3 = t4 = 0, =
şi s = q.
t2
Formula cheltuielilor medii pe unitatea de timp va deveni:
1
cs öq ö t 2 cl
1
ö cl
CT = 2 = cs ö q +
t2 2 q

174
Bazele cercetării operaţionale


q
Adăugând la acestea şi cheltuielile unitare de producţie obţinem:
t2

‰1 c ö q p

ö c l 0qQ
l
l2
s
q
C(q) = 
1
öcl
l cs ö q pï

qQ
l2 q

Pentru a calcula minimul acestei funcţii vom calcula derivata:

1
öc
C'(q) = c s 2 l pentru q ƒ Q
2 q

2 ö
öcl
care se anulează în q0 = . Punctul de minim este q0 sau Q, punctul în care funcţia nu e
cs
continuă. Rămâne doar să mai comparăm valorile funcţiei C(q) în q0 şi Q:

‰1 c ö q p

ö cl 0  q0  Q
l
l2
s 0
q0
C(q0) = 
1
ö cl
l c s ö q 0 pï

q0  Q
l2 q0

Dacă q0 < Q atunci soluţia optimă este q0 iar dacă q0 > Q se compară valorile
1
öcl 1
öcl
c s ö q 0 pï

şi c s ö Q p
.
2 q0 2 Q
1
öcl 1
öcl
Dacă: c s ö q 0 p ï

< c s ö Q p
se alege q0 altfel se alege Q.
2 q0 2 Q
&| 6 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 (q)are expresia:
0 q0

(q) = c l p ö q 0q®
c l p ö q pï ö
q - ® q  ®

şi vor rezulta cheltuielile totale în unitatea de timp:

1  öcl
 c s ö q p 0q®
2 q
C(q) = 
1 c l
 ï  ®
 cs ö q pï  q®

2 q
şi în continuare se găseşte soluţia optimă ca şi la cazul 1.

175
Bazele cercetării operaţionale

6*<*|| ||% | |||


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

 0 1 V n V 

=  
 p
0 p
1 V p
n V 
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:

Y Y   YY      

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:



cs ö ö
2 

C(,
) =  c s ö  
  2
iar dacă
>  evoluţia stocului va fi cea din figura 4b) şi costul unitar de stocare va fi:
Š ö
Š
cs ö 1 cp ö ö2
C(,
) = 2 2
1  2
R R
unde . Înlocuind t1 în funcţie de t2 din această relaţie în expresia costului unitar vom
t1 t2
obţine:
R2
R 2
C(R, ) = csö + cpö
2 2

R
R

t t1
t2
t

a) b)
Figura 4 176
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
:

 

  2

 2


C() =  cs ö   2  V cs ö
2
V cs ö
2

cp ö
2

 p

p
 p


 V V 

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:

  2
  2
C
 = 
 0
c ö    ö p

s  2 
  1
cs ö
2
ö p
 
  1
cp ö
2
ö p


unde  Ü
şi valorile j
 formează un şir real. Pentru a găsi minimul acestui şir
observăm că funcţia cu valori reale j
 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 j
 este cea care îndeplineşte simultan relaţiile:

j
 1 > j
 < j
 1

sistem care, după efectuarea unor calcule simplificatoare, este echivalent cu:

L( - 1) < o < L()


unde:
 1 p

cp
L() = p(
) +  

 «
2 
 1

iar o=
cs c p
.

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 o.

p
(

 1 p

«

 1



 «
2 
 1

177
Bazele cercetării operaţionale

În final, pentru 0 găsit, se calculează costul mediu minim C


 0

Ë  


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

  ,     ,  2 V a
n - 1  ,   V 

=  
 p1 p2 V pn V 
sau:
  3
2 1  
   V a V 

= 2 2 2
 
 1p p2 V p
n V 

unde a este valoarea minimă a cererii iar l lungimea intervalelor. Vom presupune În acest caz costul
mediu va avea forma:


 

2


  2

  
 
C
R =  ö cs ö   ö p
 cs ö ö p
 cp ö ö p

 0  2 2     2    

iar minimul acesteia va fi dat de acea valoare 0 pentru care:

cp p

ã
 
L(0 ± ) <
cs cp
< L(0) unde L( ) = p(

) + R


2 «
R 


  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:

178
Bazele cercetării operaţionale


  ã2 ã

2
j
 = c s ö    ö
d cs ö

d cp ö

d
0  2  2  2

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ă.

Y 

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:

 
j
 = c 1 ö 
 
 0
ö p
 c2 ö 
  ö p

  1

Valoarea  întreagă care dă minimul lui j


 este cea care îndeplineşte simultan relaţiile:

j
 1 > j
 < j
 1

sistem care, după efectuarea unor calcule simplificatoare, este echivalent cu:

cp
p(  - 1) < < p( )
cs c p

din care va fi aflat optim şi apoi j


 Ä .

 
 Ş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.
|
|
7|| |||||#| |
|
|
7*2*  ||48|

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
³í. 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ţă.

179
Bazele cercetării operaţionale

În acest model considerăm:

:| cererea totală pentru perioada ! este


, aleatorie;|
:| costul stocării este s;|
:| costul lansării unei comenzi de reaprovizionare este i;|
:| termenul de livrare  poate fi:|

a)  4 ; în acest caz obţinem costul total pentru intervalul ! ca fiind: |


i
| | | | j s
&,
& 2

unde & reprezintă cantitatea de reaprovizionat.

b) |    . Fie nivelul minim de reaprovizionare %; când stocul atinge acest nivel
se lansează o comandă de & piese. Mărimile date sunt:! 
 s i şi ne propunem să determinăm
pe % şi pe & astfel încât costul stocului pentru perioada ! să fie minim. O metodă aproximativă
constă în a admite că ritmul mediu al cererii este constant; în acest caz optimul cantităţii &' este
independent de %:

2
2!
&0  i
!0  i
j 0  2
! i s
! s
s

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  (
) probabilitatea cererii de
produse în intervalul :  (
) = P(

) = 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 -  (
) = . Fie ® soluţia ecuaţiei: 1 -  (
) = , de unde rezultă ®(
%
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ţă).

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


180
Bazele cercetării operaţionale

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 %.

CLASA PONDEREA NUMERICĂ| PONDEREA VALORICĂ|


A| 10 70
B| 20 20
C| 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í:
Pondere
valorică

% 100

90

70 C
B

A
10 30 100 Pondere
numerică
%
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ă.
181
Bazele cercetării operaţionale

Î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.

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.

7*7*| 4%|  

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);
182
Bazele cercetării operaţionale

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
 (i = 1, 2,..., !),
pe ! intervale de timp şi calculul abaterii medii pătratice .
Pentru determinarea stocului de siguranţă, metoda IMPACT foloseşte următorii indicatori:

a) | 

(necesarul mediu)

1 !

  
 ,
!  1
(V.3.1)

unde ! este numărul de intervale de timp cercetate;



 este cererea în intervalul i, i = 1, 2,..., !;
 b) )á(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.
1 !
)á   

. (V.3.2)
!  1

MAD se determină ca valoare medie a valorilor absolute ale abaterilor de la cererea medie.
c) |       
  exprimă potenţialul de livrare al furnizorilor. Coeficientul de
siguranţă (V) se stabileşte pe bază de tabele ale funcţiei normale, în cadrul căreia sunt date valorile
lui V corespunzător diferitelor niveluri ale potenţialului de livrare al furnizorilor.
   

 (*) exprimă gradul de satisfacere de către furnizor a unei comenzi.
Acest potenţial de livrare se mai numeşte


 sau 
 .
Potenţialul de livrare (*) se determină după relaţia

+ iR
* , (V.3.3)
+ i+

unde +iR este cantitatea livrată efectiv;


+i+este cantitatea ce trebuie livrată conform comenzii.
Rezultă 0 < * < 1; * = 0 înseamnă că se înregistrează lipsa materialelor în stoc, fără o posibilitate
eficientă de acoperire;
F|- 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:

% ë+ % ëi %
1. * 1 ëi , (V.3.4)
% ë+ % ë+
unde %ë+reprezintă numărul de unităţi (bucăţi) comandate;
%ëi reprezintă numărul de unităţi (bucăţi) lipsă.

% *! % *i % *i
2. | * 1 , (V.3.5)
% *! % *!

unde %*!reprezintă numărul total de zile lucrătoare din perioada de gestiune;


%*i reprezintă numărul de zile cu lipsă de stoc.
183
Bazele cercetării operaţionale

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:

%s(Vö)á
  
 Î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  
  . Această metodă a fost
dezvoltată de Robert Brown şi este cunoscută sub numele de   ! .
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 o estimarea cererii pentru prima perioadă şi
 cererea reală a primei perioade.
Estimarea cererii pentru următoarele perioade se obţine din relaţiile:
    o(o ,R-
  o #,
unde R reprezintă constanta de nivelare; R Ü (0,1) şi determină măsura în care valorile din trecut
sunt cuprinse în estimarea cererii.
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<R<1
R = 0 înseamnă că erorile de prevedere care apar nu sunt luate în considerare
R = 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 ()á) poate fi folosită după aceleaşi principii: abaterea
medie a perioadei i va fi dată de relaţia

)á()á ,R-
  o  )á #

În acest caz 
  o   este valoarea abaterii precedente faţă de valoarea reală.
Cererea medie (necesarul mediu) şi abaterea absolută de la medie ()á) vor fi apreciate în
prealabil prin metoda nivelării exponenţială, urmând ca abia după aceea să se determine nivelul
stocului de siguranţă (%s ).

184