Файл: Методические указания к выполнению лабораторной работы 1по курсу Моделирование систем Екатеринбург содержание содержание 2.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 412

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Если необходимо управлять продолжительностью прогона по модельному времени, то в модели используется специальный сегмент, называемый сегментом таймера.
GENERATE 100,40

…..

TERMINATE
GENERATE 100000

TERMINATE 1

START 1
Например, в модели из двух сегментов, первый (основной) сегмент выполняет те же функции, что и в предыдущем примере. Заметим, однако, что поле A блока TERMINATE в первом сегменте пусто, т.е. уничтожаемые транзакты не уменьшают содержимого счетчика завершений. Во втором сегменте блок GENERATE создаст первый транзакт в момент модельного времени, равный 100000. Но этот транзакт окажется и последним в данном сегменте, так как, войдя в блок TERMINATE, он обратит в 0 содержимое счетчика завершений, установленное оператором START равным 1. Таким образом, в этой модели гарантируется завершение прогона в определенный момент модельного времени, а точное количество транзактов, прошедших через модель, непредсказуемо.

Замечание! Не путайте ограничитель транзактов в блоке GENERATE и счетчик завершения. Ограничитель задает число транзактов, которые войдут в модель, а счетчик – число транзактов, которые выйдут из модели. По окончании моделирования транзакты могут оставаться в модели.
Задания для самостоятельной работы:

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

  1. К компьютеру на обработку поступают 14 заданий (транзактов), интервал поступления заданий распределен по равномерному закону в диапазоне 3-11 мин. Задайте единицу модельного времени – 1 мин.

  2. К компьютеру на обработку в нулевой момент времени поступают 5 заданий с уровнем приоритета равным 25. Подумайте, как проверить?

  3. Задания поступают на обработку к компьютеру каждые 4-14 мин. Первое задание поступает на 20 минуте. Задайте единицу модельного времени – 1 сек.

  4. Моделирование заканчивается после того, как компьютер обработает 300 заданий, задания должны поступать в модель каждые 1-11 минут. Единицы модельного времени – минуты.

  5. Задайте время моделирования работы системы 8 часов, единица модельного времени – 1 секунда.

Как изменились характеристики работы моделируемой системы в результате внесенных изменений? Сравните результаты моделирования с исходными значениями примера.

2. Моделирование одноканальных устройств. Блоки SEIZE, RELEASE и ADVANCE



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

  • либо подождать своей очереди;

  • либо направиться в другое место;

  • либо прервать обслуживание текущего транзакта.

Для использования одноканального устройства транзакту необходимо выполнить следующие шаги:

  1. ждать очереди, если необходимо;

  2. когда подходит очередь занять устройство;

  3. устройство находится в состоянии занятости, пока не закончится обслуживание, для обслуживания необходим некоторый интервал времени;

  4. когда обслуживание закончится, освободить устройство.

Второй и четвертый шаги реализуются блоками SEIZE и RELEASE.
Блок SEIZE имеет следующий формат:

SEIZE A

Свободный блок SEIZE позволяет вошедшему в него сообщению занять указанное устройство. Блок SEIZE задерживает сообщение, если устройство занято или находится в состоянии недоступности.

В поле А задается номер (имя) занимаемого устройства.

Сообщение, занявшее устройство, затем пытается перейти к следующему по номеру блоку. Устройство остается занятым до тех пор, пока занимающее его сообщение не войдет в соответствующий блок RELEASE. Прежде чем освободить устройство, сообщение может пройти через неограниченное число блоков.
Блок RELEASE имеет следующий формат:

RELEASE A

Блок RELEASE предназначен для освобождения устройства, в поле А задается номер (имя) освобождаемого уст­ройства.

Транзакты обслуживаются устройствами в течение некоторого промежутка времени. Для моделирования такого обслуживания, т.е. для задержки транзактов на определенный отрезок модельного времени (реализация шага 3), служит блок ADVANCE (задержать), имеющий следующий формат:

ADVANCE A,B

