Professional Documents
Culture Documents
|
||
||
|||||
|| ||
|
|||| |
|
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
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
|#||||
|
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
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
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
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
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
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
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:
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
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:
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
&_|!#||%#|*
&|!#|
|
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
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:
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ă:
B1b
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 .
!
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.
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
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)
Din motive de organizare şi concentrare a datelor problemei, Danzig le-a trecut pe acestea
într-un tabel ca cel de mai jos, numit !|#'.
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|%_)
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.
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:
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
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.
|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
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.
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
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
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
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ă.
|
#| | ||!&|#!|||
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).
30
Bazele cercetării operaţionale
max c T ö x
öx b
x0
pe care o rezolvăm cu algoritmul simplex pornind rezolvarea de la baza matrice unitate, putând
ajunge la două situaţii:
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
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.
32
Bazele cercetării operaţionale
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:
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
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
| 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
|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
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
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.
cB xB B = B-1 b B-1
(B) ʌ = c TB ö B-1
38
Bazele cercetării operaţionale
Öj = c TB öB-1ö Pj - cj = ʌöPj - cj
| 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.
(B) ʌ = c TB ö B-1 Ök
| 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
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
0 x3 10 1 0
-M x5 2 0 1
-2M 0 -M
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 ¾
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
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
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:
xT = (x1,x2, « ,xn)
cT = (c1,c2, « ,cn)
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
xj 0 xj 0 xj ± oarecare
42
Bazele cercetării operaţionale
| O restricţie se numeşte
dacă:
| O restricţie se numeşte
dacă:
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:
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
(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
(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
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ă:
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)
Modelul matematic pe baza căruia se stabileşte programul optim de producţie are forma:
45
Bazele cercetării operaţionale
Duala sa va fi:
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:
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
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
!
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ă.
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
³ í
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.
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
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ă. sY 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
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
Primală Duală
î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:
51
Bazele cercetării operaţionale
Primală Duală
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:
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:
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
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:
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:
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
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
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.
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
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
-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.
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
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
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:
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 =
!
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
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
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ă:
Î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.
F.S.
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
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
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.
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.
& |:*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
ï
| 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
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 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
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
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.
F.S.
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
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 :
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:
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:
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
= 0 +
Se calculează soluţiile de bază xB(), corespunzătoare bazei găsite la pasul 1,
pentru variabil:
xB() = B01 ö b
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)
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
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
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
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
10
7 0
6
25 36 60 0
36 60
20 9 0 Ü , = şi 1 =
55 5 7 5 7
30
0
18
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
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 +
6*| Se calculează Öj() corespunzători bazei găsite la pasul 1, pentru variabil:
Öj( ) =
!
c
ö B01 ö 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
:*| 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
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
Ö() = !c
ö B 01 ö 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
_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
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
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
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:
80
Bazele cercetării operaţionale
Destinaţii
C1 C2 ¥ Cn
Surse
F1 c11 c12 ¥ c1n A1
F2 c21 c22 c2n A2
`
¥
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
«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
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
&_|!#||
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:
|2*| Se alege o rută iniţială după o anumită regulă. Această regulă diferă în funcţie de metoda
folosită, fiind:
|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.
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.
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.
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
|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*| | |#|
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
dn
«
l x ij
lj 1
1 1 i n
m
l«
l x
i 1
ij 1 1 j n
xij Ü {0,1}
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:
| 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
l«
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
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 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))
á| 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.
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
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ă 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
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:
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.
96
Bazele cercetării operaţionale
á 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)
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:
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
:* /*|!#|! ||_|#|
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:
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ă.
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.
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ă).
|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.
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
*|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
P2
4
P1 P3
2 P4
3 4
O
3
P6 P5 7
2
P8
P7
Figura 4.4
|
*|o|%# | |D E
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
|
Î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ă:
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."
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:
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
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 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.
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
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:
qvaloarea arcului
x i , x j daca exista arcul
x i , x j
daca nu exista arcul
x i , x j
a ij =
ã
109
Bazele cercetării operaţionale
@ Dacă AB atunci aplicăm acelaşi algoritm cu singura diferenţă că ne vom opri când vom obţine un număr de zerouri egal cu
min (A,B).
110
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;
#| # |$#| |
|6*| Se determină matricea D a drumurilor grafului G prin procedeul expus la începutul
capitolului şi apoi matricea M = I + D.
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.
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.
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.
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ă.
|<*| 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.
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
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
YY
"
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:
|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
|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
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
x j,xi
||w(xi) = max
x4
x 4 v
x 4 , x i , în problemele de maxim
x 4 ,x i
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.
Î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:
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
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
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;
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.
Valoarea fluxului de valoare maximă reprezintă cea mai mare cantitate care se poate transporta efectiv pe reţea, de la surse la destinaţii.
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:
=
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).
=
«
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.
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:
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:
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 ).
Î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:
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 :
| 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ă).
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
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ă.
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:
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:
|
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:
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
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
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
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
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
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
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
1 D 6
0 0 6 12 12
B 3 E 4 G
2 2 2 4 6 8 1
Figura 9
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
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).
t mî (i,j) = t m
i
t
tm (i,j) = t mî (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
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
t im = t iM , t mj = t M m m
j , t j ± t i = dij
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.
| 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:
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
MPM CPM
tAB = 0 A B
A 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
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
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
lî
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
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
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
| 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
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
| 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:
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.
|2|
|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|
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:
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
<*|&| |
| !#| | , î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
În cazul problemelor de nivelare după mai multe resurse este posibilă adaptarea algoritmului
Burgess-Killebraw după cum urmează:
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 ij 4 ö m ij b ij
t ij =
6
2
b ij
a ij
â ij2 =
6
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
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
t
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
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.
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.
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*:*|#||| ||||
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
163
Bazele cercetării operaţionale
á
o
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:
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
% ö! ö % 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).
á
o
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
s n -s r
CT(n,s,,1,2 ) = (cl + cs · · 1 + cp · · 2 ) ·
2 2
Condiţii Relaţii
Î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ö
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
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
172
Bazele cercetării operaţionale
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
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
ns 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
2c l
cp 2c l
cs
t2 = ö , t3 = ö
c s cs cp
c p cs cp
şi în continuare:
2c l cs 2c l cp
t1 = ö , t4 = ö
c p
cs c p
c s
cs cp
2c l
cp 2c 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.
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
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
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:
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
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:
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
Ë
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
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
j
1 > j
< j
1
sistem care, după efectuarea unor calcule simplificatoare, este echivalent cu:
cp
p( - 1) < < p( )
cs c p
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
a) 4; în acest caz obţinem costul total pentru intervalul ! ca fiind: |
i
| | | | j s
&,
& 2
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:
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 %.
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:
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:
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%|
a) |
(necesarul mediu)
1 !
,
! 1
(V.3.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+
% ë+ % ë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)
% *! % *!
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