Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лабораторных работ 2003.docx
Скачиваний:
77
Добавлен:
12.03.2015
Размер:
8.67 Mб
Скачать
    1. Операторы, имитирующие работу группирующей категории

Группирующую категорию образуют группы и списки. На языке GPSSWимеются различные по своему функциональному назначению списки, в том числе текущих событий, будущих событий, прерванных транзактов, транзактов, ожидающих в очереди. Наибольший интерес для программиста представляют списки пользователя, которые можно использовать для повышения эффективности работы программы. Списки пользователя позволяют поместить в них некоторые транзакты, которые не могут передвигаться в модели, в чем заранее уверен программист, и они выводятся из активного состояния, то есть переводятся в пассивное состояние. Этим самым они фактически лишаются регулярного «просмотра» диспетчером модели, за счет чего происходит сокращение времени моделирования. Снова вернуть их в активное состояние может только программист, предусмотрев для этого возможность их вывода из списка пользователя с помощью каких-то активных транзактов. Для изменения состояния списков пользователя применяют следующие блоки, представленные в таблице 1 .16.

Таблица 1.16. Операторы, имитирующие работу группирующей категории

Блок

Описание

1

LINKA,B,C

Посылка активных транзактов в список пользователя,

2

UNLINK O A,B,C,D,E,F

Вывод пассивных транзактов из списка пользователя

В операнде А данных блоков записывается идентификатор списка пользователя. В операнде В блока LINKуказывается дисциплина помещения транзакта в список пользователя. Допустимы следующие дисциплины:

  1. FIFO– первый пришел, первым вышел.

  2. LIFO– последний пришел, первым вышел.

  3. PR– чем выше приоритет, тем ближе к выходу из списка пользователя устанавливается транзакт.

  4. Р – чем меньше число в параметре, тем ближе к выходу из списка пользователя устанавливается транзакт; в данном режиме требуется обязательно указать идентификатор параметра.

Ввод в список пользователя любого нового транзакта приводит к пересмотру очереди транзактов по выходу их из списка пользователя. Транзакт, вошедший в блок LINK, пытается войти в блок, метка которого указана в операнде С и таким образом, остаться активным. Если же это не удается, он переводится в пассивное состояние по правилу, заданному в операнде В.

Вывод пассивных транзактов из списка пользователя производится при поступлении какого-либо активного транзакта в блок UNLINK. В операндеOблокаUNLINKзаписывается один из условных операторов отношений, или не записывается ничего. В операнде А блокаUNLINKуказывается идентификатор списка пользователя. В операнде В указывается метка, к которой направляются пассивные транзакты из списка, а активный транзакт переходит к следующему блоку. В операнде С указывается количество пассивных транзактов, удаляемых из списка пользователя. Если удаляются все транзакты, то записывается символALL. В операндеDуказывается проверяемое значение. В операндеEуказывается контрольное значение, которое сравнивается с содержимым операндаD. В операндеFуказывается метка, к которой направляется транзакт в случае если по указанному условию в списке пользователя не удалось найти ни одного транзакта. Если в операндеFничего не указано, то транзакт в любом случае направляется к следующему блоку.

Примеры использования описанных выше блоков приведены в таблице 1 .17.

Таблица 1.17 Примеры использования операторов, имитирующих работу группирующей категории

Пример использования оператора

Комментарии

LINKONHOLD,FIFO

Активный транзакт помещается в конец списка пользователя с именем ONHOLD

UNLINK