Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритмы и программные средства имитационного моделирования систем. Учебное пособие
.pdf
91
где A – количество транзактов-потомков, которые передаются оператору, заданному операндом B.
Если операнд C не указан, то потомки представляют собой абсолютные копии предка (за исключением номера транзакта, к которому
можно обратить явно, используя СЧА XN1). Операнд C позволяет пе-
ренумеровывать получаемые копии и определяет параметр, в котором
размещается номер копии. Если значение параметра, задаваемого операндом C, для входящего транзакта равно некоторой величине i, то
копии получат номера i+1, i+2, … . Это позволяет различать копии
транзактов как внутри одного ансамбля, так и для различных ансамблей (задавая разные исходные значения i). Пример:
SPLIT 4,MET1,2.
Этот оператор создает четыре копии входящего транзакта и пересыла-
ет их на метку MET1. Каждая копия во втором параметре будет хра-
нить номер копии. Исходный транзакт после этого передает следую-
щему за SPLIT оператору.
Оператор ASSEMBLE (объединить) позволяет объединить заданное число транзактов одного ансамбля в один транзакт. Формат оператора:
[метка] ASSEMBLE A,
где A – число объединяемых транзактов. Первый транзакт ансамбля
после входа в этот блок задерживается в нѐм до тех пор, пока туда не
поступит данное число транзактов это же ансамбля. После этого тран-
закт, первым поступивший в блок, продолжит движение по модели, а
остальные накопленные транзакты будут удалены из неѐ. Заметим, что
в одном блоке ASSEMBLE параллельно может выполняться объедине-
ние транзактов для двух и более различных ансамблей.
Оператор GATHER (собрать) выполняет функции, аналогичные
оператору ASSEMBLE, но не производит удаление накопленных тран-
зактов из модели. После того как в оператор поступит заданное число
транзактов одного ансамбля, все они передаются следующему оператору. Формат данного блока имеет вид:
[метка] GATHER A,
где A – число собираемых транзактов одного ансамбля.
Оператор MATCH обеспечивает синхронизацию движения по блокам модели двух транзактов, принадлежащих одному ансамблю.
Данный оператор используется только парами, т.е. в программе
указываются два взаимосвязанных оператора MATCH, определяющих

92
две точки модели, в которых необходимо установить синхронность
событий. Оператор имеет следующий формат:
MET1 MATCH MET2,
где MET1 – метка первой точки синхронизации,
MET2 – метка второй точки синхронизации, которая определяет
парный оператор вида:
MET2 MATCH MET1.
Первый транзакт, который достигает одного из этих операторов, задерживается в нѐм до тех пор, пока другой транзакт этого же ансамбля
не поступит в парный оператор MATCH, указанный в поле A. После
этого оба транзакта одновременно покидают взаимосвязанные операторы MATCH.
В данной версии языка имеется СЧА A1, определяющий номер
ансамбля, в который входит транзакт. Кроме того, допускается возможность изменить ансамблевую принадлежность транзакта в процессе моделирования. Для этого предназначен блок
[метка] ADOPT A,
где A – номер нового ансамбля, в который включается транзакт, прошедший через данный блок.
5.11. Цепи пользователя
Относятся к группирующим объектам GPSS и предназначены для
реализации сложных дисциплин обслуживания, управляемых значениями параметров.
Для работы с цепями пользователя (ЦП) используются блоки
LINK и UNLINK. Цепь пользователя – это список транзактов, которые
удалены из цепи текущих событий (ЦТС) блоками LINK. Транзакты
входят в ЦП через блок LINK и остаются там неактивными, пока не
будут выведены из ЦП другим транзактом, входящим в блок UNLINK.
При этом транзакт можно вернуть в ЦТС по правилу, записанному
программистом. В частности: можно реализовать дисциплину обслуживания LIFO; можно обеспечить выбор с учетом упорядочения по
значению некоторого параметра и др.
Оператор (блок) LINK (ввести в цепь) имеет следующий формат:
[метка] LINK A,B,C,
где A – номер цепи пользователя;

