Как имитировать поведение системы с одной очередью в виде одноканальной системы массового обслуживания ( на языке GPSS/H)

Самым распространенным методом имитационного моделирования остается описание поведения системы на специализированном языке GPSS. В нем поведение системы имитируется движением транзактов через блоки, которое управляется специальными операторами. Транзакты соответствуют заявкам в системе массового обслуживания – заготовкам, полуфабрикатам, средствам транспорта и т. п. Блоки соответствуют операциям, выполняемым обслуживающими приборами. Перемещаясь от одного блока к другому, транзакты имитируют процессы преобразования заявок обслуживающими приборами. В процессе моделирования транзакты взаимодействуют с блоками, которые изменяют их атрибуты.

Блок GENERATE (ГЕНЕРИРОВАТЬ) вырабатывает транзакты, которые будут двигаться через блоки модели. Транзакты появляются через некоторый интервал поступления, представляющий собой сумму случайного числа по заданному закону распределения с текущим значением времени. Функцию распределения интервалов поступления транзактов задает пользователь, обращаясь к встроенным датчикам случайных чисел. После названия блока в скобках указывают 5 операндов ( табл. ).

Операнд

Значение

По умолчанию

A

Средний интервал времени поступления транзактов( случайное число, целое число)

0

B

Разброс значений времени относительно среднего интервала в одну сторону, целое число

0

C

Момент времени появления первого транзакта (остальные появляются по распределению, заданному A и B) , целое число

нет

D

Ограничение общего числа транзактов, поступивших из блока за заданное время

нет

E

Один их 127 уровней приоритета каждого поступившего транзакта

0

Так, запись GENERATE ( 5,1 ) показывает, что транзакты появляются через 5±1 мин.

НЕ нашли? Не то? Что вы ищете?

Блок Terminate ( ЗАВЕРШИТЬ) отображает удаление транзактов из модели. После названия блока в скобках указывают операнд А – счетчик завершения, который задает величину, на которую уменьшается значение счетчика каждый раз, когда транзакт входит в этот блок.

Завершить моделирование в GPSS можно двумя способами:

- заканчивать моделирование после прохождения заданного числа транзактов;

- заканчивать моделирование по истечении заданного времени.

По первому способу операнду А в блоке START присваивают конечное число транзактов, операнду А в блоке Terminate, через который транзакты определенного типа покидают модель, присваивают число, соответствующее типу транзакта, операнду А в других блоках Terminate присваивают А=0. Например, запись:

Terminate 1

START 20

показывает, что моделирование закончится, когда через модель пройдут 20 транзактов.

По второму способу задают единицу модельного времени, например 1 мин., и длительность моделирования, например 60 минут:

- вводят в модель счетчик модельного времени - два блока, ограничивающих время моделирования:

GENERATE 60

Terminate 1

- во всех других блоках Terminate задают А=0;

- в блоке START задают А=1.

Это приведет к тому, что завершение движения транзактов в других блоках Terminate не повлияет на счетчик завершения. Через 60 единиц модельного времени транзакт выйдет из блока GENERATE и перейдет в блок Terminate, что приведет к уменьшению значения счетчика завершения на единицу и прекращению моделирования.

Процесс обслуживания заявки прибором (станком, кассиром и т. п.) отображается блоком задержки транзакта в приборе ADVANCE ( ПРОДВИНУТЬ). Он имеет два операнда:

А - среднее время задержки (при равномерном законе распределения);

В - время отклонения от среднего времени задержки ( в одну строну)

Например, ADVANCE 3.75,1

показывает, что транзакт задержится в приборе на модельное время 2По умолчанию оба операнда имеют нулевое значение. Блок ADVANCE задерживает продвижение транзакта на некоторое время, обычно случайное.

Для имитации обслуживания транзакта некоторым прибором А используют блоки SEIZE ( ЗАНЯТЬ) и RELEASE (ОСВОБОДИТЬ) . Блок SEIZE означает занятие прибора А, указанного в операнде блока, а блок RELEASE - освобождение прибора А от обслуживания транзакта.

Процесс обслуживания описывается одной из трех схем:

1.Прибор как единица

SEIZE UNIT

ADVANCE 10,2

RELEASE UNIT,

