Автор: Пользователь скрыл имя, 28 Февраля 2013 в 00:24, курсовая работа
Цель данной курсовой работы состоит в том, чтобы смоделировать с помощью языка GPSS диспетчерский пункт, что бы собрать статистику, и сделать выводы о загруженности участников моделирования.
Введение 3
1. Постановка задачи и исходные данные 5
2. Описание возможностей языка GPSS. 6
3. Блок схема модели 14
4. Описание модели 16
5. Программа модели на языке GPSS 17
6. Обсуждение результатов моделирования диспетчерского пункта по управлению внутризаводским транспортом. 18
Заключение 21
Список использованной литературы 22
Приложение А 23
Приложение Б 24
Кроме операторов
блоков, разработчик модели может
использовать еще два вида операторов:
операторы описания объектов и управляющие
операторы. Операторы описания позволяют
определить переменную, функцию, описать
емкость памяти (количество каналов
многоканальной СМО), параметры таблицы
и пр. Управляющие операторы
позволяют задать условия моделирования,
такие как продолжительность
моделирования, число прогонов модели,
порядок и условия сбора
Простейшие операторы GPSS. Введение транзактов в модель.
Для ввода транзактов в модель используется блок GENERATE (Создать). Он создает (генерирует) транзакты в модели согласно заданному закону распределения интервала времени между их поступлением. Этот блок может иметь 5 операндов, т.е. имеет вид:
GENERATE A,B,C,D,E
Операнды A,B,…,E указывают следующие характеристики входного потока (в скобках значение по умолчанию):
A – средний интервал времени между поступлением транзактов (0);
B – половина поля допуска (размах) интервала равномерного распределения (0);
C – время создание первого транзакта (0);
D – ограничитель количества создаваемых транзактов (бесконечность);
E – приоритет создаваемых транзактов (0). В GPSS возможно всего 128 уровней приоритета, они задаются числами от 0 до 127. Чем больше значение приоритета, тем больше преимуществ получает при продвижении по модели транзакт;
На начальном этапе будем
рассматривать только равномерное
распределение интервалов между
транзактами. Для задания других
видов распределений нужно
Управление устройствами.
Объект типа “устройство” является аналогом канала обслуживания в СМО. В каждый момент времени он может быть занят только одним транзактом. Если устройство занято, транзакты ожидают в очереди его освобождения.
Занятие устройства транзактом выполняется блоком SEIZE (Занять) формата:
SEIZE A
Операнд A – символическое или числовое имя устройства. Правила записи всех символических имен в GPSS (будь то имя устройства, имя очереди, имя переменной или метка в модели) следующие:
Вход транзакта в блок SEIZE моделирует занятие устройства. Если транзакт пытается войти в этот блок, то производятся следующие действия:
Освобождение устройства выполняется блоком RELEASE (Освободить) формата:
RELEASE A
Операнд A – символическое или числовое имя устройства.
Этот блок разрешает вход и выход транзакту в любом случае. Когда транзакт входит в этот блок, состояние устройства изменяется на “свободно”. Попытка входа в блок RELEASE транзакта, ранее не прошедшего блок SEIZE с тем же именем в поле А, что и в блоке RELEASE, приводит к прекращению моделирования из-за нарушения логики моделирования.
Если разработчик модели использует пару блоков SEIZE – RELEASE с одним и тем же именем устройства, то тем самым он сообщает системе о наличии такого устройства и необходимости регистрировать статистические данные по нему. Коэффициент использования, количество транзактов, занимавших устройство, среднее время обслуживания и другие статистические данные собираются по устройствам автоматически и могут быть получены пользователем по окончании моделирования.
Задержка транзактов во времени.
Моделирования обслуживания на транзакта на устройстве выполняется задержкой этого транзакта на случайное (в общем случае) время обслуживания. Реализуется это в GPSS с помощью блока ADVANCE (Задержать) формата:
ADVANCE A,B
A – среднее значение времени задержки (0);
B - половина поля допуска (размах) интервала времени задержки (0).
Блок ADVANCE никогда не препятствует входу транзакта. Любое число транзактов может находится в этом блоке одновременно. Когда транзакт попадает в этот блок, разыгрывается случайное значение времени пребывания в нем, согласно операндам A и B. Далее транзакт будет находиться в блоке ADVANCE до истечения этого времени. Как и в случае блока GENERATE, для реализации других видов распределений, отличных от равномерного, нужно использовать в качестве аргументов специальные функции.
Сбор статистики при ожидании в очереди.
Как уже отмечалось выше, если устройство занято каким-либо транзактом, то блок SEIZE запрещает вход всем остальным транзактам. Эти транзакты, которые тоже хотели бы занять устройство, остаются в предыдущем блоке. Там они могут накапливаться, образуя очередь. Дисциплина обслуживания этой очереди, принятая по умолчанию в GPSS, - это “первым пришел – первым обслужен в пределах одного класса приоритетов”. Таким образом, после освобождения устройства, из очереди выбирается тот транзакт, который имеет больший приоритет, а среди транзактов одинакового приоритета – тот, который пришел ранее. Очереди в системе образуются автоматически, в результате того, что транзакты вынуждены ожидать освобождения устройства. По некоторым очередям разработчик модели хочет собирать статистику моделирования, а именно:
Для того, чтобы организовать сбор такой статистики (а не для того, чтобы организовать очередь), служат блоки QUEUE (Стать в очередь) и DEPART (Покинуть очередь).
QUEUE A,B
DEPART A,B
A – Символическое имя или номер очереди, к которой нужно присоединиться или покинуть (по умолчанию ошибка);
B – число занимаемых или освобождаемых мест в очереди (по умолчанию 1).
Блоки QUEUE и DEPART всегда пропускают транзакт. При входе транзакта в блок QUEUE моделирующая программа GPSS выполняет действия, фиксирующие вхождение транзакта в очередь (увеличение счетчика входов, запоминание времени постановки транзакта в очередь и т.д.). Когда же транзакт проходит блок DEPART, выполняются действия, регистрирующие выход транзакта из очереди и расчет соответствующих характеристик этого транзакта. Следует отметить, что моделирующий алгоритм GPSS устроен так, что среднее время пребывания в очереди рассчитывается с учетом и тех транзактов, которые в момент окончания моделирования находятся в очереди. Поэтому среднее время пребывания в очереди получается несколько заниженным, т.к. транзакты, находящиеся в очереди, должны были бы оставаться в ней еще некоторое время. Статистику по очередям, для которых организован сбор статистики блоками QUEUE – DEPART, пользователь получает в отчете по окончанию моделирования.
В системе
GPSS транзакт может присутствовать одновременно
не более, чем в пяти очередях. Ситуация,
в которой может потребоваться присутствие
транзакта в нескольких очередях одновременно,
может возникнуть, например, при моделировании
поведения покупателя в магазине, который
занимает очереди сразу в несколько отделов.
Сегмент 1 «Управление внутризаводским транспортом»
BYBYE
NAKOP
GRUZ
NAKOP
GRUZE
BYBYE
Сегмент 2 «Таймер»
Первый сегмент соответствует управление внутризаводским транспортом. Второй сегмент Таймер.
Для ввода транзакта (оператора) в модель используется блок GENERATE (Создать). распределения интервала времени между их поступлением. Этот блок может иметь 5 операндов, но в нашем случае имеет один операнд GENERATE (ограничитель количества создаваемых транзактов). Он создает (генерирует) транзакты в модели согласно заданному закону. После чего следует блок TRANSFER в режиме BOTH, этот фрагмент программы работает следующим образом: когда транзакт поступает в блок TRANSFER, то он в первую очередь пытается протолкнуть его в следующий по порядку блок (две запятые подряд означают, что операнд В пропущен, следовательно, по умолчанию подразумевается следующий блок.) Если все каналы заняты, то блок ENTER может не пропустить транзакт, тогда блок TRANSFER отправляет его на блок с меткой BYBYE, который в свое время отправляет в блок TERMINATE, который уничтожает транзакты, получившие отказ. Попавшие транзакты в блок ENTER в памяти NAKOP накапливаются в нем, по условию до 5, и ждут пока не освободится GRUZ. GRUZ – это память, имитирующее грузовик и занимает память GRUZ. Транзакт попавший в GRUZ переходит в блок LEAVE, который в свою очередь освобождает NAKOP. Далее транзакт попадает в блок ADVANCE, где происходит занятие устройства по условию 10+-4, после чего попадает в блок LEAVE, где происходит освобождение памяти GRUZ. Транзакт далее попадает в блок TERMINATE где происходит удаление обслуженных.
Сегмент 2 Таймер. Для того что бы закончить моделирование по истечении времени 600 единиц времени (что соответствует 10 часов) генерируем блок GENERATE 600, и завершаем моделирование блоком TERMINATE 1. В момент времени, равный 600, моделирование будет закончено, независимо сколько раз GRUZ использовался, и используется ли сейчас.
* Модель работы диспетчера управляющего внутризаводским транспортом
NAKOP STORAGE 5
GRUZ STORAGE 2
* СЕГМЕНТ
GENERATE 5,4 ;Ввод транзакта в модель.Заявки поступают каждые 5+-4мин.
TRANSFER BOTH,,BYBYE ;Транзакт пытается пройти в следующий блок или по метке BYBYE
ENTER NAKOP ;Знанимает память NAKOP
ENTER GRUZ ;Занимает память GRUZ
LEAVE NAKOP ;Освобождает NAKOP
ADVANCE 10,4 ;Занятие устройства на 10+-4
LEAVE GRUZ ;Освобождает память GRUZE
TERMINATE ;Удаление обслуженных
BYBYE TERMINATE ;Удаление обслуженных
* ТАЙМЕР
GENERATE 600 ;Приход таймера через 600 мин.
TERMINATE 1 ;Завершение моделирования
6. ОБСУЖДЕНИЕ РЕЗУЛЬТАТОВ МОДЕЛИРОВАНИЯ ДИСПЕТЧЕРСКОГО ПУНКТА ПО УПРАВЛЕНИЮ ВНУТРИЗАВОДСКИМ ТРАНСПОРТОМ
В заголовке отчета (рис.6.1) указывается имя модели и номер отчета «GPSS World Simulation Report - Модель диспетчер 12.7.1», а в следующей строке - дата и время его получения «Thursday, June 14, 2012 23:59:33». Затем идет общая информация о модели и ее прогоне.
START TIME – модельное время начала сбора статистики. Если не использовалась команда RESET, оно равно 0;
END TIME - модельное время окончания сбора статистики (время окончания последнего прогона - 600);
BLOCKS – количество блоков в модели - 11;
FACILITIES – количество устройств в модели - 0;
STORAGES – количество памятей в модели – 2.
GPSS World Simulation Report - Модель диспетчер 12.7.1
Thursday, June 14, 2012 23:59:33
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 600.000 11 0 2
Рисунок 6.1.- Содержимое окна отчета
Далее в отчете идет таблица символических имен, используемых в модели (рис.6.2). Для обозначения устройств, очередей, меток, переменных и т.п. в языке GPSS можно использовать как числовые константы, так и символические имена. В столбце NAME указывается символическое имя, а в столбце VALUE – соответствующие числовые эквиваленты, присвоенные компилятором.
NAME VALUE
BYBYE
GRUZ 10001.000
NAKOP 10000.000
Рисунок 6.2.- Содержимое окна отчета символические имена
На (рис 6.3) показан список блоков модели. В столбце ENTRY COUNT приведено общее число транзактов, входивших в данный блок, в столбце CURRENT COUNT – текущее количество транзактов в блоке на момент окончания моделирования, а в столбце RETRY – количество транзактов, ожидающих готовности для входа в блок. Таким образом, за прошедшее время моделирования 600 единиц времени, только 114 транзакта вошли в систему через блок GENERATE, один в момент окончания моделирования находился в очереди (блок QUEUE QDRUG) и два на обслуживании (блок ADVANCE). Ещё два транзакта не вошли в очередь, и были удалены как необслуженные (блок TERMINATE)
Информация о работе Моделирование диспетчерского пункта по управлению внутризаводским транспортом