Cím: A sorbanállás elmélete
Szerző(k):  Kotnyek Balázs 
Füzet: 1998/április, 193 - 200. oldal  PDF  |  MathML 
Témakör(ök): Szakmai cikkek

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Bizonyára mindenkivel megesett már, hogy valahol sorban kellett állnia. Ha elég hosszú volt a sor, akkor talán olyan kérdéseken is eltöprengett, hogy vajon mennyi ideig fog várhatólag sorban állni, hány embert szolgálnak ki addig (ezt persze, ha egy sor van, meg is számolhatja, de ha már kettő, akkor nem ilyen könnyű eldönteni), vagy hogyha beállítanának még egy kiszolgálót, az mennyire csökkentené a várakozási időt. Ha nagyobb volt a beleérző képessége, akkor az is eszébe juthatott, hogy mennyit kell dolgoznia a kiszolgálónak, milyen hosszúak az egyfolytában foglalt, illetve üres periódusok. Ha pedig a sorbanállónak fejlett az üzleti érzéke, akkor azt is meggondolhatta, hogy megérné-e egy újabb kiszolgálót beállítani: mennyivel több lenne akkor az adott időn belül kiszolgált személyek száma, vagy ‐ ha a sor hossza korlátozott ‐ mennyivel kisebb lenne az esetleg ki nem szolgáltak aránya.
Ilyen és ezekhez hasonló kérdésekkel foglalkozik a sorbanállás, más néven tömegkiszolgálás elmélete.

 
 
1. A tömegkiszolgálási rendszer elemei
 
 

Nézzük meg, milyen jellemzői lehetnek egy tömegkiszolgálási rendszernek. A két legfontosabb dolog, amit meg kell vizsgálnunk, az az igények beérkezésének dinamikája és a kiszolgálásuk ideje. Ezek lehetnek előre pontosan meghatározottak, azaz determinisztikusak, illetve részben vagy teljesen véletlentől függőek, azaz sztochasztikusak. Teljesen determinisztikus tömegkiszolgálási rendszer például az a futószalag, ahol 1 percenként érkezik egy munkadarab, amelynek megmunkálása 0,9 percig tart. Érezhető, hogy az ilyen egyszerű rendszerek vizsgálata semmilyen elvi nehézséget nem okoz, és ezek kedvéért nem építettek volna fel egy egész elméletet. Az is látható, hogy ez a modell legtöbbször nem is írja le hűen a valóságot. Honnan tudjuk ugyanis, hogy egy munkadarab megmunkálása pontosan 0,9 percig tart? Általában csak azt tudjuk, hogy például a munka 0,8 percnél hosszabb, de 1 percnél rövidebb ideig tart, továbbá hogy az átlagos megmunkálási idő 0,9 perc. Így el is érkeztünk a sztochasztikus kiszolgálási időhöz. Ezt pontosabban úgy fogalmazhatjuk meg, hogy adva van egy B(x) eloszlás, amely a kiszolgálás idejét írja le; vagyis annak a valószínűsége, hogy a kiszolgálás x-nél rövidebb ideig tart, egyenlő B(x)-szel.
Az igények beérkezésének dinamikáját, mint azt az előbbi példában tettük, általában az egymás utáni beérkezések között eltelt idővel írjuk le. Ha ez sztochasztikus, akkor ennek is az eloszlását adjuk meg. Annak a valószínűségét, hogy egy ilyen beérkezési időköz rövidebb, mint egy t időintervallum, A(t)-vel jelöljük. Legtöbbször feltesszük, hogy a különböző beérkezési időközök ‐ például az 1. és 2. igény beérkezése között eltelt idő és a 2. és 3. igény beérkezése között eltelt idő ‐ egymástól független és azonos eloszlású valószínűségi változók.
A tömegkiszolgálási rendszer jellemzői még: a maximális lehetséges sorhossz (K), a kiszolgáló egységek száma (n), illetve a kiszolgálási sorrend. Ez utóbbi általában azt az elvet követi ‐ mint ahogy az a valós életben megszokott ‐, hogy aki korábban érkezik, azt hamarabb kiszolgálják (ezt az elterjedt angol rövidítéssel FIFO, azaz First In First Out elvnek hívják), de lehetnek ettől eltérő kiszolgálási módok is, például ha egynémely igényt soron kívül szolgálnak ki (erre is találhatunk példát az életben). Ha nincs lehetőség várakozásra, azaz K=0, akkor elutasításos rendszerről beszélünk. Ilyen például egy telefonközpont, ahol ha nem ad vonalat a készülék, akkor újra be kell lépnünk a rendszerbe, vagyis le kell tennünk és újra próbálkozni. Alapesetnek tekintjük, és külön nem is említjük, ha nincs korlátozva a sor hossza (K=) és egy kiszolgáló van.
Ha ismerjük a fentebb felsorolt adatokat, akkor számos, a rendszerre jellemző mennyiséget tudunk kiszámolni (legalábbis elvileg). Például megkérdezhetjük, hogy milyen valószínűséggel lesz 0,1,2,...,K sorbanálló egy adott pillanatban, vagy mennyi lesz az átlagos sorhossz, és így tovább. Ahhoz, hogy ezekre a kérdésekre választ adjunk, meg kell ismerkedni egy újabb fogalommal.
 
 
2. Születési-halálozási folyamatok
 
 

