- •Министерство образования и науки российской федерации
- •Имитационное моделирование
- •080500 «Бизнес-информатика»
- •Часть 2
- •1. Введение
- •Лабораторная работа №5 переход транзактов в блок, отличный от последующего. Блоки transfer, test и gate
- •Краткие теоретические сведения
- •Задание к работе
- •Пример использованияблоков transfer, test и gate
- •1. Одноканальная смо с простейшими потоками Спецификация (м/м/1):(gd//)
- •2. Одноканальная смо с простейшими потокамии ограниченной длиной очереди Спецификация (м/м/1):(gd/n/)
- •3. Одноканальная смо с произвольным потоком обслуживания Спецификация (м/g/1):(gd//)
- •4. Многоканальная смо с простейшими потоками Спецификация (м/м/n):(gd//)
- •5. Многоканальная смо с простейшими потоками и ограниченной длиной очереди
- •2. Многоканальная смо с простейшими потоками
- •Лабораторная работа №8 создание копий транзактов и организация в моделях синхронизации движения транзактов
- •Краткие теоретические сведения
- •Задание к работе
- •Приложение 1 Системные числовые атрибуты
- •Приложение 2 Блоки gpss
- •Приложение 3 Команды gpssworld
- •Список рекомендуемой литературы Основная
- •Дополнительная
Лабораторная работа №8 создание копий транзактов и организация в моделях синхронизации движения транзактов
Цель работы: изучение блоков, обеспечивающих формирование и взаимодействие ансамблей и групп транзактов.
Краткие теоретические сведения
Кроме блока GENERATEдля создания транзактов используется блок SPLIT (расщепить). Но, в отличие от GENERATE, блок SPLIT не создает самостоятельных транзактов, а лишь генерирует заданное число копий входящего в него транзакта – порождающего. Блок SPLITимеет следующий формат:
SPLIT А,В,С
Операнд А – число создаваемых копий одного семейства. Он может быть именем, натуральным числом, выражением в скобках, стандартным числовым атрибутом. Все копии формируются в момент входа порождающего транзакта в блок SPLIT.
Операнд В – метка блока, к которому переходят копии порождающего транзакта. После прохождения блока SPLITпорождающий транзакт направляется в следующий блок, а все копии направляются по адресу, указанному операндом В (в том числе и к следующему блоку, если операнд В не указан).
Операндом С может быть задан номер параметра, используемого для присвоения копиям последовательных номеров. Если операнд С не используется, по умолчанию номеров выходящих из блока SPLITтранзактов в их параметрах нет.
Операнды В и С могут быть такими же, как и операнд А.
Приведем пример:
SPLIT 7,Меt,5
создает при входе порождающего транзакта 7 копий, которые направляются к блоку с меткой Меt. Каждая копия имеет тот же приоритет, время входа в модель и значения параметров, что и порождающий транзакт, за исключением параметра номер 5. В параметр номер 5 каждой очередной копии будет записан порядковый номер. Этот номер зависит от значения параметра 5 порождающего транзакта
Если параметр номер 5 порождающеготранзакта не определен заранее, он будет создан, и ему будет присвоено значение 0.В этом случае после выхода из блока SPLIT в параметр номер 5 порождающего транзакта будет записана 1, а в параметр номер 5 копий 2, 3, …, 8.
Если же параметр номер 5 порождающего транзакта определен заранее и его значение равно k,то в параметре номер 5 порождающего транзакта и его копий после выхода из блока SPLIT будут записаны k+1, k+2, k+3, …, k+8.
Блок ASSEMBLE(объединить) используется для объединения заданного числа транзактов, принадлежащих одному семейству, в один транзакт (т.е. осуществляет сборку заданного числа транзактов). После сборки из блока ASSEMBLE выходит только один транзакт, который входит в следующий по порядку блок. Блок ASSEMBLE имеет следующий формат:
ASSEMBLE А
Операнд А – число транзактов одного семейства, участвующих в сборке. Может быть натуральным числом, выражением в скобках, стандартным числовым атрибутом.
В одном и том же ASSEMBLE возможна одновременная сборка транзактов нескольких семейств. Так как сборка длится в течение какого-то промежутка модельного времени, блок ASSEMBLE имеет список синхронизации. В список синхронизации помещаются первые вошедшие в блок ASSEMBLEтранзакты каждого собираемого семейства. Они ожидают прихода транзактов своих семейств.
Например:
ASSEMBLE9
собирает 9транзактов одного семейства, 8 уничтожаются, один переходит в следующий блок.
Блок GATHER (собирать) предназначен для сроба заданного количества транзактов одного семейства, движущихся по одному и тому же пути. Отличие блока GATHER от блока ASSEMBLE состоит в том, что в нем транзакты не уничтожаются, а после сбора все направляются к следующему блоку.
Формат блока:
GATHER А
Операнд А задает число транзактов, принадлежащих одному семейству, которые нужно собрать при их движении по одному пути. Операнд может быть именем, натуральным числом, выражением в скобках, стандартным числовым атрибутом.
Блок GATHER также может одновременно производить сбор транзактов нескольких семейств и также имеет список синхронизации.
Блок MATCH(синхронизировать) предназначен для синхронизации движения транзактов одного семейства, продвигающихся по разным путям. Для синхронизации необходимы два блока MATCH, находящихся в соответствующих местах модели и называемых сопряженными.
Форматблока:
Name MATCH A
ОперандомА каждого блока MATCH указывается метка сопряженного ему блока. Первый транзакт, достигнув блока MATCH, задерживается в нем до тех пор, пока другой транзактсемейства достигнет сопряженного блока MATCH, указанного в поле А. Во время задержки поступивший транзакт помещается в список синхронизации. При поступлении другого транзакта в сопряженный блок MATCH оба транзакта будут исключены из списка синхронизации и одновременно будут пропущены в следующие за блоками MATCH блоки.
Приведем пример:
…
Wait1 MATCHWait2
…
…
…
Wait2 MATCHWait1
…
При входе транзактав блок MATCHc именем Wait1 он будет ожидать момента, когда другой транзакт того же семейства войдет в блок MATCH с именем Wait2. Только после этого оба транзакта выйдут одновременно из блоков MATCH.