
- •Решение прикладных задач средствами компьютерного моделирования
- •Содержание
- •Введение
- •1. Компьютерные модели и моделирование
- •1.1. Моделирование как метод познания. Понятие модели и моделирования
- •1.2. Классификация моделей и моделирования
- •1.3 Понятие формализации
- •1.4. Основные этапы построения моделей
- •1.5. Компьютерные модели и моделирование
- •2. Имитационное моделирование непрерывных динамических систем
- •2.1. Программное обеспечение для моделирования непрерывных динамических систем
- •2.2. Основные сведения о mvs
- •2.3. Общая схема моделирования в среде mvs на примере модели «Хищник-жертва» предметной области «Биология»
- •2.4. Задания на моделирование процессов из различных предметных областей в среде mvs.
- •2.5. Модели для самостоятельного исследования
- •3. Имитационное моделирование дискретных динамических систем
- •3.1. Программное обеспечение для моделирования дискретных динамических систем
- •3.2. Система имитационного моделирования gpss
- •Распечатка программы.
- •3.3. Задания для самопроверки
- •3.4. Лабораторный практикум
- •3.5. Варианты заданий для моделирования [33]
- •4. Приложения Приложение 1 Стандартные числовые атрибуты
- •Приложение 2
- •Приложение 3 Стандартный вывод gpss/pc.
- •Приложение 4
- •Приложение 5
- •Приложение 6
- •5. Список литературы
Постановка задачи. В этом разделе делают детальное описание задачи.
Метод построения модели. Здесь описывают и поясняют, каким образом задачу можно интерпретировать в терминах GPSS. Пытаются объяснить, почему избран именно такой подход.
Таблица определений. Таблица определений является списком различных элементов GPSS, использованных в модели, с краткой характеристикой тех частей системы, которые описываются этими элементами. В начале этой таблицы записывается представление транзактов. Далее описываются все прочие элементы модели и части моделируемой системы.
Блок-схема. В определенном смысле блок-схема и есть модель. Блок-схема сопровождается пояснениями (или комментариями).
Распечатка программы.
Выходные данные программы. Распечатка результатов, выдаваемая в процессе моделирования, показывает, чего фактически достиг разработчик своими силами. Она служит основой для обсуждения.
Обсуждение. Здесь обсуждается логика моделирования, использования модели и распечатка результатов.
Пример моделирования системы с одним прибором и очередью.
Постановка задачи. Интервалы прихода клиентов к банкамату распределены равномерно в интервале 18 ± 6 мин. Время использование банкомата клиентом распределено равномерно, 16 ± 4 мин. Клиенты подходят к банкомату, обслуживаются в порядке «первым пришел – первым обслужен» и уходят. Модель на GPSS должна обеспечить сбор статистических данных об очереди. Промоделировать работу банкомата в течение 8 ч. модельного времени.
Метод построения модели. В реальной системе клиенты приходят; если необходимо, ждут своей очереди; занимают банкомат; происходит процесс обслуживания банкоматом клиентов; клиенты уходят. Модель представляет собой непрерывную цепь блоков, соответствующих данной последовательности действий. Период моделирования описывается в сегменте таймера, состоящего из двух блоков.
Таблица определений. Составим таблицу определений для данного примера. Единица времени - 1 мин.
Элементы GPSS |
Назначение |
Транзакты: 1-й сегмент модели 2-й сегмент модели Приборы: BANC Очереди: QBANC |
Клиенты Таймер
Банкомат
Очередь к банкомату |
Блок-схема модели приведена в приложении 2.
Программа на языке GPSS:
;MODEL SEGMENT 1 |
||
GENERATE |
18, 6 |
;Приход клиентов |
QUEUE |
QBANC |
;Присоединение к очереди |
SEIZE |
BANC |
;Занятие банкомата |
DEPART |
QBANC |
;Уход из очереди |
ADVANCE |
16,4 |
;Обслуживание в банкомате |
RELEASE |
BANC |
;Освобождение банкомата |
TERMINATE |
|
;Уход из модели |
;MODEL SEGMENT 2 |
||
GENERATE |
480 |
;Таймер модельного времени |
TERMINATE |
1 |
;Завершение прогона |
START |
1 |
|
Выходные данные:
Результаты моделирования. Прибор BANC использовался в течение 86% времени и был занят обслуживанием 26 раз. Среднее время интервала обслуживания прибора BANC равно 15,93 мин. В очереди никогда не было более одного клиента. Число входов в очередь – 26. Среди них 15 нулевых.
Расшифровка всех позиций выходных данных дана в приложении 3.
Управление временем моделирования. После того, как модель введена, она запускается на выполнение командой
START А, [В, С, D]
Целое число, указываемое в поле A команды START называется счетчиком. С помощью счетчика определяется момент, когда моделирование должно быть прекращено. Это осуществляется следующим образом. В процессе выполнения модели каждый раз, когда какой-либо транзакт уничтожается в блоке TERMINATE, одновременно с этим GPSS вычитает из счетчика команды START число, заданное в поле A этого блока TERMINATE. Процесс моделирования прекращается в тот момент, когда значение счетчика команды START становится нулевым или отрицательным. Одновременно с остановом модели начинается вывод всей собранной статистики на печать, точнее - вывод в текстовый файл с именем REPORT.GPS.
Такой механизм управления временем моделирования позволяет задавать остановку модели по достижению заданного числового момента времени или же по заданному логическому условию, возникшему в модели.
Примеры:
START 50 - означает закончить моделирование после прохождения через модель 50 транзактов;
START 200, NP – для 200 транзактов прогон без статистики ;
START 3,,1 - выдача статистики трижды, через каждые А транзактов, указанных в блоке GENERATE А.
Поле В может быть использовано для блокирования выдачи статистики в конце счета. Для этого в поле В записывают мнемоническое обозначение NP.
Поле С позволяет задавать интервалы промежуточной выдачи статистик.
Если в поле D указано значение «1», это является указанием на то, что при выдаче статистик нужно распечатывать списки текущих и будущих событий, список прерываний, списки пользователя. В противном случае поле оставляют незаполненным.
Изменение маршрута транзактов. Блок TRANSFER (ПЕРЕДАТЬ). Обычно транзакты последовательно проходят по блокам задающим структуру модели, однако возможны ситуации когда требуется направить транзакт к вполне определенному блоку, расположенному в произвольном месте структуры.
Блок TRANSFER используется для того чтобы направить входящее в него сообщение к любому блоку. Передача может быть осуществлена логически, статистически, условно и безусловно. Вид передачи определяется мнемоническими обозначениями указанными в операнде А блока TRАNSFER.
При безусловной передаче указывается один блок, а при условной – два пути продвижения транзактов. Выбор того или иного пути определяется режимом работы блока.
Вид и общая форма записи блока:
TRANSFER А, В, С
а) Безусловный переход. Операнд А блока TRANSFER отсутствует, все транзакты, входящие в этот блок, будут передаваться в блок, имя которого указано в операнде В (наличие этого операнда обязательно). TRANSFER, NEXT означает, что транзакты всегда направляются в блок с именем NEXT.
б) Условный переход. Возможен выбор одного из двух блоков (BOTH) или более двух (ALL). Ограничимся рассмотрением более распространенного первого случая. Режим BOTH задается в операнде А блока TRANSFER. В блоке осуществляется выбор одного из двух блоков, указанных в операндах В и С. Порядок выбора принят следующий. Сначала транзакт пытается войти в блок, заданный в операнде В, если это невозможно, то пытается войти в блок, указанный в операнде С, причем эти попытки происходят в один момент модельного времени. Если и вторая попытка безрезультатна, то транзакт задерживается в блоке TRANSFER до следующего момента времени. Затем опрос блоков повторяется, пока выход не будет найден.
Если блок TRANSFER в режиме BOTH не имеет операнда В, то это означает переход к блоку, следующему за ним.
Следует помнить, что режим BOTH существенно увеличивает время счета модели. Например, запись TRANSFER BOTH, NEXT, SAM означает, что транзакт попытается войти сначала в блок с именем NEXT, а если это не удастся, то в блок SAM.
в) Статистический переход. Если в операнде А блока TRANSFER записана десятичная дробь, то производится случайный выбор между блоками, указанными в операндах В и С. Вероятность выбора блока С задается дробью. Например, запись TRANSFER 0.25, ROB, IRA означает, что с вероятностью 0,25 (25% всех транзактов) сообщение будет направленно в блок IRA. Остальные 75% попадут в блок ROB.
Для каждого транзакта выбирается только один из путей и только в момент входа в блок TRANSFER.
Отсутствие операнда В интерпретируется аналогично случаю условного перехода.
Пример моделирования системы с одним прибором, очередью и обратной связью.
Постановка задачи. Производство деталей определенного вида включает длительный процесс сборки, заканчивающийся коротким периодом обжига в печию поскольку содержание печи обходится довольнодорого, несколько сборщиков используют одну печь, в которой одновременно можно обжигать только одну деталь. Сборщик не может начать новую сборку, пока не вытащит из печи предыдущую деталь.
Таким образом, сборщик работает в следующем режиме.
Собирает следующую деталь.
Ожидает возможности использования печи по принципу «первым пришел – первым обслужен».
Использует печь.
Возвращается к п. 1.
Время, необходимое на сборку - 30±5 мин., на обжиг - 8±2 мин.
Стоимость операций:
Зарплата сборщика |
3,75 доллара в час |
Стоимость печи |
80 долларов за 8 часовой рабочий день. |
Цена материала |
2 доллара за одну деталь |
Стоимость готового изделия |
7 долларов за деталь |
Необходимо построить на GPSS модель описанного процесса. Имея эту модель, следует определить оптимальное число сборщиков, использующих одну печь. Под оптимальным понимают такое число, которое дает максимальную прибыль. Определение надо сделать при моделировании в течение 40 ч модельного времени.
Метод построения модели. Для моделирования на GPSS необходимо определить: 1) условия работы моделируемой системы; 2) какие элементы GPSS надо использовать для удовлетворения условий модели.
В данном случае есть два вида ограничивающих условий. Во-первых, имеется лишь одна печь. Во-вторых, существует некоторое фиксированное число сборщиков, работающих в системе. Естественно, для моделирования печи использовать понятие “прибор”. Также естественно отождествить сборщиков с транзактами. Тогда можно считать, что сборщики циркулируют в системе. Аналогично тому, как они периодически осуществляют сборку и обжиг, транзакты циркулируют в GPSS-модели системы.
В реальной системе, после того как сборщик вынимает из печи обожженную деталь, он возвращается и начинает новый этап сборки. В модели, после того как транзакт завершает использование прибора, моделирующего печь, он должен быть возвращен назад посредством блока TRANSFER в блок следующей сборки. Для того чтобы ограничить общее число транзактов, циркулирующих в модели, необходимо использовать операнд D блока GENERATE, с помощью которого можно задать желаемое число транзактов.
Для того чтобы вычислить прибыль, соответствующую заданному числу сборщиков, необходимо знать, сколько готовых деталей они сделали в течении моделируемого периода. Число использований печи в точности совпадает с этим значением.
Таблица определений. Единица времени – 1 мин.
Элемент GPSS |
Назначение |
Транзакты: 1-й сегмент модели 2-й сегмент модели Приборы: OVEN |
Сборщики Таймер
Печь |
Программа на языке GPSS:
|
GENERATE |
,,,4 |
BACK1 |
ADVANCE |
30, 5 |
|
SEIZE |
OVER |
|
ADVANCE |
8, 2 |
|
RELEASE |
OVER |
|
TRANSFER |
,BACK1 |
|
GENERATE |
2400 |
|
TERMINATE |
1 |
Выходные данные:
Отчет соответсвует работе 4 сборщиков.
Результаты моделирования. При участии 4 сборщиков было выпущено 239 деталей, 5 сборщиков – 285 деталей, 6 сборщиков – 299 детали. Нагрузка печи при этом соответственно 79,8%, 94,7% и 98,9%. Значения прибыли для этих трех случаев соответственно 175, 245 и 170 долларов. Т.е. оптимальное число сборщиков – 5.
Многоканальные устройства. Блоки ENTER (ВОЙТИ) и LEAVE (ВЫЙТИ). Для моделирования нескольких параллельно работающих однородных обслуживающих устройств в GPSS введено понятие многоканального устройства (памяти). Примерами многоканальных устройств являются контролеры в театре, буксиры, вводящие и выводящие корабли в порту, места на автостоянке, бензоколонки на автозаправочной станции и т.п. Многоканальные устройства характеризуются определенной емкостью, т.е. числом каналов для параллельного обслуживания транзактов.
Блоками, соответствующими состояниям «занято» и «освобождено», являются ENTER (войти) и LEAVE (выйти). Операнд А в этих блоках используется для указания имени соответствующего устройства.
Вид и форма записи блоков:
ENTER А [,В] LEAVE А [,В]
Когда транзакт входит в блок ENTER, выполняются следующие действия: «счетчик входов» многоканального устройства увеличивается на единицу; «текущее содержимое» многоканального устройства увеличивается на единицу; «доступная емкость» устройства уменьшается на единицу.
При входе транзакта в блок LEAVE выполняются следующие действия: «текущее содержимое» многоканального устройства уменьшается на единицу; «доступная емкость» устройства увеличивается на единицу.
В конце моделирования автоматически распечатывается статистика по «счетчику входов», «текущему и максимальному содержимому», указывается значение «среднего времени пребывания» в многоканальном устройстве.
В блоках ENTER и LEAVE возможно использование операнда В, который задает число каналов, занимаемых или освобождаемых одним сообщением. По умолчанию значение В равно 1.
Различие между прибором и многоканальным устройством, имеющим емкость 1, заключается в следующем.
Прибор может не только «заниматься», но и «захватываться», в то время как единственный элемент многоканального устройства может только заниматься. Захват означает, что если даже прибор занят текущим обслуживанием, он немедленно может быть предоставлен по соответствующему требованию.
Прибор может быть освобожден только тем транзактом, который его занял. Если транзакт пытается войти в блок RELEASE без предварительного входа в блок SEIZE того же прибора, возникает ошибка. В противоположность этому, любой транзакт может войти в блок LEAVE без того, чтобы перед этим войти в блок ENTER соответствующего многоканального устройства. Ошибка возникает, когда из «текущего содержимого» вычитается величина, приводящая к отрицательному значению содержимого.
Для определения емкости многоканальных устройств служит команда STORAGE, операнд А которой задает число каналов (ёмкость).
Форма записи:
1). Поле имени Поле операции Поле операндов
«имя» STORAGE S
Примеры:
7 STORAGE 5 – многоканальное устройство 7 имеет емкость 5.
Mary STORAGE 2 - многоканальное устройство Mary имеет емкость 2.
2) допускается определение двух или более многоканальных устройств:
Поле имени Поле операции Поле операндов
Не используется STORAGE S имя 1, с1 / … /S имя n, с n
Здесь «имя» i – символическое или числовое имя соответствующего многоканального устройства, с i – его емкость.
Примеры:
STORAGE S5, 2 / S1, 10/ S8, 6
STORAGE S4, 5 / S$TUGS, 3/ S$SURVS, 4/ S2, 12
STORAGE S4-S6, 5/ S$MEN, 9
Пример моделирования системы с несколькими приборами и одной очередью.
Постановка задачи. На трикотажной фабрике 50 швейных машин работают по 8 часов в день и по 5 дней в неделю. В случае поломки машины ее заменяют резервной либо сразу, либо по мере появления. Сломанную машину отправляют в ремонт, восстанавливают и возвращают в качестве резервной. На ремонт уходит примерно 7 ±3 часа, распределение равномерное. Время наработки до отказа машины распределено равномерно и составляет 157 ± 25 часов. Смоделировать работу этой фабрики.
Метод построения модели. В системе существует два ограничения: максимальное число швейных машин, одновременно находящихся в производстве и общее число машин, циркулирующих в системе. Для моделирования первого ограничения будем использовать многоканальное устройство, второе ограничение будем моделировать транзактами. Швейные машины являются динамическими объектами, перемещаемыми из одного места в другое в процессе их циркулирования в системе.
Рассмотрим состояния определенной машины в процессе полного оборота в цикле системы. Предположим, что машина в настоящий момент находится в резерве. Тогда многоканальное устройство NOWON (now on, т.е. в работе), используемое для моделирования находящихся в работе машин, заполнено, и резервные машины не могут войти в многоканальное устройство. Проходя через блок ENTER в блок ADVANCE, транзакт моделирует время работы этой машины до тех пор, пока она не сломается.
После того, как машина вышла из строя, транзакт покидает многоканальное устройство NOWON и тем самым открывает возможность другой резервной машине войти в работу. Теперь транзакт ожидает (если в этом есть необходимость) входа в многоканальное устройство MEN (рабочие мастерской). Войдя в это многоканальное устройство, транзакт играет роль ремонтируемой машины. Когда он уходит из этого многоканального устройства, тем самым освобождая рабочего, последний может приняться за ремонт следующей машины. Тем временем транзакт вновь возвращается в ту точку модели, в которой он снова начинает делать попытки войти в многоканальное устройство NOWON.
Общее число машин, циркулирующих в системе, равно 50 собственным машинам плюс некоторое число арендуемых для резерва. Это число следует задавать до начала прогона модели с использованием ограничителя блока GENERATE. Единственным недостающим элементом модели теперь является таймер.
Многоканальное устройство NOWON можно рассматривать как 50 операторов швейных машин. Эта точка зрения отвечает тому ограничению, что одновременно не могут работать более 50 швейных машин.
Таблица определений: Единица времени 1 ч.
Элементы GPSS |
Назначение |
Транзакты: 1-й сегмент модели 2-й сегмент модели
|
Швейные машины Таймер |
Многоканальные устройства: MEN NOWON |
Рабочие мастерской Накопитель, емкостью 50 |
Блок схема приведена в приложении 4.
Программа на языке GPSS:
;SEGMENT 1 - VEHICLE |
||
|
||
NOWON |
STORAGE |
50 |
MEN |
STORAGE |
3 |
|
GENERATE |
,,,53 |
BCK |
ENTER |
NOWON |
|
ADVANCE |
157,25 |
|
LEAVE |
NOWON |
|
ENTER |
MEN |
|
ADVANCE |
7,3 |
|
LEAVE |
MEN |
|
TRANSFER |
,BCK |
|
|
|
;SEGMENT 2 – TIMER |
||
|
||
|
GENERATE |
6240 |
|
TERMINATE |
1 |
|
START |
1 |
Выходные данные:
Результаты моделирования.
Емкость многоканального прибора MEN равна 3, в среднем эти три прибора были заняты на 72,4%, общее число занятий приборов было 1936, в процессе моделирования были моменты, когда все три прибора были в состоянии занятости одновременно.
Для многоканального прибора NOWON можно отметить, что его емкость равна 50, в среднем эти приборы были заняты в течение 98,4%, общее число занятий приборов было 1986, в процессе моделирования также встречались моменты, когда все приборы были заняты одновременно.
Использование распределений вероятностей. Очень часто интервалы прихода требований и времени их обслуживания оказываются распределенными неравномерно. Все модели, разработанные для равномерных распределений могут быть использованы и для неравномерных распределений интервалов времени прихода требований и их обслуживания, если в них внести следующие изменения:
определить функции, описывающие каждое из неравномерных распределений;
в блоках GENERATE и ADVANCE операнды А и В, описывающие равномерные распределения должны быть заменены ссылками на соответствующие функции.
Функции могут быть дискретными и непрерывными.
Определение дискретной функции. Для определения дискретной функции GPSS должна задаваться следующая информация.
Функции должно быть присвоено имя (символическое или числовое).
Необходимо задать аргумент функции. Аргумент называет источник случайных чисел, используемый для розыгрыша в соответствии с распределением, заданным функцией. Аргумент задается в виде RNj, где j = 1, 2, 3, 4, 5, 6, 7 или 100. Выбор конкретного источника случайных чисел остается за пользователем.
В GPSS источниками равномерно распределенных случайных чисел являются значения генераторов RN1, RN2,…, RN100.
Все генераторы случайных чисел GPSS используются без изменений и все выдают одну и ту же последовательность случайных чисел.
Номер |
RN1(или RN2, …, или RN100) |
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. |
0,000573 0,510675 0,870337 0,999177 0,778871 0,194160 0,790719 0,014667 0,043340 0,645420 |
Если необходимо задать какую-то функцию, описывающую некоторое распределение, определяется (в виде аргумента функции) один из восьми генераторов случайных чисел используемый при розыгрыше случайных чисел.
Необходимо задать число различных значений, которые может принимать случайная переменная.
Необходимо задать сами значения переменной и соответствующие значения функции распределения (суммарной частоты).
Формат определения функции:
Поле |
Информация, задаваемая в поле |
Имя Операция Операнды: А В
|
Имя (символическое или числовое) функции Записывается слово FUNCTION
RNj, где j = 1, 2, 3, 4, 5, 6, 7 или 8 Dn, где n - число различных значений, получаемых случайной переменной |
Далее следуют значения случайной переменной и соответствующие им значения функции распределения. При этом используется следующая форма записи: X1, Y1 / X2, Y2 /…/ Xn, Yn, где Xi- это i-я суммарная частота, a Yi - соответствующее значение случайной переменной.
Пример. Предположим, что случайная переменная может получать значения 2, 5, 8, 9, 12 с относительной частотой 0.15, 0.20, 0.25, 0.22, 0.18. Запишем эту информацию в таблицу.
Значения случайной переменной |
Относительная частота |
Суммарная частота |
Диапазон |
Интервал |
2 |
0.15 |
0.15 |
0.0÷0.15 |
1 |
5 |
0.20 |
0.35 |
0.15÷0.35 |
2 |
8 |
0.25 |
0.50 |
0.35÷0.50 |
3 |
9 |
0.22 |
0.72 |
0.50÷0.72 |
4 |
12 |
0.18 |
1.00 |
0.72÷1.0 |
5 |
Функция GPSS, которую можно использовать для розыгрыша чисел по распределению, заданному в таблице можно оформить так:
PRIM FUNCTION RN4, D5
0.15,2/0.35,5 /0.6,8/0.82,9/1,12
Графическая интерпретация данной функции представляет собой серию горизонтальных ступенек.
Промежуточные ступеньки «замкнуты» справа, но «открыты» слева. Первая и последняя ступеньки отличаются от промежуточных. Первая ступенька слева замкнута, т.е. значение RN4, равное 0,000000, включается в ступеньку. Аналогично, последняя ступенька справа открыта. Это происходит потому, что RN4 не может иметь значение 1.0. Последняя ступенька, следовательно, продолжается от 0,82 ± до 1.0 - т. е. от 0,810001 до 0,999999 включительно. По сравнению с другими видами неточностей, свойственных вероятностному моделированию, описанная неточность не так уж заметна.
В случае неравномерного распределения интервалов приходов через блок GENERATE необходимо выполнить два действия:
Определить функцию, описывающую соответствующее распределение интервалов времени.
В качестве операнда А блока GENERATE определить функцию, а операнд В либо определить по умолчанию, либо задать равным нулю.
Если имя числовое, то ссылка на функцию записывается как FNj где j - номер функции. Если имя символическое, ссылка на функцию записывается в виде FN$ имя. Например, FN16, FN$ PRIM.
Определение непрерывных функций. В начальной фазе непрерывная функция вычисляется так же, как и дискретная. При обращении к функции разыгрывается случайное число, которое далее используется как аргумент функции. Затем просматривается таблица для определения интервала значений суммарной вероятности, на который выпало случайное число. Если функция была определена как дискретная, берут второй элемент соответствующей пары, и его значение считается значением функции. Если функция определена как непрерывная, выполняется линейная интерполяция для пары точек, находящихся по краям того интервала значений суммарной вероятности, на который указало случайное число, являющееся аргументом. Результат интерполяции и .является значением функции.
Графически непрерывная функция состоит из прямых отрезков, представляя собой ломаную линию.
Непрерывная функция определяется с помощью символа С (в отличие от символа D для дискретных функций), записываемого в качестве первого символа операнда
Ввиду того, что непрерывная функция задается с помощью линейной интерполяции, для всех точек на одном интервале значений суммарной частоты существует одинаковая вероятность их использования. Это делает процедуру розыгрыша случайной величины при непрерывном равномерном распределении чрезвычайно простой. Предположим, что некоторая случайная переменная распределена равномерно и является непрерывной на интервале от 2 до 6. Значение 2 включено в интервал, 6 – нет. Вероятность того, что значение случайной переменной меньше 2, равна нулю, а вероятность того, что она меньше 6, равна единице. Эти два значения суммарной вероятности используют для определения непрерывной функции
GOOD FUNCTION RN2,C2
0.2/1,6
Графическая интерпретация функции приведена на рисунке.
Отметим, что график представляет собой прямую, соединяющую две точки, определяемые парами чисел (0, 2) и (1, 6). При обращении к функции используется генератор RN2, значения которого применяют при интерполяции.
Например, если значением RN2 является 0,650000, то значением функции будет 4,60000. Если значение RN2 является наименьшим из возможных (0,000000), то значением функции будет число 2. Если значение RN2 является наибольшим из возможных (0,999999), значением функции будет 5,99999 (в случае записи с точностью до шести знаков).
Предположим, что функция используется в качестве операнда А блока GENERATE. Значение функции распределено равномерно между точками 2 и 6. Значение 6 функция никогда не получает т.к. генератор RN2 никогда не получает значения, большего чем 0,999999. При этом значении RN2, значение функции равно 5,99999. Таким образом, наибольшим значением функции является число 5.
Моделирование пуассоновских потоков Неравномерный поток событий, наступающих одно за другим в случайные моменты времени, является Пуассоновским простейшим, если вероятность появления события К за время Т определяется законом Пуассона.
где
– вероятность того, что ровно
требований придет за время
;
– средняя интенсивность приходов;
– основание натурального логарифма.
При моделировании пуассоновского входящего потока нет необходимости в определении вероятностей . Достаточно иметь лишь значения интервалов времени поступления требований. Расчет значения времени прихода следующего транзакта в блок GENERATE производится посредством сложения текущего значения таймера и разыгранной по распределению интервалов времени величины. Уравнение приведенное выше может быть преобразовано таким образом, чтобы можно выло выразить распределение интервалов времени. Результатом является экспоненциальное распределение. Когда интенсивность прихода распределена по закону Пуассона, соответствующие значения интервалов времени поступления распределены по экспоненциальному закону. Для экспоненциального распределения в системе GPSS можно воспользоваться функцией вида:
XPDIS FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/
.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/
.99,4.6/.995,5.3/.998,6.2/.999,7.0/.9997,8.0
Рассмотрим систему, состоящую из одного обслуживающего прибора с многомерным потоком заявок на входе. Преимущество при обслуживании заявок одного потока над заявками другого называется приоритетом. Различают три стратегии приоритетного обслуживания: бесприоритетная, с относительными приоритетами и абсолютными приоритетами.
При бесприоритетном (или равном у всех заявок приоритетом) обслуживании заявки всех потоков поступают в конец общей очереди. После завершения обслуживания заявки в приборе из очереди выбирается заявка, поступившая раньше других (первая в очереди).
Если после завершения обслуживания очередной заявки следующей выбирается заявка с самым высоким приоритетом (приоритет учитывается только в момент загрузки обслуживающего аппарата), соответствующая дисциплина обслуживания называется с относительным приоритетом.
При обслуживании заявок с абсолютными приоритетами приоритет учитывается сразу в момент поступления заявки. Если на обслуживании находится заявка с более низким приоритетом, она снимается с обслуживания, а прибор занимает поступившая заявка. Заявка, обслуживание которой было прервано, может быть затем дообслужена либо с точки прерывания либо с начала, когда будут обслужены заявки с более высокими приоритетами.
Стандартные числовые атрибуты. Атрибуты системы - это параметры, которые описывают состояние модели. Такие количественные показатели, как «текущее содержимое очереди 5», «число единиц времени, в течение которых занят прибор» являются типичными системными атрибутами. Такие атрибуты называются стандартными числовыми атрибутами (СЧА). Их значения меняются в процессе моделирования и доступны пользователю. Доступ осуществляется при использовании специальных наименований этих атрибутов. При использовании этих наименований в качестве операндов, значениями последних становятся соответствующие текущие значения атрибутов. СЧА для различных типов объектов приведены в приложении 1.
Имя СЧА состоит из двух частей. Первая – групповое имя. Оно указывает одновременно и тип объекта и тип информации. Вторая часть идентифицирует конкретно члена группы (числовое или символьное). Примеры СЧА:
R3 – число свободных единиц памяти номер 2;
SM$ART – максимальное содержимое памяти, имеющей метку ART;
F27 – состояние устройства 27; F27 равно нулю, если устройство 27 свободно и единице в остальных случаях;
Р4 – содержимое третьего параметра транзакта;
Р*3 – содержимое того параметра транзакта, номер которого записан в третьем параметре этого параметра;
PR – приоритет транзакта;
С1 – текущее значение модельного времени;
W55 – число транзактов, находящихся в данный момент в 55 -ом блоке модели;
W$ABC – число транзактов в блоке, имеющем метку АВС;
Q1 – длина очереди номер 1;
Наиболее очевидным применением СЧА является их использование в качестве операндов блоков модели.
Например: ENTER 3, R3; ADVANCE FC$ART; DEPART 7,QC7.
Менее очевидным является использование СЧА в качестве аргумента функций. Рассмотрим пример использования счетчика блока в качестве аргумента дискретной функции.
MAP FUNCTION N$ MARY, D4
5, 1 / 8, 2/ 10, 5/ 15, 7
Аргументом этой функции является счетчик входов в блок с именем MARY. При обращении к функции в процессе моделирования в качестве независимой переменной используют этот счетчик. Значение же функции вычисляется обычным образом. При этом нужно помнить, что значениями аргумента в этом случае должны быть целые числа. Кроме того, если аргумент функции выходит за пределы, описанные при определении функции, значение принимается равным ближайшим описанным значениям.
Функции, используемые в качестве аргумента СЧА, могут быть дискретными и непрерывными. Изменение функции с дискретной на непрерывную обычное.
Проверка числовых выражений. Блок TEST (ПРОВЕРИТЬ). Соотношение между двумя стандартными числовыми атрибутами может быть исследовано с помощью блока TEST.
Общий вид и форма записи блока:
TEST Х А, В, С
А – имя первого стандартного числового атрибута;
В – имя второго стандартного числового атрибута;
Х – вспомогательный оператор, представляющий собой оператор отношения, используемый при проверке. Он может принимать следующие значения:
Оператор отношения |
Вопрос, подразумеваемый в контексте блока TEST |
G |
A больше B? |
GE |
A больше или равно B? |
E |
A равно B? |
NE |
A не равно B? |
LE |
A меньше или равно B? |
L |
A меньше B? |
С – необязательный параметр; имя блока, в который переходит проверяющий транзакт, если ответ на вопрос, подразумеваемый оператором отношения, отрицательный.
Пример моделирования системы с входящим пуассоновским потоком.
Постановка задачи. В системе массового обслуживания с одним прибором и очередью имеет место пуассоновский входной поток с интенсивностью 12 приходов в час. Обслуживание является экспоненциальным, но среднее время обслуживания зависит от числа требований, находящихся в очереди к прибору. Эта зависимость представлена в таблице.
Длина очереди |
Среднее время обслуживания, мин. |
0 |
5,5 |
1 или 2 |
5 |
3,4 или 5 |
4,5 |
6 и более |
4,0 |
Построить модель и оценить фактическое среднее время обслуживания. Справится ли прибор с нагрузкой при увеличении интенсивности входящего потока на один приход в час или очередь будет бесконечно увеличиваться.
Метод построения модели. Последовательность действий для моделирования описанной системы будет такой же как и в случае равномерного распределения. Единственным добавлением будет использование в модели дискретной функции, в которой текущее содержимое очереди является аргументом.
Таблица определений. Единица времени – 1 сек.
Элементы GPSS |
Назначение |
Транзакты |
Клиенты |
Приборы SURVR |
Обслуживающий прибор |
Функции MEAN |
Функция, определяющая среднее время обслуживания в зависимости от длины очереди |
Очередь WAIT |
Регистратор очереди для сбора статистики о состоянии очереди |
Блок – схема приведена в приложении 5.
Программа на GPSS.
MEAN |
FUNCTION |
Q$WAIT,D4 |
0,330/2,300/5,270/6,240 |
||
XPDIS |
FUNCTION |
RN1,C24 |
0,0/.1,.104/.2,.222/.3,.335/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8 |
||
|
GENERATE |
300,FN$XPDIS |
|
QUEUE |
WAIT |
|
SEIZE |
SURVR |
|
DEPART |
WAIT |
|
ADVANCE |
FN$MEAN,FN$XPDIS |
|
RELEASE |
SURVR |
|
TERMINATE |
1 |
|
START |
500,,100 |
Результаты моделирования.
Использование команды START 500,,100 позволяет распечатать статистические данные после завершения 100, 200, 300, 400, 500-го обслуживания. Результаты моделирования приведены в таблице.
Число завершенных обслуживаний |
Нагрузка прибора |
Среднее время одного обслуживания |
Средняя длина очереди |
Процент нулевых входов |
100 |
0, 996 |
313 |
4,6 |
1,9 |
200 |
0,945 |
296 |
5,0 |
6,4 |
300 |
0,905 |
291 |
5,3 |
8,7 |
400 |
0,899 |
284 |
4,5 |
8,9 |
500 |
0,902 |
292 |
4,3 |
9,2 |
Среднее время обслуживания равно примерно 290 с., при этом прибор имеет нагрузку около 90 %, а в очереди находится в среднем четыре требования. Около 9% требований были обслужены без ожидания. После уменьшения среднего интервала обслуживания с 300 до 277 получились следующие результаты:
Число завершенных обслуживаний |
Нагрузка прибора |
Среднее время одного обслуживания |
Средняя длина очереди |
Процент нулевых входов |
100 |
0, 999 |
276 |
12,4 |
0,9 |
200 |
0,993 |
277 |
11,6 |
0,9 |
300 |
0,989 |
267 |
10,0 |
1,3 |
400 |
0,955 |
266 |
7,8 |
3,9 |
500 |
0,964 |
270 |
8,3 |
3,0 |
После 500 завершений обслуживания нагрузка прибора достигла более 96%, а в очереди находилось в среднем более восьми требований. Можно сделать вывод, что изменение интенсивности приходов от 12 до 13 в час (увеличение примерно на 17%) почти удвоило средний размер очереди. В то же время число требований, обслуженных без ожидания, уменьшилось с девяти до трех.
Изменение значений параметров. Блок ASSIGN (НАЗНАЧИТЬ). Транзакты могут иметь некоторые числовые характеристики. Одной из них является уровень приоритета, кроме того, каждый транзакт снабжается некоторым числом параметров. Транзакт может иметь до 1020 различных параметров. Интерпретация смысла параметров произвольная. В момент генерации транзакта все его параметры нулевые.
Значения параметров транзакта могут назначаться и изменяться при входе транзакта в блок ASSIGN.
Общий вид и форма записи блока:
AGGISN A, B, C, D
А – номер модифицируемого параметра.
В – величина, используемая для модификации.
Блок AGGISN может использоваться в разных режимах.
а) В режиме замещения. А и В задаются непосредственным образом, т.е. в виде констант или косвенным образом, т.е. через стандартные числовые атрибуты. В этом режиме старое значение параметра замещается новым, независимо от того, каким было старое значение.
Примеры:
AGGISN 5, 45 - значение пятого параметра становится равным 45.
AGGISN P3, FR$BARGE - если Р3=5, то величина FR$BARGE становится значением P5. Если Р3=22, то величина FR$BARGE значением параметра 22, т.е. Р22 и т.д.
б) В режиме приращения и вычитания. В режиме приращения новое значение параметра вычисляется путем сложения значения операнда В со старым значением параметра. В режиме вычитания новое значение параметра вычисляется путем вычитания из старого значения. Режим отмечается указанием знаков «+» или «-» непосредственно после операнда А.
Примеры:
ASSIGN 4+, Q5 - параметр 4 увеличивается на значение , равное текущему содержанию очереди 5.
ASSIGN P2-,7 - из значения параметра, номер которого задан параметром Р2 вычитается 7.
Операнд С задает номер функции. Интерпретатор при выполнении подпрограммы блока ASSIGN в случае использования операнда С выполняет следующее:
Высчитывает значение операнда С.
Рассчитывает значение функции, номер которой соответствует операнду С.
Полное значение функции перемножает с содержанием операнда В.
Целую часть произведения использует для замены, приращения или вычитания из параметра заданного операндом А.
Функция, используемая в качестве операнда не должна иметь символического имени.
Пример. ASSIGN 3+, 5, 7 – рассчитывается значение функции 7 (например, 1,94) 1,94•5=9,70. |NT (9,70)|=9, добавляется к параметру 3 вошедшего транзакта.
В поле D задается тип изменяемого переметра. Допускаются следующие записи: PH, PF, PB, PL, соответствующие параметрам формата: «полуслово», «слово», «байт» и «плавающая точка». Усли модификатор-функция не задан, то вместо поля D можно использовать поле С.
Пример. ASSIGN 1+, 45, РВ – текущему значению 1-го параметра формата «байт» прибавить число 45.
Пример моделирования системы с изменяющимися значениями параметров.
Постановка задачи. В издательской системе все компьютеры подключены к локальной сети. К сети подключены три принтера: лазерный черно-белый со скоростью 8 стр./мин.; струйный цветной со скоростью 4 стр./мин.; фотопринтер со скоростью 1 стр./мин. На печать передаются три вида документов:
Содержащие только черно-белый текст и графику (могут распечатываться на первом или втором принтере, поступают через 3±2 мин, размер их - 20±10 стр.);
Содержащие черно-белый текст и цветную графику (могут распечатываться только на втором принтере, поступают через 4±2 мин, размер их - 13±5 стр.);
Содержащие цветную графику или фотографии (могут распечатываться на втором или третьем принтере, поступают через 5±4 мин, размер их - 6±2 стр.)
Смоделировать одну рабочую неделю (пять дней по 8 часов). Выяснить среднюю загруженность каждого принтера и необходимость приобретения еще одного принтера второго типа.
Таблица определений. Единица времени – 7,5 с. (0,125 мин.)
Элементы GPSS |
Назначение |
Транзакты 1 сегмент 2 сегмент 3 сегмент 4 сегмент |
Документы первого типа Документы второго типа Документы третьего типа Таймер |
Приборы PRINT1 PRINT2 PRINT3 |
Первый принтер Второй принтер Третий принтер |
Функции DOC1 DOC2 DOC3 |
Функции, описывающие объем документов 1, 2, 3
|
Очередь OCH |
Общая очередь |
Программа на языке GPSS.
-
DOC1 FUNCTION RN1, C21
0.0,10/0.05,11/0.1,12/0.15,13/0.2,14/0.25,15/0.3,16/0.35,17/0.4,18/0.45,19/0.5,20/0.55,21/0.6,22/0.65,23/0.7,24/0.75,25/0.8,26/0.85,27/0.9,28/0.95,29/1,30
DOC2 FUNCTION RN1, C11
0.0,8/0.1,9/0.2,10/0.3,11/0.4,12/0.5,13/0.6,14/0.7,15/0.8,16/0.9,17/1,18
DOC3 FUNCTION RN1, C5
0.0,4/0.25,5/0.5,6/0.75,7/1,8
GENERATE
24,16
QUEUE
OCH
ASSIGN
1,FN$DOC1
TRANSFER
BOTH,,MET2
SEIZE
PRINT1
DEPART
OCH
NEXT1
ADVANCE
1
ASSIGN
1-,1
TEST E
P1,0,NEXT1
RELEASE
PRINT1
TERMINATE
GENERATE
32,16
QUEUE
OCH
ASSIGN
1,FN$DOC2
MET2
SEIZE
PRINT2
DEPART
OCH
NEXT2
ADVANCE
2
ASSIGN
1-,1
TEST E
P1,0,NEXT2
RELEASE
PRINT2
TERMINATE
GENERATE
40,32
QUEUE
OCH
ASSIGN
1,FN$DOC3
TRANSFER
BOTH,,MET2
SEIZE
PRINT3
DEPART
OCH
NEXT3
ADVANCE
8
ASSIGN
1-,1
TEST E
P1,0,NEXT3
RELEASE
PRINT3
TERMINATE
GENERATE
19200
TERMINATE
1
Организация циклов
Эквивалентом двухблочной последовательности, позволяющей организовать повторения в модели является блок организации цикла.
С помощью параметров транзактов в программе можно организовать циклы. Для этого используется блок LOOP (ОРГАНИЗОВАТЬ ЦИКЛ). Он управляет количеством повторных прохождений транзактом определенной последовательности блоков модели.
Вид и общая форма записи блока:
LOOP А[,B]
А – параметр транзакта, используемый для организации цикла.
В – метка начального блока цикла.
Когда транзакт входит в блок, параметр, указанный в операнде А, уменьшается на 1, а затем проверяется его значение на равенство 0. Если значение параметра равно 0, транзакт переходит в следующий блок.
Арифметические переменные. Арифметическая переменная в GPSS является СЧА, определяемым пользователем. Обозначение арифметической переменной имеет вид V»имя числовое» или V$»имя символьное».
Величиной арифметической переменной является величина заданного пользователем арифметического выражения, определяющего эту переменную. Арифметическое выражение - набор данных, связанных арифметическими операциями. В арифметическом выражении можно использовать следующие знаки арифметических операций: + - сложить, - вычесть, # - умножить, / - разделить, @ - взять остаток от деления, ^ - возведение в степень.
Арифметическая переменная задается с помощью специальной команды, следующего формата.
Поле имени Поле операции Поле операндов
«имя» VARIABLE «арифметическое выражение»
или
Поле имени Поле операции Поле операндов
«имя» FVARIABLE «арифметическое выражение»
Арифметическое выражение составляется из СЧА, знаков арифметических операций и круглых скобок.
Примеры.
Пусть переменная V$SUM описана строкой
SUM VARIABLE S1+S2.
Это значит, что значение V$SUM будет определяться как Суммарное содержимое первой и второй памяти.
Если переменную V$CAP описать в виде CAP VARIABLE R*8+5*8, то её значением будет сумма числа свободных и числа занятых единиц той памяти, номер которой записан в восьмом параметре транзакта.
При описании арифметических переменных необходимо иметь в виду следующее.
Равноприоритетные операции в арифметическом выражении при отсутствии скобок выполняются слева направо. Операции #, /, @ имеют приоритет по отношению к операциям +, -.
Если в строке описания арифметической переменной в поле операции записано VARIABLE, переменная считается целой, в случае записи FVARIABLE - вещественной. При вычислении целой переменной от результатов всех промежуточных операций берется целая часть. При вычислении вещественной переменной этого не делается. Однако окончательный результат округляется в меньшую сторону, как в целой, так и в вещественной переменной. Например, если в модель включены строки
Синтаксис арифметических выражений соответствует синтаксису, принятому в языках программирования высокого уровня. Например, аргументы стандартных функций типа SIN, EXP,SQR, и т.п. должны заключаться в скобки.
Булевские переменные. Булевской переменной является СЧА, определяемый пользователем. Обозначение булевской переменной имеет вид BV»имя числовое» или BV$»имя символьное». Значением булевской переменной является число 1, когда булевское выражение истинно и число 0 - в противном случае.
Булевская переменная задается с помощью специальной команды, следующего формата.
Поле имени Поле операции Поле операндов
«имя» ВVARIABLE «булевское выражение»
Булевское выражение составляется также как и арифметическое выражение, но вместо арифметических операций проверяются различные логические условия. Булевское выражение включает следующие типы операторов: логические операторы, операторы отношения, булевские операторы.
Логические операторы используются для определения состояния объектов аппаратной категории и рассматриваются при описании стандартных логических атрибутов приборов, многоканальных устройств и логических переключателей.
Основные логические операторы с указанием условий, накладываемых на соответствующий объект:
FI |
Устройство захвачено, |
FNI |
Устройство не захвачено |
FU |
Устройство занято |
FNU |
Устройство свободно |
F |
Устройство не свободно, |
FNV |
Устройство недоступно |
FV |
Устройство доступно |
SF |
Многоканальное устройство заполнено |
SNF |
Многоканальное устройство не заполнено |
SE |
Многоканальное устройство пусто |
SNE |
Многоканальное устройство не пусто |
SV |
Многоканальное устройство доступно |
SNV |
Многоканальное устройство недоступно |
LS |
Логический переключатель установлен |
LR |
Логический переключатель сброшен |
Оператор отношения помещается между двумя числовыми величинами (константами или СЧА) и выражает условие, которое может существовать между ними: G - больше, L - меньше, E - равно, NE - не равно, LE - меньше или равно, GE - больше или равно.
Если СЧА в логическом выражении не входит в отношение, то ему приписывается логическое значение (в этом случае СЧА должен быть заключен в скобки). Логическое значение “ложно” приписывается в случае, если численно СЧА равен нулю, во всех остальных случаях приписывается значение “истинно”.
Булевский оператор помещается между двумя логическими величинами и дает логический результат. В качестве булевских опреаторов используют знаки «*», соответствующий логическому «И» и «+», соответствующий логическому «ИЛИ». Операция умножения имеет приоритет по отношению к операции сложения.
Примеры.
5 ВVARIABLE SNE4 - булевская переменная 5 (ВV5) равна 1, если многоканальное устройство 4 не пусто.
BLUE ВVARIABLE R$MNU ´G´ 7 - булевская переменная (ВV$ BLUE) равна 1, если оставшаяся емкость многоканального устройства MNU больше 7.
16 ВVARIABLE (V2 ´E´ 3) * ( FNI2 + LR4) - булевская переменная 16 (ВV16) равна 1, если V2 = 3 при условии, что устройство 2 не занято блоком PREEMPT или логический переключатель LR4 включен.
Сохраняемые величины.
В GPSS пользователю предоставляется возможность определить «свои» глобальные переменные, начальные значения которых могут быть заданы перед моделированием и к которым можно обратиться из любого места модели в любой момент времени. Эти переменные называются сохраняемыми величинами (ячейками). Совокупность связанных между собой ячеек образует матрицу.
В отличие от параметров транзакта, которые теряются в момент выхода транзакта из модели, ячейки доступны на протяжении всего процесса моделирования.
Перед началом моделирования все сохраняемые величины должны быть инициализированы. Это происходит с помощью оператора INITIAL.
Формат оператора:
INITIAL А,В
А – имя сохраняемой величины
В – начальное значение
Блок SAVEVALUE(СОХРАНИТЬ ВЕЛИЧИНУ).
Значение сохраняемой величины изменяется при входе транзакта в блок SAVEVALUE.
Вид и общая форма записи блока.
SAVEVALUE А[+,-],В,С
А – имя сохраняемой величины
В – величина, используемая для модификации.
С – тип сохраняемой величины.
Блок SAVEVALUE может быть использован в режимах замещения, увеличения или уменьшения.
Пример. SAVEVALUE 5+,Х2 - при входе в блок величина Х5 увеличивается на значение величины Х2.
Значения сохраняемых величин являются целыми числами. Могут быть полусловными в интервале от -32768 до +32767 включительно или полнословными в интервале от -2147483648 до +2147483647 включительно.
Общее название полусловных величин ХНj (XH$»имя»), полнословных Хj (X$»имя»)
Пример моделирования системы с использованием сохраняющихся величин.
Постановка задачи. Модифицируем решение рассмотренной выше задачи про печь так, чтобы выполнялись следующие требования:
число моделируемых дней сделать переменным;
в одном прогоне исследовать случаи с 4,5 и 6 сборщиками.
Таблица определений. Единица времени – 1 мин.
Элемент GPSS |
Интерпретация |
Транзакты: 1-й сегмент модели 2-й сегмент модели
Приборы: OVEN
Сохраняемые величины: GUYS TIMER
Переменные: DAYS PROFT |
Сборщики Таймер
Печь
Число сборщиков Продолжительность моделирования
Продолжительность моделирования Средняя дневная прибыль |
Метод построения модели. Раньше ограничение очереди мы делали путем ввода операнда D блока GENERATE. Сейчас мы будем определять его косвенно с помощью сохраняемой величины GUYS. Это дает возможность изменять модель, переопределяя данную величину между соседними прогонами. Эта величина также может использоваться для определения средней дневной прибыли.
Полнословная сохраняемая величина TIMER используется в операнде А блока GENERATE и определяет в какое время транзакт-таймер попадет в модель. Операнд В отсутствует, т.е. равен 0. Модельное время , в которое таймер войдет в модель, равно X$TIMER.
Средняя дневная прибыль равна 5 долларам, умноженным на среднее число деталей, производимых ежедневно, минус дневные расходы. В поле метки блока RELEASE поставим символическое имя MADE, тогда N$MADE будет числом деталей , сделанных за моделируемый период.
Если предположить, что единица модельного времени - 1 мин. и X$TIMER делится нацело на 480 то величина X$TIMER/480 равна числу моделируемых дней. Тогда величина 5*N$MADE/V$DAYS является средней дневной выручкой без учета расходов на печь и заработную плату. Дневная стоимость печи – 80 долларов, а сборщик зарабатывает 3,75 в час, т.е. 30 за 8-и часовой рабочий день. Тогда общая дневная плата всем рабочим равна 30*X$GUYS. А средняя дневная прибыль 5*N$MADE/V$DAYS-80-30*X$GUYS.
Предположим, что это выражение используют для определения переменной PROFT. Тогда при входе в модель транзакта-таймера он может войти в блок SAVEVALUE, инициируя подсчет средней дневной выручки и занесение ее значения в сохраняемую величину. По окончании моделирования эта величина выручки будет включена в распечатку сохраняемых величин.
Программа на языке GPSS:
|
INITIAL |
X$GUYS,4/X$TIMER,2400 |
DAYS |
VARIABLE |
X$TIMER/480 |
PROFT |
VARIABLE |
5*N$MADE/V$DAYS-80-30*X$GUYS |
|
SEGMENT 1 |
|
|
GENERATE |
,,,X$GUYS |
BACK |
ADVANCE |
30,5 |
|
SEIZE |
OVEN |
|
ADVANCE |
8,2 |
MADE |
RELEASE |
OVEN |
|
TRANSFER |
,BACK |
|
SEGMENT 2 |
|
|
GENERATE |
X$TIMER |
|
SAVEVALUE |
INDEX,V$PROFT |
|
TERMINATE |
1 |
|
|
|
|
START |
1 |
|
INITIAL |
X$GUYS,5 |
|
CLEAR |
X$GUYS,X$TIMER |
|
START |
1 |
|
INITIAL |
X$GUYS,6 |
|
CLEAR |
X$GUYS,X$TIMER |
|
START |
1 |
Изменение уровня приоритета транзакта. Блок PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ). При входе в модель уровень приоритета транзакта определяется операндом Е блока GENERATE. В GPSS есть возможность динамическим образом изменять уровень приоритета транзактов.
Общий вид и форма записи блока:
PRIORITY А
А – значение уровня приоритета.
Именно значение операнда А и назначается в качестве нового уровня приоритета вошедшего транзакта.
Уровень приоритета является стандартным числовым атрибутом с именем PR.
Элементы, моделирующие управление. Логические переключатели. Блок GATE (ВПУСТИТЬ). Для моделирования управления в GPSS существует специальные элементы, называемые логическими переключателями. В любой рассматриваемый момент времени логический переключатель в модели либо установлен, либо сброшен. Состояния логических переключателей можно проверять и использовать для оказания влияния на движение транзактов в модели. Логические переключатели существуют в модели автоматически, независимо от того, используются они или нет. Чтобы поместить логические переключатели в начальное состояние «установлено», используют оператор INITIAL.
Формат оператора:
Поле имени |
Поле операции |
Поле операндов |
Не используется |
INITIAL |
Lsимя1/LSимя2/ …/LSимяN |
Состояние логического переключателя может измениться, если транзакт войдет в блок LOGIC (ВЛИЯТЬ НА ЛОГИЧЕСКИЙ ПЕРЕКЛЮЧАТЕЛЬ).
Общий вид и форма записи блока:
LOGIC X A
А – номер логического ключа (имя, число или СЧА),
Х – вспомогательный оператор, указывающий на производимое действие с логическим переключателем.
При входе транзакта в блок положение логического ключа изменяется в зависимости от значения вспомогательного оператора Х следующим образом:
S – логический ключ устанавливается в положение «Включен»;
R – логический ключ устанавливается в положение «Выключен»;
I –логический ключ инвертируется, т.е меняет значение на противоположное.
Проверка состояния логических переключателей.
При проверке состояния логического переключателя не используются какие-либо его числовые свойства, т.к. у переключателя их нет. Для управления потоком транзактов с использованием состояния логического переключателя «установлено» или «сброшено» требуется какой-то другой блок отличный от блока TEST. Для этой цели используется блок GATE (ВПУСТИТЬ).
Вид и форма записи блока:
GATE X A, B
а) Блок для проверки положения логического переключателя
|
б) Блок для проверки статуса устройства |
в) Блок для проверки статуса многоканального устройства |
А – имя логического переключателя;
В – необязательный операнд; имя блока к которому переходит проверяющий транзакт, если логический переключатель находится в положении, не отвечающем условию проверки.
Если операнд В пустой, блок работает в режиме условного вхождения, если заполнен – в режиме безусловного вхождения.
Х – Вспомогательный оператор (логический ключ), указывает положение переключателя, требуемое для истинности проверки, имеет СЧА, задается одним из следующих логических операторов:
Логические операторы, связанные с устройствами |
|
NU |
Устройстово свободно -1, занято – 0. |
U |
Устройство занято -1, не занято – 0. |
NI |
На устройстве не произошло прерывание -1, иначе – 0. |
I |
На устройстве произошло прерывание -1, иначе – 0. |
FV |
Устройство доступно -1, иначе – 0. |
FNV |
Устройство не доступно -1, иначе – 0. |
Логические операторы, связанные с МКУ |
|
SE |
МКУ пусто -1, непусто -0 |
SNE |
МКУ не пусто -1, пусто – 0 |
SF |
МКУ заполнено -1, не заполнено – 0. |
SNF |
МКУ не заполнено -1, заполнено - 0 |
SV |
МКУ доступно -1, иначе – 0. |
SNV |
МКУ не доступно -1, иначе – 0. |
Логические операторы, связанные с транзактами |
|
M |
Наличие пары в А-блоке |
NM |
Отсутствие пары в А-блоке |
Логические операторы, связанные с логическими ключами |
|
LRj |
равно 1, если логический ключ выключен, иначе -0; |
LSj |
равно 1, если логический ключ включен, иначе -0 |
В режиме условного вхождения транзакт никогда не задерживается на входе блока. Если заданный логический оператор имеет значение «истина», транзакт пытается перейти к следующему по номеру блоку. Если логический оператор имеет значение «ложь», то транзакты будут пытаться перейти к блоку, номер которого задан в операнде В. Выбор следующего блока происходит один раз в момент вхождения в блок.
В режиме безусловного вхождения (операнд В отсутствует), транзакты не смогут войти в блок до тех пор, пока указанный логический оператор не будет иметь значение «истина».
Пример. По расписанию автобус должен подходить к остановке каждые 30 мин., однако возможно опоздание на 1,5±1,5 мин. Приход людей на остановку подчиняется закону Пуассона с интенсивностью 12 человек каждые 30 мин. Автобус вместимостью 50 человек в момент прибытия везет 35±15 человек. После того как от3 до 7 пассажиров выйдут (распределение равномерное), в автобус входят столько ожидающих, сколько возможно. Для высадки пассажира требуется 4±3 с., для посадки - 8±4 с. Построить модель имитирующую события на остановке.
Таблица определений. Единица времени – 1 с.
Элементы GPSS |
Назначение |
Транзакты 1 сегмент 2 сегмент
|
Пассажир Автобус: Р1 – сначала число людей, желающих выйти, затем число людей в автобусе, которым еще необходимо выйти |
Функции XPDIS ONBUS
OFF |
Экспоненциальная функция распределения Функция распределения числа пассажиров в автобусе в момент прибытия на остановку Функция распределения числа выходящих из автобуса пассажиров |
Логические переключатели BUS |
В положении «сброшено» указывает на одновременное выполнение условий: 1) автобус находится на остановке и 2) следующему пассажиру можно попытаться войти |
Очередь LINE |
Очередь ожидающих автобуса |
Сохраняемые величины MAD
OWON |
Счетчик для определения числа людей, не севших в автобус Счетчик для определения числа пассажиров в прибывшем автобусе |
Таблицы MAD |
Таблица для оценки распределения необслуженных людей |
Программа на языке GPSS.
XPDIS FUNCTION RN1,C24 0,0/.1,.104/.2,.222/.3,.335/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8 |
OFF FUNCTION RN1, C2 0,3 / 1,8 |
ONBUS FUNCTION RN1, C2 0,20 / 1,51 |
MAD TABLE X$MAD,0,1,10 |
|
;MODEL SEGMENT 1 |
|
|
|
|
|
|
|
GENERATE |
150,FN$XPDIS,,,1 |
Приход людей на остановку |
|
QUEUE |
LINE |
Встать в очередь |
|
GATE LS |
BUS |
Двери открываются |
|
DEPART |
LINE |
Выйти из очереди |
|
TEST L |
X$NOWON,50,MAD |
Есть ли в автобусе место |
|
LOGIC R |
BUS |
Да, закрыть перед следующим |
GETON |
ADVANCE |
8,4 |
Войти в автобус |
|
SAVEVALUE |
NOWON+,1 |
Подсчитать людей в автобусе |
|
LOGIC S |
BUS |
Открыть для следующего |
|
TERMINATE |
|
Пассажир вошел в автобус |
MAD |
SAVEVALUE |
MAD+,1 |
Счетчик отказов |
|
TERMINATE |
|
Необслуженный уходит |
|
|
|
|
|
;MODEL SEGMENT 2 |
|
|
|
GENERATE |
1800 |
Прибытие автобуса |
|
ADVANCE |
90,90 |
Опоздание |
|
SAVEVALUE |
NOWON,FN$ONBUS |
Подсчет пассажиров в автобусе |
|
ASSIGN |
1,FN$OFF |
Число желающих выйти |
NEXT |
ADVANCE |
4,3 |
Выходит пассажир |
|
SAVEVALUE |
NOWON-,1 |
Число пассажиров в автобусе |
|
LOOP |
1,NEXT |
Выпустить следующего |
|
LOGIC S |
BUS |
Открыть автобус |
|
TEST E |
Q$LINE,0 |
Автобус ждет окончания очереди |
|
TEST E |
W$GETON,0 |
Последний пассажир вошел? |
|
TABULATE |
MAD |
Число необслуженных |
|
SAVEVALUE |
MAD,0 |
Обнулить необслуженных |
|
LOGIC R |
BUS |
Закрыть автобус |
|
TERMINATE |
1 |
Автобус уезжает |
|
START |
25 |
|
Системы обслуживания с несколькими приборами и очередями. Во всех предыдущих примерах система обслуживания состояла из нескольких параллельно работающих каналов и одной очереди.
Рассмотрим системы обслуживания с несколькими каналами, перед которыми образуются раздельные очереди. Примерами таких систем являются: продовольственный магазин с несколькими кассами на выходе, площадки сбора платы за проезд по скоростным дорогам с несколькими турникетами, банки с несколькими обслуживающими кассирами и т.д.
Предположим, что приборы 1, 2, и 3 используются для моделирования параллельно работающих каналов. Очереди к этим приборам также имеют имена 1, 2 и 3 соответственно (рис. 23).
Значения операндов А используемых блоков можно определить через значение параметра Р1. Последовательность блоков, эквивалентная параллельным ветвям не изменится. При входе в эту последовательность транзакта, первый параметр которого имеет значение 1, он присоединяется к очереди 1, ждет возможности занять прибор 1. Аналогично, транзакты, у которых Р1 имеет значение 2 или 3, присоединяются к очередям 2 или 3 соответственно, ждут освобождения приборов 2 или 3 и т.д.
Рис. 23. Сегмент блок-схемы, моделирующий параллельные ветви обслуживания.
Последовательность блоков, эквивалентная параллельным ветвям, представленным на рисунке 24.
Рис. 24. Сегмент блок-схемы, моделирующий параллельное ветви обслуживания
Выбор элементов по их состояниям. Блок SELECT (ВЫБРАТЬ) В GPSS есть блок, который может быть использован для просмотра множества элементов определенной группы для выяснения того, удовлетворяет ли хотя бы один из них определенному числовому условию. При входе транзакта в этот блок выполняется просмотр состояний элементов определенной группы. Просмотр выполняется в порядке возрастания номеров элементов. Если найден такой элемент, который удовлетворяет установленному условию, просмотр прекращается. В противном случае просмотр прекращается после определения того, что ни один из членов множества не удовлетворяет этому условию. В любом случае транзакт продвигается в модели (сразу же или как только позволит следующий блок) после завершения просмотра.
Приведем примеры просмотров, которые может выполнить блок.
Просмотреть приборы 1, 2 и 3 для определения, находится ли хотя бы один из них в свободном состоянии (т. е. надо определить, есть ли хотя бы один прибор, для которого атрибут F равен нулю).
Просмотреть многоканальные устройства для определения, есть ли хотя бы одно устройство нагрузка которого ниже 25% (т. е. надо определить, есть ли хотя бы одно устройство, атрибут которого SR меньше 250).
Просмотреть очереди 13, 14, 15, 16 и 17 для определения, есть ли хотя бы одна из них, у которой среднее время пребывания, если исключить нулевые входы, не меньше 3 (т.е. надо определить, существует ли хотя бы одна из этих очередей, атрибут которой QX превышал или был бы равен 3).
Для осуществления такого просмотра используют блок SELECT (ВЫБРАТЬ).
Общий вид и форма записи блока:
SELECT X A, B, C, D, E, F
А – номер параметра в который записывается номер члена группы, отвечающего указанным условиям;
F – необязательный, указывает имя блока в который передается транзакт, если ни один член группы не отвечает установленному условию;
Е – групповое имя СЧА;
В и С – наименьший и наибольший номера из множества членов просматриваемых групп;
D – значение, с которым должен сравниваться атрибут, указанный в операнде Е;
Х – вспомогательный оператор. Он является оператором отношения, определяющим способ сравнения СЧА, указанное оператором Е и значение оператора D. Фактически Х имеет одну из следующих форм:
G |
Больше ли Е чем D? |
CE |
>= E и D |
E |
= E и D |
NE |
≠ E и D |
LE |
<= E и D |
L |
< k E чем D |
Примеры использования блока SELECT.
SELECT Е 7, 1, 3, 0, F - блок организует просмотр приборов 1,2 и 3 и определение такого, для которого атрибут F был бы равен 0. Если просмотр закончился, транзакт выйдет со значением параметра 7, равным номеру того прибора (1,2 или 3) для первого из которых обнаружено, что его атрибут F равен нулю. Иначе транзакт покидает блок SELECT с нулевым значением параметра 7.
SELECT L P3, 5, 8, 250, SR - блок просматривает многоканальные устройства 5, 6, 7, 8 и определяет какое из них имеет нагрузку меньшую, чем 0,25%.
SELECT GE 5, 13, 17, 3, QX, EXIT - блок просматривает очереди от 13 до 17 и определяет есть ли такая, атрибут QX которой больше или равен 3. Если есть, то ее номер записывается в параметр 5. При неудовлетворительном результате транзакт переходит в блок EXIT. Параметр 5 не меняет своего значения.
Блок SELECT может использоваться в режиме поиска члена группы, значение определенного атрибута которого является минимальным или максимальным. Роль вспомогательных операндов для такого режима использования блока SELECT играют операнды MIN и MAX. В этом режиме операнды А, В, С и Е используются так же, как в режиме отношения. Значение операндов D и F не задается.
Приведем пример использования блока SELECT при моделировании параллельного обслуживания (см. рис.1). Транзакт сначала входит в блок SELECT в режиме оператора отношения, в котором определяется наличие прибора, который свободен в данный момент времени. Если такой прибор найден, его номер записывается первым параметром транзакта и транзакт входит в последовательность блоков QUEUE -…-RELEASE. Если свободного прибора нет, транзакт попадает в блок SELECT в режиме MIN. Номер самой короткой очереди помещается в параметр 1, транзакт возвращается в блок QUEUE, где присоединяется к очереди с самой малой длиной.
Определение и использование таблиц. Блок TABULATE (ТАБУЛИРОВАТЬ). Сбор и автоматическое табулирование статистических данных о работе модели можно с помощью таблиц. Статистические таблицы используются для получения частотных распределений определенных аргументов, которыми могут быть некоторые СЧА (время задержки транзакта в модели, длина очереди, содержимое памяти и т.д.). В модели может быть несколько таблиц. Они сначала определяются, затем используются.
Для определения таблицы нужно указать:
имя таблицы;
имя случайной переменной, значение которой будет табулироваться;
число, являющееся первым граничным значением; значения выборки, меньшие или равные этому числу, попадают в самый левый интервал (частотный класс) таблицы;
ширину общей для всех интервалов таблицы за исключением левого (низшего) и правого (высшего);
общее число интервалов таблицы, включающее нижний и высший.
Вся эта информация записывается в карте определения таблицы TABLE.
Формат карты:
Поле имени Поле операции Поле операндов
<имя> TABLE А, В, С, D
A – имя переменной, значения которой должны учитываться в таблице. Операнд А должен быть именем стандартного числового атрибута.
B – первое граничное значение.
C – ширина всех промежуточных интервалов.
D – общее число интервалов таблицы, включая левый и правый.
Значения операндов В, С и D - целые числа. Значение В может быть отрицательным.
Пример.
TYME TABLE MP3, 10, 5, 6
Таблица имеет имя TYME. Стандартный числовой атрибут, который мы табулируем, является атрибутом МР3. Первой границей является 10, ширина промежуточных интервалов таблицы равна 5, ось действительных значений делится на 6 последовательных интервалов.
При входе транзакта в блок TABULATE в соответствующую таблицу записывается определенная статистическая информация. Поле А определяет имя этой таблицы.
Общий вид и форма записи блока:
TABULATE А, В
В каждом блоке TABULATE может быть задано число единиц, добавляемых к числу наблюдений того интервала, в который попадает при данном обращении аргумент. Это число единиц задается в поле В. По умолчанию это число принимается равным 1.
Примеры.
TABULATE 32, 2 – в интервалы таблицы 32 добавляется по 2 единицы.
TABULATE ТРВ – в интервалы таблицы ТРВ добавляется 1.
Существуют три специальных режима использования таблиц.
IA-режим (Inter Arrival – интервалы прихода). При входе транзакта в блок TABULATE, который соответствует таблице, используемой в этом режиме, определяется время, прошедшее с момента последнего обращения к этой таблице. Полученное значение заносится в таблицу. Таблица представляет собой распределение промежутков времени между моментами поступления транзактов в данную точку программы. Обозначение IA записывается в операнд А команды TABLE. Операнды В, С и D этой команды определяют обычным образом. Блок TABULATE должен быть помещен в интересующую точку модели.
RT-режим (Rate – интенсивность). Режим основа на оценке распределения интенсивности, с которой транзакты поступают в определенную точку модели. Использование этого режима предусматривает запись обозначения RT в операнд А команды TABLE. Операнды В, С и D этой команды определяют обычным образом. Необходимо определить операнд Е – интервал времени, относительно которого измеряется интенсивность. Блок TABULATE должен быть помещен в интересующую точку модели. Логика сбора данных в этом режиме такова Каждая таблица имеет специальный счетчик. В начале моделирования он сбрасывается в 0. При ссылке на таблицу из блока TABULATE значение счетчика увеличивается на 1. Если интервал времени, указанный в Е, проходит, то значение счетчика помещается в таблицу, сам счетчик обнуляется. Процесс добавления к счетчику продолжается на следующем интервале времени.
QTABLE-режим используется для оценки распределения времени пребывания в очереди. Для использования этого режима необходимо в поле операции команды TABLE записать операцию QTABLE. Операндом А этой команды является имя очереди, оценка распределения времени пребывания в которой представляет интерес. Операнды В, С и D этой команды определяют также, как и в команде TABLE.
Рис. 25. Пример гистограммы
Пример моделирования вычислительной системы
Постановка задачи. Для каждого из 3000 пейджеров с 6-00 до 24-00 поступает около 10 сообщений длиной до 24 символов (512 бит). Неизвестное количество операторов, в течение 10 секунд, сначала проверяют абонента, которому будет адресовано полученное сообщение на предмет внесения им абонентской платы, а потом, в случае положительного исхода, принимают сообщение и обрабатывают каждое 30±10 секунд. Принять, что трое из ста пользователей данной пейджинговой системы не уплатили взносы вовремя и их обслуживание было приостановлено. Сообщения адресатов подлежащих к обслуживанию поступают на центральный компьютер, где в порядке очереди обрабатываются и поступают на передающую антенну. Скорость передачи информации через стандартную антенну 512 бит/сек. Скорость обработки информации в центральном компьютере очень велика, а объем хранящихся в памяти сообщений может быть неограниченным. С вероятностью 0,95% каждое сообщение достигает своего «адресата» и принявший пейджер дает сигнал «сообщение принял». Если он сообщение не принял (находится вне зоны уверенного приема или по другим причинам), то оно поступает снова на центральный компьютер и передается заново.
Предусмотреть, что два раза в час система передает служебную информацию (прогноз погоды, сведения об уплате абонентских взносов, курсы валют и т.п.). Данная информация передается вне очереди и по длине равна одному сообщению.
В результате моделирования определить количество операторов, необходимое для принятия всего объема сообщений и количество передающих антенн, необходимых для передачи всех сообщений на пейджеры абонентов. Также собрать статистику о времени обслуживания звонков (сообщений).
Постановка задачи. Чтобы послать сообщение на пейджер конкретному человеку нужно набрать номер диспетчера системы, к которой принадлежит абонент. Звонок попадает на многоканальный диспетчерский пульт, на котором никогда не будет «занято». После сообщения номера «адресата» в течение 10 секунд оператор проверяет его абонентские платежи. Если абонент не заплатил, то сообщение не принимается и оператор освобождается для принятия следующего звонка. Если абонент с вероятностью 0,97 укладывается в график платежей, то можно передать оператору сообщение, что занимает порядка 30±10 секунд, после чего данный канал связи освобождается для обслуживания следующего звонка.
После того как оператор набрал сообщение, оно поступает на центральный компьютер (ЦК), который обладает большим быстродействием и практически неограниченной памятью. ЦК мгновенно обрабатывает сообщение для передачи с наименьшими потерями, добавляет «преамбулу» и синхронопульсы, вставляет его в общую информационную последовательность, которая передается на транслирующую антенну для передачи в прямой эфир.
Итак, сообщение поступает на один из передатчиков. Из-за ограниченной пропускной способности (512 бит/сек), перед ним может образоваться очередь. Т.о. передача может идти с нескольких приемо-передающих антенн в зависимости от загруженности системы сообщениями. После того как сообщение было отправлено, система ждет в течение одной минуты сигнал подтверждения, что переданная информация достигла цели. Если сигнал подтверждения с вероятностью 0,95 получен то все хорошо, если нет, то сообщение вновь передается на ЦК, вне очереди обслуживается и передается заново. Передача и прием с антенны идет на разных частотах, поэтому сообщения передаются без задержки.
Дополнительно система передает служебную информацию (прогноз погоды, платежи и т.п.). Она посылается на все пейджеры одновременно с приостановкой передачи основных сообщений.
Вышеописанный пример следует промоделировать для случая когда у системы имеется 3000 абонентов (подлежащих обслуживанию и нет) и для каждого в течение 18 часов поступает около 10 сообщений.
В результате моделирования необходимо:
определить сколько потребуется операторов данной пейджинговой системе для приема и обработки всего объема звонков. При этом все работники этого подразделения должны быть, по возможности, одинаково максимально загружены, не обслуженных звонков не должно быть, время ожидания до начала обслуживания позвонившего должно быть как можно меньше;
определить минимальное количество антенн необходимых для передачи сообщений на пейджеры абонентов. При этом обеспечить передачу в кратчайшие сроки всего объема сообщений;
собрать и оценить статистику о времени обслуживания звонка – сообщения. Проследить его с начала его поступления к операторам, до передачи его в эфир и получения подтверждения или до момента отказа в обслуживании;
провести с моделью эксперимент.
Метод построения модели. Для реализации пейджинговой системы, необходимо разбить ее на три сегмента.
Первый сегмент, это таймер. Для реализации таймера за единицу времени выбираем одну секунду. Блоком GENERATE через время равное 64800 единиц (18 часов). будет сгенерирован один единственный транзакт. Он сразу же будет удален блоком TERMINATE с обнулением счетчика завершений.
Второй сегмент будет отвечать за реализацию передачи служебной информации на пейджеры. Блок GENERATE через каждые 1800 е.в. (30 минут) будет генерировать один транзакт. Блок (или блоки, если антенн несколько) PREEMPT будет приостанавливать обслуживание на всех устройствах передачи сообщения в эфир. Затем в блоке ADVANCE в течение 1 единицы времени. будет имитировано обслуживание (передача) служебной информации и затем блоком (блоками, если антенн несколько RETURN) прерванное обслуживание в устройствах будет продолжено. В конце сегмента данный транзакт будет удален.
Третий сегмент будет отвечать за непосредственное создание, обслуживание и удаление обычных сообщений. Чтобы для 3000 абонентов за 18 часов работы поступало в среднем по 10 сообщений на каждого, в систему должно поступать и обрабатываться около 2 сообщений в секунду. Будем генерировать транзакты блоком GENERATE через 2±1 единицу времени. Далее транзакты должны попадать на многоканальное обслуживающее устройство, которое задается блоками ENTER и LEAVE. При этом перед входом в многоканальное обслуживающее устройство необходимо организовать очередь блоком QUEUE, выход из которой будет происходить после обслуживания с помощью блока DEPART. Это необходимо для сбора статистики.
Проверка пользователей системы на предмет уплаты ими абонентских взносов происходит блоком TRANSFER в режиме статистического выбора. При этом 97% всех транзактов обслуживается дальше, а остальные 3% выходят из очереди, из многоканального устройства и удаляются из модели блоком TERMINATE.
При использовании многоканального обслуживающего устройства необходимо определить его емкость оператором STORAGE. Для начала объем памяти зададим равный 25, а в дальнейшем, по мере необходимости, можно увеличить или уменьшить его до значения, полностью удовлетворяющего входной поток «звонков».
Задержка транзактов на время обслуживания задается специальным блоком ADVANCE. В соответствии с выбранным масштабом времени, задержка обслуживания при проверке платежей равна 10 ед. времени., а само обслуживание тормозит сообщение еще на 30±10 е.в.
Из-за высокой скорости работы центрального компьютера (ЦК) и неограниченной его памяти задержки транзактов в нем не будет происходить. ЦК здесь рассматривается только как устройство, регулирующее поток передачи сообщений на приемо-передающие антенны, скорость обработки транзактов в которых ограничена. Поэтому ЦК реализован лишь очередью (блоком QUEUЕ) к следующему блоку, которая позволит потом оценить входной поток. Выход из очереди происходит только после обслуживания транзакта антенной.
Передача сообщений представлена блоком (блоками) SEIZE и RELEASE с задержкой в блоке ADVANCE. Если будет необходимость в реализации нескольких приемо-передающих антенн, то для этого подойдет блок TRANSFER в режимах BOTH или ALL, изменяющий маршруты транзактов по свободным устройствам.
После имитации передачи сообщения блоком ADVANCE будет реализовано ожидание системы ответного сигнала с пейджера «сообщение принято». Вероятность получения этого сообщения реализуется блоком TRANSFER в режиме статистического выбора. 5%, попавших в него транзактов, будут переданы на блок PRIORITY, где им будут присвоен приоритет равный 1, затем они поступят в очередь, которая реализует ЦК и будут обслужены антенной (антеннами) снова. 95% других транзактов попадут в блок TERMINATE и будут удалены из модели.
Таблица определений. Единица времени - 1 секунда.
Элементы GPSS |
Назначение |
Транзакты |
Звонки- сообщения |
1-ый сегмент |
Таймер |
2-й сегмент |
Генератор служебных сообщений |
3-й сегмент |
Генератор транзактов |
Обслуживающие устройства |
|
AN |
Приемо-передающая антенна |
Очереди |
|
PROV |
Очередь к операторам |
CCOM |
Очередь ЦК |
Памяти |
|
OP |
Многоканальное обслуживающее устройство – операторы |
Программа на языке GPSS.
SOOB |
TABLE |
Ml,0,1,180 |
Сбор статистики по времени обслуживания транзактов |
|
GENERATE |
64800 |
Таймер |
|
TERMINATE |
1 |
|
|
GENERATE |
1800 |
Генерация служебной информации через каждые 1800 ед. времени с приоритетом 2 |
|
PREEMPT |
AN |
Приоритетное занятие устройства AN, с приостановкой обслуживания обычных транзактов |
|
ADVANCE |
1 |
Обслуживание служебных сообщений в течение 1 ед. времени |
|
RETURN |
AN |
Освобождение устройства AN, с возвратом его к прежнему режиму |
|
TERMINATE |
|
Удаление служебных сообщений из модели |
|
GENERATE |
2, 1 |
Генерация обычных транзактов с частотой в 2 ± 1 ед. времени |
OP |
STORAGE |
25 |
Установка емкости памяти равной 25 |
|
QUEUE |
PROV |
Постановка в очередь PROV |
|
ENTER |
OP |
Занятие одной ячейки памяти |
|
ADVANCE |
10 |
Задержка на 10 ед. времени |
|
TRANSFER |
.97,KON,SL |
Распределение транзактов с вероятностью .97 |
SL |
ADVANCE |
30,10 |
Задержка на 30 ± 10 ед. времени |
|
DEPART |
PROV |
Выход из очереди PROV |
|
LEAVE |
OP,1 |
Выход с освобождением одной ячейки памяти |
SYS |
QUEUE |
CCOM |
Постановка в очередь ССОМ |
|
SEIZE |
AN |
Занятие устройства AN |
|
ADVANCE |
1 |
Задержка на 1 ед. времени |
|
DEPART |
CCOM |
Выход из очереди ССОМ |
|
RELEASE |
AN |
Освобождение обслуживающего устройства AN |
|
ADVANCE |
60 |
Задержка на 60 ед. времени |
|
TRANSFER |
.95,DUB,VSO |
Распределение транзактов с вероятностью .95 |
DUB |
PRIORIТY |
1 |
Присвоение вошедшим транзактам приоритета 1 |
|
TRANSFER |
, SYS |
Безусловный переход на строку 180 |
KON |
DEPART |
PROV |
Выход из очереди PROV |
|
LEAVE |
OP |
Выход с освобождением одной ячейки памяти |
VSO |
TABULATE |
SOOB |
Сбор статистики по времени обслуживания транзактов |
|
MICROWINDOW |
1,M1 |
Установка окна параметров |
|
TERMINATE |
|
Вывод транзактов из модели |
Выходные данные.
Результаты моделирования.
Модель имитировала работу пейджинговой системы в течение 18 часов. За это время система передала своим абонентам 35 служебных сообщений. Операторы педжинговой системы приняли 32404 звонков для 3000 пейджеров (примерно по 10 звонков на одного абонента). Для 33404 звонящих было проверено обслуживается их «адресат» или нет, и лишь 8 еще находились в проверке в конце моделирования. В результате в 985 случаях (каждому 35) операторами было отказано в обслуживании, т.е. владельцы пейджеров не заплатили абонентские взносы и были временно отключены от обслуживания.
В результате на центральный компьютер от операторов для отправления поступило 31402 сообщений для 2908 пейджеров. Полученные сообщения компьютер закодировал, снабдил «преамбулой», адресом, синхропоследовательностью, вставил в общий информационный поток и поставил в очередь к передающей антенне. Надо заметить, что в центральный компьютер кроме 31402 сообщений от операторов, поступило еще 1663 сообщений, не достигших «адресата» по разным причинам, в том числе из-за отсутствия их в зоне уверенного приема.
Таким образом, для передачи в эфир было обработано и подготовлено 33065 сообщения. Из них одно сообщение не успело передаться, и осталось в очереди на обслуживание, а второе, на конец моделирования, было еще в процессе передачи его антенной. Еще 33 сообщения не стиралось из памяти центрального компьютера, т.к. для них еще не были получены подтверждения о получении их «адресатами».
В результате работы пейджинговой системы было передано на 2908 пейджеров 33064 сообщений. Таким образом, получается, что на конец моделирования каждый из 2908 абонентов пейджинговой системы, которые подлежат обслуживанию, получили по 10 сообщений обычных и 35 служебных.
Оценим работу и загруженность отдельных устройств.
Устройства. В приемо-передающую антенну за время моделирования вошло 33100 транзактов из них. Коэффициент использования равен 0.511, это значит, что антенна работала в половину своей мощности и нагрузка может быть увеличена. Время обработки одного транзакта составляло 1 ед. времени и не был обслужен только один транзакт.
Очереди. Максимальная длинна очереди или максимальное количество транзактов, которое стояло в очереди плюс обрабатывалось многоканальной системой обслуживания было равно 27; среднее значение этой величины за время моделирования составило 19.52 транзактов. Всего за время моделирования в эту очередь вошло 32404 транзактов. Средняя продолжительность нахождения транзакта в очереди, а значит и среднее время работы оператора со звонком составляет 39,05 е.в. (примерно 39 секунд).
Следующая очередь – это очередь к приемо-передающей антенне. Максимальная длина этой очереди составляет 7 транзактов, а средняя за время моделирования 0,72. Всего в очередь вошло 33082 транзакта, а осталось после окончания моделирования 2. Среднее время нахождения транзакта в очереди, а значит и среднее время передачи сообщения 1,4 ед. времени.
Памяти. В модели памятью было сымитировано многоканальное обслуживающее устройство. Количество каналов было определено в 25. Минимально было занято 0 каналов, максимально все 25. В каждый момент времени там находилось, в среднем, по 19,52 транзактов и всего, за время моделирования, в него вошли 32404 транзактов. Коэффициент использования данного устройства составляет 0,781. Это достаточно, если учесть, что с его помощью была смоделирована работа людей. Если увеличить объем поступления звонков, то необходимо увеличить емкость данного многоканального устройства.
Экспериментирование с моделью. Данной модели пейджинговой системы было предложено обслужить удвоенный поток транзактов. В результате, для удовлетворения такого количества транзактов (их было сгенерировано за время моделирования 64515), нам было необходимо увеличить емкость многоканального устройства (памяти) до 45 единиц. Коэффициент использования был равен 0,865, что выше предыдущего.
Для передачи всего объема информации потребовалось использование уже двух антенн, т.к. одна не справлялась и очередь к ней возрастала до огромных значений и к концу моделирования не уменьшалась вовсе. Коэффициенты использования у этих обслуживающих устройств были равны 0,622 и 0,396.
При увеличении количества транзактов не произошло существенного увеличения времени их нахождения очередях. Так в очереди к многоканальному обслуживающему устройству в среднем находилось 39,43 транзакта по 39,61 е.в. (против 39.09 в предыдущем случае), а в очереди к приемо-передающим антеннам 1,19 транзактов по 1,17 е.в. (против 1,41 е.в.).
Время доставки сообщения на пейджер также равнялось двум минутам.
Относительно последнего можно заключить, что при увеличении или снижении количества транзактов поступающих в данную модель пейджинговой системы необходимо регулировать только два ее параметра: емкость памяти и количество обслуживающих устройств (антенн). Причем при нахождении оптимальных значений для этих параметров можно с определенной долей вероятности утверждать, что значения продолжительности нахождения транзактов в модели будут такими же. Коэффициенты загруженности памяти и обслуживающих устройств будут значительно изменяться, как в сторону увеличения, так и в сторону уменьшения.