что означает «транзакт занял прибор UNIT, задержался в нем на время 8-12 единиц и освободил прибор UNIT».

2.Прибор является субблоком UNIT в блоке SERVER

SEIZE SERVER

ADVANCE 20, 4

SEIZE UNIT

ADVANCE 10.2

RELEASE UNIT

RELEASE SERVER

что означает «транзакт занял блок SERVER стал обслуживаться субблоком UNIT в течение 8-12 единиц времени, затем одновременно освободил субблок UNIT и блок SERVER».

Если программа написана так, что транзакт освобождает прибор, занятый другим транзактом, то интерпретатор GPSS выдаст сигнал ошибки.

3. Прибор используется несколько раз

SEIZE UNIT

ADVANCE 25, 4

RELEASE UNIT

ADVANCE 10,2

SEIZE UNIT

ADVANCE 12,3

RELEASE UNIT

что означает «транзакт дважды занимает и освобождает прибор UNIT».

Оператор START (НАЧАТЬ) имеет 4 операнда ( табл. )

Операнд

Значение

По умолчанию

А

Начальное значение счетчика завершения

B

C

D

Программа на языке GPSS может быть составлена в виде последовательности блоков, а затем написана в виде последовательности команд, отображающих блоки. В таблице показано соответствие графических и словесных отображений блоков.

БЛОК

ГРАФИЧЕСКОЕ ИЗОБРАЖЕНИЕ

GENERATE

TERMINATE

ADVANCE

SEIZE

RELEASE

Счетчик модельного времени в операторе START

Кроме блоков, программа на языке GPSS содержит управляющие операторы. К ним относятся: SIMULATE (начать имитацию), START ( установить значение счетчика, после которого имитация заканчивается), STORAGE ( задать число параллельно работающих приборов), FUNCTION (задать закон распределения случайных величин, дискретность или непрерывность случайной величины и число ее значений).

Построим модель в виде последовательности блоков и соответствующей последовательности команд. Пусть для оценки коэффициента использования прибора достаточно 1000 измерений.

Последовательность блоков

Последовательность команд

GENERATE A, B,

SEIZE UNIT

ADVANCE A, B

RELEASE UNIT

TERMINATE 1

START 1000

Моделирование продолжается до тех пор, пока через блок TERMINATE не пройдет 1000 транзактов.

Если прибор занят обслуживанием заявки, то поступающие к нему заявки становятся в очередь. Для оценки максимального и среднего размера очереди, среднего времени ожидания в очереди предназначены блоки QUEUE и DEPART. Блок QUEUE (встать в очередь) указывает на начало сбора информации о заявках, находящихся в очереди. Он имеет операнды А ( имя очереди) и В ( число элементов, на которое должно измениться значение содержимого очереди) .

Блок DEPART (покинуть очередь) указывает на окончание сбора информации о заявках, находящихся в очереди. Он имеет операнды А ( имя очереди) и В ( число элементов, на которое должно измениться значение содержимого очереди) .

Например, программа

GENERATE 100,400

QUEUE D

SEIZE A

DEPART D

ADVANCE 80,50

RELEASE A

TERMINATE 1

START 50

позволяет оценить время пребывания транзактов в очереди D перед блоком A.

Программа

GENERATE 100,40

QUEUE D

SEIZE A

ADVANCE 80,50

RELEASE A

DEPART D

TERMINATE 1

START 50

позволяет оценить общее время пребывания транзакта в приборе обслуживания A с учетом времени нахождения транзакта в очереди D.

Рассмотренных блоков достаточно для моделирования одноканальной системы массового обслуживания.

6.6. Как работать с интерпретатором GPSS/H

Интерпретатор GPSS/H® разработан ф. Wolverine Software Corporation (США) в виде студенческой (Student GPSS/H ®) и профессиональной (GPSS/H Professional®) версий. Студенческая версия является условно-платной и имеет ограничения: не более 125 блоков, не более 250 состояний, не более 32,72 Кб в памяти.

Для ввода в интерпретатор GPSS/H программу составляют в виде последовательности командных строк, каждая из которых соответствует блоку.

Командная строка содержит ( рис. ):

    имя прибора, нужное для перехода к строке из другого места модели

