Типы узлов имитационной модели — КиберПедия 

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Типы узлов имитационной модели

2019-12-18 215
Типы узлов имитационной модели 0.00 из 5.00 0 оценок
Заказать работу

Узел AG – постоянный генератор транзактов - представляет собой генератор транзактов. Он предназначен для создания транзактов имитационной модели. Транзакты генерируются по одному через определенные пользователем промежутки времени.

Для настройки генератора необходимо задать набор параметров (i,p,r,m,s,o,n). Параметры имеют следующий смысл:

i – номер узла-генератора (int);

p – приоритет (int), назначаемый каждому сгенерированному транзакту (вместо p=0 можно использовать p=none);

r – тип функции распределения интервала времени между двумя последовательно сгенерированными транзактами. Используются условные обозначения: norm – нормальное распределение, unif – равномерное, expo – экспоненциальное, erln – распределение Эрланга, beta – b-распределение, none – интервал, являющийся детерминированной величиной;

m – математическое ожидание интервала времени (float) между двумя последовательно сгенерированными транзактами (r=norm, unif, expo), либо математическое ожидание одного слагаемого этого интервала (r=erln), либо минимальное значение интервала (r=beta), либо постоянная величина этого интервала (r=none);

s – величина, зависимая от типа функции распределения (float): среднеквадратичное отклонение (r=norm), либо максимальное отклонение от среднего (r=unif), либо значение zero (r=expo, none), либо число слагаемых интервала (r=erln, в этом случае s>0.0), либо наиболее вероятное значение интервала времени между двумя последовательно сгенерированными транзактами (r=beta);

o – величина, также зависящая от типа функции распределения (float): либо значение zero (r=norm, unif, expo, erln, none), либо максимальное значение интервала времени между двумя последовательно сгенерированными транзактами (r=beta);

Параметры генератора могут быть изменены во время работы модели с помощью команды cheg (change generator).

Узел SERV – обслуживающий многоканальный прибор с абсолютными приоритетами (правило относительных приоритетов реализуется в узле типа queue – очередь), осуществляющий какое-либо обслуживание транзактов в течение модельного времени, отличного от нуля.

С точки зрения имитационной модели “обслуживание” заключается в задержке транзакта на заданный промежуток времени.

Для описания сервера необходимо задать набор параметров (c,u,r,m,s,o). Параметры имеют следующий смысл:

c – число обслуживающих каналов (int), c > 1;

u – дисциплина обслуживания: abs – приоритетная, с прерыванием обслуживания менее приоритетного транзакта, либо none – бесприоритетная;

r – тип функции распределения интервала обслуживания транзактов. Используются условные обозначения: norm – нормальное распределение, unif – равномерное, expo – экспоненциальное, erln – распределение Эрланга, beta – b-распределение, none – интервал является детерминированной величиной;

m – математическое ожидание интервала времени (float) обслуживания транзактов (r=norm, unif, expo), либо математическое ожидание одного слагаемого этого интервала (r=erln), либо минимальное значение интервала обслуживания (r=beta), либо постоянная величина этого интервала (r=none);

s – величина, зависящая от типа функции распределения (float): среднеквадратичное отклонение (r=norm), либо максимальное отклонение от среднего (r=unif), либо значение zero (r=expo, none), либо число слагаемых интервала обслуживания (r=erln, в этом случае s>0.0), либо наиболее вероятное значение интервала времени обслуживания транзактов (r=beta);

o – величина, также зависимая от типа функции распределения (float): либо значение zero (r=norm, unif, expo, erln, none), либо максимальное значение интервала времени обслуживания (r=beta);

Если задать r=abs, то имеются две возможности для работы с прерванными неприоритетными транзактами: либо они "дообслуживаются", либо характер прерывания был таков, что надо возобновить обслуживание сначала.

Узел QUEUE – очередь с относительными приоритетами

