Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции заочникам формат.doc
Скачиваний:
25
Добавлен:
30.04.2015
Размер:
568.83 Кб
Скачать

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) согласно равномерному распределению с интервалом 186. Транзакт моделирует клиента, приходящего в парикмахерскую. Созданный транзакт продвигается далее в блок (2), где регистрируется его присоединение к очередиQMASTER. Затем транзакт пытается занять устройствоMASTER, имитирующее парикмахера (блок 3). Если ему это удается, то состояние устройства меняется на “занято”, а транзакт продвигается в блок (4), регистрирующий его уход из очередиQMASTER. В случае неудачи транзакт остается в блоке (2) и ожидает в очереди освобождения устройства. После регистрации выхода из очереди, транзакт поступает в блок (5), где моделируется обслуживание клиента парикмахером задержкой на время 164. Затем транзакт поступает на блок (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 в режиме статистического перехода или перехода с одним альтернативным адресом