- •Варжапетян а.Г. Исследование систем управления. Учебное пособие
- •Список условных обозначений
- •В 2. Структура учебного пособия.
- •В 3 Организация методической поддержки
- •Глава 1. Информационные технологии исследования и проектирования систем
- •Очерки информационной технологии
- •Информационные аспекты при проектировании рэс
- •Материя
- •Отражение
- •1.3 Количественная оценка характеристик информации
- •1.4 Информационные аспекты управления
- •Контрольные вопросы
- •1. Дайте определение понятию информационная технология.
- •Глава 2 основы системного подхода при проектировании рэс
- •2.1 Иерархия системности и сферы взаимодействия
- •2.1.1 Появление системных концепций
- •Иерархия системности
- •2. 1. 3 Сферы взаимодействия
- •2.2 Классификация систем
- •2.2.1 Объект и предмет исследования и проектирования
- •2.2.2 Классификация системы
- •2.3 Свойства систем и принципы системного подхода
- •2.3.1 Свойства систем
- •2.3.2. Принципы системного подхода
- •Принцип целеобусловленности
- •3. Принцип управляемости
- •6. Принцип симбиозности
- •Контрольные вопросы
- •Глава 3. Моделирование – инструмент исследования и проектирования систем
- •3.1 Классификация моделей
- •3.2 Математические модели
- •3.2.1 Понятие математической модели
- •3.2.2. Непрерывно-вероятностные модели
- •3.3 Имитационное моделирование
- •3.3.1 Понятия имитационного моделирования
- •3.3.2 Способы имитации при создании квазипараллелизма
- •Реальная система
- •3.3.3 Пример построения моделирующего алгоритма на основе событийного способа имитации
- •3.4 Методы имитации на эвм случайных элементов
- •Раздел 3.4. Посвящен именно этим актуальным задачам имитации случайных элементов.
- •3.4.1 Принципы моделирования случайных элементов
- •3.4.1 Методы имитации бсв а. Типы датчиков бсв
- •Мультипликативный конгруэнтный метод (метод вычетов)
- •3. Метод, использующий нелинейные рекуррентные формулы.
- •4. Метод Макларена-Марсальи.
- •5. Метод, основанный на свойстве воспроизводимости равномерного закона.
- •3.5 Оценка адекватности им
- •Контрольные вопросы к 3 главе.
- •Глава 4. Программные комплексы имитационного моделирования
- •4.1 Общая характеристика языков программирования
- •4.2 Сравнение языка gpss/ h с другими версиями gpss
- •4.3 Принципы построения gpss/h
- •4.3.1 Категории и типы объектов
- •4.3.2 Правила трансляции
- •4.3.3 Вычислительные возможности
- •4.3.4. Операторы блоков
- •Выбор объектов, удовлетворяющих заданному условию.
- •4.3.5 Операторы управления и описания
- •А. Операторы управления а.1 Основные операторы управления
- •Б. Операторы описания
- •Б1. Основные операторы описания
- •Б2. Вновь введённые операторы
- •4.4 Принципы работы с моделью
- •4.4.1 Запуск модели
- •4.4.2 Комментарий к выходному отчёту
- •4.4.3 Отладчик (дебаггер ) языка
- •4.4.4 Примеры применения языка
- •Контрольные вопросы к главе 4
- •Глава 5 Информационные технологии исследования и принятия решений
- •5.1 Прогнозирование поведения исследуемых систем
- •5.2 Методы принятия решения а. Общие положения
- •6.3 Интеллектуальные экспертные системы
- •Контрольные вопросы к главе 6
- •Глава 1 Информационные технологии в исследовании
- •Глава 2 Основы системного подхода при проектировании су
- •Глава 3 Имитационное моделирование - инструмент исследования и проектирования су
- •Глава 4 Программные комплексы имитационного моделирования
- •Глава 5 Информационные технологии прогнозирования
4.3.4. Операторы блоков
Профессиональная версия GPSS / Н насчитывает более 60 операторов блоков. Чтобы уяснить отличие от предыдущих версий все блоки можно условно разделить на три группы:
1. блоки, одинаковые для всех версий, которые в свою очередь делятся на обязательные для любой модели и поэтому широко распространённые и блоки для специфических моделей и поэтому употребляемые реже.
2. блоки, дублирующие некоторые новые и ряд старых операторов управления и описания и отличающиеся от них тем, что они вводятся непосредственно в ядро программы. Это сделано для удобства написания и эксплуатации модели. В настоящее время известно 12 таких блоков-дублеров:
BCALL, BCLEAR, BCLOSE, BFILEDEF, BGETLIST, BGETSTRING, BLET, BPUTPIC, BPUTSTRING, BRESET, BRMULT, BSTORAGE
3. Блоки, описывающие новые действия, возникшие после появления в языке дебаггера, например ATNWITE, позволяющий транзактам ожидать следующей интерактивной сессии.
Естественно, что в пособии описать их все невозможно, поэтому в тексте главы и в приложениях будут рассмотрены только наиболее распространённые операторы, которые будут использованы студентами при проведении лабораторных работ и в процессе курсового проектирования.
Прежде чем дать описание некоторым основным операторам блоков дадим несколько разъяснений.
- Код блока может быть сокращен до четырех символов, но для лучшей читаемости модели этого делать не рекомендуется. Кроме того, все блоки- дублеры не допускают сокращений
- Вспомогательный код может быть записан сразу за кодом блока или отделяться пробелами. При использовании вспомогательного кода сокращение кодов блока не допускается.
-
Квадратные скобки используются для необязательных элементов.
-
Формат записи операторов включен в < >.
- Если операнд кодируется числом, то оно должно содержать только целую часть, за исключением тех случаев, где предусмотрено использование плавающей точки. Рассматриваемая версия предусматривает возможность представления времени транзакта числом с плавающей точкой, в то время как предыдущие версии работали только с целочисленными дискретами.
- Блокам надо стремиться присваивать символические имена, а не номера.
-
Первым блоком в ядре программы всегда является GENERATE
Создание, задержка и уничтожение транзактов.
К данной группе относятся операторы GENERATE, ADVANCE и TERMINATE. Оператор GENERATE служит для создания (генерации) транзактов в ИМ с заданными законами распределения интервалов поступления и имеет вид:
< GENERATE A,B,C,D,E,F,G,H,I>
Операнды А, В, ..., I указывают следующие характеристики входного потока (если какие-либо операнды отсутствуют, то им по умолчанию присваиваются стандартные значения):
А — среднее время поступления транзактов (по умолчанию — 0) или встроенная функция;
В— модификатор среднего времени (0);
С — время задержки первого транзакта (0);
D — количество создаваемых блоком транзактов (∞);
Е — приоритет транзактов (0);
F ...,I— количество и формат параметров транзактов
Если в поле F записан "0", то у транзактов нет параметров.
Примеры:
а) GENERATE, 10,2,1000,,4
б) GENERATE, 100,FN$ЕХРОN,,100,,5РВ
а) время поступления транзактов распределено равномерно на интервале [8, 12] (или 10 ± 2); первый транзакт будет создан в момент времени, равный 1000 единиц; всем транзактам присваивается приоритет 4;
б) время поступления транзактов распределено экспоненциально со средним значением 100; генерируется только 100 транзактов с нулевым приоритетом; каждый транзакт имеет по 5 параметров форматом "байт".
Для задержки транзактов на заданное время используется оператор ADVANCE
< ADVANCE A,B >
Операнды А и В аналогичны соответствующим операндам в операторе GENERATE.
Примеры:
ADVANCE 100,FN$ЕХРON
ADVANCE 10,2
Оператор TERMINATE уничтожает транзакты (удаляет из ИМ) и имеет вид:
< TERMINATE A >
Операнд A (по умолчанию — 0) принимает значения от 1 до бесконечности и указывает число, на которое уменьшается содержимое счетчика числа завершений, значение которого задается в управляющей карте START в поле операндов А (см. далее).
Примеры:
а) TERMINATE - ноль по умолчании
б) TERMINATE 2
а) транзакт уничтожается, счетчик числа завершений не изменяется;
б) в отличие от а) счетчик числа завершений уменьшается на 2.
Примечание:
В модели может быть любое число блоков GENERATE, которые могут последовательно представлять разные виды транзактов.
Число TERMINATE также не ограничено, но только один из них имеет значащее значение операнда А.
Примечание: Следует отметить, что операторы GENERATE и TERMINATE относятся к числу особых. GENERATE допускает только выход из него, попытка войти в оператор приводит к машинной ошибке. TERMINATE наоборот допускает только вход!
Для прекращения испытаний во многих моделях может быть использован отдельный сегмент ядра модели, называемый таймер, состоящий, как правило, из двух операторов.
Пример таймера:
GENERATE A, где А – время проведения испытаний.
TERMINATE A, где А - число уничтожаемых транзактов. Для таймера оно обычно равно 1.
Значение операнд А в операторе управления START при этом также равно 1.
Изменение значений параметров и приоритета транзактов.
При создании транзактов в блоке GENERATE, как отмечалось выше, может быть задано количество и формат параметров, а также приоритет транзактов. В момент выхода транзактов из данного блока все их параметры имеют нулевые значения. В дальнейшем при продвижении транзактов по ИМ их параметры и приоритет могут изменяться с помощью операторов ASSIGN и PRIORIRY .
Блок ASSIGN является основным средством для задания значений параметров транзактов:
< ASSIGN A, B, C, D >
А - номер изменяемого параметра с указанием режима изменения: накопление (+), вычитание ( -), замещение (отсутствуют какие-либо символы);
В - целое число, изменяющее (в соответствии с заданным режимом) значение параметра;
С - номер функции-модификатора значения, указанного в поле В (если поле С не задано, модификация не производится);
D- формат изменяемого параметра: PF, РН, РВ, PL (по умолчанию - РН).
Если параметр, записанный в поле А, является параметром с "плавающей точкой" (типа PL), то в поле В можно записывать и целые, и дробные значения.
Примеры:
а) ASSIGN 3+,5„РВ
б) ASSIGN 3-,5,, РВ
в) ASSIGN 1- 7,3
г) ASSIGN 4,2,1, PF
д) ASSIGN 5,2.5,,PL
a) -б) - изменение значения на 5 единиц параметра 3 форматом "байт" в режиме накопления и вычитания соответственно;
в) - задание значений 3 параметрам 1-7 форматом полуслово ;
г) - использование функции-модификатора FN1;
д) - задание дробного значения параметру форматом "плавающая точка"
Для изменения приоритета транзакта используется оператор
< PRIORITY A>
Здесь А - значение присваемого транзакту приоритета (от 0 до 127 включительно).
Пример.
PRIORITY 3 - присвоить транзакту приоритет 3
Описание и использование устройств, памятей и ключей
Рассмотрим следующие операторы, служащие для описания и использования: устройств — SEIZE, RELEASE, PREEMPT, RETURN; памятей — ENTER, LEAVE; логических ключей — LOGIC.
Объект GPSS/H типа "устройство" является аналогом канала обслуживания в СМО. Занятие канала (устройства) заявкой на обслуживание (транзактом) осуществляется с помощью оператора SEIZE, освобождение по окончании обслуживания — с помощью оператора RELEASE:
SEIZE A
![]()
RELEASE A
где А — номер (имя) занимаемого (освобождаемого) транзактом устройства. Устройство занимается и освобождается в момент входа транзакта в соответствующий блок. Освобождение устройства осуществляется только тем транзактом, который данное устройство занимало. Транзакты, заставшие устройство занятым, ждут его освобождения и обслуживаются в порядке поступления (если имеют одинаковый приоритет).
Пример.
SEIZE ACPU занятие устройства
ADVANCE 5,2 задержка от 3 до 7 единиц времени
RELEASE ACPU освобождение устройства
Блок PREEMPT приостанавливает обслуживание транзакта, ранее занявшего устройство, и дает возможность захватить устройство прерывающему транзакту. Блок описывается оператором:
< PREEMPT A.B.C.D.E >
Здесь А — номер (имя) устройства, работа которого прерывается входящим в блок транзактом;
В — режим прерывания (PR — прерывание по приоритету);
С — адрес для прерванного транзакта (может отсутствовать);
D — параметр прерванного транзакта, в который заносится остаток времени обслуживания;
Е — если в поле Е стоит "RE", то транзакт, обслуживание которого было прервано, не претендует на повторный захват данного устройства для обслуживания.
Прерванный транзакт (если отсутствует адрес в поле С) ожидает окончания прерывания устройства и возвращения в устройство для обслуживания. Если таковых транзактов несколько, то они возвращаются в устройство в порядке прерываний (либо приоритетов).
Транзакт, вошедший в блок RETURN, снимает прерывание на устройстве, вызванное вхождением данного транзакта в блок PREEMPT:
< RETURN A >
Здесь А — номер (имя) устройства. Заметим, что блоки PREEMPT и RETURN часто применяются, например, для моделирования циклического обращения к памяти ЭВМ при вводе-выводе.
Блок LOGIC используется для изменения состояния логических ключей, имеет расширенное поле операции за счет дополнительного символа, указывающего тип изменения: "S" — установка ключа, "R" — сброс ключа, "I" — инвертирование ключа (замена состояния на противоположное).
Пример.
LOGIC S LOG4 установить ключ LOG 4
LOGIC R SWCH сбросить ключ swch
LOGIC I KL1 инвертировать ключ KL1
Состояния ключей могут быть запрошены в любом месте модели, например, с помощью оператора GATE.
Изменения маршрутов движения транзактов.
Основными операторами группы являются: GATE, TRANSFER, TEST, LOOP. Транзакты, входящие в соответствующие блоки, далее продвигаются не к следующему блоку, а к блокам, адрес которых определяется, либо указывается в операторах. Операторы GATE и TEST имеют расширенное поле операции.
Блок GATE разрешает движение транзактам (в основном либо альтернативном направлениях) при определенном состоянии оборудования: устройств, памятей, ключей. Для описания состояний используются мнемонические обозначения логических указателей, приведенные в табл. П.6.
Существуют 2 режима работы блока GATE: режим отказа (условного входа) и режим перехода (безусловного входа). Оператор, описывающий блок GATE, имеет вид:
< GATE XXX А, В >
Здесь XXX — мнемоническое обозначение из таблицы П.6
А — номер устройства, памяти, ключа;
В — в режиме перехода — альтернативный адрес.
При работе и режиме отказа блок GATE блокирует (не пропускает) транзакт, если соответствующий объект не находится в требуемом состоянии. В подобной ситуации в режиме перехода транзакт направляется по альтернативному адресу.
Пример.
GATE SF 16 транзакт блокируется до заполнения памяти 16
GATE LS 1 транзакт блокируется до установки ключа 1
GATE FNU 7 транзакт блокируется пока устройство 7 занято
GATE FNI 21.ALTR если устройство 21 прервано, перейти к ALTR
Оператор TRANSFER имеет вид:
< TRANSFER A, B, C >
Существуют 4 следующие основные формы оператора.
1. Безусловный переход:
< TRANSFER , B >
здесь В — имя (адрес) блока, к которому направляется транзакт (операнд А отсутствует).
2. Условный переход с одним альтернативным адресом (режим "BOTH"):
< TRANSFER BOTH, B, C >
где BOTH — тип режима;
В — имя (адрес) блока, к которому направляется транзакт
(основной адрес);
С — альтернативный адрес (при невозможности войти в блок с адресом В).
3. Условный переход с многими альтернативами (режим "ALL"):
<TRANSFER ALL, B, C, D >
где ALL — тип режима;
В — первый адрес;
С — последний адрес;
D — константа М, используемая для вычисления возможных адресов движения транзактов: адрес в поле В, затем — В+М, В+2М, ..., адрес в поле С.
4. Статистический переход (переход с заданной вероятностью):
<TRANSFER А, В, С >
здесь А — вероятность перехода транзакта по адресу С;
В — альтернативный адрес.
В GPSS/H удобно использовать так называемую относительную адресацию, т.е. обращение к какому-либо блоку, не имеющему метки, осуществляется с помощью его относительного адреса. Для примера рассмотрим три варианта записи блока безусловного перехода.
Примеры.
1. TRANSFER ,CPU2
TRANSFER ,*+3
TRANSFER ,CPU1+2
Первый оператор (прямая адресация) направляет транзакт к блоку с именем CPU2. Два остальных оператора — примеры относительной адресации. Второй оператор посылает транзакт к третьему по счету блоку после рассматриваемого блока. Блок, к которому направляется транзакт последним оператором, является вторым по счету от блока CPU1.
2. a) TRANSFER BOTH, KASS1, KASS2
б) TRANSFER BOTH,,TWO
В случае а) транзакт первоначально направляется к блоку с отметкой KASS1. При невозможности войти в этот блок транзакт направляется к блоку с меткой KASS2. В случае б) транзакт делает попытку войти в следующий блок, если ему это не удается, он направляется к блоку с именем TWO.
-
TRANSFER ALL, FIRST, LAST, 3
FIRST GATE LS AAA
ADVANCE 5
TRANSFER ,LAST+2
GATE LR BBB
ADVANCE 2
TRANSFER ,LAST+2
LAST GATE LS CCC
ADVANCE 3,1
Транзакт последовательно пытается войти в следующие блоки: FIRST, FIRST+3, FIRST+6 (LAST).
Упражнение. Проанализировать работу участка программы, приведенного в примере 3. Следует обдуманно использовать оператор TRANSFER, поскольку в случае, когда транзакт не может продвинуться ни по одному из адресов, моделирующая программа направляет транзакты по каждому из адресов при каждом изменении модельного времени, что может привести к большим затратам времени моделирования.
4. TRANSFER .370, THIS, THAT
С вероятностью 0,37 транзакт перейдет к блоку ТНАТ (37% транзактов), а с вероятностью 0,63 - к блоку ТНIS (63% транзактов).
Оператор ТЕSТ определяет направление движения транзакта в зависимости от выполнения условия, заданного алгебраическим соотношением. Оператор имеет расширенное поле операции, включающее общепринятые обозначения логических операций: L, LE, E, NE, G, GE.
< TEST XX A, B, C >
здесь XX - знак логической операции (L, LE, E, NE, G, GE.);
А и В - сравниваемые СЧА;
С - альтернативный адрес.
Если соотношение в операторе ТЕSТ выполняется, то транзакт переходит к следующему блоку, в противном случае возможны два варианта: операнд С опущен - транзакт задерживается в блоке ТЕSТ до выполнения условия; операнд С задан - транзакт направляется по адресу С (первый вариант менее предпочтительный, так как может приводить к большим затратам машинного времени, требуемого на проверку блокирующего условия).
Пример.
а) ТESТ LE Q1, 10
б) ТЕST NE S1, PF2
в) TEST GE PF1,PF2, CPU
Действие операторов:
а) транзакт задерживается, если длина очереди 1 больше 10;
б) транзакт задерживается, если текущее содержимое памяти 1 равно значению 2-го параметра транзакта форматом "слово";
в)
транзакт переходит к следующему блоку,
если PF1
PF2,
либо, в противном случае, направляется
к блоку СPU.
Оператор LOOP служит для организации циклов в ИМ:
< LOOP A, B>
А - номер параметра транзакта, используемого в качестве счетчика цикла с указанием формата: "слово" (РF), "полуслово" (РН), "байт" (РВ). В - имя блока, являющегося начальным в повторяющейся группе блоков.
При каждом вхождении транзакта в блок LOOP значение счетчика уменьшается на 1. Если оно становится равным нулю, транзакт переходит к следующему блоку. Допускается изменение внутри цикла параметра-счетчика.
Пример.
ASSIGN 5,4,, PH
WAIT ADVANCE 15,3
LOOP PH5, WAIT
Для транзакта, вошедшего в блок ASSIGN, значение 5-го параметра форматом "полуслово" положено равным 4, внутри цикла этот параметр не меняется, следовательно, этот транзакт еще 3 раза возвратится к началу цикла — блоку WAIT.
Создание копий транзактов и синхронизация их движения.
Часто возникают задачи моделирования параллельно протекаемых процессов, синхронизируемых в определенные моменты времени.
Примером может служить производственный процесс, целью которого является изготовление изделия, состоящего из нескольких деталей. Прежде чем поступить к месту сборки изделия, детали проходят обработку в соответствии с технологическими маршрутами. Каждая деталь движется по своему маршруту независимо от других, но процесс сборки может начаться, когда все комплектующие поступят на место сборки (т.е. будет осуществлена синхронизация движения деталей).
Для моделирования таких ситуаций в GPSS/H используются семейства транзактов — множества транзактов, являющихся копиями одного и того же исходного транзакта либо его копий. Транзакты, принадлежащие одному семейству, могут быть синхронизированы. Для создания копий, идентичных исходному транзакту, используется оператор SPLIT, упрощенная форма которого имеет вид:
< SPLIT A, B >
здесь А — количество создаваемых копий;
В — адрес, по которому направляются копии.
Исходный транзакт поступает к следующему за блоком SPLIT блоку.
Для объединения определенного числа транзактов одного
семейства используется оператор:
< ASSEMBLE A >
где А — число п объединяемых транзактов.
Первый из транзактов, принадлежащих некоторому семейству, вошедший в блок ASSEMBLE, задерживается до прихода в блок п - 1 транзакта из данного семейства. После чего первый транзакт переходит к следующему блоку, а оставшиеся п - 1 транзактов уничтожаются.
В одном блоке ASSEMBLE могут накапливаться транзакты из разных семейств. Транзакты одного семейства могут накапливаться одновременно в различных блоках ASSEMBLE.
Для синхронизации движения двух транзактов из одного семейства используются два сопряженных блока MATCH, например:
ААА MATCH BBB
![]()
ВВВ MATCH ААА
В рассматриваемом примере транзакт, вошедший в блок с меткой ААА, будет ожидать в этом блоке прихода члена того же семейства в блок с меткой ВВВ.
Упражнение.
Проанализировать программу, моделирующую процесс изготовления изделия из двух деталей. Детали поступают с интервалом (300 ± 50) единиц времени. Обработкой деталей занимаются двое рабочих (один рабочий обрабатывает одну деталь). Процесс обработки каждой из деталей включает по две операции. Для первой детали время выполнения операций равно (70 ± 20), (20 ± 10), для второй — (60 ± 30), (30 ± 20). После выполнения первой операции рабочие производят сверку, время выполнения которой пренебрежительно мало (полагается равным нулю). По окончании обработки деталей третий рабочий производит сборку готового изделия из двух деталей со временем (50 ± 20).
* поступление деталей на обработку
GENERATE 300, 50
SPLIT l, MANB
* обработка первым рабочим первой детали
MANA SEIZE 1
ADVANCE 70, 20 операция 1
МЕТ1 MATCH MET2 сверка
ADVANCE 20,10 операция 2
RELEASE 1
TRANSFER ,MANG
* обработка вторым рабочим второй детали
MANB SEIZE 2
ADVANCE 60, 30 операция 1
МЕТ2 MATCH MЕT1 cвepкa
ADVANCE 30, 20 операция 2
RELEASE 2
* сборка изделия третьим рабочим
MANC ASSEMBLE 2
SEIZE 3
ADVANCE 50, 20 сборка
RELEASE 3
* выход готового изделия
TERMINATE
