Реферат: Моделирование на GPSS
Для изменения приоритета транзакта служит блок PRIORITY (прио-
ритет), имеющий следующий формат:
имя PRIORITY A,B
В поле A записывается новый приоритет транзакта. В поле B мо-
жет содержаться ключевое слово BU, при наличии которого транзакт,
вошедший в блок, помещается в списке текущих событий после всех
остальных транзактов новой приоритетной группы, и список текущих
событий просматривается с начала. Использование такой возможности
будет рассмотрено ниже.
Для удаления транзактов из модели служит блок TERMINATE (за-
вершить), имеющий следующий формат:
имя TERMINATE A
Значение поля A указывает, на сколько единиц уменьшается со-
держимое так называемого счетчика завершений при входе транзакта в
данный блок TERMINATE. Если поле A не определено, то оно считается
равным 0, и транзакты, проходящие через такой блок, не уменьшают
содержимого счетчика завершений.
Начальное значение счетчика завершений устанавливается управ-
ляющим оператором START (начать), предназначенным для запуска про-
гона модели. Поле A этого оператора содержит начальное значение
счетчика завершений (см. разд. 3). Прогон модели заканчивается,
когда содержимое счетчика завершений обращается в 0. Таким образом,
в модели должен быть хотя бы один блок TERMINATE с непустым полем
A , иначе процесс моделирования никогда не завершится.
Текущее значение счетчика завершений доступно программисту че-
рез системный СЧА TG1 .
Участок блок-схемы модели, связанный с парой блоков
GENERATE-ТERMINATE , называется сегментом . Простые модели могут
состоять из одного сегмента, в сложных моделях может быть несколько
сегментов.
Например, простейший сегмент модели, состоящий всего из двух
блоков GENERATE и TERMINATE и приведенный на рис. 1, в совокупности
с управлящим оператором START моделирует процесс создания случайно-
го потока транзактов, поступащих в модель со средним интервалом в
100 единиц модельного времени, и уничтожения этих транзактов. На-
чальное значение счетчика завершений равно 1000. Каждый транзакт,
проходящий через блок TERMINATE , вычитает из счетчика единицу, и
таким образом моделирование завершится, когда тысячный по счету
транзакт войдет в блок TERMINATE . При этом точное значение таймера
в момент завершения прогона непредсказуемо. Следовательно, в приве-
денном примере продолжительность прогона устанавливается не по мо-
дельному времени, а по количеству транзактов, прошедших через мо-
дель.