Файл: Лекция Моделирование в системе имитационного моделирования gpss понятие имитационной модели смо.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 28.03.2024

Просмотров: 11

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

(косая черта направо), \ (косая черта налево) и , (запятая). Символ [А] также является оператором.
Для идентификации объектов, переменных и местоположения программы используются имена - последовательность символов. Существует несколько правил для создания имени:
1. можно использовать от 1 до 250 символов;
2. имя должно начинаться с символа;
3. имя не должно быть ключевым словом системы GPSSW.
Система GPSSW не различает в обозначениях верхний и нижний регистры (прописные или строчные буквы). Только символы в строковых константах и комментариях сохраняют нижний регистр. Все другие символы строчных букв преобразуются в прописные.
Вход транзактов в модель
Блок GENERATE (генерировать) - введение транзактов в модель. Не существует ограничений на число различных блоков GENERATE в одной модели.
Формат блока:
GENERATE [A],[B],[C],[D],[E]
A - Средний интервал времени (это может быть число, СЧА, встроенная функция);
B - Половина поля допуска равномерно распределенного интервала (число,
СЧА);
C - Смещение интервалов;
D - Ограничитель транзактов;
Е - Уровень приоритета транзактов.
Примеры использования блока GENERATE для равномерно распределенных интервалов времени прибытия :
1. Транзакт входит в модель через каждые 12±4 минуты:
GENERATE 12,4 2. Транзакт входит в модель через каждые 5 минут:
GENERATE 5 3. Приход в модель через каждые 20±3 минуты 5 транзактов:
GENERATE 20,3„5 4. Приход в нулевой момент времени трех транзактов с приоритетом 2:
GENERATE ,„3,2
Все возможные виды распределения интервалов времени прибытия в
GPSS World делят на равномерно распределенные и все другие виды распределений. Для того, чтобы задать более сложный вид распределения, необходимо обратиться к соответствующей функции. Предусмотрены следующие функции типовых распределений вероятностей:

Beta - бета-распределение;

Binomial - биномиальное распределение;

Discrete Uniform - дискретное равномерное распределение;


Exponential - экспоненциальное распределение;

Gamma - гамма-распределение;

Geometric - геометрическое распределение;

Laplace - распределение Лапласа;

Logistic - логистическое распределение;

LogLaplace - логлапласово распределение;

LogLogistic - логлогистическое распределение;

LogNormal - логнормальное распределение;

Negative Binomial - отрицательное биномиальное распределение;

Normal - нормальное распределение;

Pareto - распределение Парето;

Poisson - пуассоновское распределение;

Triangular - треугольное распределение;

Uniform - равномерное распределение;

Weibull - распределение Вейбула.
Примеры использования блока GENERATE для других распределений:
1. Для экспоненциального закона распределения при среднем времени прибытия требований 10 минут
GENERATE (Exponential (1,0,10))

1 – первый операнд - номер генератора случайных чисел;

0 – второй операнд – смещение, величина сдвига, определяющего месторасположение распределения;

10 –третий операнд - среднее значение, если смещение равно 0.
2. Для нормального закона распределения при среднем времени прибытия требований 10 минут и стандартном отклонении 3:
GENERATE (Normal (1,10,3))
Для нормального распределения первый операнд имеет тоже значение, что и для экспоненциального закона распределения, второй операнд - математическое ожидание, третий – стандартное отклонение.
Выход транзактов из модели
Блок TERMINATE (завершить) - удаление транзактов из модели.
Блоки TERMINATE всегда позволяют выйти всем транзактам, которые пытаются это сделать.
Формат блока:
TERMINATE [A]
Операнд А - величина уменьшения счетчика завершения. По умолчанию А = 0.
При попадании в этот блок транзакты уменьшают величину счетчика, включаемого командой START (начать) на величину А.
Счетчик завершений – это ячейка памяти, которая хранит число, записанное в начале моделирования. В процессе моделирования транзакты

