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

2.5.2. Алгоритм ситуационно-имитационного моделирования

С целью минимизации вычислений, выполняемых машиной вывода, предлагается использовать алгоритм, в котором учет модельного времени организован с использованием централизованного календаря событий. За основу взят алгоритм, предложенный в [33–34] и доказавший свою эффективность и быстродействие при решении практических задач в системе BPsim. В процессе работы машина вывода Ips взаимодействует со следующими очередями:

Календарь (Calendar) – очередь, содержащая упорядоченный по модельному времени перечень правил, которые должны выполнить одно из действий в определенный момент времени (проверить условие запуска Ca(t), выполнить действие AIN(t), действие AOUT(t)) или действие агента AAgent(t):

a102.wmf

a103.wmf (2.37)

Список активизированных правил (Active_Rules) представляет собой перечень правил, которые должны в данный момент времени выполнить действие AOUT(t):

a104.wmf

a105.wmf (2.38)

2_6.wmf

Рис. 2.6. Блок-схема работы ИА

Очередь правил (Wait&Lock_Rules), состоящая из «операций», «перекрестков», «источников» и «приемников» – правил, у которых будет выполняться в данный момент действие ACa(t), для правил с признаком прерывания a106.wmf и для действий агентов AAgent(t):

a107.wmf

a108.wmf (2.39)

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

Список агентов (Agent_list), перечень всех агентов, упорядоченный по приоритету. Агенты с наивысшим приоритетом обрабатываются в первую очередь. Приоритет изменяется от 0 до M, причем 0 – наивысший приоритет.

a109.wmf (2.40)

Для работы с очередями введем следующие операторы:

a110.wmf – добавление в S-ю очередь j-го действия правила;

a111.wmf – удаление из R-й очереди i-го действия правила которое было выполнено;

a112.wmf – перемещение o-го действия правила из Q-й очереди в W-ю;

Clear (Rules_QueueX) – очистка X-й очереди от элементов;

Count (Rules_QueueC) – функция, которая определяет количество элементов в очереди.

Для запоминания изменений рабочей памяти на текущем шаге введем очередь Changes_Queue, которая хранит перечень элементов Rps, изменение состояния которых произошло в текущем проходе машины вывода.

Execution (Rules_QueueW) – функция выполнения действий (изменение состояний ресурсов, механизмов, заявок и сообщений) правил W-й очереди. Последовательность обработки действий определяется приоритетом правил.

Машина вывода выполняет в момент запуска подготовительный этап – устанавливает значение модельного времени SysTime, равное нулю или моменту, задаваемому пользователем. В дальнейшем машина вывода циклически выполняет следующую последовательность шагов:

1. Определение текущего момента времени – определяется ближайший момент завершения активности по календарю:

a113.wmf

В случае моделирования непрерывных процессов преобразования ресурсов SysTime = SysTime + ∆t, т. е. имеем пошаговый способ продвижения по модельному времени.

2. Определение списка активизированных событий для момента времени SysTime, в том числе:

1) список завершения активности экземпляров «перекресток» с заданным временем синхронизации:

a114.wmf

2) список завершения активности экземпляров «операция»:

a115.wmf

3) список завершения активности экземпляров «источник» и «приемник»:

a116.wmf

3. Обработка списка агентов. Если в модели присутствует хоть один агент, то Планировщик последовательно, согласно приоритетам, совершает обход агентов (с передачей им полномочий), работает со списком Agent_List. При выполнении 5-го шага алгоритма агента (см. раздел 2.5.1) машина вывода помещает действия агента в очередь правил или в календарь (если действие не будет выполняться в текущем такте). Список выполнения действий экземпляров «агент», запланированных на данный момент системного времени, следующий:

a117.wmf

4. Исполнение действий (соответствующих активизированным правилам и определенным на предыдущем шаге) и фиксация изменений в рабочей памяти. Завершение активизированных правил Execute (Active_Rules). Для экземпляров «источник», «приемник», «операция», «агент», условием запуска которых является функция от времени – определение (вычисление) следующего момента a118.wmf активизации и записи его в календарь:

a119.wmf

Для экземпляров, у которых условие запуска содержит помимо временной составляющей иные условия, выполняется проверка условия запуска. В случае невыполнения условия запуска происходит перемещение из календаря в очередь правил:

