ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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. Это означает, что транзакты, которые были прерваны, были уничтожены.