( не указывается, если такие переходы отсутствуют);

    оператор, показывающий выполнение определенной функции; операнды, показывающие характеристики функции; комментарии, поясняющие выполняемую функцию.

Рис. . Формат командной строки

Части строки разделяют пробелами. Программу записывают в формате ASCII П, используя любой текстовый редактор ( не Word, а WordPad или Блокнот!). Все буквы, кроме комментариев, должны быть заглавными. После написания программу называют именем из латинских букв и присваивают ей расширение. gps, например system 1 .gps. При входе в оболочку GPSS/H надо вызвать созданную программу с таким расширением.

Работа комплекса GPSS/H происходит в три фазы, отображаемые на экране:

1. Pass 1 ( with source listing) ……

Считывание исходного файла, выявление синтаксических ошибок, формирование исходного листинга программы, преобразование числовых значений в символы; если в программе допущены ошибки, интерпретатор выдает сообщение Error…

2. Pass 2 …

Преобразование модели в форму для исполнения, распределение памяти и подготовка к исполнению моделирования. Если на этом этапе нет ошибок, то происходит переход к третьей фазе;

3. Simulation begins.

Запуск модели. Если при этом нет ошибок, то формируется файл отчета с результатами моделирования, имеющий расширение. lis.

В результате работы интерпретатор GPSS/H формирует показатели имитационного эксперимента работы и регистрирует информацию о работе ее элементов: число состояний занятости прибора, коэффициент использования прибора, среднее время обслуживания заявки, время прохождения транзакта через модель.

Приведем пример из «Руководства по работе с GPSS/H» ( ф. Wolverine Software Inc., США).

1. Технологический процесс

Заготовки поступают на участок обработки с интервалом 3-5 минут ( равномерное распределение). В течение 2 минут они движутся к станку.. Обработка заготовки продолжается от 2,75 до 4,75 минут ( равномерное распределение). Сколько времени потребуется для обработки 100 заготовок? Какова средняя загрузка станка в течение обработки 100 заготовок?

2. Представим технологический процесс в виде системы массового обслуживания. Заготовки-это заявки, а станок - это обслуживающий прибор. Надо найти время обслуживания 100 заявок и среднюю загрузку прибора.

2. Программа на языке GPSS/H ( без очереди) выглядит следующим образом:

SIMULATE

GENERATE 4.1

ADVANCE 2

SEIZE SERVER

ADVANCE 3.1

RELEASE SERVER

TERMINATE 1

START 100

END

9.  После проверки программы формируется файл предстоящего процесса моделирования:

