- •Оренбургский государственный университет
- •Практикум по программированию процессов функционирования типовых смо в среде gpss по дисциплине «Проблемно – ориентированные программные системы»
- •Isbn 5-06-004087-9
- •2 Методика выполнения заданий
- •3 Применение для имитации смо объектов аппаратной и динамической категорий языка gpss World
- •3.1 Имитация функционирования одноканальной смо. Блоки generate, terminate, advance, seize, release
- •3.2 Имитация функционирования многоканальной смо. Блоки split, assemble, transfer. Оператор clear
- •3.3 Имитация функционирования одноканальной смо при наличии отказов каналов. Блоки assign, loop, preempt, return. Оператор equ
- •3.4 Имитация функционирования смо с ограниченной очередью. Блоки enter, leave, gate, test. Операторы storage, variable, initial
- •Initial x13,500 ;в ячейку 13 записыв. 500.
2 Методика выполнения заданий
Изучить содержание задания и установить его цель.
Составить структурную схему системы (Q – схему) из элементов: источник, накопитель, канал.
По методике, излагаемой в практикуме сразу после задания, разработать программу имитации функционирования системы.
Для этого:
а) составить объект «Модель» в виде последовательности операторов модели. При этом необходимо стремится к тому, чтобы поведение модели как можно точнее отражало поведение системы;
б) создать объект «Процесс моделирования» и по результатам трансляции в окне «Журнал» оценить качество трансляции. При наличии ошибок в наборе операторов и их полей необходимо их устранить в объекте «Модель». После чего снова создать объект «Процесс моделирования».
в) запустить «Процесс моделирования» командой «Старт» и провести анализ появившегося отчета, из которого определить результаты имитации (число поступивших заявок N, число обслуженных No и потерянных N1 заявок) и показатели качества системы (вероятность отказа заявке в обслуживании, вероятность обслуживания поступившей заявки, коэффициент использования и др.
3 Применение для имитации смо объектов аппаратной и динамической категорий языка gpss World
3.1 Имитация функционирования одноканальной смо. Блоки generate, terminate, advance, seize, release
Процесс моделирования в системе GPSS заключается в продвижении сообщений от блока к блоку с указанием команд и действий с помощью операторов. Продвижение сообщений по модели начинается с блока GENERATE и заканчивается в блоке TERMINATE. Задержка сообщений во времени по заданному закону происходит в блоке ADVANCE. Ввод в систему сообщений может быть также задан по какому-либо статистическому закону. Перечисленные три блока относятся к блокам динамической категории. Сами сообщения или транзакты являются динамическими объектами системы GPSS. Следует помнить, что транзакты не могут входить в блок GENERATE и выходить из блока TERMINATE, в противном случае происходит ошибка выполнения программы и ее останов. Моделирующая программа начинается с блока GENERATE и заканчивается блоком TERMINATE.
К аппаратной категории относятся блоки первой группы устройств SEIZE, RELEASE. Введение в моделирующую программу устройств (с помощью соответствующих блоков) позволяет автоматически регистрировать статистическую информацию. Рассмотрим более подробно наиболее характерные примеры программ с указанными блоками и операторами.
Пример 3.1. Заявки поступают в систему массового обслуживания (Q-схему) через фиксированное время (7 единиц времени). Обработка (обслуживание) каждой заявки занимает также некоторое фиксированное время (5 единиц времени). После обработки заявки покидают Q-схему. Провести обработку 100 заявок. Единицу времени пользователь назначает по своему усмотрению или по условию задачи.
Система GPSS будет проводить моделирование относительно тех значений единиц времени, которые задает пользователь. За единицу времени принята 1 мин, а программе решения примера 3.1 присвоено имя SAMPLE1.GPS. В этой программе транзакты (заявки, сообщения) генерируются блоком GENERATE каждые 7 мин, проходят через устройство под номером 1, задерживаются на 5 мин и покидают (освобождают) устройство 1. Захват и освобождение устройства осуществляют блоки SEIZE и RELEASE. Задержка транзактов во времени происходит в блоке ADVANCE. Вывод транзактов производит блок TERMINATE. Оператор START начинает процесс моделирования для указанного максимального числа счетчика завершений. Оператор END (управляющий оператор) осуществляет задание выполнения
; GPSS World Sample File – SAMPLE01.GPS
**********************************************************************
* *
* CANAL OBSL Simulation *
* *
**********************************************************************
GENERATE 7 ; Генерация транзактов каждые 7 мин.
SEIZE Canal ; Занятие прибора.
ADVANCE 5 ; Задержка транзактов.
RELEASE Canal ; Освобождение прибора.
TERMINATE 1 ; Уничтожение транзактов.
Рис. 3.1. Программа SAMPLE1.GPS в рабочем окне GPSS World
прогона модели и завершает работу системы GPSS/World.
Программа (имя файла SAMPLE01.GPS) в рабочем окне GPSS World для рассматриваемого примера имеет вид, показанный на рис. 3.1.
Приведем некоторые общие правила оформления программ.
1. После написания программы необходимо перед запуском на выполнение сохранить ее как файл с расширением GPS и именем, состоящим из букв и цифр длиной до 20 символов. Допускается применять символы только латинского алфавита. Во-вторых, обязательным является нумерация блоков в порядке возрастания, операторы можно не нумеровать.
2. Как правило, после номера устанавливается не менее двух пробелов и записывается имя блока. В рабочем окне можно использовать не более 255 позиций, начиная с левого края.
3. Комментарии пишутся после знака точки с запятой (;) в любом месте программы.
Для запуска модели необходимо:
командой CREATE SIMULATION меню COMMAND создать процесс моделирования, появляется окно - журнал Sample1.1.sim – JOURNAL;
вызвать окно команды START, в поле команды записать число прогонов (START100) и клавишей ОК запустить модель.
После выполнения заданного числа прогонов появляется стандартный отчет Sample1.1.1 – REPORT с результатами моделирования, который автоматически формируется системой GPSS/World.
В приведенном на рис. 3.2 файле стандартного отчета сначала идет информационная строка системы, строка с указанием версии, даты, времени; затем строка стандартного сообщения о начале моделирования START TIME, его окончании END TIME, количестве используемых в программе блоков BLOCKS, количестве установленных устройств FACILITIES, количестве многоканальных устройств,
GPSS World Simulation Report - Sample1.1.1
Sunday, November 29, 2009 10:27:47
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 705.000 5 1 0
NAME VALUE
CANAL 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 100 0 0
2 SEIZE 100 0 0
3 ADVANCE 100 0 0
4 RELEASE 100 0 0
5 TERMINATE 100 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
CANAL 100 0.709 5.000 1 0 0 0 0 0
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
101 0 707.000 101 0 1
Рис. 3.2. Стандартный отчет Sample1.1.1 – REPORT
для которых определяется заданная емкость накопителя STORAGES.
Далее приводятся:
номера блоков, которые определяются системой (под обозначением LOC);
названия блоков BLOCK_TIPE;
количество транзактов, проходящих через соответствующий блок программы ENTRY_COUNT;
текущее количество транзактов, задержанных в блоке на момент окончания моделирования CURRENT__COUNT;
количество транзактов, ожидающих специальных условий для прохождения через данный блок RETRY.
Как видно, для данной программы количество транзактов, проходящих через блоки равно 100. Все 100 транзактов, которые были сгенерированы блоком GENERATE, прошли через все блоки программы.
Работа устройства FACILITY под номером 1 оценивается следующими стандартными атрибутами:
количество транзактов, прошедших через устройство, указывается в поле ENTRIES (в нашем случае это число 101);
коэффициент использования в относительных единицах указывается в поле UTIL (в нашем случае число 0.709, которое показывает ту часть периода моделирования, в течение которого устройство было занято);
среднее время обработки или задержки одного транзакта в устройстве указывается в поле AVE._TIME (в нашем случае равно 5, которое так же можно определять, как среднее время занятости устройства);
поле AVAILABLE определяет состояние готовности устройства в конце периода моделирования (оно равно 1, если устройство готово, и 0,— если не готово);
поле OWNER (прямой перевод — владелец) определяет номер последнего транзакта, занимавшего устройство (если устройство не занималось, то устанавливается 0);
поле PEND (от англ. «pendent» — ожидающий решения) определяет количество транзактов, ожидающих освобождения устройства, находящегося в режиме прерывания;
поле INTER определяет количество транзактов, прерывающих работу устройства в данный момент;
поле RETRY определяет количество транзактов, ожидающих специальных условий, зависящих от состояния объекта типа «устройство»;
поле DELAY (задержка) определяет количество транзактов, ожидающих занятия или освобождения устройства.
В рассматриваемом примере последние пять полей равны нулю, так как система работает без каких-либо специальных условий и прерываний.
Содержание информации, которая выводится для транзактов из СБС следующее:
поле XN – номер транзакта;
поле PRI – приоритет транзакта;
поле BDT – таблица модельных событий – абсолютное модельное время выхода транзакта из СБС (и перехода транзакта в CTC);
поле ASSEM – номер семейства транзактов;
поле CURRENT – номер блока, где находится транзакт (0 – если транзакт еще не вошел ни в один блок модели);
поле NEXT – номер блока, в который должен войти транзакт;
поле PARAMETER – номер или имя параметра транзакта;
поле VALUE – значение параметра.
Пример 3.2. Очень часто процесс поступления транзактов в систему и процесс обработки подчиняется равномерному закону распределения в заданном интервале. Например, программу SAMPLE1.GPS можно привести к виду, когда поступление транзактов и их обработка будут осуществляться по равномерному закону в заданных интервалах, например, от 5 до 9 мин и от 3 до 7 мин соответственно. Другими словами, поступление заявок будет подчиняться равномерному закону с интервалом 7 + 2 мин, а обработка — равномерному закону со временем обработки 5 + 2 мин.
Программа для решения примера 3.2 SAMPLE2 имеет имя.GPS. Формат программы представлен на рис. 3.3. При равномерном законе поступления транзактов и том же законе обслуживания операнд поля <В> в блоках GENERATE и ADVANCE квалифицируется как модификатор-интервал. Если поступление или обслуживание транзактов подчиняется какому-либо функциональному закону, отличному от равномерного, то тогда операнд поля <В> квалифицируется как модификатор-функция.
; GPSS World Sample02 File - SAMPLE02.GPS
**********************************************************************
* *
* CANAL OBSL Simulation *
* *
**********************************************************************
GENERATE 7,2 ;Генерация транзактов из интервала (5,9).
SEIZE Canal ;Занятие прибора.
ADVANCE 5,2 ;Задержка транзактов.
RELEASE Canal ;Освобождение прибора.
TERMINATE 1 ;Уничтожение транзактов.
Рис 3.3 Программа SAMPLE02.GPS
Функциональный закон обслуживания или генерации транзактов будет рассмотрен позднее.
Написание названий блоков и операторов в программах допускается как прописными, так и строчными буквами.
Приведем форматы описания блоков и операторов, используемых в программах SAMPLE1.GPS и SAMPLE02.GPS. Формат описания блока GENERATE имеет вид:
GENERATE <A>,<B>
В приведенном описании использованы символы «<» и «>», которые образуют так называемые поля А и В. Значения полей называют также операндами. Для SAMPLE02.GPS соответственно поле <А> равно 7, а поле <В> равно 2. Операнды полей <А> и <В> являются постоянными числами. Это означает, что транзакты генерируются случайным образом в интервале времени от (7—2 = 5) до (7 + 2 = 9) в соотетствии с равномерным законом. Если поле <В> отсутствует (как для SAMPLE1.GPS), то генерация транзактов происходит через интервалы времени, указанные в поле <А> (т е. через 7 условных единиц времени). Соответствующее назначение полей применяется и для блока ADVANCE (задержка транзактов). Формат описания блока ADVANCE имеет вид:
ADVANCE <A>,<B>
Блок ADVANCE моделирует задержку вошедшего в него транзакта в течение определенного интервала. Для программы SAMPLE02.GPS эта задержка определяется как 5 ± 2 условные единицы, распределенные по равномерному закону. Поле <А> соответствует числу 5, а поле <В> — числу 2. Время задержки является случайным числом, распределенным равномерно в интервале времени от (<А>—<В>) до (<А> + <В>). Разница между числом поля <А> и числом поля <В> не должна быть отрицательна.
Задержка продвижения транзактов на время, указанное в полях блока ADVANCE, происходит, как правило, в устройствах, которые используют при моделировании работы различного вида оборудования единичной емкости.
Формат описания блока SEIZE имеет вид:
SEIZE <A>
Блок SEIZE имеет только одно поле <А>, которое задает номер или имя устройства, присвоенное разработчиком программы. В нашем случае устройство имеет номер 1. Номер или имя устройства могут быть произвольными. При входе транзакта в блок SEIZE всегда проверяется (интерпретатором системы GPSS) занято устройство или нет. Если устройство свободно, то оно занимается. Устройство остается занятым до тех пор, пока занимающий его транзакт не войдет в соответствующий блок RELEASE. Формат описания блока RELEASE имеет вид:
RELEASE <A>
Операнд поля <А> блока RELEASE должен быть таким же, как и для соответствующего блока SEIZE. В нашем случае число 1 в поле <А> задает номер устройства, которое моделируется блоками SEIZE и RELEASE и по которым формируется выходная статистика. Блок RELEASE предназначен для освобождения устройства тем транзактом, которым оно было занято.
Вывод транзактов из системы осуществляется блоком TERMINATE. Формат описания блока TERMINATE имеет вид:
TERMINATE <A>
В поле <А> блока TERMINATE задается число единиц (транзактов), на которое этот блок изменяет содержимое счетчика завершений, определяющего момент окончания моделирования. В данном случае это число равно 1. Число в поле <А> блока TERMINATE можно рассматривать как коэффициент, на который следует умножить число выводимых транзактов, чтобы получить задаваемое значение счетчика завершений. Если результат произведения точно не равен числу счетчика завершений, то число выводимых транзактов через блок TERMINATE устанавливается с избытком. Значение счетчика завершений или количество транзактов, которое необходимо пропустить через модель, задается оператором START. Формат описания оператора START имеет вид:
START <A>
Поле <А> оператора START задает значение счетчика завершений. В нашем случае это число равно 100. Оператор START используется также для инициирования начала моделирования.
GPSS World Simulation Report - Sample1.2.1
Sunday, November 29, 2009 11:10:23
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 714.047 5 1 0
NAME VALUE
CANAL 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 100 0 0
2 SEIZE 100 0 0
3 ADVANCE 100 0 0
4 RELEASE 100 0 0
5 TERMINATE 100 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
CANAL 100 0.699 4.994 1 0 0 0 0 0
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
101 0 718.106 101 0 1
Рис. З.4. Стандартный отчет SAMPLE02.RPT
Файл стандартного отчета для примера 3.2 (программа SAMPLE 02.GPS на рис. 3.3) под именем SAMPLE02.RPT приведен на рис. 3.4. Отличия от предыдущего отчета состоят в изменении времени моделирования 718, коэффициенте использования 0.699 и среднем времени обработки одного транзакта 4.994.
Пример 3.3. В систему массового обслуживания (Q-схему) поступают заявки, распределенные по равномерному закону в интервале 5 ± 2 мин. (от 3 до 7 мин). Обработка поступивших заявок осуществляется также по равномерному закону распределения в интервале 8 ± 2 мин (от 6 до 10 мин). Необходимо смоделировать работу системы обслуживания в течение 120 мин.
Программа решения примера 3.3 приведена на рис. 3.5 под именем SAMPLE03.GPS. В этом примере временной интервал поступления заявок меньше интервала обслуживания (по среднему значению). Здесь можно говорить о решении с помощью условного вложенного цикла, который образует двойная конструкция блоков GENERATE — TERMINATE.
Временной период работы системы задается блоками GENERATE 120, TERMINATE 1 и оператором START. Генерация одного транзакта происходит через 120 мин, которые указаны в поле <А> первого блока GENERATE. Этот транзакт выводится из системы блоком TERMINATE.
; GPSS World Sample03 File - SAMPLE03.GPS
**********************************************************************
* *
* CANAL OBSL Simulation *
* *
**********************************************************************
GENERATE 120 ;Генерация транзакта через 120 мин.
TERMINATE 1 ;Уничтожение транзакта внешнего цикла.
GENERATE 5,2 ;Генерация транзактов из интервала (5,9).
SEIZE Canal ;Занятие прибора.
ADVANCE 7,2 ;Задержка транзактов.
RELEASE Canal ;Освобождениеприбора.
TERMINATE 0 ;Уничтожение транзактов.
Рис. 3.5. Программа SAMPLE03.GPS
Число счетчика завершений J установлено в поле <А> оператора START. В то же время второй блок GENERATE (под номером 3) генерирует транзакты каждые 5 + 2 мин. Уничтожение транзактов осуществляется блоком TERMINATE без изменения счетчика завершений, т. е. блок TERMINATE применяется с пустыми полями.
GPSS World Simulation Report - Sample03.11.1
Sunday, November 29, 2009 17:55:44
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 120.000 7 1 0
NAME VALUE
CANAL 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 1 0 0
2 TERMINATE 1 0 0
3 GENERATE 25 9 0
4 SEIZE 16 0 0
5 ADVANCE 16 1 0
6 RELEASE 15 0 0
7 TERMINATE 15 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
CANAL 16 0.947 7.102 1 17 0 0 0 9
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
27 0 122.892 27 0 3
17 0 128.153 17 5 6
28 0 240.000 28 0 1
Рис. 3.6. Стандартный отчет SAMPLE03.RPT
В файле стандартного отчета SAMPLE03.RPT (рис. 3.6) приведены результаты работы системы для заданного времени (120 мин). Как следует из отчета, за 120 мин было сгенерировано 25 транзактов в условном вложенном цикле, который отражает основную работу моделируемой системы. Обработано и выведено из системы 15 транзактов. Работа условного внешнего цикла связана с числом счетчика завершений через блок TERMINATE с непустым полем <А> (в нем задано число 1, которое равно числу счетчика завершений).
На момент окончания моделирования в устройство поступил семнадцатый по счету транзакт внутреннего цикла. Это число показано в поле OWNER статистики устройства. Среднее время занятости устройства составляет 7.102 мин. Коэффициент использования устройства равен 0.947. Число транзактов, ожидающих специальных условий для устройства, равно 9. Поле DELAY статистики устройства заполнено (число 9) потому, что работа внутреннего цикла была прервана внешним циклом путем назначенного времени работы (число 120). Время работы системы отражено в поле показателя END_TIME. Блок TERMINATE условного внутреннего цикла вывел из системы 15 транзактов, которые не связаны с числом счетчика завершений.
Пример 3.4. В систему массового обслуживания (Q-схему) поступает и обрабатывается фиксированное число заявок. Примем, что заявки поступают в систему по равномерному закону из интервала времени, равного от 3 до 7 мин. Обработка заявок осуществляется также по равномерному закону в интервале времени от 5 до 9 мин. Необходимо смоделировать работу системы при поступлении и обработке 100 заявок.
Подобное условие задачи часто требуется для уточнения характера работы системы, когда в ней обслуживание заявок осуществляется медленнее, чем поступление этих заявок в систему.
GENERATE 5,2,,100 ;Генерация 100 транзактов.
SEIZE Canal ;Занятие прибора.
ADVANCE 7,2 ;Задержка транзактов.
RELEASE Canal ;Освобождениеприбора.
TERMINATE 1 ;Уничтожение транзактов.
Рис. 3.7. Программа SAMPLE04.GPS
Программа решения примера 3.4 приведена на рис. 3.7 под именем SAMPLE04.GPS.
Решение поставленной задачи с фиксированным числом входящих и обрабатываемых заявок осуществляется с помощью дополнительного поля блока GENERATE. В данном случае он имеет следующий формат записи:
GENERATE <A>,<B>,<O,<D>
В блоке GENERATE используются поля <A>,<B>,<C,<D>, среди которых поля <C>,<D> — новые. Поле <С> назначает временную задержку начала моделирования. Если оно пусто, то это означает, что задержка нулевая (как в нашей программе). В поле <D> указывается число генерируемых транзактов. В данном случае это число равно 100 и совпадает с числом счетчика завершений, указанным в операторе START.
Время работы системы зависит только от времени генерации заявок (транзактов) и времени их обработки. Моделирование системы будет происходить до тех пор, пока не сгенерируются и не выведутся 100 транзактов.
Результаты моделирования системы по заданному количеству поступающих и обрабатываемых заявок приведены в файле стандартного отчета с именем SAMPLE04.RPT (рис. 3.8). Несмотря на то что время генерации транзактов в примере меньше времени обработки, поле CURRENT_COUNT файла стандартного отчета нулевое, так как число сгенерированных транзактов равно числу счетчика завершений.
GPSS World Simulation Report - Sample04.12.1
Sunday, November 29, 2009 18:24:43
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 715.916 5 1 0
NAME VALUE
CANAL 10000.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 100 0 0
2 SEIZE 100 0 0
3 ADVANCE 100 0 0
4 RELEASE 100 0 0
5 TERMINATE 100 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
CANAL 100 0.991 7.095 1 0 0 0 0 0
Рис. 3.8 Стандартный отчет SAMPLE04.RPT
Число 100 установлено в поле <D> блока GENERATE и в поле <А> оператора START.Сколько сообщений вошло в систему, столько обработалось и вышло из системы.
Если сравнивать результаты моделирования в отчетах SAMPLE02.RPT и SAMPLE04.RFT, то можно заметить, что количество проходящих транзактов (заявок) без задержки через блоки системы одно и то же. Но этот результат в первом случае обусловлен более медленной генерацией транзактов по сравнению со временем обработки, а во втором случае объясняется жестко детерминированным заданием генерирования транзактов и их вывода из системы.
