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

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

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

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

Добавлен: 10.11.2023

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

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

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

Задание 1


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

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

generate 25,10

transfer 270,try1,try2

try1 seize 1

advance 45,10

release 1

terminate

try2 seize 2

advance 17,8

release 2

terminate

terminate

;timer

generate 2400

terminate 1

start 1

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

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

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

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

Q-схема:




Вывод:


Можно рассмотреть предложение о повышении производительности, поскольку загруженность ремонтирующей части очень высока

Задание 2


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

generate 4,1

transfer all,3,11,4

seize 1

advance 6,1

release 1

terminate 1

seize 2

advance 9,2

release 2

terminate 1

seize 3

advance 10,2

release 3

terminate 1

start 100

Q-схема:





Вывод:


Нагрузка распределилась между тремя компьютерами, причем третий компьютер был загружен лишь на 48%. Возможно, это указывает на недостаточную мощность первого компьютера.
GENERATE 4,1

TRANSFER PICK,3,5

TRANSFER ,A

TRANSFER ,B

TRANSFER ,C
A SEIZE 1

ADVANCE 6,1

RELEASE 1

TERMINATE 1
B SEIZE 2

ADVANCE 9,2

RELEASE 2

TERMINATE 1
C SEIZE 3

ADVANCE 10,2

RELEASE 3

TERMINATE 1
START 100

Q-схема:




Вывод:


Нагрузка распределилась более равномерно между всеми компьютерами. В первый компьютер ушло 29 заявок, во второй – 35, в третий – 38. Также заметим, что, поскольку обработка на первом компьютере происходит быстрее, то и средняя загруженность на нем меньше всего – 41% против 72% и 87% на других устройствах.

Задание 4


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

Пример:

GENERATE 360,300

QUEUE OCH

SEIZE COMP

DEPART OCH

ADVANCE 600,540

RELEASE COMP

TERMINATE 1

START 100

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

GENERATE 360,300

TEST GE Q$OCH,2,CONTINUE_TICKET

TERMINATE

CONTINUE_TICKET QUEUE OCH

SEIZE COMP

DEPART OCH

ADVANCE 600,540

RELEASE COMP

TERMINATE 1

START 100



Q-схема:




Вывод:


Судя по значению QUEUE – MAX CONT, в очереди на протяжении всей работы находилось не более двух транзактов. При этом было пропущено 73 транзакта (LOC 3).

Моделирование систем с использованием блоков 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 насосов.

Задание 1


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

Запустим модели 1 и 2. В результате получим следующий отчет:

1

2 Из различий можно отметить добавление синхронизации обработки заявки и ее копии. Помимо этого, во втором примере присутствует третье обслуживающее устройство. Добавим третье обслуживающее устройство в код:

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

SEIZE 3

ADVANCE 6,1

RELEASE 3

TERMINATE 1

START 100

Результаты не совпали с примером из второй задачи. Предположим, что это из-за отсутствующих затрат на синхронизацию. Для подтверждения гипотезы удалим все блоки MATCH из второго кода:

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

SEIZE 3

ADVANCE 6,1

RELEASE 3

TERMINATE 1

START 100

Q-схема:




Вывод:


Как видим, синхронизация заявок требует дополнительных временных затрат.


Задание 2


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

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

Для удобства изобразим схему процесса сборки

Рисунок 17 – Схема работы


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

GENERATE 1140,180,,100

SPLIT 1,ADAPT_NASOSA

SPLIT 1,IZGOTOV_OSNOVANIA
; получение двигателя со склада

; и последующая подготовка к сборке

SEIZE 1

ADVANCE 480,120

RELEASE 1

TRANSFER ,NASOS_I_OSNOVANIE
; заказ и адаптация насоса

ADAPT_NASOSA SEIZE 2

ADVANCE 600,120

RELEASE 2

TRANSFER ,NASOS_I_OSNOVANIE
; изготовление плиты основания

IZGOTOV_OSNOVANIA SEIZE 3

ADVANCE 900

RELEASE 3

TRANSFER ,NASOS_I_OSNOVANIE
; когда насос и плита основания готовы,

; производится пробная подгонка

NASOS_I_OSNOVANIE ASSEMBLE 3

SEIZE 4

ADVANCE 300,60

RELEASE 4
; сборка всех компонентов

SEIZE 5

ADVANCE 360,60

RELEASE 5

TERMINATE 1

START 100

Q-схема:




Вывод:


Как видим, 100 деталей обработалось за 31.5 часов. Самая высокая нагрузка (79%) оказывается на блок изготовления плиты основания, а самая низкая (27%) – на блоке пробной подгонки.

Моделирование систем с использованием блоков 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

Q-схемa




Блок PREEMPT

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

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

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

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

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

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

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

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

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

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

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

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

RETURN


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

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

1. Измените условие примера: детали первого потока, обработка которых прервана на время обработки деталей второго потока, выводятся из системы. Промоделируйте обработку 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

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

GENERATE 9,2

SEIZE FACIL1

ADVANCE 7,3

RELEASE FACIL1

TERMINATE 1

GENERATE 25,2

PREEMPT FACIL1,,CANCEL,CANCEL

ADVANCE 15,1

RETURN FACIL1

CANCEL TERMINATE 1

START 100

Q-схема:




Вывод:


Заметим, что количество транзактов, отправленных в TERMINATE во втором потоке (который имеет приоритет) увеличилось с 40 до 68. Это означает, что транзакты, которые были прерваны, были уничтожены.