uvod gpss general purpose simulation system je bil razvit pri ibm instaliran je na vecini sistemov omogoca enostavne simulacije vseh vrst streznih sistemov in mrez gpss ima vgrajen program za izpis dolocenih statisticnih podatkov izkoriscenost streznika intenzivnost prometa povprecno stevilo cakajocih enot v vrsti delez enot ki jim ni treba cakati v vrsti povprecni strezni cas povprecni cas cakanja v vrsti itd to so v glavnem tudi podatki ki nas pri simulaciji najbolj zanimajo gpss lahko tvori zvezne in diskretne funkcije vsak diskretni sistem ki ga simuliramo v jeziku gpss predstavimo z blocnim diagramom v katerem bloki predstavljajo neke aktivnosti v gpss imamo vsega skupaj blokov vendar mi ne bomo obdelali prav vseh v modelih srecujemo staticne in dinamicne elemente dinamicni elementi so na primer programi zahteve po prenosih i o pomnilniske aktivnosti letala ki pristajajo na letalisc gostje ki prihajajo v gostilno staticni elementi so na primer cpu pomnilnik os pristajalne steze natakarice dinamicni elementi nasega modela se v gpss u imenujejo transakcije staticne komponente pa so predstavljene z bloki ki jih dejansko risemo in lahko pomenijo izvore transakcij domene transakcij prostor za cakanje transakcij prostor za spremembo poti transakcij same transakcije pa z blocnim diagramom ne moremo prikazati lahko si jo zamislimo da potuje med bloki ko zacnemo simulacijo ni se nobene transakcije v modelu gpss v tako simulacijo transakcije vstopajo v model v gotovih trenutkih odvisno od modela ki ga simuliramo kako dejansko poteka simulacija v gpss u vsak prehod transakcij iz enega bloka v drugega predstavlja nek dogodek ta dogodek je povezan z nekim casom ko se pac mora zgoditi gpss ima v ta namen dogodkovne verige najpomembnejsi sta verigi fec future event chain in cec current event chain simulacija se zacne z vkljucitvijo transakcije v verigo fec v verigo cec se transakcija vkljuci ko postane cas simulacije enak njenemu casu odhoda transakcije v verigi cec se skusajo premikati do modela dokler se le da dokler ne postane blokirana transakcije v verigi cec so urejene po sistemu fifo v verigi fec nastajajo transakcije preko bloka advance in generate zraven opisanih verig pa imamo se verigi uporabniska veriga in prekinjevalna veriga zaradi takega nacina simulacije je gpss postal zelo priljubljen ima pa se nekatere druge prednosti pred konkurencnimi simulatorji lahko se ga je nauciti saj ne potrebujemo nobenega predznanja o programiranju bolj kot v kateremkoli drugem jeziku je lahko poistovetenje elementov sistema in elementov programa uporabniku se ni treba muciti z definiranjem izpisa saj gpss sam poskrbi za vecino zanimivih statistik program v gpss u je najkrajsi v primerjavi z drugimi jeziki slabosti gpss a simulacijski cas je vecji kot pri drugih saj ne obstaja objektni program ampak je gpss samo interpreter za os celo obstaja prevajalnik ce nek problem tezko resimo v gpss u je potrebno uporabiti drug jezik ali izkoristiti blok help ki omogoca programiranje v jezikih fortran in pl i kratek opis ukazov v gpss u bloki so taki ukazi v gpss u skozi katere se pretakajo transakcije bloke lahko razdelimo v naslednje skupine bloke ki se nanasajo na transakcije generate split assemble match gather assign priority bloke ki se nanasajo na kontrolo in na nacin s katerimi transakcija zavzame in izkorisca nek staticni element advance seize release enter leave logic gate buffer bloke ki kontrolirajo in spreminjajo tokove transakcij transfer loop statisticne bloke queue depart tabulate statisticni bloki bloke za manipulacijo z grupami join remove scan alter examine bloke za manipulacijo z uporabniskimi verigami link unlink specialne bloke print trace untrace ostali ukazi skozi katere se ne morejo premikati transakcije in so nujni za opis modela so krmilni in definicijski ukazi npr job clear end start reset rmult function variable table qtable storage vsaka transakcija ima lahko do parametrov transakciji lahko priredimo eno od prioritet ki jih oznacimo s stevili od do lahko tudi vkljucimo aritmeticne spremenljivke ki so standardni numericni pridevki sna ki so definirani s pomocjo nekega aritmeticnega izraza boolove spremenljivke so sna ki dolocajo logicno stanje sistemskih elementov v gpss ali pa jih definira uporabnik funkcije so lahko zvezne ali diskretne definiramo jih z mnozico tock ali pa s pomocjo aritmeticnih izrazov oz sna sledi primer simuliranja bancnega okenca ki bo prikazal nacin programiranja v sistemu gpss primer naloge po daljsem opazovanju smo ugotovili da je prihod strank v banko enakomerno porazdeljen v obmocju ± minute v banki deluje samo eno okence pri katerem se porabi ± minut casa ki je prav tako enakomerno porazdeljen s simulacijo zelimo ugotoviti kako dolgo stranka ostane v banki koliko casa stoji v cakajoci vrsti pred okencem ter kako je zasedena bancna usluzbenka ali si zasluzi placo ali ne resitev blokovni diagram program job a vaja simulate rmult generate prihod strank queue banka vstop v banko queue vrsta vstop v vrsto pred okencem seize usl pristop k okencu depart vrsta izstop iz cakajoce vrste advance strezenje stranke release usl stranka je postrezena depart banka stranka odsla iz banke terminate start end analiza rezultatov analizo bomo na tem mestu izpustili a se bomo vrnili k njej pozneje programiranje v gpss u vnasanje transakcij v model blok generate kreira transakcije in jih vnasa v model njegov simbol je naslednji slika simbol bloka generate operand a predstavlja povprecno vrednost casovnega intervala med dvema sosednjima operandoma mean operand b je modifikator modifier ki ima dva pomena ce je konstanta le ta pomeni polovico dolzine intervala znotraj katerega je casovni interval med dvema sosednjima prihodoma ce je funkcija potem dobimo casovni interval med dvema sosednjima prihodoma s produktom a in b operand c doloca absolutno uro prihoda transakcije v model operand d vsebuje pozitivno stevilo ki pomeni da se ne bo generiralo vec kot to stevilo transakcij operand e doloca prioriteto transakcije prioritet je visja je stevilka visja je prioriteta operandi f g h i dolocajo stevilo in tip parametrov transakcije poleg dolocenega stevila parametrov imamo po tipe parametrov ki jih oznacimo s pripono suffix pb za parametre dolzino byte ph za dolzino polovicne besede pf za parametre z dolzino polne besede in pl za parametre s plavajoco vejico zgledi generate ena transakcija se generira na vsakih enot ure generate transakcije se ustvarjajo s casovnim intervalom med dvema sosednjima prihodoma z enakomerno verjetnostno porazdelitvijo od do generate transakcije se generirajo vsaki casovni enoti toda prvi prihod se zgodi v casu namesto v casu generirajo pa se samo transakcije generate fn expon pf pb transakcija s prioriteto se generira tako da casovni interval med sosednjima prihodoma dan z eksponentno porazdelitveno funkcijo s povprecno vrednostjo casovnih enot transakcije imajo en parameter z dolzino polne besede in dva parametra z dolzino byte nobeden od operandov a do i ni obvezen ce so prazni veljajo naslednje privzete vrednosti a b c ni zacetnega casa d neskoncno e f i parametrov z dolzino polovicne besede odstranjevanje transakcij iz modela za odstranjevane transakcij iz modela sluzi blok terminate njegov simbol je naslednji slika simbol bloka terminate operand a pomeni dekrement zakljucnega stevca to pomeni da vsaka transakcija ki vstopi v ta blok zmanjsa zakljucni stevec za a brz ko se vrednost zakljucnega stevca zmanjsa na nic ali manj se simulacija ustavi ceprav lahko imamo vec blokov terminate v modelu obstaja vedno le en zakljucni stevec ki ga lahko dekrementira transakcija ki gre skozi katerikoli blok terminate vrednost zakljucnega stevca dolocimo z operandom a v ukazu start operand a v bloku terminate je lahko izpuscen in tedaj dobi vrednost simulacija enojnih streznikov facilities v gpss u je facility sinonim za streznik facility ima lahko dve lastnosti v enem trenutku je lahko v njej samo ena transakcija torej facility ima samo dve stanji zasedeno ali prosto potrebno je poznati strezni cas ali cas za zasedenosti facility a s strani ene transakcije z blokom seize simuliramo vstop transakcij v facility ali zasedbo facility zasedba se lahko izvede ce je facility prost z blokom release simuliramo izhod transakcije iz facility ali sprostitev facility zasedenost facility njeno dolzino dolocimo z blokom advance en facility simuliramo torej z zaporedjem treh blokov seize advance release ker je lahko v modelu vec facilities jih moramo opremiti z imeni ki so lahko numericna ali simbolicna ime postavimo v operand a imenovanje s stevili zahteva pozitivno celo stevilo in najvisje stevilo je enako najvecjemu stevilu stevilu razlicnih facilities ki jih dopusca posamezni gpss simbolicno ime ima do alfanumericnih znakov pri cemer morajo biti prvi trije crke naslednja slika prikazuje simbola za bloka seize in release slika simbola blokov seize in release blok advance uporabljamo za simulacijo zakasnitve transakcije npr strezni cas v facility ima dva operanda a in b katerih privzeta vrednost je oba operanda a in b imata popolnoma enak pomen kot enaka operanda pri bloku generate pri spodnji sliki je prikazan simbol za advance slika simbol bloka advance zbiranje statistik za cakajoce transakcije v gpss u obstaja statisticno sredstvo za merjenje lastnosti cakajocih vrst imenovana vrsta za statistiko tako statisticno vrsto predstavljata dva bloka queue in depart ki pa ne tvorita cakajoce vrste v modelu temvec samo omejujeta podrocje v modelu kjer se lahko tvori cakajoca vrsta vstop za vrsto za statistiko omogoca blok queue izstop iz vrste pa blok depart naslednja slika prikazuje sliki obeh blokov slika simbola blokov queue in depart operand a pomeni ime vrste za statistiko in je obvezen operand b pa kot opcija doloca stevilo enot ki se doda tekoci vsebini cakajoce vrste ce je b izpuscen je privzeta vrednost z vstopom transakcije v blok queue se zgodi naslednje poveca se skupno stevilo vstopajocih transakcij table entry count za poveca se trenutna vsebina current content za transakcija dobi ime vrste transakcija se etiketira s tekoco vrednostjo simulacijske ure transakcija neha biti element vrste samo ce vstopi v blok depart ki ima isto ime kot blok queue tedaj se zgodi naslednje zmanjsa se tekoca vsebina za gpss izracuna cas ki ga je prezivela transakcija v vrsti dalje preveri ce je bila transakcija v vrsti enot simulacijskega casa ce je pomeni taka transakcija je element z nicelnim casom cakanja v vrsti zato se ustrezno poveca stevec transakcij z nicelnim casom transakcija izgubi ime vrste krmilni stavki stavek end stavek end mora biti zadnji stavek v vhodni datoteki in nima operandov oznacuje tocko v vhodni datoteki za katero gpss ne sme procesirati stavek job stavek job lahko uporabimo kot prvi stavek ni obvezen ima dva operanda operand a lahko zavzame crke a b in c ki dolocajo ustrezno maksimalno stevilo posameznih elementov v programu gpss npr crka a dovoljuje najvec facilites storages vrst itd operand b predstavlja nek niz znakov obicajno ime programa ki se pojavi na vsaki strani asembliranega izpisa maksimalna dolzina niza je znakov privzeta vrednost je gpss assembly stavek rmult ta stavek ni obvezen ima najvec operandov tako nam vrednost pri operandu a pomeni vrednost semena seed za prvi nakljucni generator rn random generator z operandom b nastavljamo seme drugemu nakljucnemu generatorju itd ta stevila morajo biti liha ce tega stavka ne uporabimo se semena generatorjev postavijo na zacetku simulacije na stavek simulate ta stavek moramo obvezno uporabiti zahteva avtomatsko izvrsitev simulacije ima tri opcije operande omenimo vsaj samo operand a ki predstavlja casovno limito ki je cpu ne sme preseci stavek start stavek start uporabimo za inicializacijo simulacije operand a doloci zakljucni stevec simulacija tece dokler zakljucni stevec ne dobi vrednost operand b lahko uporabimo za dolocanje oblike izpisa prazni znak pomeni privzeti izpis np no print pomeni da izpisa ne bo za ostale moznosti je potrebno poznati urejevalnik izhoda operand c doloca korak pri katerih se izvrsi izpis primer start izpis se bo izvrsil pri zmanjsanju zakljucnega stevca za in usmerjanje transakcij k nesekvencnim blokom blok transfer usmerja vstopajoco transakcijo k enemu od nesekvencnih blokov v modulu njegovo oznako nam kaze slika slika simbol bloka transfer nacin usmerjanja doloca operand a operand b doloca pri pogoju da operand c ni prazen lokacijo sekvencnega bloka operand c doloca lokacijo nesekvencnega bloka nacin usmerjanja je dolocen z operandom a ti nacini so naslednji nepogojni nacin unconditional mode transfer destination operand a je prazen operand b vsebuje ime ali stevilko ciljnega bloka transakcija bo vedno poskusala vstopiti v ta ciljni blok nacin z verjetnostnim izborom functional selection mode transfer blok blok operand a vsebuje decimalno stevilo ki pomeni verjetnost izrazeno v delih na tisoc da transakcija gre v blok v nasem primeru bo transakcij od slo v blok transakcij pa v blok ce je operand b prazen je blok sekvencni blok nacin z obojim izborom both selection mode transfer both blok blok transakcija skusa vstopiti najprej v blok ce je ta zaseden skusa priti v blok ce je zaseden tudi blok transakcija ponovno skusa vstopiti v blok in postopek se ponavlja ce je blok sekvencni blok operand b izpustimo simulacija enakih paralelnih streznikov v praksi dostikrat nastopa vec enakih paralelnih streznikov ki jih v gpss u simuliramo s specialnimi elementi imenovanimi storage le ta ima precej podobnih lastnosti kot facility pri definiciji storage a potrebujemo blok enter advance in leave ter definicijski blok storage blok enter blok enter simulira vstop transakcije v storage predstavimo ga z naslednjo sliko slika simbol bloka enter operand a predstavlja ime storage a operand b pa stevilo streznikov ki jih zasede ena transakcija privzeta vrednost za operand b je z vstopom transakcije v blok enter se zgodi naslednje poveca se skupno stevilo vstopajocih transakcij total entry count za b poveca se trenutna vsebina current content storage a za b trenutna razpolozljiva kapaciteta storage a currently available capacity se zmanjsa za b blok leave blok leave simulira izstop transakcije iz storage a predstavimo ga z naslednjo sliko slika simbol bloka leave pomen operandov je isti kot pri bloku enter z izstopom transakcije iz bloka leave se zgodi sledece zmanjsa se trenutna vsebina storage a za b poveca se trenutno razpolozljiva kapaciteta storage a za b na koncu simulacije gpss avtomatsko izpise statistiko za storage kot so skupno stevilo vstopajocih transakcij povprecna vsebina trenutna vsebina povprecni strezni cas in maksimalna vsebina definicijski blok za storage kapaciteto storage a postavimo s pomocjo definicijskega stavka storage ki ima dva formata labela storage kapaciteta labela pomeni ime storage a konkretni primer storage storage s labela kaj s labela s labela kaj tak format uporabimo pri inicializaciji vec storage ov pred ime storage a postavimo ce je ime sestavljeno iz crk konkretni zgled storage s men s s s storage z imenom mem ima kapaciteto storage i in isto kapaciteto s s in storage ima kapaciteto krmilni stavek clear stavek clear odstrani vse transakcije iz modela postavi na vso statistiko postavi na tako relativno kot absolutno uro medtem ko semena nakljucnih generatorjev ne spremeni potem ko so odstranjene vse transakcije stavek clear poisce bloke generate vsak generate blok generira transakcijo in jo postavi v verigo prihodnjih dogodkov to pomeni da se ponovno izvrsi vhodna faza stavek clear uporabljamo v primeru ko hocemo nek modul ponovno simulirati potem ko spremenimo nekaj parametrov in ali blokov kam stavek clear postavimo najprej napisemo stavke s spremenjenimi parametri in ali spremenjene bloke zatem stavek clear in na koncu stavek start za ponovno simulacijo bivalni in tranzitni cas bivalni cas residence time nam pove koliko casa je bila kaka transakcija v modelu pravimo da transakcija vstopi v model ko zapusti blok generate za dolocitev vstopnega casa uporabljamo absolutno uro vstopni cas mark time je mozno dobiti le pri izpisu verige tekocih in prihodnjih dogodkov zanj ne obstaja sna obstaja pa rezidentni cas katerega vrednost je dolocena z razliko med tekocim odcitkom absolutne ure in vstopnim casom bivalni cas doloca sna m m meri cas ki mine od trenutka ko je transakcija vstopila v model pogosto pa nas zanima koliko casa potuje transakcija med dvema tockama znotraj modela temu casu pravimo tranzitni cas transit time prvo tocko znotraj modela oznacimo z blokom mark ko transakcija vstopi v blok mark se trenutna vrednost absolutne ure prenese v enega od njenih parametrov z operandom a pri bloku mark oznacimo ta parametra v primeru ko shranimo vrednost absolutnega simulacijskega casa prihoda transakcije v blok mark v sna mpj vsebuje operand a le stevilsko vrednost j blok mark je prikazan na naslednji sliki slika simbol bloka mark drugo tocko obicajno oznacimo z blokom tabulate s prihodom transakcije k drugi tocki je dolocen njen tranzitni cas njegovo vrednost doloca sna mpj ki se avtomatsko izracuna kot ralika med trenutnim absolutnim casom in predhodno shranjenim casom v mpj pri stevilki parametra na mestu operanda a lahko uporabimo dopolnilo za tip parametra pb pa in pf ce dopolnilo izpustimo je privzeti tip ph primer mark trenutni absolutni cas se shrani v parameter mp ob ponovnem klicu tega parametra se bo avtomatsko izracunal tranzitni cas mark pb v parameter pb postavi tekoco vrednost absolutne ure popolnoma enak ucinek dosezemo z blokom assign assign ac pb definicija in uporaba tabel stavek table in blok tabulate tranzitni cas med dvema tockama v modelu je v splosnem slucajna spremenljivka take so tudi druge za nas zanimive spremenljivke v modelih najveckrat zelimo dolociti njihovo povprecno vrednost standardno deviacijo in relativne frekvence pri katerih padejo vrednosti v predpisana podrocja ta izracunavanja so mukotrpna in casovno zahtevna opravila gpss pa jih avtomatsko opravi v obliki tabel uporaba tabel zahteva dva koraka najprej definiramo tabele s stavkom table in nato izracun tabele z vstopom transakcij v blok tabulate stavek table ima obvezno labelo z imenom tabele operand a vsebuje ime slucajne spremenljivke tj v splosnem ime sna in ali oznacuje nacin delovanja tabele zgornjo mejo prve delitve v histogramu damo na mesto operanda b operand c daje sirino delitve v histogramu operand d daje skupno stevilo delitev v histogramu vkljucno z najbolj levo in desno delitvijo operand e uporabljamo samo pri nacinu z jakostjo prihodov tedaj stoji na mestu operand a rt kar pomeni casovni interval ki se nanasa na jakost prihodov znani so stirje nacini delovanja tabel vsi ti nacini imajo lahko utezne tabele a normalni nacin pri tem nacinu je na mestu operanda a zeljen sna labela table a b c d b diferencni nacin tu racunamo razliko med vstopajoco vrednostjo in predhodno vstopajoco vrednostjo labela table a b c d c nacin z intervali med sosednjimi prihodi meri cas med prihodi d nacin z jakostjo prihodov ce zelimo dolociti porazdelitev tranzitnega casa med tockama in v tocki postavimo blok mark v tocki pa blok tabulate blok tabulate je prikazan na sliki transakcija ki vstopi v blok tabulate vstopi s tem tudi v tabelo katero ime doloca operand a operand b je utezni faktor ki ga uporabljamo samo pri uteznih tabelah na koncu simulacije se izpise histogram v tabelaricni obliki s srednjo vrednostjo standardna deviacijo in stevilo privzetih transakcij slika simbol bloka tabulate ce zelimo na primer ugotoviti porazdelitev bivanja kupcev v samopostrezni trgovini uporabimo naslednji stavek rcas table m in naslednji blok tik pred blokom terminate tabulate rcas tabela qtable pogosto nas zanima porazdelitev cakalnega casa tako porazdelitev lahko dobimo s pomocjo blokov mark in tabulate na ustreznih mestih in ustreznim stavkom table enako porazdelitev dobimo ce uporabimo samo posebno tabelo imenovano qtable njen format se razlikuje od normalnega nacina v naslednjemu na mestu operanda a podamo ime vrste queue in na mestu labele napisemo ime te tabele spremenljivke spremenljivke so uporabnisko definirani sna vrednost spremenljivke je vrednost uporabnisko dolocenega izraza s katerim je definirana spremenljivka locimo dve vrsti spremenljivk aritmeticne arithmetic v katerih so elementi terms v izrazih povezani z aritmeticnimi operatorji in boolove v katerih so elementi v izrazih povezani z logicnimi in relacijskimi operatorji aritmeticne spremenljivke aritmeticne spremenljivke so celostevilcne ali spremenljivke s plavajoco vejico odvisno od nacina izracuna celostevilske spremenljivke definiramo s stavkom variable zgledi ivan variable r s cas variable p p pak variable n pot pri spremenljivkah a plavajoco vejico so elementi v izrazih realna stevila koncni rezultat aritmeticnih operacij je obicajno spremenjen v celo stevilo spremenljivke s plavajoco vejico definiramo s stavkom fvariable zgled pov fvariable q q q aritmeticne spremenljivke tako celostevilske kot spremenljivke s plavajoco vejico pozivamo z vj ali v sn zgled nar fvariable fn exp generate v nar dana dva stavka sta analogna generate fn exp boolove spremenljivke boolove spremenljivke zavzamejo samo vrednosti ki oznacuje napacno in ki oznacuje pravilno logicni operator and dosezemo z znakom logicni operator or z znakom relacijske operatorje pisemo med dvema apostrofoma npr ' ' 'e' itd boolove spremenljivke definiramo s stavkom bvariable in jih pozivamo z bvj oz bv sn zgled bvariable f w zak'e' boolova spremenljivka bv ima vrednost ce sta hkrati izpolnjena dva pogoja facility je zaseden in stevilo cakajocih pri bloku zak je enako drugace ima vrednost savevalues savevalues so globalno dosegljive pomnilniske lokacije in predstavlja ju tudi sna v gpss u njihove vrednosti so med simulacijo ne spreminjajo kot se na primer drugi sna kot so frj gcj sj itd poznamo stiri tipe savevalues savevlaues z velikostjo byte ki jih pozivamo z xbj xb savevalues s polovicno besedo ki jih pozivamo z xhj xh savevalues s polno besedo ki jih pozivamo z xj xf savevalues z velikostjo dolge besede ki jih pozivamo z xlj xl na zacetku simulacije gpss postavi vse savevalues na nic ce pa hocemo zaceti s simulacijo z od nic razlicnimi savevalues moramo uporabiti stavek initial zgled initial xh xl pak xl pak ta stavek bo postavil savevalue s polovicno besedo na in savevalues pak na vrednost savevalue lahko spreminjamo z vstopom transakcije v blok savevalue ki je prikazan na spodnji sliki slika simbol bloka savevalue savevalues lahko nastavljamo z blokoma using in locate blok savevalue ima parametre operand a vsebuje stevilko ali ime savevalue ki ga spreminja operand b predstavlja novo vrednost savevalue in operand c doloca tip savevalue tipi so x xh xb in xl privzeti pa je tip x ce operand a vsebuje se znak novo vrednost dobimo s pristevanjem odstevanjem vrednosti operandu b zgledi savevalue stev fn dak xl savevalue s plavajoco vejico stev dobi tekoco vrednost funkcije dak savevalue sklad p savevalue s polno besedo sklad se poveca za vrednost parametra p stavek reset ne spreminja vrednosti savevalues medtem ko jih stavek clear postavi na nic s selektivnimi stavkom clear lahko dolocimo katere savevalues ne zbrisemo zgled clear x xb x zik x zik ta stavek povzroci da se izvrsijo vse operacije stavka clear razen za savevalue s polno besedo savevalue z velikostjo byta in savelues s polno besedo od zik do zik testiranje numericnih relacij blok test blok test transakcijam dovoli ali ne k sekvencnemu bloku na osnovi primerjave med dvema sna ki sta dolocena z operandoma a in b vrsto primerjave doloca pomozni generator operator pomen l a b le a £ b g a b ge a ³ b e a b ne a ¹ b blok test kaze naslednja slika slika simbol bloka test ce je primerjava pravilna transakcija vstopi v blok test oziroma dalje v sekvencni blok ce je primerjava nepravilna se transakcija usmeri k bloku dolocenim z operandom c ce je operand c prazen transakciji ni dovoljeno vstopiti v blok test blok loop ce hocemo doseci da gre transakcija skozi zaporedje blokov tolikokrat kot zelimo uporabimo blok loop operand a vsebuje stevilko parametra ki vsebuje stevilo zaporednih iteracij dovoljena so dopolnila pb ph in pf operand b vsebuje labelo bloka na zacetku zanke slika bloka loop je naslednja slika simbol bloka loop zgled assign ponov loop ponov dana zanka se izvrsi deset krat isto zanko lahko programiramo tudi na naslednji nacin assign ponov assign test e ponov logicna stikala logicna stikala so elementi opreme ki so lahko v enem od dveh stanj na zacetku simulacije so vsa logicna stikala razklenjena ali v stanju `reset' stanje stikala j lahko pozivamo z dvema sna lrj pomeni da je stikalo j v stanju `reset' lsj pa pomeni da je stikalo v stanju `set' stavek reset ne vpliva na stanje logicnih stikal medtem ko jih stavek clear postavi v stanje `reset' inicializacija logicnih stikal stavek initial s stavkom initial lahko logicna stikala inicializiramo s stanjem `set' ali `reset' zgled initial ls kon ls ls lr zap dani stavek povzroci da se logicna stikala kon in postavijo v stanje `set' in zap v stanje `reset' ko se zacne simulacija sprememba stanja logicnega stikala blok logic stanje dolocenega logicnega stikala lahko spreminjamo z vstopom transakcije v blok logic ta blok ima en pomozni operand ki pove kaj zelimo s stikalom storiti ima pa se operand a ki nam pove ime logicnega stikala obstajajo trije tipi pomoznih operandov pomozni operand pomen r postavi logicno stikalo v stanje `reset' s postavi logicno stikalo v stanje `set' i invertira stanje logicnega stikala slika bloka logic je naslednja slika simbol bloka logic zgledi a logic r stik logicno stikalo stik postavi v stanje reset b logic i p invertiraj stanje logicnega stikala katerega stevilka je v p testiranje stanj logicnega stikala blok gate blok gate deluje analogno kot blok test samo da ta testira logicno stikalo ta blok ima dva pomozna operatorja ls testira stanje `set' in lr ki testira stanje reset zraven the dveh operandov pa ima se dva operanda a in b operand a vsebuje ime ali stevilko logicnega stikala operand b pa vsebuje lokacijo bloka kamor se usmeri transakcija ce logicno stikalo ni v istem stanju kot testni pogoj ce je operand b prazen transakcijo zavrnemo slika nam prikazuje simbol bloka gate slika simbol bloka gate z blokom gate pa lahko razen testiranja stanja logicnega stikala testiramo se razlicna stanja storage ov in facilities ter usmerjamo tok transakcij ustvarjenih z blokom split v tem primeru ima gate naslednje pomozne operatorje pomozni operator pomen sf storage je poln snf storage ni poln se storage je prazen sne storage ni prazen sv storage je dosegljiv snv storage ni dosegljiv u facility je v uporabi nu facility ni v uporabi i facility je prekinjena ni facility ni prekinjena m transakcija je v statusu ujemanja nm transakcija ni v statusu ujemanja simboli bloka se razlikujejo glede na uporabljene skupine pomoznih operatorjev glejte tabelo simbolov v gpss u blok gate lahko zamenjamo tudi z blokom test zgled gate lr stik pres je enako test e lr stik pres bloki ki manipulirajo z zbirnimi mnozicami transakcij blok split blok split uporabljamo za ustvarjanje kopij vstopajoce transakcije tako operand a doloca stevilo kopiranih transakcij operand b vsebuje labelo bloka kamor se usmerijo kopirane transakcije operand c ce je prisoten doloca stevilko parametra ki se uporabi pri serijski stevilki transakcij polja d e f in g dolocajo stevila in tipe parametrov ki jih ima vsaka transakcija ce ne zelimo imeti nobenega parametra kakrsnega koli tipa postavimo v operand d vrednost obicajno vse kopije transakcij in original povezemo skupaj v zbirno mnozico tj vrsto druzine transakcij ce ne zelimo tega ucinka kot zadnji operand napisemo u za enolicno unique v tem primeru bo vsaka kopija clan svoje lastne enolicne zbirne mnozice in na njej ne bo mozno vrsiti operacij blokov assemble gather in match blok split je ponazorjen z naslednjo sliko slika simbol bloka split blok assemble blok assemble ima obratni ucinek kot blok split saj zdruzuje vec transakcij iste zbirne mnozice operand a doloca stevilo transakcij ki se zdruzi v eno samo transakcijo predstavitev bloka assemble je prikazana na naslednji sliki slika simbol bloka assemble kontrolni stavek reset simulacijski rezultati so gotovo odvisni od zacetnih pogojev ta odvisnost je nezazelena in jo zelimo odpraviti torej nas zanimajo samo stacionarne resitve ne pa prehodni pojav vpliv prehodnega pojava lahko odpravimo na vec nacinov postavimo tipicne zacetne pogoje kar pomeni da moramo sistem ze delno poznati preden sploh lahko zacnemo s simulacijo v tem primeru potrebujemo dokaj majhno stevilo simulacijskih tekov simuliramo daljsi cas nekaj tisoc do deset tisoc simulacijskih tekov pri poljubno izbranih zacetnih pogojih simuliramo nekaj tekov z netipicnimi pogoji nato samo izbrisemo statistiko ne da bi spremenili stanje sistema zatem nadaljujemo s simulacijskimi teki ter izracunamo novo statistiko v praksi se izkaze najprimernejsi zadnji nacin ki ga v gpss u izvedemo s stavkom reset ce uporabimo za stavkom reset ponovno stavek start se ponovno zacne simulacija na ta nacin lahko mocno zmanjsamo stevilo potrebnih tekov za resitev dolocenega problema funkcije funkcije preslikajo nek original sna v mnozico poljubnih numericnih vrednosti gpss pozna pet tipov funkcij pri vseh tipih podajamo tocke s pari koordinat interpretacija teh koordinat je odvisna od tipa funkcije stavek function s stavkom function definiramo funkcijo tj podamo njeno ime in vrednosti labela stavka daje ime funkcije operand a doloca argument sna podan v obicajnem formatu in operand b doloca tip funkcije in stevilo definiranih tock funkcije zgled nia function rn c dani stavek doloca funkcijo z imenom nia katere argument je slucajno stevilo med in iz drugega generatorja nakljucnih stevil rn ter je zvezna c funkcija dolocena s tockami stavki ki sledijo stavku function so dani v poljubnem formatu v katerih sta elementa znotraj koordinatne dvojice tocke locena z vejico koordinatne dvojice pa med seboj s posevno crto funkcijske tocke morajo biti urejene po narascajoci koordinati x vrednost funkcije dobimo s sna fnj ce je ime funkcije stevilo j oziroma s fn sn ce je ime funkcije simbolicno ime sn vrednost funkcije je realno stevilo s plavajoco vejico tipi funkcij a zvezne funkcije znak za zvezno funkcijo v stavku function je crka c ki stoji na prvem mestu operanda b zgled strez function rn c funkcija strez ima vrednosti od do vrednosti med danimi sestimi tockami dolocimo z linearno interpolacijo graficno interpretacijo funkcije strez kaze naslednja slika slika graficni prikaz funkcije strez vrednost funkcije je odvisna od vrednosti funkcijskega argumenta po naslednjih pravilih ce je argument manjsi ali enak vrednosti x prve tocke funkcije je vrednost funkcije enaka koordinati y prve tocke ce je argument enak koordinati x ene izmed funkcijskih tock je vrednost funkcije enaka koordinati y te tocke ce argument lezi med koordinatami x dveh sosednjih tock potem je vrednost funkcije dolocena z linearno interpolacijo med obema tockama ce je argument vecji od koordinate x zadnje funkcijske tocke je vrednost funkcije enaka koordinati y zadnje tocke dane funkcije uporabljamo v razlicnih blokih npr v bloku generate advance ipd psevdoslucajni generatorji rn rn rn tvorijo slucajna stevila od do slucajno stevilo u £u£ pomeni verjetnost da zavzame slucajna spremenljivka vrednost ki je manjsa ali enaka o stevilo ki ga npr generira generator rn lahko interpretiramo kot verjetnost da zavzame funkcija vrednost ki je manjsa ali enaka opazimo da nam funkcija strez interpretira inverzno funkcijo verjetnostne porazdelitvene funkcije tj funkcije ki nam daje komulativne verjetnosti zgled enakomerna porazdelitvena funkcija imejmo enakomerno porazdelitveno funkcijo s parametroma a in b verjetnostno porazdelitveno funkcijo kaze slika a njeno inverzno funkcijo pa slika b inverzno funkcijo funkcije na sliki a dobimo z zrcaljenjem glede na premico v gpss u to funkcijo definiramo z enak function rn c slika a enakomerna porazdelitvena funkcija b inverzna funkcija enakomerne porazdelitvene funkcije ker slucajni generator daje vrednost najvec nikoli pa ne nikoli ne moremo doseci vrednosti v omenjenem primeru lahko dosezemo najvec funkcije nam sicer vrnejo realne vrednosti vendar moramo v primeru ko pomeni ta vrednost cas to vrednost zaokroziti na celostevilske vrednosti saj ura v gpss u dela samo s celimi stevili z operandoma a in b v bloku generate in advance lahko zaobsezemo enakomerne porazdelitve ki imajo liho stevilo celih stevil ce hocemo tvoriti enakomerno porazdelitev s sodim stevilom celih stevil moramo uporabiti stavek function za zvezne funkcije postopek razlozimo na naslednjem vzgledu tvoriti zelimo enakomerno porazdelitev celih stevil in to pomeni da imamo stiri stevila tj sodo stevilo stavek enak function rn c tvori vrednosti od do zaradi ze omenjenega razloga nam vrednosti nikoli ne vrne ce uporabimo to funkcijo fn enak v operandu a bloka generate ali advance se tvorijo le celostevilske vrednosti tj od do zgled eksponentna porazdelitvena funkcija eksponentno porazdelitveno prikazuje slika a njeno inverzno funkcijo dobljeno s povprecno vrednostjo e x pa slika b eksponentna porazdelitvena funkcija je podana z naslednjo enacbo slika a eksponentna porazdelitvena funkcija b inverzna funkcija eksponentne porazdelitvene funkcije dobljena s povprecno vrednostjo iz enacbe ni tezko izpeljati inverzno funkcijo dalje je funkcijo x e x aproksimiramo v gpss s daljicami oziroma s tockami funkcijo x e x imenujemo exp exp function rn c da bi se izognili pisanju toliksnjega stevila tock ima gpss gornjo funkcijo vgrajeno in jo klicemo takole exp function rn be ne smemo pozabiti da nam gornji zapis izracuna le funkcijo x e x pravo vrednost x dobimo ce vrednost funkcije mnozimo z e x kar pa izvedeta avtomaticno ze bloka generate in advance zgled geometrijska porazdelitvena funkcija najpogosteje definiramo geometrijsko porazdelitveno funkcijo z naslednjo enacbo komulativna verjetnostna funkcija je iz enacbe izracunamo inverzno funkcijo funkcija je enaka funkciji pri eksponentni porazdelitvi potrebno je le dolociti se izraz za konkretno vrednost p primer radi bi simulirali geometrijsko porazdelitev s p to porazdelitev nam daje funkcija dolz ki pa jo definiramo preko eksponentne porazdelitvene funkcije pri tem uporabimo stavek fvariable ki nam omogoca tvorbo produkta expd function rn be dolz fvariable fn expd b diskretne funkcije znak za diskretno funkcijo v stavku function je crka d ki stoji na prvem mestu operanda b vrednost funkcije je dolocena na isti nacin kot pri zveznih funkcijah s pomembno izjemo ce lezi funkcijski argument med koordinatama x dveh sosednjih tock potem ima funkcija vrednost koordinate y druge tocke zgled odv function rn d ce je rn £ ima funkcija vrednost ce je £ rn £ ima vrednost in ce je £ rn £ ima vrednost slika zadnji interval je odprt z desne strani saj rn nikoli ne vrne vrednosti slika diskretna funkcija odv poljubna diskretna porazdelitvena funkcija slika a prikazuje komulativno diskretno funkcijo kjer velja vrednost slucajne spremenljivke x dobimo s pomocjo slike b ki predstavlja inverzno funkcijo funkcije na sliki a ce vrednost funkcijskega argumenta pade v interval q q dobimo vrednost x slika a komulativna diskretna funkcija b inverzna funkcija komulativne diskretne funkcije zgled zapisimo poljubno diskretno porazdelitveno funkcijo z zalogo vrednosti diskr function rn d q x q x q x c diskretne funkcije s seznamom numericnih vrednosti znak za funkcije s seznamom numericnih vrednosti list numeric valued functions je crka l te funkcije so enake diskretnim funkcijam le da koordinate x abscisne koordinate narascajoca naravna stevila n za n tock funkcije koordinate x lahko izpustimo zgled tal function p l d diskretne funkcije s pridevniskimi vrednostmi znak za diskretne funkcije s pridevniskimi vrednostmi discrete attribute valued functions je enaka e so podobne diskretnim funkcijam tipa d le da koordinate y niso realna stevila ampak sna izrazi v oklepajih simboli ali cela stevila zgled izb function rn e fn expon foobar p xl e diskretne funkcije s seznamom pridevniskih vrednosti znak za funkcije s seznamom pridevniskih vrednosti list attribute valued functions je crka m te funkcije so kombinacija funkcij tipa l in e zgled pres function p m loop fn xf pb v standardni numericni pridevki standardni numericni pridevki standard numerical attributes sna so pridevki ki jih avtomaticno vzdrzuje gpss njihove vrednosti se obicajno spreminjajo v toku simulacije in so med simulacijo dostopne sna so npr tekoca velikost vrste izkoriscenost facility itd njihove vrednosti dobimo preko naprej definiranih imen s pomocjo sna lahko dinamicno krmilimo model hitrost dela streznika npr zavisi od stevila ljudi ki cakajo na strezbo ko vrsta narasca streznik dela hitreje kot ponavadi strezni cas je tako odvisen od tekoce vsebine vrste ime sna sestoji iz dveh delov prvi del je druzinsko ime family name ki identificira tako tip vkljucene enote npr facilities storages ali vrste kot doloceno informacijo npr izkoriscenost facility ali trenutno vsebino vrste druzinsko ime je ze vnaprej definirano drugi del predstavlja dolocenega druzinskega clana npr kateri facility katera vrsta ta del je lahko stevilo ali simbolicno ime tedaj dodamo znak zgledi enojni strezniki fj ali f sn facility je v uporabi ima lahko dve vrednosti ce ni v uporabi ali ce je v uporabi fcj ali fc sn skupno stevilo prihodov v facility frj al fr sn zasedenost streznika dana v tisocinah na primer stevilo pomeni ali zasedenost ftj ali ft sn povprecna dolzina casa uporabe streznika cakajoce vrste q ali q sn tekoca velikost vrste qaj ali qa sn casovno obtezeno povprecje transakcij v vrsti od zacetka izvajanje simulacije qcj ali qc sn stevilo vstopov v vrsto qmj ali qm sn maksimalno stevilo transakcij v vrsti qtj ali qt sn povprecni cas cakanja v vrsti qxj ali qx sn povprecni dejanski cas cakanja v vrsti qzj ali qz sn stevilo transakcij ki so vstopile v prazno vrsto paralelni strezniki rj ali r sn stevilo prostih mest v storageu sj ali s sn stevilo zasedenih mest v storageu saj ali sa sn povprecno stevilo uporabljenih mest v strezniku scj ali sc sn celotno stevilo vstopov v storage smj ali sm sn maksimalno stevilo zasedenih mest od zacetka simulacije srj ali sr sn zasedenost storagea podana v tisocinah stj ali st sn povprecni cas zasedanja storagea bloki ali w sn trenutno stevilo transakcij v bloku ali n sn skupno stevilo transakcij ki so vstopile v blok transakcije pj vrednost j tega parametra transakcije pr prioriteta transakcije m razlika med trenutnim absolutnim casom in casom vstopa transakcije v model bivalni cas mpj razlika med trenutnim absolutnim casom in casom zadnejga vstopa transakcije v blok mark znotraj programa obicajno uporabljamo obliki w sn in n sn znotraj modela lahko uporabljamo tudi relativno uro kot podatek ime relativne ure je c vrednost absolutne ure doloca sna ac psevdonakljucni generatorji rnj in funkcije fnj so tudi sna nekateri sna imajo celostevilske vrednosti f drugi boolove vrednosti tretji celostevilske vrednosti s polovicno besedo h cetrti celostevilske vrednosti z dolzino byta b in peti realne vrednosti s plavajoco vejico l kaksen tip je kak sna lahko ugotovimo iz tabel v prirocniku tako imajo sna fnj realne vrednosti ce pa jih uporabimo kot operand b v bloku generate ali advance imajo samo celostevilsko vrednost najveckrat uporabljamo sna kot operande v blokih ali kot funkcijske argumente zgled funkcijski argument map naj bo skupno stevilo transakcij v bloku na lokaciji janez ko pozivamo funkcijo med simulacijo se skupno stevilo transakcij v bloku na dani lokaciji uporabi kot vrednost neodvisne spremenljivke map function n janez d sna lahko podamo tudi posredno z vrednostjo parametra transakcije zgled x pomeni vrednost savevalue katere stevilo je shranjeno v parametru tekoce transakcije z vrednostjo katerega koli drugega sna zgled s x pomeni da vsebino storagea doloca vrednost savevalue z aritmeticnim izrazom v okroglih oklepajih zgled q p pomeni velikost vrste katere stevilo je za vecje od tekoce vrednosti parametra primer uporabe modeliranje vpliva dolzine vrste na povprecno jakost strezbe postavitev problema v enokanalni strazni sistem prihajajo odjemalci po poissonski porazdelitvi porazdelitvi z l odj uro strezni cas ima eksponentno porazdelitev toda povprecni strezni cas je odvisen od velikosti cakajoce vrste odvisnost kaze tabela tabela povprecni strezni cas kot funkcija velikosti cakajoce vrste velikost cakajoce vrste povprecni strezni cas ali ali ali vec dolocite izkoriscenost streznika tako da simulirate prihodov odjemalcev pristop ki vodi do resitve sistem je ze znanega tipa m m ¥ ¥ fifo strezni cas je diskretna funkcija tekoce velikosti vrste ker simuliramo za zvezno stevilo transakcij sistem resimo z enim segmentom tabela definicij casovna enota sek elementi gpss pomen transakcije odjemalci facility strez streznik funkcije popr funkcija povprecnega streznega casa od velikosti vrste exp eksponentna funkcija vrsta cak vrsta za statistiko funkcijo popr kaze naslednja slika slika slika funkcije popr blokovni diagram blokovni diagram bomo zaradi njegove preprostosti izpustili program simulate difinicija funkcij povpr function q cak d povprecni strezni cas exp function rn be eksponentna funkcija segment generate fn exp prihodi odjemalcev queue cak seize strez depart cak advance fn povpr fn exp proces strezbe release strez terminate kontrolni stavki start end parametri transakcij parametri transakcij so sna ki so last transakcije ko se transakcija giblje skozi model lahko spreminjamo vrednosti njenih parametrov tako kot narekuje logika modela stevilo parametrov in tipe parametrov dolocajo operandi f g h i v bloku generate tipi parametrov so pb ph pf in pl vrstni red zapisov stevila in tipov parametrov ni pomemben pac pa se mora tak zapis vedno zaceti na mestu operanda f vsaka transakcija ima lahko do parametrov tipa pb do parametrov tipa pl do parametrov tipa ph in do parametrov tipa pf privzeta vrednost je parametrov tipa ph ime parametrov je pj kjer je j spreminjanje vrednosti parametrov blok assign transakcija ki vstopi v blok assign spremeni vrednost dolocenemu parametru blok assign ima lahko operande in je prikazan na naslednji sliki slika simbol bloka assign operand a pomeni stevilko parametra operand b pa novo vrednost za ta parameter ce sledi stevilki znak potem moramo stari vrednosti parametra samo pristeti vrednost operanda b znak pomeni odstevanje operand c ni obvezen oznacuje pa ime ali stevilko funkcije ki jo zmnozi z vrednostjo operanda b produkt je zatem celostevilski operand d prav tako ni obvezen oznacuje pa tip parametra pb ph pf ali pl ce je izpuscen je privzeta vrednost ph primeri assign parametru daj vrednost parameter je tipa ph assign pf parameter pf dobi vrednost ë fn û assign v ph parametru ph pristej vrednost ki jo doloca spremenljivka assign pl parametru pl odstej sprememba prioritete transakcije blok priority spremembo prioritete transakcije dosezemo ce le ta vstopi v blok priority spodnja slika prikazuje ta blok slika simbol bloka priority operand a doloca novo prioriteto transakcije operand b je neobvezen in ga lahko uporabimo da zacasno blokiramo izvajanje transakcije tako da lahko gpss pogleda ali je v cec kaka transakcija z visjo prioriteto ki bi se morala zaceti izvajati v tem primeru zapisemo na mesto operanda b besedo buffer iskanje elementov ki izpolnjujejo dolocene pogoje blok select blok select preiskuje doloceno mnozico elementov in poisce prvi element ki izpolni dani pogoj zatem zapise stevilko tega elementa v parameter ki je dan z operandom a podoben je bloku count ki nam vrne stevilo elementov ki izpolnjujejo dani pogoj mi pa ga nismo posebej obravnavali blok select ima pomozni operator in sest operandov v blokovnem diagramu ga risemo na nacin kot je prikazan na sliki slika simbol bloka select pogoj ki ga je potrebno izpolniti doloca pomozni operator x prvi tip operatorja obravnava elemente naprave facilities storages in logicna stikala pomozni operator pogoj u facility je v uporabi nu facility ni v uporabi i facility je prekinjen ni facility ni prekinjen se storage je prazen sne storage ni prazen sf storage je poln snf storage ni poln sv storage je dosegljiv snv storage ni dosegljiv lr logicno stikalo je resetirano ls logicno stikalo je setirano drugi tip pomoznega operatorja so relacijski operatorji ki primerjajo dve numericni vrednosti operand d doloca referencno vrednost operand e pa doloca mnemonik katerega koli sna razen matricnih savevalues pomozni operator pogoj g e d ge e ³ d e e d ne e ¹ d le e £ d l e d min minimalni e max maksimalni e ker ima lahko transakcija vec razlicnih tipov parametrov lahko dodamo k stevilki transakcije se dopolnilo suffix ki oznacuje tip parametra dovoljena dopolnila so pb ph in pf ce dopolnila ni se uporabi privzeti tip parametra tj ph z blokom select preiskujemo doloceno mnozico elementov ki jo oznacimo z najmanjso stevilko elementa operand b in z najvecjo stevilko elementa operand c operand f doloca stevilo kamor se usmeri transakcija ko noben element iz dane mnozice ne izpolnjuje pogoja transakcija tedaj ohrani staro vrednost parametra ce operanda f ni se transakcija usmeri v sekvencni blok z nespremenjenim parametrom v primeru pomoznega operatorja min oz max ignoriramo operand d primeri a select nu skok transakcija gre v sekvencni blok katerega ime je dano s parametrom tipa h privzeti tip vrednost parametra pomeni stevilko prve nezasedene facility iz mnozice do vkljucno ce so vse facilities zasedene se parameter ne spremeni in transakcija gre v blok skok ta primer lahko izvedemo se z naslednjim stavkom select e f skok b select ge pf p v parameter tipa f se shrani stevilka prvega parametra od do katerega vrednost je vecja ali enaka c select min ph q v parameter tipa h se shrani stevilka najkrajse vrste od do literatura babillier p a kahan b c and probst a r simulation with gpss v prentice hall inc martin d general pupose simulation system referece manual simulation software ltd schriber t j simulation using gpss john wiley sons dostopen na vax u datoteka sys help gpssman mem