Одноканальная СМО с детерминированным потоком заявок и равномерно распределенной длительностью обслуживания (D/U/1)
GENERATE 25,10,100,250,5; интервал времени между транзактами — равномерно распределенная величина в интервале от 15 до 35; момент формирования первого транзакта равен 100 единицам модельного времени; всего за время моделирования этим оператором будет сгенерировано 250 транзактов, после чего формирование транзактов прекратится; всем сгенерированным транзактам будет присвоен приоритет, равный 5… Читать ещё >
Одноканальная СМО с детерминированным потоком заявок и равномерно распределенной длительностью обслуживания (D/U/1) (реферат, курсовая, диплом, контрольная)
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Саратовский государственный технический университет имени Гагарина Ю.А.»
Лабораторная работа № 1
по курсу «Моделирование систем»
на тему «Одноканальная СМО с детерминированным потоком заявок и равномерно распределенной длительностью обслуживания (D/U/1)»
Выполнил:
Студент гр. ИСТ-41
Резников К Проверил:
доцент каф. ИСТ Ивженко С.П.
Саратов, 2013
Задание Положим, что система содержит один обслуживающий прибор (рис. 6.6). В СМО поступает детерминированный поток заявок с интервалом 10 секунд. Заявки выбираются на обслуживание из накопителя неограниченной ёмкости в порядке поступления, то есть по правилу «первым пришел — первым обслужен» (дисциплина обслуживания FIFO — First In First Out).
Длительность обслуживания заявок в приборе — величина случайная, распределенная по равномерному закону в интервале от 4 до 12 секунд
(8±4 секунды) со средним значением 8 секунд.
Листинг программы
*******************************************************************
GENERATE 10; формирование детерминированного потока заявок
QUEUE 1; отметка момента поступления заявки в очередь 1
SEIZE uzel; занятия прибора с именем uzel
DEPART 1; отметка момента покидания заявкой очереди 1
ADVANCE 8,4; задержка на время 8±4 единицы времени
RELEASE uzel; освобождение прибора с именем uzel
TERMINATE 1; удаление заявки из модели
*******************************************************************
START 100 000
*******************************************************************
Отчет По завершении моделирования результаты формируются автоматически в виде стандартного отчета, представленного на рисунке 1.
Рис. 1. Стандартный отчет Модели 1
Анализ отчета Стандартный отчет рассматриваемой модели содержит следующую информацию:
1. Заголовок с именем GPSS-модели:
GPSS World Simulation Report — Untitled Model 1.1.1
2. Дату и время проведения имитационного моделирования (эксперимента):
Wednesday, February 19, 2014 22:12:29
3. Время старта и завершения моделирования, количество блоков
(операторов), одноканальных устройств (приборов) и многоканальных устройств (памятей) в GPSS-модели:
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 1 000 005.010 7 1 0
4. Перечень заданных в модели символических имен (блоков, устройств, памятей) и присвоенные им числовые значения (начиная с 10 000):
NAME VALUE
UZEL 10 000.000
5. Перечень (BLOCK TYPE) пронумерованных (LOC) блоков c присвоенными им в модели метками (LABEL):
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 100 000 0 0
2 QUEUE 100 000 0 0
3 SEIZE 100 000 0 0
4 DEPART 100 000 0 0
5 ADVANCE 100 000 0 0
6 RELEASE 100 000 0 0
7 TERMINATE 100 000 0 0
Кроме того, для каждого блока указывается:
ENTRY COUNT — количество транзактов, вошедших в данный блок за время моделирования;
CURRENT COUNT — количество транзактов, в данном блоке на момент завершения моделирования;
RETRY — количество транзактов, ожидающих выполнения некоторого специфического условия.
6. Результаты моделирования и дополнительная информация по устройствам:
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
UZEL 100 000 0.801 8.008 1 0 0 0 0 0
Здесь:
FACILITY — символическое имя или номер устройства;
ENTRIES — количество транзактов, вошедших в данное устройство за время моделирования;
UTIL. — коэффициент использования (загрузка) устройства;
AVE.TIME — среднее время занятия устройства одним транзактом (средняя длительность обслуживания заявок);
AVAIL. — состояние устройства на момент завершения моделирования: 1 ;
устройство доступно (не занято), 0 — устройство недоступно (занято);
OWNER — номер транзакта, находящегося в устройстве на момент завершения моделирования;
PEND — количество транзактов, ожидающих выполнения с прерыванием других транзактов;
INTER — количество прерванных транзактов на момент завершения моделирования (в списке прерываний);
RETRY — количество транзактов, ожидающих выполнения некоторого специфического условия;
DELAY — количество транзактов, ожидающих занятия устройства.
7. Результаты моделирования и дополнительная информация по очередям:
QUEUE MAX CONT. ENTRY ENTRY (0) AVE.CONT. AVE. TIME AVE.(-0) RETRY
1 1 0 100 000 69 780 0.040 0.405 1.339 0
Здесь:
QUEUE — имя или номер очереди;
MAX — максимальное количество транзактов в очереди за время моделирования;
CONT. — текущее количество транзактов в очереди на момент завершения моделирования;
ENTRY — количество транзактов, прошедших через очередь за время моделирования;
ENTRY (0) — количество транзактов, прошедших через очередь за время моделирования с нулевым временем ожидания;
AVE.CONT. — средняя длина очереди за время моделирования;
AVE.TIME — среднее время нахождения транзакта в очереди (среднее время ожидания заявок);
AVE.(-0) — среднее время нахождения транзакта в очереди без учета транзактов с нулевым временем ожидания;
RETRY — количество транзактов, ожидающих выполнения некоторого специфического условия;
8. Список будущих событий (FEC):
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
100 001 0 1 000 010.000 100 001 0 1
Здесь:
FEC — Future Events Chain;
XN — номера всех транзактов, находящихся в списке будущих событий (в данном примере это единственный транзакт с номером 100 001);
PRI — приоритет транзакта;
BDT — момент времени, когда транзакт должен покинуть блок, а, следовательно, и список будущих событий;
ASSEM — номер семейства данного транзакта;
CURRENT — номер блока, в котором находился транзакт на момент завершения моделирования;
NEXT — номер следующего блока, в который будет передан транзакт;
PARAMETER — имя или номер параметра транзакта;
VALUE — значение параметра.
Описание операторов и команд:
GENERATE (ГЕНЕРИРОВАТЬ) Назначение оператора: генерирование транзактов в соответствии с заданным правилом формирования интервалов между транзактами.
Формат оператора:
GENERATE [A],[B],[C],[D],[E]
Значения операндов:
A — средний интервал времени между генерируемыми транзактами или вероятностное распределение интервала из встроенной библиотеки процедур, заключённое в круглые скобки;; [по умолчанию — ноль];
B — величина полуинтервала равномерно распределенного интервала или модификатор таблично заданной функции; [по умолчанию — ноль];
С — смещение — момент формирования первого транзакта; [по умолчанию — ноль];
D — ограничитель — число генерируемых данным оператором транзактов; [по умолчанию — не ограничено];
Е — уровень приоритета от 0 до 127 (чем больше номер, тем выше приоритет); [по умолчанию — ноль].
Примечание. Несмотря на то, что операнды A и D — необязательные операнды, в операторе GENERATE обязательно должен использоваться один из них: либо операнд A, либо операнд D.
Примеры:
GENERATE 25; интервал времени между генерируемыми транзактами — величина детерминированная равная 25, количество генерируемых транзактов не ограничено.
GENERATE, 25;операнды A, B и C не используются, и их значения равны нулю по умолчанию; это означает, что в нулевой момент модельного времени будут сгенерированы ровно 25 транзактов.
GENERATE 25,10; интервал времени между транзактами — величина случайная, равномерно распределенная в интервале (25±10), т. е. от 15 до 35.
Раздел 6. Имитационное моделирование 273
GENERATE 25, FN$Erlang; интервал времени между транзактами — величина случайная, распределенная по закону, заданному в виде табличной функции Erlang.
GENERATE 25,10,100,250,5; интервал времени между транзактами — равномерно распределенная величина в интервале от 15 до 35; момент формирования первого транзакта равен 100 единицам модельного времени; всего за время моделирования этим оператором будет сгенерировано 250 транзактов, после чего формирование транзактов прекратится; всем сгенерированным транзактам будет присвоен приоритет, равный 5.
GENERATE (Exponential (1,0,50)); интервал времени между транзактами — величина случайная, распределенная по экспоненциальному закону со средним значением 50.
Следует обратить внимание, что в последнем примере имя библиотечной процедуры с параметрами Exponential (1,0,50) заключается в круглые скобки. Параметры процедуры Exponential имеют следующий смысл: первый параметр — номер встроенного генератора равномерно распределённых в интервале (0; 1) случайных чисел (может иметь значения от 1 до 999); второй и третий параметры — соответственно смещение (минимальное значение) и среднее значение (математическое ожидание) случайной величины, распределённой по экспоненциальному закону.
TERMINATE (ЗАВЕРШИТЬ) Назначение оператора: удаление транзактов из модели.
Формат оператора:
TERMINATE [A]
Значения операндов:
A — указатель уменьшения счетчика завершений (целое положительное число); [по умолчанию — ноль].
Примеры:
TERMINATE 1; транзакт, поступивший в данный блок, удаляется из модели, и счетчик завершения процесса моделирования, начальное значение которого устанавливается командой START, уменьшается на 1.
TERMINATE; транзакт удаляется из модели, при этом значение счетчика завершения процесса моделирования не изменяется.
ADVANCE (ЗАДЕРЖАТЬ) Назначение оператора: задержка транзакта на заданное время.
Формат оператора:
ADVANCE [A],[B]
Значения операндов:
A — среднее время задержки или вероятностное распределение из встроенной библиотеки процедур, заключённое в круглые скобки; [по умолчанию — ноль];
274 Раздел 6. Имитационное моделирование
B — величина полуинтервала равномерно распределенного интервала задержки или модификатор таблично заданной функции; [по умолчаниюноль].
Примеры:
ADVANCE 50; поступивший транзакт задерживается в данном блоке на 50 единиц времени.
ADVANCE 50,10; время задержки транзакта — величина случайная, равномерно распределенная в интервале от 40 до 60 (50 ± 10).
ADVANCE 50, FN$Erl1; время задержки транзакта — величина случайная, распределенная по закону, заданному в виде табличной функции Erl1, со средним значением 50.
ADVANCE (Exponential (33,10,50)); время задержки — величина случайная, распределенная по экспоненциальному закону (из встроенной библиотеки процедур) со средним значением 50; номер встроенного генератора равномерно распределённых случайных чисел равен 33;
смещение равно 10, то есть случайная величина, распределённая по экспоненциальному закону, принимает значения, начиная от 10.
SEIZE (ЗАНЯТЬ) Назначение оператора: занятие транзактом прибора.
Формат оператора:
SEIZE A
Значения операндов:
A — идентификатор (число или имя) занимаемого прибора.
Примеры:
SEIZE 4; транзакт пытается занять прибор с номером 4; если прибор занят другим транзактом, то поступивший транзакт помещается в список задержки этого прибора, где находится до момента освобождения прибора, после чего этот транзакт занимает освободившийся прибор и продолжает свое движение к следующему блоку.
SEIZE Pribor_Disk; транзакт пытается занять прибор с именем Pribor_Disk; далее по аналогии с предыдущим примером.
RELEASE (ОСВОБОДИТЬ) Назначение оператора: удаление транзакта из прибора (освобождение прибора).
Формат оператора:
RELEASE A
Значения операндов:
A — идентификатор (число или имя) освобождаемого прибора.
Примеры:
RELEASE 4; транзакт освобождает прибор с номером 4.
RELEASE Pribor_Disk; транзакт освобождает прибор с именем
Pribor_Disk.
Раздел 6. Имитационное моделирование 275
QUEUE (СТАТЬ В ОЧЕРЕДЬ) Назначение оператора: занесение транзакта в очередь (точнее — регистрация статистики очереди, связанная с фиксацией момента поступления транзакта в очередь и увеличением ее длины).
Формат оператора:
QUEUE A,[B]
Значения операндов:
A — идентификатор (число или имя) очереди;
B — количество элементов, на которое должна увеличиться длина очереди; [по умолчанию — один].
Примеры:
QUEUE 3; присоединение транзакта к очереди с номером 3 и увеличение ее длины на 1 (по умолчанию).
QUEUE Jeck, 5;присоединение транзакта к очереди с именем Jeck и увеличение ее длины на 5.
DEPART (ПОКИНУТЬ ОЧЕРЕДЬ) Назначение оператора: удаление транзакта из очереди (точнее — регистрация статистики очереди, связанная с уменьшением ее длины и фиксацией момента удаления транзакта из очереди с целью определения времени ожидания).
Формат оператора:
DEPART A,[B]
Значения операндов:
A — идентификатор (число или имя) очереди;
B — количество элементов, на которое должна уменьшиться длина очереди; [по умолчанию — один].
Примеры:
DEPART 3; удаление транзакта из очереди с номером 3 и уменьшение ее длины на 1 (по умолчанию).
DEPART Jeck, 5;удаление транзакта из очереди с именем Jeck и уменьшение ее длины на 5.
START (НАЧАТЬ) Назначение: запуск процесса моделирования.
Формат команды:
START A,[B],[D]
Значения операндов:
A — начальное значение «счетчика завершений»;
B — признак вывода статистики: значение NP (no printout) блокирует вывод стандартной статистики; необязательный операнд;
D — признак вывода списков: значение 1 включает вывод списков будущих и текущих событий в стандартный отчет; необязательный операнд.
Операнд С остался от предыдущих версий GPSS и не используется в
GPSS World.
Вывод одноканальная модель оператор В ходе выполнения данной лабораторной работы были изучены:
Операторы блоков GPSS World
GENERATE
QUEUE
SEIZE
DEPART
ADVANCE
RELEASE
TERMINATE
TEST
ENTER
LEAVE
Команды GPSS World
START
STORAGE
Так же была рассмотрена простейшая GPSS-модель, имитирующая работу СМО с однородным потоком заявок и позволяющая получить представление об основных операторах GPSS World.
Для модели было представлено подробное описание моделируемой системы с указанием конкретных значений параметров. Далее был изучен текст GPSS-модели и детально рассмотрен каждый оператор.
Приведен и подробно описан стандартный отчет, формируемый автоматически по завершении моделирования и содержащий результаты моделирования.