GPS
![]() | |
![]() Моделирование мира GPSS | |
Пример кода | |
---|---|
GENERATE 15,5
SEIZE Barber
ADVANCE 10,2
RELEASE Barber
TERMINATE 1
| |
Разработано | Джеффри Гордон |
Разработчик | ИБМ |
Впервые появился | 1961 год |
Расширения имен файлов | .GPS |
Основные реализации | |
Мир GPSS, JGPSS |
Система моделирования общего назначения ( GPSS ) — это язык моделирования, используемый для моделирования дискретных событий . Это особенно полезно при моделировании систем массового обслуживания, поскольку многие статистические данные собираются автоматически. [1] Типичная симуляция состоит из транзакций, которые генерируются в системе (обычно через определенный интервал), выполняют определенный набор правил (например, использование ресурса, ожидание, передача) и удаляются из симуляции.
История
[ редактировать ]GPSS был разработан в 1960-х годах Джеффри Гордоном , сотрудником отдела разработки передовых систем IBM (ASDD). Это подразделение активно занималось исследованиями в области проектирования систем телеобработки, пытаясь достичь экономического баланса использования компьютерных ресурсов и общих линий между серверными терминалами. Система моделирования, известная тогда как Симулятор Гордона, стала очень популярной при изучении систем телеобработки в рамках ASDD. Впоследствии это было исправлено и задокументировано 25 октября 1960 года во внутреннем меморандуме IBM. [2] Между зимой и летом 1961 года группа из трех программистов (включая Гордона) переписала систему моделирования, добавив новый алгоритм и новые типы блоков. Он был официально выпущен как поддерживаемая программа IBM 27 сентября 1961 года с 25 типами блоков. В этот момент Гордон прекратил работу над системой моделирования.
В 1963 году был выпущен GPSS II с 32 типами блоков. В нем были представлены системные числовые атрибуты, которые позволяли отслеживать текущее содержимое Storage , длину Queue или текущее время часов.
В 1965 году был выпущен GPSS III. Он был доступен для IBM Systems 7090/94 и 7040/44 .
В 1967 году был выпущен GPSS/360 для работы на недавно выпущенной System 360 .
В 1970 году был выпущен GPSS V с 49 типами блоков.
В 1980-х годах были выпущены GPSS/VAC и GPSS/PC. Похоже, это последние официальные выпуски лейбла IBM до того, как язык стал нелицензионным. [3]
Впоследствии были релизы для IBM 360 , [4] Univac 1108 и CDC. [5] [6] [7]
Со временем для систем были разработаны и другие реализации, в том числе VAX от DEC , специализированная версия APL для крупномасштабных систем Univac, [8] и Макинтош . [9]
В 2001 году программа для Windows GPSS World [10] был выпущен с новыми функциями GPSS. Он включает в себя написание сценариев с использованием PLUS ( язык, подобный Pascal ), графическое отображение состояния системы, построение графиков и эксперименты по оптимизации.
графический инструмент на основе Java под названием JGPSS (Java General Purpose Simulation System). В 2009 году для обучения языку моделирования GPSS был разработан [11] [12]
Описание
[ редактировать ]Моделирование GPSS написано на «языке блок-схем» в стиле ассемблера со множеством различных одноцелевых команд («блоков») для управления потоком транзакции , сбором статистики и переменными.
Моделирование имеет точки входа в транзакции через GENERATE
команда, например, когда покупатель заходит в магазин. Далее выполняются действия через требование Помещения / Хранилища (как у кассира), ожидание, сохранение статистики и т.д. Наконец, моделируемая транзакция выходит из симуляции через TERMINATE
команда. Каждый командный глагол называется «управлением».
Блоки могут быть ориентированы на объекты (например, машины в мастерской) или на транзакции (например, части незавершенного производства, сигналы в электронных компонентах или документы в бюрократических процедурах). GPSS автоматически отслеживает статистику для отображения в отчете.
Сущности можно в общих чертах классифицировать на ресурсы, вычислительные сущности и статистические сущности. [13] Ресурсы, такие как объекты и хранилища, представляют собой ресурсы с ограниченной емкостью. Вычислительные объекты, такие как амперпеременные (переменные), функции и генераторы случайных чисел, используются для представления состояния транзакций или элементов их среды. Статистические объекты, такие как очереди или таблицы (гистограммы), собирают интересующую статистическую информацию.
Основные команды транзакций
[ редактировать ]Транзакции могут:
- Автоматический вход в симуляцию (GENERATE)
- Используйте объект или хранилище (SEIZE/ENTER соответственно)
- Прекратить использование объекта или хранилища (RELEASE/LEAVE соответственно)
- Подождите (ВПЕРЕД)
- Перенос в другой участок кода (TRANSFER)
- Выйти из моделирования (ПРЕКРАТИТЬ)
Наряду с этими основными задачами они также могут хранить параметры с помощью команды ASSIGN. Транзакции неявно разделены в коде.
В коде может быть несколько транзакций, которые происходят одновременно. Транзакция начинается с GENERATE и заканчивается TERMINATE. Промежуточный код потенциально может быть разделен между несколькими транзакциями с помощью команды TRANSFER, но, кроме того, жизненные циклы ваших транзакций будут разделены. Это помогает добавлять пробелы между действиями одной транзакции по сравнению с другой.
СОЗДАТЬ
[ редактировать ]GENERATE 0.1
Транзакция генерируется каждые 0,1 единицы времени.
GENERATE 15,4
Транзакция генерируется каждые 15 единиц времени, плюс-минус 4 единицы времени.
ПРОДВИГАТЬ
[ редактировать ]Чтобы транзакция ожидала, используйте команду ADVANCE. Он имеет те же аргументы, что и GENERATE.
ADVANCE 10,6
Транзакция ожидает 10+-6 секунд.
ЗАХВАТЬ, ВЫПУСТИТЬ (Объекты)
[ редактировать ]Чтобы использовать объект , который можно использовать только один раз, используйте команду SEIZE. Чтобы прекратить его использование, используйте команду RELEASE.
GENERATE 30,5 ; Generate a customer every 30+-5 time units SEIZE Barber ; Use a facility ADVANCE 15,4 ; Wait 15+-4 time units RELEASE Barber ; Stop using the facility TERMINATE 1 ; Leave the barber shop
Если вы хотите использовать более одного раза одновременно, используйте Storage .
ВОЙДИТЕ, ВЫЙДИТЕ (Хранилища)
[ редактировать ]Seating STORAGE 100 ; 100 people allowed in lounge seating GENERATE 10,5 ; Generate a person every 10+-5 time units ENTER Seating,1 ; Person sits down ADVANCE 15,4 ; Wait 15+-4 time units LEAVE Barber,1 ; Person stops sitting TERMINATE 1 ; Exit the seating area
Таким образом, на сиденье могут одновременно сидеть несколько человек. Если бы это был объект (с использованием SEIZE/RELEASE), он заблокировал бы других, кто пытался использовать этот ресурс.
Команда ENTER принимает ссылку на хранилище в качестве аргумента A, а резервируемую сумму — в качестве аргумента B. Аргументы команды LEAVE такие же.
ПРЕКРАТИТЬ
[ редактировать ]Чтобы удалить транзакцию, используйте TERMINATE.
Необязательный аргумент уменьшает счетчик завершения — переменную, выбираемую пользователем при запуске моделирования. Допустим, вы хотите протестировать 100 клиентов: вы начнете моделирование с START 100
. TERMINATE 1
в конце каждой транзакции начальное значение 100 будет уменьшаться на 1 (99, 98, 97...), пока оно не достигнет нуля. На этом этапе моделирование останавливается и возвращаются результаты. Если вы опустите аргумент в TERMINATE, он будет считаться равным 0. Это означает, что ваша симуляция будет работать вечно (если, конечно, у вас нет другого TERMINATE, который уменьшает этот счетчик.
Таймер
[ редактировать ]Чтобы ваша программа работала в течение заранее определенного времени, убедитесь, что ни один из ваших TERMINATES не уменьшает счетчик, и включите такой раздел:
GENERATE ; Generate one transaction ADVANCE 100 ; Run for 100 time units TERMINATE 1 ; End
Затем запустите программу с помощью START 1. Она будет работать 100 единиц времени.
НАЗНАЧИТЬ (Параметр «Метаданные»)
[ редактировать ]Используйте блок управления ASSIGN, чтобы присвоить значение параметру транзакции. Вызывается с помощью Pj (j=номер параметра)
ASSIGN 2,V$Orderqty ;Parameter 2=Order quantity Custwait ADVANCE 5 ;Lead time is 5 days ENTER Stock,P2 ;Stock increases by P2
ASSIGN : блоки ASSIGN используются для размещения или изменения значения в параметре транзакции.
Примеры
[ редактировать ]парикмахерская
[ редактировать ]Следующий пример взят из Simulation using GPSS : [14] это «Привет, мир!» 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 Joe
блокировать.
The SEIZE
/ RELEASE
пары связаны по названию объекта, поскольку в модели может существовать множество независимых объектов. Они могут моделировать операторов, таких как парикмахер, ремонтник, агент, а также элементы оборудования, такие как кран, заправочная станция, разрешительный документ и т. д., фактически все, что имеет мощность один. Для моделирования нескольких параллельных серверов, например, команды из пяти парикмахеров или печи вместимостью 10 человек, GPSS использует объекты с именами STORAGE
с.
После того как клиент схватил Джо, она переходит к следующему утверждению: ADVANCE 16,4
, задача которого — заморозить объект на заданный период времени, здесь случайное число выбирается между 16-4=12 и 16+4=20 минут. Другие распределения времени обслуживания доступны через GPSS. FUNCTION
(понятие, отличное от функции в других языках программирования). В течение этого времени другим транзакциям будет разрешено проходить через модель, блокируя некоторые другие объекты, которые могут существовать в модели, но не Джо, поскольку этот объект занят замороженным клиентом. По истечении положенного времени клиент проснется, перейдет к следующему утверждению, которое освободит Джо, и TERMINATE
.
Тогда следующая транзакция в предыдущем блоке, то есть клиент, сидящий на стуле, сможет SEIZE Joe
. Для выбора «следующей» транзакции 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 мин.
Стрижки
[ редактировать ]* Pg 108 Q 18 * A one-chair unisex hair shop has arrivals at the rate of one every 20+-15 minutes. * One-half of the arriving customers want a dry cuts, 30% want a style, and 20% * want a trim only. A dry cut takes 15+-5 minutes, a style cut takes 25+-10 minutes, * and a trim takes 10+-3 minutes. Simulate 50 customers coming through the hair * shop. Compare the given proportion of service rqequests of each type with the * simulated outcome. Are the results reasonable? Base your answer on the binomial * distribution. Arrivals FUNCTION RN1,D4 ; 1=dry cut, 2=style, 3=trim 0.0,0/0.5,1/0.8,2/1.0,3 GENERATE 20,15 ; Generate arrivals ASSIGN 1,FN$Arrivals ; Assign arrival type to P1 Test1 TEST E P1,1,Test2 ; If P1=1, transfer to DryCut. Else Test2 TRANSFER ,DryCut Test2 TEST E P1,2,TrimHair ; If P1=2, transfer to StyCut. Else Trim. TRANSFER ,StyCut DryCut SEIZE Chair ADVANCE 15,5 SAVEVALUE WantedDryCut+,1 TRANSFER ,Term StyCut SEIZE Chair ADVANCE 25,10 SAVEVALUE WantedStyleCut+,1 TRANSFER ,Term TrimHair SEIZE Chair ADVANCE 10,3 SAVEVALUE WantedTrimHair+,1 Term RELEASE Chair TERMINATE 1
Супермагистраль
[ редактировать ]* Pg 108 Q 14 * A superhighway connects one large metropolitan area to another. A vehicle leaves * the first city every 20+-15 seconds. Twenty percent of the vehicles have 1 pass- * enger, 30% of the vehicles have 2 passengers, 10% have 3 passengers, and 10% * have 4 passengers. The remaining 30% of ehicles are buses which carry 40 * people. It takes 60+-10 minutes for a vehicle to travel between the two metro- * politan areas. How long does it take for 5000 people to arrive in the second city? Passenger FUNCTION RN1,D6 0.0,0/0.2,1/0.5,2/0.6,3/0.7,4/1.0,40 GENERATE 20,15 ; New vehicle enters superhighway (seconds) ASSIGN 1,FN$Passenger ; Assign number of passengers to P1 ADVANCE (60#60),(10#60) ; Travel (minutes to seconds) TERMINATE P1 ; Decrease the count by number of passengers * End time is in seconds. Must be divided by 60. * RESULT: 10958 seconds => 182.645 minutes = 3 hr 2 min
Префиксы данных
[ редактировать ]Источник: [15]
Транзакции
[ редактировать ]Префикс | Значение |
---|---|
Пиджей | Параметр транзакции, текущей обрабатываемой программой. |
М1 | Время прохождения текущей транзакции. |
МИД | Промежуточное время прохождения текущей транзакции. |
пиар | Приоритет текущей транзакции (0-127). |
Цепи
[ редактировать ]Префикс | Значение |
---|---|
CHj | Текущий счетчик, который представляет собой номер транзакции в указанной цепочке пользователей. |
CAj | Среднее количество транзакций в цепочке пользователей j. |
CCj | Общее количество записей в цепочке пользователей j. |
CTj | Среднее время на транзакцию в цепочке пользователей j. |
Блоки
[ редактировать ]Префикс | Значение |
---|---|
Нью-Джерси | Количество записей общего количества транзакций, вошедших в указанный блок на блок-диаграмме. Этот счетчик автоматически поддерживается программой. Пример: N$SAM для количества записей в блоке SAM. Это количество не включает транзакцию, которая в данный момент обрабатывается в текущем блоке. |
WJ | Счетчик ожидания, который представляет собой количество транзакций, ожидающих в данный момент в указанном блоке блок-диаграммы. Этот счетчик также автоматически поддерживается программой. Пример: WSHOLD для текущего счетчика ожидания в блоке HOLD. Это количество также не включает транзакции, которые в данный момент обрабатываются в текущем блоке. |
Системные атрибуты
[ редактировать ]Количества
[ редактировать ]Префикс | Значение |
---|---|
КДж | Указание на то, что целое число является константой. Пример К3276 для целого числа 3276 или КО для целого нуля. |
РН(х) | Вычисленное случайное число (1<=x<=8). Значением числа является целое число от 0 до 999 включительно, если только количество не должно использоваться в качестве независимой переменной функции. В этом случае число представляет собой дробь, большую или равную нулю, но меньше единицы. В любом случае все значения в пределах указанного диапазона можно считать равновероятными. |
С1 | Текущее значение часов симулятора. Это количество автоматически поддерживается программой. |
Атрибуты оборудования
[ редактировать ]Хранилища
[ редактировать ]Префикс | Значение |
---|---|
Сджей | Содержимое указанного хранилища на блок-схеме. Количество может быть изменено блоками ENTER и LEAVE. Пример: S2 для содержимого памяти (номер) 2. |
РДжей | Количество доступных единиц пространства в указанном хранилище. Это количество может быть изменено блоками ENTER и LEAVE. Пример: 195 рандов за оставшееся место на складе 195. |
СФРЮ | Использование хранилища j в частях на тысячу, т. е. если использование было 0,65, вычисленное значение было бы 650. |
Да | Среднее содержимое памяти j (усеченное). |
СМдж | Максимальное содержимое памяти j. Это количество автоматически поддерживается программой. |
SCj | Количество записей для хранения J. Это количество автоматически поддерживается программой. |
STj | Среднее время, в течение которого каждая транзакция использовала хранилище j (усечено). |
Удобства
[ редактировать ]Префикс | Значение |
---|---|
Фджей | Статус указанного объекта на блок-схеме. Это значение равно нулю, если объект доступен; в противном случае это одно. Это количество может быть изменено блоками SEIZE, RELEASE, PREEMPT и RETURN. Пример: F20 для статуса объекта 20. |
Франция | Загрузка объекта j выражается в тысячных частях, т. е. если загрузка равна 0,88, значение FRj будет равно 880. |
ФКдж | Количество записей для объекта j. |
ФТдж | Среднее время, в течение которого каждая транзакция использовала объект j (усечено). |
Группы
[ редактировать ]Префикс | Значение |
---|---|
ГДж | Текущее количество членов группы j. |
Статистические атрибуты
[ редактировать ]Решка
[ редактировать ]Префикс | Значение |
---|---|
QJ | Длина указанной очереди на блок-диаграмме. Это количество может быть изменено блоками QUEUE и DEPART. Пример: Q50 для содержимого очереди 50. |
Привет | Среднее содержимое очереди j (усеченное). |
QMj | Максимальное содержимое очереди j. Это количество автоматически поддерживается программой. |
QCj | Количество записей в очереди j. Автоматически поддерживается. |
QZj | Количество записей в очереди j. Автоматически поддерживается. |
QTj | Среднее время, в течение которого каждая транзакция находилась в очереди j (включая нулевые записи). При ссылке значение будет усечено до
целое число. |
QXj | Среднее время нахождения каждой транзакции в очереди j (исключая нулевые записи). Усечено. |
Таблицы
[ редактировать ]Префикс | Значение |
---|---|
ТБдж | Вычисленное среднее значение указанной таблицы типа гистограммы, определяемой пользователем. Блок TABULATE используется для ввода значений в одну из этих таблиц. Хотя вычисленное среднее может иметь дробную часть, оно не сохраняется, если вычисленное среднее не будет использоваться в качестве независимой переменной функции. Пример: TB42 для вычисленного среднего значения таблицы 42. |
TCj | Количество записей в таблице j. |
ТДдж | Вычисленное стандартное отклонение таблицы j. |
Сохранение значений
[ редактировать ]Префикс | Значение |
---|---|
хдж | Содержимое полного слова savevalue j. |
XHj | Содержимое полуслова сохранения j. |
MXj(а,б) | Содержимое сохраненного значения j матрицы полного слова, строка a, столбец b. (a и b могут быть любой другой СНС) |
MHj(а,б) | Содержимое сохраняемого значения j матрицы полуслов, строка a, столбец b. |
Вычислительные атрибуты
[ редактировать ]Префикс | Значение |
---|---|
ФНдж | Вычисленное значение функции. Сохраняется только целая часть, за исключением случаев, когда она используется в качестве модификатора функции в блоках GENERATE, ADVANCE или ASSIGN. |
Виджей | Арифметическая комбинация стандартных числовых атрибутов, которая называется оператором переменной и определяется пользователем. Сохраняется только целая часть. (См. главу 4.) |
БВдж | Вычисленное значение (1 или 0) логической переменной j. |
Диапазон стандартных числовых атрибутов
[ редактировать ]Сущность | Символ | Значение |
---|---|---|
Транзакции | П | Параметр, полное слово[полуслово] |
пиар | Приоритет | |
М1 | Транзитное время | |
член парламента | Время прохождения параметра | |
Блоки | Н | Общее количество записей |
В | Текущий счетчик | |
Удобства | Ф | Логическое значение 1 или 0 Статус объекта |
фр. | Использование (частей на тысячу) | |
ФК | Количество входов | |
ФТ | Среднее время/транзакция' | |
Хранилища | С | Текущее содержимое хранилища |
Р | Оставшееся содержимое | |
СР | Использование (частей/тыс.) | |
на | Среднее содержание• | |
СМ | Максимальное содержимое | |
СК | Количество входов | |
СТ | Среднее время/транзакция• | |
Решка | вопрос | Текущая длина очереди |
контроль качества | Среднее содержание• | |
МК | Максимальное содержимое | |
КК | Общее количество записей | |
КЗ | Количество нулевых записей | |
QT | Среднее время/транзакция | |
КХ | Среднее время/транзакция
исключая ноль | |
Таблицы | туберкулез | Среднее значение таблицы• |
ТК | Количество входов | |
ТД | Стандартное отклонение• | |
Савэваулес | Х | Полное слово savevalue |
XII | сохранение значения lialfword | |
Матрица сохраненных значений | М(а,б) | Полная матрица слов |
МХ(а, б) | Матрица полуслова
a = строка b = столбец | |
Группы | Г | Количество элементов в группе |
Цепочки пользователей | ЧТО | Среднее количество в цепочке• |
СН | Текущий номер в цепочке | |
СМ | Максимальное количество в цепочке | |
СС | Всего записей | |
Коннектикут | Среднее время входа• | |
Функции | ФН | Функция |
Переменные | V | Арифметическая переменная |
V | Переменная с плавающей запятой | |
БВ | Логическая переменная | |
Случайные числа | РН1-РН8 | В качестве аргумента функции возвращает значения от 0 до 0,99999. В противном случае 0,999 |
Часы | С1 | Время на часах относительно последней карты RESET или CLEAR. |
Условные операторы
[ редактировать ]Используется в команде TEST .
И | Равный |
Г | Больше, чем |
GE | Больше или равно |
л | Меньше, чем |
ТО | Меньше или равно |
МАКС | Равен наибольшему такому атрибуту среди всех транзакций в группе. |
МИН | Равен наименьшему такому атрибуту среди всех транзакций в группе. |
NE | Не равно опорному значению, указанному операндом E. |
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Шрибер, Томас (1977), Введение в GPSS (PDF) , стр. 1 , получено 12 декабря 2023 г.
- ^ Джеффри Гордон (1981). «Разработка системы моделирования общего назначения (GPSS)» . История языков программирования . стр. 403–426. дои : 10.1145/800025.1198386 . ISBN 0127450408 .
При разработке GPSS не предпринималось сознательных усилий по созданию аналоговых компьютеров, но я уверен, что обозначение блок-схемы и акцент на том, чтобы сделать моделирование доступным непосредственно для системных аналитиков, а не через программистов, которые являются характеристиками GPSS, подверглись бессознательному влиянию. по опыту аналогового компьютера.
- ^ IEEE (1984), Материалы зимней конференции по моделированию , ISBN 9780911801040 , получено 12 декабря 2023 г.
- ^ (GPSS/360, в MFT/MVT, но не в DOS)
- ^ Дивизия округа Колумбия (1968). «Техническая записка». Транзакции IEEE по системным наукам и кибернетике . 4 (4): 446–447. дои : 10.1109/TSSC.1968.300174 .
IBM предлагает GPSS III для серий 7044 и 7090, а также GPSS/360 для более крупных моделей 360... GPSS II также доступен на UNIVAC 1108.
- ^ «Введение в GPSS» (PDF) .
о языке имитационного моделирования GPSS. ... резюмировано; источники, сравнивающие GPSS и другие.... Корпоративные GPSS для аппаратного обеспечения Univac 1108)
- ^ Б. Лисков (1981). «GPSS-сеанс» . История языков программирования . НаукаДирект . стр. 403–437 . дои : 10.1016/B978-0-12-745040-7.50013-2 . ISBN 9780127450407 .
Предыстория: Система моделирования общего назначения (GPSS) — это... производители, выпустившие версии GPSS, — UNIVAC (Горчоу, 1968), CDC
- ^ Набиль Р. Адам; Али Дограмачи (2014). Актуальные проблемы компьютерного моделирования . п. 25. ISBN 978-1483258034 .
Подобно GPSS... в версии GPSS для APL, хотя APL является интерпретативным языком. ... Univac Corporation, GPSS 1100 для системы UNIVAC 1108.
- ^ Столь, Ингольф (1990). Введение в моделирование с помощью Gpss на ПК, MacIntosh и Vax . ISBN 0-1348-323-10 .
- ^ «GPS World СПРАВОЧНОЕ РУКОВОДСТВО» . athena.ecs.csus.edu . Проверено 11 декабря 2023 г.
- ^ П. Фонсека Касас (2009). «jgpss, платформа GPS с открытым исходным кодом для обучения моделированию» (PDF) .
упростить разработку полноценного инструмента моделирования с использованием синтаксиса GPSS. В этой статье представлено... В оригинале GPSS означало Программируемую систему моделирования Гордона, в честь Джеффри Гордона, ее создателя.
- ^ «Система моделирования общего назначения Java» .
Изучите моделирование, создав механизм моделирования. JGPSS — это реализация системы GPSS, основанная на Java.
- ^ Стэнли Гринберг (1972). GPSS Праймер . Нью-Йорк: Wiley-Interscience. ISBN 0471324906 .
- ^ Шрайбер, Томас (1974). Моделирование с использованием GPSS . Уайли. ISBN 9780471763109 .
- ^ Система моделирования общего назначения/360: Руководство пользователя (PDF) , 1967 г. , дата обращения 10 декабря 2023 г.
Внешние ссылки
[ редактировать ]- Версия программного обеспечения Wolverine GPSS/H
- Minuteman Software — компания, предоставляющая некоторые реализации
- aGPSS: ПК и Mac: предназначено для образовательных учреждений и специалистов.
- JGPSS Java-система моделирования общего назначения.
- GPSS360 Online GPSS360 — потомок оригинального GPSS