Научная электронная библиотека
Монографии, изданные в издательстве Российской Академии Естествознания

3.2.2. Математический аппарат

Математический аппарат используется для описания преобразователей (функций условия запуска, входа, выхода, обработки сообщений), целей, параметров, агентов.

Одним из основных требований к языку BPsim2 является требование простоты. Оно достигается за счет ограниченного числа введенных синтаксических конструкций, представленных в графическом виде. BPsim2 является языком структурного типа, что по общепринятому на данный момент мнению также облегчает разработку имитационных программ [3].

Синтаксические правила задаются с помощью графико-синтаксических диаграмм (интерфейсов), ориентированных на проблемную область процессов преобразования ресурсов.

Перечень операндов МАС преобразователей

В качестве операндов используются следующие множества: ресурсов RES; средств MECH; заявок Order; сигналов Sig; целей G; агентов Agent; сообщений Message; параметров P. Операторами задания операндов являются следующие: описания ресурса; описания средства; описания заявки; описания цели; описания агента; описания сообщения; описания параметра.

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

● декомпозиции (детализирует сложный процесс преобразования ресурсов на композицию более простых);

● внутренний оператор сопряжения элементов подмодели (в графическом виде задает причинно-следственные связи между элементами подмодели). Связь представляет вектор операндов, формируемый i-м элементом на выходе и потребляемый на входе j-м элементом подмодели;

● сопряжения подмоделей (задает в графическом виде причинно-следственные связи между элементами модели верхнего (k – 1)-го уровня декомпозиции процесса преобразования ресурсов и элементами подмоделей (k)-го уровня декомпозиции).

Операторы продукций процесса преобразования ресурсов следующие: задания условия запуска; задания входа; задания выхода; задания средства; задания длительности / интенсивности; задания приоритета.

Операторы продукций интеллектуального агента: задания условия ситуации; задания действия ситуации; задания целей; задания приоритета.

Для описания модели целей сложной системы используются следующие операторы: задания функции вычисления текущего значения цели; определения зоны значений цели.

Перечень математических операций, описывающих условия и действия продукций

В выражениях над операндами в BPsim2 используются следующие стандартные операции:

арифметические операции: «–» – унарный минус; «–» вычитание; «+» сложение; «*» – умножение; «/» – деление; «^» – возведение в степень;

логические операции: «?» – отрицание; «&» – конъюнкция; «|» – дизъюнкция;

операции отношения: «=» – равно; «><» – не равно; «>» – больше; «>=» – больше или равно; «<» – меньше; «<=» – меньше или равно;

присваивания «:=»;

кванторы: «-]» – существования; «\/» – всеобщности; «[-» – принадлежности; «~[-» – непринадлежности;

уточнения «#» (определение значения операнда пользователем во время эксперимента).

Дополнительные операции: генерация случайного значения «randomize()»; экспонента «exp»; логарифм натуральный «ln»; корень квадратный «sqrt»; целая часть от деления «!»; дробная часть от деления «$».

В выражениях могут использоваться скобки «(», «)», «[», «]».

Учитывая специфику процессов преобразования ресурсов и требования к простоте языка, операторные выражения в зависимости от принадлежности операндов к входам/выходам/механизмам/агентам при выполнении различных действий продукции (ActionCa, ActionIN, ActionLock, ActionUnLock, ActionOUT, ActionMech, ActionAgent) интерпретируются определенным образом. Зависимость интерпретации операторного выражения от действий приведена в табл. 3.1, где F – операторное выражение, определенное пользователем.

Функции для работы с очередями заявок:

1. SelectAllMessage([usl],[mUsl],[mDo]) – функция выбора множества заявок, которую следует читать так: пока выполняется общее условие usl, выбрать (пометить) все сообщения, для которых выполняется условие mUsl; действие mDo выполнить столько раз сколько выбрано заявок. Например,

SelectAllMessage

([(Z6_count < 300)],[(Z2_owner = @bA0_1)&(Z2_count < 300)], [Z6_count: = Z6_count + Z2_count]), что означает выполнение последовательности действий:

1) условие (Z6_count < 300) выполняется? – Да – п. 2, нет – выход;

2) существует заявка [(Z2_owner = @bA0_1)&(Z2_count < 300)]? Да – п. 3, нет – выход;

3) изменить значение параметра Z6_count;

4) переход на п. 1.

Таблица 3.1

Интерпретация операторных выражений

Действие

Выполняемая операция

Описание

Проверка условия запуска на входном ресурсе RESi

(RESi – F) > = 0,

где RESi – текущее количество i-го ресурса, F – количество i-го ресурса необходимое для выполнения правила

Если результат вычисления отрицательный, то условие запуска на входном ресурсе не выполнилось.

Проверка условия запуска на механизме MECHi

(MECHi – F) > = 0,

где MECHi – текущее количество i-го механизма, F – количество i-го механизма, необходимое для выполнения правила

Если результат вычисления отрицательный, то условие запуска на механизме не выполнилось.

Захват входного ресурса RESi

RESi = RESi – F

Уменьшение количества ресурса на величину, заданную пользователем

Блокировка механизма MECHi

MECHi = MECHi – F

Уменьшение количества ресурса механизма на величину, заданную пользователем

Освобождение механизма MECHi

MECHi = MECHi + F

Увеличение количества ресурса механизма на величину, заданную пользователем

Формирование выходного ресурса RESi

RESi = RESi + F

Увеличение количества ресурса на величину, заданную пользователем

2. DeleteAllMessage([mUsl],[mDo]) – функция освобождения множества заявок. Для заявок, на которых выполняется условие mUsl, выполнить действие mDo.

DeleteAllMessage([Z2_lock = @bA0_5_1_1],[Z2_owner: = @bA0_5_1])

3. CreateOrder(nam) – создать экземпляр заявки Nam.

4. DeleteOrder(nam) – удалить экземпляр заявки Nam, заблокированный текущим блоком.

5. Count(queue, [p1…pn], [v1...vn]) – функция возвращает количество элементов очереди, удовлетворяющей условию ограничения по параметрам очереди.

6. Select(queue, [p1…pn], [v1...vn]) – функция возвращает номер элемента очереди, удовлетворяющей условию ограничения по параметрам и приоритетам.

7. NewElementQueue(p1…pn) – добавляет новый элемент в очередь и устанавливает его атрибуты.

8. LockCurent(queue) – блокирование текущего элемента очереди.

9. UnLockCurrent(queue) – разблокирование текущего элемента очереди.

10. MAX(p1…pn) – выбор максимального значения из некоторого множества числового или множества переменных, то же самое и MIN(p1…pn), например:

(fRes66: = min(fRes55;fRes66;fRes102;fRes104;fRes106;fRes108;fRes110; fRes112;fRes114;fRes58;)).


Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»
(Высокий импакт-фактор РИНЦ, тематика журналов охватывает все научные направления)

«Фундаментальные исследования» список ВАК ИФ РИНЦ = 1,674