Chapter 10: Projekt Planlægning: PERT/CPM -> Planlægning og koordinering af aktiviteter, der tilsammen definerer et helt projekt, så projektet færdiggøres indenfor en planlagt tidsramme. Aktiviteterne er typisk linket tidsmæssigt. En given aktivitet kan ikke påbegyndes, før et antal andre aktiviteter er afsluttet. Idet det forudsættes, +> +> varigheden af hver aktivitet kan bestemmes og mængden af aktiviteter, der skal være afsluttet, før en given aktivitet kan påbegyndes, kan identificeres består problemet nu i at bestemme, hvilke aktiviteter, som ikke kan forsinkes, uden at dette indebærer en forsinkelse af hele projektet. Dette problem løses med udgangspunkt i et netværk, der afspejler de tidsmæssige links mellem projektets aktiviteter.
Eksempel: Umidelbar Aktivitet Beskrivelse Forgænger Varighed A forbered tegninger - 5 B identificer potentielle kunder - 6 C forbered prospekt A 4 D vælg entrepenør A 3 E forbered byggetilladelser A 1 F godkendelse af byggetilladelser E 4 G udførelse af byggeri D, F 14 H salg af byggeri B, C 12 I indflytning G, H 2 Her angiver umiddelbar forgænger for en given aktivitet de aktiviteter, der må være afsluttet umiddelbart inden påbegyndelse af aktiviteten selv. Bemærk: G har D og F som umiddelbare forgængere. D har selv A som umiddelbar forgænger. F har E som umiddelbar forgænger, og E har A som umiddelbar forgænger. Det betyder, at også A og E må være afsluttet før igangsættelse af G. Men hverken A eller E er umiddelbar forgænger for G, for A må følges af D og E af F, før G kan sættes i gang. Det er herefter muligt at konstruere følgende netværk, der afspejler den angivne tidsfølge mellem aktiviteter; noder i netværket svarer her til aktiviteter.
E ÊÊ F 1 4 A Ê D ÊÊÊÊÊ G 5 3 14 start C ÊÊ H ÊÊ I ÊÊ slut 4 12 2 B... 6 Den aktivitet, der svarer til en bestemt node, er angivet i cellens første søjleindgang i første række, og dens varighed i første søjleindgang i anden række. Vi vil nu undersøge, hvor hurtigt projektet kan afsluttes. Samtidig identificeres de aktiviteter, der ligger på den såkaldte kritiske vej. Det første sker ved et forward pass i netværket, d.v.s. en bevægelse fra start til slut node, og det andet ved et backward pass, d.v.s. en bevægelse fra slut til start node. Forward pass definerer for hver aktivitet /+<63/=> =>+<> (ES) og /+<63/=> 0 383=2 (EF). Lad t betegne varigheden af en given aktivitet. Da gælder pr. definition: () é (6 W En aktivitet kan ikke påbegyndes, før enhver af dens umiddelbare forgængere er afsluttet. Det betyder
(6IRUHQDNWLYLWHWHUVHQHVWH()EODQGWDOOHGHQV XPLGGHOEDUHIRUJ QJHUH ES for en aktivitet markeres i celle (1, 2) og EF i celle (1,3): E 5 6 ÊÊ F 6 10 1 4 A 0 5 Ê D 5 8 ÊÊÊÊÊ G 10 24 5 3 14 start 0 0 C 5 9 ÊÊ H 9 21 ÊÊ I 24 26 ÊÊ slut 26 26 4 12 2 B 0 6... 6 Forward pass indikerer, at projektet tidligst kan afsluttes efter 26 tidsperioder.
Hvornår skal en aktivitet senest være afsluttet, hvis projektet ikke skal forsinkes? Dette spørgsmål besvares ved et backward pass i netværket. Vi må her starte i slutnoden, fordi vi ved, at den skal være realiseret senest tidspunkt 26, hvis ikke projektet skal forsinkes! Bacward pass definerer for hver aktivitet ODWHVWILQLVK (LF) og ODWHVWVWDUW (LS). Lad t betegne varigheden af en given aktivitet. Da gælder pr. definition: /6 é /) W En aktivitet skal senest være afsluttet på det seneste start tidspunkt for enhver af dens umiddelbare efterfølgere. Det betyder /)IRUHQDNWLYLWHWHUWLGOLJVWH/6EODQGWDOOHGHQV XPLGGHOEDUHHIWHUI OJHUH LF for en aktivitet markeres i celle (2, 3) og LS i celle (2,2): E 5 6 ÊÊ F 6 10 1 5 6 4 6 10 A 0 5 Ê D 5 8 ÊÊÊÊÊ G 10 24 5 0 5 3 7 10 14 10 24 start 0 0 C 5 9 ÊÊ H 9 21 ÊÊ I 24 26 ÊÊ slut 26 2 0 0 4 8 12 12 12 24 2 24 26 26 2 B 0 6... 6 6 12
Det er efter afslutningen af backward pass for enhver aktivitet muligt at bestemme dens såkaldte slack: slack é /6 (6 é /) () Betragt f.eks. aktivitet H. Her PW é 12, (6 é 9, /) é 24 og () é 21; slack for denne aktivitet er derfor 3. Det forhold, at H kan startes tidspunkt 9, har en varighed på 12, og senest skal være afsluttet tidspunkt 24, betyder, at H kan forsinkes 3 tidsenheder, uden at dette indebærer en forsinkelse af det totale projekts varighed på 26 tidsenheder; H er derfor ikke en kritisk aktivitet. Betragt herefter f.eks. aktivitet aktivitet F. Her PW é 6, (6 é 6, /) é 10 og () é 10; slack for denne aktivitet er derfor 0. Det forhold, at F tidligst kan startes tidspunkt 6, har en varighed på 4, og senest skal være afsluttet tidspunkt 10, betyder, at F ikke kan forsinkes, uden at dette indebærer en forsinkelse af det totale projekts varighed på 26 tidsenheder; F er derfor en kritisk aktivitet.
Beregning af slacks: Akt. (6 /6 () /) slack critical path A 0 0 5 5 0 yes B 0 6 6 12 6 C 5 8 9 12 3 D 5 7 8 10 2 E 5 5 6 6 0 yes F 6 6 10 10 0 yes G 10 10 24 24 0 yes H 9 12 21 24 3 I 24 24 26 26 0 yes Den kritiske vej består således af sekvensen start A E F G I slut Hvis en varigheden af en aktivitet på den kritiske vej forlænges, vil projektets varighed forlænges.
Sammenfatning: 1) Forbered liste over projektaktiviteter. 2) Identificer for hver aktivitet dens umiddelbare forgænger(e). 3) Beregn varighed af hver aktivitet. 4) Konstruer netværk, der afspejler tidsafhængighed mellem aktiviteter; noder svarer her til aktiviteter. 5) Beregn for hver aktivitet IW og IJ ved et forward pass i netværket. 6) Beregn for hver aktivitet PW og PJ ved et backward pass i netværket. 7) Beregn for hver aktivitet dens slack. 8) Identificer aktiviteter med 0-slack; disse betegnes kritiske aktiviteter og definerer sammen den kritiske vej.
Indarbejdelse af usikkerhed i CPM/PERT: Det blev i eksemplet ovenfor forudsat, at varighed for hver aktivitet kendtes med sikkerhed. Den antagelse er selvsagt problematisk. Vi vil derfor introducere usikkerhed i modellen. Det kan ske ved for hver aktivitet at antage, at dens varighed følger en bestemt sandsynlighedsfordeling. Ofte antages varigheder at følge en "-fordeling. "-fordelingen er skæv og tillader specielt, at at at sandsynligheden for varigheder kortere end et lower bound + eller længere end et upper bound, er 0, sandsynligheden for varigheder længere end det mest sandsynlige er større end sandsynligheder for varigheder kortere end det mest sandsynlige (fordi fordelingen er skæv), og forventet varighed samt spredningsmål for varighed kan estimeres på grundlag af følgende 3 parametre: 9:>373=>3=5 >3. é + 7/=> =+8.=C8631 @+<312/. é 7 :/==373=>3=5 >3. é, + angiver kortest mulig tid for en aktivitet, hvis alt forløber mest hensigtsmæssigt (lower bound for varighed). 7 angiver den mest sandsynlige varighed for en aktivitet under forventede betingelser., angiver varighed for en aktivitet under de værst tænkelige forhold (upper bound for varighed).
Akt. + 7, umiddelbar forgænger A 4.0 5.0 12.0 - B 1.0 1.5 5.0 - C 2.0 3.0 4.0 A D 3.0 4.0 11.0 A E 2.0 3.0 4.0 A F 1.5 2.0 2.5 C G 1.5 3.0 4.5 D H 2.5 3.5 7.5 B, E I 1.5 2.0 2.5 H J 1.0 2.0. 3.0 F, G, I Forventet varighed af en aktivitet: >é + %7, ' Varians for varighed af en aktivitet: 5 # ž, + # ' ¹
Vi konstruerer nu netværket, idet forventet varighed for hver aktivitet angives i celle (2, 1) i hver node: C 6 9 ÊÊ F 9 11 3 10 13 2 13 15 A 0 6 Ê D 6 11 ÊÊ G 11 14 ÊÊ J 15 17 ÊÊ slut 17 17 6 0 6 5 7 12 3 12 15 2 17 17 0 17 17 start 0 0 E 6 9 ÊÊ H 9 13 ÊÊ I 13 15 0 0 3 6 9 4 9 13 2 13 15 B 0 2... 2 7 9 Beregning af slacks: Akt. (6 /6 () /) slack critical path A 0 0 6 6 0 yes B 0 7 2 9 7 C 6 10 9 13 4 D 6 7 11 12 1 E 6 6 9 9 0 yes F 9 13 11 15 4 G 11 12 14 15 1 H 9 9 13 13 0 yes I 13 13 15 15 0 yes J 15 15 17 17 0 yes
Den kritiske vej består således af sekvensen start A E H I J slut med en forventet varighed 6 3 4 2 2 é 17 Antag nu at varigheder er uafhængigt fordelt. Så er varians på varighed af projektet approximeret ved summen af varianserne på varighed af aktiviteter på den kritiske vej # é 1.78 0.11 0.69 0.03 0.11 é 2.72 5 projekt og standardafvigelsen følgelig 5 projekt é 2.72 é 1.65 Under visse antagelser kan projektets varighed nu approximeres med en normalfordeling med forventningsværdi 17 og standardafvigelse 1.65. Det betyder, at vi kan beregne sandsynligheden for, at projektets varighed er kortere end et bestemt antal dage, f.eks. 21. Eller sandsynligheden for, at varigheden vil overstige en kritisk værdi, f.eks. 30 dage.
Indarbejdelse af trade-off mellem varighed og omkostninger i CPM/PERT. Det er i mange applikationer muligt at påvirke varigheden af en aktivitet. Varigheden kan forkortes ved at tilføre aktiviteten flere ressourcer og forlænges ved at fratage den ressourcer; tilførsel af ressourcer betegnes -<+=2381. Tilførsel af ressourcer er forbundet med omkostninger. Hvis varigheden af et projekt forkortes ved at tilføre en eller flere aktiviteter flere ressourcer, bliver projektet derfor dyrere. Vi vil i det følgende formalisere det heraf følgende trade-off mellem varighed og omkostninger. Lad os tage udgangspunkt i følgende lille eksempel: Aktivitet Umidelbar Forgænger A - 7 B A 3 C - 6 D C 3 E B, D 2 Varighed (dage) A 0 7 ÊÊ B 7 10 7 0 7 3 7 10 start 0 0 E 10 12 ÊÊ slut 12 12 0 0 0 2 10 12 0 12 12 C 0 6 ÊÊ D 6 9 6 1 7 3 7 10
Beregning af slacks: Akt. (6 /6 () /) slack critical path A 0 0 7 7 0 yes B 7 7 10 10 0 yes C 0 1 6 7 1 D 6 7 9 10 1 E 10 10 12 12 0 yes Den kritiske vej består således af sekvensen start A B E slut hvilket indebærer en varighed på ialt 12 dage. Antag nu, at projektet =5+6 afsluttes inden 10 dage. Hvilke aktiviteter skal crashes og hvor meget? Det er til besvarelse af det spørgsmål nødvendigt at vide, hvor meget hver enkelt aktivitet kan crashes og hvad de hermed forbundne omkostninger er. Den information kan f.eks. genereres fra følgende data: 1) 7 3 é forventet varighed af aktivitet 3 2) 7 w 3 é varighed af aktivitet 3ved maximal crashing, d.v.s. kortest mulige varighed af aktiviteten 3) C3 é totalomkostninger for aktivitet 3 ved normal indsættelse af ressourcer w 4) C 3 é totalomkostninger for aktivitet 3 ved maximal crashing
Herefter kan for hver aktivitet 3 beregnes M 3 é 73 7 w 3 - maximalt antal dage varighed af aktivitet 3 kan reduceres ved crashing w C C 3 3 K3 é M - omkostninger forbundet med 3 reduktion af varighed af aktivitet 3 med en dag p.g.a. crashing Disse data er angivet i nedenstående tabel: tid (dage) Total Cost ($) M Act. normal crash normal crash (dage) A 7 4 500 800 3 100 B 3 2 200 350 1 150 C 6 4 500 900 2 200 D 3 1 200 500 2 150 E 2 1 300 550 1 250 K ($ pr. dag) 3 3 Hvilke aktiviteter skal crashes og hvor meget? Intuitionen er, at vi skal crashe billige aktiviteter på den kritiske vej. Det indikerer, at vi skal crashe på aktivitet A. Crashing af A til 5 dage betyder godt nok at længden af den oprindelige kritiske vej er reduceret til 10 som ønsket, men en anden vej er i mellemtiden blevet kritisk (nemlig start C D E slut), og den indebærer en varighed af projektet på 11 dage. Vi har derfor brug for en mere systematisk procedure til bestemmelse af hvilke aktiviteter, der skal crashes, og hvor meget de skal crashes med. LP giver mulighed for en sådan procedure.
Lad os for hver aktivitet 3 introducere 2 variable: x 3 måler EF3 y 3 måler reduktion af varighed for aktivitet 3 p.g.a. crashing Bemærk: EF kan ikke længere beregnes som ovenfor, 3 fordi den afhænger af crashing af aktiviter! Husk nu, at EF é ES 3 3 YDULJKHGDIDNWLYLWHWL og at ES 3 IRUDNWLYLWHW3 HUVHQHVWHEF 4 EODQGWDOOHGHQV XPLGGHOEDUHIRUJ QJHUH 4
Følgende LP løser derfor crashing problemet i det lille eksempel: min 100yE 150yF 200yG 150yH 250yI s.t. xe ˆ 0 (7 y E) xf ˆ x E (3 y F) xg ˆ 0 (6 y G) xh ˆ x G (3 y H) ye ì 3 yf ì 1 yg ì 2 yh ì 2 y 1 xi ˆ x F (2 y I) xi ˆ x H (2 y I) I ì xi ì 10 x,x,x,x,x,y,y,y,y,y 0 E F G H I E F G H I ˆ Kriteriefunktionen indebærer, at de samlede crashomkostninger minimeres. Den første begrænsning siger, at det tidligste tidspunkt for afslutning af aktivitet E, er givet ved E's varighed (der er aktivitetens normale varighed minus antal dage, der er crashed) plus det tidspunkt hvor E's umiddelbare forgænger (start noden) er afsluttet. Den anden begrænsning siger, at det tidligste tidspunkt for afslutning af aktivitet F, er givet ved F's varighed plus det tidspunkt hvor F's umiddelbare forgænger E er afsluttet. Tredie og fjerde begrænsning læses tilsvarende. Bemærk, at der er indført 2 begrænsninger af denne type for aktivitet I. Det skyldes, at I har to umiddelbare forgængere, nemlig Fog HÆAktivitet I kan derfor ikke sættes i gang, før både F og H er afsluttede. Begrænsningerne 7-11 siger, at det ikke er muligt at crashe en aktivitet mere end forskellen mellem normal varighed og kortest mulig varighed. Begrænsning 12 siger, at projektets sidste akivitet I skal være afsluttet tidspunkt 10. Og de sidste begrænsninger er blot krav om ikke-negative crash- og EF-tider.
Generalisering af LP til løsning af crashing problemet: min! K y 3 3 3 normal s.t. x3 ˆ x 4 (t3 y 3) for alle 3og for alle 4, der er umiddelbar forgænger for 3 normal crash 3 3 3 y ì t t x 3 ìx for det 3der er projektets sidste aktivitet x 3, y 3 ˆ! for alle 3 normal Her angiver t 3 den normale varighed af aktivitet 3 (d.v.s. crash varighed uden crashing) og t 3 varigheden ved maximal crashing. X er en fast parameter, der måler den ønskede varighed af projektet. Kriteriefunktionen indebærer, at de samlede crashomkostninger minimeres. Den første begrænsning siger, at det tidligste tidspunkt for afslutning af en aktivitet 3, er givet ved varigheden af aktivitet 3 (der er aktivitetens normale varighed minus antal dage, der er crashed) plus det tidspunkt hvor enhver af 3 s umiddelbare forgængere er w afsluttet. Den anden begrænsning siger, at det ikke er muligt at crashe en aktivitet mere end forskellen mellem normal varighed og kortest mulig varighed. Den tredie begrænsning siger, at den aktivitet, der slutter projektet, senest skal være afsluttet tidspunkt X. Og den sidste begrænsning siger, at negative crashtider og EF-tider ikke kan forekomme.