Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИМЭП (методичка1) обр-Ариал.doc
Скачиваний:
4
Добавлен:
06.09.2019
Размер:
631.3 Кб
Скачать

2. "Строки, соответствующие блокам gpss"

Существуют три поля, которые должны присутствовать в строке, представляющую данный блок. Позиции строк, используемые для записи этих полей, представлены в табл. 2.1.

Таблица 2.1. Поля строк, в которые записывают информацию блоков.

Поля строк, в которые записывают информацию блоков

Информация блока

Имя блока

Операция

Операнды

Символическое имя (если оно задано) блока нужно заполнять в последовательных колонках, но обязательно в первой позиции. Операцию блоков записывают, начиная со второй позиции. Операнды заполняют в третьей позиции записи. Операнды следуют один за другим, их отделяют друг от друга запятыми. Между операндами не должно быть пробелов.

Комментарии отделяются знаком «;» и не являются обязательным полем записи.

Рис. 2.2.Дополнительные примеры блока GENERATE :

а - с операндами A-D ;

б - с заданными операндами А и С;

в - с заданными значениями операндов А, В и Е.

3. "Удаление транзактов из модели. Блок теrмinате (завершить)"

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

Рис.3.1. Блок ТЕRМINАТЕ (ЗАВЕРШИТЬ) с операндом А.

На рис. 3.1 изображен блок ТЕRМINАТЕ с операндом А в обычной записи. Операнд А является указателем уменьшения счетчика завершений. Иначе говоря, он задает величину, которая должна вычитаться из специального счетчика, называемого счетчиком завершений, каждый раз, когда транзакт входит в блок ТЕRМINАТЕ. Если разработчик не желает задавать операнд А блока ТЕRМINАТЕ, то по умолчанию подразумевается значение О. Вход транзакта в такой блок ТЕRМINАТЕ не вызывает уменьшения содержания счетчика завершений.

Что же такое счетчик завершений? Эта такая ячейка памяти ЭВМ, которая хранит положительное целое значение, записанное в начале моделирования. В процессе моделирования транзакты попадают в блоки ТЕRМINАТЕ, и таким образом происходит уменьшение содержания счетчика. При достижении содержанием счетчика нуля моделирование завершается.

Обратите внимание на тот факт, что хотя в модели может быть много блоков ТЕRМINАТЕ, счетчик завершений только один. Это и есть тот самый счетчик завершений, из которого происходит вычитание при вхождении транзакта в любой блок ТЕRМINАТЕ. Как уже указывалось, счетчик завершений содержит заданное значение в начале моделирования.

Интерпретатор GPSS начинает моделирование, когда встречается управляющая карта SТАRТ (НАЧАТЬ) в перфокарточном варианте модели. Для определения начального значения счетчика завершения используется операнд А карты SТАRТ.

Слово SТАRТ записывается в поле операции строки. Рассмотрим теперь пример, в котором блок ТЕRМINАТЕ и карта SТАRТ используются для управления процессом моделирования.

Предположим, что разработчик выбрал в качестве единицы времени 1 мин. Он хочет промоделировать поведение системы в течение 8 ч, затем моделирование должно быть закончено.

Он сможет сделать это следующим образом.

  1. В модель включают сегмент из двух блоков, изображенных на рис. 3.3.

Рис.3.3.Сегмент из двух блоков, обеспечивающих завершение моделирования в момент модельного времени, равный 480 (выполнение двух других условий подразумевается).

  1. Во всех прочих блоках ТЕRМINАТЕ в модели подразумевается использование операнда А по умолчанию. Это означает, что завершение моделирования, определяемое счетчиком завершений, не будет зависеть от других блоков ТЕRМINАТЕ.

  2. В карте SТАRТ в качестве операнда А должна быть использована единица.

Единичное значение операнда А карты SТАRТ вызывает запись в счетчик завершений интерпретатора единицы в качестве начального значения. В процессе моделирования завершения движений транзактов, которые происходят время от времени в других блоках ТЕRMINАТЕ, не оказывают воздействия на счетчик завершений. Следовательно, в момент модельного времени, равный 480, транзакт попадет в блок GЕNЕRАТЕ, изображенный на рис. 3.3. Он сразу же перейдет в следующий блок ТЕRМINАТЕ, вызывая тем самым подпрограмму ТЕRМINАТЕ. Поскольку операнд этого блока содержит единицу, то из счетчика завершений вычитается единица. Это уменьшает значение счетчика от единицы до нуля. В результате интерпретатор прекращает моделирование.

Такой способ использования счетчика завершений может показаться несколько странным для управления моделированием. Тем не менее только этот способ управления продолжительностью моделирования на GPSS доступен разработчику.

Теперь предположим, что для выполнения действий, описанных в предшествующем примере, разрабочик использует следующее:

  1. он вставляет в модель двухблочный сегмент, изображенный на рис. 3.4;

Рис.3.4. Другой вид сегмента из двух блоков, вызывающий завершение моделирования в момент времени, равный 480 ( выполнение двух других условий подразумевается ).

  1. во всех прочих блоках ТЕRМINАТЕ модели подразумевается использование операнда А по умолчанию;

  2. в качестве операнда А карты SТАRТ используется число 480.

Заметим, что в блоке GЕNЕRАТЕ (рис.3.4) в качестве интервала времени задана единица. Иначе говоря, транзакты появляются здесь в моменты времени 1, 2, 3, 4, ... , 478, 479 и 480.Каждый из этих транзактов попадает в последующий блок ТЕRMINАТЕ, где из счетчика завершений вычитается единица при удалении транзакта. Когда в блок ТЕRMINАТЕ войдет 480-й транзакт, значение счетчика завершений уже будет равно единице. 480-й транзакт вызывает уменьшение его от единицы до нуля, и моделирование завершается.

Метод завершения моделирования, представленный в первом примере, является более предпочтительным, хотя в логическом смысле они равнозначны, так как последний пример требует 480 выполнений обработки блоков GENERАТЕ и ТЕRMINАТЕ. Так как обработка каждого блока требует времени ЭВМ, то последний пример по крайней мере в 480 раз дороже предыдущего. При втором способе завершения моделирования интерпретатор GPSS пройдет все фиксированные моменты времени, поскольку таймер должен принимать значения 1, 2, 3, 4, ..., 478, 479 и 480 из-за того, что транзакты входят в модель через блок GENERATE, изображенный на рис.3.4. Это в значительной степени увеличивает число приращений значений времени к таймеру в процессе моделирования, что способствует еще большему увеличению времени моделирования.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]