- •Введение
- •Лабораторная работа № 1 ознакомление c интерфейсом пользователя системы gpssw
- •1. Редактирование в среде gpssw
- •2. Блоки (операторы) gpss-модели
- •4. Лабораторное задание
- •Лабораторная работа № 2 Практическая работа в gpssw. Первая программа. Лабораторное задание
- •Лабораторная работа № 3 Изучение средств наблюдения за процессом моделирования в среде gpssw Лабораторное задание
- •Лабораторная работа № 4 Изучение средств отладки моделей в среде gpssw Отладка модели
- •Лабораторное задание
- •Лабораторная работа № 5 Изучение средств отображения и обработки результатов моделирования в среде gpssw Лабораторное задание
- •Лабораторная работа № 6
- •Содержание отчета
- •Методические указания к выполнению работы
- •Лабораторная работа № 7
- •Содержание отчета
- •Методические указания к выполнению работы
- •Лабораторная работа № 8
- •Содержание отчета
- •Методические указания к выполнению работы
- •Лабораторная работа № 9 моделирование сетей массового обслуживания
- •Приложение 1.Содержимое окон Окно блоков
- •Окно устройств
- •Окно многоканальных устройств
- •Окно очередей
- •Окно таблиц
- •Окно графиков
- •Окно параметров сча
- •Окно отчета
- •Приложение 2.Системные числовые атрибуты (сча)
- •Список литературы
Лабораторная работа № 2 Практическая работа в gpssw. Первая программа. Лабораторное задание
Запустите программу GPSSW и введите новую модель (File/New/Model)
В качестве первого объекта моделирования рассмотрим следующий пример. В ремонтное подразделение (РП) с одним каналом обслуживания поступают вышедшие из строя средства связи (СС). Интервалы времени поступления неисправных СС распределены равномерно в интервале 18 + - 8 часов. Время ремонта также распределено равномерно в интервале 16 + - 4 часа. Ремонт производится по мере поступления. Необходимо отмоделировать функционирование ремонтного подразделения в течение 3 суток (72 часа).
Примем за единицу модельного времени 1 мин. Тогда время моделирования составит 72 Х 60=4320 единиц модельного времени.
Ниже приведем модель.
; Сегмент моделирования ремонта
GENERATE 1080,480 ;поток неисправностей
QUEUE REMQ ;вход в очередь
SEIZE REM1 ;занятие РП
DEPART REMQ ;выход из очереди
ADVANCE 960,240 ;имитация ремонта
RELEASE REM1 ;освобождение РП
TERMINATE ;отремонтированные средства связи
; Сегмент задания времени моделирования
GENERATE 4320
TERMINATE 1
Ввод программы можно осуществлять с помощью пункта меню Edit/Insert GPSS Blocks, которое вызывает диалоговое окно для вызова щелчком мыши нужного блока (оператора) GPSS.
Эта программа моделирует работу выбранного нами объекта, как одноканальной системы массового обслуживания с ожиданием. Поток транзактов, моделирующих неисправные СС, создается блоком GENERATE, причем средний интервал между появлением транзактов составляет 1080 единиц модельного времени. Поступающие транзакты регистрируются в очереди REMQ (блок QUEUE) и пытаются занять одноканальное устройство REM1 (блок SEIZE), моделирующее РП. Если транзакт занимает устройство REM1, то регистрируется выход из очереди REMQ (блок DEPART) и производится задержка транзакта на время, соответствующее времени ремонта со средним значением 960 единиц модельного времени (блок ADVANCE). По истечении этого времени происходит освобождение устройства REM1 (блок RELEASE) и уничтожение транзакта (блок TERMINATE) – отремонтированное СС покидает модель.
Оттранслируйте модель (Command/Create Simulation).
Если программа без ошибок, то в окне JOURNAL появится сообщение даты и времени окончания проведения трансляции. В случае же ошибок, появится сообщение о ней.
Чтобы быстро выйти на строку, где сделана ошибка, можно использовать пункт меню Search/Next Error.
Сохраните модель в своем рабочем каталоге под именем модель1.gps и выйдите из GPSSW.
Загрузите готовую программу (Sample Models / error.gps). Сохраните ее в своем рабочем каталоге под другим именем (error1.gps). Данная программа содержит ошибки. Оттранслируйте модель, найдите и исправьте ошибки..
Воспользуйтесь поиском Next Error. Этот пункт меню поместит курсор в строке на месте ошибки и прокомментирует ошибку в статусной строке окна модели. Выберите Search/Next. Первая ошибка – недостающая правая скобка.
Сообщение об ошибке в журнале говорит нам, что вторая ошибка допущена в строке 13. Используйте Search/Go To Line для перехода к нужной строке, набрав в диалоговом окне цифру 13. Курсор установится в начале этой строки. Устраним ошибку, вставив пропущенную перед началом комментария точку с запятой.
Команда Search/Previous Error позволяет просматривать список ошибок в обратном направлении. Выполним Command/Retranslate и запустим моделирование по Start 10,NP. В окне журнала появляется сообщение об ошибке уже фазы выполнения : попытка освобождения не захваченного устройства. Используйте Search/Go To Line для нахождения и исправления ошибочного имени устройства в блоке RELEASE Robor вместо Robot. Перетранслируйте модель и убедитесь, что моделирование успешно закончилось. Отметим – ошибки фазы выполнения список не образуют. Они выявляются и устраняются по одной с помощью сообщений, идентифицирующих место и характер ошибки.
Закройте все открытые окна и выйдите из системы, не сохраняя внесенные в модель изменения. Модель error1.gps удалите.
В GPSSW имеется средство получения таблиц распределения относительных частот попадания некоторой случайной величины, например, времени пребывания в модели активного транзакта (моделируется СЧА M1). Для этого используются блоки TABLE, TABULATE и QTABLE.
Формат блоков:
TABLE A,B,C,D
A – СЧА, значение которого учитывается в таблице,
В – Первое граничное число,
С – ширина всех промежуточных интервалов,
D – Общее число интервалов, включая левый и правый.
В блоке TABULATE указывается имя таблицы, в которой табулируется соответствующий СЧА (операнд А) и весовой коэффициент (если нужен).
Загрузите модель 1.gps. Добавьте до блока GENERATE блок
Vrem TABLE M1,800,50,10 ; определение таблицы
Здесь М1 – время пребывания транзакта в модели (транзитное время). Вставьте между блоками RELEASE и TERMINATE блок
TABULATE Vrem
Откомпилируйте модель и начните моделирование, введя START 1.
По окончании моделирования просмотрите отчет, в котором присутствуют данные о таблице (используйте приложение).
Войдите в меню Window / Simulation Window / Table Window и просмотрите таблицу в окне Table Window. Сделайте выводы.
Для того, чтобы данные, собираемые в таблицу, не попадали в 1-2 интервала, рекомендуется сделать пробный прогон, по которому и определить диапазон значений, в которых может колебаться анализируемая случайная величина, а уже потом скорректировать значения операндов B, C, D соответствующей таблицы.
Задача 1 [3].
Самостоятельно сконструируйте следующую модель: В ремонтное подразделение (РП) с одним каналом обслуживания поступают вышедшие из строя средства связи двух типов (СС), требующие ремонта, которые ремонтируются одними и теми же мастерами. Интервалы времени поступления для неисправностей 1 типа распределены равномерно 20 +/ - 10 часов, 2 типа 15 +/ - 8 часов. На ремонт неисправностей 1 типа затрачивается 6+/-2 часа, 2 типа – 8+/-4 часа. Единица модельного времени 1 минута. Время моделирования – 3 суток. Найти распределение времени нахождения неисправностей первого типа, второго типа и общее время нахождения неисправностей обоих типов в ремонте. Функционирование РП промоделировать посредством двух сегментов блоков модели.
Результаты моделирования показать преподавателю, модель сохранить.
В некоторых моделях возникает необходимость направления транзактов к другим блокам в зависимости от некоторых условий. Эту возможность обеспечивают блоки изменения маршрутов транзактов.
Блок TRANSFER (передать) служит для передачи входящих в него транзактов в блоки, отличные от следующего. Блок имеет девять режимов работы, из которых рассмотрим здесь лишь три наиболее часто используемых. В этих трех режимах блок имеет следующий формат:
TRANSFER [A],[B],[C],[D]
Смысл операндов в полях A, B и C зависит от режима работы блока. В режиме безусловной передачи поля A и C пусты, а в поле B указывается имя блока, к которому безусловным образом направляется транзакт, вошедший в блок TRANSFER. Например:
TRANSFER ,FINAL
В режиме статистической передачи операнд A определяет вероятность, с которой транзакт направляется в блок, указанный в поле C.
С вероятностью 1-A транзакт направляется в блок, указанный в поле B (в следующий, если поле B пусто).
Вероятность в поле A может быть задана непосредственно десятичной дробью, начинающейся с точки. Например, блок
TRANSFER .75,THIS,THAT
с вероятностью 0,75 направляет транзакты в блок с именем THAT, а с вероятностью 0,25 - в блок с именем THIS.
Если же поле A начинается не с десятичной точки и не содержит одного из ключевых слов - признаков других режимов работы блока, то его значение рассматривается как количество тысячных долей в вероятности передачи. Например, предыдущий блок TRANSFER можно записать также в следующем виде:
TRANSFER 750,THIS,THAT
В режиме логической передачи в поле A записывается ключевое слово BOTH (оба). Транзакт, поступающий в блок TRANSFER, сначала пытается войти в блок, указанный в поле B (или в следующий блок, если поле B пусто), а если это не удается, т.е. блок B отказывает транзакту во входе, то в блок, указанный в поле C. Если и эта попытка неудачна, то транзакт задерживается в блоке TRANSFER до изменения условий в модели, делающего возможным вход в один из блоков B или C, причем при одновременно возникшей возможности предпочтение отдается блоку B. Например:
TRANSFER BOTH,MET1,MET2
Блок TEST (проверить) служит для задержки или изменения маршрутов транзактов в зависимости от соотношения двух СЧА. Он имеет следующий формат:
TEST X A,B,C
Вспомогательный операнд X содержит условие проверки соотношения между СЧА и может принимать следующие значения: L (меньше); LE (меньше или равно); E (равно); NE (не равно); GE (больше или равно); G (больше). Поле A содержит первый, а поле B - второй из сравниваемых СЧА.
Если проверяемое условие A X B выполняется, то блок TEST пропускает транзакт в следующий блок. Если же это условие не выполняется, то транзакт переходит к блоку, указанному в поле C, а если оно пусто, то задерживается перед блоком TEST.
Например, блок
TEST LE P$TIME,C1
не впускает транзакты, у которых значение параметра с именем TIME больше текущего модельного времени. Блок
TEST L Q$LINE,5,OUT
направляет транзакты в блок с именем OUT, если текущая длина очереди LINE больше либо равна 5.
Изучим блоки, изменяющие значения параметров транзактов.
Каждый транзакт может иметь любое число параметров.
ASSIGN A,B,[C]
A – номер параметра, которому присваивается значение, м.б. числом, СЧА и СЧА*параметр, а также следующим за ним знаком + или -, если нужно увеличить или уменьшить значение параметра.
В – определяет значение, которое нужно добавить, вычесть или которым следует заменить значение в параметре, заданном операндом А.
С – задает номер модификатора-функции, значение операнда В умножается на значение модификатора-функции.
Примеры:
ASSIGN 1,755.3
ASSIGN 4+,Q5
ASSIGN 3-,5.7,7
ASSIGN Tr1-, (Normal(32,sredn,otkl) , Fexp
В 1 примере параметру 1 присваивается значение 755.3, во 2 примере к значению параметра 4 прибавляется значение длины текущей очереди номер 5, в 3 примере из значения параметра 3 вычитается произведение 5.7 на предварительно вычисленное значение функции номер 7, в 4 примере вычисляется выражение в скобках (значение случайной величины, имеющей нормальное распределение с соответствующими параметрами), перемножается на значение функции Fexp и полученное произведение вычитается из значения параметра с именем Tr1.
Задача 2 . [3].
Самостоятельно измените предыдущую модель, используя блоки ASSIGN, TRANSFER и TEST, при этом время ремонта неисправных средств связи первого и второго типа предполагается распределенным по экспоненциальному закону со средними значениями 600 и 480 мин. соответственно. Действие ремонтного подразделения в отличие от предыдущего примера моделировать с помощью одного одноканального устройства.
По результатам решения задач 1 и 2 оформить отчет и показать его преподавателю.
