Автор работы: Пользователь скрыл имя, 19 Декабря 2011 в 17:54, курсовая работа
Целью данной курсового проекта является изучение и освоение навыков создания имитационных моделей систем массового обслуживания на ЭВМ с помощью специального языка моделирования GPSS , который позволяетпроводить эксперименты, занимающие недели, месяцы и даже годы модельного времени, всего за несколько секунд реального времени.
3
КОМПЬЮТЕРНАЯ РЕАЛИЗАЦИЯ МОДЕЛИ
3.1 Построение имитационной модели
Для построения компьютерной модели используем язык моделирования GPSS/PC.
Сообщения (транзакты)
- это динамические объекты GPSS/PC. Они
создаются в определенных точках модели,
продвигаются интерпретатором через блоки,
а затем уничтожаются. Сообщения являются
аналогами единиц-потоков в реальной системе.
Сообщения могут представлять собой различные
элементы даже в одной системе.
Сообщения движутся от блока к блоку так,
как движутся элементы, которые они представляют
(программы в примере с ЭВМ).
Каждое продвижение считается событием,
которое должно происходить в конкретный
момент времени. Интерпретатор GPSS/PC автоматически
определяет моменты наступления событий.
В тех случаях, когда событие не может
произойти, хотя момент его наступления
подошел (например, при попытке занять
устройство, когда оно уже занято), сообщение
прекращает продвижение до снятия блокирующего
условия.
После того, как система описана, исходя
из операций, которые она выполняет, ее
нужно описать на языке GPSS/PC, используя
блоки, которые выполняют соответствующие
операции в модели. Ниже перечислены некоторые
свойства этих блоков. В последующих разделах
подробно обсуждаются выполняемые ими
операции.
В
блоках могут происходить
события четырех
основных типов:
1)создание или уничтожение сообщений;
2)изменение числового атрибута объекта;
3)задержка сообщения на определенный
период времени;
4)изменение маршрута сообщения в модели.
Программа автоматически ведет подсчет числа сообщений, входящих в многоканальное устройство. Определяется также среднее число единиц многоканальных устройств, занятых одним сообщением, и среднее время пребывания сообщения в многоканальном устройстве. Эти статистические данные выдаются в конце счета и позволяют определить, насколько эффективно используются в системе объекты параллельной обработки и достаточна ли их емкость.
Составим модель на языке моделирования. Для начала нужно составить блок – схему моделируемого объекта с использованием элементов языка GPSS. (Рис. А.1)
Моделирование
потока машин, поступающих на обслуживание,
будем выполнять, используяоператорGENERATE(
В системе GPSS в библиотеку процедур включено более 20 встроенных распределений вероятности. Эти распределения имеют широкий диапазон использования.
Каждый вызов процедуры распределения вероятности требует, чтобы вы определили параметр потока, номер генератора случайных чисел:
GENERATE (Exponential (1, 0, ..))
В поле операнда А указывается обращение к библиотечной процедуре - экспоненциальному распределению вероятности. В третий параметр процедуры нужно вписать среднее время поступления (в данном случае) заявки.
Так как наша система использует устройства обслуживания (работников) примерно с одинаковыми показателями времени обслуживания, то их можно считать однотипными. Поэтому целесообразно будет использовать операторSTORAGE для задания собственно количество этих устройств, в параметре которого явно прописываем число работников СТО.
Автомобиль, поступающий на обслуживание, сначала встает в очередь, если она есть. Это можно промоделировать оператором QUEUE(Стать в очередь), который только в совокупности с оператором DEPART(Освободить очередь) собирает статистическую информацию о работе моделируемой очереди.
В нашем примере оператор QUEUEбудет выглядеть так:
QUEUEOchered
В поле операнда А дается символьное или числовое имя очереди. Таких очередей в системе может быть очень много. В нашей задаче дадим очереди имя Ochered. Желательно, чтобы присваиваемое имя отражало суть описываемого элемента системы.
Поскольку на СТО несколько работников, обслуживающих заявки, то необходимым условием является проверка на незанятость устройства обслуживания - если оно свободно, то авто становится на обслуживание, иначе переходит к метке с именем, указанным в параметре. В нашем случае используется оператор GATE, который направляет заявку на метку WILET при занятости устройства. Выглядит подобное действие следующим образом:
GATE SNF PR WILET
Слово SNF (storage not full) определяет условие занятости устройства - означает передачу транзакта на метку WILET при условии, что устройство занято.
Метка WILET направляет авто в новую очередь для фиксирования заявок, которые выбыли из системы без обслуживания. Здесь также используем блоки QUEUE, DEPART.
Учитывая то, что в нашей модели заявки поступают с неким приоритетом, то необходимо наличие блока, который задает этот приоритет. Существует несколько способов назначить приоритет, например, через блок PRIORITY, в параметре которого явно записывается приоритет транзакта. Но так как в данную систему будет входить несколько потоков заявок, то проще задать приоритет их обслуживания посредством использования параметра блока GENERATE операндом E:
GENERATE (Exponential(1,0,20)),,,,2
Кстати о нескольких потоках заявок – для направления их в общую очередь будем использовать блок TRANSFER в режиме безусловного перехода следующим образом:
TRANSFER ,VHOD
Обслуживание основной массы заявок приходится на однотипные обслуживающие устройства. Поэтому будем использовать свойство представления многоканальной СМО как совокупности одноканальных с помощью блока STORAGE, описанного выше. Поставить транзакт на обслуживание, в таком случае. Можно с посредством блока ENTER, а снять с помощью оператора LEAVE, в параметрах которых указываем имя устройства (их совокупности в данном случае):
ENTER NAME
LEAVE NAME
Также
в нашей системе следует
SEIZE NAME
RELEASE NAME
В нашей системе используем заявки с тремя различными приоритетами: 1 – повседневные случайные заявки, 2 – заявки от постоянных клиентов ( в очередь становятся первыми ), 3 – заявки для не по общим вопросам, которые обслуживаются на отдельном приборе. Для перехода на этот прибор нужно условие сравнения приоритетов, которое можно задать в блоке TEST, с помощью СЧА PR, которое означает, что сравниваются приоритеты с условием равенства, задаваемым параметром E (equal):
TEST E PR,2,PR2
Говоря человеческим языком: если приоритет заявки равен трем, то эта заявка направляется на метку с именем PR2 – прибор для обслуживания клиентов по частным вопросам.
После обслуживания авто покидает СТО. Для этого используется оператор TERMINATE(Завершить):
TERMINATE
И наконец, мы должны создать сегмент, который будет моделировать работу СТО в течение рабочей смены, равной 8 ч. Поскольку моделирование работы СТО проводится в минутах, то время моделирования системы будет равно 8 х 60 - 480 мин. Этот сегмент будет выглядеть так:
GENERATE 480
TERMINATE 1
START 1
Следует особо подчеркнуть, что парные операторы QUEUEи DEPARTдля каждой очереди должны иметь одно и то же, но свое уникальное имя. Это же относится и к операторам SEIZEи RELEASE.
Завершающим оператором является START,дающий команду начать моделирование.
Далее приведено словестное описание поставленной задачи.
На станцию технического обслуживания (СТО) прибывают автомобили для технического обслуживания и ремонта. Время прибытия автомобилей распределено по экспоненциальному закону со средним временем Т. На СТО имеется м обслуживающих устройств (работников). Время технического обслуживания – случайная величина, распределенная по экспоненциальному закону со средним промежутком Тоб. Следует учесть тот факт, что заявки делятся на несколько группу, согласно приоритета (1 – повседневные случайные заявки, 2 – заявки от постоянных клиентов , 3 – заявки для не по общим вопросам, которые обслуживаются на отдельном приборе). Также присудствует факт создания общей очереди для всех автомобилей. Построить GPSS модель для анализа эффективности работы станции обслуживания.
Итак, текст имитационной модели будет выглядеть следующим образом:
PRIBORY STORAGE 3
GENERATE (Exponential(1,0,30)),,,,1
TRANSFER ,VHOD
GENERATE (Exponential(1,0,13.5)),,,,2
TRANSFER ,VHOD
GENERATE (Exponential(1,0,60)),,,,3
TEST NE PR,3,PR_2
VHOD QUEUE OCHERED
GATE SNF PRIBORY,WILET
ENTER PRIBORY
DEPART OCHERED
ADVANCE (Exponential(1,0,40))
LEAVE PRIBORY
TRANSFER ,OUT
PR_2 GATE NU PRIBOR,WILET
SEIZE PRIBOR
ADVANCE (Exponential(1,0,15))
RELEASE PRIBOR
TRANSFER ,OUT
WILET QUEUE NOBSL
DEPART NOBSL
OUT TERMINATE
GENERATE 480
TERMINATE 1
START 1
Имитационная
модель составлена (Приложение Б).
3.2 Визуализация процесса функционирования системы
Перед началом моделирования, а точнее после трансляции модели, система GPSSW обеспечивает возможность визуального наблюдения перемещения активных требований (транзактов) в процессе моделирования. Команда управления START, должна быть заблокирована, то есть переведена в комментарии(для этого ставим символ * перед блоком). Процесс визуального наблюдения перемещения активных требований при моделирования включает следующие этапы:
Рис.
3.1 Окно BLOCKENTITIES
Для визуального наблюдения перемещения активных требований в процессе моделирования:
Рис.
3.2 Блок-схема моделируемой системы
АЗС
3.3. Моделирование системы
После создания имитационную модель необходимо оттранслировать и запустить на выполнение. Для этого: