Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по GPSSW_новый.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
570 Кб
Скачать
☆

Лабораторная работа № 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 оформить отчет и показать его преподавателю.