STUDENT GPSS/H RELEASE 3.0j-C10 (UL2Jan 2006 12:02:06 FILE: C:\MYDOCS~1\My_docs\GPSS\GPSSHSTU\MY15.GPS

LINE# STMT# IF DO BLOCK# *LOC OPERATION A, B,C, D,E, F,G COMMENTS

1 1 SIMULATE

2 2 1 GENERATE 4.1

3 3 2 ADVANCE 2

4 4 3 SEIZE SERVER

5 5 4 ADVANCE 3.1

6 6 5 RELEASE SERVER

7 7 6 TERMINATE 1

8 8 START 100

9 9 END

ENTITY DICTIONARY (IN ASCENDING ORDER BY ENTITY NUMBER; "*" => VALUE CONFLICT.)

Facilities: 1=SERVER

SYMBOL VALUE EQU DEFNS CONTEXT REFERENCES BY STATEMENT NUMBER

SERVER 1 Facility 4 6

STORAGE REQUIREMENTS (BYTES)

COMPILED CODE: 168

COMPILED DATA: 40

MISCELLANEOUS: 0

ENTITIES: 264

COMMON: 10000

-

TOTAL: 10472

Файл разделен на четыре части:

поcледовательность исполнения программы ( начиная со Student GPSS/H);

присвоение свойств серверам (Entity dictionary....;

занятие серверов транзактами ( SYMBOL...);

использование памяти ( STORAGE REQUIREMENTS..).

Выводится размер модели и имитация начинается:

GPSS/H MODEL SIZE:

CONTROL STATEMENTS 3

BLOCKS 6

Simulation begins.

5. По окончании имитационного моделирования выводятся его результаты:

5.1.Модельное и реальное времена моделирования:

RELATIVE CLOCK: 415.1000 ABSOLUTE CLOCK: 415.1000

5.2. Число транзактов, прошедших через каждый блок:

BLOCK CURRENT TOTAL

1 101

3 100

4 100

5 100

6 100

5.3. Использование обслуживающего прибора в ходе имитационного моделирования:

--AVG-UTIL-DURING--

FACILITY TOTAL AVAIL UNAVL ENTRIES AVERAGE CURRENT PERCENT SEIZING PREEMPTING

TIME TIME TIME TIME/XACT STATUS AVAIL XACT XACT

SERVER 0.AVAIL

5.4. Использование памяти при имитационном моделировании:

STATUS OF COMMON STORAGE

9632 BYTES AVAILABLE

368 IN USE

480 USED (MAX)

6. Выводится информация об окончании имитации, использовании компьютера и разработчике GPSS/H:

Simulation terminated. Absolute Clock: 415.1000

Total Block Executions: 602

Blocks / second: 602000

Microseconds / Block: 1.66

Elapsed Time Used (SEC)

PASS1: 0.05

LOAD/CTRL: 0.22

EXECUTION: 0.00

TOTAL: 0.27

GPSS/H IS A PROPRIETARY PRODUCT OF, AND IS USED UNDER A LICENSE GRANTED BY, THE WOLVERINE SOFTWARE CORPORATION,

7617 LITTLE RIVER TURNPIKE, ANNANDALE, VIRGINIA , USA.

7. Результаты моделирования:

    время обслуживания 100 заявок - 415.1 минут обслуживающий прибор при этом будет загружен на 74,7 %.

Интерпретируем результаты моделирования как ответы на вопросы заказчика:

    для обработки 100 заготовок потребуется 415,1 минут; при этом станок будет использоваться на 74,7 %.

Для того, чтобы довести степень использования до 95 %, следует заменить станок на менее производительный ( следовательно, более дешевый). Но такое использование может быть достигнуто с образованием очереди перед станком, когда каждая заготовка ожидает обслуживания.

Если в модель введено определение размера очереди, то следует проводить имитационные эксперименты с увеличением времени обработки заготовки до образования очереди заготовок перед обработкой.

Система с несколькими очередями представляется как многоканальная система массового обслуживания, которая характеризуются емкостью, показывающей число параллельно включенных приборов в устройстве обслуживания. Емкость задается в начале моделирования оператором STORAGE (хранить). Оператор имеет операнд А, указывающий имя многоканального устройства, и операнд В, указывающий число параллельно включенных приборов.

Например, оператор

STORAGE S( E ),3/S( F ),4

показывает, что устройство обслуживания имеет три параллельных прибора S и четыре параллельных прибора F.

Блок ENTER (войти) отображает занятие В приборов из группы А параллельно работающих приборов. Например,

ENTER TOOLS,2

показывает, что транзакт занимает два прибора из группы TOOLS.

Блок LEAVE (выйти) отображает освобождение В приборов из группы А. Например,

LEAVE TOOLS, 2

показывает, что транзакт освобождает два прибора из группы TOOLS.

БЛОК

ГРАФИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ

ENTER (войти)

LEAVE (выйти)

QUEUE (встать в очередь)

DEPART (покинуть очередь)

В качестве примера составим программу, имитирующую работу роботизированного технологического комплекса, в котором три параллельно работающих станка могут одновременно обрабатывать заготовки ( разработан к. т.н. ). Блоки SEIZE и RELEASE ранее рассмотренной одноканальной системы заменены на блоки ENTER и LEAVE ( ).

Модель роботизированного технологического комплекса

Блок-схема

Программа

STORAGE S(RTK),3

GENERATE 100,40

ENTER RTK

ADVANCE 80,50

LEAVE RTK

TERMINATE 1

START 100

Если транзакт должен перейти не в один, а два блока, то для выбора блока вводят блок TRANSFER ( передать), который может работать в трех режимах:

·  безусловная передача – транзакты переходят в следующий блок, если он свободен ( рис. )

Рис. . Блок TRANSFER в режиме безусловной передачи

В операнде А ставится запятая (,). В операнде В записывают имя блока, в который должен перейти транзакт. Например,

TRANSFER, BOX

показывает, что при занятости блока BOX транзакты остаются в блоке ТRANSFER;

·  статистическая передача - выбор направления в зависимости от случайного числа ( рис. )

Рис. . Блок TRANSFER в режиме статистической передачи

В операнде А записывают число, показывающее частоту передачи транзактов в блок С. Оно должно быть больше 0 и меньше 1 и начинаться с точки. В операнде В записывают имя блока, в который переходят транзакты с частотой, записанной в операнде А. Выбор направления передачи транзакта производится с помощью датчиков равномерно распределенных случайных величин в интервале (0,1), входящих в GPSS/H. Например,

TRANSFER.25,BOX, PLAY

транзакты, входящие в блок, с вероятностью 0.25 будут переданы в блок PLAY и с вероятностью 0.75 - в блок BOX.

·  передача BOTH (оба) – переход в равнозначные блоки (рис. )

Рис. . Блок TRANSFER в режиме ВОТН

В операнде А записывают слово BOTH. В операнде В записывают имя блока, в который должен перейти транзакт. Если этот блок занят, то транзакт попытается перейти в другой блок с именем, записанным в операнде С. Если и этот блок тоже будет занят, то транзакт останется в блоке TRANSFER до освобождения блока сначала с именем в операнде В, затем - с именем в операнде С. Например, запись

TRANSFER BOTH, BOX, PLAY

означает, что сначала транзакт попытается войти в блок ВОХ. Если блок ВОХ занят, то транзакт попытается войти в блок PLAY. Если этот блок тоже занят, то транзакт остается в блоке TRANSFER, пока не освободится блок BOX или блок PLAY.

Кроме того, в процессе имитации собирается информация о максимальном и среднем размерах очереди за время моделирования, общем числе транзактов в очереди, среднем времени пребывания транзакта в очереди и т. п.

В реальном производстве многие данные случайны. Они имитируются случайными интервалами времени между появлением транзактов в блоке GENERATE, случайным временем задержки транзактов в блоке ADVANCE, вероятностным выбором движения транзактов в блоке TRANSFER, вероятностной проверкой условия в блоке ТEST. По умолчанию GPSS/H генерируются псевдо-случайные числа от 0 до 1, распределенные по равномерному закону. Если для имитации требуется генерировать случайные числа по другим законам распределения, то используют встроенные в GPSS/H алгоритмы генерации случайных чисел по любому из 26 законов распределения ( бета, биномиальное, Вейбулла, дискретно-равномерное, гамма, геометрическое, Лапласа, логистическое, логлапласово, логлогистическое, логнормальное, нормальное, обратное Вейбулла, обратное Гаусса, отрицательное биномиальное, Парето, Пирсона типаV, Пирсона типа VI, Пуассона, равномерное, треугольное, Джонсона, М-Эрланга, экспоненциальное, экстремального значения А, экстремального значения В. Чаще всего применяют экспоненциальный, нормальный и треугольный законы распределения.

Дискретную или непрерывную, детерминированной и вероятностной функции. Случайную функцию задают оператором FUNCTION ( ФУНКЦИЯ). В поле имени записывают имя функции, в поле операций - слово FUNCTION. В операнде А записывают один из восьми номеров генераторов случайных чисел RN1...RN8, встроенных в интерпретатор GPSS/H. В операнде В указывают, дискретной (DN) или непрерывной (CN) будет случайная функция. N указывает число значений функции. Далее должны следовать строки определения функции со значениями суммарной частоты и соответствующими им значениями случайной переменной. Например,

GENERATE RVEXPO (1, 100.0)

вызывает случайные числа, генерируемые датчиком 1 и распределенные по экспоненциальному закону с математическим ожиданием 100.0 и дисперсией 0;

GENERATE RVNORM ( 3, 10.0, 2.0)

вызывает случайные числа, генерируемые датчиком 3 и распределенные по нормальному закону со средним 10.0 и среднеквадратичным отклонением 2.0;

ADVANCE RVTRI ( 2, 10.0, 50.0, 75.0)

показывает, что транзакт задерживается в приборе на случайное время, распределенное по треугольному закону с минимальным значением 10.0, средним значением 50.0 и максимальным значением 75.0.Значения этого времени генерируются датчиком RN2.

В языке GPSS заложено множество других возможностей, имитирующих многообразные свойства реальных процессов.