Kak_delat

advertisement
Как имитировать поведение системы с одной очередью в виде
одноканальной системы массового обслуживания ( на языке GPSS/H)
Самым распространенным методом имитационного моделирования остается описание
поведения системы на специализированном языке GPSS. В нем поведение системы
имитируется движением транзактов через блоки, которое управляется специальными
операторами. Транзакты соответствуют заявкам в системе массового обслуживания –
заготовкам, полуфабрикатам, средствам транспорта и т.п. Блоки соответствуют
операциям, выполняемым обслуживающими приборами. Перемещаясь от одного блока к
другому, транзакты имитируют процессы преобразования заявок обслуживающими
приборами. В процессе моделирования транзакты взаимодействуют с блоками, которые
изменяют их атрибуты.
Блок GENERATE (ГЕНЕРИРОВАТЬ) вырабатывает транзакты, которые будут
двигаться через блоки модели. Транзакты появляются через некоторый интервал
поступления, представляющий собой сумму случайного числа по заданному закону
распределения с текущим значением времени. Функцию распределения интервалов
поступления транзактов задает пользователь, обращаясь к встроенным датчикам
случайных чисел. После названия блока в скобках указывают 5 операндов ( табл. ).
Операнд Значение
A
B
C
D
E
Средний интервал времени поступления транзактов( случайное
число, целое число)
Разброс значений времени относительно среднего интервала в
одну сторону, целое число
Момент времени появления первого транзакта (остальные
появляются по распределению, заданному A и B) , целое число
Ограничение общего числа транзактов, поступивших из блока за
заданное время
Один их 127 уровней приоритета каждого поступившего
транзакта
По
умолчанию
0
0
нет
нет
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.75 - 4.75. По
умолчанию оба операнда имеют нулевое значение. Блок ADVANCE задерживает
продвижение транзакта на некоторое время, обычно случайное.
Для имитации обслуживания транзакта некоторым прибором А используют блоки
SEIZE ( ЗАНЯТЬ) и RELEASE (ОСВОБОДИТЬ) . Блок SEIZE означает занятие прибора
А, указанного в операнде блока, а блок RELEASE- освобождение прибора А от
обслуживания транзакта.
Процесс обслуживания описывается одной из трех схем:
1.Прибор как единица
SEIZEUNIT
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 (UL206) 24 Jan 2006 12:02:06
C:\MYDOCS~1\My_docs\GPSS\GPSSHSTU\MY15.GPS
LINE# STMT# IF DO BLOCK# *LOC OPERATION A,B,C,D,E,F,G
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
FILE:
COMMENTS
SIMULATE
GENERATE 4.1
ADVANCE 2
SEIZE
SERVER
ADVANCE 3.1
RELEASE SERVER
TERMINATE 1
START
100
END
1
2
3
4
5
6
ENTITY DICTIONARY (IN ASCENDING ORDER BY ENTITY NUMBER; "*" => VALUE
CONFLICT.)
Facilities: 1=SERVER
SYMBOL VALUE EQU DEFNS CONTEXT
NUMBER
SERVER
1
Facility
4
6
STORAGE REQUIREMENTS (BYTES)
COMPILED CODE:
168
COMPILED DATA:
40
MISCELLANEOUS:
0
ENTITIES:
264
COMMON:
10000
-----------------------
REFERENCES BY STATEMENT
TOTAL:
10472
Файл разделен на четыре части:
поcледовательность исполнения программы ( начиная со Student GPSS/H);
присвоение свойств серверам (ENTITY DICTIONARY....;
занятие серверов транзактами ( SYMBOL...);
использование памяти ( STORAGE REQUIREMENTS..).
Выводится размер модели и имитация начинается:
GPSS/H MODEL SIZE:
CONTROL STATEMENTS
BLOCKS
6
3
Simulation begins.
5. По окончании имитационного моделирования выводятся его результаты:
5.1.Модельное и реальное времена моделирования:
RELATIVE CLOCK: 415.1000 ABSOLUTE CLOCK: 415.1000
5.2. Число транзактов, прошедших через каждый блок:
BLOCK CURRENT TOTAL
1
101
2
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.747
100
3.100 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 22003-2603, 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
ADVANCE
RTK
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 заложено множество других возможностей, имитирующих многообразные
свойства реальных процессов.
Download