93
B – дисциплина, согласно которой транзакты помещаются в цепь
пользователя;
C – необязательная ссылка на метку альтернативного перехода
транзакта.
В поле операнда B могут быть заданы:
1) обозначение FIFO, определяющее включение транзакта в ко-
нец ЦП;
2) обозначение LIFO, определяющее включение транзакта в на-
чало ЦП;
3) номер параметра транзакта, который указывает на необ-
ходимость расположения транзактов в ЦП в порядке возрастания значений указанного параметра. Чем меньше значение, тем ближе к началу ЦП.
Операнд C задает режим работы блока LINK. Если C не задан, то
блок работает в безусловном режиме и все транзакты, проходящие
через этот блок, поступают в ЦП. Если операнд C задан, то блок LINK
работает в условном режиме и транзакт, входящий в этот блок, далее
может быть направлен либо в ЦП, либо на указанную в поле C ссылку
на другой блок (метку). Этим выбором управляет индикатор связи ЦП.
Каждая ЦП имеет свой индикатор связи, который в начале моделирования автоматически устанавливается в состояние «Выключено».
Когда транзакт входит в блок LINK, работающий в условном режиме, проверяется состояние индикатора связи. Если он включен, то
транзакт продвигается дальше по модели (на метку из поля C), минуя
цепь пользователя, но инвертирует индикатор связи. Следующий
транзакт, входящий в блок LINK, обнаруживает включенный индикатор связи и выводится в ЦП без изменения состояния индикатора связи. Заметим, что выключение индикатора связи производится блоком
UNLINK в том случае, когда ЦП становится пустой.
Примеры записи оператора LINK:
1) LINK 2,1 – безусловная передача транзактов во вторую ЦП
и размещение их в порядке возрастания значений первого параметра;
2) LINK 1,LIFO,MET1 – передача транзакта на метку MET1
при выключенном индикаторе связи и занесение их в начало первой
ЦП при включенном параметре связи.
Оператор UNLINK (удалить из цепи) является парным для оператора LINK и обеспечивает вывод транзактов из ЦП. Формат этого
оператора:
[метка] UNLINK A,B,C,D,E,F,
где A – номер цепи пользователя;

94
B – метка (номер) блока, на который поступают транзакты, выводимые из ЦП;
C – количество выводимых из ЦП транзактов (по умолчанию все);
D, E – определяют режим вывода транзактов из ЦП;
F – необязательная метка, на которую пересылается транзакт, по-
ступивший в блок UNLINK (транзакт – инициатор вывода из ЦП), если
из ЦП не выводится ни один транзакт. По умолчанию транзактинициатор переходит к следующему блоку.
. Использование F позволяет выделить случай, когда из
ЦП не может быть выведен ни один транзакт.
Возможны 4 режима вывода транзактов из ЦП, которые задаются
операндами D и Е:
1) D и E не заданы - транзакты безусловно выводятся из начала
ЦП;
2) в поле D указано обозначение BACK, а поле E не определено -
транзакты выводятся из конца ЦП;
3) в поле D задан номер параметра транзакта, поле E не опреде-
лено - параметр транзакта-инициатора сравнивается со значениями
этого же параметра транзактов в ЦП. При равенстве выполняется вывод;
4) в поле D указан номер параметра транзакта, в поле E задан
СЧА - значение заданного параметра транзактов из ЦП сравнивается
со значением СЧА в поле E. При равенстве выполняется вывод из ЦП.
Примеры записи блока UNLINK:
1) UNLINK 2,MET1,1,BACK – один транзакт из конца ЦП с
номером 2 пересылается на MET1;
2) UNLINK 1,MET2,3,2,V$1,MET3 – вывод трех транзактов
из ЦП номер 1, для которых значение второго параметра транзакта
равно первой переменной (СЧА V$1), и направление их на MET2. Если
транзакты не могут быть выведены, то транзакт-инициатор из блока
UNLINK направляется в блок с меткой MET3.
Для ЦП определены следующие СЧА:
CH$i – текущее число элементов цепи;
CA$i – среднее число элементов цепи;
CC$i – общее число транзактов, поступивших в ЦП.
Пример 5.12. На вход СМО с одним каналом обслуживания по-
ступает поток новых заявок с интервалом времени T = 40±10 c. Порядок выбора заявок из очереди – LIFO. Если в момент прихода заявки в
очереди уже есть 4 заявки, то заявка покидает систему без обслужива-

95
Низко-
скоростные
каналы
Высоко-
скоростной
канал
связи
Мульти-
плексор
ния. Время обслуживания одной заявки τ = 50±20 с. Промоделировать
обслуживание 100 первых заявок.
группировки параметров, независимо от стандартных списков GPSS;
хронизировать движение разных транзактов в модели, например задерживать в списке (ЦП) до тех пор, пока какой-либо другой транзакт
не выведет их из ЦП с помощью блока UNLINK.
сокоскоростному каналу связи и работает в режиме разделения времени с четырьмя низкоскоростными каналами, опрашивая их циклически
(рис. 5.13).
GENERATE 40,10
TEST_L CH$1,4,TER1
QUEUE 1
LINK 1,LIFO,MUS1
MUS1 SEIZE 1
DEPART 1
ADVANCE 50,20
RELEASE 1
UNLINK 1,MUS1,1
TER1 TERMINATE 1
START 100
Применение цепей пользователя позволяет:
1) динамически формировать свои списки для задержки или
2) использование блоков LINK-UNLINK дает возможность син-
Пример 5.13. Имеется мультиплексор, который подключен к вы-
Рис. 5.13
Опрос каждого из четырех низкоскоростных каналов мультип-
лексором длится 50 мс, время переключения между каналами – 10 мс.
Если в каком-либо канале есть сообщение, то оно передается по высокоскоростному каналу за 500±60 мс. За один цикл опроса возможна
передача одного сообщения.
Сообщения появляются в четырех каналах связи с равной вероят-
ностью, общая нагрузка задается интервалом появления сообщений,

96
равным 800±300 мс. Определить загрузку высокоскоростного канала
при передачи по нему 1000 сообщений.
Здесь будем использовать ЦП для организации отдельных пото-
ков для каждого низкоскоростного канала. Если при опросе соответствующая ЦП содержит хотя бы один транзакт, то с помощью блока
UNLINK разрешается его передача по высокоскоростному каналу связи. Появление сообщений в каждом из четырех каналов связи имитируется их занесением в свою ЦП. Для этого используется первый параметр, в котором хранится номер канала.
Текст программы имеет следующий вид:
1 FUNCTION RN$1,D4; функция определения номера
.25,1/.5,2/.75,3/1,4; низкоскоростного канала
2 FUNCTION P$1,D4; функция циклического опроса
1,2//2,3/3,4/4,1; каналов
* опрос каналов мультиплексором (устройство 1)
GENERATE 10,,,1
ASSIGN 1,4; начало опроса с первого канала
NEXT ASSIGN 1,FN$1; номер опрашиваемого канала
SIEZE 1; использовать мультиплексор
ADVANCE 50; время опроса
TEST NE CH*P$1,0,MET1; есть ли сообщение в канале?
UNLINK P$1,MESS,1; разрешить передачу сообщения
MET1 RELEASE 1; освободить мультиплексор
ADVANCE 10; время переключения на другой канал
TRANSFER ,NEXT
* передача сообщений по высокоскоростному каналу (устройство 2)
GENERATE 800, 300
ASSIGN 1,FN$1; номер канала, в котором есть сообщение
LINK P$1,FIFO; ожидать опроса канала в ЦП
MESS SEIZE 2; занять высокоскоростной канал для передачи
ADVANCE 500,60; время передачи сообщения
RELEASE 2; освобождение высокоскоростного канала
TERMINATE 1
START 1000
5.12. Сбор статистических данных в системе GPSS
В процессе моделирование в GPSS производится сбор статистиче-
ских данных обо всех объектах модели: приборах; накопителях; очередях и др.
Стандартный отчет о работе моделируемой системы содержит:

97
1) показания модельного времени на моменты начала и заверше-
ния процесса моделирования;
2) таблицу соответствия символических имен объектов их число-
вым значениям, определяемым автоматически системой GPSS World;
3) статистику по использованию блоков модели;
4) статистику по всем видам объектов модели.
Стандартный набор информации об использовании блоков модели состоит из шести колонок: метка блока, его номер, тип блока, общее число входов транзактов, текущее содержимое и число транзактов, ожидающих входа в этот блок при наступлении определенных
условий.
Пример стандартного отчета с такой статистикой приведен на
рис. 5.14.
Рис. 5.14