Операнды в полях A и B имеют тот же смысл, что и в соответствующих полях блока GENERATE. Следует отметить, что транзакты, входящие в блок ADVANCE, переводятся из списка текущих событий в список будущих событий, а по истечении вычисленного времени задержки возвращаются назад

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

Например:

GENERATE 100,40

SEIZE 1

ADVANCE 80,50

RELEASE 1

…..

Здесь транзакты, поступающие в модель из блока GENERATE через случайные интервалы времени, имеющие равномерное распределение на отрезке [60;140], попадают в блок SEIZE и занимают устройство с номером 1. Далее в блоке ADVANCE определяется случайное время задержки транзакта, имеющее равномерное распределение на отрезке [30;130], и транзакт переводится в список будущих событий. По истечении времени задержки транзакт возвращается в список текущих событий и входит в блок RELEASE и освобождает устройство 1. Заметим, что в списке будущих событий, а значит и в блоке ADVANCE может одновременно находиться произвольное количество транзактов.

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

  1. Приведите фрагмент программы, который моделирует обработку детали на станке. Название устройства – MACHINE, время обработки – 10 ед. модельного времени.

  2. Напишите сегмент программы, который описывает процесс шлифования изделия. Шлифование занимает 3-5 минут, в каждый момент времени может обрабатываться только одно изделие. Единица модельного времени – 1 мин.



3. Моделирование многоканальных устройств. Блоки STORAGE, ENTER и LEAVE


Задача. Изменим условие задачи о работе вычислительного центра. Пусть в вычислительной системе работают два компьютера (интенсивность обработки заданий одинаковая). Таким образом, поступающие задания будут обрабатываться параллельно двумя компьютерами. Все остальные условия остаются без изменений.

В среде GPSS программа, моделирующая работу вычислительной системы, будет выглядеть следующим образом:
NAK STORAGE 2

GENERATE 360,300

QUEUE OCH

ENTER NAK

DEPART OCH

ADVANCE 600,540

LEAVE NAK

TERMINATE 1

START 100
Обратите внимание, в программе появилась дополнительная строка

nak STORAGE 2

И блоки SEIZERELEASE заменены соответственно на блоки ENTERLEAVE, моделирующие работу с многоканальным устройством (МКУ).

В результате выполнения программы моделирования работы вычислительной системы с двумя компьютерами GPSS выдаст отчет с информацией об использовании МКУ:


STORAGE – имя МКУ

CAP. – емкость МКУ, заданную оператором STORAGE

REM. – количество единиц свободной емкости в конце периода моделирования

MIN. – минимальное количество емкости за используемый период

MAX. - максимальное количество емкости за используемый период

ENTRIES – количество входов в МКУ за период моделирования

AVL. – состояние готовности МКУ в конце периода моделирования (1 – МКУ готов, 0 – нет)

AVE.C. – среднее значение занятой емкости за период моделирования

UTIL. – средний коэффициент использования всех устройств МКУ

RETRY – количество транзактов, ожидающих специальных условий, зависящих от состояния МКУ

DELAY – определяет количество транзактов, ожидающих занятия или освобождения устройства МКУ
Рассмотрим подробнее работу блоков, используемых в программе.

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

Если параллельно работающие устройства являются одинаковыми, то для их моделирования может использоваться объект многоканальное устройство (МКУ).
Оператор STORAGE

С помощью оператора STORAGE пользователь задает количество устройств, которое моделирует МКУ (емкость МКУ).

Формат оператора:

Метка STORAGE А

Метка – имя МКУ

А – емкость МКУ (количество однотипных устройств, входящих в МКУ)
Блок ENTER имеет следующий формат записи:

ENTER A,[B]

Блок ENTER позволяет вошедшему сообщению (транзакту) использовать многоканальное устройство. Сообщение может быть задержано на входе в блок, если многоканальное устройство заполнено или имеющейся емкости недостаточно или устройство в данный момент недоступно.

В поле А указывается номер или имя многоканального устройства, куда входит сообщение.

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

Активное сообщение не может войти в блок ENTER, если запрос на многоканальное устройство не может быть удовлетворен.

