Файл: Моделирование систем в среде gpss world.docx

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

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

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

Добавлен: 10.11.2023

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

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

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

Задание 1


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

Пример кода, соответствующий требованиям:

generate ,,,5

queue ochered ; генерируем и запускаем одногоочередь

seize MACHINE; занимаем 1 обслуживающий прибор

depart ochered ; освобождаем очередь

advance 10 ; время обработки 1 очереди

release MACHINE; освобождаем 1 обслуживающий прибор

terminate 1

start 5


Q-схема:



Задание 2


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

Пример кода, соответствующий требованиям:

generate 6,1

queue ochered ; генерируем и запускаем одногоочередь

seize MACHINE; занимаем 1 обслуживающий прибор

depart ochered ; освобождаем очередь

advance 4,1 ; время обработки 1 очереди

release MACHINE; освобождаем 1 обслуживающий прибор

terminate 1

start 5

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

С помощью оператора 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 программы. Оцените эффективность работы порта.

Задание 1


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

Код:

nak storage 2 ; создаем два потока(компьютера)

generate 360,300

queue ochered ; генерируем и запускаем одногоочередь

enter nak ; занимаем 1 обслуживающий прибор

depart ochered ; освобождаем очередь

advance 600,540 ; время обработки 1 очереди

leave nak; освобождаем 1 обслуживающий прибор

terminate 1

start 100



Изменим количество обслуживающих устройств в МКУ с двух до одного:

nak storage 1 ; создаем два потока(компьютера)

generate 360,300

queue ochered ; генерируем и запускаем одногоочередь

enter nak ; занимаем 1 обслуживающий прибор

depart ochered ; освобождаем очередь

advance 600,540 ; время обработки 1 очереди

leave nak; освобождаем 1 обслуживающий прибор

terminate 1

start 100



Как можно заметить, время обработки транзактов увеличилось с 36 тысяч секунд до 60 т. секунд. Средняя длина очереди увеличилась с 0.7 до 31 транзакта.

Q-схема:




Вывод:


Увеличение параллельно работающих обслуживающих устройств позволяет более эффективно обрабатывать транзакты.

Задание 2


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

Для симуляции работы порта напишем следующий код:

port storage 10

generate 20,5

queue ochered ; генерируем и запускаем одногоочередь

enter port ,3 ; занимаем 1 обслуживающий прибор

depart ochered ; освобождаем очередь

advance 10,3 ; время обработки 1 очереди

leave port ,3; освобождаем 1 обслуживающий прибор

;timer

generate 500

terminate 1

start 1

Из отчета GPSS, показанного на рис. 9, мы получаем следующие результаты запуска модели:


­ общее время моделирования (START TIME – END TIME) при обработке 25 транзактов составило 500 часов;

­ сгенерировано всего 25 транзактов (блок GENERATE, столбец ENTRY COUNT);

­ обработались и покинули систему 25 транзактов (блок TERMINATE, столбец ENTRY COUNT);

­ загрузка обслуживающего устройства (ОУ) (строка FACILITY, показатель UTIL.) – 14%;

­ средняя длина очереди (строка QUEUE, показатель AVE. CONT.) – 1.5 транзакта.

Q-схема:




Вывод:


Загруженность очень низкая, порт обслуживает суда очень эффективно.

Работа с блоками передачи управления. Блоки 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.