Система GPSS (General Purpose System Simulator) предназначена для написания имитационных моделей систем с дискретными событиями. Наиболее удобно в системе GPSS описываются модели систем массового обслуживания, для которых характерны относительно простые правила функционирования составляющих их элементов.
Автором и разработчиком первых версий языка был Джеффри Гордон, выдающийся американский специалист в области имитационного моделирования.
Условно историю развития GPSS можно разделить на два основных этапа. Первый - с 1961 года до середины 70-х - был этапом Джеффри Гордона и фирмы IBM. За это время последовательно разработано пять основных версий языка: GPSS (1961), GPSS II (1963), GPSS III (1965), GPSS/360 (1967) и GPSS V (1971). Последняя версия до сих пор является эталоном для многих пользователей. К сожалению, после прекращения поддержки фирмой IBM язык GPSS пережил кризис.
Второй этап - со второй половины 70-х и по настоящее время. Монополия IBM закончилась, и казалось, GPSS обречен. По крайней мере, его будущее было туманным. Но благодаря силе идей, заложенных в нем, и энтузиазму его сторонников, он выжил. Эстафету подхватило множество небольших честолюбивых фирм и разработчиков. Появилось немало реализаций GPSS, развернулась нешуточная конкуренция за лидерство - но постепенно выделились три основных разработчика, «диктующих моду» в мире GPSS.
Прежде всего, это Джеймс Хенриксен из Wolverine Software. Его GPSS/H - мощная и сбалансированная система имитации, а Proof Animation - система анимации, ориентированная на моделировании. Основные принципы GPSS/H закладывались еще до широкого внедрения ПЭВМ, во времена мэйнфреймов. Поэтому особенно активно эта система использовалась в период, пока ПЭВМ имели недостаточную вычислительную мощность. В настоящее время, несмотря на очевидные достоинства, сказывается отсутствие в GPSS/H современных интерактивных технологий. А главное, Джеймс Хенриксен сосредоточил усилия на развитии языка SLX. И хотя в его конструкциях используются объекты GPSS - это все-таки больше язык Си, чем GPSS.
|
В GPSS World были введены четыре новые команды:
CONDUCT - позволяет запускать и выполнять эксперименты;
EXIT - выход из GPSS World с возможностью сохранения открытых файлов;
INCLUDE - подключение к модели дополнительных файлов;
INTEGRATE - автоматическое вычисление интеграла для переменной пользователя (определяет выражение, по которому производится вычисление; включение интегрирования в процессе моделирования осуществляется блоком INTEGRATION). С помощью команды INTEGRATE и блока INTEGRATION в GPSS World реализуются элементы непрерывного моделирования. Таким образом, наряду с привычными для GPSS дискретными моделями можно создавать полностью непрерывные или смешанные дискретно-непрерывные модели.
Второе имя - Ингольф Столл, Stockholm School of Economics. Обобщив многолетний опыт преподавания GPSS, он разработал компактную, немного усеченную версию языка GPSS для использования в учебном процессе - Micro-GPSS. Его главное достижение разработка WebGPSS. Это довольно удачная попытка создания системы имитации для использования в сети Интернет. Основное ядро системы находится на университетском сервере, и пользователь может через Интернет отлаживать и исполнять небольшие учебные модели. Особенно интересен такой вариант при внедрении дистанционного обучения. Тем не менее, разработке еще предстоит долгий путь совершенствования и развития.
|
Идеология семейства продуктов Спрингера Кокса и его фирмы Minuteman Software, начиная с GPSS/PC, полностью ориентирована на ПЭВМ и преимущества индивидуального интерактивного использования. Особенно удачным можно признать GPSS World, в котором существенно дополнены функциональные возможности и реализована универсальная многооконная диалоговая оболочка. Значительно расширены возможности интеграции GPSS-моделей с другими системами программирования. Традиционно продукты этой фирмы очень популярны в России и странах СНГ - поэтому современное состояние систем компьютерного моделирования мы рассмотрим именно на примере GPSS World.
Система GPSS World - комплексный моделирующий инструмент, охватывающий области как дискретного, так и непрерывного компьютерного моделирования и обладающий высоким уровнем интерактивности и визуального представления информации. Кроме того, GPSS World унаследовал все положительные черты своего предшественника - GPSS/PC.
На сегодняшний день GPSS World является приложением семейства операционных систем Windows и использует их очевидные преимущества - графический интерфейс пользователя и архитектуру «документ-вид». ПО представляет собой полноэкранный текстовый редактор, позволяющий работать сразу с несколькими объектами (текст модели, журнал, отчет и т. д.) Кроме того, графический интерфейс дает возможность интерактивно взаимодействовать с выполняющимися процессами моделирования, а также применять наглядные графические окна для отображения их работы.World выполняется под управлением любых ОС семейства Windows, начиная с Windows 95, и позволяет реализовать многозадачность и использовать виртуальную память. Использование механизма виртуальной памяти устраняет один из главных недостатков предыдущих версий GPSS - жесткое ограничение объема памяти, занимаемого моделью. Теперь он может измеряться гигабайтами.
|
Кроме того, в GPSS World применяется более высокопроизводительный транслятор по сравнению с GPSS/PC. Имеется возможность ввода и вывода данных в процессе моделирования. Пользователь может прервать выполнение процесса моделирования и сохранить его, чтобы в дальнейшем продолжить выполнение с той же точки. Еще одно новшество - пакетный режим с контролируемой процедурой выхода из приложения. Это позволяет производить многократные прогоны с сохранением всех необходимых файлов.
компьютерный моделирование имитационный
Нужно также отметить возможности взаимодействия GPSS World с другими приложениями, что предоставляет пользователю практически неограниченную свободу при обработке и анализе данных, получаемых в результате моделирования. Внешние приложения можно условно разделить на два класса:
1. различные пре- и постпроцессоры - приложения, применяющиеся в связке с GPSS World, которые подготавливают исходные данные для моделирования или выполняют действия по результатам прогона модели;
2. приложения, выполняющие оперативные действия в процессе моделирования - обработка данных, оперативная анимация и т. д.
Для реализации взаимодействия GPSS World предоставляет, во-первых, механизм потоков данных. Под потоком данных в GPSS World понимается последовательность текстовых строк, используемых в процессе моделирования. С его помощью можно считывать и записывать данные в файлы текстового формата. Для управления потоками данных служат специальные блоки и процедуры. Таким образом, с помощью потоков данных можно использовать текстовые файлы, в том числе и для обмена информацией с внешними приложениями.
Второй механизм - процедуры динамического вызова. Библиотека встроенных процедур GPSS World содержит набор процедур для вызова функций, хранящихся во внешних исполняемых файлах, включая динамически подключаемые библиотеки DLL. То есть пользователь может прибегнуть к библиотекам функций сторонних разработчиков (или собственной разработки), которые порой существенно расширяют возможности системы.World - самая современная реализация языка GPSS, дополненная вспомогательным языком PLUS. Непосредственно язык GPSS включает в себя 53 типа блоков и 25 команд, большое количество системных числовых атрибутов. Кроме того, 12 типов операторов составляют язык PLUS - Programming Language Under Simulation. Эффективность PLUS во многом обеспечивается большой библиотекой процедур.World - объектно-ориентированный язык. Объект «Модель» главным образом содержит операторы модели, а также набор настроек. Кроме того, он включает в себя закладки и циркулярный список синтаксических ошибок.
Объект «Процесс моделирования» создается при трансляции операторов объекта «Модель». Для изменения его состояния применяются интерактивные команды и блоки.
Одной из самых сильных сторон GPSS всегда были стандартные отчеты. Содержимое отчета настраивается, поэтому пользователь получает только необходимую информацию.
Текстовый объект - это способ представления обычного текстового файла в GPSS World. В основном они применяются совместно с командами INCLUDE для подключения набора операторов, используемого в различных моделях. Кроме того, закрепив команду INCLUDE за горячей клавишей, можно интерактивно передавать объекту «Процесс моделирования» целые списки управляющих команд.
В GPSS World применяются полиморфные типы данных. Переменные могут принимать значения одного из четырех типов. Ячейки, элементы матриц, параметры транзактов и переменные пользователя могут принимать целочисленное, вещественное, строковое и неопределенное (unspecified) значение. Неопределенные значения используются при проведении дисперсионного анализа и указывают на отсутствующие данные. Значения времени могут быть целыми или вещественными. Преобразование типов происходит автоматически. Для работы со строковыми значениями в библиотеке процедур есть ряд специальных функций.
Как уже говорилось, PLUS - встроенный в GPSS World язык программирования. Он предназначен для расширенного управления данными, удовлетворения потребностей в особых вычислительных алгоритмах и других операциях, которые не могут быть реализованы средствами операторов и команд GPSS. Блок PLUS позволяет вызывать PLUS-процедуру, которая выполняется как любой другой блок GPSS. Таким образом пользователь может создавать собственные блоки с очень сложной структурой. Кроме того, выражения, записанные с помощью синтаксиса языка PLUS (так называемые PLUS-выражения), могут использоваться в качестве операндов блоков и команд. Также выражения могут содержать вызовы встроенных процедур или процедур пользователя.
Язык PLUS включает в себя следующие операторы:
оператор присваивания;
вызов процедуры;
BEGIN;
- DO…WHILE;
END;
EXPERIMENT;
GOTO;
IF…THEN…ELSE;
PROCEDURE;
RETURN;
- TEMPORARY.
Большинство этих операторов хорошо знакомо по традиционным алгоритмическим языкам, таким как Бейсик, Паскаль или Си. Но на некоторых стоит остановиться подробнее. Оператор EXPERIMENT предназначен для проведения экспериментов - определения специальной процедуры пользователя, которая обеспечивает последовательный запуск нескольких прогонов процесса моделирования. Оператор PROCEDURE используется для определения процедур пользователя. Процедуры обладают глобальной областью действия, то есть могут вызываться в любом месте модели. Оператор TEMPORARY позволяет создавать временные переменные пользователя и матрицы, существующие только во время выполнения процедуры. По завершении работы процедуры все временные переменные и матрицы уничтожаются.
Кроме того, GPSS World содержит большую встроенную библиотеку PLUS-процедур, которые обеспечивают работу с потоками данных, различные манипуляции со строками, математические операции и позволяют задавать вероятностные распределения.
Проведение экспериментов позволяет исследовать поведение построенной модели. Концептуально GPSS World обеспечивает проведение экспериментов трех типов:
1. отсеивающие эксперименты - используются для определения наиболее важных факторов, влияющих на моделируемую систему;
2. оптимизирующие эксперименты - позволяют определить оптимальные уровни факторов;
. эксперименты пользователя - эксперименты над моделью, программируемые пользователем.
Автоматические генераторы отсеивающих и оптимизирующих экспериментов позволяют задать и провести эксперимент соответствующего типа. С их помощью, заполняя поля диалоговых окон, можно быстро определить условия проведения эксперимента.
Завершающий шаг любого эксперимента - это, как правило, анализ результатов. Дисперсионный анализ оценивает отклонение наблюдений от общего среднего и позволяет определить эффект или влияние фактора на целевую функцию. При использовании процедуры дисперсионного анализа ANOVA большая часть работы выполняется без участия человека. Эта процедура позволяет осуществлять многофакторный дисперсионный анализ, рассматривающий до шести факторов, и взаимодействия факторов второй и третьей степени.World является непосредственным преемником системы GPSS/PC. В то же время «потомок» имеет довольно много отличий от своего «предка». GPSS World основывается на идее, что текстовый объект «Модель» создается и/или модифицируется, а затем транслируется с целью создания объекта «Процесс моделирования». Архитектурой он сильно отличается от GPSS/PC, в котором используются понятия файла программы и процесса моделирования.
Тем не менее, GPSS World совместим с GPSS/PC: сделав ряд небольших изменений в модели, можно добиться результатов, статистически неотличимых от выдаваемых GPSS/PC. Существует также и режим совместимости с GPSS/PC. В нем большинство моделей GPSS/PC дают абсолютно идентичные результаты при выполнении под управлением GPSS World1. Возможность использовать уже созданные и отлаженные модели является немаловажным фактором - в СССР был накоплен колоссальный опыт применения GPSS (и в частности, GPSS/PC).
Кроме новых команд, в GPSS World включено девять новых типов блоков:
ADOPT - изменяет номер семейства транзакта;
DISPLACE - позволяет переместить транзакт в любой другой блок;
INTEGRATION - включает/выключает интегрирование переменной, для которой задано выражение с помощью команды INTEGRATE;
PLUS - вычисляет PLUS-выражение, что в том числе подразумевает вызов PLUS-процедуры из встроенной библиотеки или процедуры, созданной пользователем;
OPEN, CLOSE, READ, WRITE, SEEK - управляют потоками данных, позволяют создавать и уничтожать потоки, производить считывание и запись данных в них. Потоки данных делятся на два типа: файловые (запись производится в текстовый файл) и «потоки в памяти» (запись производится в оперативную память компьютера).
В заключение можно уверенно сказать, что язык имитационного моделирования GPSS является мощным методологическим средством инженеров для анализа сложных систем и для дальнейшего принятия решений.
Практическая часть
Постановка задачи.
Зрители подходят к турникету футбольного стадиона каждые 7±7 секунд и встают в очередь, в которой находятся до тех пор, пока не пройдут на стадион. Проход через турникет занимает 5±3 секунды.
Требуется определить время, необходимое для того, чтобы через турникет прошло 300 человек.
Листинг
GENERATE 7, 7 // Прибытие людей
QUEUE TURNIKET// Вход в очередь
SEIZE TURNIKET// Занятие турникета
DEPART TURNIKET// Выход из очереди
ADVANCE 5, 3// Использование турникета
RELEASE TURNIKET// Освобождение турникета
TERMINATE 1// Один зритель вошел