Примечание

Структура строки GPSS-программы аналогична структуре строки программы на ассемблере:

[метка] имя_блока список_полей [; комментарий после символа “точка с запятой”]

* Строка-комментарий начинается с первой позиции символом “звездочка”’ *

Ниже приведен пример GPSS-программы, состоящей из одного сегмента,имитирующей обслуживание заявок в устройстве UST1 с неограниченной очередью Q1 заявок перед устройством.

*

REALL XAC, 150, FAC,1, QUE,1; Оператор управления задает в модели 150 *транзактов, одно устройство и одну очередь.

*объявление имен очереди, устройства и функции:

Q1 EQU 1

UST1 EQU 1

ЕХР EQU 1

*описание функции ЕХР:

*EXP FUNCTION RN$1, C24

0.0, 0.0 /.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6 /.84,1.83/

.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/

.999,7/.9998,8

*

SIMULATE

* Операторная часть состоит из последовательности блоков модели:

GENERATE 5,3; генерируемые транзакты поступают в модель

* в случайные моменты времени, равновероятно распределенные на интервале 2..8

M1 QUEUE Q1; сбор статистики об ожидании транзактов в очереди Q1

* перед устройством UST1; метка должна занимать первую позицию строки

SEIZE UST1; вход транзакта в устройство UST1, если оно свободно

DEPART Q1; выход транзакта из очереди Q1

ADVANCE 4, FN$ EXP; обслуживание транзакта в устройстве в течение

* некоторого случайного времени 4*FN$EXP, имеющего экспоненциальное

* распределение с интенсивностью (1/4)

RELEASE UST1; выход транзакта из устройства

TRANSFER.4, М1, М2; транзакт с вероятностью 0.4 переходит на М2,

* а с вероятностью 0.6 – на метку М1

М2 TERMINATE 1; транзакт уменьшает число завершений на 1 и при нулевом

START 50; значении числа завершений моделирование заканчивается

END

В этой программе длительность процесса моделирования определяется количеством транзактов, прошедших через блок TERMINATE. Но поскольку времена появления транзактов и обслуживания их в устройстве UST1 являются случайными величинами, то время моделирования также есть величина случайная, что неприемлемо при исследовании моделей.

Рассмотрим варианты задания длительности моделирования применением специально выделенного сегмента. Предполагается, что время моделирования определяется только этим сегментом, поэтому блоки завершения TERMINATE во всех остальных сегментах модели не должны иметь поля A и, следовательно, при прохождении транзактов через эти блоки счетчик завершения не меняется.

Во всех приведенных ниже примерах задаваемое время моделирования одно и то же и равно 1000 условных единиц времени.

Пример 1.

REALL XAC, 150, FAC,1, QUE,1

Q1 EQU 1

UST1 EQU 1

ЕХР EQU 1

*EXP FUNCTION RN$1, C24

0.0, 0.0 /.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6 /.84,1.83/

.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/

.999,7/.9998,8

*

SIMULATE

*Сегмент 1: имитация процесса обслуживания заявок (повторение предыдущего *примера)

GENERATE 5,3;

M1 QUEUE Q1

SEIZE UST1;

DEPART Q1;

ADVANCE 4, FN$ EXP;

RELEASE UST1;

TRANSFER.4, М1, М2;

М2 TERMINATE

* Сегмент 2: задание времени моделирования

GENERATE 1000

TERMINATE 1

START 1

END

Примечание. В последующих трех примерах текст первого сегмента опущен, так как полностью совпадает с примером 1.

Пример 2.

* Сегмент 2: задание времени моделирования

GENERATE 200

TERMINATE 1

START 5

END

Пример 3.

* Сегмент 2: задание времени моделирования

GENERATE 100

TERMINATE 2

START 20

END

Пример 4.

* Сегмент 2: задание времени моделирования

GENERATE 10.

TERMINATE 1

START 100

END

Итак, время моделирования, задаваемое в примерах 1 – 4, одно и то же, равное 1000 условных единиц времени Однако длительность работы моделирующего алгоритма (процессорного времени компьютера) будет для этих вариантов различной: время работы ПЭВМ в последнем случае будет наибольшим, так как через каждые 10 единиц модельного времени возникает новый транзакт (выполняется подпрограмма блока GENERATE). Дапее выполняетсяподпрограмма блока TERMINATE. Эти действия повторяются 100 раз, в то время как в примере 1 сегментом 2 задания времени моделирования создается только один транзакт, поступающий в блок TERMINATE через 1000 единиц модельного времени и останавливает процесс моделирования. Следовательно быстродействие модели в примере 1 будет наивысшим.

4.4. МОДЕЛИРОВАНИЕ ПРОЦЕССОВ, СВЯЗАННЫХ ПО УСТРОЙСТВУ ОБСЛУЖИВАНИЯ

Для имитации обслуживания нескольких потоков заявок в одном устройстве в GPSS-программе следует предусмотреть генерацию этих потоков, имеющих в общем случае различные интенсивности и законы появления заявок и поэтому реализуемых различными блоками GENERATE. Дисциплины обслуживания, интенсивности и законы обслуживания в устройстве также могут быть различными. При этом под дисциплиной обслуживания понимается способ назначения транзакта для обслуживания в устройстве. В теории массового обслуживания рассматриваются три типовые дисциплины обслуживания: бесприоритетное обслуживание – в порядке поступления в очередь (FIFO), обслуживание с относительным приоритетом, то есть в соответствии с уровнем приоритета, но без прерывания, обслуживание с абсолютным приоритетом – дисциплина LIFO, то есть с прерыванием обслуживания заявки, не имеющей абсолютного приоритета. Ниже приводятся примеры построения программ моделирования работы устройства, обслуживающего два потока транзактов, с вариацией дисциплин обслуживания.

Пример1.

Программа формирования двух потоков транзактов, образующих очереди Q1, Q2 и имеющих одинаковые приоритеты, с выборкой транзактов из очередей по правилу FIFO для обслуживания одним и тем же устройством U1.В модели принято, что длительность обслуживания транзактов второго потока в среднем в два раза больше длительности обслуживания транзактов первого потока.

*


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: