A GPSS programozási nyelv

A GPSS elemei

A GPSS digitális szimulációs nyelv. Fő alkalmazási területe a véletlenszerű tömegjelenségek köre. A rendszer dinamikáját az események diszkrét szimulálásával követi. A szimulált idő mindig a rendszer állapotváltozásainak pillanataira ugrik: a rendszer statikus állásai a szimuláció során kimaradnak. (Az elv nem új: a filmvetítés is önálló képek gyors egymásutánja, mégis mozgó kép áll össze.)

Mindezt a GPSS különböző alkotóelemei segítik elő, és teszik a legszélesebb körű alkalmazások számára kényelmessé. A rendszer elemeit két csoportra osztjuk: állandókra és ideiglenesekre (ez utóbbiak lesznek a tranzakciók). Mindkét típusba tartozó elemek rendelkeznek attribútumokkal (közvetlenül hozzájuk tartozó tulajdonságokkal). Ezek az attribútumok állandó elemek esetén lehetnek numerikusak (pl. egy raktár maximális tartalma, átlagos kihasználtsága, rendelkezésre álló kapacitása), vagy logikaiak (pl. a raktár tele van-e vagy üres); ideiglenes elemek esetén pedig lehetnek automatikusak (pl. a blokk elhagyásának ideje mint esemény), vagy programozottak (pl. a tranzakciók paraméterei vagy prioritása). A rendszerben levő kapcsolatokat az állandó és ideiglenes elemek találkozása, vagy más logikai feltételek bekövetkezése jelenti. Ezeket a GPSS blokkjai hozzák létre. Az események egymásutániságát a blokkok megfelelő sorrendisége, tehát a program biztosítja.

Állandó elemek

Az állandó elemek nagymértékben specializáltak, és bár csak hat típusuk van, a gyakorlatban ez teljesen elegendő. Az alábbiakban felsoroljuk ezek nevét, feladatát, a közöttük és a tranzakciók közötti kapcsolatot létrehozó blokkokat.

Név Blokkok Feladat
Kiszolgálóegység
(facility)
SEIZE
RELEASE
PREEMPT
RETURN
GATE
Egy időben csak egy tranzakciót tud fogadni; pl. benzinkút, pénztár, szerszámgép, telefonkészülék, útkereszteződés, vasúti pályaszakasz, tudakozó, leszállópálya, fodrászszék, stb.
Raktár
(storage)
ENTER
LEAVE
GATE
Egyszerre több ideiglenes elemmel tud kapcsolatot létesíteni, jellemző mutatója a kapacitás, amelyet a felhasználó ad meg; pl. rendező-pályaudvar, parkolóhely, számítógépben puffer-tár, áruház polcai, raktárak, szállodák és színházak helyei, stb.
Logikai kapcsoló
(logic switch)
LOGIC
GATE
Jelzés, amelynek állása S (Set: be) vagy R (Reset: ki) lehet; pl. közlekedési lámpa állása, vasúti szemafor, alrendszerek működésének leállítása vagy elindítása, meglét vagy hiány.
Sorstatisztika
(queue)
QUEUE
DEPART
Statisztikákat készítő elem, amely a rendszer egyes helyein kialakuló sorokban való késlekedést figyeli, a sorbaállások jellemző értékeit rögzíti; pl. a fent felsorolt kiszolgálóegységek, raktárak, vagy logikai kapcsolók előtt kialakuló sor-statisztikák.
Felhasználói lista
(user chain)
LINK
UNLINK
A felhasználó igénye szerint befolyásolja az ideiglenes elemek modellen belüli mozgását: kivonja ezeket a forgalomból, visszahelyezi őket egy másik pontra, stb.
Csoport
(group)
JOIN
REMOVE
EXAMINE
SCAN
ALTER
Az ideiglenes elemek bizonyos szempontok szerinti csoportosítása, de ez a csoportosítás vonatkozhat különböző attribútumok értékeire (számokra) is. A csoport tagjai aztán együttesen is, vagy külön-külön is kezelhetők. Pl. egy térség fiókjai; vásárlók, akik kenyeret is vettek; áruk, amelyek beleesnek az árleszállításba; kivett szállodai szobák, stb.

Ideiglenes elemek

A GPSS-ben a rendszer ideiglenes elemei a tranzakciók. Mozgásukat a rendszerben a blokkok határozzák meg. A tranzakciók a rendszeren belül:

Események

