- •Белкоопсоюз
- •1.2. Этапы имитационного моделирования
- •1.3. Программное обеспечение имитационного моделирования
- •Тема 2. Основные понятия имитационного моделирования
- •2.1. Пример моделируемой системы
- •Устройство
- •2.2. События и таймер модельного времени.
- •2.3. Механизмы продвижения времени
- •2.4. Организация продвижения времени в системе gpss для моделируемого примера
- •Тема 3. Система моделирования gpss World
- •3.1. Общая характеристика системы gpss World
- •3.2. Объекты языка gpss
- •3.3. Простейшие операторы gpss
- •3.3.1. Введение транзактов в модель
- •3.3.2. Удаление транзактов из модели
- •3.3.3. Управление устройствами
- •3.3.4. Задержка транзактов во времени
- •3.3.5. Сбор статистики при ожидании в очереди
- •3.3.6. Модель работы парикмахерской
- •3.3.7. Изменение маршрутов движения транзактов
- •3.3.8. Моделирование многоканальных устройств
- •Тема 4. Генерация случайных чисел
- •4.1. Общие принципы генерации случайных величин
- •4.2. Линейные конгруентные генераторы
- •4.3. Генерирование непрерывных случайных величин согласно заданному закону распределения
- •Тема 5. Анализ выходных данных
- •5.1. Переходный период стохастического процесса
- •5.2.Оценка средних значений показателей
- •5.3.Получение заданной точности и расчет числа повторных прогонов
3.3.6. Модель работы парикмахерской
Рассмотрим теперь модель парикмахерской с одним креслом (рис.9). Блок-схема этой модели приведена на рис.10.
*Модель работы парикмахерской
* Сегмент клиентов
GENERATE18,6 ;Приход клиентов (1)
QUEUEQMASTER;Присоединение к очереди (2)
SEIZEMASTER;Переход в кресло парикмахера (3)
DEPARTQMASTER;Уход из очереди (4)
ADVANCE16,4 ;Обслуживание у парикмахера (5)
RELEASEMASTER;Освобождение парикмахера (6)
TERMINATE;Уход из парикмахерской (7)
* Сегмент таймера
GENERATE480 ;Приход транзакта-таймера (8)
TERMINATE1 ;Завершение прогона (9)
Рис.9. Модель работы парикмахерской с одним креслом
Текст, расположенный после знаков ‘*’ или ‘;’, является комментарием и системой не обрабатывается. Номера блоков, записанные справа в скобках, не являются частью программы и даны для удобства ссылок на операторы блоков.
1-й
сегмент модели
1
Рис.10. Блок-схема модели парикмахерской
Для того, чтобы начать моделирование, должна быть подана команда START1 (или включена в текст модели). Эта команда дает начальное значение, равное 1, счетчику числа завершений, и начинает процесс моделирования.
Итак, транзакты создаются блоком GENERATE(1) согласно равномерному распределению с интервалом 186. Транзакт моделирует клиента, приходящего в парикмахерскую. Созданный транзакт продвигается далее в блок (2), где регистрируется его присоединение к очередиQMASTER. Затем транзакт пытается занять устройствоMASTER, имитирующее парикмахера (блок 3). Если ему это удается, то состояние устройства меняется на “занято”, а транзакт продвигается в блок (4), регистрирующий его уход из очередиQMASTER. В случае неудачи транзакт остается в блоке (2) и ожидает в очереди освобождения устройства. После регистрации выхода из очереди, транзакт поступает в блок (5), где моделируется обслуживание клиента парикмахером задержкой на время 164. Затем транзакт поступает на блок (6), который изменяет состояние прибора на “свободно”, и далее проходит в блок (7), где уничтожается без изменения счетчика завершений. Второй сегмент модели состоит из двух блоков (8) и (9). Блок (8) генерирует транзакт-таймер, который приходит в момент модельного времени, равный 480, и символизирует звонок к окончанию рабочего дня. Этот транзакт тут же уничтожается блоком (9), при этом значение счетчика завершений уменьшается на 1 и становится равным 0. Моделирование прекращается.
Очевидным недостатком этой модели является то, что моделирование прекращается резко, без всяких подготовительных процедур. Если бы эта ситуация происходила в реальной жизни, то клиент, находящийся в кресле парикмахера в момент “звонка к окончанию дня” остался бы не достриженным, а клиенты, ожидавшие в очереди, ушли бы, не получив обслуживания.
Таким образом, в модели неявным образом объявлено устройство с именем MASTER. Транзакты, ожидающие в очереди к этому устройству, скапливаются в блоке (2)QUEUEQMASTER. По этой очереди регистрируется статистика под символическим именемQMASTER.
3.3.7. Изменение маршрутов движения транзактов
Для изменения маршрута транзактов в модели применяются блоки TRANSFER,GATE,TEST,LOOP. Транзакты, входящие в эти блоки, далее продвигаются не к следующему блоку, а к блокам, адрес которых определяется либо указывается в операторах. Ниже рассматривается только блокTRANSFER.
Блок TRANSFERможет иметь четыре операнда (A,B,C,D). Существуют девять режимов использования этого блока, которые определяются по значению операндаA. Рассмотрим основные из них:
1). Безусловный переход
TRANSFER,B
здесь B– имя (адрес) блока, к которому направляется транзакт (операндAотсутствует).
Пример.
TRANSFER,CPU2
Транзакт направляется к блоку с именем CPU2.
2). Условный переход с одним альтернативным адресом:
TRANSFER BOTH,B,C
где BOTH –тип режима;
B– имя (адрес) блока, к которому направляется транзакт (основной адрес). По умолчанию – следующий блок;
C- альтернативный адрес, куда направляется транзакт при невозможности войти в блок с адресомB.
Если ни один из блоков, указанных в операторе TRANSFER, не может принять транзакт, то он остается в блокеTRANSFER, и в дальнейшем моделирующая система будет делать попытки продвинуть этот транзакт при каждом изменении модельного времени
Примеры.
TRANSFER BOTH,KASS1,KASS2
TRANSFER BOTH,,TWO
В первом операторе транзакт первоначально направляется к блоку с именем (меткой) KASS1. При невозможности войти в этот блок транзакт направляется к блоку с именемKASS2. Во втором операторе транзакт делает попытку войти в следующий блок (значение параметраBпо умолчанию), а если ему это не удается, он направляется к блоку с именемTWO.
3). Статистический переход (переход с заданной вероятностью):
TRANSFERA,B,C
Здесь A– вероятность перехода транзакта по адресу С;
В – альтернативный адрес.
Если операнд Aпредставляет собой целое число, то оно трактуется как количество тысячных долей вероятности и преобразуется в вероятность автоматически.
Примеры.
TRANSFER.370,THIS,THAT
С вероятностью 0,37 транзакт перейдет к блоку THAT, а с вероятностью 0,63 – к блокуTHIS.
TRANSFER750,,NEW_PLACE
С вероятностью 0,75 транзакт передается на блок NEW_PLACE, а с вероятностью 0,25 – на следующий блок.
Если транзакт не принимает ни один из блоков, куда делалась попытка его протолкнуть, то он остается в блоке TRANSFER. В этом случае моделирующая программа повторяет попытки переправить транзакт пи каждом изменении модельного времени. На блок-схеме блокTRANSFERизображается в виде ромба (см. рис. 11 и 12).
TRANSFER
(B)
Рис.11. Блок TRANSFER в режиме безусловной передачи
TRANSFER (C)
A
(B)
Рис.12. Блок TRANSFER в режиме статистического перехода или перехода с одним альтернативным адресом