попадают в блоки TERMINATE и таким образом происходит уменьшение содержания счетчика. В модели может быть любое число блоков
TERMINATE, но счетчик завершения только один. При достижении содержания счетчика завершения значения 0, моделирование завершается.
Примеры использования блока TERMINATE:
1. Закончить моделирование, когда через модель пройдет 300 транзактов:
GENERATE 23,4
• • •
TERMINATE 1
START 300 2. Ввести в модель счетчик времени (таймер-сегмент), по истечении которого (например, 200 минут) процесс моделирования остановится:
GENERATE 200
TERMINATE 1
(здесь генерируется 200 минут, которые убывают по одной минуте).
Таймер сегмент присутствует в большинстве моделей и вводится в конце основного сегмента модели, при этом основной сегмент заканчивается оператором TERMINATE (заметим, что значение операнда А использовано по умолчанию, то есть А = 0). Только таким образом можно управлять продолжительностью моделирования.
Одноканальное обслуживающее устройство (прибор)
Одноканальное обслуживающееустройство (прибор) характеризуется следующими свойствами:

Каждое устройство (прибор) может обслуживать только одно требование.

Когда на устройство (прибор) поступает требование в модели, надо пропустить время, необходимое для его обслуживания – время обслуживания.
Для того, чтобы различить устройства (приборы), им надо дать имена.
Имена могут быть либо числовыми, либо символическими.
Четыре типа блоков – SEIZE, RELEASE, PREEMPT и RETURN обеспечивают транзактам пользование этими элементами обслуживания.
SEIZE (занять) - занятие обслуживающего устройства
Формат блока SEIZE:
SEIZE A
A – имя (символьное или числовое) занимаемого устройства.
Прибор из состояния незанято переходит в состояние занято
Блок SEIZE служит целям записи факта использования устройства входящим в этот блок транзактом. Когда транзакт пытается войти в блок
SEIZE, осуществляется проверка, свободно ли устройство, имя которого задано значением аргумента А этого блока. Транзакту не разрешается занимать устройство, которое уже занято или захвачено другим транзактом.

Устройство будет оставаться занятым до тех пор, пока этот транзакт не войдет в соответствующий блок RELEASE.
RELEASE (освободить) - освобождение обслуживающего устройства.
Формат блокаRELEASE:
RELEASE A
A – имя (символьное или числовое) освобождаемого устройства.
Прибор из состояния занято переходит в состояние незанято. Вход транзакта в блок SEIZE моделирует занятие устройства, а вход транзакта в блок RELEASE моделирует освобождение устройства.
Если делается попытка освободить свободный прибор, то выдается сообщение об ошибке и моделирование прекращается.
Эти блоки являются взаимно дополняющими.
Между блоком SEIZE, в котором транзакт занимает устройство, и блоком RELEASE, в котором транзакт освобождает устройство, может быть расположено произвольное число блоков. Транзакт может занимать и прерывать обслуживание любого количества устройств. Одним из параметров транзакта является его приоритет, который указывается в блоке
GENERATE. Может возникнуть необходимость смоделировать ситуацию, когда очередной транзакт должен занять обслуживающее устройство, прервав обслуживание предыдущего транзакта. Такое прерывание называется «захватом устройства» и моделируется блоком PREEMPT.
PREEMPT (захватить) – захват обслуживающего устройства.
Формат блока PREEMPT:
PREEMPT A, [B], [C], [D], [E]
A – имя (символьное или числовое) захватываемого устройства.
Если устройство свободно, то блок PREEMPT работает так же, как и блок SEIZE. При занятом устройстве блок PREEMPT функционирует либо в приоритетном режиме, либо в режиме прерывания. Режимы определяются операндом B:

PR – приоритетный;

по умолчанию (операнд B не используется) – прерывания.
Что делать с транзактом, обслуживание которого прервано, определяют операнды C, D и E.
C – имя (символьное или числовое), куда должен быть направлен прерванны транзакт;
D – номер параметра прерванного транзакта, в который записывается оставшееся до завершения обслуживания время;
E - при значении RE определяет режим удаления прерванного транзакта.
Прерывание, сгенерированное транзактом на каком-либо устройстве, определенном в поле А, не снимается до тех пор, пока транзакт, гене- рировавший прерывание, не войдет в блок RETURN.
RETURN (вернуть) – возврат обслуживающего устройства.
Формат блока RETURN:
RETURN A