Ahogy a tranzakciók a blokkokon keresztül haladnak, állandóan változik a rendszer állapota Az állapotváltozásokat az események okozzák, az eseményeket pedig az előbb felsorolt blokkok működése jelenti. Az időbeli sorrendiséget, a tranzakciók mozgatását a GPSS két listával végzi Ezek: a jelenbeni események és a jövőbeni események listája.

A jelenbeni események közé azok a tranzakciók tartoznak, amelyekkel kapcsolatban aktuális valamely esemény bekövetkezése (pl. egy készülék lefoglalása, kilépés egy raktárból, stb.). Az esemény bekövetkezésének ideje mindig az egyes tranzakciók BDT-jében (Block Departure Time a blokk elhagyásának ideje) található. A GPSS szimulált órája, amely a szimuláció során eltel szimulált óraidőt méri, ilyenkor mindig nagyobb, vagy egyenlő a BDT-vel, mivel az eseménynek most kell bekövetkeznie, vagy már korábban le kellett volna zajlania (a késés oka pl. az lehet hogy egy kiszolgálóegységet nem lehet lefoglalni).

A jövőbeni események között tartózkodó tranzakció BDT-je mindig nagyobb a szimulált óra idő pillanatnyi állásánál. Ezek a tranzakciók ilyenkor még nyugalomban várakoznak: velük valamely esemény csak később fog bekövetkezni.

Vannak események, amelyek pillanatnyinak tekinthetők (pl. a tranzakciót átirányítják egy másik folyamatba, a tranzakció elsőbbséget kap, stb.): ezek nem érintik a BDT-t, így a tranzakció a jelenbeni események között marad, és további blokkokba léphet át. Más események lezajlás időt vesz igénybe (pl. a munkadarabot meg kell munkálni, a kiszolgálást végig kell várni, stb.) ilyenkor megváltozik a BDT, és a tranzakció a jelenbeni események közül átkerül a jövőbeni események közé, hogy csak akkor léphessen újra tovább a rendszerben, amikor vele kapcsolatban már befejeződött az előbbi esemény.

A jelenbeni események tranzakcióinak továbbítását a pillanatnyi eseményeken keresztül mindaddig, míg egy tartósabb esemény miatt megállni nem kényszerülnek, a GPSS általános állapot rendezésnek nevezett része intézi. Ugyanennek feladata az összes jelenbeni esemény lezajlása után egy ugrással áttérni arra az időpontra, amikor a jövőben legkorábban bekövetkező eseményre kerül sor. Ez ekkor jelenbeni eseménnyé válik, amelynek feldolgozása addig tart, míg újra valami hosszabb ideig tartó esemény nem történik vele.

Blokkok

A GPSS, mint már említettük, a modellek blokkdiagramos formájára orientált szimulációs nyelv. Ez egyrészt azt jelenti, hogy a modell elemei a programban blokkoknak felelnek meg, másrészt azt, hogy a modellben az összes változást blokkok hozzák létre. Ezek állítják be a különböző állapotokat, hozzák létre a kapcsolatot a tranzakciókkal, az állandó elemekkel és a matematikai lehetőségekkel. A blokkokat a következő feladatok szerint csoportosíthatjuk:

Matematikai lehetőségek

A modell bemenetében, kimenetében, és nem utolsó sorban működésében a különböző eseményeket, kapcsolatokat, vagy a paramétereket matematikai (analitikus), vagy statisztikai (véletlenszerű) összefüggések írhatják le, vagy adhatják meg. Ezeket a lehetőségeket valósíthatják meg a GPSS számítási alkotóelemei. Ezekkel a tranzakciók blokkokon keresztül tudnak kapcsolatot teremteni, ugyanakkor ezeket a programozó a modell felé utasításokkal definiálhatja.

Név Blokkok Feladat
Értékőrző
(savevalue)
SAVEVALUE
MSAVEVALUE
INITIAL
MATRIX
A modell tetszőleges jellemzőinek kimentésére későbbi felhasználás céljából.
Változó
(variable)
VARIABLE
FVARIABLE
BVARIABLE
Aritmetikai és logikai összefüggések, kapcsolatok megadására.
Függvény
(function)
FUNCTION Analitikusan nem megadható, véletlenszerű, vagy valószínűségi összefüggések számára.
Gyakoriság táblázat
(distribution table)
TABULATE
TABLE
QTABLE
Statisztikai kimutatások előállítására.

Programozási segédeszközök

A programozás technikájának, a modell megvalósítási lehetőségeinek kibővítését szolgálja néhány blokk és az utasítások döntő többsége. Ezek feladat szerinti csoportosítása: