d9e5a92d

Операторы описания

1. SAM TABLE M1,100,100,10
2. SAM TABLE M1,100,100,W10
3. 10 TABLE IA,50,50,5
4. ARRIV TABLE RT50,50,10,1000
Первый и второй примеры для таблицы SAM, отличаются только тем, что вторая таблица взвешенная. В них верхняя граница первого интервала равна 100 , ширина промежуточных интервалов равна 100, число интервалов 10.

В третьем примере для таблицы с номером 10, определяются промежутки между приходами транзактов, верхняя граница первого интервала равна 50, ширина промежуточных интервалов равна 50, число интервалов равно 5. В четвёртом примере для таблицы с именем ARRIV определяется доля приходов в долях 1000 ( операнд Е ), верхняя граница первого интервала равна 50, ширина промежуточных интервалов равна 50 , число интервалов равно 10.
В. Операторы управления логикой моделирования
DO/ENDO( Выполнить/ Завершить выполнение )
Эти два парных оператора служат для организации петли управления процессом ИМ. Когда необходимо провести несколько независимых прогонов МФ, существует два способа получения этих прогонов не выходя из процесса ИМ.

Первый из них осуществляется с помощью ОУ CLEAR и парного с ним ОУ START , при этом число этих парных ОУ равняется числу желательных прогонов . Естественно, что при большом числе прогонов запись МФ перегружается этими указаниями. Второй способ - организация компактной записи с помощью парных ОУ DO/ENDDO, формат этих ОУ имеет вид :
[label] DO A,B,[C]
[label] ENDDO
label - не обязательный ярлык , который чаще всего отсутствует, характеризует собой имя организуемой пели ,
А - не имеет значения по умолчанию, символизирует собой индекс начала петли, представляющий собой целочисленную скалярную АМП, записываемый в виде I=1.
B - не имеет значения по умолчанию, характеризует собой предельный номер конечного члена петли,
С не обязательный операнд, по умолчанию равен единице, задаёт приращение индекса.
Когда индекс достигает предельного значения , исполняется ОУ ENDDO и петля управления прекращает своё существование. Если значения заданы числом с плавающей точкой, то число усекается до целого значения, отрицательные приращения программой не поддерживаются.

Количество петель управления может достигать 19, причём они вкладываются друг в друга, создавая своеобразную иерархию, второстепенные петли в МФ изображаются с отступом вправо от основной петли, следующая вложенная петля также отступает вправо. Между ОУ DO/ENDDO размещаются другие ОУ , например CLEAR/START. Отметим важные особенности петли ОУ DO/ENDDO :

  • DO/ENDDO создают структуру петли управления, а не петли транзактов, поэтому в петле присутствуют только ОУ, а не ОБ.
  • Необходимо помнить, что операнды в петле должны записываться по правилам записи операндов, предусмотренных программой, т.е. без пробелов, появление пробела справа воспринимается программой как начало комментарий.

Рассмотрим пример записи петли управления:
DO I=1,10,1
START 1
CLEAR
ENDDO
END
В примере петля управления задана операндами ОУ DO, операнд D можно было бы не писать, так как его значение по умолчанию и так равно 1, петля начинается с первого шага и заканчивается на 10 -м шаге. При каждом значении индекса происходит исполнение ОУ START/CLEAR . При отсутствии петли управления эту пару ОУ надо было бы написать 10 раз подряд.

Отметим также, что при введении петли управления на первое место в модуле управления встаёт ОУ DO.
ОУ DO/ENDDO являются важными компонентами мощного и гибкого языка операторов управления (control statement language -CSL), являющегося частью GPSS/H .
Другие ОУ управления логикой
Другими компонентами CLS являются ОУ, обеспечивающий простоту вычислений - LET, ОУ ввода и вывода информации GETLIST и PUTPIC, логические операторы IF,ELSEIF,ELSE ,ENDIF, ОУ способный обращаться и вызывать внешние подпрограммы - CALL , ОУ безусловного обращения GOTO . Все эти операторы представляют несомненный интерес , но их рассмотрение выходит за рамки предлагаемого материала.

Операторы описания

Ниже рассмотрим только основные ОО, которые будут использоваться в материале, приводимые ОО даются в алфавитном порядке.
INTEGER
Этот ОО используется для описания целочисленных АМП, представляющих собою скалярную одноразмерную переменную. Все целочисленные АМП должны быть определены в ОО INTEGER до их первого появления в МФ. Формат записи ОО INTEGER имеет вид :
INTEGER A,B,C,
label - не имеет значения по умолчанию, появление ярлыка воспринимается как ошибка компиляции.
А не имеет значения по умолчанию, отсутствие операнда воспринимается как ошибка компиляции, определяет имя целочисленной АМП.
В,С - имеют тот же смысл, что и операнд А и при необходимости определяют дополнительные целочисленные АМП.


Таким образом, ОУ INTEGER может определять несколько АМП одновременно. При этом АМП разделяются запятыми, если определяется одноразмерный массив, то число членов массива заключается в круглые скобки. Рассмотрим пример использования ОУ INTEGER
1. INTEGER I,J,K
2. INTEGER IVEC(25)
В первом примере задаются 3 различных АМП, во втором примере определяется массив, включающий в себя 25 членов. Существует ещё четыре ОО, описывающие другие типы АМП ( см.3.3.4).
OPERCOL ( переназначить начало записи операндов )
Этот ОО используется для переназначения стартовой позиции записи операндов, которая по умолчанию начинается с 25-ой колонки ( подробнее см. параграф 3.4) и может меняться от 10-ой до 60-ой колонки. Формат записи ОО OPERCOL (ORERand start COLumn ) имеет вид:
OPERCOL A ,
А по умолчанию равен 25, при наличии операнда меняет позицию начала записи операндов, в соответствии с числом стоящим в поле операнда (10 60 ).
Приведём пример записи ОО OPERCOL :
OPERCOL 35
В примере стартовая позиция начала записи операндов изменена на 35.
Применение ОО OPERCOL особенно полезно, когда создаются одинарные или вложенные петли управления, ОО OPERCOL располагается в модуле описания.
REALLOCATE ( перераспределять )
Этот ОО используется для указания об увеличении общей памяти, которая в студенческой версии имеет объём равный 32720 байт, а обычно используется 10000 байт. Располагается ОО REALLOCATE в любом месте МФ, но разумней располагать его в модуле описания, чтобы не дожидаться появления сообщения об ошибке 411 out of COMMON - переполнение общей памяти. Формат записи ОО REALLOCATE имеет вид :
REALLOCATE A,B
А - не имеет значения по умолчанию, представляет собой имя переназначаемого объекта (в нашем случае памяти),
В - по умолчанию равен 10000 байт, представляет собой число, обозначающее запрашиваемый объём памяти ( до 32720 байт ).
В программе существует другая возможность увеличения объёма общей памяти, непосредственно в командной строке можно записать опцию MAXCOM после имени файла, что автоматически увеличивает объём общей памяти до максимума, действие этой опции перекрывает эффект действия ОО REALLOCATE , но увеличивает время ИМ.
Рассмотрим пример применения ОО REALLOCATE :
REALLOCATE COM,20000
В примере общая память переназначается до значения 20000 байт.

Переменные( амперпеременные АМП)


В языке GPSS/H имеется мощное средство для хранения данных, получаемых при моделировании; сбора статистики и создания собственных образцов файла отчета. Это так называемые -переменные -АМП (они начинаются со знака - "амперсант").

Эти переменные могут быть целочисленными (integer), вещественными (real), или символьными (character).
Для использования таких переменных в вашей модели необходимо объявить об их использовании в начале программы с помощью следующих операторов описания:
INTEGER
Этот ОО используется для описания целочисленных -переменных. Формат оператора следующий:
INTEGER avar, ,
где avar имя очередной целочисленной -переменной.
REAL
Используется для описания вещественных -переменных. Формат:
REAL avar, ,
где avar имя очередной целочисленной -переменной.
CHAR
Формат этого оператора, описывающего символьные -переменные, несколько отличается от формата двух предыдущих:
CHAR *N avar,,
где N количество символов в переменной.
VCHAR
Аналогично предыдущему оператору, но описанная таким образом переменная может быть любой длины, но не более N.
В описанных выше операторах есть возможность придать переменной новое качество: описать ее как линейный массив (вектор). Для этого количество элементов массива указывается в скобках после имени переменной (подобно аналогичным операторам в других языках программирования).
LET
Этот оператор описания используется для присвоения -переменным любых видов новых значений. Располагается этот оператор в разделе описания и имеет формат:
LET avar=xpress,
где avar имя переменной, а xpress любое математическое выражение с использованием функций, -переменных, стандартных числовых атрибутов и т.д., либо число или строка (для строчных -переменных). Этот оператор описания может располагаться в модели непосредственно после описания соответствующих переменных.

В случаях, когда необходимо задать значение переменной непосредственно в теле программы, используется оператор BLET. С его помощью можно записывать математические выражения с участием СЧА, амперсант-переменных, постоянных и математических функций.

Случайные числа и функции

На практике часто встречаются случайные величины, распределение которых неравномерно, а подчиняется, например, нормальному закону, закону Эрланга или Вейбулла. Для моделирования процессов, связанных с этими величинами, предназначены такие средства языка GPSS/H, как генераторы случайных чисел и функции.
В GPSS/H имеется восемь встроенных генераторов случайных чисел (ГСЧ), которые реализуют процедуру генерации псевдослучайного числа из диапазона (0;1) с равномерным распределением вероятности. Как известно, из распределенных таким образом может быть получен поток чисел, распределенных по любому другому закону.

Именно таким приемом пользуется GPSS/H для получения разнообразных законов.
При работе программы GPSS/H встроенный ГСЧ при каждом запросе выдает случайное число. Чтобы получить это число в явном виде, можно воспользоваться СЧА потока случайных чисел:

СЧА Описание
RN(j) Создает поток псевдослучайных чисел с генератора с номером j. Если используется в качестве аргумента функции, числа получаются с плавающей запятой, равномерно распределенные в интервале (0,1), исключая концы интервала. В прочих случаях числа целые, распределены равномерно в интервале (0,999), включая концы интервала.
FRN(j) Создает число из потока псевдослучайных чисел с номером j. Числа получаются с плавающей запятой, равномерно распределенные в интервале (0,1), исключая концы интервала.

Используя СЧА потоков случайных чисел, можно задавать случайные функции. В GPSS/H обычно используется табличный способ задания функций.

Для определения функции служит управляющий оператор FUNCTION (см. 3.3.2). В GPSS/H имеется также библиотека встроенных функций, реализующих часто применяемые законы распределения случайных чисел. Ниже перечислены некоторые из них.
RVBIN
Описывает дискретное биномиальное распределение. Параметрами являются: номер ГСЧ, количество испытаний и вероятность успешного испытания.
RVERL
Описывает М-распределение Эрланга с параметрами: номер ГСЧ, целое положительное m и среднее.
RVEXPO
Описывает экспоненциальное распределение с параметрами: номер ГСЧ, заданное среднее.
RVGAMA
Описывает гамма-распределение. Задаются: номер ГСЧ, параметр формы и параметр шкалы.
RVNORM
Описывает числа с нормальным распределением. Параметры: номер ГСЧ, среднее и стандартное отклонение.
Использование встроенных функций значительно облегчает написание и отладку программ. Ниже приведены примеры использования встроенных функций:
GENERATE RVEXPO(3,1.00),,0.5: первая цифра указывает на номер генератора случайных чисел (номер генератора не влияет на результаты моделирования, так как стартовая позиция генераторов одинакова), вторая указывает на время прихода транзактов распределенное по экспоненциальному закону со средним, равным 1; далее операнд В отсутствует по определению, так как операнд А задает закон распределения, операнд С определяет,что первый транзакт приходит через 0,5 единиц модельного времени,
BLET m=2.17, sigma=3.99
ADVANCE RVNORM (3,m,sigma): ГСЧ номер 3, время задержки транзакта распределено по нормальному закону с математическим ожиданием, равным 2,17 и среднеквадратическим отклонением, равным 3,99.

