logo search
Чтоесть / Мое / Конспект лекций Для студентов специальности 080801

4.5. Удаление транзактов из модели. БлокTerminate

Транзакты удаляются из модели, попадая в блок TERMINATE (ЗАВЕРШИТЬ). В этот момент освобождается память, выделенная под транзакт. Эти блоки всегда позволяют выйти всем транзактам, которые пытаются это сделать. В модели может быть любое количество блоков TERMINATE. Формат блока:

TERMINATE [A]

Операнд А является величиной уменьшения специального счет­чика, который называется счетчиком завершения. Этот операнд за­дает величину, которая вычитается из счетчика каждый раз, когда транзакт входит в блок TERMINATE. По умолчанию А = 0. Вход транзакта в блок TERMINATE с нулевым значением операнда А не вызывает уменьшения счетчика завершения.

Счетчик завершения - это ячейка в памяти ЭВМ, которая хранит целое положительное число. Начальное значение этого счетчика ус­танавливается в начале моделирования. Оно равняется значению опе­ранда А команды START (НАЧАТЬ). В процессе моделирования транзакты попадают в блок TERMINATE и, таким образом, умень­шают значение счетчика на величину операнда А. Моделирование заканчивается, когда значение счетчика становится равным нулю или отрицательному числу.

1. В модели может быть много блоков TERMINATE, но счетчик завершения - один, с начальным значением, указанным в команде START.

2. Не путать ограничитель транзактов в блоке GENERATE и счетчик завершения. Ограничитель задает число тран­зактов, которые войдут в модель, а счетчик - число транзактов, кото­рые выйдут из модели. По окончании моделирования транзакты мо­гут оставаться в модели.

Интерпретатор начинает моделирование по команде START. Ее

формат:

START A,[B],[C],[D]

В операнде А задается начальное значение счетчика завершения. О назначении остальных операндов будет рассказано в параграфе 4.27.

Управление продолжительностью процесса моделирования.

В языке GPSS продолжительностью процесса моделирования можно управлять двумя способами:

1) завершать моделирование после того, как модель покинет за­данное число транзактов определенного типа;

2) завершать моделирование по истечению заданного интервала времени.

Первый способ:

1. В команде START операнду А присваивается значение за­данного числа транзактов.

2. Во всех блоках TERMINATE, через которые транзакты за­данного типа покидают модель, операнду А присваивается значение «1» или другое, отличное от нуля (соответственно содержательному значению транзактов).

3. Во все других блоках TERMINATE используется значение операнда А по умолчанию (А = 0). Значение счетчика завершения не будет зависеть от этих блоков.

Первый способ позволяет закончить моделирование, когда через модель пройдет заданное количество транзактов, например 1000:

GENERATE 40,5

TERMINATE START 1000

Второй способ:

Пусть разработчик выбрал за единицу модельного времени 1 мин и хочет Смоделировать поведение системы на протяжении 8 ча­сов. Это можно сделать таким образом:

1. Ввести в модель таймер-сегмент, состоящий из двух блоков:

GENERATE 480

TERMINATE I

2. Во всех других блоках TERMINATE в модели использовать значение операнда А по умолчанию (А = 0). Это означает, что пре­кращение моделирования, определяемое счетчиком завершения, не будет зависеть от других блоков TERMINATE.

3. В команде START операнд А должен равняться единице.

Таким образом, в процессе моделирования завершение движе­ния транзактов в других блоках TERMINATE не влияет на счетчик завершения. В момент времени 480 транзакт выйдет из блока GENERATE и сразу же перейдет в блок TERMINATE. Счетчик за­вершения уменьшится на единицу, и интерпретатор завершит моде­лирование.

Задание для самостоятельной работы:

1. Напишите сегмент программы, в котором моделирование за­канчивается после того, как через модель пройдут 300 транзактов. Транзакты должны поступать в модель каждые 25±4 ед. модельного времени.

2. Задайте время моделирования работы системы "8 часов. Еди­ница модельного времени - 1 сек.