Активное сообщение не может войти в блок ENTER, если многоканальное устройство находится в недоступном состоянии.

Когда сообщение входит в блок ENTER, то операнд
А используется для нахождения многоканального устройства с указанным именем. Если такое многоканальное устройство не существует, то возникает ошибка выполнения. В противном случае используется операнд В для оценки емкости многоканального устройства.

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

LEAVE A,[B]

Блок LEAVE освобождает определенное число единиц многоканального устройства. Занятый объем многоканального устройства уменьшается на число освобождаемых единиц. Оставшаяся емкость многоканального устройства увеличивается на ту же величину. Счетчик числа входов не изменяется.

Поле А блока LEAVE определяет номер или имя многокального устройства.

Поле В - число освобождаемых единиц многоканального устройства. Если это поле пусто, предполагается 1. Число освобождаемых единиц не должно превышать текущее содержимое многоканального устройства.
Задания для самостоятельной работы:

  1. Сравните отчеты по результатам моделирования работы вычислительной системы с одним компьютером и с двумя. Какие показатели изменились и как? Какой вариант организации работы вычислительной системы более предпочтителен?

  2. Задача. Морские суда прибывают в порт каждые 15-25 часов. В порту имеется 10 причалов. Каждый корабль по длине занимает 3 причала и находится в порту 7-13 часов. Промоделируйте работу порта на протяжении 500 часов. Напишите сегмент GPSS программы. Оцените эффективность работы порта.


4. Работа с блоками передачи управления. Блоки TRANSFER и TEST



Блок TRANSFER является основным средством, позволяющим направить сообщение (транзакт, задание) к любому блоку модели.

Блок TRANSFER имеет следующий формат:

TRANSFER [],[],[],[]

Поле А задает режим выбора следующего блока, к которому должно перейти сообщение. Существуют следующие режимы работы блока TRANSFER:

- безусловный (пробел);

- статистический (.);

- BOTH;

- ALL;

- PICK;

- функция (FN);

- параметр (Р);

- подпрограмма (SBR);

- SIM.

Кроме того, операнд А может быть дробным числом, именем, положительным целым числом, СЧА или СЧА*<параметр>.

Поля В и С задают возможные значения номеров следующих блоков или их положение. Использование значений описано при рассмотрении определенных режимов выбора. Операнды могут быть именем, положительным целым числом, СЧА или СЧА*<параметр>. Если поле В пусто, ассемблер записывает в нем номер блока, следующего за блоком TRANSFER.
Безусловный режим выбора

Если операнд А пропущен, то блок TRANSFER работает в безусловном режиме. Входящее в блок TRANSFER сообщение переходит к блоку, указанному в поле В. Если сообщение в этот блок войти не может, попытка направить сообщение к какому-либо другому блоку не производится.

Например,

XFER TRANSFER ,NEXT

NEXT SEIZE 1

Сообщения, входящие в блок TRANSFER XFER, переходят к блоку NEXT.

TRANSFER ,V$TER

Сообщения, которые входят в вышеприведенный блок TRANSFER, сразу переходят в блок, номер которого определяется переменной TЕR.

Статистический режим выбора

Когда операнд А не является зарезервированным словом, блок TRANSFER работает в статистическом режиме выбора.

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

Числовое значение может быть задано при помощи любого стандартного числового атрибута. Если вычисленное значение аргумента меньше или равно нулю, будет происходить безусловная передача сообщений к блоку, указанному в поле В. Если же значение аргумента больше или равно 1000, то будет происходить безусловная передача сообщений к блоку, указанному в поле С.

Например,

BCD TRANSFER .709, BLK1, BLK2

Из общего числа сообщений, входящих в блок BCD, в среднем .709 будут пытаться войти в блок BLK2. Остальные .291 будут пытаться войти в блок BLK1.

BCD TRANSFER .P1, BLK3, BLK4

Трехзначное число, записанное в параметре 1 сообщений, входящих в блок BCD, интерпретируется как вероятность (в частях от тысячи) того, что сообщение попытается войти в блок BLK4. В остальных случаях сообщение попытается войти в блок BLK3.