Узел queue моделирует очередь транзактов. Для ее описания требуется задать параметр u. Эта очередь строится по одному из двух правил: либо транзакты упорядочены в порядке поступления (для этого необходимо использовать в качестве u слово none), либо, кроме этого, более приоритетные транзакты находятся ближе к началу очереди, а менее приоритетные – ближе к концу. Во втором случае работает правило относительных приоритетов, которое задается с помощью u=prty.

Узел TERM – безусловный терминатор транзактов, назначение которого заключается в следующем: он удаляет из модели входящий в него транзакт и фиксирует время его существования начиная с момента выхода этого транзакта из генератора.

Существуют средства автоматического построения графика изменения потока транзактов, поступающих на вход терминатора.

Если пользователю необходимо иметь инструмент для анализа динамики потока транзактов по какой-то ветви графа, причем "принимающий" узел не является терминатором, то необходимо модель дополнить двумя узлами:

завести дополнительный терминатор и указать его номер в качестве параметра df в функции modbeg;

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

Под временем пребывания в терминаторе подразумевается время жизни транзакта – с момента его генерации и до момента уничтожения в терминаторе.

График динамики потока транзактов, поступающих на вход терминатора, получается автоматически. Его вид аналогичен графику задержки в очереди. График показывает среднее количество транзактов, попадающих в терминатор в единицу модельного времени.

Узел KEY – клапан на пути транзактов – работает по принципу “шлагбаума”. Когда клапан закрыт, транзакт не может в него войти из предшествующего узла. Если же клапан открыт, то транзакт проходит через него в следующий узел без задержки. Среднее время пребывания такого узла в закрытом состоянии подсчитывается автоматически. Для управления этим клапаном или ключом существуют вспомогательные функции hold и rels.

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

Узел CREAT – управляемый генератор транзактов (мультипликатор) - предназначен для создания нового семейства транзактов. Следует отметить, что все транзакты принадлежат какому-то семейству. Транзакты, выходящие из обычного генератора ag, принадлежат к семейству с номером 0. Узел creat, в отличие от ag, – это управляемый генератор.

Для описания управляемого генератора нужно задать набор параметров (f,a,b,l). Логика функционирования узла такова:

через узел проходит порождающий транзакт, который принадлежит семейству f1, и поступает в следующий узел;

одновременно с этим в узле генерируются a новых транзактов, принадлежащих семейству с номером f2=f, которые будут направлены в узел l. В общем случае l и следующий узел – любые узлы (кроме ag), в частности это может быть один и тот же узел. Номера семейств f1 и f2 в общем случае могут совпадать.

После прохождения порождающего транзакта узел creat получает его координаты, т.е. "перемещается". Семейству f2 могут передаваться все свойства порождающего транзакта.

Параметр b имеет следующие значения: либо copy – для тиражирования параметров порождающего транзакта каждому порожденному (включая время жизни), либо none – для присвоения каждому порожденному транзакту в качестве параметров нулевых значений.

Число обслуженных транзактов – это, на самом деле, число порожденных транзактов вновь образуемых семейств.

Узел DELET ( с параметрами (f,a) ) – управляемый терминатор транзактов (демультипликатор) - предназначен для уничтожения группы транзактов, принадлежащих одному и тому же семейству f.

Логика функционирования этого узла такова: в узел входит уничтожающий транзакт семейства f1 и находится там до тех пор, пока в него не поступят a транзактов семейства f2=f. После поступления требуемого количества транзактов заданного семейства они мгновенно уничтожаются, а уничтожающий транзакт переходит в следующий узел. Уничтожающим становится транзакт, первым вошедший в пустой узел delet.

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

Время существования уничтоженных транзактов фиксируется в узле delet, а сам узел получает координаты каждого уничтожаемого транзакта, т.е. он "перемещается" по координатной сетке. Среднее время задержки в данном случае – это среднее время ожидания всех транзактов, которые нужно уничтожить (или части транзактов, если из состояния ожидания узел delet выводится принудительно – выполнением функции freed); число обслуженных транзактов – это число уничтоженных транзактов.

Суперузел PROC – транзактно-управляемый процесс

