Особенности построения моделей дискретных процессов на языке GPSS

Общая схема программы на языке GPSS состоит из раздела объявлений, раздела операторов (блоков модели) и ряда управляющих операторов (обязательными из которых являются SIMULATE, START, END), располагающихся в следующем порядке:

[REALLOCATE]
Объявление имен
Объявление функций
Объявление переменных
Инициализация ячеек
Задание емкости памяти
SIMULATE
Последовательность блоков модели.
START
END

Далее рассматриваются особенности построения программ с учетом специфики языка GPSS и принципов моделирования дискретных систем во времени.

ИМЕНА В GPSS-ПРОГРАММЕ

Имена в GPSS-программе могут задаваться как символами (идентификаторами), так и числовыми кодами – номерами. Для установления однозначного соответствия имен и номеров объектов в разделе «объявление имен» каждому имени присваивается номер по форме:

имя EQU номер

где имя содержит не более 6 символов и располагается с первой позиции. Объектам каждого типа принято назначать номера, начиная с первого.

Примеры

СР1 EQU 1
UST EQU 2
OZU EQU 1
Q1 EQU 1
Q2 EQU 2
Exp1 EQU 1

СЛУЧАЙНЫЕ ВЕЛИЧИНЫ В GPSS

Случайные величины в GPSS используются для задания времени появления транзакта в модели, т.е. для формирования потока заявок, поступающих в модель (блок GENERATE) и для задания времени задержки транзактов в модели (блок ADVANCE).

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

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

Значения случайной непрерывной величины, распределенной по экспоненциальному закону с интенсивностью 1, в GPSS определяются с помощью функции, задаваемой точками, которые были рассчитаны по формуле y = 1- e x :
Exp1 FUNCTION RN$1,C14; Ехр1 – имя, С14-непрерывная, задаваемая 14 точками
0.,0./.1,.104/.3,.555/.5,.69/.6,.915/.7,1.2/.8,1.6/.85,1.95/.9,2.3/
.950,3./.98,3.9/.99,4.6/.995,5.3/.999,7.

При этом в качестве базового используется равновероятное распределение на интервале (0,1), задаваемое одной из восьми встроенных функций RN$i, i=1,2,…,8.

Для вычисления значения случайной непрерывной величины, распределенной по экспоненциальному закону с интенсивностью lambda, необходимо умножить lambda на Exp1. Умножение на константу lambda происходит непосредственно при выполнении программы в момент поступления транзакта в соответствующий блок.

Пример

GENER 25, FN$Exp1; генерируется поток заявок, имеющий пуассоновское распределение с интенсивностью lambda=1/25 или время появления транзакта равно 25*Exp1
ADVANCE 15,FN$Exp1; задается задержка транзакта 15*Exp1

Примечание
Однако если в поле В этих блоков задается не функция, а константа, то время задержки определяется как случайная величина, равномерно распределенная на интервале (А-В, А+В).

Пример

GENER 25, 15; генерируется поток заявок, появляющихся через интервалы
време ни, имеющие равномерное распределение на интервале (10; 40)
ADVANCE 15,FN$Exp1; задается задержка транзакта, значение которой выбирается из условий равновероятного распределения на интервале (8; 22).

ИМИТАЦИЯ ДИСКРЕТНОГО ПРОЦЕССА В GPSS

GPSS-модель представляет собой функционально законченную программу описания некоторого процесса обслуживания потока заявок, начиная от появления заявки в системе, что в модели соответствует генерации транзакта, до ее удаления из системы, что в модели соответствует удалению транзакта. Таким образом, операторная часть модели, называемая сегментом, начинается блоком GENERATE и заканчивается блоком TERMINATE.

Примечание
Структура строки GPSS-программы аналогична структуре строки программы на ассемблере:
[метка] имя_блока список_полей [; комментарий после символа “точка с запятой”]
* Строка-комментарий начинается с первой позиции символом “звездочка”’ *

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

*
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

* Сегмент 1: имитация процесса обслуживания заявок (повторение примера 3.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
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 опущен, так как полностью совпадает с примером 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 будет наивысшим.


Комментарии запрещены.





Статистика

Рейтинг@Mail.ru