98
Стандартный набор статистической информации о приборах
включает следующие данные (по колонкам):
FACILITY – номер или имя прибора;
ENTRIES – количество входов транзактов;
UTIL – коэффициент использования (загрузки);
AVE.TIME – среднее время нахождения транзакта в приборе;
AVAIL. – состояние готовности прибора на момент окончания
моделирования (1 – доступен, 0 – не доступен);
OWNER – номер последнего транзакта, занявшего прибор;
PEND – количество транзактов в очереди на прерывание;
INTER – количество прерванных в приборе транзактов;
RETRY – количество транзактов, заблокированных на входе в
прибор и ожидающих изменения условий блокировки для повторных
попыток входа;
DELAY – количество транзактов, ожидающих возможности занятия прибора.
Стандартный набор статистической информации об очередях
включает следующие данные (по колонкам):
QUEUE – номер или имя очереди;
MAX. – максимальная длина очереди;
CONT. – текущая длина очереди;
ENTRY – общее число входов транзактов;
ENTRY(0) – число нулевых входов (с нулевым ожиданием);
AVE.CONT. – средняя длина очереди;
AVE.TIME – среднее время ожидания в очереди;
AVE(-0) – среднее время ожидания без учета нулевых входов;
RETRY – количество транзактов, заблокированных на данный мо-
мент и ожидающих очередной попытки входа в очередь.
Стандартный набор статистической информации о многоканальных устройствах (накопителях) включает следующие данные (по колонкам):
STORAGE - номер или имя накопителя;
CAP. – емкость накопителя, заданная оператором STORAGE;
REMAIN – количество единиц свободной емкости;
MIN – минимальное количество единиц используемой емкости за
время моделирования;
MAX – максимальное количество единиц используемой емкости за
время моделирования;
ENTRIES – число входов транзактов;
AVL. – состояние готовности (1 – доступен, 0 – нет);

99
AVE.C – среднее значение занятой емкости за время моделирования;
UTIL. – средний коэффициент использования всех каналов многоканального устройства;
RETRY – число транзактов, ожидающих специальных условий,
зависящих от состояния многоканального устройства;
DELAY – число транзактов, ожидающих возможности входа в
блок ENTER.
Пример статистики по указанным объектам, представленной в от-
чете о моделировании, приведен на рис. 5.15.
Рис. 5.15
5.12.1. Сбор табличной информации в системе GPSS
Все результаты моделирования, входящие в стандартный отчет
GPSS, представляются скалярными величинами. Однако часто возни-
кает необходимость получения более сложной информации, например
данных о законах распределения случайных величин. Для сбора подобной информации GPSS имеет специальные объекты, называемые
таблицами. Таблицы, как и очереди, относятся к группе статистических объектов. С помощью таблицы выполняется табулирование некоторой случайной величины. Для работы с таблицами применяют два
оператора – оператор описания TABLE (таблица) и блок TABULATE
(табулировать).
Оператор TABLE определяет аргумент таблицы (табулируемый
СЧА) и структуру таблицы, т.е. диапазон возможных значений аргумента, величину и количество интервалов, на которые разбивается
весь диапазон.
Этот оператор имеет следующий формат:
<имя> TABLE A,B,C,D,
где <имя> - имя таблицы; A - аргумент таблицы; B - верхняя граница
левого интервала возможных значений; C - ширина интервала; D - об-

100
щее число интервалов. Этот оператор должен размещаться до первого
блока GENERATE.
Блок TABULATE осуществляет заполнение таблицы данными. Он
имеет следующий формат:
[<метка>] TABULATE A,
где A - имя таблицы, в которую заносятся данные. Информация добавляется в таблицу при каждом входе транзакта в этот блок. Заметим,
что для одной и той же таблицы можно использовать произвольное
число таких блоков.
Существует еще один специализированный оператор QTABLE для
сбора табличной информации. Он предназначен для табулирования
времени ожидания транзакта в очереди.
Его формат
<имя> QTABLE A,B,C,D,
где A - имя очереди, для которой осуществляется сбор информации;
B, C, D – такие же операнды, как и в блоке TABLE.
Для этого оператора не требуется использование блоков
TABULATE, так как он фиксирует информацию о конкретной очереди
в модели.
Для таблиц могут использоваться следующие СЧА:
TB<имя> - среднее значение аргумента таблицы;
ТС<имя> - количество входов в таблицу;
TD<имя> - стандартное отклонение (СКО) аргумента таблицы.
Стандартный набор статистической информации о таблицах,
включаемый в стандартный отчет GPSS, содержит следующие данные
(по колонкам):
TABLE – имя таблицы;
MEAN – среднее значение табулируемой величины;
STD.DEV. – среднеквадратическое отклонение;
RANGE – границы интервалов таблицы;
RETRY – число транзактов, ожидающих входа в таблицу после
блокировки;
FREQUENCY – количество попаданий в интервал (частота);
CUM,% - накопленная частота.
Пример статистики по сбору данных о времени обработки запро-
са, которая формируется оператором
TIME TABLE M1,0,20,35,
представлен на рис. 5.16.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
