Если необходимо управлять продолжительностью прогона по модельному времени, то в модели используется специальный сегмент, называемый сегментом таймера.GENERATE 100,40…..TERMINATEGENERATE 100000TERMINATE 1START 1Например, в модели из двух сегментов, первый (основной) сегмент выполняет те же функции, что и в предыдущем примере. Заметим, однако, что поле A блока TERMINATE в первом сегменте пусто, т.е. уничтожаемые транзакты не уменьшают содержимого счетчика завершений. Во втором сегменте блок GENERATE создаст первый транзакт в момент модельного времени, равный 100000. Но этот транзакт окажется и последним в данном сегменте, так как, войдя в блок TERMINATE, он обратит в 0 содержимое счетчика завершений, установленное оператором START равным 1. Таким образом, в этой модели гарантируется завершение прогона в определенный момент модельного времени, а точное количество транзактов, прошедших через модель, непредсказуемо.
Замечание! Не путайте ограничитель транзактов в блоке GENERATE и счетчик завершения. Ограничитель задает число транзактов, которые войдут в модель, а счетчик – число транзактов, которые выйдут из модели. По окончании моделирования транзакты могут оставаться в модели.
Задания для самостоятельной работы:Внесите изменения в программу, моделирующую работу вычислительного центра. Для каждого задания вносите изменения в исходный текст программы. Запустите и отладьте новые варианты программы.
-
К компьютеру на обработку поступают 14 заданий (транзактов), интервал поступления заданий распределен по равномерному закону в диапазоне 3-11 мин. Задайте единицу модельного времени – 1 мин.
-
К компьютеру на обработку в нулевой момент времени поступают 5 заданий с уровнем приоритета равным 25. Подумайте, как проверить?
-
Задания поступают на обработку к компьютеру каждые 4-14 мин. Первое задание поступает на 20 минуте. Задайте единицу модельного времени – 1 сек.
-
Моделирование заканчивается после того, как компьютер обработает 300 заданий, задания должны поступать в модель каждые 1-11 минут. Единицы модельного времени – минуты.
-
Задайте время моделирования работы системы 8 часов, единица модельного времени – 1 секунда.
Как изменились характеристики работы моделируемой системы в результате внесенных изменений? Сравните результаты моделирования с исходными значениями примера.
2. Моделирование одноканальных устройств. Блоки SEIZE, RELEASE и ADVANCE
Устройства используются при моделировании систем для имитации работы оборудования единичной емкости, например, процессор, канал передачи данных, человек, компьютер. Устройство в любой момент времени может обрабатывать только одно сообщение (транзакт, заявку). Если в процессе обслуживания появляется новый транзакт, то он должен:
-
либо подождать своей очереди;
-
либо направиться в другое место;
-
либо прервать обслуживание текущего транзакта.
Для использования одноканального устройства транзакту необходимо выполнить следующие шаги:
-
ждать очереди, если необходимо;
-
когда подходит очередь занять устройство;
-
устройство находится в состоянии занятости, пока не закончится обслуживание, для обслуживания необходим некоторый интервал времени;
-
когда обслуживание закончится, освободить устройство.
Второй и четвертый шаги реализуются блоками
SEIZE и
RELEASE.
Блок SEIZE имеет следующий формат:
SEIZE AСвободный блок SEIZE позволяет вошедшему в него сообщению занять указанное устройство. Блок SEIZE задерживает сообщение, если устройство занято или находится в состоянии недоступности.В поле
А задается номер (имя) занимаемого устройства.Сообщение, занявшее устройство, затем пытается перейти к следующему по номеру блоку. Устройство остается занятым до тех пор, пока занимающее его сообщение не войдет в соответствующий блок
RELEASE. Прежде чем освободить устройство, сообщение может пройти через неограниченное число блоков.
Блок RELEASE имеет следующий формат:
RELEASE AБлок
RELEASE предназначен для освобождения устройства, в поле А задается номер (имя) освобождаемого устройства. Транзакты обслуживаются устройствами в течение некоторого промежутка времени. Для моделирования такого обслуживания, т.е. для задержки транзактов на определенный отрезок модельного времени (реализация шага 3), служит блок
ADVANCE (задержать), имеющий следующий формат:
ADVANCEA,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 используются вычислительные объекты: переменные и функции.
Задания для самостоятельной работы:
-
Приведите фрагмент программы, который моделирует обработку детали на станке. Название устройства – MACHINE, время обработки – 10 ед. модельного времени.
-
Напишите сегмент программы, который описывает процесс шлифования изделия. Шлифование занимает 3-5 минут, в каждый момент времени может обрабатываться только одно изделие. Единица модельного времени – 1 мин.
3. Моделирование многоканальных устройств. Блоки STORAGE, ENTER и LEAVE
Задача. Изменим условие задачи о работе вычислительного центра. Пусть в вычислительной системе работают два компьютера (интенсивность обработки заданий одинаковая). Таким образом, поступающие задания будут обрабатываться параллельно двумя компьютерами. Все остальные условия остаются без изменений. В среде GPSS программа, моделирующая работу вычислительной системы, будет выглядеть следующим образом:NAK STORAGE 2GENERATE 360,300QUEUE OCH ENTER NAKDEPART OCHADVANCE 600,540LEAVE NAKTERMINATE 1START 100Обратите внимание, в программе появилась дополнительная строка nak STORAGE 2И блоки
SEIZE – RELEASE заменены соответственно на блоки
ENTER – LEAVE, моделирующие работу с многоканальным устройством (МКУ).В результате выполнения программы моделирования работы вычислительной системы с двумя компьютерами 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, то операнд