logo
Учебное пособие_Моделир систем_Зиновьев

4.3. Моделирование завершения техпроцесса

Созданные транзакты, двигаясь по модели, имитируют операции, происходящие в реальном техпроцессе. Для того чтобы остановить моделирование необходимо вывести определенное количество транзактов из модели или остановить модель через какое-то заданное время. Для этого используют блок TERMINATE.

Блок TERMINATE (завершить) - удаление транзактов из модели (рис. 11).

Рис. 11. Блок ТERMINATE

При входе транзакта в блок TERMINATE, он уничтожается и из специального счетчика завершения вычитается целое число, записанное в операнде А. Счетчик завершения - ячейка памяти, которая хранит положительное целое значение, записанное в начале моделирования. Счетчик завершения в GPSS/Н-модели может быть только один. Если его значение станет равным 0 (или меньше 0), моделирование прекратится. Если значение операнда А не установлено (то есть равно 0), значение счетчика завершения не изменяется.

Примеры блока TERMINATE:

TERMINATE 1

удаляет транзакты из модели, при этом содержимое счетчика завершения (каждый раз при входе транзакта) уменьшается на единицу.

TERMINATE

удаляет транзакты из модели, при этом содержимое счетчика завершения не изменяется.

После того, как написана GPSS/H-программа, прежде чем выполнять прогоны модели, к ней необходимо добавить специальные операторы. Одним из таких операторов является START.

Оператор START - устанавливает значение счетчика завершения.

В операнде А оператора START записывается начальное значение счетчика (больше 0).

Примеры оператора START:

1. Предположим, что требуется промоделировать техпроцесс в течение 480 единиц времени. Для этого необходимо:

а) в модель включить сегмент из двух блоков, называемый счетчиком модельного времени (рис. 12);

Рис. 12. Счетчик модельного времени

б) во всех прочих блоках TERMINATE операнд А обнулить;

в) операнд А оператора START установить равным 1.

Часть GPSS/H-программы будет иметь следующий вид:

* 1-й сегмент модели

GENERATE 3.2,1.2,,2

. . .

TERMINATE

* 2-й сегмент модели

GENERATE 480

TERMINATE 1

START 1

В момент модельного времени 480, транзакт выйдет из блока GENERATE второго сегмента и сразу же попадет в блок TERMINATE. Поскольку операнд этого блока содержит 1, то из счетчика завершения отнимется 1. Это уменьшит значение счетчика до 0 и интерпретатор остановит прогон модели.

2. Предположим, что требуется закончить прогон модели, после того как будет обслужено 100 транзактов. Для этого необходимо:

а) установить значение операнд А оператора START равным 100;

б) установить операнд А блока TERMINATE равным 1.

Часть GPSS/H-программы будет иметь следующий вид:

GENERATE 3.2,1.2,,2

. . .

TERMINATE 1

START 100

Когда транзакт будет входить в блок TERMINATE, счетчик завершения будет уменьшаться на 1. Прогон будет продолжаться, пока значение счетчика не достигнет 0 (то есть пока не удалится 100 транзактов).