«СЛАВА ЖПСС!» или вспоминаем про GPSS World
Почти семь лет назад я набросал на «Хабре» статью про GPSS-World. И к моему удивлению, время от времени я получаю различные вопросы, связанные с ней.
Как же так на дворе уже 2020 год, GPSS World безнадежно устарела, неужели ей кто-то до сих пор пользуется?!
Оказывается, пользуются и еще как.
Достаточно вбить поисковый запрос на «Киберленинке», настроить для удобства фильтры и убедиться, что есть актуальные статьи как минимум за 2019 год.
Сфера образования тоже не отстаёт, в 2019 году выпустили свеженькое учебное пособие пусть и для средне-профессионального уровня образования.
GPSS World у меня совсем не ассоциируется с инновационным подходами к образованию. При виде учебной программы на базе GPSS World мне сразу представляется кошмар, в котором я делаю лабораторную работу по моделированию, сидя в компьютерном классе за ЭВМ с «трубчатым» монитором и шариковой мышкой, а после «лабораторки» бегу в столовую, чтобы накалывать котлету на грязную и гнутую алюминиевую вилку.
Но раз уж GPSS в узких кругах по-прежнему популярна, то почему бы не поддаться приступу ностальгии? В этой статье мы кратко вспомним о том, что из себя представляет бесплатная версия системы имитационного моделирования «GPSS World Student Version», а также познакомимся с некоторыми её близкими родственниками.
Если вы любите анализировать очереди и любоваться на «древние» скриншоты, тогда милости прошу под кат.
Часть I: Введение
Часть I: Введение
Часть II: Различные реализации GPSS
Часть III: запускаем GPSS/PC с помощью эмулятора Dos на смартфоне
Часть IV: Простейшая модель в GPSS World
Я не буду подменять собой Википедию, а только в двух словах напомню, что GPSS — это система моделирования общего назначения, которая зародилась в 60-е годы прошлого столетия, где-то в недрах IBM, однако в наших учебных заведениях наибольшую популярность получила её реализация от компании Minuteman Software, в частности — GPSS World.
Часть II: Различные реализации GPSS
Прежде чем перейти к главному герою статьи давайте для начала, бросим беглый взгляд на его «родственников».
Возможно, вы думали, что я начну в хронологическом порядке? Как бы не так!
Я сразу «зайду с козырей».
Наш первый экземпляр — Object GPSS & GPSS-Future Systems.
Если верить информации на сайте, то разработчик делает нам предложение, от которого нельзя отказаться:
Вы можете купить за $100 личную версию системы, которая обрабатывает модели с неограниченным числом блоков. В ней, по вашему желанию, будет ваше фото, или фото, которое вы захотите иметь, а также сведения, что это ваша личная версия. Вам гарантируются консультации по системе в течение 2 лет.
Я честно не стал разбираться, как это чудо работает. Однако, разработчик не врал. В демоверсии есть отдельная вкладка, на которой могла бы быть ваша фотография, но вы не заплатили 100$ поэтому там фото разработчика (или то которое он захотел иметь).
Теперь давайте серьезно.
На рисунке № 2 (figure 2) взятом из статьи «GPSS 50 years old, but still young» показан процесс развития GPSS и его ответвлений.
К сожалению, сайт Wolverine Software похоже приказал, долго жить.
Увидеть, как сейчас поживает наследник GPSS их производства у меня не получилось. Но не расстраивайтесь, общее представление об SLX можно составить, пролистав статью «AN INTRODUCTION TO SLX»
Но давайте хотя бы рассмотрим их реализацию GPSS под DOS, а именно GPSS/H.
Программа меня слегка расстроила отсутствием интерактивного режима. При запуске сразу необходимо загрузить файл модели .GPS.
После моделирования (на рисунке ниже слева) программа сохраняет отчет в файл с именем модели и расширением .LIS (на рисунке ниже справа)
Перейдем от левой части вышеуказанной схемы (figure 2) к правой.
Посмотрим на aGPSS — дальнейшее развитие WebGPSS и WinGPSS. Демонстрационную версию, выпущенную в 2015 году, можно скачать с официального сайта.
Правда у меня симуляция так и не запустилась, выдавая следующую ошибку:
Хотя сама система выглядела не так уж и плохо.
Еще стоит упомянуть о GPSS Studio — это отечественная разработка, также как и aGPSS обладающая возможностью графического построения моделей. Данной системе моделирования я планирую в будущем посвятить отдельный обзор, поэтому не будем на ней сейчас концентрироваться.
Поскольку все рассмотренные в статье версии GPSS проприетарные я напоследок упомяну о попытке сделать аналог GPSS с открытым исходным кодом на языке GO. Подробней об этом можно прочесть на «Хабре».
Часть III: запускаем GPSS/PC с помощью эмулятора DOS на смартфоне
Ну вот и пришло время рассмотреть творения от Minuteman Software.
Начнем мы с GPSS/PC. Это старая версия программы для DOS.
При моем первом знакомстве с ней программа запустилась, задумалась, издала звук с помощью «Пищалки» (PC speaker) и на секунду мне показалось, что сейчас появиться логотип Sierra и я как в детстве «залипну» в любимые Space Qurst и Leisure Suit larry.
Но наваждение быстро прошло. После стартовой заставки нас будет ожидать лишь интерактивная консоль.
В данную консоль можно сразу вводить команды не создавая файл.
Но я предлагаю, ввести команду несколько необычным образом.
В нашем случае простота GPSS/PC имеет один большой плюс.
Она легко запускается на любом эмуляторе MS-DOS. Так почему бы нам не проверить её работоспособность на смартфоне (в моем случае на платформе Android)?
Устанавливаем эмулятор. Я установил aFreeBox (Free DOSbox), но вы можете выбрать любой другой.
В моем случае корневой папкой эмулятора стала папка загрузок в корне файловой системы смартфона. В эту папку я и перенес файлы с GPSS/PC.
Запускаем программу (не забудьте для антуража включить симуляцию PC-Speaker).
Теперь можно вводить команды.
Вначале необходимо ввести номер строки, нажать пробел, если нет метки для команды, то нажать еще раз пробел и ввести название команды.
Кстати можно воспользоваться автоматическим дополнением кода — набрать несколько букв предполагаемой команды и нажать пробел. Компьютер допечатает наиболее подходящую команду.
После ввода команды остается ввести ее параметры и нажать Enter.
Примерная иллюстрация процесса представлена ниже:
Запустим симуляцию командой START 10
.
Выйдем из симуляции командой END
.
Осталось только просмотреть отчёт, для этого необходимо запустить отдельную программу GPSSREPT.EXE.
Часть IV: Простейшая модель в GPSS World
Ну, а теперь сам GPSS-world.
Лично я свой знакомство с GPSS World начал с учебника «Комплексная механизация строительства» Кудрявцева Е.М., от одного воспоминания о котором, меня до сих пор настигает уныние.
Но в сети есть и другие учебные материалы, в том числе официальный туториал и вариации его перевода.
Прежде чем перейти к моделированию, нам необходимо скачать бесплатную студенческую версию программы. Правда вы могли бы купить персональную лицензию, за 600 с лишним долларов. Но зачем выкидывать такие деньжищи, если в программе даже не будет вашей фотографии (как в случае с Object GPSS)? Оно явно того не стоит.
Прежде чем мы попробуем запустить какую-нибудь модель. Просто посмотрите на это:
Да, да, в GPSS World есть свой собственный интернет браузер. Правда, к сожалению, верстка Хабра в нем плывет, но это и не удивительно в 2020 году.
Зато сайт Minuteman Software открывается идеально. Ну, а как же иначе ведь он сверстан с применением таких передовых технологий как Microsoft FrontPage. Кто-нибудь еще помнит это чудо?
Давайте перейдем непосредственно к моделированию.
Важно помнить, что при использовании GPSS ключевым компонентом является ваше воображение.
Например, эта простейшая модель:
GENERATE 4,1 ;Create next customer.
QUEUE Larek ;Begin queue time.
SEIZE Larek ;Own or wait for trader.
DEPART Larek ;End queue time.
ADVANCE 5,2 ;Shopping takes a few minutes.
RELEASE Larek ;Shopping done. Give up the trader.
TERMINATE 1 ;Customer leaves.
Благодаря вашей фантазии может стать: моделью прохода через турникет, моделью парикмахерской с одним мастером и даже моделью комплекта машин самосвал-экскаватор.
Мы с вами оправдаем заглавную картинку статьи и представим, что вышеуказанный код моделирует очередь в ларек.
Единицы времени будем интерпретировать как минуты.
На всякий случай напомню вам значения блоков:
GENERATE 4,1
— создает объект в системе. В нашем случае это человек идущий к ларьку чтобы встать в очередь. Люди приходят к ларьку один раз в 4 минуты с отклонением в диапазоне от -1 до +1 минуты; QUEUE
— человек встал в очередь в ларек; SEIZE
— человек подошел к окошку ларька; DEPART
— человек сунул голову в окошко ларька, а значит из очереди его уже необходимо вычеркнуть; ADVANCE 5,2
— время на выбор товара составляет 5 ± 2 минутыRELEASE
— человек освободил продавщицу (продавца); TERMINATE 1
— человек покинул очередь и бежит домой с дефицитным товаром.
Пришло время начать симуляцию.
Выбираем команду START
Введем значение 100. В данном случае это значит, что как только мы «отоварим» 100 покупателей наша симуляция завершится.
По завершении симуляции появится окно с отчетом.
Как видим среднее время пребывания одного человека в очереди составило 57 с лишним минут, очередь в среднем состоит из 14 человек, а обслуживание 100 покупателей заняло почти 9 часов (517 минут)
На этом мне бы хотелось закончить.
P.S. Если тематика моделирования в среде GPSS-World будет вам интересна, то я набросаю еще пару статей, в которых мы рассмотрим более сложные и интересные задачи.