1 Teorie hromadné obsluhy Teorie hromadné obsluhy zkoumá modely, v nichž do nějakého systému obsluhy, kerý může mít jeden či více linek obsluhy vstupují jednotky, které mají být těmito linkami obslouženy. Typickým příkladem může být prodejna, kam přicházejí zákazníci a ti musejí projít přes určitý počet kas, kadeřnictví, kde určitý počet kadeřnic se snaží uspokojit náhodně příchozivší zákaznice atd. Je vidět, že v těchto modelech se pracuje s prvky náhody, neboť počet vstupujících jednotek (např. zákazníků) bývá náhodný, doba, kterou stráví jednotka v systému (délka obsluhy u kasy, délka doby střihání) je náhodná. Cílem těchto úloh je často optimalizovat počet linek tak, aby zbytečně nedocházelo k frontám či opouštění systému (můžeme uvažovat, že někteří zákazníci raději odejdou, než aby čekali ve frontě) a naopak aby nebyli zbytečné náklady (vždycky bychom mohli ke kasám posadit tolik prodavaček, že by se žádné fronty netvořily). Jak jsme již poznamenali, tyto modely pracují s prvky náhody, jedná se o tzv. stochastické modely. Řešení je možné dvojího typu. Analytické spočívá v tom, že na základě známých parametrů modelu pomocí nástrojů teorie pravděpodobnosti či jiných matematických odvětví spočteme či odhadneme ty parametry modelu, kterou nás zajímají (např. průměrný počet zákazníků ve frontě, apod.). Simulační známých parametrů modelu využijeme k nasimulování dané situace pomocí nějakého vhodného software. Na základě těchto simulací odhadneme parametry modelu, které nás zajímají. 1.1 Parametry modelu K vytvoření matematického medelu hromadné obsluhy, potřebujeme specifikovat: vstup jednotek doby obsluhy na jednotlivých linkách siť obslužných linek pravidla pro odchod z front do systému obsluhy specifické rysy systému 1.1.1 Vstup jednotek Je zřejmé, že jednou z hlavních charakteristik systému hromadné obsluhy je vstup jednotek do tohoto systému. Většinou přicházejí jednotky do systému v náhodných časech takových, že doba mezi příchody jednotlivých jednotek je náhodná veličina. Neboli tato doba je náhodná a lze určit její rozdělení. 1
(To buď známe či předpokládáme nebo ho potřebujeme určit.) Velmi často se předpokládá, že doba mezi příchody jednotlivých jednotek má exponenciální rozdělení. (Někdy se také využívá Erlangovo rozdělení, popř. obecné rozdělení náhodné veličiny.) Nemáme-li přesně stanoveno, jaké rozdělení mají intervaly mezi vstupy jednotlivých jednotek, pak mohou nastat dva případy. Buď známe rozdělení a neznáme jen jeho parametry (např. víme, že se jedná o exponenciální rozdělení, ale neznáme jeho střední hodnotu), a pak musíme využitím statistických metod tento parametr určit, anebo neznáme ani rozdělení doby příchodu, a pak musíme statickými metodami určit vhodné rozdělení včetně parametrů. Tyto metody ovšem nejsou náplní tohoto předmětu. Také se může stát, že doby mezi vstupy jednotlivých jednotek nebudou nezávislé, a potom by mohlo dojít k selhání modelu, pokud bychom opoměli tuto skutečnost do modelu zařadit. V případě, že jednotlivé vstupy nejsou nezávislé náhodné veličiny, dochází většinou ke značnému stížení řešení situace. My pouze poznamenáme, že jednou z možností, jak se této situaci vyhnout, může být rozdělení modelů do podmodelů v závislosti na době, kdy model zkoumáme (např. doba špičky). 1.2 Doba obsluhy Stejně jako v případě příchodů jednotek do systému i zde potřebujeme znát rozdělení doby obsluhy jednotlivých jednotek v systému. Opět tyto jednotlivé doby mohou být nezávislé náhodné veličiny, jejichž rozdělení známe, či potřebujeme zjistit, viz předchozí odstavec. Ovšem může se stát, že doba obsluhy závisí na čase a stavu systému (např. únava, či jiný obsluhující), někdy také musíme uvažovat poruchovost obslužných linek. To vše opět komplikuje řešení úloh. 1.3 Síť obslužných linek Je třeba vědět, kolik linek je v provozu a zda obsluhují paralelně, sériově, nebo je zde nějaké speciální uspořádání. 1.4 Pravidla odchodu z front do systému obsluhy Pro výpočet doby, kterou jednotka stráví ve frontě nebo celkově v systému je nezbytné znát pravidla, podle jakých odcházejí jednotky z fronty do systému. Pro tato pravidla se vžilo následující značení: FIFO first in, first out, LIFO last in, first out, SIRO selection in random order, GD general discipline. 2
Problémy zde může způsobit například proměnný systém těchto pravidel, či případ, kdy některé jednotky mají prioritu obsluhy. 1.5 Specifické rysy systému Někdy výše popsané charakteristiky nestačí k popsání systému, např. pokud je omezen počet míst ve frontě, netrpělivost vstupních jednotek (při určité délce fronty, opustí systém), apod. 2 Klasifikace systémů hromadné obsluhy V matematickém modelování ekonomických procesů se vždy snažíme situaci co nejvíce zjednodušit. Zjednodušit ji co nejvíce, jak je možné, abychom neopomněli nějakou podstatnou podmínku, čímž bychom vytvořili neodpovídající model. Díky zjednodušení je potom možné úlohu vyřešit, či ji vyřešit snáze. A tak se ukazuje, že přes všechny výše popsané problémy, je možné klasifikovat několik klasických modelů hromadné obsluhy, které je možné využít v mnoha případech reálného života. V těchto modelech se předpokládá, že doby mezi příchody jednotlivých jednotek do systému jsou nezávislé. Typ systému obsluhy se popisuje trojicí (A/B/c), kde A udává rozdělení příchodu jednotek do systému, B udává rozdělení doby obsluhy a c počet linek obsluhy. Nejčastěji používanými symboly jsou: M pro exponenciální rozdělení, E k pro Erlangovo rozdělení řádu k (tvz. Γ k -rozdělení), G pro obecné rozdělení, D pro deterministickou dobu trvání. Příklad: Systém (M/G/2) je systém, kde doba mezi vstupy jednotlivých jednotek do systému má exponciální rozdělení, doba obsluhy jedné jednotky má obecné rozdělení a v systému jsou dvě obslužné linky. 3 Příklad Pan Ševčík přemýšlí o zbudování mycí linky aut u svého autoservisu. Rozhoduje se, zda postavit jednu nebo dvě linky. Od expertů na teorii front si nechá pro variantu jedné i pro variantu dvou linek spočítat následující data, na základě těch se posléze rozhodne. 1. Kolik průměrně aut bude čekat ve frontě? 2. Jak dlouho v průměru bude zákazník čekat na obsluhu? 3
3. Jakou část času bude linka nevyužita? 4. Jaký je počet aut ve frontě, který nebude překročen s pravděpodobností 95%? 4 Výpočty Metoda výpočtu se samozřejmě liší pro jednotlivé modely. Nejprve si uveďme značení, které je společné všem modelům. N(t) počet jednotek přítomných v systému (ve frontě i v obslužných linkách), T n okamžik vstupu n-té jednotky do sytému, t n doba mezi vstupem (n 1). a n-té jednotky do systému, tedy zřejmě t n = T n T n 1, T náhodná veličina vyjadřující dobu mezi vstupy dvou po sobě jdoucích jednotek, x n doba obsluhy n-té jednotky, X náhodná veličina udávající dobu obsluhy jedné jednotky, w n doba čekání ve frontě n-té jednotky, s n doba strávená v systému n-tou jednotkou, tedy s n = w n + x n. Poznámka: Jak jsme již poznamenali, A značí distribuční funkci doby mezi vstupy jednotivých jednotek, proto můžeme psát: P(t n t) = A(t). A B je distribuční funkce doby obsluhy jednotky, proto: 4.1 Základní vztahy P(x n t) = B(t). Označme si: α(t) počet příchodu do systému v době (0, t), β(t) počet odchodů ze systému za dobu (0, t). Pokud systém začínal prázdný, tj. N(0) = 0, potom N(t) = α(t) β(t). 4
je: Obecněji platí: N(t) = α(t) β(t) + N(0). Celková doba, kterou strávili jednotky v systému (tedy počet jednotkohodin) γ(t) = t 0 N(t)dt. Potom je zřejmé, že pokud označíme průměrnou intenzitu vstupu do systému za dobu (0, t) λ t (tedy průměrný počet jednotek vstupujících do systému na jednotku času), potom λ t = α(t). t A průměrná doba, kterou strávila jedna jednotka v systému za dobu (0, t) je T t = γ(t) α(t). Dále zaveďme N t průměrný počet zákazníků v systému v době (0, t), pro který platí: N(t) = γ(t). t A tak můžeme psát: N(t) = γ(t) t = γ(t) α(t) α(t) = t T t λ t. Pokud tedy předpokládáme existenci následujících limit: lim λ t t + = λ, T t = T, lim t + lim t + potom také platí tzv. Littleův vztah: N t = N, N = λ T. Poznámka: Snadno nahlédneme, že pokud nebudeme do doby pobytu v systému uvažovat dobu obsluhy (tedy jednotka vystupuje ze systému v okamžiku, kdy vstupuje do obsluhy), potom tento vztah lze psát: N f = λ T f, kde N f je průměrný počet jednotek ve frontě a T f je průměrná doba čekání ve frontě. Ještě poznamenejme, že jistě platí: T = T f + EX. 5
5 Jednoduchý exponenciální model (M/M/1) Tento model předpokládá jednu obslužnou linku s dobou obsluhy, která se řídí exponenciálním rozdělením a předpokládá vstup jednotek do systému také pod exponenciálním rozdělením. Poznámka: Není-li dáno jinak, předpokládá se systém fronty FIFO a neomezený počet míst ve frontě. Jak známo, exponenciální rozdělení má jeden parametr, tradičně se značí λ a 1 λ udává střední hodnotu náhodné veličiny. V teorii hromadné obsluhy se vžilo značení λ pro parametr vstupu jednotek (jedná se tedy o intenzitu vstupu jednotek), pro parametr doby obsluhy (jde tedy o intenzitu výstupu). Doba mezi vstupy dvou po sobě jdoucích jednotek má exponenciální rozdělení s parametrem λ, tedy hustota náhodné veličiny T je a(t) = λ exp λt pro t 0. A podobně hustota náhodné veličiny X udávající dobu obsluhy jedné jednotky v systému je b(t) = exp t pro t 0. Je vidět, že teď už máme celý model zadaný, a tak zřejmě všechny výsledky budou funkce pouze dvou parametrů λ a. Označme si p n (t) := P(N(t) = n). Naším cílem je získat hodnoty p n (t). Nejprve si odvoďme hodnoty p n (t + h), kde h je malý časový interval. Stav systému v okamžiku (t + h) je závislý na stavu systému v okamžiku t, a to následujícím způsobem (ve vztazích se využívá toho, že se jedná o exponenciální rozdělení vstupů a doby obsluhy): P(jeden vstup během (t, t + h)) = λh + o(h), P(žádný vstup během (t, t + h)) = 1 λh + o(h), P(více vstupů během (t, t + h)) = o(h), P(1 dokončená obsluha v (t, t + h), v t systém neprázdný) = h1 + o(h), P(více než 1 dok. obs. v (t, t + h), v t systém neprázdný) = 1 h1 + o(h), P(1 dokončená obsluha v (t, t + h), v t systém prázdný) = o(h), P(žádná dok. obs. v (t, t + h), v t systém prázdný) = 1 o(h). Poznámka: Připomeňme, že řekneme, že funkce f(x) nabývá hodnot o(x) pro x 0, pokud platí: f(x) lim x 0 x = 0. 6
Pro naše výpočty to znamená, že člen o(h) je pro malé hodnoty h tak malý, že ho můžeme zanedbat (pokládat za nulový). Poznámka: Poznamenejme, že odvození výše uvedených vztahů vychází ze znalostí exponenciálního rozdělení. Z uvedených vztahů je zřejmé, že pokud má být systém v čase t + h ve stavu n (ne právě s téměř nulovou pravděpodobností), potom musí v čase t být ve stavu n 1, n nebo n + 1. Situaci nastiňuje tabulka: Stav v t Příchody během h Odchody během h n 0 0 n 1 1 n-1 1 0 n+1 0 1 A tak je snadno vidět, že pravděpodobnost, že v systému bude v čase t + h právě n jednotek lze zapsat následujícím způsobem: p n (t + h) = p n (t)(1 λh + o(h)) (1 h + o(h)) + + p n (t)(λh + o(h)) (h + o(h)) + + p n 1 (t)(λh + o(h)) (1 h + o(h)) + + p n+1 (t)(1 λh + o(h)) (h + o(h)) = p ( t) (λ + )hp n (t) + λhp n 1 (t) + λhp n+1 (t) + o(h). Poznámka: Připomeňme, že h 2 je také o(h). A tak získáváme (po limitním přechodu h 0) pro n 1: p n(t) = (λ + )p n (t) + λp n 1 (t) + p n+1 (t). Tento vztah neplatí pro n = 0, poněvadž v případě prázdného systému jsou pravděpodobnosti přechodu jiné. Sestavme si tabulku pro případ n = 0, resp. pro případ, kdy chceme, aby byl systém v době (t + h) prázdný. Stav v t Příchody během h Odchody během h 0 0 0 1 0 1. Stejným postupem jako v předchozím případě získáme: p 0(t) = λp 0 (t) + p 1 (t). Uvažujme, že řešíme tzv. stacionární systém, to znamená systém, ve kterém pravděpodobnosti jednotlivých stavů nezávisí na čase (t). Většina rozumně 7
se chovajících systémů se ustálí do takového stavu, a nás potom zajímají pravděpodobnosti p n (t), které ovšem nezávisí na čase, tudíž se jedná vlastně pouze o pravděpodobnosti p n, což jsou pravděpodobnosti, že v systému bude n jednotek (měřeno v kterém koliv čase). Kdy se jedná o stacionární a kdy nastává problém nestacionárních systémů, to je otázka pro hlubší studium. Pokud tedy předpokládáme, že máme stacionární systém, potom derivace funkcí p n jsou nuly (jedná se o konstantní funkce), a tak dvě výše odvozené rovnice můžeme přepsat: 0 = (λ + )p n + λp n 1 + p n+1 pro n 1 (1) 0 = λp 0 + p 1. (2) Což si můžeme přepsat: p n+1 = λ + p n λ p n 1 pro n 1 p 1 = λ p 0. Teď je již vidět, že pokud budeme znát hodnotu p 0, potom všechny ostatní hodnoty p n získáme postupným dosazováním. A po vyzkoušení (důkaz matematickou indukcí) snadno ověříme, že lze hodnoty p n vyjádřit pomocí hodnoty p 0 následovně: ( ) n λ p n = p 0. Zbývá tedy jediná otázka, a to, jaká je hodnota p 0. Tedy jaká je pravděpodobnost, že systém bude prázdný? Protože hodnoty (p n, n N 0 ) udávají pravdědobnosti úplné kolekce disjunktních jevů, je zřejmé, že platí: + p n = 1. Pokud si hodnoty p n vyjádříme pomocí p 0 získáme: 1 = + ( λ ) n p 0 = p 0 + ( ) n λ. A tak s využitím znalostí z matematiky získáváme (pro λ < 1(což je také nutná podmínka k tomu, aby systém byl stacionární)): p 0 = 1 λ. A tak snadno nahlédneme, že pravděpodobnost, že systém není prázdný je λ. Tato hodnota se také nazývá využitelností systému nebo, jak plyne ze smyslu parametrů λ,, průměrným počtem příchodů za průměrnou dobu obsluhy. 8
5.1 Charakteristiky systému M/M/1 Je-li N náhodná veličina udávájící počet jednotek v systému, potom jistě průměrný počet jednotek ve frontě je: EN = np n = p 0 n ( ) n λ. Tuto řadu lze využitím znalostí matematické analýzy sečíst: EN = λ λ. Připomeňme, že celou dobu požadujeme > λ. Průměrná délka fronty se počítá obdobně: EN f = 0 p 0 + + n=1 (n 1)p n = EN p 0 = Pravděpodobnost výskytu fronty nenulové délky: A obecně k délce fronty platí: P(N 2) = 1 p 0 p 1 = P(N k) = ( ) k λ. ( ) 2 λ. λ 2 ( λ). A tak pro průměrnou dobu pobytu v systému můžeme psát (na základě Littleova vztahu): ET = 1 λ λ λ = 1 λ. A průměrná doba čekání ve frontě je ET f = ET 1 = λ ( λ). Na základě těchto znalostí již můžeme odpovídat na otázky týkající se systému (M/M/1). Příklad: Co tedy potřebujeme vědět od pana Ševčíka, abychom mu mohli odpovědět na jeho otázky? Potřebujeme znát dva parametry λ a. Tedy, chce-li pan Ševčík znát odpovědi na své otázky, musí nám zdělit, jaká je střední doba, kterou auto stráví v myčce (odtud získáme ) a kolik průměrně aut během hodiny předpokládá, že navštíví jeho myčky (tím získáme λ). Pan Ševčík ví, že auto stráví v myčce průmerně 6 minut a předpokládá, že průměrně jeho myčku využije 8 aut za hodinu. 9
Potom můžeme psát: λ = 8, = 10. A tedy využitelnost jedné linky je 8/10, tedy 80%. Střední délka fronty je EN = λ λ = 8 10 8 = 4. Chceme-li spočítat, jaký počet aut ve frontě nebude převýšen s pravděpodobností 95%, potom hledáme takové nejmenší K pro něž platí: P(N K) = ( ) K λ = 0, 8 K 0, 05. Dosteneme hodnotu 14. 1 A průměrná doba, jakou stráví zákazník u myčky je hodiny. λ = 1/2, tedy půl 6 Model M/M/c Předpokládejme model, který má stejné parametry jako předchozí, jedinou změnou je, že je zde více, resp. c, linek obsluhy. Podmínkou pro stacionaritu tohoto systému je λ c < 1. Jedná se vlastně o stejnou podmínku jako v předchozím případě, o podmínku, aby intenzita odchodů byla vetší než intenzita příchodů. Podobným způsobem jako v předchozím případě (rozepsáním jednotlivých situací) získáme následující vztahy pro pravděpodobnosti p n. Situace je o to komplikovanější, že pravděpodobnost odchodu jedné jednotky ze systému se v tomto případě dělí na více případů než v předchozí situace (to šlo jen o to, zda je systém prázdný či neprázdný), zde bude třeba odlišit, zda je v systému 0, 1,..., c 1 či c a více jednotek. Lze tedy odvodit: p n = p n = λ n n! n p 0 pro 1 n < c, λ n c!c n c n p 0 pro n c. A zase s využítím vzorce o úplné pravděpodobnosti odvodíme hodnotu p 0 : p 0 = ( c 1 ) 1 r n n! + crc, c!(c r) kde r = λ. Dále uveďme základní charakteristiky systému (M/M/c). 10
Průměrná délka fronty se počítá obdobně: EN f = + n=c 1 (n c)p n = p 0 (c 1)! ( ) c λ λ (c λ) 2. Průměrná doba čekání ve frontě se vypočte ze vztahu: ET f = EN f λ. Průměrná doba jednotky v systému je ET = ET f + 1. Střední počet obsazených linek obsluhy EU lze spočíst ze vztahu: EU = c np n + + n=c+1 cp n. Po úpravách obdržíme EU = λ. Příklad: Vypočtěme pro pana Ševčíka charakteristiky systému pro případ, že by zřídil dvě mycí linky. Nejprve vypočtěme p 0, tedy pravděpodobnost, že obě linky budou prázdné. p 0 = (1 + 0, 8 + 2 0, 82 2 1, 2 ) 1 = 0, 428. Dále si spočtěme pravděpodobnost, že v systému bude jedno či dvě auta. Průměrná délka fronty bude p 1 = 0, 8p 0 = 0, 343, p 2 = 8 2 2 10 2 p 0 = 0, 137. EN f = p 0 0, 8 2 80 = 0, 15. 122 Pravděpodobnost, že budou vytíženy obě linky je 1 p 0 p 1, což je 22, 8%. 11