a120.wmf

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

5. Проверка рабочей памяти. Если состояние памяти изменилось Count (Changes_Queue) ≥ 0, то происходит переход к следующему шагу, иначе – переход на 10-й шаг.

6. Формирование очереди правил.

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

Если такт первый, то машина вывода выбирает все правила. Очередь формируется в следующей последовательности:

1) правила экземпляров «агент»:

a121.wmf

2) правила экземпляров «перекресток»:

a122.wmf

3) правила не активизированных и не попавших в календарь экземпляров «источник» и «приемник»:

a123.wmf

4) пассивные правила (т. е. события, которые активизируются не в определенный момент времени, а при выполнении определенного условия) экземпляров «процесс» и «операция» и правила, находящиеся в очереди прерываний.

При формировании очереди внутри каждого типа, правила выстраиваются в соответствии с приоритетом.

7. «Обнуление» изменений области рабочей памяти (снятие признаков изменения состояния ресурсов и средств): Clear (Changes_Queue).

8. Обработка очереди правил и фиксация изменений в рабочей памяти Execute (Wait&Lock_Rules):

1) проверка исполнения правил экземпляров «агент», в случае выполнения правила – запуск активности «агента»;

2) проверка исполнения правил экземпляров «перекресток», в случае выполнения правила – запуск активности «перекрестка» (блокировка или удаление входных сообщений и формирование выходных);

3) проверка исполнения пассивных правил и тех, которые не попали в календарь экземпляров «источник» и «приемник», в случае выполнения правила – запуск активности (блокировка или удаление входных сообщений и формирование выходных);

4) проверка исполнения пассивных правил экземпляров «процесс» и «операция» и правил с признаком прерывания (с последующей блокировкой механизмов). В случае выполнения правила экземпляр будет активизирован (захват входных ресурсов и средств, расчет времени окончания работы) и правило «удаляется» из очереди.

Данные правила обрабатываются машиной вывода последовательно, начиная с правил высшего приоритета, в следующем цикле:

8.1. Текущее правило. Начало обработки правила. Если текущее правило имеет признак прерывания, то переходим к следующему шагу, если правило не имеет признака прерывания, то шаг 8.3, правил больше нет – шаг 2.

8.2. Условие запуска правила на входных ресурсах выполняется? Если да, то переходим к следующему шагу, иначе – переходим к шагу 8.8.

8.3. Условие запуска на средствах выполняется? Если да, то переходим к шагу 8.5, иначе – переходим к шагу 8.4.

8.4. Правило с абсолютным приоритетом (АП)? Если правило с АП, то переходим на шаг 8.6, иначе – шаг 8.8.

8.5. Обработка правила и фиксация изменений в рабочей памяти (РП). Переход к шагу 8.8.

8.6. Есть ли правила с меньшим приоритетом, использующие недостающие средства? Выбор активизированных правил с меньшим приоритетом и не имеющих признака прерывания, использующих необходимые средства в нужном количестве. Если такие правила есть, то происходит переход к шагу 8.7, иначе – переходим к шагу 8.8.

8.7. Выполнение прерывания, обработка правила АП и фиксация изменений в РП. Происходит прерывание правил, определенных на предыдущем этапе (установление признака прерывания). Выполнение правила с абсолютным приоритетом и фиксирование изменений в рабочей памяти.

8.8. Следующее правило. Если есть необработанные правила, то осуществляется переход к обработке текущего правила – к шагу 8.1, иначе – переходим к шагу 2.

Фиксация изменений рабочей памяти происходит вместе с активизацией события и записью момента окончания в календарь.

9. Изменился ли текущий момент? Определение разницы между ближайшим и текущим моментом времени в календаре. Если разница больше нуля, то происходит переход на следующий шаг (шаг 10), иначе – переход на шаг 2 (для завершения «нуле- вых» работ).

10. Проверка условия окончания имитации. В зависимости от режима остановки имитации:

● окончание времени;

● достижение определенного значения параметра;

● «Если делать НЕЧЕГО».

Если условие окончания имитации выполнено, то моделирование завершено, иначе – машина вывода переходит на следующий цикл (шаг 1).


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

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