CDE TRANSFER .X1, BLK5, BLK6

Если в момент входа сообщений в блок CDE в ячейке SAVEVALUE 1 записано число 30, то в среднем 3 % от общего числа сообщений будет направлено к блоку BLK6, а остальные 97 % попытаются войти в блок BLK5.

Режим BOTH

Если в поле А стоит зарезервированное слово ВOTH, блок TRANSFER работает в режиме BOTH.

В этом режиме каждое входящее сообщение сначала пытается перейти к блоку, указанному в поле В. Если это сделать не удается, сообщение пытается перейти к блоку, указанному в поле С. Если сообщение не сможет перейти ни к тому, ни к другому блоку, оно остается в блоке TRANSFER и будет повторять в том порядке попытки перехода при каждом просмотре списка текущих событий, до тех пор, пока не сможет выйти из блока TRANSFER. Ниже приведен фрагмент программы, в котором сообщение сначала пытается перейти к блоку TRY1. Если оно не может войти в этот блок, оно пытается войти в блок TRY2. Если сообщение не может войти и в этот блок, оно остается в списке текущих событий и повторяет эти попытки при каждом просмотре списка до тех пор, пока не выйдет из блока TRANSFER.

TRANSFER BOTH, TRY1, TRY2

TRY1 SEIZE 1

TRY2 SEIZE 2

Режим ALL

Если в поле А стоит зарезервированное слово ALL, блок TRANSFER работает в режиме ALL.

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

N + M, N + 2M, N + 3M, ... L,

где N - номер блока, указанного в поле В;

М - значение шага, заданного в поле D;

L - номер блока, указанного в поле С.

Этот номер должен быть больше номера блока, указанного в поле В, на величину, кратную шагу М. Если операнд D не задан, то проверяется каждый блок, номер которого принадлежит этому ряду, включая блок, определенный операндом С. Блоки, номера которых выше номера блока, указанного в поле С, не проверяются. Как только первый блок, способный принять сообщение, будет найден, сообщение входит в этот блок и оттуда продолжает свое дальнейшее движение. Если сообщение не может перейти ни к одному из указанных блоков, оно остается в блоке TRANSFER и повторяет описанную выше процедуру при каждом просмотре списка текущих событий до тех пор, пока не выйдет из блока.

Поскольку обычно в полях В и С записываются символические метки блоков, блоки следует располагать таким образом, чтобы при присвоении номеров разность между номерами блоков, указанных в полях В и С, была кратна шагу, указанному в поле D.

Например,

TRANSFER ALL, 60, 120, 10

В этом примере сообщение будет последовательно пытаться перейти к блокам 60, 70, 80, ... 120.

TRANSFER ALL, NEXT1, NEXT2, 5

Здесь режим ALL допустим только в том случае, если разность между номерами, присвоенными блокам NEXT1 и NEXT2, кратна 5.

TRANSFER ALL, 60, 120, 25

В данном примере режим ALL недопустим, потому что разность между номерами блоков, записанных в полях В и С, не является кратной шагу, указанному в поле D.

Условными являются только режимы BOTH и ALL. Во всех остальных режимах выбор следующего блока производится в момент входа сообщения в блок. В режимах BOTH и АLL выбор следующего блока производится в момент снятия блокирующего условия. Следует отметить, что каждый раз, когда интерпретатор при просмотре списка текущих событий обнаруживает сообщение, задержанное в блоках TRANSFER BOTH или TRANSFER ALL, он пытается продвинуть сообщение, начиная с блока, указанного в поле В. Следовательно, в режиме BOTH в тех случаях, когда возможен переход к обоим блокам (В и С), блок В имеет некоторое преимущество. Аналогично, в режиме ALL в случае, когда возможен переход к нескольким блокам, блоки с меньшими номерами имеют некоторое преимущество перед блоками с большими номерами.
Режим PICK