A – имя (символьное или числовое) возвращаемого устройства.
Аналогично паре блоков SEIZE – RELEASE вернуть устройство может лишь тот транзакт, который его захватил. Если в блок RETURN пытается войти какой-то другой транзакт, выводится сообщение об ошибке.
В распоряжении пользователя имеются два типа взаимно дополняющих пар блоков, с помощью которых можно промоделировать обслуживающее устройство: SEIZE – RELEASE и PREEMPT – RETURN.
Реализация задержки во времени
ADVANCE (задержать) – задержка продвижения транзакта в течение некоторого времени. Обычно этот интервал задается случайной переменной.
Формат блока ADVANCE:
ADVANCE A, B
A - среднее время задержки на обслуживание (это может быть число,
СЧА, встроенная функция);
B - половина поля допуска равномерно распределенного времени задержки (число, СЧА).
Когда транзакт попадает в такой блок, выполняется соответствующая подпрограмма и вычисляется время пребывания транзакта в нем. Этот блок никогда не препятствует входу транзактов. Любое число транзактов может находится в этом блоке одновременно.
Примеры использования блока ADVANCE:
1.Клиент в банке обслуживается в среднем 6

2 минуты:
ADVANCE 6,2 2. Автомобиль занимает колонку Kolonka и заправляется в течении 4 минут, затем освобождает колонку
SEIZE
Kolonka

ADVANCE
4
RELEASE
Kolonka
Это классический случай использования последовательности SEIZE -
ADVANCE – RELEASE.
3. Для того, чтобы задать закон распределения времени задержки, отличного от равномерного, необходимо обратиться к соответствующей функции, как это приводилось в описании блока GENERATE. Например, время задержки имеет экспоненциальный закон распределения со средним временем 10 минут
ADVANCE (Exponential (1,0,10))
Пример модели системы массового обслуживания
Для моделирования системы массового обслуживания достаточно воспользоваться всего несколькими блоками GPSS (рис. 2).
Рассмотрим каждое событие, возникшее в СМО:

1. Появление требования в системе (GENERATE – Генерировать).
2. Вход требования в очередь (QUEUE – Очередь).
3. Определение занятости канала обслуживания (SEIZE – Занять). Если канал занят, то требование остается в очереди, если свободен – то входит в канал обслуживания.
4. Выход требования из очереди (DEPART – Выйти).
5. Обслуживание требования в канале обслуживания (ADVANCE
Задержать).
6. Освобождение канала обслуживания (RELEASE – Освободить).
7. Выход требования из системы (TERMINATE – Завершить).
Рис. 2. Представление СМО на языке моделирования GPSS
Освоение языка моделирования GPSS World можно начать с рассмотрения самой простой модели - модели турникета в метро.
Пример 1. Пассажиры приходят к турникету метро каждые 7±4 секунды и встают в очередь, в которой находятся до тех пор, пока не пройдут на перрон. Проход через турникет занимает 5±3 секунды. Требуется определить время, необходимое для того, чтобы через турникет прошло 100 человек.
Для создания модели необходимо смоделировать вход и выход транзакта (пассажира) из модели и обслуживание транзакта (проход пассажира через турникет).
Для того, чтобы воспроизвести этот пример на компьютере, можно использовать студенческую версию GPSS World, которую можно бесплатно скачать с сайта фирмы Minuteman Software.
Кроме этого сайта, для скачивания студенческой версию GPSS World можно воспользоваться следующей ссылкой: http://gpss-world-student-version.software.informer.com/5.2/
Запустим систему GPSS World, после чего появится главное окно системы, которое представлено на рис. 3. В меню File пункт New создадим файл с текстом модели и сохраним его с именем Model_1:


