Блок 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-ти часов. Определить коэффициенты загрузки мастеров и количество ушедших клиентов.
Для моделирования:
Установите свободно распространяемую студенческую версию GPSS World (как описано в теории). После установки GPSS/World в списке программ Пуск/Все программы/ GPSS World Student Version выберите GPSS World Student Version.
В результате откроется среда моделирования GPSS/World (рисунок 1).
Рисунок 1- Среда моделирования GPSS/World
Далее необходимо выбрать пункт меню File/New и в открывшемся диалоговом окне Новый документ – Создать Model. В результате будет открыто окно Untitled Model1, в котором необходимо набрать текст программы (рисунок 2). При наборе блоков удобно пользоваться окном Insert GPSS blocks (вставить блок), которое вызывается в меню Edit/Insert GPSS blocks ( рисунок 3). Выбрав в нём нужный блок, заполняем последовательно поля ввода для каждого операнда. Здесь удобно вводить метки и комментарии.
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
Для моделирования простейшего потока воспользуемся встроенной библиотечной функцией exponential(a,b,c), задающей показательный закон распределения. Аргумент а означает номер генератора случайных чисел (любое число от 0 до 127), в определяет сдвиг, с – среднее значение. Для того чтобы различать клиентов, ушедших из-за очереди более 1 человека, введём два TERMINATE с разными метками. Для проверки очереди используем блок TEST и СЧА длины очереди Q$имя.
Рисунок 2- Окно с программой
Рисунок 3 - Окно Insert GPSS blocks
Файл с программой нужно сохранить в своей специально созданной для этой работы папке в файле с расширением.gps (пункты меню File/Save; File/Save As).
Для запуска программы на выполнение необходимо выбрать пункт меню Command/Create Simulation.
В среде моделирования различают объекты:
· модель – разрабатывается на языке GPSS, состоит из блоков, создаётся при помощи встроенного текстового редактора;
· процесс моделирования – результат трансляции модели, получаемый после команды Create Simulation, при наличии ошибок транслятор выдаёт список сообщений об ошибках в окне JOURNAL;
· отчёт по моделированию – автоматически создаваемый файл, содержащий статистическую информацию об объектах, накопленную в процессе моделирования.