Если в поле А стоит зарезервированное слово PICK, блок TRANSFER работает в режиме PICK. В этом режиме из последовательности блоков с номерами N, N+1, N+2,...M (N - номер блока, указанного поле В, а М - номер блока, указанного в поле С) случайным образом выбирается один блок, к которому должно быть направлено сообщение.

Все блоки, включая указанные в полях В и С, выбираются с одинаковой вероятностью, равной 1/(М-N)+1. Сообщение пытается перейти только к выбранному для него блоку. Если сообщение не может сразу перейти к следующему блоку, то оно будет ждать в блоке TRANSFER до тех пор, пока не будет снято блокирующее условие. Номер блока в поле С должен быть больше или равен N+1.

Например,

TRANSFER PICK,30,39

Сообщение, вошедшее в блок TRANSFER, пытается войти в один из 10 блоков (30,31,...39) с равной вероятностью: 1/10.
Блок TEST

Помимо блока TRANSFER, потоком сообщений может управлять блок TEST.

Блок TEST имеет следующий формат:

TEST
,,[]

Определяет номер следующего блока для вошедшего в него сообщения в зависимости от того, выполняется требуемое условие или нет. Блок управляет потоком сообщений, проверяя выполнение алгебраических отношений между значениями СЧА, заданных в полях А и В.

Операнды А и В – сравниваемые величины, которые могут быть именем, любым целым числом, СЧА или СЧА*<параметр>.

Во вспомогательном поле операции оператора описания блока TEST - - записывается один из шести условных операторов:

  • 'L' – меньше. Отношение истинное, если значение аргумента поля А меньше значения аргумента поля В;

  • 'LE' – меньше или равно

  • 'E' – равно.

  • 'NE' – не равно.

  • 'G' – больше.

  • 'GE' – больше или равно.

Если отношение СЧА, заданных в полях А и В, истинно, сообщение переходит к следующему блоку. Если отношение ложно, сообщение переходит к блоку, номер которого задан полем С.

C – номер блока для входящего сообщения, если отношение величин, заданных в полях А и В, ложно. Операнд C может быть именем, положительным целым числом, СЧА или СЧА*<параметр>.

Например,
TEST G M1,500,SSS

SEIZE 1



SSS SEIZE 2



Если значение времени пребывания транзакта в модели больше 500, то переходим к следующему по номеру блоку, ложно к метке SSS.
Задания для самостоятельной работы

  1. На станцию технического обслуживания, которая состоит из бокса для ремонта и бокса для техосмотра, каждые 15-35 минут поступают автомобили. Из них 73% требуют ремонта, который продолжается 35-55 минут, а 27% проходят техосмотр (9-25 минут). Промоделируйте 40 часов работы станции технического обслуживания.

  2. Вычислительная система состоит из 3-х компьютеров. С интервалом 3-5 мин в систему поступают задания. Если первый компьютер свободен, то задание поступает на обработку к первому компьютеру (5-7 мин), иначе ко второму (7-11 мин). В случае занятости второго компьютера проверяется, свободен ли третий. Если свободен, то задание обрабатывается с интервалом 8-12 мин. Промоделируйте обработку 100 заданий.

  3. Измените условие предыдущей задачи: обработка заданий может осуществляться тремя компьютерами равновероятно.

  4. Задание с использованием оператора TEST. В программу добавьте условие: если длина очереди OCH больше двух, то заявка выводится из системы без обработки.

GENERATE 360,300

QUEUE OCH

SEIZE COMP

DEPART OCH

ADVANCE 600,540

RELEASE COMP

TERMINATE 1

START 100

Подсказка: длина очереди – см. приложение 2 «Стандартные числовые атрибуты GPSS World».

5. Моделирование систем с использованием блоков SPLIT, ASSEMBLE и MATCH




Задача 1. В СМО поступают заявки по равномерному закону в интервале (3, 7) минут. Для каждой заявки создается одна копия. Заявка и копия проходят параллельную обработку в двух каналах обслуживания с одинаковой интенсивностью обслуживания (4, 8) мин. После обработки заявка и копия собираются в один пакет и выводятся из системы. Смоделировать работу системы по обработке 100 пакетов.

