Февраль 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, в противном

случае он становится заблокированным.

Будь как свежий огурец! Подпишись на RSS!

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    (L – Lable)

LPRIB2, seize 2

При задании вероятности (операнд А) используется не более трех цифр, причем первый символ записи частоты – точка. Например, 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)).

Будь как свежий огурец! Подпишись на RSS!

Блоки генерации и удаления транзактов

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.

Что бы Ктулху не воскрес, подпишись на RSS!

Краткие сведения о GPSS

Язык GPSS (General Purpose Simulation System) – язык декларативного типа, построенный по принципу объектно-ориентированного языка. Основными элементами языка являются транзакты и блоки, которые отображают соответственно динамические и статические объекты моделируемой системы.

Выбор объектов в конкретной модели зависит от характеристик моделируемой системы. Каждый объект имеет некоторое число свойств, названых в GPSS стандартными числовыми атрибутами или системными числовыми атрибутами (СЧА).

Часть СЧА доступна пользователю только для чтения, а на значения других он может влиять, используя соответствующие блоки.

Объекты

Каждая GPSS-модель должна содержать такие объекты, как блоки и транзакты. Последовательность блоков модели GPSS показывает направления, в которых перемещаются элементы. Каждый такой элемент называется транзактом. Транзакт – динамический элемент GPSS-модели.

Содержательное значение транзактов определяет разработчик модели, он устанавливает аналогию между транзактами и реальными динамическими элементами моделируемой системы.

Типы операторов

Операторы GPSS делятся на три типа:

1блоки;

2операторы описания данных;

3команды GPSS.

В GPSS для ссылки на числа, блоки и объекты используются имена длиной до 250 символов, начинающихся с буквы.

Формат GPSS-блока:

[Номер строки] [<Метка>] <Операция> <Операнды>; <Комментарии>

Номер строки в GPSS World игнорируется.

Метка – последовательность символов, начинающихся с буквы. В некоторых операторах это поле обязательно.

Операция – название блока, т.е. глагол, отражающий его функциональное назначение.

Операнды – задают информацию специфичную для действия данного блока. В общем случае обозначаются символами: А, В, С, D, Е, F, G.

Что бы Ктулху не воскрес, подпишись на RSS!

Калибровка модели

Если в результате проведенной оценки качества модели оказалось, что ее целевые свойства не удовлетворяют разработке, то необходимо выполнить ее калибровку, т.е. корреляцию с целью приведения в соответствие предъявляемым требованиям. Процесс калибровки носит интегративный характер и состоит из 3 этапов:

  1. Глобальные изменения модели (введение новых процессов, изменение типов событий и т.д.)
  2. Локальное применение модели (изменение некоторых законов распределения моделируемой случайной величины)
  3. Изменение специальных параметров

На первый взгляд структурные изменения модели (I этап) как более сложное должно рассматриваться только после неудачных попыток изменения параметров и локальной калибровки. Однако такая стратегия может скрыть структурное несоответствие модели или недостаточную ее детализацию. В этом случае структурная калибровка наиболее безопаснее. В общем случае целесообразно объединять оценку свойств имитационной модели и калибровки в единый процесс. Такая стратегия применяется в статическом методе калибровки, которая состоит из следующих шагов:

  • Сравнение выходных распределений (цель – оценка адекватности модели; устранение различий основано на внесении глобальных изменений)
  • Балансировка модели (цель – оценка чувствительности и устойчивости модели; по ее результатам проводят локальные изменения)
  • Оптимизация модели (цель – обеспечение требуемой точности результата. Возможны 3 основных направления работы:
  1. Дополнительная проверка качества датчиков  случайных чисел
  2. Уменьшение влияния переходного режима
  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)}. Данные полученные при оценке чувствительности модели могут быть использованы при планировании эксперимента: большое внимание должно уделяться тем параметрам, по которым модель является более чувствительной.

Счетчики посещений
Linq.RU - Обмен ссылками тематические разделы партнеры