Порядок работы с GPSS/H

Работа с моделью на языке GPSS/H (студенческая версия) состоит из создания, отладки и использования модели (программы). Рассмотрим эти задачи последовательно в том порядке, в котором они обычно решаются на практике.

Причем режим отладки (дебагера) рассмотрим в параграфе 3.6.

Создание файла, содержащего модель GPSS/H

Студенческая версия GPSS/H даёт полное представление о возможностях ЯИМ, способствует его осознанному изучению и позволяет приобрести необходимые навыки. Отличия от профессиональной версии заключаются:

  • в способе управления пакетом, так студенческая версия работает под MS DOS непосредственно или в любой оболочке типа NC, VC, Far. В качестве рекомендации можно посоветовать не выходить в эмуляцию DOS, а работать в любой из указанных оболочек.
  • в размере модельного файла - не более 125 операторов блоков ОБ, 250 операторов всех видов, при увеличении числа операторов появляется сообщение: ERROR: STUDENT VERSION IS LIMITED TO 125 BLOCKS.
  • в ограничении общей памяти - не более 32720 байтов. Это ограничение особенно заметно при плохом выборе параметров входных потоков и потоков обслуживания, так как обычно используется только 10000 байт памяти.. При этом следует сообщение о переполнении памяти , которого не следует бояться

(Error 411 -Out of COMMON . Add/change REALLOCATE Stmt ?) с просьбой изменить параметры или переназначить объём памяти до 32720 байт командой MAXCOM или изменить значения в пределах больше 10000 и до 30000 командой REALLOCATE имеющей синтаксис:
REALLOCATE COM,byte

  • в стоимости пакета - студенческая версия дешевле более чем на полтора порядка.

В остальном , идеология студенческого и профессионального пакетов не отличаются друг от друга .
При инсталяции дистрибутива необходимо проделать следующее:

  • Войти в сессию, какой либо командной оболочки,
  • Поставить дискету с дистрибутивом в дисковод,
  • Выбрать директорию для размещения GPSS/H,
  • В меню запуска программы набрать: A:\ INSTALL,
  • Внести изменения в AUTOEXEC.BAT,
  • Перезапустить компьютер.

Запуск программы осуществляется путём набора в командной строке:
GPSSH filename.gps Enter
filename означает имя модельного файла, выбранного из списка файлов, имеющихся в программе или созданного исследователем с помощью редактора оболочки. После успешного моделирования появляется новый файл (листинг отчёта) с тем же именем, но имеющий расширение .lis, который можно просмотреть, используя клавиши F3 или F4.

В случае наличия в МФ ошибок компиляции появляется усечённый листинг, содержащий указания об ошибках, но не имеющий результатов моделирования.
Предупреждение:

  1. Несмотря на наличие в командной строке названия GPSS/H после приглашения надо обязательно набирать имя программы GPSSH, и после пробела имя МФ (либо использовать горячие клавиши Ctrl j) , находясь курсором на МФ.
  2. Вновь создаваемому МФ обязательно присваивать расширение .gps
  3. Никогда не пытайтесь запускать программу файлом gpssh.exe !

