GPSS (General Purpose Simulating System) - обще целевая система моделирования) является языком моделирования, используемым для построения дискретных моделей и проведения моделирования на ЭВМ. Цель книги «Моделирование на GPSS — помочь читателю в овладении процессом моделирования на GPSS. Для достижения этой цели в книге описаны основные концепции моделирования процессов с дискретными событиями, приведены методы их реализации на GPSS. Создание моделей проиллюстрировано на 27 примерах, предложено более 300 задач для того, чтобы читатель мог проверить уровень своего понимания материала.
Поскольку GPSS является языком моделирования, в него входят специальные средства для описания динамического поведения систем, меняющихся во времени, причем изменение состояний происходит в дискретные моменты времени. При моделировании таких систем применение GPSS не только гарантирует предоставление необходимых для этого программных средств, но и позволяет сделать модели ясными и лаконичными. Это последнее замечание делает GPSS более пригодным для моделирования, чем любой другой процедурный язык программирования.
Моделирование дискретных процессов опирается на фундаментальные знания в области теории вероятностей и математической статистики. Предполагается, что читатель имеет некоторое представление о вероятностных процессах, включая некоторые элементы статистики. Никаких других ограничений для изучения GPSS и тех средств моделирования, которые предоставляет язык, не существует. Некоторый опыт программирования хотя и желателен, но не обязателен. Тот, кто знаком с процедурными языками (с такими, например, как Fortran, Basik, PL/1) обнаружит, что некоторые ключевые понятия процедурных языков при изучении GPSS не используются. Тот, кто изучает эту книгу, обнаружит, как быстро и легко можно создавать модели на GPSS. Начав с элементарного изучения, он вскоре овладеет всеми средствами GPSS.
GPSS очень удобен при программировании, поскольку интерпретатор GPSS многие функции выполняет автоматически. Например, GPSS без специального на то указания пользователя собирает статистические данные, описывающие поведение модели, автоматически печатает итоговую статистику по завершении моделирования. Пользователю нет необходимости включать в модель вычислительные операторы для сбора и накопления этих данных или задавать формат, указывающий, в каком виде должны быть распечатаны итоговые данные. В язык в неявном виде включены и многие другие полезные элементы. Например, GPSS обслуживает таймер модельного времени, планирует события, которые должны произойти позднее в течение времени моделирования, вызывает их своевременное появление и управляет очередностью поступления, предоставляет средства описания относительных приоритетов для использования их при одновременном возникновении событий.
Теперь читателю, по-видимому, стало ясно, что логика моделирования дискретных процессов в основном встроена в интерпретатор GPSS. К сожалению, это преимущество языка становится его недостатком для тех пользователей, которые не понимают внутренней логики интерпретатора, а это приводит к тому, что GPSS используют вслепую. Бездумное использование этого языка высокого уровня может дать только малозначащие результаты на неадекватной модели. Неадекватность может быть связана с неумением описать тонкости функционирования объекта и, следовательно, остаться необнаруженной. Все эти обстоятельства учтены в книге, и автор следует такому подходу, при котором пользователь должен тщательно разобраться в создаваемой им модели.
Построение изложения материала довольно просто. В гл. 1 даны основные понятия о методах моделирования на уровне процедур, без использования системы GPSS. В частности, здесь читатель знакомится с моделированием систем, в которых события происходят в случайные моменты времени. Функционирование модели показано на примере системы массового обслуживания с очередью и одним обслуживающим прибором. Здесь на основе разработанных и представленных стандартных блок-схем рассмотрены такие элементы модели, как генератор случайных чисел, описаны концепции планирования событий, логика очередности появления событий, решаются задачи синхронизации. Все это дано как подготовка к гл. 2, которая вводит читателя в язык GPSS; в ней описано основное подмножество блоков, используемых при построении моделей на GPSS. Первым примером построения модели на GPSS является та же модель системы массового обслуживания с очередью и одним прибором. Это дает возможность читателю шаг за шагом сравнить процедурный метод, описанный в гл. 1, с использованием макрокоманд высокого уровня, применяемых при моделировании тех же систем на GPSS.
Сразу же за разбором первого примера в гл. 2 введены понятия цепей текущих и будущих событий GPSS, изложены принципы построения интерпретатора и его внутренней логической схемы. Далее логика интерпретации проиллюстрирована на числовом примере, шаг за шагом демонстрирующим способ выполнения интерпретатором своей работы. Логика интерпретации дополнительно показана на числовых примерах, следующих за вторым и третьим примерами моделирования в гл. 2. Опыт преподавания языка показал, что рассмотрение внутренней логической схемы интерпретатора может быть с большим успехом осуществлено на этой ранней стадии изучения. Хотя числовые примеры очень тщательно проработаны, все же у читателя остается впечатление о GPSS как о чем-то «мистическом». Поэтому всюду, где вводят новые концепции GPSS, их интерпретируют, если это возможно, в терминах цепей текущих и будущих событий GPSS и внутренней логической схемы работы интерпретатора. Это позволяет быстро свыкнуться с основными понятиями GPSS и дает пользователю возможность употреблять такие понятия самостоятельно.
В гл. 2 всюду, где требуется использование операндов различных блоков GPSS, их вводят непосредственно как константы. Более того, всюду в главе использовано равномерное распределение, причем распределение задается в неявном виде самим интерпретатором. Это позволяет уменьшить степень детализации и помогает ему сосредоточить свое внимание на основах создания моделей с помощью GPSS и на внутренней логической схеме работы интерпретатора.
Гл. 3 содержит описание генераторов случайных чисел GPSS, способ записи и использования функций для реализации равномерного и неравномерного распределений на языке. Особое внимание уделено реализации повторения модифицированной последовательности событий так, чтобы можно было изучить систему с другой конфигурацией при другом множестве условий эксперимента. В гл. 4 описана большая часть так называемых стандартных числовых атрибутов GPSS и показано их применение. В гл. 3 и 4 приведены методы определения операнда в неявном виде, т. е. с помощью функций, задаваемых пользователем; стандартных числовых атрибутов, определяемых в интерпретаторе, и методы моделирования при наличии неравномерных распределений. В гл. 4 также дано представление о таблицах, которые необходимы для определения вида распределения случайных переменных.
Элементы языка, введенные в гл. 2—4, в целом позволяют использовать GPSS для построения моделей, проведения тестовых расчетов и автоматической выдачи собранных результатов. Гл. 5 посвящена описанию и иллюстрации таких средств языка, которые позволяют провести моделирование со сбором интересующих пользователя параметров и выдачей результатов, собранных самим пользователем. Эти средства значительно расширяют возможности языка моделирования.
Таким образом, в гл. 1—5 описаны почти все основные возможности GPSS. Гл. 6 и 7 охватывают большую часть оставшихся основных средств языка, включая определение и использование булевских переменных, использование в GPSS косвенной адресации, возможность параллельного моделирования систем с альтернативными конфигурациями, оставшиеся три типа цепей GPSS, которые можно использовать прямым или косвенным образом для построения более сложных моделей. В гл. 8 изложены некоторые свойства языка, которые в явном виде при изучении блоков не были рассмотрены.
Язык GPSS существует в нескольких диалектах. Наиболее широко используемым и доступным диалектом является GPSS/360, который описан в данной книге; GPSS V, являющийся расширением GPSS/360, описан в приложении А, дополнительное описание находится в приложении В. Тот, кто изучает (GPSS/360, знакомится с большим подмножеством GPSS V. Для тех, кто планирует использовать для моделирования GPSS V, в этой книге дан весь необходимый материал. Остается потратить лишь немного времени на изучение инструкции пользователя по GPSS V, для того чтобы глубоко осознать свойства ОР35 V, не включенные в GPSS/360.
Диалекты GPSS/360 и GPSS V'являются версиями языка GPSS, разработанного фирмой IBM (International Business Machines) Эти версии, в свою очередь, являются прямыми потомками нескольких более ранних версий GPSS, также разработанных фирмой IBM. Первую разработанную IBM версию GPSS можно рассматривать как язык-предок. Вместе со своими прямыми потомками ряд близких языков-предков был применен конкретными исследовательскими группами и разработчиками ЭВМ вне фирмы IBM. Важнейшими из них являются NGPSS/6000 (GPSS, разработанная для группы развития военно-воздушных сил США Северным отделением фирмы Unaited Aircraft Corporation и использованная на ЭВМ Control Data Corporation серии 6000, CDC-6000); GPSS/NORDEN (версия системы GPSS с разделением времени, разработанная там же), GPSS/UCC (версия ОР35, разработанная фирмой Uneversity Compoting и используемая в режиме удаленной пакетной обработки); GPSSTS (версия языка с разделением времени, разработанная отделением информационных сетей фирмы Computer Sciences Corporation), GPSS V/6000 (разработка GPSS V, сделанная в Северо-западном университете для ЭВМ серии CDC-6000 и переданная фирмой Control Data для использования в системе CYBERNET и для продажи пользователям фирмы Control Data); (GPSS-10 (версия GPSS, разработанная недавно в университете Западного Онтарио для ЭВМ РОР-10). Диалекты различных реализаций и версии GPSS в этой книге не рассмотрены. В большинстве случаев, однако, непосредственное изучение GPSS/360 эквивалентно непосредственному изучению большого подмножества всех этих версий. Тот, кто овладел основными сведениями, изложенными в этой книге, будет в состоянии легко применить свои знания GPSS/360 к нужной версии.
Примеры, приведенные в книге, и сопровождающий их материал были разработаны для преподавания в Мичиганском университете, для заочного обучения по этой программе сотрудников фирмы Роге! МоЬг Сотрапу и в Стан-фордском исследовательском институте, а также для обучения на одно- и двухнедельных курсах, проводимых регулярно на летних инженерных конференциях в Мичиганском университете и продолженных в Калифорнийском университете в Сайта-Крусе (штат Калифорния). Большая часть книги была проверена на аудиторных занятиях. Книга содержит двенадцать приложений, разработанных специально как краткие справочные пособия по языку для пользователей, активно работающих с GPSS.
При написании книги всегда возникает вопрос, какой уровень детализации необходимо обеспечить, на каком уровне следует закрепить знания после повторений? Автор может не достичь своей цели, если будет чересчур или недостаточно лаконичен. Я поставил своей задачей дать в книге полное изложение, поэтому, возможно, я не так краток, как любят некоторые. Некоторым читателям может показаться, что проработка идей здесь более детальна, чем это необходимо лично для них, но после прочтения книги большинство читателей будет овладевать GPSS более эффективно, чем это могло бы быть в ином случае.
Эта книга написана для тех, кому необходимо изучить если и не весь язык, то большую его часть, причем изучить самостоятельно. Она окажется полезной для тех, кто не имеет возможности, или у кого они ограничены, прослушать курс лекций по GPSS. Использование большого количества деталей позволит тем, кто учится по книге, сэкономить лекционное время, посвященное описанию языка. Аудиторное же время имеет смысл использовать для обсуждения решений выбранных задач, для разработки концепций, логики и тонкостей моделирования, а также для просмотра результатов моделирования, обсуждения развития модели и использования результатов моделирования.