Суперфункция моделирования транзактно-управляемого непрерывного процесса (сокращенно - "процесс") proc(ep,x,r,m,s,o) объединяет в себе имитацию обслуживающего узла типа serv с одним каналом, перемещение этого узла по общему полю данных на координатной сетке, запуск на время активности функции типа float ep(d), где d – элементарный интервал активности, который определяется системой PILGRIM в процессе моделирования и зависит от параметров x, r, m, s.

Интервал требуемого обслуживания транзакта может быть меньше времени пребывания транзакта в этом узле, так как процесс может быть переведен в состояние "пассивен" или "активен" каким-то транзактом из другого узла с помощью функций activ и passiv.

Если процесс пассивен, то обслуживание транзакта приостанавливается, а выполнение функции ep прерывается до тех пор, пока процесс не будет переведен в активное состояние.

Остальные аргументы имеют следующий смысл:

ep – имя программы, написанной пользователем, или слово dummy; эта программа может моделировать процесс: формула, дифференциальное уравнение и т.д.;

х – номер исходной точки, в которую устанавливается узел proc перед началом моделирования;

r – это либо тип функции распределения интервала активности процесса, либо тип координатного пространства. Если это тип функции распределения, то используются условные обозначения: norm – нормальное распределение, unif – равномерное, expo – экспоненциальное, erln – распределение Эрланга, beta – b-распределение, none – интервал, являющийся детерминированной величиной. Для задания типа пространства используются обозначения: geo – географические координаты, dcr – декартовы координаты;

m – математическое ожидание интервала времени (float) активности (r=norm, unif, expo), либо математическое ожидание одного слагаемого этого интервала (r=erln), либо минимальное значение интервала обслуживания (r=beta), либо постоянная величина этого интервала (r=none), либо интервал "непрерывного" нахождения этого узла на координатной сетке (при r=geo или r=dcr);

s – также параметр интервала активности обслуживания, который зависит от значения параметра r. Это либо среднеквадратичное отклонение (r=norm), либо максимальное отклонение от среднего (r=unif), либо значение zero (r=expo, none), либо число слагаемых интервала обслуживания (r=erln, в этом случае s>0.0), либо наиболее вероятное значение интервала времени обслуживания транзактов (r=beta), либо скорость перемещения узла от одной точки пространства к другой (при r=geo или r=dcr);

o – величина, также зависимая от типа функции распределения (float) интервала активности: либо значение zero (r=norm, unif, expo, erln, none), либо максимальное значение интервала времени обслуживания (r=beta).

Узел DINAM – очередь к процессу с динамическими
пространственно-зависимыми приоритетами

Узел dynam предназначен для моделирования обслуживания транзактов в очереди с динамическими пространственно-зависимыми приоритетами. Этот узел моделирует оптимально-управляемую очередь (очередь типа "скорая помощь"), которая находится на входе узла типа proc. Единственный параметр – это номер узла типа proc (он является следующим), который, в свою очередь, обязательно должен использовать параметр r=geo или r=dcr.

Команды управления узлами

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

Освобождение заблокированного узла – команда freed

Команда freed(n) предназначена для борьбы с блокировкой. Она срабатывает в соответствии со следующей логикой.

Допустим, что в узле delet с номером n "застрял" транзакт. Текущий транзакт, который проходит через функцию freed, мгновенно генерирует вспомогательный транзакт и направляет его в узел n. Этот вспомогательный транзакт "выталкивает" застрявший, приводит delet в нормальное состояние, а сам погибает. Факт посещения вспомогательным транзактом фиксируется в delet и отражается на статистических результатах, но время его жизни равно нулю. Застрявший транзакт будет направлен в следующий за delet узел.

Перенастройка постоянного генератора ag – команда cheg

Команда cheg(n,p,r,m,s,n) предназначена для настройки генератора с номером n на новые значения параметров. Такая перенастройка произойдет "мгновенно" – в смысле модельного времени. Все параметры этой команды имеют то же назначение, что и параметры настройки генератора ag (символическое имя генератора в команде не указывается).

Управление клапаном key – команды hold и rels