После создания МФ и его записи в редакторе оболочки (формат записи см. ниже) процесс моделирования распадается на две фазы:
Начало компиляции, с появлением на экране сообщения " Pass 1 (with source listing) " , во время этой фазы считывается МФ, проверяются синтаксические ошибки, происходит нумерация строк МФ,
Процесс компиляции, с появлением сообщения " Pass 2 " , во время этой фазы МФ преобразуется в форму удобную для исполнения и производится распределение памяти. При отсутствии ошибок начинается моделирование, предваряемое сообщением "Simulation begins "
Эти сообщения читаются в сеансе DOS, при моделировании в командной оболочке эти сообщения не появляются, процесс моделирования оканчивается практически сразу (время моделирования МФ из 100 операторов исчисляется миллисекундами) и в списке файлов появляется файл отчёта .lis (листинг), либо содержащий данные о процессе моделирования, либо об ошибках. Никакой специальной команды для выхода из процесса моделирования при работе в командных оболочках подавать не надо.
Предупреждение: В процессе работы с программой никогда не вносите никаких изменений в имеющиеся файлы задач основного пакета. Если возникла необходимость изменения данных в задачах пакета - создайте свой файл, скопируйте в него желаемую задачу и только после этого проводите эксперименты с вновь созданным файлом, носящим присвоенное Вами имя.
Модельный файл создаётся в редакторе оболочки по клавише F4, он представляет собой обычный текстовый файл, который можно создавать в любом текстовом редакторе. Необходимо только, чтобы текст был записан в ASCII-кодах.

Файлу обязательно присваивать собственное имя с расширением *.gps , форматы записи МФ рассмотрены ниже.
В GPSS/H допускается два формата записи операторов: - фиксированный и свободный, далее в тексте будет использоваться только фиксированный формат.
А. Фиксированный формат.
Представление о фиксированном формате представлено на рис. 3.3 (для 80 колонкового редактора). 1. В первой колонке может быть поставлен знак *, тогда эта строка не читается симулятором и воспринимается как строка комментарий. В этой строке можно писать любые сообщения, в том числе и на русском языке, например, Модуль задания для модели банка или продолжать длинный текст комментарий предыдущей строки.
2. Ярлык может состоять из 6 буквенно-цифровых литер, начинаясь всегда с буквы, правда, некоторые ОУ могут иметь только цифровой ярлык, ОБ никогда не имеют цифровой ярлык. Появление одинаковых ярлыков для разных объектов не допустимо.

Также нельзя допускать, чтобы ярлык совпадал с именем оператора или кодом операции. осле написания ярлыка следует пробел до 9-ой колонки. У ОУ ярлык может быть, например, ОУ TABLE, а может и отсутствовать, так он может быть лишним в ОУ STORAGE .
3. Код действия. Он является ключевым словом (названием) ОБ ,ОУ и ОО, оно начинается с 9-ой колонки, как уже говорилось выше код действия может быть сокращён до 4-х первых букв, однако для лучшей читаемости МФ сокращениями надо пользоваться осторожно и редко. Для новых ОБ, начинающихся на букву В такие сокращения просто не допустимы
( например , BGETLIST , BGETSTRING). Вспомогательные коды в силу их краткости не могут быть сокращены.

После кода действия обязательны пробелы до значения OPERCOL.
Здесь повторим определение оператору OPERCOL (operand start column), который назначает колонку, с какой начинается написание операндов в обоих возможных форматах записи. Значение этого оператора по умолчанию 25-я колонка, однако, это можно переназначить написав
OPERCOL n где n может принимать значения от 10 до 60. Значение этого оператора больше 25 оправданно, когда используется петля DO, сдвигаемая вправо.

Этот оператор равно применим в обеих типах форматов.
4. Операнды. Их запись начинается с колонки, определённой OPERCOL. GPSS/H позволяет кодировать операнды в виде аналитических выражений, что придаёт ЯИМ большую гибкость.

В случае, когда выражения имеют большую длину, запись операндов возможно производить на следующей строке, предваряя запись символом " _ ", что воспринимается симулятором, как продолжение предыдущей строки. Когда рассматривается последовательность объектов, то в этом операнде последовательность объектов пишется через " ", например, FUNAVAIL 1-5 . В написании операндов можно использовать скобки. Сами операнды А,В,С,.. пишутся через запятую без пробелов.