GENERATE 5,2,,100

SPLIT 1,CHH1

SEIZE 1

ADVANCE 6,2

RELEASE 1

TRANSFER ,out3

CHH1 SEIZE 2

ADVANCE 6,2

RELEASE 2

out3 ASSEMBLE 2

TERMINATE 1

START 100
Блок SPLIT создает одну копию транзакта и направляет ее по метке CHH1 на блок SEIZE2. При этом через блок SPLIT проходит транзакт – родитель на следующий по номеру блок. В блоке ASSEMBLE собираются два транзакта, а выходит из него только один. За полный цикл моделирования в блоке ASSEMBLE собираются 200 транзактов, а выходит из него только 100 транзактов. Формально блок ASSEMBLE уничтожает 100 транзактов.

Задача 2. В СМО поступают заявки по равномерному закону в интервале (3, 7) минут. Для каждой заявки создается одна копия. Заявка и копия проходят параллельную обработку в двух каналах обслуживания с одинаковой интенсивностью обслуживания (4, 8) мин. После обработки заявка и копия собираются в один пакет, который обслуживается третьим каналом с интенсивностью (5, 7) минут. Смоделировать работу системы по обработке 100 пакетов.
GENERATE 5,2,,100

SPLIT 1,CHH1

SEIZE 1

ADVANCE 6,2

SSS1 MATCH SSS2

RELEASE 1

TRANSFER ,out3

CHH1 SEIZE 2

ADVANCE 6,2

SSS2 MATCH SSS1

RELEASE 2

out3 ASSEMBLE 2

SEIZE 3

ADVANCE 6,1

RELEASE 3

TERMINATE 1

START 100

Блок SPLIT

Блок SPLIT имеет следующий формат:

SPLIT
,[],[]

Блок SPLIT выполняет функцию копирования входящего в него сообщения, которое называется исходным или порождающим. В поле А задается число создаваемых копий. Операнд А может быть именем, положительным целым, СЧА, СЧА*<параметр>. Если вычисленное значение аргумента поля А равно нулю, то блок SPLIT не выполняет никаких операций. После создания копий сообщение пытается перейти к следующему по номеру блоку. Все копии формируются в момент входа порождающего сообщения в блок SPLIT.

Поле В задает номер следующего блока, к которому переходят копии исходного сообщения, причем значение вычисляется для каждой копии отдельно. Операнд В может быть именем, положительным целым, СЧА, СЧА*<параметр>.

В поле С может быть задан номер параметра, используемого для присвоения копиям последовательных номеров. Операнд С может быть именем, положительным целым, СЧА, СЧА*<параметр>.

Пример:

SPLIT 2,MET,1

Создаются две копии, которые передаются по метке MET. Номер копии записан в параметре P1.
Блок ASSEMBLE

Блок ASSEMBLE имеет следующий формат:

ASSEMBLE


Блок ASSEMBLE объединяет заданное число сообщений, принадлежащих к одному семейству, в одно сообщение (т.е. осуществляет сборку заданного числа сообщений). После сборки из блока ASSEMBLE выходит только одно сообщение, которое переходит в следующий по номеру блок. В одном и том же блоке ASSEMBLE возможна одновременная сборка сообщений нескольких семейств. Когда сообщение входит в блок ASSEMBLE, интерпретатор просматривает семейство, к которому принадлежит это сообщение, и проверяет, есть ли другое сообщение из того же семейства в данном блоке ASSEMBLE. Поле А задает число сообщений, участвующих в сборке. Операнд А может быть именем, положительным целым, СЧА, СЧА*<параметр>.
Блок MATCH

Блок MATCH имеет следующий формат:

MATCH


Блок MATCH используется для синхронизации движения двух сообщений, принадлежащих к одному семейству, без удаления этих сообщений из модели.

Блоки MATCH не объединяют синхронизируемые сообщения. Синхронизация осуществляется путем подбора пар сообщений из одного семейства и задержки этих сообщений до тех пор, пока оба сообщения из одной пары не поступят в заданные точки модели. Сообщения никогда не задерживаются в блоке MATCH. Сообщения, для которых выполнилось условие синхронизации, переходят к следующему по номеру блоку. В одной паре блоков MATCH могут одновременно находиться в состоянии синхронизации пары сообщений из различных семейств. Возможна также одновременная синхронизации пар сообщений из одного семейства в нескольких блоках MATCH.

Поле А задает имя или номер другого блока MATCH, называемого "сопряженным блоком MATCH". Если такого блока нет, происходит останов по ошибке. Операнд А может быть именем, положительным целым, СЧА, СЧА*<параметр>.
Задания для самостоятельной работы:

1. Запустите модели для задачи 1 и 2. Проанализируйте результаты, в чем отличие отчетов проигрывания моделей? Добавьте в модель задачи 1 обработку пакета третьим каналом. Почему результаты проигрывания различаются?

2. Задача. Некоторая фирма производит центробежные насосы, сборка которых осуществляется по заказу покупателей. Заказы поступают в случайные моменты времени равномерно с интервалом 16-22 мин. Когда поступает заказ, делается две его копии. Оригинал заказа используется для получения двигателя со склада и подготовки его для сборки (время выполнения 6-10 мин.). Первый экземпляр копии используется для заказа и адаптации насоса (время 8-12 мин.), а второй экземпляр для начала изготовления плиты основания (время 15 мин.). Когда насос и плита основания готовы, производится пробная подгонка (время 4-6 мин.). Далее все три компонента собираются вместе (5-7 мин.). Промоделировать сборку 100 центробежных насосов. Единица модельного времени 1 секунда.

Изобразите схему процесса сборки насосов! Оцените время сборки 100 насосов.

6. Моделирование систем с использованием блоков PREEMPT, RETURN




Задача. На обработку по равномерному закону поступают два потока деталей: 1-ый поток со временем 7-11 мин., 2-ой поток – 23-27 минут. Причем второй поток прерывает изготовление деталей 1-го потока. Время обработки деталей первого потока 4-10 минут, второго потока – 14-16 минут. Смоделировать процесс обработки 100 деталей.

GENERATE 9,2

SEIZE FACIL1

ADVANCE 7,3

RELEASE FACIL1

TERMINATE 1

GENERATE 25,2

PREEMPT FACIL1

ADVANCE 15,1

RETURN FACIL1

TERMINATE 1

START 100
Блок PREEMPT

Блок PREEMPT имеет следующий формат:

PREEMPT
,[],[],[],[]

Блок PREEMPT позволяет сообщению, в зависимости от условий, заданных в операндах блока, занять устройство. Блок PREEMPT может задержать сообщение на входе.

Поле А определяет номер или имя устройства, на котором генерируется прерывание. Операнд может быть именем, положительным целым, СЧА или СЧА*<параметр>.

Поле В задает приоритетный режим (PR) или режим прерывания, если операнд опущен.

Поле С задает номер или имя блока, куда должно попытаться войти прерванное сообщение в этот же момент условного времени.

Прерванное сообщение теряет управление устройством, но претендует на право его использования, если только не задан аргумент поля Е.

Поле D задает номер параметра, связанного с прерванным сообщением.

Поле Е задает один из следующих режимов:

  • режим удаления (RE); Задание этого режима означает, что прерванное сообщение более не претендует на пользование устройством. Прерванное сообщение пытается войти в блок, заданный полем С.

  • если режим RE не задан, т.е. поле Е - пусто, то прерванное сообщение будет вновь пытаться занять устройство.


Блок RETURN

Блок RETURN имеет следующий формат:

RETURN


Блок RETURN предназначен для освобождения ранее захваченного устройства.

В поле А задается номер устройства, с которого снимается прерывание.
Задание для самостоятельной работы:

  1. Измените условие примера: детали первого потока, обработка которых прервана на время обработки деталей второго потока, выводятся из системы. Промоделируйте обработку 100 деталей. Сравните результаты моделирования системы для случая, когда детали первого потока не выводятся из системы в результате прерывания обработки и когда выводятся. Сделайте выводы.