Egy üzemben három új gépet állítanak be. Ezek ugyanazokon a munkadarabokon három egymást követő feldolgozást hajtanak végre. A tevékenységek egymáshoz szorosan nem kapcsolódnak, így várható, hogy a munkadarabok az egyes gépek között várakozni fognak. Milyen sorbanállási viszonyok alakulnak ki? Mennyire lesznek az egyes gépek kihasználva? Hány percig fog tartani a munkadarabok feldolgozása a gépsoron? Ilyen, és ehhez hasonló kérdésekre várjuk a feleletet.
Korábbi tapasztalatokból ismerjük, hogy a munkadarabok a gépsorhoz várhatólag 60..160 min időközökben, jó közelítéssel egyenletes eloszlásban érkeznek. Háromféle munkadarab van: a), b), és c) típus. Ezeket az 1. és a 3. gép azonosan, a 2. gép viszont fajtájuknak megfelelően dolgozza fel. A munkadarabok típusok szerint össze-vissza érkeznek, de átlagosan egyötödük b), 50%-uk pedig c) típusú. A gyári prospektusokból ismerjük a gépek teljesítőképességét:
Gépek | Feldolgozási idő |
1. | 70 min. |
2. | Munkadarabtól függően: a) típus: 20 min, b) típus: 80 min, c) típus:120 min. |
3. | Egyedi beállításoktól függően 30..90 min. |
A modellben a három gépet egy-egy kiszolgálóegység testesíti meg. Ezeket a GEP1, GEP2, GEP3 szimbólumokkal látjuk el. Mindegyik előtt sorstatisztikát mérünk ki (SOR1, SOR2, SOR3). A munkadarabok típusonkénti eloszlását egy lépcsős függvénnyel (ELOSZ) szimuláljuk. A munkadarabok áthaladásának idejét az 1-es gyakorisági táblázattal figyeljük. Mivel a gépek csatlakozása soros, így a modell sem túl bonyolult. A szimulációt 1000 munkadarabra végezzük el.
BLOCK | CARD | ||||
NUMBER | *LOC | OPERATION | A,B,C,D,E,F,G | COMMENTS | NUMBER |
SIMULATE | 1 | ||||
2 | |||||
1 | GENERATE | 110,50 | Munkadarabok erkezese | 3 | |
2 | QUEUE | SOR1 | Sorbanallas az 1. gep elott | 4 | |
3 | SEIZE | GEP1 | A gep lefoglalasa | 5 | |
4 | DEPART | SOR1 | Kilepes a sorbanallasbol | 6 | |
5 | ADVANCE | 70 | A feldolg. 70 percig tart | 7 | |
6 | RELEASE | GEP1 | tavozas a geprol | 8 | |
* | 9 | ||||
7 | QUEUE | SOR2 | 10 | ||
8 | SEIZE | GEP2 | 11 | ||
9 | DEPART | SOR2 | 12 | ||
10 | ADVANCE | FN$ELOSZ | a feldolg. idejet az 1. fuggveny | 13 | |
11 | RELEASE | GEP2 | hatarozza meg | 14 | |
* | 15 | ||||
12 | QUEUE | SOR3 | 16 | ||
13 | SEIZE | GEP3 | 17 | ||
14 | DEPART | SOR3 | 18 | ||
15 | ADVANCE | 60,30 | a feldolg. ideje a 30..90 inter- | 19 | |
16 | RELEASE | GEP3 | vallumban veletlenszeru | 20 | |
17 | TABULATE | 1 | a futasi ido tablazasa | 21 | |
18 | TERMINATE | 1 | a munkadarab kilep a modellbol | 22 | |
* | 23 | ||||
1 | TABLE | M1,100,25,20 | 24 | ||
ELOSZ | FUNCTION | RN1,D3 | 25 | ||
0.3,20/0.5,80/1.,120 | 26 | ||||
* | 27 | ||||
START | 1000 | a modellen vegigfuto tranzakciok | 28 | ||
END | szama = 1000 | 29 |
RELATIVE CLOCK | 109545 | ABSOLUTE CLOCK | 109545 |
BLOCK COUNTS
BLOCK | CURRENT | TOTAL | BLOCK | CURRENT | TOTAL |
1 | 0 | 1002 | 11 | 0 | 1001 |
2 | 0 | 1002 | 12 | 1 | 1000 |
3 | 0 | 1002 | 13 | 0 | 1000 |
4 | 0 | 1002 | 14 | 0 | 1000 |
5 | 0 | 1002 | 15 | 0 | 1000 |
6 | 0 | 1002 | 16 | 0 | 1000 |
7 | 0 | 1002 | 17 | 0 | 1000 |
8 | 0 | 1002 | 18 | 0 | 1000 |
9 | 0 | 1002 | |||
10 | 1 | 1001 |
FACILITY | AVERAGE UTILIZATION |
NUMBER ENTRIES |
AVERAGE TIME/TRANS |
SEIZING TRANS. NO. |
PREEMPTING TRANS. NO. |
GEP1 | .640 | 1002 | 70.000 | ||
GEP2 | .744 | 1002 | 81.297 | 12 | |
GEP3 | .545 | 1000 | 59.668 |
QUEUE | MAXIMUM CONTENTS |
AVERAGE CONTENTS |
TOTAL ENTRIES |
ZERO ENTRIES |
PERCENT ZEROS |
AVERAGE TIME/TRANS |
SAVERAGE TIME/TRANS |
SOR1 | 1 | .005 | 1002 | 903 | 90.11 | .543 | 5.495 |
SOR2 | 5 | .274 | 1002 | 531 | 52.99 | 29.966 | 63.749 |
SOR3 | 3 | .090 | 1001 | 725 | 72.42 | 9.891 | 35.783 |
TABLE 1
ENTRIES IN TABLE | MEAN ARGUMENT | STANDARD DEVIATION | SUM OF ARGUMENTS |
1000 | 251.414 | 73.937 | 251414.000 |
UPPER LIMIT |
OBSERVED FREQUENCY |
PERCENT OF TOTAL |
CUMULATIVE PERCENTAGE |
CUMULATIVE REMAINDER |
MULTIPLE OF MEAN |
DEVIATION FROM MEAN |
100 | 0 | .00 | .0 | 100.0 | .398 | -2.047 |
125 | 1 | .10 | .1 | 99.9 | .497 | -1.709 |
150 | 46 | 4.60 | 4.7 | 95.3 | .597 | -1.371 |
175 | 57 | 5.70 | 10.4 | 89.6 | .696 | -1.033 |
200 | 106 | 10.60 | 21.0 | 79.0 | .796 | -.695 |
225 | 127 | 12.70 | 33.7 | 66.3 | .895 | -.357 |
250 | 222 | 22.20 | 55.9 | 44.1 | .994 | -.019 |
275 | 200 | 20.00 | 75.9 | 24.1 | 1.094 | .319 |
300 | 96 | 9.60 | 85.5 | 14.5 | 1.193 | .657 |
325 | 45 | 4.50 | 90.0 | 10.0 | 1.293 | .995 |
350 | 28 | 2.80 | 92.8 | 7.2 | 1.392 | 1.333 |
375 | 19 | 1.90 | 94.7 | 5.3 | 1.492 | 1.671 |
400 | 7 | .70 | 95.4 | 4.6 | 1.591 | 2.009 |
425 | 7. | .70 | 96.1 | 3.9 | 1.690 | 2.347 |
450 | 10 | 1.00 | 97.1 | 2.9 | 1.790 | 2.685 |
475 | 9 | .90 | 98.0 | 2.0 | 1.889 | 3.024 |
500 | 7 | .70 | 98.7 | 1.3 | 1.989 | 3.362 |
525 | 2 | .20 | 99.2 | .8 | 2.188 | 4.038 |
550 | 2 | .20 | 99.2 | .8 | 2.188 | 4.038 |
OVERFLOW | 8 | .80 | 100.0 | .0 |
AVERAGE VALUE OF OVERFLOW 577.87
Az eredmények kiértékelése.Első végignézésre valószínűsíthetjük,
hogy a modell jól futott le (pl. a hibajelzések hiányából,
a teljes blokkszámlálók értékeiből,
stb.). Az eredményeket nézve megállapítható,
hogy a három gép átlagos kihasználtsága
közel azonos, bár kissé alacsony, de egyik sincs a többihez
képest jobban megterhelve. Talán csak a 3. gépnek
(54,5 %) vannak még nagyobb mértékű kihasználatlan
tartalékai (ha nem túlságosan speciális célgép,
akkor más forrásból származó munkadarabokat
is fel lehetne itt dolgoztatni). Vannak további kihasználatlan
tartalékok is, következésképpen az egész
gépsor nagyobb terhelést is elbírna.
A sorstatisztikákat vizsgálva feltűnő a nulla
késleltetésű tranzakciók nagy aránya.
Ez jó vagy közepes gépleterheltségeket tekintve
inkább a jó ütemezésnek, a gépek harmonikus
kapcsolódásának köszönhető. Érdemes
lenne nagyobb leterheltség (a munkadarabok sűrűbb érkezése)
mellet is megvizsgálni a sorbanállási viszonyokat.
A 2. gép előtt kialakuló sor a leghosszabb (itt az
átlagos várakozás 30 perc is lehet), de ez az esetenkénti
hosszú feldolgozással magyarázható. A 3. sorstatisztika
furcsasága a kicsi átlagos hossz (0,09 munkadarab) és
az ehhez képest nagy maximális hossz (3 munkadarab): ennek
oka a második gépről lekerülő munkadarabok
rendszertelensége lehet.
A gyakorisági táblázat megadja, hogy az átfutási
idő átlagosan kb. 250 min. Az átfutási idő
eloszlása azonban széthúzódik, ha nem is túlságosan
(a szórás 74 min). Látható, hogy a minimális
idő közelében csak 1 tranzakció futott, míg a maximális
idő akár a 600 min-t is elérheti. A esetek kétharmadában
viszont az átfutási idő 200..300 perc között
maradt.
Következtetések. A gépsor beállítása teljesítményben bírni fogja a leterhelést, sőt még kapacitásfeleslegek is mutatkozni fognak. Célszerű lenne még más leterhelési variánsokat is szimulálni.
Programozási változatok. Ugyanezt a modellt még két másik programváltozatban is bemutatjuk. Az első a sorstatisztikát felhasználói listákkal helyettesíti, és a gépek kezelését ciklusban, indirekt címzéssel intézi. A másik a makrók alkalmazásával rövidíti le a programot.
BLOCK | CARD | ||||
NUMBER | *LOC | OPERATION | A,B,C,D,E,F,G | COMMENTS | NUMBER |
SIMULATE | 1 | ||||
* | 2 | ||||
1 | GENERATE | 110,50 | 3 | ||
2 | ASSIGN | 7,3 | ciklusszamlalo | 4 | |
3 | CIKL | ASSIGN | 1+,1 | feld. hely es sa. sorszama | 5 |
4 | ASSIGN | 3,FN2 | Feldolgozasi ido | 6 | |
5 | LINK | *1,P3,FELD | Felvitel a felhasznaloi listaba a | 7 | |
* | Feldolg. ido szerint | 8 | |||
6 | FELD | SEIZE | *1 | 9 | |
7 | ADVANCE | *3 | 10 | ||
l8 | RELEASE | *1 | Felszabaditja a feld. helyet | 11 | |
9 | UNLINK | *1,FELD,1 | Tavozik a felhasznaloi listabol | 12 | |
* | 13 | ||||
10 | LOOP | 7,CIKL | a ciklus vege | 14 | |
11 | TABULATE | 1 | 15 | ||
12 | TERMINATE | 1 | 16 | ||
* | 17 | ||||
1 | TABLE | M1,100,25,20 | 18 | ||
ELOSZ | FUNCTION | RN1,D3 | 19 | ||
0.3,20/0.5,80/1.,120 | 20 | ||||
2 | FUNCTION | P1,M3 | 21 | ||
V2/FN$ELOSZ/FN3 | 22 | ||||
3 | FUNCTION | RN2,C2 | 23 | ||
0,30/1,91 | 24 | ||||
2 | VARIABLELE | 70 | 25 | ||
* | 26 | ||||
START | 1000 | 27 | |||
END | 28 |
BLOCK | CARD | ||||
NUMBER | *LOC | OPERATION | A,B,C,D,E,F,G | COMMENTS | NUMBER |
SIMULATE | 1 | ||||
* | 2 | ||||
FELD | STARTMACRO | a ’feld’ makro egy gep lefoglalasat | 3 | ||
QUEUE | #A | es az elotte levo sorbanallast | 4 | ||
SEIZE | #B | allitja ossze | 5 | ||
DEPART | #A | 6 | |||
ADVANCE | #C,#D | 7 | |||
RELEASE | #B | 8 | |||
ENDMACRO | 9 | ||||
* | 10 | ||||
1 | GENERATE | 110,50 | 11 | ||
FELD | MACRO | SOR1,GEP1,70,0 | 12 | ||
FELD | MACRO | SOR2,GEP2,FN$ELOSZ,0 | 13 | ||
FELD | MACRO | SOR3,GEP3,60,30 | 14 | ||
17 | TABULATE | 1 | 15 | ||
18 | TERMINATE | 1 | 16 | ||
* | 17 | ||||
1 | TABLE | M1,100,25,20 | 18 | ||
ELOSZ | FUNCTION | RN1,D3 | 19 | ||
0.3,20/0.5,80/1.,120 | 20 | ||||
* | 21 | ||||
START | 1000 | 22 | |||
END | 23 |
Egy kisebb útkereszteződésben közlekedési lámpát szerelnek fel. Milyen időközönként váltson a lámpa, hogy minél jobb legyen az áteresztő-képesség, rövidebbek a várakozási sorok?
Forgalomszámlálási adatokból ismerjük, hogy az útkereszteződéshez közeledő autók exponenciális eloszlás szerint érkeznek. Érkezésük várható időköze: az első utcánál északi irányból 30 s, déli irányból 37 s; a második utcánál keleti irányból 12 s, nyugati irányból 10 s.
A kereszteződésen egy autó átlagosan 3 s alatt
halad át (figyelembe véve a felgyorsulást és
a követési távolságot is).
A lámpák váltásának ciklusát
kb.100..120 s-osra tervezzük!
A modellt négy, viszonylag független alrendszerre bontjuk: a két utca forgalmára, a lámpák váltására, és az idő figyelésére. A szimulációt 10 h időtartamra végezzük. Ezt megelőzi egy egyórás bevezető futás, hogy a szimuláció ne üres utcákkal, ne egy kitüntetett lámpaállással kezdődjön, hanem már közelítően stacioner állapotban.
Az egyes utcák szimulációjánál csak a legforgalmasabb irányt vesszük figyelembe. Az autók az útkereszteződésen csak akkor haladhatnak át, ha a lámpa zöldet mutat, és az előző kocsi már elhagyta a kereszteződést. Ha e feltételek valamelyike nem teljesül, az autó a sorstatisztikában (AUTO1 vagy AUTO2) várakozni kényszerül. A kocsik egymás utáni áthaladásakor a sorstatisztika előremozdítását programozni nem kell, ez automatikus.
A lámpa váltásának szimulálásához egy állandóan körben futó tranzakciót használunk fel. Ez nemcsak a lámpa állását változtatgatja (1. utcának zöldet az S, pirosat az R állás jelent; a 2. utcára értelemszerűen a fordítottja érvényes), hanem a kereszteződést is lefoglalja a keresztező irányokban (vagy akár mindkét irányban). A modellben a sárga állást holtidőnek tekintjük.
A szimulációt a lámpa váltásának három változatával futtattuk le:
1. utcának zöld | 1. utcának piros |
30 s | 90 s |
40 s | 70 s |
50 s | 55 s |
Ehhez felhasználtuk a blokkok újradefiniálásának lehetőségét.
BLOCK NUMBER | *LOC | OPEREATION | A,B,C,D,E,F,G | COMMENTS | CARD NUMBER |
SIMULATE | 1 | ||||
UNLIST | ABS | 2 | |||
* | 3 | ||||
* ÚTKERESZTEZŐDÉS SZIMULÁCIÓJA | 4 | ||||
* | 5 | ||||
EXP | FUNCTION | RN1,C24 | 6 | ||
.0,.0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/ | 7 | ||||
.8,1.6/.84,1.83/.88,2.12/.9,2.31/.92,2.52/.94,2.81/.95,2.99/.96,3.2/ | 8 | ||||
.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9999,8 | 9 | ||||
* | 10 | ||||
* kocsik az egyik irányból | 11 | ||||
* | 12 | ||||
1 | GENERATE | 30,FN$EXP | átlagos követési idő=30 sec | 13 | |
2 | QUEUE | AUTO1 | beállás a sorba | 14 | |
3 | SEIZE | UTCA1 | a sorból kilépni csak akkor lehet, | 15 | |
4 | GATE LS | LAMPA | ha 1./ a kereszteződésben nincs autó | 16 | |
5 | DEPART | AUTO1 | 2./a lámpa zöldet (s) mutat | 17 | |
6 | ADVANCE | 3 | 3 sec az áthaladási idő | 18 | |
7 | RELEASE | UTCA1 | 19 | ||
8 | TERMINATE | 20 | |||
* | 21 | ||||
* kocsik a másik irányból | 22 | ||||
* | 23 | ||||
9 | GENERATE | 10,FN$EXP | átlagos követési idő =10 sec | 24 | |
10 | QUEUE | AUTO2 | 25 | ||
11 | SEIZE | UTCA2 | 26 | ||
12 | GATE LR | LAMPA | a zöldet ebben az irányban ’r’ jelzi | 27 | |
13 | DEPART | AUTO2 | 28 | ||
14 | ADVANCE | 3 | 29 | ||
15 | RELEASE | UTCA2 | 30 | ||
16 | TERMINATE | 31 | |||
* | 32 | ||||
* a közlekedési lámpa állása | 33 | ||||
* | 34 | ||||
17 | GENERATE | 1,,,1,1 | a zöldnek egy lesz a prioritása | 35 | |
18 | SEIZE | UTCA1 | alapállapot, hogy az útkereszteződés | 36 | |
19 | SEIZE | UTCA2 | mindkét irányban foglalt | 37 | |
20 | LAMPA | LOGIC S | LAMPA | a lámpa zöldre vált az 1. irány felé | 38 |
21 | RELEASE | UTCA1 | 39 | ||
22 | ZOLD | ADVANCE | 30 | az 1. irányban 30 sec-ig zöld | 40 |
23 | LOGIC R | LAMPA | a lámpa pirosra vált az 1. irány felé | 41 | |
24 | SEIZE | UTCA1 | 42 | ||
25 | RELEASE | UTCA2 | az 1. irányban 90 sec-ig piros | 43 | |
26 | PIROS | ADVANCE | 90 | 44 | |
27 | SEIZE | UTCA2 | a lámpa újrakezdi a ciklust | 45 | |
28 | TRANSFER | ,LAMPA | 46 | ||
* | 47 | ||||
* segédóra a szimuláció időtartamához | 48 | ||||
* | 49 | ||||
29 | GENERATE | 3600 | a tranzakciók az órák múlását mutatják | 50 | |
30 | TERMINATE | 1 | 51 | ||
* | 52 | ||||
START | 1,NP | 1 órás bevezető futás | 53 | ||
RESET | 54 | ||||
START | 10 | a szimuláció időtartama 10 óra | 55 | ||
QUE | TITLE | ,AZ AUTOK VARAKOZASA A LAMPA ELOTT: | 56 | ||
SPACE | 1 | 57 | |||
QUE | INCLUDE | Q$UTCA1-Q$UTCA2/1,7,2 | 58 | ||
SPACE | 3 | 59 | |||
CLEAR | 60 | ||||
22 | ZOLD | ADVANCE | 40 | 61 | |
MULTIPLE DEFINITION OF SYMBOL IN ABOVE CARD | |||||
26 | PIROS | ADVANCE | 70 | 62 | |
MULTIPLE DEFINITION OF SYMBOL IN ABOVE CARD | |||||
START | 1,NP | 63 | |||
RESET | 64 | ||||
START | 10 | 65 | |||
QUE | TITLE | ,AZ AUTOK VARAKOZASA A LAMPA ELOTT: | 66 | ||
SPACE | 1 | 67 | |||
QUE | INCLUDE | Q$UTCA1-Q$UTCA2/1,7,2 | 68 | ||
SPACE | 3 | 69 | |||
CLEAR | 70 | ||||
22 | ZOLD | ADVANCE | 50 | 71 | |
MULTIPLE DEFINITION OF SYMBOL IN ABOVE CARD | |||||
26 | PIROS | ADVANCE | 55 | 72 | |
MULTIPLE DEFINITION OF SYMBOL IN ABOVE CARD | |||||
START | 1,NP | 73 | |||
RESET | 74 | ||||
START | 10 | 75 | |||
QUE | TITLE | ,AZ AUTOK VARAKOZASA A LAMPA ELOTT: | 76 | ||
SPACE | 1 | 77 | |||
INCLUDE | Q$UTCA1-Q$UTCA2/1,7,2 | 78 | |||
END | 79 |
BLOCK NUMBER | SYMBOL | REFERENCES BY CARD NUMBER |
20 | LAMPA | 28 |
26 | PIROS | |
22 | ZOLD |
FACILITY SYMBOLS | AND CORRESPONDING NUMBER |
1 | UTCA1 |
2 | UTCA2 |
QUEUE SYMBOLS | AND CORRESPONDING NUMBERS |
1 | AUTO1 |
2 | AUTO2 |
LOGIC SWITCH SYMBOLS | AND CORRESPONDING NUMBERS |
1 | LAMPA |
FUNCTION SYMBOLS | AND CORRESPONDING NUMBERS |
1 | EXP |
**** ASSEMBLY TIME = .17 MINUTES ****
AZ AUTOK VARAKOZASA A LAMPA ELOTT:
QUEUE | AVERAGE TIME/TRANS |
MAXIMUM CONTENTS |
AUTO1 | 38.683 | 10 |
AUTO2 | 6.716 | 10 |
AZ AUTOK VARAKOZASA A LAMPA ELOTT:
QUEUE | AVERAGE TIME/TRANS |
MAXIMUM CONTENTS |
AUTO1 | 25.148 | 7 |
AUTO2 | 11.716 | 11 |
AZ AUTOK VARAKOZASA A LAMPA ELOTT:
QUEUE | AVERAGE TIME/TRANS |
MAXIMUM CONTENTS |
AUTO1 | 16.212 | 7 |
AUTO2 | 18.458 | 13 |
***** TOTAL RUN TIME (INCLUDING ASSEMBLY) = .92 MINUTES *****
GPSS-kiíratás. A programlista (az abszolút kódolás kiíratását most az UNLIST blokkal letiltottuk), és a szimbólumtáblázat után jelennek meg a szerkesztett kiíratások. Itt most csak az autók kereszteződés előtti átlagos várakozási idejét, ill. a sorstatisztikák maximális hosszát kértük ki.
Az eredmények kiértékelése. Látható, hogy a lámpaváltások idejének változásával hogyan csökken, ill. válik egyenletesebbé a várakozások ideje. Ez nem véletlen. Több szimulációs futást kellett elvégezni (esetenként más és más időkkel, mindig ismerve az előzők eredményeit) ahhoz, hogy a korábbi eredményeket értékelve megállapíthassuk a csökkenés tendenciáját és az egyező várakozási idők feltételét. Itt már csak bizonyos eseteket gyűjtöttünk ki.
Figyelemre méltó, hogy a kocsik érkezési sűrűségével arányos váltási idők (30 s és 90 s) mennyire aszimmetrikus várakozási időket eredményeztek. Ugyanakkor azonban a sorstatisztikák maximális hossza azonos. Az átlagos várakozási idők közel azonos nagyságát ezzel szemben kb. azonos idejű lámpaváltások biztosítják, noha a 2. utcáról mintegy háromszor annyi kocsi érkezik, mint a másik utcából. Ez utóbbi különbség azonban úgy látszik, csak a várakozási sorok hosszában jelentkezik.
Következtetések. Céljainknak a közel azonos időközönként váltó közlekedési lámpa felel meg. Célszerű lenne azonban a továbbiakban megvizsgálni, hogy ha a ciklusidőt 100 s-nél kisebbnél választanánk, nem csökkenne-e le még jobban az átlagos várakozási idő. Megvizsgálható az is, hogy a 13 autóból álló (igaz, hogy maximális) várakozási sor nem túl hosszú-e, nem lóg-e bele valamely előző útkereszteződésbe (ennek elkerülésére vagy a lámpaváltásokat kellene felgyorsítani, vagy visszatérni aszimmetrikusabb várakozási időkhöz).