Февраль 2010
SPLIT (РАСЩЕПИТЬ)
SPLIT - создает копии текущего транзакта.
Формат: SPLIT A,B,C,D
А - число создаваемых копий;
В - следующий блок для копий;
С - параметр для хранения порядкового номера копии;
D - число параметров у каждой копии.
Поле А определяет число копий, которые образуются при входе текущего транзакта. Эти вновь созданные транзакты по умолчанию идентичны исходному транзакту. Копии входят в блок, указанный в поле В. Исходный транзакт поступает на следующий блок. Параметр поля С используется для задания порядковых номеров копий. Нумерация осуществляется следующим образом. Порядковый номер исходного транзакта увеличивается первым. Если он был равен нулю, при входе транзакта в блок он станет равным единице. Порядковый номер первой копии станет на единицу больше, чем у исходного транзакта Ломера последующих копий также увеличиваются на единицу. Если поле D не задано, копии имеют такое же, как у исходного транзакта число и тип параметров.
Примеры
1. SPLIT 4.THERE
Создает 4 копии вошедшего транзакта и посылает в блок с именем THERE. Исходный
транзакт идет на следующий блок.
2. SPLIT 3,Р$1,1,4
Создает три копии текущего транзакта. Каждая копия будет иметь четыре параметра;
порядковый номер указан в параметре 1. Параметр 1 будет определять номер следующего
блока.
TEST (ПРОВЕРИТЬ)
TEST - сравнивает два стандартных числовых атрибута.
Формат: TEST_r А,В,С
r - внутренний операнд, принимающий значения:
Е - равно;
NE - не равно;
L - меньше чем;
LE - меньше чем или равно;
G - больше чем;
GE - больше чем или равно;
А - стандартный числовой атрибут;
В - стандартный числовой атрибут;
С - номер альтернативного блока.
Значения стандартных числовых атрибутов, указанных в поле А и В, сравниваются отношением, определяемым операндом г. Если условие выполняется, транзакт вводится в блек. Если условие не выполняется и определено поле С, транзакт переходит в указанный блок, если же С не задано, транзакт задерживается в предыдущем блоке.
Примеры
1. TEST_E P$1,2,LABEL
Если значение первого параметра равно двум, транзакт войдет в блок TEST и продолжит
движение в следующий блок. Если значения не равны, транзакт перейдет в блок с меткой
LABEL.
2. TEST_L FN$2,P$2
Если функция 2 меньше, чем параметр 2, транзакт входит в блок TEST, в противном
случае он становится заблокированным.
GATE (ВПУСТИТЬ)
GATE - вспомогательный блок, проверяющий состояния устройств, памятей, логических ключей.
Формат: GATE_R А,В Внутренний операнд R определяет проверяемое условие в виде
логического атрибута и может принимать следующие значения:
U - устройство занято;
NU - устройство не занято;
1 - устройство прервано;
NI - устройство не прервано;
SF - память заполнена;
SNF - память не заполнена;
SE - память пустая;
SNE - память не пустая;
LR - ключ выключен;
LS - ключ включен;
М - транзакт находится в состоянии синхронизации;
MN - транзакт не находится в состоянии синхронизации.
Если проверяемое условие для объекта, номер которого определяется полем А, выполняется (СЛА "ИСТИНА"), то транзакт входит в блок GATE. Если условие "ЛОЖЬ", то возможны два случая:
1) если поле В задано, то транзакт идет в блок, номер которого указан в поле В;
2) если в поле В пробел, то транзакт ждет в предыдущем блоке, пока не выполнится условие.
Примеры
1. GATE_SF 1
Если память номер 1 полна, то транзакт входит в блок GATE, в противном случае ждет ее заполнения.
2. GATE_NU Р$2,МЕТ
Если устройство, номер которого определен параметром Р$2, не занятого транзакт входит в блок GATE, в противном случае он идет в блок с именем МЕТ.
В GPSS используется блок transfer (передать)
Этот блок может быть использован в девяти разных режимах.
Рассмотрим три основных режима:
1. Режим безусловной передачи transfer ,В
А – не используется, В – позиция блока, в которую должен перейти транзакт (это номер или имя блока).
2. Статический режим. В этом режиме осуществляется передача транзактов в один из 2-х блоков случайным образом: transfer А, [B], С
А – вероятность передачи транзакта в блок, указанный в позиции С (РПУ – ошибка);
[В] – позиция блока, в которую должен перейти транзакт с вероятностью (1-A) (РПУ – следующий по порядку блок);
С – позиция блока, в которую должен перейти транзакт с вероятностью А.
Пример: transfer .333, LPRIB1, LPRIB2
LPRIB1 seize PR1 (L – Lable)
LPRIB2, seize PR2
При задании вероятности (операнд А) используется не более трех цифр, причем первый символ записи частоты – точка. Например, 0,235 → . 235
Если операнд – положительное целое число, то вероятность интегрируется в долях тысячи.
3. Режим BOTH. Если в операнде А стоит зарезервированное слово ВОТН, то входящий транзакт сначала пытается перейти к блоку, указанному в операнде В, а если это не удается, то пытается перейти к блоку, указанному в операнде С. Если он не может перейти ни к одному, ни к другому блоку (ни к В, ни к С), то транзакт остается в блоке transfert, до тех пор, пока он не сможет выйти из блока.
Пример: transfer ВОТН, LL1, LL2.
LL1 seize PRI 1
…
LL2 seize PRI2
ИУ STORAGE Ем
или
STORAGE ИУ,Ем - описание накопителя, имеющего ограниченную емкость,
ИУ - имя устройства (память)
Ем - емкость устройства.
ENTER ИУ,Ем - блок занятия памяти,
LEAVE ИУ,Ем - блок освобождения памяти.
TRANSFER ,ИБ - блок передачи транзактов, безусловный режим,
ИБ - имя блока куда передается транзакт.
TRANSFER BOTH,ИБ1,ИБ2 - блок передачи транзактов, условный режим,
BOTH - ключевое слово, обозначающее режим, когда транзакт пытается сначала войти в блок ИБ1, и если это невозможно, то - в ИБ2. Если невозможен вход в ИБ2, то транзакт остается в блоке TRANSFER.
Элементы, отображающие одноканальные обслуживающие устройства
Устройства характеризуются двумя основными свойствами:
1)Каждое устройство в любой момент времени может обслуживать только один транзакт. Если в процессе обслуживания появляется новый транзакт, то он либо ждет своей очереди, либо направляется в другое место, либо прерывает обслуживание, если имеет больший приоритет.
2)Когда транзакт поступает в устройство, он должен пробыть там некоторое время для обслуживания.
Для того чтобы использовать одноканальные устройства, транзакт выполняет следующие шаги:
1.Ждать своей очереди, если это необходимо. Интерпретатор автоматически заставляет транзакт ждать очереди, если это необходимо.
2.Когда подходит очередь, занять устройство.
3.Устройство находится в состоянии занятости в течение некоторого интервала обслуживания.
4.Когда обслуживание закончится, освободить устройство в некоторый момент модельного времени.
Шаг 2 реализуется блоком seize А (занять устройство),
где А – символьное или числовое имя занимаемого устройства (результат по умолчанию РПУ – ошибка). При входе в блок состояние устройства изменяется со «свободное» на «занятое».
Шаг 4 реализуется блоком release A (освободить устройство),
где А – символьное или числовое имя освобождаемого устройства (РПУ – ошибка).
Шаг 3 реализуется блоком advance А, [В] (задержать),
где А – среднее время задержки на обслуживание (значение по умолчанию ЗПУ А= 0), В – половина поля допуска равномерно распределенного времени задержки (ЗПУ В = 0)
Шаг 1 реализуется автоматически, однако система GPSS автоматически не выводит статистику об очереди. Для получения статистики существует регистратор очереди. В модели может быть несколько регистраторов очередей, различающихся именами. Регистратор очереди вносится в модель парой взаимосвязанных блоков:
queue A, [B]
depart A, [B]
A – имя очереди, в которую становится транзакт (РПУ – ошибка),
В – число единиц, на которые увеличивается (для queue), уменьшается (для depart) длина очереди (ЗПУ = 1).
Пример: Пусть необходимо собрать статистику об ожидании в очереди при обслуживании устройством PRIB.
seize PRIB; заняли устройство
depart QPRIB
advance 16, 4;
release PRIB
Блоки занятия и освобождения очереди
Транзакт помещается в очередь в том случае, когда некоторое устройство не в состоянии обслужить его немедленно (например, устройство занято, либо память переполнена). Статистические данные об очередях могут быть получены с помощью двух типов блоков:
QUEUE Ио,К - блок занятия очереди
Ио - имя очереди;
К - количество мест в очереди, занимаемое транзактом.
DEPART Ио,К - блок освобождения очереди
Ио - имя очереди;
К - количество мест в очереди, освобождаемое транзактом.
Блок QUEUE может быть помещен перед любым блоком модели, в котором может возникнуть задержка. Отметим, что очередь к занятому устройству автоматически организуется пакетом моделирования независимо от того, есть в программе блок QUEUE или нет. По очередям печатается информация: имя или номер очереди(QUEUE), максимальная длина очереди за время моделирования (MAX),минимальная длина очереди (CONT.), число входов в очередь (ENTRIES), число входов в очередь без последующего ожидания - нулевые входы (ENTRIES(0)), средняя длина очереди (AVE.CONT), среднее время пребывания в очереди (AVE.TIME), среднее время пребывания в очереди при учете только ненулевых входов(AVE.(0)).
Блоки генерации и удаления транзактов
GENERATE Tcp,Tм,Тн,Кт,Пр,Кп,Рп - блок генерации транзактов
Тср - средний интервал времени между последовательными транзактами;
Тм - разброс интервала времени относительно Тср;
Тн - время появления первого транзакта;
Кт - количество генерируемых транзактов;
Пр - приоритет транзактов;
Кп - количество параметров транзакта;
Рп - размер памяти для одного параметра.
Пример. Задание равномерного закона распределения
generate 6, 4
А = 6, В = 4
Интервал времени поступления является случайным числом со средним 6 и полем допуска 8, т.е. он может принимать значения {1, 2, 3, 4, 5, 6…10}
generate , , , 1
А = В = С = 0 – по умолчанию;
D = 1 – в любой момент времени входит один транзакт.
TERMINATE Nз - блок удаления транзакта
Nз - уменьшение счетчика числа завершений на величину Nз.
Блоки занятия и освобождения приборов
SEIZE Ип - блок занятия прибора
Ип - имя прибора, подлежащего занятию транзактом.
RELEASE Ип - блок освобождения прибора
Ип - имя освобождаемого прибора.
Управление продолжительностью процесса моделирования
В GPSS продолжительностью процесса моделирования можно управлять двумя способами:
1) завершить моделирование после того, как модель покинет заданное число транзактов определенного типа, заданного оператором generate.
2) завершить моделирование по истечению заданного интервала времени.
Блок задержки транзактов
ADVANCE Тср,Тм - параметры блока соответствуют параметрам блока GENERATE.
Краткие сведения о GPSS
Язык GPSS (General Purpose Simulation System) – язык декларативного типа, построенный по принципу объектно-ориентированного языка. Основными элементами языка являются транзакты и блоки, которые отображают соответственно динамические и статические объекты моделируемой системы.
Выбор объектов в конкретной модели зависит от характеристик моделируемой системы. Каждый объект имеет некоторое число свойств, названых в GPSS стандартными числовыми атрибутами или системными числовыми атрибутами (СЧА).
Часть СЧА доступна пользователю только для чтения, а на значения других он может влиять, используя соответствующие блоки.
Объекты
Каждая GPSS-модель должна содержать такие объекты, как блоки и транзакты. Последовательность блоков модели GPSS показывает направления, в которых перемещаются элементы. Каждый такой элемент называется транзактом. Транзакт – динамический элемент GPSS-модели.
Содержательное значение транзактов определяет разработчик модели, он устанавливает аналогию между транзактами и реальными динамическими элементами моделируемой системы.
Типы операторов
Операторы GPSS делятся на три типа:
1блоки;
2операторы описания данных;
3команды GPSS.
В GPSS для ссылки на числа, блоки и объекты используются имена длиной до 250 символов, начинающихся с буквы.
Формат GPSS-блока:
[Номер строки] [<Метка>] <Операция> <Операнды>; <Комментарии>
Номер строки в GPSS World игнорируется.
Метка – последовательность символов, начинающихся с буквы. В некоторых операторах это поле обязательно.
Операция – название блока, т.е. глагол, отражающий его функциональное назначение.
Операнды – задают информацию специфичную для действия данного блока. В общем случае обозначаются символами: А, В, С, D, Е, F, G.
Калибровка модели
Если в результате проведенной оценки качества модели оказалось, что ее целевые свойства не удовлетворяют разработке, то необходимо выполнить ее калибровку, т.е. корреляцию с целью приведения в соответствие предъявляемым требованиям. Процесс калибровки носит интегративный характер и состоит из 3 этапов:
- Глобальные изменения модели (введение новых процессов, изменение типов событий и т.д.)
- Локальное применение модели (изменение некоторых законов распределения моделируемой случайной величины)
- Изменение специальных параметров
На первый взгляд структурные изменения модели (I этап) как более сложное должно рассматриваться только после неудачных попыток изменения параметров и локальной калибровки. Однако такая стратегия может скрыть структурное несоответствие модели или недостаточную ее детализацию. В этом случае структурная калибровка наиболее безопаснее. В общем случае целесообразно объединять оценку свойств имитационной модели и калибровки в единый процесс. Такая стратегия применяется в статическом методе калибровки, которая состоит из следующих шагов:
- Сравнение выходных распределений (цель – оценка адекватности модели; устранение различий основано на внесении глобальных изменений)
- Балансировка модели (цель – оценка чувствительности и устойчивости модели; по ее результатам проводят локальные изменения)
- Оптимизация модели (цель – обеспечение требуемой точности результата. Возможны 3 основных направления работы:
- Дополнительная проверка качества датчиков случайных чисел
- Уменьшение влияния переходного режима
- Применение специальных методов уменьшения дисперсии)
Оценка чувствительности модели
Оценка чувствительности является необходимым элементом. Однако если изменение входного воздействия или параметров в некоторой заданной зоне не отражается на выходном значении, то польза такой модели не велика. В связи с этим возникает задача оценивания чувствительности модели к изменению параметров самой системы. Такую оценку проводят по каждому параметру xk в отдельности. Наиболее простая процедура заключается в следующем:
1) Вычисляется величина относительно среднего приращения параметра - xk
Δxk=(xkmax-xkmin)2/( xkmax+xkmin)*100%
2) Проводится пара модельных экспериментов в крайних точках:
xk=xkmax, xk=xkmin и средних фиксирующих значениях других парметров. Определяется отклик модели: y1=f(xkmin), y2=f(xkmax)
3) Вычисляется относительное приращение табличной переменной:
Δyk=(y2-y1)2/(y2+y1)*100%
В результате для к-параметра и пары значений (Δxk,Δyk) характеризующую чувствительность модели по этому параметру. Аналогично проводим для других параметров и получаем множество таких пар {(Δxk,Δyk)}. Данные полученные при оценке чувствительности модели могут быть использованы при планировании эксперимента: большое внимание должно уделяться тем параметрам, по которым модель является более чувствительной.