Рис. 3. Окно модели примера 1.
В данной модели в качестве единицы измерения времени возьмем секунду. Моделирование потока пассажиров выполняется с помощью блока
GENERATE (Генерировать). Первый операнд – средний интервал времени между прибытием двух пассажиров, по условию задачи он равен 7, второй – отклонение времени прихода от среднего - 4.
Пассажир может пройти через турникет только тогда, когда турникет свободен. Для этого вводится блок SEIZE (Занять), который определяет занятость канала обслуживания. Имя канала обслуживания – Turn, которое задается в поле операнда. Далее необходимо промоделировать проход пассажира через турникет. Для моделирования этого процесса используется блок ADVANCE (Задержать). Первый операнд – средний интервал времени между проходом пассажира, который равен 5, второй – отклонение времени прихода от среднего - 3. Сообщение об освобождении канала обслуживания делается с помощью блока RELEASE
(Освободить). Имя освобождаемого канала обслуживания – Turn, оно задается в поле операнда.
После того, как пассажир пройдет через турникет, он покидает модель. Это действие представлено блоком TERMINATE (Завершить). В поле операнда стоит число 1, т.к. пассажиры проходят через турникет по одному.
Команда START (Начать) используется для управления временем моделирования. Операнд команды START служит для определения начального значения счетчика завершения. По условию задачи через турникет должно пройти
100 человек.
В этой модели нет необходимости получать информацию об характеристиках очереди, поэтому при создании модели не были
использованы блоки QUEUE – Очередь и DEPART – Выйти. Если надо проанализировать очередь, то эти блоки необходимо включить.
Чтобы получить стандартный отчет для модели, необходимо в меню
Command (Команда) выполнить команду Create Simulation (Создать выполняемую модель). Появится окно JOURNAL, а затем - REPORT с результатами моделирования. Стандартный отчет для модели представлен на рис. 4.
GPSS World Simulation Report - Model_1.5.1
Monday, January 28, 2008 11:46:27
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 724.428 5 1 0
NAME VALUE
TURN 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 100 0 0 2 SEIZE 100 0 0 3 ADVANCE 100 0 0 4 RELEASE 100 0 0 5 TERMINATE 100 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY
DELAY
TURN 100 0.688 4.984 1 0 0 0 0 0
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
101 0 730.127 101 0 1
Рис. 4. Стандартный вывод результатов моделирования для модели примера 1.
В верхней строке стандартного отчета указывается общая информация о результатах работы модели:

START TIME (начальное время – абсолютное модельное время в момент начала моделирования) - 0.000;

END TIME (время окончания) - 724.428;

BLOCKS (число блоков, использованных в модели) - 5;

FACILITIES (число устройств, использованных в модели) – 1;

STORAGES (число многоканальных устройств) – 0.
Дальше идет информация об именах, содержащихся в модели и информация о блоках с указанием числового номера позиции данного блока в модели. Затем информация о канале обслуживания и последняя строка – информация о списках текущих (CEC) и будущих событий (FEC):

FEC (список будущих событий) – FEC;

XN (номер каждого транзакта находящегося в списке) – 101;



PRI (приоритет транзакта) – 0;

BDT (момент абсолютного модельного времени, когда транзакт покинет список будущих событий) - 730.127;

ASSEM (номер семейства данного транзакта) – 101;

CURRENT (номер блока, в котором находится транзакт в конце моделирования) – 0;

NEXT (номер следующего блока, в который должен войти транзакт) – 1;

PARAMETER (имя или номер параметра транзакта) – значения нет;

VALUE (значение параметра) - значения нет.
Более подробно рассмотрим выдаваемую информацию о канале обслуживания TURN:

FACILITY (имя или номер устройства) – TURN;

ENTRIES ( количество раз, когда устройство было занято) – 100;

UTIL. (коэффициент использования канала обслуживания, доля времени моделирования, в течение которого устройство было занято) - 0.688;

AVE. TIME (среднее время обслуживания требования в канале) - 4.984;

AVAIL.(состояние устройства в конце моделирования: 1 – устройство доступно, 0 - недоступно) – 0;

OWNER (номер транзакта, который занимает устройство; если устройство не занято, то 0) – 0;

PEND (количество транзактов, ожидающих выполнения с прерыванием других транзактов) -0;

INTER (количество транзактов в списке пррываний) – 0;

RETRY (количество транзактов, ожидающих специального условия, зависящего от состояния устройства) – 0;
В процессе моделирования разработчику модели доступны следующие
СЧА одноканального обслуживающего устройства (указаны групповые имена):

F
- состояние устройства (1 – занят, 0 – свободен);

FC
- счетчик числа занятий;

FI
- состояние прерывания (1 – прервано, 0 – не прервано);

FR
- коэффициент использования (в долях тысячи);

FT
- среднее время использования устройства одним транзактом;

FV
- состояние доступности (1 – доступно, 0 – не доступно).
В примере 1 при необходимости анализа в модели состояния устройства ссылка на СЧА, обеспечивающая доступ к этому параметру будет иметь вид: F$Turn, где Turn – имя устройства.
В примере требовалось определить время, необходимое для того, чтобы через турникет прошло 100 человек. Это время моделирования - 724.428 сек.
После перевода в минуты получим 12 минут 7 секунд.