UNIVERZITA PARDUBICE ÚSTAV ELEKTROTECHNIKY A INFORMATIKY POČÍTAČOVÁ PODPORA ŘÍZENÍ ROZSÁHLÝCH PROJEKTŮ BAKALÁŘSKÁ PRÁCE 2007 MARTIN ŠVÁHA
UNIVERZITA PARDUBICE ÚSTAV ELEKTROTECHNIKY A INFORMATIKY POČÍTAČOVÁ PODPORA ŘÍZENÍ ROZSÁHLÝCH PROJEKTŮ BAKALÁŘSKÁ PRÁCE AUTOR PRÁCE: Martn Šváha VEDOUCÍ PRÁCE: doc. Ing. Josef Volek, CSc. 2007
UNIVERSITY OF PARDUBICE INSTITUTE OF ELECTRICAL ENGINEERING AND INFORMATICS COMPUTER SUPPORT FOR LARGE PROJECTS BACHELOR WORK AUTHOR: Martn Šváha SUPERVISOR: doc. Ing. Josef Volek, CSc. 2007
Vysokoškolský ústav: Ústav elektrotechnky a nformatky Katedra/Ústav: Ústav elektrotechnky a nformatky Akademcký rok: 2006/2007 ZADÁNÍ BAKALÁŘSKÉ PRÁCE Pro: Šváha Martn Studjní program: Informační technologe Studjní obor: Informační technologe Název tématu: Počítačová podpora řízení rozsáhlých projektů Zásady pro zpracování: Cílem bakalářské práce je vytvoření počítačové podpory pro řízení projektů s ohledem na mnmalzac doby realzace s respektováním kapactních omezení jednotlvých čnností. Matematckým aparátem jsou dvě dscplny operačního výzkumu: Teore grafů a Síťová analýza. Práce bude mmo jné zahrnovat metodu CPM, PERT a Branch and Bound. Předpokládaná struktura bakalářské práce: 1. Úvod, motvace 2. Teoretcké základy 3. Formulace problému 4. Návrh metody a algortmu řešení 5. Počítačová mplementace v jazyku C++ 6. Řešení praktcké aplkace 7. Zhodnocení vlastního příspěvku a závěr Seznam odborné lteratury: [1] Klusoň, V.: Krtcká cesta a metoda PERT v řídící prax. Praha, SNTL 1968 [2] Plesník, J.: Grafové algortmy. Bratslava, Veda 1983 [3] Volek, J.: Operační výzkum 1. Pardubce, Unverzta Pardubce 2005 [4] Demel, J.: Grafy a jejch aplkace. Praha, Academa 2002 Rozsah: 30-50 stran textu, 5 tabulek, 10 obrázků Vedoucí práce: doc. Ing. Josef Volek, CSc. Vedoucí katedry (ústavu): prof. Ing. Pavel Bezoušek, CSc. Datum zadání práce: 31. 10. 2006 Termín odevzdání práce: 18. 5. 2007
Prohlašuj: Tuto prác jsem vypracoval samostatně. Veškeré lterární prameny a nformace, které jsem v prác využl, jsou uvedeny v seznamu použté lteratury. Byl jsem seznámen s tím, že se na moj prác vztahují práva a ponnost vyplývající ze zákona č. 121/2000 Sb., autorský zákon, zejména se skutečností, že Unverzta Pardubce má právo na uzavření lcenční smlouvy o užtí této práce jako školního díla podle 60 odst. 1 autorského zákona, a s tím, že pokud dojde k užtí této práce mnou nebo bude poskytnuta lcence o užtí jnému subjektu, je Unverzta Pardubce oprávněna ode mne požadovat přměřený příspěvek na úhradu nákladů, které na vytvoření díla vynaložla, a to podle okolností až do jejch skutečné výše. Souhlasím s prezenčním zpřístupněním své práce v Unverztní knhovně Unverzty Pardubce. V Pardubcích dne 17. 05. 2007 Martn Šváha
Poděkování Rád bych poděkoval zejména vedoucímu práce panu doc. Ing. Josefu Volko za jeho přpomínky, rady a konzultac některých problémů této práce.
Abstrakt Práce se zabývá softwarovou podporou pro řízení rozsáhlých projektů. Je zkoumána problematka rozmístění zdrojů v projektu př mnmalzac celkového času pro jeho vykonání. Dále jsou analyzovány některé algortmy pro prác s metodam PERT, CPM a Branch & Bound. - 6 -
Obsah Úvod...8 1. Motvace...9 1.1 Hstore...9 1.1.1 Předchůdc CPM a PERT...9 1.1.2 Hstore krtcké cesty...9 2. Teoretcké základy...11 2.1 Některé pojmy teore grafů...11 2.2 Pojmy z oblast algortmů pro operace s grafy...12 2.3 Pojmy z oblast datových struktur...13 3. Formulace problému...14 3.1 Sestavení síťového dagramu...15 3.2 Problematka krtcké cesty...17 3.2.1 Lhůtové ukazatele a zásady metody CPM...17 3.2.2 Postup výpočtu krtcké cesty...18 3.3 Problematka metody PERT...19 3.3.1 Časové odhady...20 3.3.2 Rozdělení pravděpodobnost doby trvání čnnost...20 3.3.3 Výpočet hodnot T, T, σ, v σ v a R...22 E L 3.3.4 Pravděpodobnost dodržení plánovaného termínu...24 3.4 Problematka metody Branch & Bound (Větve a meze)...25 3.4.1 Prncp metody Branch & Bound...25 4. Návrh metody a algortmu řešení...28 4.1 Algortmy pro výpočet metody krtcké cesty a metody PERT...28 4.1.1. Algortmus topologckého uspořádání...28 5. Počítačová mplementace v jazyku C++...35 5.1 Návrh datových struktur...35 5.1.1 Reprezentace síťového grafu v pamět...35 5.1.2 Reprezentace prastromu řešení v pamět...37 5.2. Problém acyklčnost grafu...37 5.3. Implementace algortmu pro rozmístění zdrojů v síťovém grafu.37 6. Řešení praktcké aplkace...40 Závěr...42 T E T L - 7 -
Úvod V současnost je stále více využívána počítačová podpora pro řízení rozsáhlých projektů v různých vědních oborech. Jednotlvé projekty se skládají z mnoha dílčích čnností a je zapotřebí vhodně naplánovat, jak tyto čnnost na sebe budou navazovat, kdy a kým budou vykonávány. Za tímto účelem bylo vytvořeno několk algortmů, které optmalzují celkový čas na daný projekt s ohledem na omezení zdrojů. Tyto úlohy lze řešt pomocí ručních výpočtů, ale př velm rozsáhlých projektech jsou tyto výpočty zdlouhavé a snadno může dojít k chybám, které mají vlv na výsledek. Počítačová podpora k řešení těchto úloh umožňuje tyto projekty v krátkém časovém ntervalu provést, zaručt přesné výsledky a v přehledné formě je zobrazt. Práce se zabývá vytvoření počítačové podpory pro řízení projektů s ohledem na mnmalzac doby realzace s respektováním kapactních omezení jednotlvých čnností. Dále se práce věnuje metodě krtcké cesty, metodě PERT a metodě Branch & Bound. - 8 -
1. Motvace Rozvoj průmyslových odvětví a různých vědeckých oborů vedl k potřebě plánování, koordnace a kontroly rozsáhlých a složtých projektů v těchto oblastech. Pro řízení úkolů byla vytvořena síťová analýza, což je souhrnný název pro metody, jejchž základ tvoří teore grafů, teore pravděpodobnost a vědecké programování. Základ síťové analýzy tvoří metoda krtcké cesty (CPM Crtcal Path Method) a plánovací systém PERT (Program Evaluton and Reew Technque). Dále do této oblast spadá nespočet modfkací těchto metod, jelkož obě základní metody se vyznačují svou jednoduchostí a přehledností. 1.1 Hstore 1.1.1 Předchůdc CPM a PERT Jedním z prvních způsobů zobrazení a řešení optmalzace byly Ganttovy dagramy, které Henry Gantt publkoval v roce 1910. Tato metoda byla používána téměř 50 let. Z hledska řešení projektů byla nedostatkem Ganttových dagramů skutečnost, že nezachycují vztahy a záslost mez dílčím čnnostm. Nehodí se na řízení čnností, kde je nutná koordnace. Objely se další metody, které danou problematku grafcky zobrazovaly jným způsobem. Jednou z nch byly postupové dagramy, které dokázaly vyloučt zbytečné pohyby na pracošt, a zvýšt tak výkon práce co v nejkratším možném čase za mnmální pracovní námahy. Po 1. světové válce byl v Německu vytvořen systém REFA, který pomohl vyvést Německo z ekonomcké krze. Tento systém znázorňoval pracovní čnnost. Jednotlvé čnnost rozebíral, dokud nebyla každá složka jasná a časově měřtelná. 1.1.2 Hstore krtcké cesty V roce 1957 vynuly společnost E. I. Du Pont de Nemours & Co. a Sperry-Rand Corporaton metodu krtcké cesty. Cílem tohoto vývoje bylo vytvoření nástroje pro řízení složtých čnností př výstavbě zařízení, rekonstrukce zařízeních a př vývoj nových chemckých výrobků. První zkušební aplkace se uskutečnla v září 1957. Její - 9 -
výsledky byly dokončeny v květnu následujícího roku. Jednalo se o výstavbu zařízení v hodnotě 10 ml. dolarů. Ukázalo se, že lze přesněj stanot počet pracovníků a zároveň zkrátt dobu realzace o 2 měsíce a to bez zvýšení nákladů. Př vynaložení nákladů vyšších o 1% bylo možné zkrátt dobu o další 2 měsíce. Tyto výsledky vzbudly velkou pozornost. Další využtí aplkace této metody byla oblast údržby. Šlo o preventvní údržbu reaktoru v továrně na výrobu neoprénu. Tato aplkace byla ukončena roku 1959 a její výsledky byly překvapující. Podařlo se snížt dobu trvání ze 125 hodn na 93. Bylo nalezeno 25 krtckých čnností z celkových 225, jejch urychlením bylo možné snížt dobu trvání opravy až na 78 hodn. Významné změny byly provedeny v oblast postupu práce. Autory metody CPM jsou James E. Kelly a Morgan R. Walker. 1.1.3 Vznk metody PERT a Branch & Bound Počátkem roku 1958 tým operační analýzy práce v Úřadu válečného námořnctva USA začal vyvíjet nové řídící metody v oblast vývoje raketových systémů. Jednalo se o vývoj systému rakety Polars. Na vývoj spolupracoval Wllard Hazard, pracovníc společnost Booz Allen & Hamlton, zástupc společnost Lockheed Mssles a pracovníc Úřadu válečného námořnctva. V červnu roku 1958 vydala tato skupna zprávu PERT, Summary Report, Phase I. V říjnu tohoto roku byl navržený systém zkušebně aplkován pro vývoj základních tří položek této zbraně. Šlo o 23 síťových dagramů, 2000 uzlů a 3000 čnností. Uvádí se, že došlo ke zkrácení vývoje rakety o dva roky. Za autory jsou považován D. G. Malcolm, J. H. Roseboom, W. Fazar a C. E. Clark, který položl důležté podklady ve své publkac o síťových grafech. Obě tyto metody se rychle rozšířly zejména ve stavebnctví a průmyslu. Postupem času byly rozšířeny dalším postupy pro specfcké účely. V roce 1960 byla představena metoda Větve a hrance (Branch and Bound) pro lneární programování. Autory jsou A. H. Land a A.G. Dog. Základem jsou přblžné výpočty, které vylučují možnost mající nepříznvou dobu trvání. Využívána je pro různá optmální řešení, zejména v dskrétní a kombnatorcké optmalzac. - 10 -
2. Teoretcké základy 2.1 Některé pojmy teore grafů Incdence p grafu přřazuje každé jeho hraně neuspořádanou dvojc vrcholů. Je-l ncdence hrany h X : p( h) = ( u,v) hrana h ncduje s vrcholy u a v. [4] hovoříme, že Neorentovaným grafem rozumíme uspořádanou trojc G = (V, X, p). Prvky množny V nazýváme vrcholy grafu G, prvky množny X hranam grafu G a zobrazení množny X na množnu všech neuspořádaných dvojc V V p ncdencí grafu G. Orentovaným grafem D = (V, Y, p) nazýváme uspořádanou trojc množn V, Y a zobrazení p množnyy V V. Množny V a Y mají obdobný význam jako u neorentovaných grafů s tím rozdílem, že množna Y je tvořena uspořádaným dvojcem [u, v] prvků množny V, přčemž nejvýše jednou. u v a každá takováto dvojce se vyskytuje v množně Y Sled S je střídavá posloupnost bezprostředně po sobě následujících vrcholů a hran grafu G = (V, X, p), pokud: { u,h,u,h,u,,u,h, u } S 0 1 1 2 2 n 1 ( h ) = ( u, u ) h X, p 1 = K, kde,pro = 1, K, n, u V pro = 1, K, n, u = u,un = v 0. Tah je sled, ve kterém se neopakuje žádná hrana. Cesta je tah, ve kterém se neopakuje žádný vrchol. Dráhou (orentovanou cestou) nazveme orentovaný sled, ve kterém se neopakuje žádný vrchol. Orentovanou cestu mez dvojcí vrcholů u, v v orentovaném grafu ( V,Y, p) G = značíme m ( u,v). Maxmální dráhou z vrcholu u do vrcholu v orentovaného grafu G = (V, Y, p) nazveme dráhu m * [u, v], pro kterou platí: * h m o [ u,v ] [ h] = max ( ) [ ] o h [ ], kde M je množna všech drah m[u, v]. m u,v M h d u, v n n - 11 -
cyklus. Acyklcký graf je orentovaný graf, který neobsahuje žádný Síťový graf je orentovaný, neorentovaně souslý, hranově ohodnocený, acyklcký graf vyjadřující časovou a věcnou návaznost jednotlvých čnností projektu. Vrcholově (hranově) ohodnoceným grafem nazveme graf G = (V, Y, p), pokud exstuje funkce o(v) (resp. o(h)), která přřadí každému vrcholu v V (hraně h Y ) nezáporné číslo vyjadřující určtou kvanttatvní nebo kvaltatvní vlastnost vrcholu (hrany). Matce přímých vzdáleností Matce přímých vzdáleností hranově ohodnoceného grafu G (V, Y, d j p) je čtvercová matce ( ) n, j ( h) D =, pro kterou platí: =1 d j = o, jestlže h Y, pro kterou p(h) = (v, v j ), j d =, jestlže h Y, pro kterou p(h) = (v, v j ), j j d j = 0, pro = j 2.2 Pojmy z oblast algortmů pro operace s grafy Asymptotcká složtost klasfkuje počítačové algortmy. Jedná se o funkc udávající, jakým způsobem se bude chování algortmu měnt v záslost na změně velkost vstupních dat. [6] Topologcké uspořádání vrcholů a hran grafu G je taková posloupnost v,v,,v 1 2 K n všech vrcholů grafu, že kdykolv vede orentovaná hrana z v do v j, platí < j. To znamená, že počáteční vrchol hrany je v topologckém uspořádání uveden vždy dříve než koncový vrchol téže hrany. Pokud exstuje topologcké uspořádání vrcholů a hran, pak je graf acyklcký. [2] - 12 -
2.3 Pojmy z oblast datových struktur Abstraktní datový typ (Abstract Data Type - ADT) je matematcká struktura skládající se z: jedné nebo více domén jedné nebo více matematckých operací na prvcích těchto domén Abstraktní datový typ umožňuje skrýt mplementac jednotlvých operací nad daným datovým typem a způsob fyzckého uložení nformace v proměnné daného datového typu. Hlavním cílem je zjednodušt a zpřehlednt program, který provádí operace s daným datovým typem. [6] - 13 -
3. Formulace problému Pro účely řízení projektů je nutná dokonalá znalost problému. Systém pro řízení projektů by měl splňovat následující podmínky[3]: a) Systém by měl nabízet kompletní a přesné nformace určující vztahy a záslost mez jednotlvým dílčím čnnostm. Pomocí těchto nformací bychom měl být schopn vytvořt přesnou organzac pracovních postupů tak, aby byla koordnace všech dílčích prvků projektu co nejefektvnější. b) Umožnění vytvoření lhůtového plánu v takové míře, abychom dokázal určt, které čnnost mají větší prortu pro dokončení celého projektu. Pokud by vznkly nějaké problémy, měl bychom být schopn na ně reagovat a provádět různá opatření pro zamezení vznku zpoždění celkové doby projektu. c) Určování efektvního využtí veškerých zdrojů projektu. Jedná se o rozmístění zdrojů v projektu př mnmalzac nákladů a současně využtí těchto zdrojů př mnmalzac časového trvání projektu. Tyto požadavky jsou splněny oběma metodam CPM PERT. Hlavní rozdíl mez těmto metodam je pohled na časové, případně věcné ohodnocení čnností grafu. Metoda krtcké cesty (CPM) má dobu trvání dílčích čnností jednoznačně určenou, zatímco PERT je metodou stochastckou. Jednotlvé čnnost jsou vyjádřeny třem odhady, které jsou brány jako náhodné proměnné s určtým rozdělením pravděpodobnost. Metoda PERT umožňuje určt pravděpodobnost ukončení celého projektu jeho vymezených etap. K tomu, aby byl projekt realzován, nestačí pouze určt časový průběh, ale řešt otázku pracovních sl a materálního zabezpečení. Často dochází k nedostatku požadovaných zdrojů, čímž se může zkomplkovat včasné splnění projektu. - 14 -
Metody síťové analýzy umožňují tyto problémy řešt a provádějí rozbor, zda-l je nutné začít dílčí čnnost dříve, případně je urychlt nebo zpomalt. Na začátku projektu je nutné vytvořt časovou organzac celého projektu, rozvrhnout záslost jednotlvých aktt a brát v potaz dostupné zdroje a pracovní síly. Poté se přstoupí ke konstrukc síťového grafu. Př sestavování síťového grafu je třeba nejdříve určt pro jaký projekt má být sestaven a jaká metoda síťové analýzy bude použta a to tak, aby výsledky, které jsou požadovány, byly co nejvíce dostačující k jeho realzac. Jelkož se tato práce zabývá hned několka metodam, budou dané problémy a použté algortmy rozebrány odděleně. 3.1 Sestavení síťového dagramu Prvkem grafu je vrchol, který znázorňuje okamžk v čase, kdy začíná nebo končí některá z čnností. Všechny čnnost vycházející z jednoho vrcholu mají společné všechny bezprostředně předcházející čnnost. Výjmku tvoří počáteční nebo koncový vrchol, do kterého nevchází žádná z hran, respektve z něj žádná hrana nevychází. Jednotlvé dílčí čnnost jsou v síťovém grafu znázorněny pomocí hran. Každá hrana má 2 uzlové body. Každá spojnce mez vrcholy tedy odpovídá určté čnnost. Tento způsob však nestačí k řešení většny problémů. Nejde pouze určt, které dílčí operace je nutné vykonat, ale je nezbytné dodat, v jakém pořadí a jak na sebe navazují. K znázornění projektu je nutné použít nejen reálných hran, představujících reálné čnnost, ale fktvní čnnost, které neprobíhají v žádném čase, an nespotřebovávají žádné zdroje. Základní pradla pro sestavení síťového grafu: 1. Každá čnnost má vždy jeden uzel počáteční a jeden uzel koncový. Pomocí těchto vrcholů je každá čnnost jednoznačně určena. - 15 -
2. Síťový graf má vždy jeden počáteční a jeden koncový uzel. Pokud má dagram více vstupních vrcholů, řeší se daný projekt tak, že je vybrán lbovolný z počátečních uzlů a z něj jsou vedeny fktvní čnnost do ostatních počátečních vrcholů. Tento postup se nazývá normalzace síťového dagramu. 3. Síťový graf musí popsovat správně záslost jednotlvých dílčích čnností. Tyto záslost lze vyjádřt pomocí fktvních čnností. Obrázek. 1: Fktvní čnnost Zdroj: [4] Jestlže jen určtá část následných čnností zásí na dokončení předchozích čnností, pak je potřeba tyto čnnost oddělt od ostatních tak, aby byly nezáslé. A to pomocí fktvních hran jako je znázorněno na obrázku 1. Čnnost c zásí na čnnostech a, b, ale čnnost d zásí pouze na dokončení čnnost b. Díky fktvní hraně je čnnost d uvolněna ze záslost na čnnost a. 4. Souběžné čnnost v síťovém dagramu jsou oddělovány čnnostm fktvním. Takto zakreslené čnnost (obrázek 2) by byly v rozporu s prvním pradlem o jednoznačnost určení čnnost. Obrázek 2: Násobná hrana Zdroj: [4] 5. Síťový dagram nesmí obsahovat cyklus. Vznk v cyklu znamená, že dagram obsahuje logckou chybu a nelze projekt nkdy dokončt. - 16 -
Př sestavování síťového grafu se předpokládá znalost všech čnností, čnností jm předcházejících a čnností, které za nm bezprostředně následují. 3.2 Problematka krtcké cesty 3.2.1 Lhůtové ukazatele a zásady metody CPM nformace: Pro výpočty lhůtových ukazatelů jsou potřeba tyto základní Seznam všech čnností, které jsou potřeba k realzac projektu Potřebný čas k vykonání jednotlvých čnností Vazby a záslost mez čnnostm S využtím těchto údajů pomocí metody krtcké cesty můžeme vypočítat pro každou čnnost její lhůtové ukazatele. Metoda krtcké cesty rozhoduje, které aktty jsou krtcké pro dokončení projektu (tyto čnnost leží na krtcké cestě) a odhaluje, které čnnost mají pružnou dobu pro jejch vykonávání (čnnost nekrtcké). Krtckou cestu tvoří posloupnost čnností s nejdelší dobou trvání, určující nejkratší možný čas trvání realzace projektu. Jakákolv prodleva na krtcké cestě má za následek prodloužení celkového času na dokončení projektu. To znamená, že neexstuje žádný volný čas pro tyto čnnost. Projekt může mít více krtckých cest. Současně s krtckou cestou exstují cesty, jejchž čas na dokončení je kratší. Tyto cesty se nazývají nekrtcké. Tyto výsledky umožňují projektantům a řídícím projektantům rozdělovat prortu jednotlvým čnnostem ke zkrácení doby dokončení projektu. K provedení algortmu pro určení krtcké cesty používáme několk lhůtových ukazatelů. o[v, v j ] doba trvání čnnost [v, v j ] t nejdříve možný termín zahájení čnnost [v, v j ] t j nejdříve možný termín ukončení čnnost [v, v j ] / t nejpozděj nutný termín zahájení čnnost [v, v j ] - 17 -
/ t j nejpozděj nutný termín ukončení čnnost [v, v j ] D j maxmální dsponblní čas, D j = t t / j d j mnmální dsponblní čas, d j = / t j t R nterferenční rezerva tého uzlu, R = t / t R j nterferenční rezerva j tého uzlu, c j Rj = t / j t c R celková časová rezerva, R = D o[ v, v ] n R nezáslá časová rezerva, R = d o[ v, v ] n j v R volná časová rezerva, R = t t o[ v, v ] v j j j j j j j j j j j v / t t o[v,, v j ] v j / t j t j t R / t / t j R j t j maxmální dsponblní čas mnmální dsponblní čas Obrázek 3: Lhůtové ukazatele metody CPM Zdroj: [3] 3.2.2 Postup výpočtu krtcké cesty [3] 1. krok: V síťovém grafu položíme hodnotu nejdříve možného začátku projektu t 0 = 0. 2. krok: Určíme časy nejdříve možných začátků dílčích čnností projektu t pomocí algortmu na určení maxmální dráhy. 3. krok: Poslední určená hodnota udává nejdříve možný čas t n dokončení celého projektu. 4. krok: Určíme čas nejpozděj možného ukončení celého projektu, který je roven času nejdříve možného ukončení / projektu ( t t ) t =. n n n - 18 -
5. krok: Určíme časy nejpozděj nutného ukončeních jednotlvých dílčích čnností / t.každému vrcholu / v V přřadíme hodnotu t =, pro = 1, 2, K, n 1. Hledáme orentovanou hranu h Y, p[ h] = [ v, ] pro v j kterou platí: / [, v ] t o v. j 5a. krok: Pokud orentovaná hrana, která splňuje danou nerovnost, exstuje, pak můžeme určt čas nejpozděj nutného ukončení čnnost: t / [, v ] = t o v. 5b. krok: Jestlže neexstuje hrana, která by splňovala tento vztah, pokračujeme krokem 6. Čas nejpozděj nutného ukončení čnnost ve výchozím uzlu v 0 V je roven t 0 = 0. 6. krok: Krtckou cestu [ v ] m 0,v n vytvoříme tak, že pro všechny čnnost určíme celkovou časovou rezervu: R c j / j [, v ] = t t o v. c Čnnost, pro které platí R = 0 leží na krtcké cestě a jsou krtcké. Krtcká cesta je lbovolná dráha, u které je součet ohodnocení hran je maxmální. Všechny čnnost na této dráze jsou krtcké čnnost. Prodloužením lbovolné krtcké čnnost o čas e dojde k prodloužení celkové doby pro dokončení projektu t n o čas e. 3.3 Problematka metody PERT Př řízení ldské čnnost je velce obtížné přesně odhadnout délku trvání. Musíme brát v úvahu míru rzka př vykonávání dílčích čnností, jakožto určtý vlv nahodlost a nějakým způsobem j ohodnott. j j j - 19 -
Př rozsáhlejších projektech výrazně roste stupeň nejstoty a rzko s ním spojené včasného ukončení celého projektu. Tento problém s žádá brát v úvahu prvek nahodlost, který je potřeba nějakým způsobem kvanttatvně vyjádřt pro výpočet. 3.3.1 Časové odhady Vzhledem k nemožnost opakování většny čnností vznká problém nedostatku statstckých dat, na jejchž základě by byla určena délka celého projektu. Nezbývá, než se spolehnout na zkušenost a úsudek pracovníků t jsou do jsté míry schopn odhadnout podmínky a rzka realzace dílčích čnností. Odhad se provádí v časovém ntervalu, který je určen mnmální a maxmální dobou trvání čnnost. Dále je potřeba ještě odhadnout, v jakém čase bude čnnost s největší pravděpodobností ukončena. Máme tedy tř odhady, které se nazývají: Optmstcký odhad trvání čnnost označujeme jej symbolem a. Je to nejkratší uvažovaná doba trvání čnnost. Dodržení tohoto termínu je ale velce nepravděpodobné. Ke splnění tohoto termínu by musela být dokonalá souhra všech okolností s jstou dávkou štěstí. [3] Odhad nejpravděpodobnější doby trvání čnnost značíme m. Pokud bychom danou čnnost prováděl opakovaně, pak by právě tento odhad času byl nejčastěj realzován. Jedná se o modus příslušného rozdělení pravděpodobnost. Pesmstcký odhad doby trvání čnnost b. Doba, která je odhadována jako nejpozděj možná k dokončení čnnost. Tento termín má stejně jako optmstcký odhad velm malou pravděpodobnost, jelkož je brán se všem možným předvídatelným obtížem, které mohou př vykonávání nastat. 3.3.2 Rozdělení pravděpodobnost doby trvání čnnost Předchozí tř odhady jsou transformovány na jeden odhad t e, který je dále používán pro výpočet dalších lhůtových ukazatelů. Tyto odhady umožňují konstruovat hypotetckou křvku funkce rozdělení pravděpodobnost. - 20 -
Křvka hustoty pravděpodobnost může být symetrcká v případě, že t e = m. Nebo asymetrcká, kdy je její zkosení buď vlevo nebo vpravo. V prax se ovšem používá případ znázorněný na obrázku 4, protože odhad b bývá záměrně nadhodnocen. Obrázek 4: Beta rozdělení 1 Modus (m) a rozpětí (a b) jsou důležtým charakterstkam polohy a varablty rozdělení doby trvání čnnost, ale nelze s nm dále pracovat, jelkož s nm nelze provádět odhady pravděpodobnost a výpočty lhůtových ukazatelů. Tyto charakterstky ovšem vedou k výpočtu dalších dvou charakterstk, střední hodnoty t e a směrodatné odchylky σ te čnnost, které jž splňují požadavky odpovídající našm potřebám. doby trvání Systém PERT předpokládá, že náhodná velčna, kterou je doba trvání čnnost, má rozdělení beta. Funkce hustoty pravděpodobnost je dána vztahem: f ( x) = B 1 p 1 1 ( p,q ) x q ( 1 x), pro 0 x 1, [3] kde B( p,q) gama. ( p ) Γ( q) ( p + q ) Γ = vycházející ze vztahu funkce beta k funkc Γ 1 Zdroj: http://www.ce.cmu.edu/pmbook/mages/fg9_9.gf - 21 -
Dstrbuční funkce je dána vztahem: F ( x) 1 1 1 1 ( p,q) q ( 1 x) dx p = x B. 0 S využtím pradla tří sgma určíme hodnotu σ t pro B rozdělení e aproxmovánu jednou šestnou rozpětí: z čehož plyne vztah pro rozptyl: b a σ t e =, 6 ( b ) σ t e =. 36 2 a Výpočtem počátečního momentu z rovnce rozdělení hustoty B pravděpodobnost lze s využtím několka dílčích úprav dospět ke vzorc pro očekávaný čas: a + 4m + b t e =. 6 3.3.3 Výpočet hodnot T, T, σ v, σ v a R E L T E Časy jednotlvých uzlů grafu chápeme jako náhodné proměnné rozdělení pravděpodobnost blížící se asymptotcky k normálnímu 2 rozdělení N ( µ,σ ) rozdělení. v E, kde µ je střední hodnota rozdělení a 2 T L 2 σ rozptyl Hustota pravděpodobnost normálního rozdělení je dána vzorcem: ( x) ( x µ ) 1 2 σ 2 f = e. σ 2π Středním hodnotam normálního rozdělení jsou lhůtové ukazatele T a T [3]. T je délka maxmální dráhy z počátečního uzlu v 0 do uzlu L E v. Výsledný vztah je pak dán vztahem: T E = t e ~ h m v0 [,v ] [ h]. 2-22 -
Směrodatná odchylka času T E je pak analogcky vyjádřena: 1 2 2 σ v = σ t [ h]. T E E ~ h m [ v0, ] v n : v T L je celkový čas maxmální dráhy z uzlu v do koncového uzlu T L [,v ] [ h] vn = T t. L ~ h m e n Pro směrodatnou odchylku času T L platí vztah: 1 2 2 σ v = σ t [ h]. T E L ~ h m [,vn ] Časy T E a T L představují střední hodnoty dvou na sobě nezáslých normálních rozdělení, jejchž křvky hustoty pravděpodobnost jsou záslé na 2 2 σ T E a σ T L. Čím vyšší je hodnota směrodatné odchylky, tím má křvka hustoty pravděpodobnost plošší tvar. Hodnota rezervy v uzlech se může zvětšovat nebo zmenšovat. Může se stát, že bude dokonce nabývat záporných hodnot. Tento případ může nastat pouze tehdy, jestlže se obě křvky protínají. To znamená, že hodnota T v může být větší než hodnota T, potom platí: E L T E T = R. [3] L V takovém případě může dojít k ohrožení včasného splnění celého projektu. Z tohoto důvodu je někdy účelné zkoumat nekrtcké uzly a zjšťovat s jakou pravděpodobností se tyto uzly mohou stát krtckým P { R 0}. - 23 -
Je potřeba určt podíl rezervy se záporným znaménkem a druhé odmocnny součtu rozptylů obou rozdělení: u = T σ E 2 TE T L + σ 2 TL R = σ TR, kde 2 2 2 σ ( TE TL ) = σ T + σ E T = L σ. [4] Hodnoty pravděpodobnost odečteme z tabulky dstrbuční funkce normálního rozdělení N(0, 1): P 2 TR R 0. σ T R { R } = Φ = Φ( u ) Hodnota u zásí jak na velkost časové rezervy, tak na velkost směrodatných odchylek obou rozděleních. 3.3.4 Pravděpodobnost dodržení plánovaného termínu Mnohem významnější úlohu plní odhad pravděpodobnost dodržení plánovaných termínů, a to jak termínu ukončení celého projektu, tak jeho významných etap. Je l pro určtý uzel dán termín T S, pak odhad pravděpodobnost pro dodržení plánovaného termínu ukončení čnností vcházejících do v tohoto uzlu je ( T E T ) dosadt do vzorce pro výpočet u: P =. Stačí položt T = T a hodnotu T S S L S u / TE TL TE TS = σ 2 v T E + σ 2 v T L = σ T E, neboť σ = 0. [3] v T S Z rozdílu T T vyplývá, že hodnota E S / u vede k odhadu pravděpodobnost překročení plánovaného termínu T : v S { T } = Φ( u ) P T E S TS T = Φ σ TE E. Jestlže T > T, je pravděpodobnost dodržení termínu p > 0, 5. S E - 24 -
Jestlže T = T, je pravděpodobnost dodržení termínu S E p = 0,5. Jestlže T < T, je pravděpodobnost dodržení termínu S E p < 0,5. 3.4 Problematka metody Branch & Bound (Větve a meze) Množství skutečných plánovacích problémů, které jsou nazývány kombnatorcké úlohy optmalzace, má několk společných prvků. Optmalzují problémy, ale obvykle mají velké množství provedtelných řešení. Metoda Branch & Bound je jedním z hlavních nástrojů řešící problémy dskrétní optmalzace. Hlavní myšlenkou metody je nalézt mnmální nebo maxmální hodnotu argumentu x v oblast přípustných řešení. U mnmalzace se jedná například o čas, u maxmalzace zhodnocení, apod. Metoda Branch & Bound používá dva níže popsané nástroje. Prvním z nch je větvení. Metoda rozebírá množnu řešení na menší podmnožny řešení. Metoda je opakována rekurzvně pro každou podmnožnu a celkovým výsledkem je stromová struktura, která je nazývána např. prastrom řešení, strom větve a meze jným podobným termíny. Uzly stromu vyjadřují vytvořené podmnožny. Druhým nástrojem této metody je vytváření mezí. Jedná se o rychlý způsob nalezení dolní nebo horní hrance pro optmální řešení v dané podmnožně. Metoda odstraní ta řešení, která mají v případě hledání mnmálních řešení vyšší hodnotu nežl mez, kterou s určíme jako prozatím nejvýhodnější řešení, a tyto možnost jsou poté gnorovány. 3.4.1 Prncp metody Branch & Bound Nechť E { S,S,S K } =,S n je množna dskrétní optmalzace a 1 2 3 f je funkce defnována na této množně. Pokud je hledáno mnmum, tak - 25 -
je potřeba najít takovou podmnožnu E m množně E, na které tato funkce dosahuje mnmální hodnoty. [4] Máme vlastnost P A takovou, že můžeme množnu E rozdělt na dvě podmnožny A, A, kde platí A A = {}, A A = E. Najdeme spodní mez b 0 hodnot funkce f na množně E. Dále / předpokládejme, že dokážeme určt spodní meze b1 b0,b1 b0 funkce f na podmnožnách A, A. Vlastnost P B, P C dovolují rozložt množnu E na dvě část. Pak vlastnostem P A P,P P,P P,P P odpovídají podmnožny B A B A B A B A B, A B, A B, A B. Každá z těchto podmnožn představuje vrchol grafu. Tyto jednotlvé vrcholy umožňují vytvořt prastrom řešení. Postup př vytváření prastromu je následující: Vybereme vrchol, který je lstem prastromu řešení a má nejnžší mez. S pomocí k vlastnost můžeme získat další dva nové vrcholy, pro které určíme jejch dolní mez b. E S 2 S 1 S 1 S 2 S 3 S 4 S 3 S 4 S 2 * S 11 S 12 S 1 S 2 S 3 S 4 S 31 S 4 * S 32 S 11 S 12 S 31 S 32 Obrázek 5: Příklad větvení a vytváření mezí Zdroj: [5] - 26 -
Na obrázku 5 máme původně jednu množnu řešení E. Toto řešení tvoří uzel, který je kořenem prastromu. Množnu dle vlastností jednotlvých podmnožn rozdělíme na čtyř dsjunktní podmnožny řešení S 1, S 2, S 3, S 4. Vznknou nám čtyř nové uzly představující nová řešení. Na uzlech, které jsou lsty stromu zjstíme, že funkce f nabývá nejnžších hodnot na podmnožnách S 1 a S 3. Ostatní vrcholy (S 2 a S 4 ) nemají optmální řešení, hodnota funkce f nabývá vyšších hodnot než na podmnožnách S 1 a S 3. Tyto vrcholy dále rozdělíme, dle jejch vlastností na další podmnožny řešení S 11 a S 12, respektve S 31 a S 32. Zjstíme z sících vrcholů, kde nabývá hodnota funkce f nejnžších hodnot. Další postup je aplkován analogcky rekurzvním způsobem. Prastrom řešení má tu vlastnost, že pokud sjednotíme všechny uzly, které jsou v dané fáz sícím vrcholy stromu, získáme původní množnu řešení E. Je-l výsledkem uzel, který je lstem, potom funkce f nabývá na této množně mnmální hodnotu. - 27 -
4. Návrh metody a algortmu řešení Návrh metody a algortmů je třeba řešt jž v počátcích vytváření projektu. Program má řešt problém krtcké cesty, metody PERT a řízení projektů, kde je nutné respektovat kapactní omezení jednotlvých čnností. O mplementac síťového grafu bude pojednáno v kaptole 5.1. V programu je použto několk metod z teore grafů. K řešení projektu s kapactním omezením jednotlvých čnností je použta zároveň metoda CPM a Branch & Bound. Dále pro tyto metody jsou nutné některé algortmy pro průchod grafem a předání potřebných dat pro výpočet krtcké cesty, PERT a metody větvení a mezí. Pro příklad je uveden algortmus pro topologcké uspořádaní s úpravou pro acyklcký síťový graf a algortmus pro rozmístění zdrojů v sít. 4.1 Algortmy pro výpočet metody krtcké cesty a metody PERT Obě metody využívají podobný postup pro svůj výpočet. Používají v postupu početní operace s jedním argumentem reprezentujícím hranu představující čnnost. U metody CPM je tímto argumentem časový odhad, u metody PERT hodnota t e, která reprezentuje očekávaný čas jako náhodnou velčnu, odvození je uvedeno v kap. 3.2.2. 4.1.1. Algortmus topologckého uspořádání Tento algortmus se užívá v případech, kdy je potřeba vykonat množnu čnností, které je nutné vykonat postupně jednu po druhé, což znamená, že není možné vykonávat více čnností najednou a vykonávání žádné čnnost nesmí být přerušeno čnností jnou. Aplkace tohoto algortmu je možná pouze na acyklcké grafy. Pro tento algortmus s vytvoříme dvě posloupnost. Jednu pro hrany a druhou bude tvořt posloupnost vrcholů. - 28 -
Jako první vrchol vybereme vrchol v 1, do kterého nevede žádná hrana a všechny hrany vycházející z tohoto vrcholu odstraníme a vložíme je do příslušných posloupností. Zbývající graf je opět acyklcký, tj. opět exstuje vrchol, do něhož nevede žádná hrana. Takový vrchol označíme v 2 a odstraníme jej všechny hrany, pro které je počátečním vrcholem; odstraněné hrany poté zařadíme do posloupností. Naznačený postup opakujeme, dokud nejsou uspořádány všechny vrcholy a hrany. Pokud bychom nechtěl během výpočtu měnt graf, lze se na daný postup dívat tak, že vybíráme pouze vrchol, jehož předchůdc jsou jž v posloupnost zařazen. Dále lze algortmus ještě uprat tak, že pro každý vrchol grafu v udržujeme číslo C(v ) rovné počtu hran vcházejících do vrcholu v z vrcholů, které ještě nejsou zařazeny v posloupnost. Tyto hodnoty postupně snžujeme a vrcholy, které mají C(v ) = 0, ukládáme do seznamu M jako kanddáty pro zařazení do posloupnost. Algortmus: [2] 1. krok: Pro všechny vrcholy V ( G ) ( v ). v položíme C = 0 Pro všechny koncové vrcholy Kv(h) hran h Y ( G ) provedeme C ( Kv ( h) ) C ( Kv( h) ) + 1. = Pro všechny vrcholy v, kde 0, položíme ohodnocení vrcholu určující maxmální délku času U ( v ). počáteční vrchol tuto hodnotu nastavíme na v0 = 0. = Pro 2. krok: Do množny M vložíme všechny vrcholy v, v, pro které platí C ( v ) = 0. 3. krok: Je-l M = 0/, pak výpočet končí. Je-l M 0/, odstraníme z M některý vrchol, označíme jej zařadíme jej na konec posloupnost. Vrcholů. + 4. krok: Pro každou hranu h H ( ) pak pokračujeme krokem 3. v v a provedeme krok 4a a 5. krok: Zařadíme hranu h na konec posloupnost hran, označíme y = Kv(h), kde Kv je koncový vrchol hrany, a - 29 -
položíme C ( y ) = C ( y ) 1. Jestlže nyní platí ( y ) = 0 C, pak vrchol y zařadíme do seznamu M. Jestlže ohodnocení koncového vrcholu U(Kv(h)) hrany h menší než ohodnocení počáteční vrcholu U(Pv(h)) hrany h a jejím ohodnocením, tedy U(Kv(h)) < U(Pv(h)) + o(h), pak délka maxmální cesty v daném vrcholu U(Kv(h)) = U(Pv(h)) + o(h). Asymptotcká složtost algortmu je O(m + n), kde m je počet hran a n je počet vrcholů. Tohoto poznatku lze využít, a v programu jej bylo využto, k určení acyklčnost grafu. Vycházíme ze věty, která je vlastností acyklckých grafů: Nechť G je orentovaný graf. Pak následující podmínky jsou ekvalentní: 1. G je acyklcký. 2. G nemá smyčky a každá jeho slná komponenta má jen jeden vrchol. 3. Exstuje topologcké uspořádání vrcholů grafu G. 4. Exstuje topologcké uspořádání hran grafu G. Z toho vyplývá, že pokud nejsou po dokončení algortmu topologckého uspořádání všechny vrcholy zařazeny v posloupnost vrcholů, pak graf není acyklcký. 4.2 Algortmus pro rozmístění zdrojů v sít Problém časového rozvrhu zdrojů v případě jejch omezení, spočívá v nalezení takového rozvrhu zdrojů, který mnmalzuje celkovou dobu trvání projektu. Použtá metoda využívá kombnace metody větvení a meze (Branch & Bound) a metody krtcké cesty (CPM). Velké množství lteratury popsuje použtí síťových grafů pro časovou analýzu a časový rozvrh projektu. Hlavním problémem v této - 30 -
oblast operačního výzkumu je určení optmálního časového rozvrhu čnností, respektujícího skutečnost, že zdroje jsou omezeny. Daný problém dále popíšeme pomocí konkrétního příkladu, který bude obsahovat program jako vzorový. Obrázek 6 a tabulka 1 zobrazují potřebné údaje pro daný příklad. Je brán v úvahu příklad, kde zdroje (pracovníc) mohou vykonávat lbovolnou čnnost. Lze rozlšovat dvě varanty postupu př řešení této úlohy: 1) Pokud je započata některá z čnností, nelze její vykonávání přerušt a je nutné j dokončt. 2) Jestlže je čnnost rozpracována, může být její vykonávání pozastaveno a zdroje se mohou použít na jnou lbovolnou čnnost projektu. Tato práce se zabývá druhou z těchto varant, to znamená, že lze kdykolv rozpracovanou čnnost pozastat a uvolnt tak zdroje na vykonávání jné čnnost projektu. 2/2/4 1/1/2 3/3/2 zdroje k dspozc: 4 5/3/3 V 3 V 4 V 1 V 2 4/5/1 a/b/c a = název čnnost, b = doba trvání čnnost, c = zdroje potřebné pro vykonání čnnost Obrázek 6: Příklad rozmístění zdrojů v sít Čnnost Počáteční vrchol Koncový vrchol Doba trvání Zdroje 1. V 1 V 2 1 2 2. V 1 V 3 2 4 3. V 2 V 3 3 2 4. V 2 V 4 5 1 5. V 3 V 4 3 3 Tabulka 1: Rozmístění zdrojů - 31 -
Pro daný příklad máme v lbovolném čase k dspozc 4 pracovníky, kteří mohou vykonávat lbovolnou čnnost. Naším cílem je sestat seznam časově seřazených čnností tak, abychom mnmalzoval dobu trvání celého projektu. Pro řešení použjeme metodu Branch & Bound na sestavení konstrukce prastromu řešení. Každý vrchol prastromu představuje podproblém, ve kterém jsou některé čnnost dokončené nebo částečně dokončené. Každá hrana prastromu představuje množnu čnností, jak jdou za sebou v časové návaznost jejch realzace. Rekurzvním rozvojem stromu dojdeme k optmálnímu řešení úlohy. Prastrom, který představuje řešení našeho příkladu je uveden v příloze A. Každý vrchol je označen v horní část. Vrchol V 1 představuje původní projekt, respektve jeho zadání. Tento případ je uveden v příloze B v levém horním rohu. Pro ostatní vrcholy prastromu jsou uvedeny další grafy představující jednotlvé časové momenty. Projekt může začít jednou ze tří možností. Buď lze vykonat čnnost 1, 2 samostatně nebo obě čnnost 1 a 2 současně. Poslední případ ovšem potřebuje 6 pracovníků, ale k dspozc jsou jen 4. Tedy tuto varantu není možné provést. První dva realzovatelné případy znázorníme pomocí hran vycházejícíh z vrcholu V 1 do vrcholu V 3 a V 4. Čísla u hran udávají číslo čnnost a jejch pořadí ve vykonávání. Vrchol V 2 odpovídá podproblému bez čnnost 1, vrchol V 3 bez čnnost 2. V popsu vrcholu je v horní část jeho název, hodnota t j představuje představuje čas, ve kterém může podproblém V j začít. Číslo b j je spodní hrance času dokončení celého projektu bez omezení zdrojů v případě, že budeme pokračovat po dané hraně. Pro vrchol V 1 Spodní hranc určíme tak, že neuvažujeme žádná omezení zdrojů. to znamená čas dokončení celého projektu bez omezení zdrojů. Jedná se tedy o shodný výpočet jako u metody krtcké cesty. To znamená, že celý projekt by bez omezení zdrojů trval 7 dní, takže b 1 = 7 a t1 = 0. Jestlže čnnost 1 začne v čase 0 a čas pro její dokončení trvá 1 den, pak vrchol V 2 představující podproblém po dokončení čnnost 1 může začít v čase t 2 = 1. Zbývající čas pro dokončení podproblému bez omezení zdrojů je 6 dní, tedy hodnota spodní hrance času pro dokončení - 32 -
projektu je 7 dní. Čnnost 2 začne v čase 0, pak v čase 2 zbývá vyřešt podproblém V 3. Čas pro ukončení podproblému V 3 bez zdrojových omezení je roven 7 dnům. Z toho vyplývá t 3 = 2 a b3 = 9. Poté vybereme jeden z sících vrcholů s nžší spodní hrancí. Tímto vrcholem je V 2. Pro podproblém V 2 jsou přípustné pouze tyto varanty: buďto samostatně vykonané čnnost 2, 3, 4, nebo čnnost 3 a 4 současně. Tyto možnost jsou prezentovány hranam vedoucích k vrcholům V 4, V 5, V 6 a V 7. Tam, kde několk čnností probíhá současně, hrana končí, když je kratší z čnností dokončena. To znamená, že podproblém V 7 má dokončeny čnnost 1, 3 a z čnnost 4 má dokončeny 4 dny. Když jsme se dostal k vrcholu V 2 prastromu, vznká potřeba volby vrcholu, který budeme větt. V prax je vhodné větt dále ten vrchol, který je následníkem právě zkoumaného vrcholu a má přtom nejmenší spodní hranc ze všech vrcholů, které jsou lsty prastromu. Stuace vznklá v našem příkladu poukazuje na vrcholy V 3, V 4, V 5 a V 7. Tyto vrcholy mají spodní hranc 9 dní. Vybereme z těchto vrcholů ten, který má vykonaných nejvíce čnností, to znamená, že daný vrchol má nejvíce předcházejících hran vedoucích až do prvního vrcholu V 1. Vybereme tedy vrchol V 7, kde podproblém má dále dvě možnost. Můžeme dokončt čnnost 4 samostatně, nebo zpracovat kompletně čnnost 2. Tím získáme další podproblémy V 8, V 9. Pak opět prohledáme všechny sící vrcholy s nejnžší spodní hrancí a nejvyšším počtem splněných čnností. Tímto vrcholem je podproblém V 9. Zde nastávají 3 možnost. Buď vykonáme čnnost 5 samostatně, nebo dokončíme čnnost 4. Třetí možností je dokončt čnnost 4 a současně započít čnnost 5. Zde je dět, že nemá smysl brát v úvahu první dvě možnost vykonávání čnností odděleně, když mohou být vykonávány současně. Vznkne nám tedy pouze jeden vrchol V 10. V celém projektu nám nyní zbývá dokončt poslední čnnost 5, která je jž rozpracována. Ve vrcholu V 11, dostáváme hodnoty b 11 = 9 a t 11 = 9 jedno z možných řešení projektu.. Znamená to, že jsme nalezl - 33 -
Časový plán pro zpracování projektu je tedy následný. Projekt začneme vykonáním čnnost 1 v čase 0. Dále provedeme současně čnnost 3 a část čnnost 4 po dobu 3 dnů. Navážeme čnností 2 v čase 4. Pak zpracujeme zároveň dokončení čnnost 4 a rozpracování čnnost 5. Posledním krokem je dokončení čnnost 5 v čase 8. Výsledný čas pro dokončení celého projektu je tedy 9 dní. Poté můžeme ještě prověřt všechny sící vrcholy, ve kterých nejsou ukončeny všechny čnnost a jejchž spodní hrance není vyšší než výsledný čas pro dokončení projektu. Výsledky všech řešení jsou uvedeny v tabulce 2. Varanta 1 Zpracovávaná čnnost (čnnost) 1 3, 4 2 4, 5 5 Začátek vykonávání čnnost (čnností) 0 1 4 6 8 Varanta 2 Zpracovávaná čnnost (čnnost) 1 2 3, 4 4, 5 5 Začátek vykonávání čnnost (čnností) 0 1 3 6 8 Varanta 3 Zpracovávaná čnnost (čnnost) 2 1 3, 4 4, 5 5 Začátek vykonávání čnnost (čnností) 0 2 3 6 8 Tabulka 2: Výsledky rozmístění zdrojů v sít - 34 -
5. Počítačová mplementace v jazyku C++ V první fáz zpracování daného problému v mplementační část je důležté navrhnout vhodnou datovou strukturu, která bude daný síťový graf obsluhovat základním metodam pro prác s grafy a bude jej zobrazovat pro jednoduchou a přehlednou manpulac. Pro daný problém byl zvolen abstraktní datový typ síť. Práce byla vytvořena v Mcrosoft Vsual Studu 2005 v MFC (Mcrosoft Foundaton Class). 5.1 Návrh datových struktur 5.1.1 Reprezentace síťového grafu v pamět Síťové grafy nabývají velkého množství prvků, na kterých jsou velm často prováděny výpočty. Je tedy potřeba vytvořt datovou strukturu, která bude odpovídat kompromsu mez paměťovou a časovou (asymptotckou) složtostí. V této prác je zvolena pro zobrazení grafu křížová reprezentace nebol řídká matce. Jedná se o paměťově méně náročnou reprezentac grafu, která umožňuje přístup oběma směry. Řídké matce jsou specální třídou matc, jejchž většna prvků se rovná nule, a proto umožňuje úspornější uložení v pamět počítače. Na uložení grafu v klascké matce m n je potřeba m n hodnot, kdy některé prvky matce zůstávají během výpočtů nevyužty a zbytečně zabírají v pamět místo. Na uložení řídké matce rozměrů m n s k nenulovým reálným hodnotam je třeba: 2 celočíselné hodnoty na uložení dmenze matce 2k celočíselných hodnot na uložení ndexů nenulových prvků k reálných hodnot na uložení hodnot nenulových prvků Je-l r počet bytů potřebných na uložení reálného čísla a z počet bytů na uložení celého čísla, pak uložení matce jako řídké se vyplatí v případě, že 2(k+1)z + kr < mnr. [1] - 35 -
Tato mplementace umožňuje přístup jak ke svým předchůdcům, tak ke svým následníkům, což je pro naše výpočty sousející s častým procházením grafu výhodné. Pro přístup k vrcholům se udržují dvě prvotní struktury (pro přístup k následníkům a pro přístup k předchůdcům). Druhotná struktura je pouze jedna, ale umožňuje pohyb oběma směry k předchůdcům a také k následníkům. Toto řešení může být mplementováno jako pole-seznam pole-seznam nebo seznam-seznam seznam-seznam. Práce používá první z těchto případů. Vektor následníků v 1 v 2 v 3 v 4 Data1 Data2 Data3 Data4 v 1 1, 2 D1 v 2 v 3 1, 3 D2 2, 3 D3 2, 4 D4 3, 4 D5 v 4 Vektor předchůdců Obrázek 7: Řídká matce reprezentace v pamět Prvotní struktury pole pro následníky (předchůdce) uchovávají jednotlvé vrcholy. Obsahují jednotlvé klíče vrcholů, ukazatel na jejch data (D1, D2, ) a ukazatel na první hranu, která vychází z daného uzlu, což je ve skutečnost hlava seznamu hran. Druhotná struktura je lneární seznam s hlavou, jehož hlava je uložena ve struktuře vrcholu. Obsahuje čtyř základní údaje; klíče vrcholů (následníka a předchůdce) udávající - 36 -
jednoznačně hranu počátečním a koncovým vrcholem, data dané hrany dané těmto vrcholy, ukazatele na následníky a předchůdce (tzn. veškeré hrany vycházející a vcházející do vrcholu). Z obrázku 7 vyplývá, že vrchol v 1 je počáteční vrchol grafu, jelkož do něj nevchází žádná z hran, zatímco vrchol v 2 je koncovým vrcholem, protože z něj žádná hrana nevede. Obrázek reprezentující zobrazení řídké matce v pamět odpovídá grafu z obrázku 6 v kaptole 4.2. 5.1.2 Reprezentace prastromu řešení v pamět Pro výsledné zobrazení prastromu řešení je použta stejná datová struktura jakou používá síťový graf. Jde pouze o transformac grafu na příslušný k cestný strom, která je řešena nad abstraktním datovým typem v obslužné část programu. 5.2. Problém acyklčnost grafu Acyklčnost grafu lze řešt několka způsoby. V programu je mplementován způsob ověření exstence cyklu pomocí algortmu pro topologcké uspořádání. Tento algortmus je popsán v kaptole 4.1.1 s úpravam pro tuto aplkac. Na začátku programu se ověří, zda exstují počáteční a koncový vrchol síťového grafu. To znamená, že do tohoto vrcholu nevchází žádná hrana, respektve z něj žádná nevychází. Algortmus topologckého uspořádání postupně odebírá ty vrcholy grafu, do kterých žádná hrana nevede. Po jejch odstranění je graf opět acyklcký. Pokud se ovšem stane, že není nalezen žádný vrchol, do kterého nevchází žádná z hran a ještě všechny vrcholy nebyly zpracovány, pak to znamená, že se v grafu vyskytnul cyklus a tedy neexstuje topologcké uspořádání grafu. 5.3. Implementace algortmu pro rozmístění zdrojů v síťovém grafu Tento problém lze řešt několka způsoby. Můžeme buď vytvořt další nstanc grafu, který bude přesnou kopí původního grafu nebo vkládat do pomocných struktur právě zpracovávané prvky síťového - 37 -
grafu. Mnohem šetrnější k pamět a pro rychlejší zpracování je vytvoření vhodných pomocných struktur. Toto řešení je použto v této prác. V této kaptole s zjednodušeně popíšeme algortmus. Nejdříve s vytvoříme posloupnost hran M, Z, N. 1. krok: Nejprve vložíme kořen prastromu řešení. Tímto kořenem je počáteční vrchol síťového grafu. Nastavíme jeho první atrbut určující maxmální celkový čas pro dokončení projektu bez omezení zdrojů. Pro tyto účely je použt upravený algortmus na výpočet krtcké cesty, s tím, že je možné mít více počátečních vrcholů. Aktuální čas všech doposud vykonaných čnností je nastaven na 0. 2. krok: Vybereme všechny vrcholy, které jsou lsty prastromu řešení. Z těchto vrcholů vezmeme ten s nejnžším aktuálním časem V aktuální. Pokud má vrchol hodnotu maxmálního času pro dokončení celého projektu bez omezení zdrojů rovnu 0, pak vybereme jný vrchol, který má stejnou hodnotu aktuálního času jako vrchol V aktuální. Jestlže takový vrchol neexstuje, algortmus končí. 3. krok: Projdeme všechny čnnost, které předcházely podproblému vybraného vrcholu V aktuální. Jestlže hrana byla vykonána celá, vložíme je do posloupnost M a odstraníme j z grafu. Pokud hrana byla jen částečně vykonána, vložíme j do posloupnost Z a upravíme její skutečnou dobu trvání zkrácenou o jž vykonanou část čnnost. 4. krok: Projdeme všechny vrcholy grafu a vybereme ty, které nemají vcházející hranu a zároveň z nch alespoň jedna hrana vychází. Všechny vycházející hrany z těchto vrcholů vložíme do posloupnost hran N. 5. krok: Hrany z posloupnost N postupně projdeme a odstraníme vždy jednu z grafu. Vložíme do prastromu - 38 -
vrchol, vypočítáme pro něj aktuální čas projektu a celkovou dobu pro dokončení podproblému bez zdrojových omezení. Odebranou hranu opět vrátíme do grafu. 6. krok: Vytvoříme kombnace všech hran z posloupnost N, pro které je dostatek zdrojů k jejch vykonání. V této prác jsou řešeny pro zjednodušení pouze kombnace dvou hran. Pokud mají hrany shodnou dobu trvání, pokračujeme krokem 6a. Krok 6b vykonáme v případě, že tyto časy jsou rozdílné. 6a. krok: Odstraníme obě hrany z grafu. Vložíme do prastromu vrchol, vypočítáme pro něj aktuální čas projektu a celkovou dobu pro dokončení podproblému bez zdrojových omezení. Odebrané hrany opět vrátíme do grafu. Pokračujeme krokem 7. 6b. krok: Vybereme kratší z hran, její hodnotu s uchováme v pomocné proměnné a odstraníme j z grafu. Druhou hranu o tuto hodnotu zkrátíme. Vložíme do prastromu vrchol, vypočítáme pro něj aktuální čas projektu a celkovou dobu pro dokončení podproblému bez zdrojových omezení. Vrátíme zpět kratší z hran do grafu a ke zkrácené (původně delší hraně) přčteme hodnotu, kterou jsme s uchoval v pomocné proměnné. Pokračujeme krokem 7. 7. krok: Všechny hrany z posloupností M vložíme zpět do grafu. Hrany z posloupnost Z edtujeme na jejch původní hodnoty, které jsou uloženy v této posloupnost. A pokračujeme krokem 2. - 39 -
6. Řešení praktcké aplkace Jak jž bylo řešeno v kaptole 5, program zpracovává data zadaná pomocí síťového grafu. Počítá metodu krtcké cesty, metodu PERT a hledá vhodné rozmístění zdrojů v sít. Celý program je naprogramován ve Vsual Studu 2005 v jazyce C++ jako MFC aplkace (Mcrosoft Fundaton Class). Př vytváření síťového grafu se zadávají dle selekce buď vrcholy nebo hrany grafu. Edtace jednotlvých vrcholů nebo hran se provádí pomocí dvojklku na daný objekt. Vrcholy hrany lze odstrant př jejch edtac zaškrtnutím položky odstrant. Obrázek 8: Edtace objektů grafu v aplkac Lbovolný graf lze uložt do souboru například pomocí klávesové zkratky CTRL+S a opětovně jej otevřít. V nastavení programu s můžeme zvolt velkost zobrazovaných vrcholů v pxelech a kolk zdrojů máme pro daný projekt k dspozc. V metodách s můžeme určt, zda chceme řešt metodou CPM, PERT nebo rozmístění zdrojů v sít. Každá z metod má své specfcké nastavení, takže je nutné s jej nastat jž před vyplňováním hodnot potřebných k výpočtu. Po dokončení zadávání síťového grafu můžeme provést výpočet. Tato položka je buď v metodách nebo přímo v nástrojové lště. - 40 -
Obrázek 9: Zobrazení výsledků metody CPM Užvatel se nezabývá defncí počátečního a koncového vrcholu, které jsou v síťovém grafu zastoupeny pouze jednou. Tyto vrcholy s aplkace určí mplctně sama. Předpokládá se, že užvatel má nějakou představu o dané problematce a graf bude zadán ve správném formátu. Pokud se pokusí zadat více vrcholů, které mohou být považovány za počáteční nebo konečné, bude mu zobrazeno příslušné chybové hlášení. Aplkace je ošetřena prot vkládání násobných hran a smyček, které nejsou v síťovém grafu přípustné. Program dále řeší problém acyklčnost grafu. Podrobnější pops acyklčnost grafu je kaptole 5.1. Obrázek 10: Prastrom řešení v aplkac - 41 -