3.3.6. Изменение маршрута движения транзактов
Блок TRANSFER (передавать) предназначен для передачи входящего в него транзакта в другой блок модели. Он имеет формат:
TRANSFER [A],[B],[C],[D]
Операнды В и С являются метками блоков, куда направляется транзакт. Операнд А задаёт режим выбора блока, к которому направляется транзакт, существует 9 режимов:
§, – безусловный режим;
§. – статистический, выбор одного из двух с заданной вероятностью;
§ BOTH – последовательный выбор одного из двух блоков;
§ ALL – последовательный выбор одного из нескольких блоков;
§ PICK – выбор одного из нескольких случайным образом;
§ FN – функциональный режим, выбор по заданной функции;
§ Р – параметрический;
§ SBR – подпрограммный;
§ SIM – одновременный.
В режиме безусловного перехода операнд А пуст и все транзакты отправляются к блоку, указанному в блоке В. Например,
TRANSFER,MET1
В статистическом режиме значение операнда А, записываемое после точки как трёхзначное десятичное число, показывает вероятность (долю) транзактов, которые должны быть отправлены в блок с меткой С, остальные в блок В или к следующему блоку, если операнд В опущен. Примеры:
|
|
TRANSFER.7,MET1,MET2; 70 % идёт на метку MET2, 30 % – на MET1
TRANSFER.4,,MET2; 40 % идёт на метку, 60 % – в блок ниже
Если блоки с меткой MET1, MET2 заняты, то транзакт остаётся в блоке TRANSFER и повторяет попытку перехода в каждый следующий момент модельного времени.
В режиме BOTH транзакт проверяет два пути: сначала возможность войти в блок с меткой В, затем в С, если оба заняты, то ждёт.
В режиме ALL транзакт проверяет возможность войти в любой блок, начиная с блока, указанного в операнде В, и заканчивая блоком, указанным С. Операнд В определяет шаг изменения номера проверяемого блока.
В функциональном режиме вычисляется значение функции, имя которой указано в операнде В, берётся целая часть, полученное число складывается с С (может быть 0) и в блок с этим номером направляется транзакт.
3.3.7. Разработка модели и процесс моделирования
в GPSS. Пример создания модели
Рассмотрим процесс разработки модели на конкретном примере.
Пример. В парикмахерской два зала: причёсок и маникюрный. В маникюрном зале один мастер, в зале причёсок 2 мастера. Около 60 % приходящих клиентов пришли сделать причёску, из них 25 % затем хотят сделать маникюр. Если очередь к мастерам более одного человека, то клиент уходит. Поток клиентов простейший со средним значением 10 мин., время обслуживания в маникюрном зале 30 ± 10 мин, в зале причёски 60 ± 10 мин. Построить модель, имитирующую работу салона в течение 12-ти часов. Определить коэффициенты загрузки мастеров и количество ушедших клиентов.
|
|
Для моделирования простейшего потока воспользуемся встроенной библиотечной функцией exponential(a,b,c), задающей показательный закон распределения. Аргумент а означает номер генератора случайных чисел (любое число от 0 до 127), в определяет сдвиг, с – среднее значение. Для того чтобы различать клиентов, ушедших из-за очереди более 1 человека, введём два TERMINATE с разными метками. Для проверки очереди используем блок TEST и СЧА длины очереди Q$имя.