Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмы и программные средства имитационного моделирования систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
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.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]