Кіріспе
Симуляциялық жүйе тілі – бағдарламалау тілі. Жалпы мақсаттағы симуляциялық жүйе (GPSS) – дискретті оқиғалар симуляциясына қолданылатын симуляциялық тіл. Ол кезек жүйелерін модельдеуде ерекше пайдалы, себебі көптеген статистикалық мәліметтер автоматты түрде жинақталады. Типтік симуляцияда жүйеде транзакциялар жасалады (әдетте белгілі бір интервалмен), олар белгілі бір ережелерді орындайды (мысалы, ресурсты пайдалану, күту, беру) және содан кейін симуляциядан алынып тасталады.
a programming language
General Purpose Simulation System (GPSS) is a simulation language used for discrete event simulations. It is especially useful in the modelling of queuing systems, with many statistics being collected automatically. The typical simulation consists of Transactions being generated in the system (usually at a certain interval), performing a defined set of rules (like use a resource, wait, transfer), and being removed from the simulation.
Тарих
GPSS 1960 жылдары IBM компаниясының Advanced Systems Development Division (ASDD) қызметкері Джеффри Гордон әзірлеген. Бұл бөлім телеөңдеу жүйелерін жобалау бойынша зерттеулерге белсенді қатысып, компьютерлік ресурстарды пайдаланудың экономикалық тепе-теңдігін және серверлік терминалдар арасындағы ортақ желілерді қамтамасыз етуге тырысты. Симуляциялық жүйе, сол кезде Гордон симуляторы деп аталған, ASDD-де телеөңдеу жүйелерін зерттеуде кеңінен танымал болды. Кейіннен ол 1960 жылдың 25 қазанында IBM-нің ішкі меморандумында бекітіліп, құжатталды. 1961 жылдың қысы мен жазы арасында үш бағдарламашыдан (Гордон да олардың арасында) тұратын топ симуляциялық жүйені жаңа алгоритммен және жаңа блок түрлерімен қайта жазды. Ол 1961 жылдың 27 қыркүйегінде 25 блок түрімен ресми түрде IBM қолдауымен шығарылды. Осы кезде Гордон симуляциялық жүйедегі жұмысын тоқтатты. 1963 жылы GPSS II 32 блок түрімен шығарылды. Ол жүйелік сандық атрибуттарды енгізді, олар сақтаудың ағымдағы мазмұнын, кезек ұзақтығын немесе ағымдағы уақытты бақылауға мүмкіндік берді. 1965 жылы GPSS III шығарылды. Ол IBM Systems 7090/94 және 7040/44 жүйелері үшін қолжетімді болды. 1967 жылы GPSS/360 жаңа шыққан System 360 жүйесінде жұмыс істеу үшін шығарылды. 1970 жылы GPSS V 49 блок түрімен шығарылды. 1980 жылдары GPSS/VAC және GPSS/PC шығарылды. Бұл тіл лицензияланбағанға дейін IBM-нің соңғы ресми шығарылымдары болып көрінеді. Содан кейін IBM 360, Univac 1108 және CDC жүйелері үшін шығарылымдар жасалды. Уақыт өте келе, DEC-тің VAX, ірі масштабтағы Univac жүйелері үшін арнайы APL нұсқасы және Macintosh сияқты жүйелер үшін басқа да іске асырулар жасалды. 2001 жылы GPSS-тің жаңа мүмкіндіктерімен бірге Windows бағдарламасы GPSS World шығарылды. Ол PLUS (Паскальге ұқсас тіл) сценарийлерін, графикалық жүйе күйін көрсетуді, графиктік және оптимизациялық эксперименттерді қамтиды. 2009 жылы GPSS симуляциялық тілін оқыту үшін JGPSS (Java General Purpose Simulation System) деп аталатын Java-ға негізделген графикалық құрал әзірленді.
Сипаттама
GPSS симуляциясы Ассамблея стиліндегі "блок-схема тілімен" жазылады, оның көптеген түрлі, бір мақсатты командалары ("блоктар") транзакция ағынын, статистиканы жинауды және айнымалыларды басқару үшін қолданылады. Симуляцияларда GENERATE командасы арқылы транзакциялардың кіру нүктелері болады, мысалы, дүкенге кіретін клиент. Содан кейін, әрекеттер Құрылыстар/Қойманы (кассир сияқты) пайдалану, күту, статистиканы сақтау және т.б. арқылы орындалады. Ақырында, симуляцияланған транзакция TERMINATE командасы арқылы симуляциядан шығады. Әр команданың сөзі "бақылау" деп аталады. Блоктар объектіге бағытталған (мысалы, жұмыс цехындағы машиналар) немесе транзакцияға бағытталған (мысалы, өндіріс процесінің бөлігі, электрондық компоненттердегі сигналдар немесе бюрократиялық процедурадағы құжаттар) болуы мүмкін. GPSS есеп беру үшін статистиканы автоматты түрде қадағалайды. Объектілерді ресурстар, есептеу объектілері және статистикалық объектілер деп жіктеуге болады. Құрылыстар мен қоймалар сияқты ресурстар шектеулі сыйымдылықты білдіреді. Ампер-айнымалылар (айнымалылар), функциялар және кездейсоқ генераторлар сияқты есептеу объектілері транзакциялардың күйін немесе олардың орта элементтерін көрсету үшін қолданылады. Статистикалық объектілер, мысалы, кезектер немесе кестелер (гистограммалар) қызығушылық тудыратын статистикалық ақпаратты жинайды.
Транзакциялар
ПрефиксМағынасыPjБағдарлама өңдеп жатқан ағымдағы транзакцияның параметрі. M1Ағымдағы транзакцияның транзит уақыты. MPjАғымдағы транзакцияның аралық транзит уақыты. PRАғымдағы транзакцияның басымдығы (0-127).
Тізбектер
ПрефиксМағынасыCHjБерілген пайдаланушы тізбегіндегі транзакция нөмірі, яғни ағымдағы санау. CAjПайдаланушы тізбегіндегі j транзакциялардың орташа саны. CCjПайдаланушы тізбегіндегі j жазбалардың жалпы саны. CTjПайдаланушы тізбегіндегі j транзакцияға жұмсалатын орташа уақыт.
Блоктар
ПрефиксМағынасыNj Белгілі бір блокқа кірген транзакциялардың жалпы саны. Бұл санау бағдарламамен автоматты түрде сақталады. Мысал: SAM блогындағы кірулер саны үшін N$SAM. Бұл санауға ағымдағы блоктан өтетін транзакция кірмейді. Wj Күту саны, яғни блок-схеманың белгіленген блогында күтіп тұрған транзакциялардың саны. Бұл санау да бағдарламамен автоматты түрде сақталады. Мысал: HOLD блогындағы ағымдағы күту саны үшін WSHOLD. Бұл санауға да ағымдағы блоктан өтетін транзакциялар кірмейді.
Саны
Алдынан қосылатын белгіМәніKjБұл сан тұрақты сан екенін көрсетеді. Мысалы, 3276 бүтін саны үшін K3276, немесе нөл бүтін саны үшін KO. RN(x)Есептелген кездейсоқ сан (1<=x<=8). Санның мәні 0-ден 999-ға дейінгі бүтін сан болады, егер бұл сан функцияның тәуелсіз айнымалысы ретінде қолданылмаса. Бұл жағдайда сан нөлге тең немесе одан үлкен, бірақ бірден кіші бөлшек сан болады. Екі жағдайда да, көрсетілген диапазон ішіндегі барлық мәндер бірдей ықтималды деп есептелуі мүмкін. C1Симулятор сағатының қазіргі мәні. Бұл шама бағдарламамен автоматты түрде сақталады.
Сақтау
ПрефиксіМағынасыSj Блок-схемадағы белгіленген сақтаудың мазмұны. Көлемі ENTER және LEAVE блоктары арқылы өзгертілуі мүмкін. Мысал: S2 – 2-ші сақтаудың мазмұны (саны). Rj – белгіленген сақтаудағы бос орын бірліктерінің саны. Бұл көлем ENTER және LEAVE блоктары арқылы өзгертілуі мүмкін. Мысал: R195 – 195-ші сақтауда қалған бос орын. SRj Сақтаудың j пайдаланылуы мыңнан бір бөлікпен, яғни пайдаланылу 0,65 болса, есептелген мән 650 болады. SAj Сақтаудың j орташа мазмұны (бүтін санға дейін жуықтатылған). SMj Сақтаудың j ең жоғары мазмұны. Бұл көлем бағдарламамен автоматты түрде сақталады. SCj Сақтау үшін J жазбалардың саны. Бұл көлем бағдарламамен автоматты түрде сақталады. STj Әрбір транзакцияның сақтауды j пайдалануының орташа уақыты (бүтін санға дейін жуықтатылған).
Мекемелер
ПрефиксМағынасыFj Блок-схемадағы көрсетілген қондыстың күйі. Егер қондыс қолжетімді болса, бұл мән нөлге тең, әйтпесе, бірге тең. Бұл сан РЕЗЕРВТЕУ, БОСАТУ, БАСЫП АЛУ және ҚАЙТАРУ блоктары арқылы өзгертілуі мүмкін. Мысалы: 20 қондыстың күйі үшін F20. FRj Қондыс j-нің мыңнан бір бөлігімен пайдалану деңгейі, яғни пайдалану деңгейі 0,88 болса, FRj мәні 880 болады. FCj Қондыс j үшін жазбалар саны. FTj Әрбір транзакция қондыс j-ні пайдаланған орташа уақыт (қырқылған).
Топтар
ПрефиксМағынасыGj j тобының қазіргі мүшелерінің саны.
Кезек
ПрефиксіМағынасыQj Блок-схемадағы белгілі бір кезектің ұзындығы. Бұл шама КЕУЕ және DEPART блоктары арқылы өзгертілуі мүмкін. Мысалы: Q50 – 50-ші кезектің мазмұны үшін. QAjJ кезегінің орташа мазмұны (бүтінге дейін қысқартылған). QMjJ кезегінің ең жоғары мазмұны. Бұл шама бағдарламамен автоматты түрде сақталады. QCjJ кезегіндегі жазбалардың саны. Автоматты түрде сақталады. QZjJ кезегіндегі жазбалардың саны. Автоматты түрде сақталады. QTjӘрбір транзакцияның J кезегінде өткізген орташа уақыты (нөлдік жазбаларды қоса алғанда). Сілтеме жасалғанда мән бүтін санға дейін қысқартылады. QXjӘрбір транзакцияның J кезегінде өткізген орташа уақыты (нөлдік жазбаларды қоспағанда). Қысқартылған.
integer. QXjAverage time each transaction was on queue j (excluding zero entries). Truncated.
Кестелер
ПрефиксіМағынасыTBj Пайдаланушы анықтаған белгілі бір гистограмма түріндегі кестедегі есептелген орташа мән. TABULATE блогы осы кестелердің біріне мәндерді енгізу үшін қолданылады. Есептелген орташа мәннің бөлшек бөлігі болуы мүмкін, бірақ егер ол функцияның тәуелсіз айнымалысы ретінде қолданылмаса, сақталмайды. Мысал: 42-кестедегі есептелген орташа мән үшін TB42. TCj j кестесіндегі жазбалар саны. TDj j кестесінің есептелген стандарттық қатесі.
Құндылықтарды сақтау
ПрефиксіМағынасыXjТолық сөзді сақтау мәнінің мазмұны j. XHjЖарты сөзді сақтау мәнінің мазмұны j. MXj(a,b)Толық сөзді сақтау матрицасының мазмұны j, a қатары, b бағаны. (a және b кез келген басқа SNA болуы мүмкін) MHj(a,b)Жарты сөзді сақтау матрицасының мазмұны j, a қатары, b бағаны.
Есептеу атрибуттары
ПрефиксМәніFNjA есептелген функцияның мәні. GENERATE, ADVANCE немесе ASSIGN блоктарында функция модификаторы ретінде қолданылған жағдайда ғана бүтін бөлігі сақталады. VjСтандартты сандық атрибуттардың арифметикалық комбинациясы, бұл айнымалы оператор деп аталады және пайдаланушы анықтайды. Тек бүтін бөлігі сақталады. (4-тарауды қараңыз.) BVj Бульдік айнымалы j-нің есептелген мәні (1 немесе 0).