Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Построение имитационной модели процесса






Построение имитационной модели начнем с создания заголовка модели, который может быть представлен, например, в таком виде:

; GPSSW AZS.GPS

***************************************

* Моделирование автомобильной *

* заправочной станции (АЗС) *

***************************************

Моделирование потока машин, поступающих на заправку, будем выполнять с помощью оператора GENERATE (Генерировать). Нам необходимо сформировать поток машин, поступающих на обслуживание на АЗС, который подчиняется экспоненциальному распределению вероятностей. Это можно сделать двумя способами, используя:

• эмпирические распределения, которые можно создать с помощью команды

FUNCTION (Функция) языка GPSS, используя дискретные (тип D) или непрерывные (тип C) случайные функции;

• встроенные распределения вероятностей.

В системе GPSSW в библиотеку процедур включено более 20 встроенных распределений вероятности. Эти распределения имеют широкий диапазон использования.

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

В нашем примере оператор GENERATE запишется в таком виде:

GENERATE (Exponential(1, 0, 6.5))

В поле операнда А указывается обращение к библиотечной процедуре – экспоненциальному распределению вероятности.

Автомобиль, поступающий на заправку, сначала встает в очередь, если она есть.

Это можно промоделировать оператором QUEUE (Очередь), который только в совокупности с оператором DEPART (Выйти) собирает статистическую информацию о работе моделируемой очереди.

В нашем примере оператор QUEUE будет выглядеть так:

QUEUE Zapravka

В поле операнда А дается символьное или числовое имя очереди. Таких очередей в системе может быть очень много. В нашей задаче дадим очереди имя Zapravka (Заправка). Желательно, чтобы присваиваемое имя отражало суть описываемого элемента системы.

Поскольку на АЗС есть две колонки для заправки, то автомобиль подъезжает к первой колонке, если она свободна, и ко второй, если первая занята. Если обе колонки заняты, то автомобиль ожидает их освобождения в общей очереди. Направление автомобилей на ту или иную колонку может быть обеспечено оператором TRANSFER (Передать). В нашем примере он запишется так:

TRANSFER Both, Kol_1, Kol_2

Слово Both (Оба) означает возможность передачи требования (машины) по двум направлениям: к оператору с меткой Kol_1, если первая колонка (объект) не занята, и к оператору с меткой Kol_2, если занята.

Следуя логике, автомобиль может выйти из очереди только тогда, когда освободится первая или вторая колонка (объект). Для моделирования используются два сегмента. Первый из них связан с работой первой колонки, а второй – с работой второй. Оба сегмента начинаются с оператора SEIZE (Занять), и каждый из них имеет свою метку, соответственно Kol_1 и Kol_2, которые определяют занятость первой или второй колонки (канала обслуживания). При освобождении одной из них находящееся впереди требование выходит из очереди и идет в канал на обслуживание.

Начало первого сегмента записывается так:

Kol_1 SEIZE Kolonka_1

В поле операнда А дается символьное или числовое имя объекта. Таких каналов обслуживания в системе может быть очень много. В нашей задаче каналу дано имя Kolonka_1 (Колонка_1). Желательно, чтобы присваиваемое имя отражало суть описываемого элемента системы.

Выход автомобиля из очереди фиксируется оператором DEPART с соответствующим названием очереди. В нашем примере это будет выглядеть так:

DEPART Zapravka

Далее должно быть промоделировано время заправки автомобиля. Оно в нашем примере составляет 10±2, 5 мин. Для моделирования этого процесса используется оператор ADVANCE (Задержать), который в нашей задаче будет выглядеть так:

ADVANCE 10, 2.5

Затем необходимо сообщить об освобождении колонки под номером 1. Это можно сделать с помощью оператора RELEASE (Освободить). Он в нашей задаче записывается так:

RELEASE Kolonka_1

Далее используется оператор TRANSFER (Передать) в режиме безусловной передачи требования к оператору с указанной меткой в поле операнда В. В нашем примере это будет выглядеть так:

TRANSFER, Next

Начало второго сегмента запишется так:

Kol_2 SEIZE Kolonka_2

В поле операнда А дается символическое имя объекта – Kolonka_2.

Выход автомобиля из очереди фиксируется оператором DEPART с соответствующим названием очереди. В нашем примере это будет выглядеть так:

DEPART Zapravka

Далее должно быть промоделировано время заправки автомобиля. Оно в нашем примере составляет 13±4 мин. Для моделирования этого процесса используется оператор ADVANCE, который в нашей задаче будет выглядеть так:

ADVANCE 13, 4

После заправки автомобиль покидает колонку. Это можно зафиксировать оператором DEPART, который в нашей задаче запишется так:

DEPART Total_time

Далее необходимо сообщить об освобождении колонки под номером 2. Это можно сделать с помощью оператора RELEASE. Он в нашей задаче записывается так:

RELEASE Kolonka_2

Затем используем оператор SAVEVALUE (Сохраняемая величина) с меткой Next (Следующий) для сохранения среднего времени нахождения автомобиля в очереди под именем Zapravka в сохраняемой величине под именем Ave_Queue. Это будет выглядеть так:

Next SAVEVALUE Ave_Queue, QT$Zapravka

Далее автомобиль покидает АЗС. Для этого используется оператор TERMINATE

(Завершить):

TERMINATE

И наконец, мы должны создать сегмент, который будет моделировать работу АЗС в течение рабочей смены, равной 8 ч. Поскольку моделирование работы АЗС проводится в минутах, то время моделирования системы будет равно 8 × 60 = 480 мин.

Этот сегмент будет выглядеть так:

GENERATE 480

TERMINATE 1

START 1

Следует особо подчеркнуть, что парные операторы QUEUE и DEPART для каждой очереди должны иметь одно и то же, но свое уникальное имя. Это же относится и к операторам SEIZE и RELEASE.

Завершающим оператором в нашей задаче является START, дающий команду начать моделирование:

START 1






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.