GPSS (з англ. General Purpose Simulation System – система моделювання загального призначення) – це мова програмування, котра призначена для імітаційного моделювання різноманітних систем, в основному масового обслуговування. В оригіналі мала назву Gordon's Programmable Simulation System, на честь розробника Джефрі Гордона (назва була змінена, коли її вирішили випускати як комерційний продукт). В загальних рисах це мова загального користування, котра дозволяє розв’язувати задачі покроково по часу. Система в цій мові моделюється як операції входу в систему і передається від одного сервісу до іншого у вигляді блоків. Ця система є доволі зручною для, наприклад, моделювання фабрики. Ця мова є менш гнучкою порівняно з деякими іншими мовами, але через свою простоту вона є популярною.
Філософія GPSS
Програмний код цією мовою може здивувати багатьох програмістів, котрі мають досвід роботи з функціональними, процедурними чи об’єктно-орієнтованими мовами. Ця мова проектується як сутності, котрі рухаються впродовж виконання моделі. Така сутність називається Транзакцією. Передбачається, що вона рухається від блоку до блоку, під блоком розуміється лінійка коду, котра представляє одиничну дію, котра впливає на саму транзакцію, або на якісь інші сутності. Для новачка ця мова за структурою нагадуватиме фігурку з LEGO, де блоки - вибрані людиною, котра складає модель , специфічні функції . Від першого проектування у 1960 році , еволюція програми пішла від майнфреймів, таких як IBM та VAC до портативних комп’ютерів, котрі на той момент набирали популярність. Блоки можуть бути об’єктно-орієнтованими(напр. біржа праці) або діалоговими(напр. сигнали в електронних компонентах). GPSS зберігає шлях розвитку, тому на виході можна отримати стандартний звіт виконання. Сутності можуть бути широко класифіковані у Ресурсах, статистичних сутностей та обчислювальних сутностях. Ресурси, такі як об'єкти і системи зберігання, відображають обмежені ресурси потужності. Обчислювальні сутності такі як змінні, функції та генератори випадкових значень використовуються для відображення стану сутностей, або елементів їхнього середовища, а статистичні об'єкти, такі як черги або таблиці (гістограми) - збір статистичної інформації, що становить інтерес. .
Приклад програми
Наступний код це фактично найпростіша програма мовою GPSS. Мета полягає в тому, щоб імітувати один день роботи перукарні. Клієнти прибувають у випадковому постійному потоці, входячи в магазин, в черзі, якщо цирульник зайнятий, то їх стрижка підлягає правилу: перший прийшов - перший обслужений, а потім покинути магазин. Ми хотіли б знати середню і максимальну чергу, а також кількість клієнтів.
SIMULATE ; Define model * * Model segment 1 * GENERATE 18,6 ; Customer arrive every 18±6 mn QUEUE Chairs ; Enter the line SEIZE Joe ; Capture the barber DEPART Chairs ; Leave the line ADVANCE 16,4 ; Get a hair cut in 16±4 mn RELEASE Joe ; Free the barber TERMINATE ; Leave the shop * * Model segment 2 * GENERATE 480 ; Timer arrives at time = 480 mn TERMINATE 1 ; Shut off the run * * Control cards * START 1 ; Start one run END ; End model
Сама програма знаходиться в програмних дужках Simulate та End і поділена на модельні сегменти і контрольних карт.
Перший сегмент моделі це відвідувач. Блок Generate створює потік операцій і графіків для входу в модель з часом прибуття, рівномірно розподіленим в діапазоні 18 ± 6. Відповідальність програміста інтерпретувати ці транзакції як клієнтів і зрозуміти, що час повинні бути підраховано протягом декількох хвилин. Транзакції починають рухатись від Generate від блоку до блоку допоки не досягнуть позиції Terminate. За нормальних умов транзакція рухається від одного блоку до другого, отже транзакція «відвідувач» покидає Generate і попадає у Queue Chairs . Цей блок симулює чергу очікування і зберігає статистику порядку. В цьому прикладі матеріалізуються черга крісел і в кінці симуляції, окрім інших речей ми матимемо ще й максимальну довжину черги. Блок QUEUE вимагає ім’я черги як параметр, тому що більше, ніж одна черга може існувати в моделі. Кожен з них пов'язаний з блоком Depart, який спрацьовує, коли транзакція залишає чергу. GPSS запам'ятовує, які транзакції в черзі, так що можна знати середній час, щоб переглянути, що ніяка транзакція не покидає чергу без попереднього введення в нього. Після блоку Queue Chairs, транзакція буде намагатися перейти до SEIZE Joe , блок імітації об’єкта з іменем Джо. Об’єкт моделі одинарних серверів місткий. Якщо об'єкт зайнятий, SEIZE буде забороняти вхід. У прикладі, клієнт буде чекати в блоці QUEUE. Якщо вона вільна, або як тільки вона стане доступною, то транзакції буде дозволено захопити об'єкт, позначити його як зайнятий для інших угод і почати відлік часу обслуговування та інші статистичні дані, поки ж транзакція не проходить відповідний RELEASE Джо блок. Пари Seize / RELEASE пов'язані з іменем об'єкта, оскільки багато незалежних об'єктів можуть існувати в моделі. Вони можуть моделювати оператори, як перукар, ремонтник, агент, але також й частини обладнання, як журавель, заправна станція, документ авторизації тощо, насправді нічого з ємністю одиниця. Для імітації кілька паралельних серверів, як команда з п'яти перукарів, або піч з ємністю 10, GPSS використовує об'єкти, названі Накопичувачами. Після того, як клієнт захоплює Джо, вона переходить до наступного оператора, котрим є Advance 16,4, завданням якого є заморозити об'єкт протягом заданого відрізка часу, тут випадкове число обирається між 16-4 = 12 і 16 + 4 = 20 хв , Інші розподіли часу обслуговування доступні через GPSS FUNCTION (дещо іншого поняття, ніж функції в інших мовах програмування). За цей час, інші операції будуть мати можливість переміщатися по моделі, блокуючи деякі інші об'єкти, які можуть існувати в моделі, але не Джо, бо цей об'єкт зайнятий замороженому клієнтом. Після заданого часу, клієнт прокинеться, перейде до наступного твердження, яке звільнить Джо, і Terminate. Тоді наступна транзакція на попередньому етапі, тобто клієнт сидить на стільці, зможе SEIZE Джо. Для того, щоб вибрати «наступну» угоду, GPSS використовує пріоритетність перший прийшов перший обслужений, . Інші стратегії вибору можуть бути запрограмовані шляхом прямого маніпулювання майбутнім ланцюгом подій для сутності.
Паралельно з цим першим сегментом, що імітує поведінку клієнта, друга модель сегмент імітує кінець дня. Під час 480 хв = 8 год об'єкт Generate, який буде Terminate на наступному блоці. На цей раз, TERMINATE як параметр 1, що означає спеціальний лічильник зменшується на 1. Коли лічильник досягає 0, програма зупиняється, і вихід друкується. Цей спеціальний лічильник встановлюється з твердженням Start. У прикладі, він встановлюється в одиницю, таким чином, моделювання завершиться після одного циклу роботи 480 хв в модельованому часі. На виході програма дасть наступні результати
FACILITY AVERAGE NUMBER AVERAGE SEIZING PREEMPTING UTILIZATION ENTRIES TIME/TRAN TRANS. NO. TRANS. NO. Joe .860 26 15.884 26 QUEUE MAXIMUM AVERAGE TOTAL ZERO PERCENT AVERAGE $AVERAGE TABLE CURRENT CONTENTS CONTENT ENTRIES ENTRIES ZEROS TIME/TRANS TIME/TRANS NUMBER CONTENTS Chairs 1 .160 27 12 44.4 2.851 5.133 1 $AVERAGE TIME/TRANS = AVERAGE TIME/TRANS EXCLUDING ZERO ENTITIES
Це вказує на те, що Джо був зайнятий 86,0% часу, підстриг 26 клієнтів і стрижка займала 15,88 хвилин в середньому. До речі, Джо підстриг 26 клієнтів, коли моделювання було закрито.Ніякого програмованого передбачення не було прийнято для перукаря, щоб закінчити стрижку перед тим, щоб закрити магазин.
Він також вказує, що максимум 1 клієнт був в очікуванні своєї черги, фактично, середня кількість очікуючих клієнтів була 0,160. В цілому 27 клієнтів були в черзі, так що 27 клієнтів все ще сиділи, чекаючи своєї черги, коли Джо закрив магазин. З цих 27 клієнтів, 12 були подані без необхідності чекати. Фактично, черга була порожня 44,4% часу. Середній час очікування склав 2,851 хв, а середній час очікування 15 = 27-12 клієнтів, які насправді чекали було 5,133 хв.
Посилання
- Wolverine Software [ 2 травня 2017 у Wayback Machine.] GPSS/H version
- Minuteman Software [ 7 травня 2017 у Wayback Machine.], a company that provides some implementations
- aGPSS: PC&Mac: Targeted for education and professionals [ 8 травня 2017 у Wayback Machine.]
- Java General Purpose Simulation System.
- http://elit.lnu.edu.ua/pdf/6_7.pdf [ 23 січня 2022 у Wayback Machine.] Б.Коман Оцінювання поверхневих характеристик твердих тіл звикористанням імітаційного моделювання . ЛНУ ім. І. Франка
- http://prima.lnu.edu.ua/faculty/mechmat/Departments/mathstat/DVVS/2015-16/magistry/imitaciyne-modelyuvannia-system-masovoho-obsluhovuvannia.pdf [ 8 квітня 2017 у Wayback Machine.] Імітаційне моделювання систем масового обслуговування
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
GPSS z angl General Purpose Simulation System sistema modelyuvannya zagalnogo priznachennya ce mova programuvannya kotra priznachena dlya imitacijnogo modelyuvannya riznomanitnih sistem v osnovnomu masovogo obslugovuvannya V originali mala nazvu Gordon s Programmable Simulation System na chest rozrobnika Dzhefri Gordona nazva bula zminena koli yiyi virishili vipuskati yak komercijnij produkt V zagalnih risah ce mova zagalnogo koristuvannya kotra dozvolyaye rozv yazuvati zadachi pokrokovo po chasu Sistema v cij movi modelyuyetsya yak operaciyi vhodu v sistemu i peredayetsya vid odnogo servisu do inshogo u viglyadi blokiv Cya sistema ye dovoli zruchnoyu dlya napriklad modelyuvannya fabriki Cya mova ye mensh gnuchkoyu porivnyano z deyakimi inshimi movami ale cherez svoyu prostotu vona ye populyarnoyu Filosofiya GPSSProgramnij kod ciyeyu movoyu mozhe zdivuvati bagatoh programistiv kotri mayut dosvid roboti z funkcionalnimi procedurnimi chi ob yektno oriyentovanimi movami Cya mova proektuyetsya yak sutnosti kotri ruhayutsya vprodovzh vikonannya modeli Taka sutnist nazivayetsya Tranzakciyeyu Peredbachayetsya sho vona ruhayetsya vid bloku do bloku pid blokom rozumiyetsya linijka kodu kotra predstavlyaye odinichnu diyu kotra vplivaye na samu tranzakciyu abo na yakis inshi sutnosti Dlya novachka cya mova za strukturoyu nagaduvatime figurku z LEGO de bloki vibrani lyudinoyu kotra skladaye model specifichni funkciyi Vid pershogo proektuvannya u 1960 roci evolyuciya programi pishla vid majnfrejmiv takih yak IBM ta VAC do portativnih komp yuteriv kotri na toj moment nabirali populyarnist Bloki mozhut buti ob yektno oriyentovanimi napr birzha praci abo dialogovimi napr signali v elektronnih komponentah GPSS zberigaye shlyah rozvitku tomu na vihodi mozhna otrimati standartnij zvit vikonannya Sutnosti mozhut buti shiroko klasifikovani u Resursah statistichnih sutnostej ta obchislyuvalnih sutnostyah Resursi taki yak ob yekti i sistemi zberigannya vidobrazhayut obmezheni resursi potuzhnosti Obchislyuvalni sutnosti taki yak zminni funkciyi ta generatori vipadkovih znachen vikoristovuyutsya dlya vidobrazhennya stanu sutnostej abo elementiv yihnogo seredovisha a statistichni ob yekti taki yak chergi abo tablici gistogrami zbir statistichnoyi informaciyi sho stanovit interes Priklad programiNastupnij kod ce faktichno najprostisha programa movoyu GPSS Meta polyagaye v tomu shob imituvati odin den roboti perukarni Kliyenti pribuvayut u vipadkovomu postijnomu potoci vhodyachi v magazin v cherzi yaksho cirulnik zajnyatij to yih strizhka pidlyagaye pravilu pershij prijshov pershij obsluzhenij a potim pokinuti magazin Mi hotili b znati serednyu i maksimalnu chergu a takozh kilkist kliyentiv SIMULATE Define model Model segment 1 GENERATE 18 6 Customer arrive every 18 6 mn QUEUE Chairs Enter the line SEIZE Joe Capture the barber DEPART Chairs Leave the line ADVANCE 16 4 Get a hair cut in 16 4 mn RELEASE Joe Free the barber TERMINATE Leave the shop Model segment 2 GENERATE 480 Timer arrives at time 480 mn TERMINATE 1 Shut off the run Control cards START 1 Start one run END End model Sama programa znahoditsya v programnih duzhkah Simulate ta End i podilena na modelni segmenti i kontrolnih kart Pershij segment modeli ce vidviduvach Blok Generate stvoryuye potik operacij i grafikiv dlya vhodu v model z chasom pributtya rivnomirno rozpodilenim v diapazoni 18 6 Vidpovidalnist programista interpretuvati ci tranzakciyi yak kliyentiv i zrozumiti sho chas povinni buti pidrahovano protyagom dekilkoh hvilin Tranzakciyi pochinayut ruhatis vid Generate vid bloku do bloku dopoki ne dosyagnut poziciyi Terminate Za normalnih umov tranzakciya ruhayetsya vid odnogo bloku do drugogo otzhe tranzakciya vidviduvach pokidaye Generate i popadaye u Queue Chairs Cej blok simulyuye chergu ochikuvannya i zberigaye statistiku poryadku V comu prikladi materializuyutsya cherga krisel i v kinci simulyaciyi okrim inshih rechej mi matimemo she j maksimalnu dovzhinu chergi Blok QUEUE vimagaye im ya chergi yak parametr tomu sho bilshe nizh odna cherga mozhe isnuvati v modeli Kozhen z nih pov yazanij z blokom Depart yakij spracovuye koli tranzakciya zalishaye chergu GPSS zapam yatovuye yaki tranzakciyi v cherzi tak sho mozhna znati serednij chas shob pereglyanuti sho niyaka tranzakciya ne pokidaye chergu bez poperednogo vvedennya v nogo Pislya bloku Queue Chairs tranzakciya bude namagatisya perejti do SEIZE Joe blok imitaciyi ob yekta z imenem Dzho Ob yekt modeli odinarnih serveriv mistkij Yaksho ob yekt zajnyatij SEIZE bude zaboronyati vhid U prikladi kliyent bude chekati v bloci QUEUE Yaksho vona vilna abo yak tilki vona stane dostupnoyu to tranzakciyi bude dozvoleno zahopiti ob yekt poznachiti jogo yak zajnyatij dlya inshih ugod i pochati vidlik chasu obslugovuvannya ta inshi statistichni dani poki zh tranzakciya ne prohodit vidpovidnij RELEASE Dzho blok Pari Seize RELEASE pov yazani z imenem ob yekta oskilki bagato nezalezhnih ob yektiv mozhut isnuvati v modeli Voni mozhut modelyuvati operatori yak perukar remontnik agent ale takozh j chastini obladnannya yak zhuravel zapravna stanciya dokument avtorizaciyi tosho naspravdi nichogo z yemnistyu odinicya Dlya imitaciyi kilka paralelnih serveriv yak komanda z p yati perukariv abo pich z yemnistyu 10 GPSS vikoristovuye ob yekti nazvani Nakopichuvachami Pislya togo yak kliyent zahoplyuye Dzho vona perehodit do nastupnogo operatora kotrim ye Advance 16 4 zavdannyam yakogo ye zamoroziti ob yekt protyagom zadanogo vidrizka chasu tut vipadkove chislo obirayetsya mizh 16 4 12 i 16 4 20 hv Inshi rozpodili chasu obslugovuvannya dostupni cherez GPSS FUNCTION desho inshogo ponyattya nizh funkciyi v inshih movah programuvannya Za cej chas inshi operaciyi budut mati mozhlivist peremishatisya po modeli blokuyuchi deyaki inshi ob yekti yaki mozhut isnuvati v modeli ale ne Dzho bo cej ob yekt zajnyatij zamorozhenomu kliyentom Pislya zadanogo chasu kliyent prokinetsya perejde do nastupnogo tverdzhennya yake zvilnit Dzho i Terminate Todi nastupna tranzakciya na poperednomu etapi tobto kliyent sidit na stilci zmozhe SEIZE Dzho Dlya togo shob vibrati nastupnu ugodu GPSS vikoristovuye prioritetnist pershij prijshov pershij obsluzhenij Inshi strategiyi viboru mozhut buti zaprogramovani shlyahom pryamogo manipulyuvannya majbutnim lancyugom podij dlya sutnosti Paralelno z cim pershim segmentom sho imituye povedinku kliyenta druga model segment imituye kinec dnya Pid chas 480 hv 8 god ob yekt Generate yakij bude Terminate na nastupnomu bloci Na cej raz TERMINATE yak parametr 1 sho oznachaye specialnij lichilnik zmenshuyetsya na 1 Koli lichilnik dosyagaye 0 programa zupinyayetsya i vihid drukuyetsya Cej specialnij lichilnik vstanovlyuyetsya z tverdzhennyam Start U prikladi vin vstanovlyuyetsya v odinicyu takim chinom modelyuvannya zavershitsya pislya odnogo ciklu roboti 480 hv v modelovanomu chasi Na vihodi programa dast nastupni rezultatiFACILITY AVERAGE NUMBER AVERAGE SEIZING PREEMPTING UTILIZATION ENTRIES TIME TRAN TRANS NO TRANS NO Joe 860 26 15 884 26 QUEUE MAXIMUM AVERAGE TOTAL ZERO PERCENT AVERAGE AVERAGE TABLE CURRENT CONTENTS CONTENT ENTRIES ENTRIES ZEROS TIME TRANS TIME TRANS NUMBER CONTENTS Chairs 1 160 27 12 44 4 2 851 5 133 1 AVERAGE TIME TRANS AVERAGE TIME TRANS EXCLUDING ZERO ENTITIES Ce vkazuye na te sho Dzho buv zajnyatij 86 0 chasu pidstrig 26 kliyentiv i strizhka zajmala 15 88 hvilin v serednomu Do rechi Dzho pidstrig 26 kliyentiv koli modelyuvannya bulo zakrito Niyakogo programovanogo peredbachennya ne bulo prijnyato dlya perukarya shob zakinchiti strizhku pered tim shob zakriti magazin Vin takozh vkazuye sho maksimum 1 kliyent buv v ochikuvanni svoyeyi chergi faktichno serednya kilkist ochikuyuchih kliyentiv bula 0 160 V cilomu 27 kliyentiv buli v cherzi tak sho 27 kliyentiv vse she sidili chekayuchi svoyeyi chergi koli Dzho zakriv magazin Z cih 27 kliyentiv 12 buli podani bez neobhidnosti chekati Faktichno cherga bula porozhnya 44 4 chasu Serednij chas ochikuvannya sklav 2 851 hv a serednij chas ochikuvannya 15 27 12 kliyentiv yaki naspravdi chekali bulo 5 133 hv PosilannyaWolverine Software 2 travnya 2017 u Wayback Machine GPSS H version Minuteman Software 7 travnya 2017 u Wayback Machine a company that provides some implementations aGPSS PC amp Mac Targeted for education and professionals 8 travnya 2017 u Wayback Machine Java General Purpose Simulation System http elit lnu edu ua pdf 6 7 pdf 23 sichnya 2022 u Wayback Machine B Koman Ocinyuvannya poverhnevih harakteristik tverdih til zvikoristannyam imitacijnogo modelyuvannya LNU im I Franka http prima lnu edu ua faculty mechmat Departments mathstat DVVS 2015 16 magistry imitaciyne modelyuvannia system masovoho obsluhovuvannia pdf 8 kvitnya 2017 u Wayback Machine Imitacijne modelyuvannya sistem masovogo obslugovuvannya