Tegyük fel, hogy elefántokat tenyésztünk, amelyek születnek és meghalnak az idő folyamán úgy ‐ ahogy az az elefántoknál szokásos ‐, hogy egyszerre csak egy elefántbébi születik, az is eléggé ritkán, szinte soha nem fordul elő, hogy nagyon rövid időn belül két elefánt születne. Cserébe a halálozások is ugyanilyen ritkák. Az is természetes, hogy az elefántok születési, illetve halálozási intenzitása (az, hogy mennyi elefánt születik, illetve hal meg egységnyi idő alatt) függ az állatok számától. Arra vagyunk kíváncsiak, hogy elég hosszú idő múlva milyen valószínűséggel lesz 0, 1, 2, ... elefántunk, vagyis milyen lesz az állatok számának az eloszlása.
Ezt a problémát általánosítva, és matematikailag kezelhető módon a következőképpen fogalmazhatjuk meg: Adott egy populáció, lehetséges nagysága k=0, 1, 2, .... Minden k-hoz meg van adva egy λk születési és egy μk halálozási intenzitás. A populáció nagysága egyesével változhat, azaz ha valamikor ez az érték k, és egy másik időpillanatban k+2, akkor kell lennie olyan pillanatnak a kettő között, amikor a populáció nagysága k+1 volt. Ezen kívül teljesülnek az alábbi feltételek: *P(A) jelöli egy A esemény bekövetkezésének valószínűségét, értéke 0 és 1 közötti. 
Az o(h) (kiolvasva: kis ordó h) egy szokásos matematikai jelölés, egy olyan h-tól függő mennyiséget jelöl, amely h-hoz képest nagyon kicsi, azaz h-val osztva és h-val tartva 0-hoz a hányados értéke 0-hoz tart.
P(pontosan 1 születés történik a  (t,t+h)  időintervallumban, feltéve,hogy  k  tagú a populáció  t-ben)=λkh+o(h)*,P(pontosan 1 halálozás történik a  (t,t+h)  időintervallumban, feltéve,hogy  k  tagú a populáció  t-ben)=μkh+o(h),P(pontosan 0 születés történik a  (t,t+h)  időintervallumban, feltéve,hogy  k  tagú a populáció  t-ben)=1-λkh+o(h),P(pontosan 0 halálozás történik a  (t,t+h)  időintervallumban, feltéve,hogy  k  tagú a populáció  t-ben)=1-μkh+o(h).
Ezekből már az is következik, hogy több halálozás, több születés vagy születés és halálozás egyszerre egy kis h idő alatt lehetetlen, abban az értelemben, hogy az ilyen típusú események valószínűsége o(h) nagyságrendű.
A fenti feltételeket teljesítő populáció nagyságát az időben leíró folyamatot születési-halálozási folyamatnak nevezzük. Ha μk=0 minden k-ra, akkor tiszta születési folyamatról, ha λk=0 minden k-ra, akkor tiszta halálozási folyamatról beszélünk.
Legyen Pk(t) annak a valószínűsége, hogy a t időpillanatban (természetesen t0) a populáció nagysága, vagyis az elefántok száma k. Először vizsgáljuk meg ezeket a mennyiségeket. A P0(t+h) annak az eseménynek a valószínűségét méri, hogy a t+h időpontban 0 elefántunk van. Nézzük, hogy fordulhat ez elő. Háromféleképpen:
*t-ben is 0 volt, és h idő alatt nem született egy elefánt sem;
* t-ben 1 elefánt volt, és h idő alatt nem született egy sem, de az az egy meghalt;
*bárhogy máshogy.
A harmadik eset elég furcsán hangzik, de megmagyarázza az a tény, hogy minden ebben foglalt lehetőség együttes valószínűsége a feltételeink szerint o(h). Az első eset valószínűsége:
P0(t)[1-λ0h+o(h)],
a másodiké
P1(t)[1-λ1h+o(h)][μ1h+o(h)].
Ezeket összegezve megkapjuk P0(t+h)-t:
P0(t+h)=P0(t)[1-λ0h+o(h)]+P1(t)[1-λ1h+o(h)][μ1h+o(h)]+o(h)=P0(t)-P0(t)λ0h+P1(t)μ1h+o(h)
(a P0(t)o(h), P1(t)λ1μ1h2 és a többi o(h)-t tartalmazó szorzat összege együttesen is csak o(h)). Mindkét oldalból kivonva P0(t)-t, osztva h-val, majd h-val tartva 0-hoz, a bal oldalon P0(t)-nek t szerinti deriváltját kapjuk, amelyre tehát ez teljesül:
dP0(t)dt=-λ0P0(t)+μ1P1(t).(1)
A Pk(t+h) annak az eseménynek a valószínűségét méri, hogy a (t+h) pillanatban k darab elefántunk van (k1). Ez a következőképpen fordulhat elő:
* t-ben k elefánt volt, és h idő alatt nem született, és nem halt meg egy elefánt sem;
* t-ben k-1 elefánt volt, és h idő alatt egy született de nem halt meg egy sem;
* t-ben k+1 elefánt volt, h idő alatt egy meghalt, de egy sem született;
* bárhogy máshogy.
Az előbbi okoskodáshoz hasonlóan kaphatjuk a következőt:
dPk(t)dt=λk-1Pk-1(t)-(λk+μk)Pk(t)+μk+1Pk+1(t)(k1).(2)
Innen úgy lehetne továbblépni, hogy megoldanánk az (1)(2) ún. differenciálegyenlet-rendszert, azaz keresnénk olyan t-változós P0(t), P1(t), ..., Pk(t), ... függvényeket, amelyek kielégítik a deriváltakra vonatkozó egyenleteket. Ne ijedjen meg senki, ezt nem fogjuk megtenni, csak egy speciális, ám igen tanulságos esetben.
Legyen μk=0 és λk=λ minden k-ra, azaz tekintsük az állandó intenzitású tiszta születési folyamatot. Ekkor a differenciálegyenletek:
dP0(t)dt=-λP0(t),(3)dPk(t)dt=λPk-1(t)-λPk(t)(k1).(4)
Tegyük fel, hogy ,,a rendszer a 0-ból indul'':
Pk(0)={1,ha  k=00,ha  k0.
Ekkor (3)-ból következik, hogy P0(t)=e-λt, és ezt behelyettesítve (4)-be k=1 esetén P1(t)=λte-λt (ezt könnyen lehet ellenőrizni deriválással). Tovább helyettesítve nagyobb k-ra: Pk(t)=(λt)kk!e-λt. Ez egy nevezetes eloszlás, az ún. λt-paraméterű Poisson-eloszlás, és a folyamat neve λ-paraméterű Poisson-folyamat. Könnyen kiszámolhatja az olvasó, hogy egy λ-paraméterű Poisson-folyamat esetén annak a valószínűsége, hogy a populáció nagysága h ideig nem változik, e-λh. Ennek az eloszlásnak is van neve, ez az exponenciális eloszlás. Az exponenciális eloszlás az egyik leggyakrabban előforduló folytonos eloszlás, definíciója a következő:
 
Definíció. Legyen x egy úgynevezett valószínűségi változó, amelynek lehetséges értékei a nemnegatív valós számok. Az eloszlása λ-exponenciális, ha annak a valószínűsége, hogy x legalább t, megegyezik e-λt-vel, azaz P(xt)=e-λt, ahol természetesen t0.
 

Egy λ-exponenciális eloszlású valószínűségi változó várható értéke 1/λ, azaz egy állandó intenzitású tiszta születési folyamat esetében átlagosan 1/λ hosszúságú időközönként történik egy születés. Azt is be lehet látni, hogy a Poisson-folyamatok és az exponenciális változatlansági idők közötti kapcsolat kölcsönös: ha exponenciális eloszlású időközönként növekszik eggyel a populáció nagysága, akkor az egy Poisson-folyamat lesz.
Az elefántfarm eseténél azt kérdeztük, hogy mi lesz az elefántok számának eloszlása elég hosszú idő múlva. Ez azért természetes, mert míg az elején nagyon ingadozhat a létszám, joggal várhatjuk, hogy egy idő után a populáció beáll egy stabil állapotba, a kezdeti hullámzások kisimulnak. Természetesen a stabil állapotot nem úgy kell érteni, hogy mindig ugyanannyi elefántunk lesz, hanem hogy az eloszlás nem változik már az idővel, ún. stacionárius eloszlás lesz. Tehát azt kérdezzük, hogy létezik-e, és ha igen, akkor mennyi a következő határérték:
pk=limtPk(t)k=0,1,...
Szerencsére a mi esetünkben létezik ez a határérték, és meg is tudjuk határozni. Tekintsük az (1)(2) differenciálegyenletrendszert, és tartsunk t-vel a végtelenbe. Ekkor a deriváltak 0-hoz tartanak, mert pk nem függ t-től, tehát az egyenletek így alakulnak:
0=-λ0p0+μ1p1,(5)0=λk-1pk-1-(λk+μk)pk+μk+1pk+1(k1).(6)
A (6)-ot átrendezve:
-λk-1pk-1+μkpk=-λkpk+μk+1pk+1(k1).(7)
Az (5)-öt és (7)-et egybevetve, azonnal következik, hogy
λk-1pk-1=μkpk(k0).(7a)
Ebből pedig rekurzióval
pk=λk-1μkpk-1=λk-1μkλk-2μk-1pk-2=p0i=0k-1λiμi+1.(8)
Ha pedig tudjuk azt is, hogy a {pk,k0} mennyiségek eloszlást alkotnak, vagyis k=0pk=1, akkor meg tudjuk határozni p0-t, és így a pk-kat is.
 
 
3. A teljesen exponenciális tömegkiszolgálási rendszer
 
 

Teljesen exponenciális tömegkiszolgálási rendszer alatt a következőt értjük: a beérkezési időközök eloszlása λ-exponenciális, a kiszolgálási idő eloszlása pedig μ-exponenciális. Vagyis A(t)=1-e-λt, B(x)=1-e-μx. Ez azt is jelenti, hogy átlagosan 1/λ hosszúságú időközönként érkeznek be az igények, és ha van kit kiszolgálni, akkor átlagosan 1/μ hosszúságú időközönként távoznak.
Nézzük, hogyan változik a rendszerben lévő igények száma. Feltehetjük, hogy kezdetben egy igény sincs, ez nem változtat a lényegen, de a szemléletünknek sokkal kedvezőbb. Amikor beérkezik egy igény ‐ ez λ-exponenciális eloszlású időközönként történik ‐, akkor a rendszerben lévő igények száma 1-gyel nő; amikor egy igényt kiszolgálnak, és távozik ‐ ez az első kiszolgálás kezdete után, amíg van kit kiszolgálni, μ-exponenciális időközönként történik ‐, akkor 1-gyel csökken. Az, hogy egyszerre két igény jelenjen meg, vagy ugyanakkor jelenjen meg egy igény, amikor egy másikat éppen kiszolgáltak, elhanyagolható valószínűségű. Be lehet tehát látni, hogy a rendszerben lévő igények száma születési-halálozási folyamatot követ. Ha egy kiszolgáló van, és nincs korlátozva a sorhossz, akkor a a folyamat paraméterei a következők: λk=λ (k=0, 1, 2, ...), μk=μ (k=1, 2, ...).
Vagyis az előző részben kifejtettek alapján a rendszerben lévő igények számának stacionárius eloszlása:
pk=p0(λμ)k=p0ϱk,
ha bevezetjük a ϱ=λ/μ jelölést. Ez a mennyiség olyan fontos szerepet játszik a tömegkiszolgálási rendszerek vizsgálatában, hogy külön nevet adtak neki: a rendszer terhelése. Be lehet látni, hogy a pk-k akkor és csak akkor alkotnak tényleg eloszlást (vagyis akkor teljesül, hogy az összegük 1), ha ϱ<1. Ez részben eléggé kézenfekvő, mert ha ϱ>1, azaz λ>μ, a rendszerbe nagyobb intenzitással érkeznek az igények, mint ahogy kiszolgálják őket, akkor egyre több és több várakozó igény lesz, a sor hossza egyre nagyobb lesz, nem alakul ki stacionárius eloszlás. Tegyük ezért fel, hogy a rendszer terhelése kisebb, mint 1. Ekkor egy végtelen mértani sor összegzésével ki tudjuk számolni p0-t:
1=k=0pk=p0k=0ϱk=p011-ϱ,
azaz p0=1-ϱ, és így pk=(1-ϱ)ϱk.
Ezek segítségével ki tudjuk számolni például a rendszerben tartózkodó igények várható értékét:
N¯=k=0kpk=(1-ϱ)k=0kϱk.
A végtelen sorok összegképletével könnyen kiszámolható, hogy N¯=ϱ1-ϱ.
Ha ϱ=1, az azt jelenti, hogy a rendszer kapacitása teljesen ki van használva, a beérkezések és a távozások egyensúlyban vannak. Azt várnánk tehát, hogy ha egyre jobban közelítünk alulról ϱ-val 1-hez (de persze nem érjük el, mert akkor nem létezne már a stacionárius eloszlás), akkor egyre hatékonyabb lesz a rendszer. Ez azonban nem így van, mert ilyenkor N¯ a végtelenbe tart, vagyis egyre hosszabb időt kell eltöltenie egy igénynek a rendszerben. Ez azért van így, mert a véletlen ingadozás miatt a forgalom időnként nagyon megugorhat, és a feszített kiszolgálás már nem tudja ezt ledolgozni.
Most nézzünk példákat olyan teljesen exponenciális rendszerekre, ahol az alapesettől eltérően K<, illetve n>1 (azaz 1-nél több kiszolgáló van, és a sor hossza korlátozott).
 
 
 
1. példa
 
 
 

Képzeljünk el egy telefonközpontot, ahol n vonal, vagyis kiszolgáló egység van, és nincs várakozás, azaz elutasításos a rendszer. Így a rendszerben tartózkodó igények száma 0, 1, 2, ..., n lehet, és természetesen születési-halálozási folyamatot követ. A születési (beérkezési) intenzitás nem függ a kiszolgálástól, tehát λ0=λ1==λn=λ és λk=0 ha k>n; a halálozási (távozási) intenzitás pedig annál nagyobb, minél több kiszolgálás folyik, ez pedig megegyezik avval, ahányan a rendszerben vannak, tehát μk=kμ ha k=1, 2, ..., n és μk=0, ha k>n. A stacionárius eloszlás (amely ebben az esetben mindig létezik, nem csak ϱ<1 esetén, mert ilyenkor k=0pk véges összeg):
pk=λkk!μkp0=ϱkk!p0.
Eszerint
p0=1k=0nϱkk! és pk=ϱkk!k=0nϱkk!k=1,2,...,n.
A pn-nek külön jelentősége van, ez a visszautasítás valószínűsége, vagyis azé, hogy nem ad vonalat a központ.
pn=ϱnn!k=0nϱkk!.
Tegyük fel, hogy egy egészen kicsi központunk van 4 vonallal (n=4). Percenként 3 hívás érkezik (λ=3), és egy beszélgetés hossza átlagosan 2 perc (1/μ=2, azaz μ=0,5). Ekkor a visszautasítás valószínűsége:
p4=644!k=046kk!0,47 és p0=1k=046kk!0,009,
vagyis az esetek kb. felében a központ nem ad vonalat, az pedig, hogy éppen senki nem telefonál, szinte soha nem fordul elő. Egy telefontársaság számára érdekes kérdés lehet, hogy ha növeljük a vonalak számát, akkor mennyire javul a központ teljesítménye, és ez milyen arányban van a plusz vonalak telepítési költségével. Ilyen problémát vizsgálunk a következő példában.
 
 
 
2. példa
 
 
 

Nézzünk egy autószervízt, ahol n szerelő dolgozik (ők a kiszolgáló egységek), és a garázson kívül, a szervíz udvarán m autó várakozhat (K=m). Ekkor a rendszerben 0, 1, 2, ..., n+m igény lehet, a beérkezési, illetve távozási paraméterek pedig λk=λ, ha k=0, 1, ..., n+m, λk=0 különben; μk=kμ, ha k=1, 2, ..., n; μk=nμ, ha k=n+1, ..., n+m és μk=0 különben. A stacionárius eloszlás:
pk=ϱkk!k=0nϱkk!+ϱnn!s=1m(ϱn)sk=0,1,...,n
és
pn+s=ϱnn!(ϱn)sk=0nϱkk!+ϱnn!s=1m(ϱn)ss=1,2,...,m.
Ha például kétóránként érkezik egy autó (λ=0,5), az átlagos javítási idő szintén két óra (μ=0,5), egy szerelő van (n=1), és 3 hely az udvaron (m=3), akkor annak a valószínűsége, hogy egy javításra hozott autót el kell utasítani, illetve annak, hogy a szerelőnek nincs munkája:
p4=0,2, illetve p0=0,2,
vagyis minden ötödik autót el kell utasítani. A főnök ezt soknak tartja, ezért felvesz egy másik szerelőt is. Nézzük, hogyan változnak akkor a valószínűségek:
p50,021ésp00,34.
Azaz ilyenkor már csak minden ötvenedik autót kell elutasítani, cserébe viszont a szerelők az idejük harmadában nem dolgoznak.
Az eddigiekkel talán be tudtuk mutatni, hogy milyen egyszerűbb alkalmazásai lehetnek a sorbanállás elméletének. Természetesen ennél jóval bonyolultabb rendszerek is léteznek. Aki mélyebb részletekre kíváncsi, az olvassa el L. Kleinrock Sorbanállás, kiszolgálás (Bevezetés a tömegkiszolgálási rendszerek elméletébe) című könyvét (megjelent a Műszaki Kiadónál 1979-ben).
Kotnyek Balázs

**