O problemă de ordonanțare constă în stabilirea unei ordini de efectuare a operațiilor (activităților) unui proiect, astfel ca interdependențele dintre ele să fie respectate în cadrul resurselor disponibile și durata totală de execuție a acestuia să fie minimă.
Pentru a putea concretiza definiția de mai sus, trebuie clarificate noțiunile de proiect, operații (activități) ale acestuia, interdependențe între operații și resursă a proiectului.
1. Prin proiect vom înțelege o acțiune de mare amploare sau un proces complex destinat atingerii unui scop bine precizat. La un proiect deosebim următoarele caracteristici:
- un obiectiv, care poate fi un produs, o cantitate de informații sau un rezultat de natură organizatorică;
- un ansamblu de activități (subacțiuni, subprocese, operații), corelate logic și tehnologic, a căror realizare permite atingerea scopului propus;
- un proces tehnologic prin care se precizează intercondiționărilor între activități, interesând în special ordinea de execuție a acestora.
Proiectele pot fi clasificate după natura lor în:
- proiecte industriale și proiecte de investiții, prin care se obține un produs material (de exemplu construcția unei clădiri, pod, tunel, etc);
- proiecte organizatorice al căror scop este de a obține un rezultat de natură informațională sau organizatorică (de exemplu un proiect de cercetare științifică).
Pentru a permite o analiză amănunțită a desfășurării lui, o alegere a variantelor optime de execuție și un control continuu al evoluției sale, trebuie să descompunem proiectul în părți componente la un nivel care să permită tratarea unitară a fiecărei părți și stabilirea conexiunilor între acestea. Aceste componente se numesc operații sau activități.
O activitate este o parte distinctă dintr-un proiect, un subproces precis determinat, care consumă timp și resurse. Vom presupune în continuare că activitățile au următoarele proprietăți:
- fiecare activitate este indivizibilă (nu se mai descompune în subactivități);
- fiecare activitate are o durată cunoscută;
- o activitate, odată începută, nu mai poate fi întreruptă.
Dintre intercondiționările (interdependențele) dintre activități, ne interesează, în special, cele temporale, numite relații de precedență, care pot fi de trei tipuri:
1. de tip "terminare început". Acest tip este cel mai frecvent întâlnit și spunem că o activitate A precede activitatea B printr-o interdependență de tip "terminare început" dacă activitatea B nu poate începe decât după un interval de timp tAB de la terminarea activității A. Acest interval poate fi egal și cu zero, caz în care spunem că activitatea A precede direct activitatea B;
2. de tip "început început". Acest tip este frecvent întâlnit și spunem că o activitate A precede activitatea B printr-o interdependență de tip "început început" dacă activitatea B nu poate începe decât după un interval de timp tAB de la începerea activității A. Acest interval poate fi chiar mai mare decât durata activității A, caz în care avem de fapt o dependență de tipul "terminare început", putând chiar privi primul tip ca un caz particular al celui de-al doilea;
3. de tip "terminare terminare". Spunem că o activitate A precede activitatea B printr-o interdependență de tip "terminare terminare" dacă activitatea B nu se poate termina decât după un interval de timp tAB de la terminarea activității A sau că activitatea A trebuie terminată cu cel puțin tAB unități de timp înaintea terminării activității B.
Prin durată totală de execuție a unui proiect înțelegem intervalul de timp în care se efectuează toate activitățile acestuia, respectând toate interdependențele dintre activități.
A programa un proiect înseamnă a stabili termenele de începere pentru fiecare activitate în parte, ținând seama de restricțiile impuse de procesul tehnologic, duratele activităților și resursele disponibile. Pentru un proiect dat, există un număr enorm de programări admisibile. Un interes deosebit prezintă programul optim, adică acel program care, pe de o parte, satisface restricțiile impuse iar, pe de altă parte, optimizează un anumit criteriu de eficiență economică.
Criteriul de optimizare nu este același pentru toate proiectele, el este stabilit pentru fiecare caz în parte și definește obiectivele majore ale conducerii proiectului. În funcție de aceste obiective, criteriul poate fi durata totală minimă, costul total minim, folosirea cât mai uniformă a resurselor sau o sinteză a acestora. Deci, programul optim este acea desfășurare a proiectului, precizată prin termenele de începere ale activităților, care conduce la o eficiență maximă.
Deoarece, așa cum se vede și din cele spuse mai sus, situațiile din practică ce necesită rezolvarea unei probleme de ordonanțare sunt foarte variate, s-au propus numeroase modele pentru rezolvarea lor. În continuare vor fi prezentate câteva dintre modelele cele mai frecvent utilizate în practică.
1. Modele de analiză a drumului critic (ADC)
Principiul analizei drumului critic constă în divizarea unui proiect (acțiuni complexe) în părți componente, la un nivel care să permită corelarea logică și tehnologică a acestora, adică să facă posibilă stabilirea interacțiunilor între părțile componente. Aceste părți componente sunt activitățile acțiunii complexe.
La definirea listei de activități specialistul sau specialiștii care participă la această operație folosesc experiența lor pentru a răspunde pentru fiecare activitate la întrebările: ce alte activități succed sau preced în mod necesar această activitate ?; care este durata activității ?. Ia naștere în acest fel un tabel care conține activitățile proiectului, intercondiționările între activități și duratele acestora.
Un astfel de tabel trebuie să conțină cel puțin următoarele elemente:
- activități: în această coloană se enumeră activitățile proiectului, fiind puse în evidență printr-o denumire sau printr-un simbol (codul activității);
- condiționări: se precizează, pentru fiecare activitate, activitățile imediat precedente, prin simbolurile lor; activitățile de start nu au activități precedente, în căsuță fiind trecută o liniuță;
- durata: pentru fiecare activitate se precizează durata de execuție, într-o anumită unitate de măsură. Durata unei activități este o constantă.
Modelele de analiză a drumului critic se bazează pe reprezentarea proiectului printr-un graf, elementele tabelului asociat acestuia fiind suficiente pentru a construi graful corespunzător.
În tabelul 1 este prezentat un proiect, activitățile fiind notate prin litere mari A, B, C, . Activitățile A și B sunt activitățile de început ale proiectului. Activitatea A este direct precedentă activității C. De asemenea, activitatea C este direct precedentă activităților E și F.
Tabelul 1
Nr. crt. |
Activitățile proiectului |
Activitățile direct precedente (condiționări) |
Durate |
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:
A. Metoda CPM (Critical Path Method)
Metoda CPM este un procedeu de analiză a drumului critic în care singurul parametru analizat este timpul și în reprezentarea graficului rețea se ține seama de următoarele convenții:
- fiecărei activități i se asociază un segment orientat numit arc, definit prin capetele sale, astfel fiecare activitate identificându-se printr-un arc;
- fiecărui arc i se asociază o valoare egală cu durata activității pe care o reprezintă;
- condiționarea a două activități se reprezintă prin succesiunea a două arce adiacente.
Nodurile grafului vor reprezenta momentele caracteristice ale proiectului, reprezentând stadii de realizare a activităților (adică terminarea uneia sau mai multor activități și/sau începerea uneia sau mai multor activități).
Procedeul CPM se bazează pe existența unei corespondențe bipartide între elementele unui proiect (activități, evenimente) și elementele unui graf (arce și noduri). Se obține o relație model-obiect, care pune în evidență particularitățile de o mare însemnătate practică, în special, proprietățile de succesiune temporală.
Pentru reprezentarea corectă a proiectului (respectarea interdependențelor, claritatea desenului etc), cât și pentru o standardizare a reprezentării (pentru a putea fi înțeles și de altcineva decât cel care l-a desenat) în desenarea grafului se respectă următoarele reguli:
1. fiecare activitate se reprezintă printr-un arc a cărui orientare indică, pentru activitate, desfășurarea ei în timp;
2. un arc este limitat prin două noduri (reprezentate prin cerculețe) care simbolizează momentele de început și de sfârșit ale executării activității corespunzătoare;
3. lungimea fiecărui arc, în general, nu este proporțională cu lungimea activității;
4. activitățile vor fi reprezentate prin arce de forma:
sau sau sau
sau sau sau
esențială fiind porțiunea orizontală, pe care se vor trece informațiile despre activitate, porțiunile oblice fiind la 45°.
Lungimea și înclinarea arcului au în vedere numai considerente grafice, pentru urmărirea ușoară a întregului graf.
5. deoarece respectarea tuturor regulilor nu se poate face doar cu arce care corespund doar activităților proiectului, vor exista și arce care nu corespund nici unei activități, care vor fi reprezentate punctat și care, pentru unitatea prezentării, vor fi numite activități fictive, ele neconsumând resurse și având durata 0.
6. pentru reprezentarea unor dependențe de tipul "terminare început" în care tAB > 0, vom introduce niște arce reprezentate prin linii duble, care corespund intervalului tAB, având semnificația unor așteptări (în acest interval se "consumă" doar timp, nu și resurse) și care vor fi numite activități de așteptare.
Dacă se presupune că o activitate A este precedentă activității B, în funcție de tipul de interdependență, în graficul rețea arcele corespunzătoare activităților A și B vor avea următoarea reprezentare:
sau (pentru tAB = 0)
7. în graf nu sunt admise circuite (existența unuia ar însemna că orice activitate a acestuia ar fi precedentă ei însuși). Deoarece, pentru un proiect foarte mare graful va avea foarte multe arce, se poate întâmpla să creăm un circuit fără să ne dăm seama. Pentru a evita acest lucru, vom introduce o regulă mai ușor de respectat, care o implică pe cea dinainte:
8. nodurile vor fi numerotate, numerotarea făcându-se în așa fel încât, pentru fiecare activitate, numărul nodului de început să fie mai mic decât numărul nodului de final al activității.
9. graful are un singur nod inițial (semnificând evenimentul "începerea proiectului") și un singur nod final (semnificând evenimentul "sfârșitul proiectului");
10. orice activitate trebuie să aibă cel puțin o activitate precedentă și cel puțin una care îi succede, exceptând bineînțeles activitățile care încep din nodul inițial al proiectului și pe cele care se termină în nodul final al proiectului;
11. deși există activități care se execută în paralel, care pot începe în același moment și se pot termina în același moment, este interzis ca cele două arce corespunzătoare să aibă ambele extremități comune, altfel desenul care rezultă nu mai e graf. În desenul de mai jos se arată care este reprezentarea corectă, F fiind o activitate fictivă:
12. nu trebuie introduse dependențe nereale (neprevăzute în tabelul de condiționări). Astfel, dacă în tabelul de condiționări vom avea situația:
Tabelul 2
Activitate |
Activitate direct precedentă (condiționări) |
A |
- |
B |
- |
C |
A,B |
D |
A |
atunci reprezentarea:
este incorectă, deoarece introduce condiționarea, inexistentă în tabel, a activității D de activitatea B. Reprezentarea corectă este:
13. să se folosească, pe cât posibil, numărul minim de activități fictive, pentru a nu complica excesiv desenul. De exemplu același efect ca în figura 4 putea fi obținut și prin reprezentarea:
dar am fi folosit o activitate fictivă în plus, inutilă.
Dacă două sau mai multe activități au aceeași activitate direct precedentă, de exemplu A precede B și A precede C, reprezentarea în graful-rețea va avea forma din figura 5 (a). Arcele B și C simbolizează două activități care nu pot începe decât după ce s-a terminat activitatea A. Activitățile B și C pot fi executate simultan. De asemenea execuția unei activități poate depinde de terminarea mai multor activități direct precedente, de exemplu A precede C și B precede C ca în figura 5 (b). În această situație, activitatea C nu poate începe, logic, decât după ce s-au terminat activitățile A și B.
Proiectul dat prin tabelul 1, poate fi modelat, în reprezentarea activităților pe arce, prin graful-rețea din figura 6, numerotat secvențial.
Numerotarea nodurilor permite să identificăm fiecare activitate prin perechea de noduri (de început și sfârșit). De exemplu, activitatea D se identifică prin perechea (3,5), activitatea E prin (3,4) etc.
Analiza proiectului
Analiza proiectului constă în determinarea duratei minime a proiectului, determinarea intervalelor de timp în care poate avea loc fiecare din evenimentele reprezentate prin noduri și determinarea intervalelor de timp în care pot fi plasate activitățile, astfel încât să se respecte toate condiționările și să obținem timpul minim de execuție al proiectului.
Este evident că durata minimă de execuție a proiectului este cel mai mic interval de timp în care pot fi efectuate toate succesiunile de activități din proiect. O succesiune de activități corespunde unui drum în graf și deci, durata minimă de execuție a proiectului este cel mai mic minorant al lungimilor tuturor drumurilor din graf. Cum există un număr finit de drumuri, mulțimea lungimilor acestora este finită și cel mai mic minorant al ei este maximul acesteia, adică durata drumului de lungime maximă. Deoarece graful nu are circuite și are un singur punct inițial și unul singur final, este evident că cele mai lungi drumuri vor fi cele dintre nodul inițial și cel final. Avem deci de găsit drumul de lungime maximă dintr-un graf fără circuite, caz în care se poate aplica algoritmul lui Ford simplificat.
Conform acestui algoritm, se calculează pentru fiecare nod al grafului:
A. Termenul cel mai devreme de realizare a evenimentului j. Acest termen reprezintă momentul cel mai devreme posibil de terminare a tuturor activităților care converg în nodul j și este egal cu valoarea maximă a drumurilor dintre evenimentul inițial 1 și evenimentul j, pe care îl vom nota cu = dmax(1,j). Termenul cel mai devreme (numit și termenul minimal) a evenimentului j, conform algoritmului lui Ford în grafuri G = (X,G) fără circuite, se calculează astfel:
=
Vom presupune, fără a restrânge generalitatea, că t1 = 0, pentru evenimentul inițial 1 și, în acest caz, termenul de realizare cel mai devreme al unui eveniment oarecare j va fi dat de formula:
=
Această formulă permite calculul termenelor pentru evenimente, prin parcurgerea grafului-rețea în sens-înainte (parcursul înainte) și durata minimă de execuție a proiectului va fi termenul cel mai devreme de realizare al nodului final al grafului.
Acest termen devine termenul impus de realizare al proiectului și el nu mai poate fi depășit, depășirea lui însemnând doar o proastă organizare a lucrului.
B. Termenul cel mai târziu de realizare a evenimentului i. Acest termen (numit și termen maximal) reprezintă momentul cel mai târziu posibil de începere a activităților care pleacă din nodul i astfel încât toate succesiunile de activități dintre acest nod și nodul final să mai poată fi efectuate până la termenul final de realizare al proiectului și este egal cu diferența între durata minimă de realizare a proiectului și durata drumului de lungime maximă dintre evenimentul i și n. Acest termen se notează cu = dmax(1,n) dmax(i,n).
Pentru calcularea acestor momente trebuie calculate duratele drumurilor de la nodul final spre nodul inițial și apoi scăzute din durata minimă a proiectului, calcul care va fi făcut aplicând, de asemenea, algoritmul lui Ford simplificat.
Conform celor de mai sus, termenul cel mai târziu de realizare a unui eveniment, cu respectarea duratei minime a proiectului (notată T= dmax(1,n) = ), este dată de formula:
=
Intervalul [ ,] se numește intervalul de fluctuație al evenimentului j. Evenimentul j se poate plasa în orice moment al acestui interval de fluctuație, fără a periclita durata totală a întregului proiect. Acest interval îl putem defini ca pe o rezervă de timp R(j) a evenimentului j:
R(j) =
Dacă R(j) = 0 evenimentul j trebuie să aibă loc la termenul fixat = , pentru că orice întârziere va duce la prelungirea duratei întregului proiect.
Exemplu: Vom arăta în continuare modul cum se calculează aceste termene, pentru proiectul dat de tabelul 1. Pentru o bună organizare a datelor vom reprezenta fiecare eveniment al proiectului printr-un cerc divizat în trei părți (vezi figura 7), în care vom trece în partea de sus numărul evenimentului i, în partea inferioară-stânga termenul cel mai devreme de realizare și în partea inferioară-dreapta termenul cel mai târziu de realizare .
În figura 8 a fost desenat graful asociat proiectului.
Primul eveniment se consideră a avea loc la momentul t1 = 0. Calculul termenelor minimale pornește de la primul eveniment, având în vedere că se poate calcula termenul cel mai devreme al unui eveniment numai dacă acesta a fost calculat pentru toate evenimentele precedente:
= 0
= max ( + d 12) = max (0 + 3) = 3
= max ( + d13) = max (0,2) = 2
= max ( + d34) = max (2 + 4) = 6
= max ( + d25, + d35, + d45) = max (3 + 2, 2 + 6, 6 + 0) = 8
= max ( + d46, + d56) = max (6 + 1, 8 + 4) = 12
Calculul termenelor maximale se face considerând durata minimă a proiectului T = 12, începând de la ultimul nod, având în vedere că se poate calcula termenul cel mai târziu al unui eveniment numai dacă acesta a fost calculat pentru toate evenimentele succesoare. Pentru aceasta se ia = 12 și se calculează:
= min ( d56) = min (12 4) = 8
= min ( d46, - d45) = min (12 1, 8 0) = 8
= min ( d35, d34) = min (8 6, 8 4) = 2
= min ( d25) = min (8 2) = 6
= min ( d12, d13) = min (6 3, 2 2) = 0
Următoarea etapă în analiza proiectului constă în aflarea termenelor între care trebuie să se efectueze activitățile, calculându-se în acest sens, pentru fiecare activitate (i,j), momentul minim de începere: (i,j), momentul minim de terminare: (i,j) , momentul maxim de începere: (i,j) și momentul maxim de terminare: (i,j).
1. Momentul (termenul minim) de începere cel mai devreme a activității ( i.j). Deoarece o activitate nu poate începe decât după ce se termină toate cele precedente, momentul minim de începere este evident termenul cel mai devreme de realizare al evenimentului i:
(i,j) =
2. Momentul (termenul minim) de terminare cel mai devreme a activității (i.j) este egal cu suma dintre termenul cel mai devreme de începere și durata activității:
(i,j) = (i,j) + dij
3. Momentul (termenul maxim) de terminare cel mai târziu a activității (i,j) este definit de termenul cel mai târziu de realizare a evenimentului j:
(i,j) =
4. Momentul (termenul maxim) de începere cel mai târziu a activității (i,j) este egal cu diferența dintre termenul cel mai târziu de terminare și durata activității:
(i,j) = (i,j) - dij
Aceste momente spun doar în ce interval poate fi situată o activitate, dar nu spun care este diferența între o plasare posibilă sau alta. În acest scop vom calcula, pentru fiecare activitate (i,j), următoarele repere de timp:
a) Rezerva totală de timp (Rt) a unei activități (i,j), ca fiind diferența dintre termenul cel mai târziu de terminare și termenul cel mai devreme de terminare:
Rt(i,j) = = dij = dij
Rezerva totală de timp a unei activități (i,j) reprezintă timpul maxim cu care se poate amâna sau se poate mări durata activității, fără depășirea termenului final de execuție al proiectului.
b) Rezerva liberă de timp (Rl) a unei activități (i,j):
Rl(i,j) = dij
Diferența între rezerva totală și rezerva liberă:
Rt(i,j) - Rl(i,j) =
pentru o activitate (i,j), este egală cu fluctuația evenimentului final j al activității. De aici rezultă că rezerva liberă a unei activități (i,j) reprezintă intervalul de timp ca parte a rezervei totale de timp, cu care o activitate se poate amâna (sau se poate mări durata activității) fără a perturba termenul cel mai devreme de realizare al termenului final j (adică fără a consuma din rezervele de timp ale activităților care o succed).
c) Rezerva independentă de timp (Rs) a unei activități (i,j):
Ri(i,j) = dij
Rezerva independentă de timp a unei activități (i,j) există dacă 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 independentă de timp arată intervalul în care poate fi plasată o activitate fără a consuma nici din rezervele de timp ale activităților ce o preced, nici din cele ale celor ce o succed.
Diferența între rezerva liberă și rezerva independentă:
Rl(i,j) Ri(i,j) =
este egală cu fluctuația evenimentului i (cu care începe activitatea).
Intervalele de fluctuație pentru evenimente și rezervele libere de timp pentru activități caracterizează elasticitatea unui program de ordonanțare. Cu cât acestea sunt mai mici cu atât programul este mai rigid.
Drumul (drumurile) a cărui lungime este egală cu durata minimă de execuție a proiectului se numește drum critic. Este clar că orice amânare a unei activități a acestuia duce la lungirea duratei de execuție a proiectului, deci nici una din aceste activități nu dispune de rezervă de timp. Activitățile de pe drumul critic și prin extensie, orice activitate care nu dispune de rezervă de timp, se numește activitate critică.
O activitate critică (i,j) este caracterizată prin:
= , = , = dij
De aici rezultă că, pentru o activitate critică, avem:
Rt(i,j) = Rl(i,j) = Ri(i,j) = 0
Termenele calculate pentru evenimente sunt utile în primul rând pentru calculul termenelor pentru activități, dar ele servesc și pentru evaluarea stadiului de realizare al proiectului, verificând dacă termenele de realizare pentru fiecare eveniment se află în intervalul de fluctuație.
Î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
Activități |
Cond. |
Durate |
|
|
|
|
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 CPM (și în general ale analizei drumului critic) evidențiem:
- determinarea cu anticipație a duratei de execuție a proiectelor complexe;
- pe timpul desfășurării proiectului permite un control permanent al execuției acestuia;
- explicitarea legăturilor logice și tehnologice dintre activități;
- evidențierea activităților critice;
- evidențierea activităților necritice, care dispun de rezerve de timp;
- permite efectuarea de actualizări periodice fără a reface graful;
- oferă posibilitatea de a efectua calcule de optimizare a duratei unui proiect, după criteriul costului;
- reprezintă o metodă operativă și rațională care permite programarea în timp a activităților ținând seama de resurse.
Dezavantajele acestei metode sunt în principal:
- greutatea desenării grafului, fiind foarte greu de reprezentat exact toate condiționările din proiect, în condițiile în care acestea sunt foarte complicate iar desenul trebuie să fie destul de simplu și clar încât să fie inteligibil și deci util;
- chiar dacă se respectă toate regulile de construire a grafului, rămân încă destule variante de desenare astfel încât două reprezentări ale aceluiași proiect făcute de doi indivizi pot să nu semene aproape deloc.
- din cele de mai sus se vede că reprezentarea este greoaie chiar dacă toate condiționările ar fi de tipul "terminare început" cu precedență directă, încercarea de a forma graful în condițiile existenței și a celorlalte tipuri de interdependențe ducând foarte repede la un desen extrem de încărcat și greu de folosit.
B. Metoda MPM (Metro Potențial
Method)
Metoda potențialelor sau MPM este un procedeu de analiză a drumului critic care încearcă să depășească neajunsurile metodei CPM, în care, ca și în metoda CPM, se analizează parametrul timp, diferența constând în felul în care se construiește graful rețea:
- fiecărei activități A i se asociază un nod A;
- fiecărui nod i se asociază o valoare dată de durata activității pe care o reprezintă;
- condiționarea (succesiunea) a două activități se reprezintă printr-un arc, orientat de la o activitate la alta;
- fiecărui arc dintre două activități A și B i se asociază un număr reprezentând valoarea tAB.
Reprezentarea activitate nod permite ca între activitățile unui proiect să avem mai multe tipuri de legături de precedență. Cele trei tipuri de precedență se vor reprezenta astfel:
1) Legătura "terminare - început" se reprezintă grafic în fig. 10.
Activitatea B începe după ce s-a terminat activitatea A. Putem considera că arcul (A,B) are el însuși o durată tAB ³ 0, ceea ce înseamnă că activitatea B poate începe după ce s-au scurs tAB unități de timp de la terminarea activității A. În general, nu toate legăturile "terminare - început" au durată, cele mai multe având durata tAB = 0.
2) Legătura "început-început" poate fi utilizată pentru a arăta simultaneitatea executării a două activități prin puncte de început. Aceasta este reprezentată în fig. 11.
Activitatea B poate începe cu cel puțin tAB unități de timp după începerea activității A. Dacă tAB = 0 activitățile pot începe în același timp.
3)
Legătura "terminare terminare" poate fi, de
asemenea, utilizată pentru a indica simultaneitatea executării a două
activități prin punctul de terminare (fig. 12). Această legătură arată că
activitatea A este terminată cu cel puțin tAB unități de timp
înaintea terminării activității B.
Vom numi activitate de bază orice activitate folosită ca bază de referință, față de care este format timpul de așteptare. În figura 11 activitatea de bază este A iar în figura 12 activitatea de bază este B. Durata de așteptare tAB se raportează la activitatea de bază.
Proiectului dat prin tabelul 2 îi corespunde în reprezentarea activitate nod graful-rețea din figura 13.
Tabelul 4
Activități |
Dependențe |
A |
- |
B |
- |
C |
A |
D |
B |
E |
C |
F |
C |
G |
F,D |
H |
E,F |
Graficul rețea în reprezentarea activitate nod nu conține activități fictive, eventual cu excepția unei activități de începere și/sau a unei activități de terminare a proiectului, necesare în cazul în care există mai multe activități care nu sunt condiționate de nici o activitate a proiectului (acestea devenind toate noduri inițiale ale proiectului, deși trebuie să fie un singur nod inițial) sau, analog, în cazul în care sunt mai multe activități care nu au nici o activitate succesoare.
Între un graf rețea în reprezentarea activitate nod și un graf rețea în reprezentarea activitate arc se pot defini următoarele corespondențe (vezi figura 14):
MPM |
|
CPM |
||
tAB = 0 |
Û |
|
||
tAB > 0 |
Û |
|
||
tAB |
Û |
|
||
|
Û |
|
Figura 14
Calculul termenelor și rezervelor
Calcularea termenelor în reprezentarea activitate nod este asemănătoare cu cea din reprezentarea activitate arc. În această reprezentare un nod al grafului se reprezintă printr-un dreptunghi compartimentat în șase părți, care vor fi completate astfel:
- centru sus: numărul sau simbolul activității: i, A,
- centru jos: durata activității: d(i), d(A),
- stânga sus: termenul cel mai devreme al începerii activității: , ,
- dreapta sus: termenul cel mai devreme al terminării activității: , ,
- stânga jos: termenul cel mai târziu al începerii activității: , ,
- dreapta jos: termenul cel mai târziu al terminării activității: , ,
Aceste elemente pot fi urmărite în figura 15.
Ne vom referi în continuare la cazul a două activități A și B, considerând cele trei tipuri de relații între activități. Pentru ușurința calculului vom urmări figurile 16 și 17.
1. Termenul cel mai devreme al începerii activității B, conform figurii 16 va fi dat de formula:
unde activitatea A este precedentă activității B și tAB este o durată de așteptare ³ 0.
2. Termenul cel mai devreme al terminării activității B este egal cu suma dintre termenul cel mai devreme al începerii activității B și durata sa:
= + d(B)
3. Termenul cel mai târziu de terminare a activității A, conform figurii 17 va fi dat de formula:
unde activitatea A este direct precedentă activității B și tAB este o durată de așteptare ³ 0.
4. Termenul cel mai târziu de începere al activității A este egal cu diferența dintre termenul cel mai târziu de terminare al activității A și durata sa:
= d(A)
Pentru fiecare activitate vom defini următoarele rezerve de timp:
a) Rezerva totală de timp (Rt) a unei activități A:
Rt(A) = = d(A)
b) Rezerva liberă de timp (Rl) a unei activități A:
Rl(A) =
unde activitatea A este direct precedentă activității B.
Modul cum se calculează termenele și rezervele de timp pentru activitățile unui proiect prin metoda MPM este pus în evidență de exemplul dat prin tabelul 1 și reprezentat în figura 18.
Din acest graf rețea se formează tabelul 5 cu termenele și rezervele de timp pentru activitățile proiectului:
Tabelul 5
Activități |
Cond. |
Durate |
|
|
|
|
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 |
2. Grafuri ADC integrate și condensate
În practica managementului acțiunilor economice complexe prim metodele ADC, nivelul de detaliere în activități a proiectelor depinde de scopul urmărit (coordonare de ansamblu sau conducere de detaliu), de timpul avut la dispoziție pentru elaborarea grafurilor, de specialiștii disponibili etc.
Dacă graful sumar care se întocmește pentru orientarea generală a echipei de conducere a acțiunii (să‑l numim graf director) este totdeauna necesar, când se face trecerea la conducerea de amănunt, sunt tot atât de necesare grafurilor detaliate.
- graful proiectării;
- graful organizării șantierului;
- unul sau mai multe grafuri pentru lucrări
de drumuri;
- mai multe grafuri pentru lucrări de
rețele (apă, canal abur, electrice etc.);
- mai multe grafuri pentru lucrări de
construcții‑montaj (câte unul pentru fiecare hală sau clădire) etc.
Grafurile pe obiect au individualitatea lor și se tratează ca entități de programare distincte; în același timp însă, trebuie gândită coordonarea lor în cadrul acțiunii complexe din care fac parte. În acest scop, după întocmirea separată a grafurilor pe obiect apare necesitatea asamblării lor într‑un tot, care constituie graful integrat.
În continuare vom arăta cum se obține graful integrat al mai multor grafuri pe obiect.
Fie P1, P2,...,Pn mai multe grafuri ADC pe obiect și presupunem că între activitățile diferitelor grafe există condiționări logice și tehnologice. Presupunem de asemenea că fiecare din grafuri are o numărătoare proprie a evenimentelor, cunoscută.
Pasul 1. se desenează cele n grafuri alăturat;
Pasul 2. se reprezintă prin activități fictive (în reprezentarea activitate-arc) sau săgeți (în reprezentarea activitate-nod) toate condiționările logice și tehnologice existente între activități din proiecte diferite;
Pasul 3. se introduce un nod suplimentar fictiv I (activitate fictivă) care va fi legat la toate nodurile (activitățile) inițiale ale grafurilor P1, P2, ..., Pn prin activități fictive (săgeți), acesta fiind nodul (activitatea) inițial al grafului integrat;
Pasul 4. se introduce un alt nod suplimentar fictiv F (activitate fictivă), de care se vor lega toate nodurile (activitățile) finale ale grafelor specificate, prin activități fictive (săgeți), acesta fiind nodul (activitatea) final al grafului integrat.
Pasul 5. se găsește drumul critic în graful integrat și se recalculează termenele activităților întregului graf.
De exemplu,
dacă grafurilele din figurile 13 și 18 ar fi grafurile obiect ale unui proiect
complex, atunci integrarea acestora ar avea reprezentarea din figura de mai
jos:
Am
reprezentat cu linii groase drumurile critice din cele două grafuri și cu linii
dublate condiționările dintre activități din grafuri diferite.
Dacă la nivelul conducerii operative interesează construirea și urmărirea grafurilor pe obiecte, deci determinarea drumului critic pentru fiecare graf în parte, la nivelul coordonării întregii acțiuni va fi necesară cunoașterea drumului critic pentru graful integrat. Acesta, de regulă, diferă de fiecare din drumurile critice ale grafelor componente și de aceea trebuie calculat separat.
Graful
integrat trebuie să respecte toate condițiile de construcție enumerate (de
exemplu, prin legăturile integrate să nu apară circuite).
În foarte
multe cazuri din practică, numărul activităților care rezultă prin integrarea
mai multor grafuri pe obiect este considerabil, putând ajunge la zeci de mii,
ceea ce depășește de multe ori posibilitatea de a le calcula și urmări, chiar
cu ajutorul calculatoarelor puternice.
Cu atât mai
puțin ar fi posibilă cuprinderea sintetică a unui asemenea graf la nivelul
conducerii întregii acțiuni.
Pentru
aceste motive a fost necesară găsirea unui mijloc de a reduce graful integrat,
păstrându‑i în același timp principalele caracteristici. Această operație
poartă numele de condensare iar
rezultatul aplicării acesteia asupra unui graf se numește graf condensat. Condensarea se face după următoarele reguli:
a) graful condensat va conține în mod
obligatoriu nodurile de început și de sfârșit ale grafului și ale fiecăruia din
grafurile pe obiect componente;
b) el va cuprinde de asemenea toate
activitățile și nodurile de pe drumul critic al grafului integrat;
c) în graful condensat se vor reprezenta
toate activitățile considerate deosebit de importante și care trebuie
explicitate;
d) din restul activităților nu se reprezintă
decât activități sau grupe de activități strict necesare pentru a nu lăsa
activități sau noduri "în aer", adică nelegate de alte activități
precedente sau succesoare.
În cazul grafurilor mari și
foarte mari, condensarea poate face ca numărul activităților păstrate să
reprezinte 10‑20% din totalul celor din graful integrat, ceea ce
reprezintă, evident, o simplificare considerabilă.
Legătura
dintre diferitele grafuri care alcătuiesc graful integrat se poate evidenția cu
ajutorul așa-numitelor noduri de
conexiune. Acestea au, în primul rând, rolul de a permite desenarea
grafurilor cu foarte multe activități, care nu încap pe a singură foaie de
hârtie, prin împărțirea unui astfel de graf în mai multe componente, ce se
reprezintă pe câte o foaie, legătura dintre ele făcându-se prin nodurile de
conexiune. Un exemplu este dat în desenul de mai jos, în care nodurile de conexiune
au fost desenate prin puncte negre
Fiecare
graf se poate calcula independent, ținând seama, atât la calculul termenelor
minime cât și la cel al termenelor maxime, de influența termenelor din celălalt
graf, cu ajutorul arcelor care intră în nodurile de conexiune.
În practica
realizării acțiunilor complexe, sunt numeroase cazurile când estimările
inițiale de durată ale activităților nu pot fi respectate. Apare astfel
necesitatea ca, periodic, să se examineze modul cum se realizează termenele
calculate, în scopul punerii în evidență a eventualelor întârzieri și a luării
măsurilor de recuperare a acestora.
Această
activitate poartă numele de actualizare a grafurilor iar noul graf se numește graf actualizat.
- 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.
Estimarea
duratelor acțiunilor complexe (problema ADC/TIMP) prin metodele expuse mai
înainte, deși reprezintă o problemă deosebit de importantă din punct de vedere
economic, nu este nici pe departe singurul aspect care poate fi urmărit cu
ajutorul acestor metode.
O altă problemă în care pot fi utilizate instrumentele ADC sunt cele de analiză a costului execuției acțiunilor complexe, în funcție de durata de execuție a acesteia.
Este
evident că, în funcție de pregătirea celor care efectuează lucrarea, de
tehnologia folosită, de oportunitățile momentului etc, durata de execuție a
unei acțiuni complexe poate varia, existând totuși o durată minimă posibilă Tmin
și una maximă Tmax acceptabilă.
Evident,
durata lucrării are numeroase implicații asupra costului, drept pentru care
prezintă un deosebit interes determinarea acelei durate de execuție,
intermediare lui Tmin și Tmax, căreia îi corespunde
costul minim. În cele ce urmează vom prezenta succint această problemă.
Vom
considera că o activitate oarecare A, din cadrul unei acțiuni complexe, se
poate efectua cu o durată dA care, din punct de vedere tehnologic,
se situează între o limită inferioară dmin și una superioară dmax
(dmin £ dA £ dmax).
De
asemenea, este evident că mărimea costului activității (cA) depinde
de durata de execuție a acesteia: cA = f(dA). Vom numi durată normală de execuție a
activității durata care corespunde costului minim de execuție. O durată de
execuție mai mare decât durata normală este dezavantajoasă atât din punct de
vedere al timpului cât și al costului, astfel încât durata normală va fi și
durata maximă acceptabilă de execuție dmax. O durată mai scurtă de
execuție va costa mai mult din cauza eforturilor de urgentare (efectuarea de
ore suplimentare care sunt plătite mai scump, aplicarea unor tehnologii mai
costisitoare, folosirea unor substanțe mai scumpe etc), dar activitatea se va
termina mai repede, cu beneficiile corespunzătoare. Dependența funcțională
între cA și dA poate fi foarte complexă (pătratică,
neliniară, concavă sau chiar discretă), însă ea poate fi aproximată cu o
funcție liniară. S-a observat de asemenea că, în general, costul este
descrescător în funcție de durată pe intervalul (dmin, dmax).
Ținând cont de toate acestea, rezultă că graficul lui cA = f(dA) este o dreaptă, ca în
figura de mai jos:
Din ipoteza liniarității costului rezultă că, costul urgentării cu o zi
al proiectului este același, indiferent de a câta zi este vorba; acest cost
este costul unitar al urgentării. El se calculează cu formula evidentă: cu
= și cu ajutorul lui se
poate calcula foarte ușor costul oricărei durate intermediare lui dmin
și dmax, cu una din formulele:
c(dA)
= cmin + cuŚ (dA dmin) sau c(dA) = cmax cuŚ (dmax dA)
În general, costul total al unei acțiuni complexe are o structură identică cu acela al unei investiții, fiind format din:
- costuri directe (CD) ‑
legate nemijlocit de realizarea activităților (costul resurselor, manoperei
etc.);
- costuri indirecte (CI) -
cheltuieli generale, salariile personalului tehnic‑administrativ, alte
cheltuieli de regie;
- costul imobilizării fondurilor CIF
‑ pe perioada când investiția nu intră în funcțiune.
Dintre aceste costuri, costurile directe se calculează pentru fiecare activitate în parte, depind de durata de execuție a fiecărei activități și vor face obiectul analizei cost-durată, iar ultimele două reprezintă cheltuieli globale ale proiectului și depind doar de durata totală a proiectului.
Toate aceste costuri sunt evident, funcție de durata de execuție a investiției. În figura de mai jos se reprezintă forma generală a graficului funcțiilor CD, CI, CIF, în care t reprezintă durata totală a investiției.
Curba CT reprezintă graficul funcției sumă a celor trei funcții luate în considerare iar pe grafic se poate citi timpul optim de execuție al proiectului (topt) corespunzător costului total minim (min CT).
În practică, CI și CIF se calculează la nivel contabil și nu pun probleme deosebite de calcul, iar CD se găsește în urma unei analize cost-durată. CD(t) reprezintă costul direct minim cu care se poate obține o durată t Î [tmin, tmax] de execuție a întregului proiect. Aflarea funcției CD(t) presupune aflarea valorilor costului direct pentru orice durată de efectuare a proiectului, ceea ce în cazul discret presupune un volum de calcule imens iar în cazul continuu este imposibil. De aceea se calculează de fapt doar un număr suficient de valori, celelalte obținându-se prin interpolarea acestora. Cum se vede din desen, graficul lui CT are forma aproximativă a unei parabole, deci numărul minim de valori pentru găsirea acesteia este 3, din care două sunt calculate pentru tmin și tmax, acestea fiind cele mai importante.
În cele ce urmează vom prezenta un algoritm pentru determinarea aproximativă a lui topt folosind 3 puncte ca suport al interpolării.
Se construiește graful asociat proiectului conform condiționărilor dintre activități.
Etapa 2
Se găsește durata minimă de execuție și drumul critic pentru cazul în care toate activitățile ar fi efectuate la durata lor maximă (normală). Acesta este durata maximă acceptabilă de execuție a proiectului (tmax)și îi corespunde costul direct minim (CD(tmax) = CDmin) de execuție a proiectului, care se calculează adunând costurile minime ale tuturor activităților.
Se găsește durata minimă de execuție și drumul critic pentru cazul în care toate activitățile ar fi efectuate la durata lor minimă. Aceasta este durata minimă posibilă de realizare a proiectului (tmin). Totuși, costul aferent acestei durate nu este suma costurilor maxime ale activităților, deoarece este evident că nu are sens să fie urgentate la maxim activitățile necritice (cele care dispun de rezervă de timp), aceasta neaducâd decât o scumpire inutilă a proiectului.
Se relaxează activitățile necritice, în limita rezervei disponibile de timp a fiecăreia, alegându-se acea variantă de relaxare care duce la cea mai mare scădere a costului total, apoi se calculează costul proiectului pentru această variantă. Acesta este CD(tmin) = CDmax.
Î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)).
Etapa 5
Se
găsește ecuația parabolei care trece prin cele trei puncte, se adună expresiile
funcțiilor corespunzătoare celor trei tipuri de costuri obținându-se funcția
costului total și se găsește cu ajutorul derivatei întâi valoarea topt
în care se obține minimul acesteia.
Etapa 6
Se
găsește, ca la etapa 4, costul direct minim cu care se poate executa proiectul
în timpul topt care se adună la valorile celorlalte două costuri în
topt și rezultă CTmin.
Un instrument de mare utilitate în analiza drumului critic îl constituie graficul calendaristic tip Gantt, apărut la începutul secolului. Graficul (diagramă) Gantt exprimă la scara timpului, prin linii orizontale, durata activităților, și prin linii întrerupte (de exemplu) rezervele de timp. Graficul Gantt presupune divizarea acțiunii complexe pe care o reprezintă proiectul, în părți componente (activități) și eșalonarea acestora în timp, ținând seama de succesiunea tehnologică, termene impuse, resurse etc.
Dacă este întocmit în urma unei analize temeinice, graficul Gantt oferă informații bogate și extrem de sugestiv prezentate, privind desfășurarea lucrărilor, precum și o serie de informații derivate, privind eșalonarea resurselor (forță de muncă, materii prime, materiale, fonduri bănești). Aceste avantaje scad dacă, datorită fie amplorii acțiunii considerate, fie nivelului de detaliere dorit, numărul activităților ce compun graficul Gantt crește mult, ajungând la câteva sute sau mii.
Graficul Gantt exprimă la scara timpului un program de ordonanțare. Astfel, avem graficul Gantt la termenele cele mai devreme sau graficul Gantt la termenele cele mai târzii.
Pentru trasarea graficului Gantt se procedează astfel:
Pasul 1. Se ordonează activitățile proiectului crescător conform unui program de ordonanțare.
Pasul 2. Se reprezintă activitățile prin bare orizontale de lungimi egale cu duratele activităților (axa orizontală fiind axa timpului), fiecare bară începând de la momentul de începere al activității corespunzătoare;
Pasul 3. Se marchează fiecare activitate prin simbolul asociat sau prin numerele de ordine ale evenimentelor de la extremități deasupra barei corespunzătoare.
Pasul 4. Rezerva totală de timp se figurează cu linie întreruptă, adiacent cu durata activității, după sau înainte (după tipul programului).
Pasul 5. Pe fiecare linie orizontală se obișnuiește să se figureze o singură activitate, iar aceasta să fie imprimată de sus în jos și de la stânga la dreapta.
Pentru proiectul dat prin tabelul 1 și calculat prin grafurile din fig. 9 sau fig. 18 se desenează graficul Gantt din fig. 19, corespunzător programului de ordonanțare minorant (activitățile încep la termenele cele mai devreme) și din fig. 20, corespunzător programului de ordonanțare majorant (activitățile încep la termenele cele mai târzii).
Dacă din punct
de vedere al condiționărilor de tip precedență (temporale) existența
activităților paralele este corectă din punct de vedere logic, putând exista
oricâte activități care se desfășoară în același timp, dacă nu se
intercondiționează între ele, neexistând nici o diferență între zilele
proiectului, din punct de vedere practic, este clar că o zi în care se
desfășoară în același timp 10 activități este mult mai intensă din punct de
vedere al organizării și aprovizionării cu resurse decât o zi în care se
desfășoară o singură activitate. Deci, dacă se ține cont doar de condiționările
temporale pot apărea dezechilibre foarte mari în desfășurarea proiectului
și/sau pot apărea zile în care necesarul de resurse ar fi mai mare decât
disponibilul acestora.
Din cele spuse
mai sus, se desprinde faptul că există cel puțin două probleme importante
legate de resursele unui proiect:
-
problema alocării resurselor, în care se încearcă programarea
activităților în așa fel încât în nici o zi să nu se depășească disponibilul
din nici o resursă;
-
problema nivelării resurselor, în care se încearcă programarea
activităților în așa fel încât în toate zilele să se folosească cam aceiași
cantitate de resurse (sau, altfel spus, suma variațiilor de la o zi la alta să
fie minimă).
Trebuie făcută
și observația că analiza în cele două probleme de mai sus se face în general
pentru resurse refolosibile, care nu se consumă în timp, adică cele care, după
terminarea activității la care au fost alocate, se pot folosi la altă
activitate. Resursele de acest tip sunt în principal forța de muncă și mașinile
și utilajele.
Pentru
expunerea celor două probleme este necesară și introducerea noțiunilor de
intensitate a unei resurse și de profil a unei resurse.
1.
Intensitatea unei
resurse este cantitatea necesară sau disponibilă din acea resursa, la un
moment dat;
2.
Profilul unei resurse este diagrama în care se figurează
variația intensității unei resurse în timp.
A. Problema alocării resurselor
Soluția acestei probleme se poate obține, în cazurile foarte simple (puține activități și puține resurse), prin glisarea activităților în limitele termenelor lor maxime de începere și de terminare, aceasta făcându-se cel mai ușor pe baza graficului Gantt.
Dar, în practică, problemele au de cele mai multe ori sute sau chiar mii de activități și este necesară luarea în considerare a zeci de resurse importante, ceea ce face imposibilă rezolvarea problemei prin mijloace empirice, de tipul încercărilor de a glisa activitățile "după ochi" și obligă la căutarea unor metode riguroase, programabile pe calculator.
Formularea riguros‑matematică a problemei alocării resurselor conduce la modele de dimensiuni și complexități foarte mari, imposibil de rezolvat chiar cu calculatoarele cele mai puternice.
Din aceste motive se utilizează procedee heuristice, care, fără a da întotdeauna soluția optimă, oferă soluții cel puțin satisfăcătoare.
În cele ce urmează vom examina unele aspecte ale folosirii procedeelor heuristice de rezolvare a problemelor de alocare a resurselor.
Mersul operațiilor este, în general următorul*:
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 (lungirea) duratelor după nevoie, prin alocare suplimentară, sau retragere de resurse, precum și posibilitatea de a întrerupe anumite activități.
B.
Problema nivelării resurselor
După cum am
arătat, această problemă constă în planificarea activităților cu limitarea
termenului final de execuție a acțiunii complexe, astfel încât profilul
necesarului resurselor să fie cât mai uniform.
Există mai
multe moduri de a exprima obiectivul uniformizării profilului necesarului,
putându‑se urmări:
- minimizarea sumei variațiilor absolute
ale profilului;
- minimizarea sumei creșterilor;
- minimizarea deviațiilor absolute de la
medie;
- minimizarea valorii maxime;
- minimizarea variației maxime;
- minimizarea sumei pătratelor diferențelor
între profilul necesarului și un profil ideal (de obicei o linie paralelă cu
axa timpului) etc.
Utilizând criteriul
minimizării sumei pătratelor diferențelor, Burgens și Killebrew au elaborat un
algoritm de nivelare pentru o singură resursă, ale cărui operații sunt
următoarele:
a) Se întocmește graficul‑rețea și se
calculează drumul critic;
b) Se programează activitățile la termenul
minim de începere, se întocmește profilul necesarului și se calculează suma
pătratelor diferențelor (pe fiecare unitate de timp) între profilul necesarului
și profilul disponibilului;
c) Începând de la sfârșitul graficului‑rețea
se ia prima activitate care dispune de rezervă și se găsește poziția cea mai
avantajoasă posibilă a ei, din punct de vedere al criteriului enunțat; când
sunt mai multe poziții egal avantajoase se alege cea mai din dreapta;
d) Se trece la următoarea activitate, spre
început, care dispune de rezervă și se procedează la fel și tot așa, pentru
toate activitățile;
e) Se calculează valoarea criteriului
corespunzător noii planificări obținute, apoi se aplică din nou algoritmul de
la pasul c, până nu mai sunt posibile îmbunătățiri.
În cazul
problemelor de nivelare după mai multe resurse este posibilă adaptarea
algoritmului Burgess‑Killebraw după cum urmează:
- se ierarhizează importanța relativă a
resurselor stabilindu‑se niște coeficienți de pondere;
- se începe aplicarea algoritmului,
urmărindu‑se simultan pentru toate rezervele efectul deplasării unei
activități în limita intervalului ei aferent; se pot ivi următoarele cazuri:
1. deplasarea unei activități îmbunătățește
valoarea criteriului pentru toate resursele considerate; în acest caz nu se
face nici un calcul, deplasarea efectuându-se cât mai avantajos;
2. deplasarea unei activități îmbunătățește
valoarea criteriului pentru o parte din resurse și o înrăutățește pentru altele
din ele; în acest caz se urmărește acea poziție a activităților care face ca
suma sumei pătratelor diferențelor pentru fiecare resursă, ponderată cu
coeficienții de pondere stabiliți, să fie minimă.
7. Metoda PERT
Metodele CPM și MPM analizate anterior furnizează, așa cum s-a văzut, informații care sunt utile în procesul de conducere, însă ele nu țin seama de posibilele variații ale duratelor de execuție ale activităților.
Metoda PERT încearcă să corecteze acest lucru. În acest scop metoda permite calcularea timpului mediu de terminare a unui proiect, identificarea activităților critice, precum și estimarea probabilităților de realizare a termenelor planificate. Pentru că în practică, în foarte multe programe din domeniul cercetării și dezvoltării, duratele activităților sunt insuficient cunoscute sau chiar incerte prin considerarea conceptelor statistice, duratele activităților sunt considerate variabile aleatoare caracterizate prin media și dispersia lor.
Metoda PERT pornește de la următoarele considerente:
a) Pentru fiecare activitate (i,j) se estimează trei durate:
- durata optimistă (aij), care este considerată durata minimă de execuție pentru activitate, în condiții generale normale de execuție;
- durata cea mai probabilă (mij) ca fiind estimația cu cea mai mare șansă de realizare în condiții normale;
- durata pesimistă (bij) ca fiind durata maximă de realizare a activității, atunci când există împrejurările cele mai defavorabile de execuție.
Un graf rețea înzestrat cu cele trei tipuri de durate pentru activitățile sale este numit rețea PERT.
b) Durata fiecărei activități a proiectului are o distribuție b. Se propune distribuția beta pentru că aceasta satisface condiții care au un suport practic:
- intersectează axa abciselor în două puncte aij și bij, care corespund duratei minime și duratei maxime;
- este unimodală, adică are o singură valoare maximă, care corespunde duratei cele mai probabile mij.
- valoarea bij aij este intervalul de variație a distribuției și poate indica gradul de împrăștiere a duratelor posibile.
c) Durata medie de execuție () a unei activități (i,j) este dată de formula:
=
d) Dispersia duratei de execuție () a activității (i,j) se calculează cu formula:
=
Dispersia este o măsură a gradului de nesiguranță în estimarea duratei activității (i,j); o valoare mare a dispersiei înseamnă o mare nesiguranță în privința duratei sale de execuție.
e) Durata totală a proiectului este o variabilă aleatoare cu distribuție normală având media și dispersia:
unde Dcrit reprezintă mulțimea tuturor arcelor grafului care sunt pe drumul critic.
f) Probabilitatea de realizare a duratei planificate Tplan a unui proiect se determină calculând, mai întâi, factorul de probabilitate z, după relația:
z =
și apoi se deduce din tabelul valorilor funcției Laplace probabilitatea p(£ Tplan).
g) Graful trebuie să conțină un număr suficient de mare de activități pentru a se întruni toate condițiile aplicării teoremei limită centrală iar duratele activităților să fie variabile aleatoare independente. Se recomandă, de asemenea, să nu existe mai multe drumuri critice.
Metoda PERT se utilizează, în general, pentru descrierea unui proiect atât pe rețele CPM cât și MPM.
Algoritmul pentru calcularea unui program PERT este următorul:
Pasul 1. Se calculează durata medie a fiecărei activități din rețeaua PERT, utilizând relațiile de la punctul c);
Pasul 2. Se calculează termenele activităților rețelei PERT, considerând duratele activităților deterministe și egale cu mediile lor, utilizând una din metodele CPM sau MPM;
Pasul 3. Se calculează dispersia duratei fiecărei activități cu formula de la punctul d);
Pasul 4. Se calculează durata totală de execuție a întregului proiect () și dispersia () cu formulele de la punctul e);
Pasul 5. Se determină probabilitatea de realizare a duratei planificate a proiectului după relația de la punctul f) folosind tabelul funcției Laplace;
Pasul 6. Se face analiza proiectului, conform probabilităților de realizare a duratei a proiectului:
- dacă p(£ Tplan) este mai mică decât 0,25 există un mare risc ca proiectul să nu se realizeze la termenul planificat și este necesară revizuirea duratelor de execuție ale activităților în sensul urgentării acestora;
- dacă p(£ Tplan) ³ 0,5 programarea este justă;
- dacă p(£ Tplan) este mai mare decât 0,6, programarea utilizează excesiv de multe 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:
zij =
și tabelul valorilor funcției lui Laplace.
- dacă pij(tî £ Tij) < 0,6 atunci trebuie luate măsuri de urgentare a executării activității (i,j) în vederea realizării ei în termenul planificat;
- dacă pij(tî £ Tij) ³ 0,6 activitatea (i,j) se execută în termenul planificat.
Exemplu: Fie G un graf rețea definit de elementele din tabelul 8.7 în care, pentru fiecare activitate, sunt definite trei estimări ale duratei (în săptămâni) corespunzătoare duratelor aij, mij, bij. Se rezolvă rețeaua PERT știind că Tplanificat = 24 săptămâni:
tabelul 8.7
Activități |
Condiționări |
Durate |
Durata
medie |
|
|
s |
||
|
|
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 |
M |
E |
4 |
6 |
11 |
6,50 |
8 |
17,83 |
|
N |
M |
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
= 1,00 + 0,11 + 0,25 + 0,25 + 0,44 = 2,05
Z = = 0,70
Din tabelul cu valorile funcției Laplace găsim, corespunzător valorii 0,70, probabilitatea 0,758. Avem, astfel, o situație în care se face risipă de resurse, deci este necesar să se redefinească duratele în vederea obținerii unei planificări juste.
* Î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).