Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Имитац.мод.учеб.пос.docx
Скачиваний:
262
Добавлен:
21.05.2015
Размер:
530.5 Кб
Скачать
      1. Изменение маршрута движения транзактов

Блок 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) и в блок с этим номером направляется транзакт.

      1. Разработка модели и процесс моделирования в gpss. Пример создания модели

Рассмотрим процесс разработки модели на конкретном примере.

Пример. В парикмахерской два зала: причёсок и маникюрный. В маникюрном зале один мастер, в зале причёсок 2 мастера. Около 60 % приходящих клиентов пришли сделать причёску, из них 25 % затем хотят сделать маникюр. Если очередь к мастерам более одного человека, то клиент уходит. Поток клиентов простейший со средним значением 10 мин., время обслуживания в маникюрном зале 30 ± 10 мин, в зале причёски 60 ± 10 мин. Построить модель, имитирующую работу салона в течение 12-ти часов. Определить коэффициенты загрузки мастеров и количество ушедших клиентов.

Для моделирования простейшего потока воспользуемся встроенной библиотечной функцией exponential(a,b,c), задающей показательный закон распределения. Аргумент а означает номер генератора случайных чисел (любое число от 0 до 127), в определяет сдвиг, с – среднее значение. Для того чтобы различать клиентов, ушедших из-за очереди более 1 человека, введём два TERMINATE с разными метками. Для проверки очереди используем блок TEST и СЧА длины очереди Q$имя.

SIMULATE

PRICH STORAGE 2 ;заводим 2 мастера причёсок

GENERATE (exponential(1,0,10)) ;генерируем клиентов

TRANSFER .6,Z_MAN,Z_PRICH ;60 % на причёску, 40 % – маникюр

Z_PRICH TEST L Q$OCHPRICH,2,NEOBS ;длина очереди меньше двух?

QUEUE OCHPRICH ;становимся в очередь

ENTER PRICH ;занимаем мастера причёсок

DEPART OCHPRICH ;покидаем очередь

ADVANCE 60,10 ;обслуживаемся

LEAVE PRICH ;освобождаем мастера

TRANSFER .75,,VYIHOD ;75 % уходят, 25 % пошли на маникюр, ниже

Z_MAN TEST L Q$OCHMAN,2,NEOBS ;проверяем очередь на маникюр

QUEUE OCHMAN

SEIZE MAN ;занимаем мастера по маникюру

DEPART OCHMAN

ADVANCE 30,10

RELEASE MAN ;освобождаем мастера

VYIHOD TERMINATE ;все обслуженные клиенты уходят

NEOBS TERMINATE ;здесь необслуженные клиенты

GENERATE 720 ;фиктивный блок времени

TERMINATE 1

START 1