Команды hold(n) и rels(n) предназначены для управления клапаном с номером n из любых других узлов. После выполнения hold клапан принимает состояние "закрыт", если до этого он был открыт. Соответственно, после rels клапан перейдет в состояние "открыт", если до этого он был в запертом состоянии.

Привязка транзакта или узла к точке пространства – команды sewt и sewk

Команда sewt(x) помещает текущий транзакт в точку пространства, имеющую номер х (т.е. приписывает ему координаты этой точки путем занесения значения х в параметр транзакта t->tх). Команда sewk(x,i) помещает узел с номером i в точку пространства, имеющую номер х (т.е. приписывает узлу координаты этой точки, записывая значение х в параметр узла k->kх).

Параметры транзактов

Транзакты имеют параметры, некоторые из которых доступны пользователю. Обращение к параметру транзакта возможно только в момент его входа в узел модели и производится через системную переменную t, являющуюся именем входящего в узел транзакта.

Основными параметрами транзакта являются следующие:

t->iu0, t->iu1, t->iu2, t->iu3 – произвольные целочисленные параметры пользователя (используются для хранения информации о состоянии транзакта);

t->ru0, t->ru1, t->ru2, t->ru3 – произвольные параметры пользователя, имеющие вид переменной с плавающей точкой;

t->ga – признак обслуживания транзакта вновь, который устанавливается операцией присваивания eму глобальной константы again, как это было показано при рассмотрении функции serv;

t->pr – приоритет транзакта;

t->ft – номер семейства, к которому принадлежит транзакт;

t->tx – этот параметр запоминает номер (индекс) точки пространства. Номер точки позволяет определить ее координаты в массивах lat и lon.

Изменять, не опасаясь непредсказуемого поведения модели, можно только t->iu0,
t->iu1, t->iu2, t->iu3, t->ru0, t->ru1, t->ru2, t->ru3, t->ga и, иногда, t->pr и t->ft. Изменение других параметров следует доверить только ПИЛИГРИМу.

Параметры состояния узлов

Некоторые параметры узлов доступны пользователю для анализа (но не для их изменения). Параметры содержатся в системном массиве addr. Доступ к параметру осуществляется с помощью выражения вида:

addr [<n>] - > <параметр>, где <n> – номер узла в модели. 

Имена и назначения параметров узлов приведены в таблице 1.

Таблица 1 – имена и значения параметров

Имя Назначение параметра
nc        Число каналов в узле
na        Число транзактов, прошедших через узел на данный момент модельного времени
tn Число транзактов, находящихся в узле на данный момент модельного времени
ts         Среднее время обслуживания, подсчитанное на данный момент.
op        Признак состояния узла типа key. Это целочисленная переменная, принимающая значение глобальной константы true, если клапан открыт, или false, если он закрыт
se         Признак состояния узла типа delet. Это целочисленная переменная, принимающая значение глобальной константы nil, если в узле нет уничтожающего транзакта
kx        Номер (индекс) точки, в которой находится узел типа creat, delet или proc. По номеру точки определяются ее координаты в массивах lat и lon.
saldo, defic Остаток и дефицит средств на бухгалтерском счете, связанном с узлом типа send.
rsal, rdef Остаток и дефицит ресурса на складе, связанном с узлом типа attach.

Для анализа параметров любого узла можно использовать его номер <n>. Например, если транзакту необходимо проанализировать состояние узла типа delet, имеющего номер 5, и, в случае отсутствия уничтожающего транзакта, выполнить какой-то оператор, он должен пройти через следующее выражение:

    if (addr[5]->se == nil)

              <оператор>;

причем сам транзакт в это время находится в произвольном узле. Следует отметить, что возможны пробные обращения координатора network к ветви top(<n>): в смысле передачи управления, но не ввода транзакта в узел. Факт входа транзакта фиксируется в глобальной переменной go и автоматически анализируется всеми функциями ПИЛИГРИМа. Поэтому еще раз необходимо обратить внимание на то, что поток управлений в программе и поток транзактов в модели - это разные явления.


Поделиться с друзьями:

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.