Отсутствие, какого либо операнда отмечается двумя запятыми без пробела. Рассмотрим примеры записи операндов:
SAVEVALUE (PH3 - 5 )- (PH3 + 5 ),25,XH
GENERATE RVEXPO(1,2),,10,,5
После написания последнего операнда обязателен как минимум один пробел, а при наличии макроса (оператор MACRO) как минимум два пробела.
5. Комментарий. При отсутствии у кода действия операндов, запись комментарий возможна в любой колонке, начиная с OPERCOL + 1, до 72 колонки 80-ти колонкового редактора или до конца строки при 132 колонках.

При необходимости написать более длинные комментарии, переход на новую строку предваряется *. Комментарий имеет смысл писать всегда для лучшей читаемости как МФ, так и выходного отчёта.
Б2 Свободный формат

  1. Gрлык может начинаться в 1-ой или 2-ой колонке и иметь от 1 до 8 литер.
  2. Код операции отделяется от ярлыка одним или большим числом пробелов. При отсутствии ярлыка код операции может начинаться с 3-ей колонки, но не попадать в поле OPERCOL.
  3. Операнды начинаются через один или большее число пробелов и пишутся до или непосредственно в поле OPERCOL .
  4. Комментарий пишется через один или два пробела (при наличии макросов), если код операции не имеет операндов, комментарии начинаются с колонки OPERCOL + 1 и продолжаются до конца строки.

Далее в тексте будет использоваться только фиксированный формат, так как его отображение в МФ имеет стандартный вид.

Интерпретация результатов

Файл отчета содержит большое количество информации, и для упрощения ее восприятия мы приводим пояснения некоторых обозначений, которые используются при отображении результатов моделирования.
В начале файла отчета содержится информация о модели: номера строк (в том числе присвоенные компилятором), все блоки и их операнды, указанные комментарии. Далее следует так называемый словарь объектов ENTITY DICTIONARY. Эта часть отчета представляет собой список всех объектов, применяемых в данной модели, с указанием номеров, присвоенных им компилятором. Следующая часть отчета указатель перекрестных ссылок (CROSS REFERENCE), где указывается, к каким типам принадлежат упомянутые объекты.

В секции счетчик блоков BLOCK COUNT приводится основная статистика работы блоков. Ниже приводится расшифровка терминов, используемых GPSS/H в выходном файле.

Фраза Simulation begins означает, что модель была исполнена, и после этой фразы приводятся результаты исполнения.
--AVG-UTIL-DURING-- - заголовок части выходного файла, посвященной основной статистике модели; эта часть представляет из себя таблицу (к сожалению, границы столбцов в таблице не прорисовываются, из-за чего чтение результатов иногда требует внимательности) со следующими заголовками:
FACILITY: указывает название устройства;
TOTAL TIME: полное время работы устройства;
AVAIL TIME: время, в течение которого устройство было свободно;
UNAVL TIME: время, в течение которого устройство было занято;
ENTRIES: количество транзактов, вошедших в устройство;
AVERAGE TIME/XACT: среднее время пребывания транзакта в устройстве;
CURRENT STATUS: текущее состояние (занято - свободно);
PERCENT AVAIL: доля времени, в течение которого устройство было занято.
В случае, если в модели используются операторы QUEUE и DEPART, в выходном файле будет также содержаться информация об очереди.

Правила окончания процесса ИМ

Как уже отмечалось выше, одним из главных моментов ИМ является выработка команды на прекращение процесса ИМ при выполнении заданного условия. Этот вопрос достаточно очевиден, но, тем не менее, вызывает определённые трудности у студентов, поэтому он выделен в отдельный параграф.
Процесс ИМ в GPSS/H прекращается при выполнении одного из двух условий:
1. Окончание ИМ по числу стартов, когда показания счётчика завершений - CЗ (TG1) обнуляются или приобретают отрицательное значение.
2. Окончание ИМ по времени испытаний, когда накопленное время движения транзактов превышает заданное время испытаний.



Содержание раздела