Смекни!
smekni.com

Подсистема визуального отображения процесса интерпретации сетевых моделей в системе имитационного моделирования МИКРОСИМ (стр. 4 из 13)

В силу этих ограничений, вынужденным решением было отказаться от визуализации процесса моделирование в реальном времени. Это никак не отражается на точности и наглядности визуализации, однако, для обеспечения работы такого решения необходим внешний файл, который, при некорректном задании параметров модели, может быть очень большим по размеру и на его подготовку может уйти значительное время.

В процессе работы интерпретатора создается файл <имя модели>.log, в который, при каждом срабатывании перехода в процессе интерпретации модели, записывается информация о состоянии сработавшей элементарной Е-сети.

Информация представляется в следующей последовательности:

· имя сегмента, в котором сработал переход;

· имя перехода;

· время;

· единица времени;

· задержка;

· единица времени;

· входная позиция;

· количество фишек в ней;

· выходная позиция;

· количество фишек в ней;

Состояние позиций отображается на момент до начала срабатывания перехода.

1.1.6 Запись состояния модели в файл

Разработчику при исследовании модели далеко мне всегда может потребоваться графическое отображение процесса моделирования. Принимая во внимание этот факт и то, что файлы, содержащие информацию о работе модели, могут быть достаточно большими, что требует наличия дополнительного свободного дискового пространства, было принято решение о том, что при запуске модели на исполнение должна существовать возможность указания необходимости в последующей визуализации исследуемого процесса.

В МИКРОСИМ существует возможность трассировки, как раз и предназначенная для наблюдения процесса работы модели, которая позволяла получать информацию о сработавших переходах в процессе моделирования. Поскольку разрабатываемая подсистема позволит, в случае необходимости, более полно отразить процесс, было принято решение, о том, что признак трассировки модели и будет означать необходимость последующей визуализации процесса ее интерпретации. Признак трассировки задается предложением TRACE при задании параметров модели на языке ЯЗП.

Для реализации трассировки модели в исполнительной подсистеме МИКРОСИМ существует специальная процедура I00TRD из модуля ISPINT. Данный модуль и является интерпретатором модели, иными словами Е-сетевой машиной. Алгоритм ее функционирования представлен ниже.

1.1.7 Алгоритм функционирования интерпретатора сетевых моделей

Е-сетевая модель может быть приведена в движение с помощью особого интерпретатора, который реализует алгоритм функционирования Е-сетевой машины. Формально Е-сетевая машина, воспринимая на своем входе определенную маркированную Е-сеть, приводит в движение имеющиеся в этой сети фишки в соответствии с правилами выполнения элементарных сетей. Основные функции Е-сетевой машины при этом сводятся к следующим действиям:

1. Выявление условий срабатывания переходов в элементарных сетях, входящих в обрабатываемую Е-сетевую модель.

2. Назначение на выполнение тех элементарных сетей, в которых возникают условия срабатывания перехода.

3. Реализация временных задержек, ассоциированных с переходами при их срабатывании (реализация активных фаз сработавших переходов).

4. Перемещение фишек из входных в выходные позиции каждого сработавшего перехода в момент завершения активной фазы в зависимости от типа элементарной сети, отвечающей данному переходу.

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

6. Сбор статистических данных о поведении обрабатываемой Е-сети.

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

Интерпретация модели может выполнятся лишь после сборки модели из предварительно скомпилированных сегментов, входящих в ее состав, и после установки параметров собранной модели (скомпонованной) модели на языке задания параметров (ЯЗП). Готовая к интерпретации Е-сетевая модель представляется в памяти компьютера справочником и набором сетевых и процедурных компонентов сегментов, входящих в модель.

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

T – список сегментов модели: в списке находятся справочники всех сегментов, составляющих модель. Справочники сегментов упорядочены в списке T по возрастанию времени наступления ближайших событий в сегментах, т.е. по возрастанию значений, хранящихся в поле LOWTIME справочника сегмента. Справочники сегментов с одинаковым значением поля LOWTIME располагаются в списке T согласно дисциплине обслуживания FIFO; поле LOWTIME в справочнике пассивного сегмента (т.е. сегмента, в котором нет активных переходов) содержит значение MAXREAL (максимально возможный момент времени, или «бесконечность»).

S – список активных переходов сегмента: в список включаются таблицы тех переходов сегмента, процесс срабатывания которых находится в активной фазе. Переходы упорядочены в списке S по возрастанию времени окончания активных фаз. Значение этого времени для активного перехода хранится в поле FINT таблицы перехода и выражено в единицах времени модели. Таблицы переходов с одинаковым значением поля FINT располагаются в списке S согласно дисциплине обслуживания FIFO.

I – список прерываний: в список включаются переходы сегмента, принадлежащие элементарным сетям типа I, во входных позициях которых одновременно находятся основная и прерывающая фишки.

R – список потенциально активных переходов: в список включаются таблицы тех переходов, у которых состояние входных и выходных позиций соответствует условию срабатывания, но функция (процедура) входного и / или выходного выбора (управления) задает пустое множество позиций (неопределенное (нулевое) значение траектории перемещения фишки). Таблицы переходов в списке R располагаются согласно дисциплине обслуживания LIFO.

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

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

Алгоритм функционирования Е-сетевой машины реализуется следующими процедурами модуля ISPINT:

Процедура I000 – Управление интерпретацией модели.

Процедура I001 – Подготовка интерпретации модели.

Процедура I002 – Основной цикл интерпретации модели.

Процедура I00MC – Управление интерпретацией сегмента.

Процедура I00MS – Управление срабатыванием переходов в сегменте.

Процедура I00PT – Выполнение операций, ассоциированных со срабатыванием перехода.

Упрощенно, структура интерпретатора модели представлена на рис. 2.4.

Алгоритм функционирования процедуры I00MS, управляющей срабатыванием переходов, рассмотрим более подробно:

1. [Инициализация]

Инициализировать список I.

2. [Контроль возможности приостановки]

Если условие приостановки интерпретации истинно, то установить код возврата и завершить процедуру (выход).

3. [Контроль списка I]

Если список I пуст, то перейти на шаг 4; в противном случае исключить (выбрать) переход из списка I и перейти на шаг 8.

4. [Контроль списка S]

Если список S пуст, то завершить процедуру (выход).

5. [Подготовка к работе с переходом]

Настроиться на работу с первым переходом в списке S.

6. [Контроль момента активизации]

Если момент активизации FINT выбранного (из списка S) перехода больше текущего модельного времени, то установить LOWTIME<–FINT и завершить процедуру (выход).

7. [Исключение выбранного перехода из списка S]

Выполнить процедуру I00DSL.

8. [Контроль признака трассировки перехода]

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

9. [Выполнение операций, ассоциированных со срабатыванием перехода]

Выполнить процедуру I00PT.

10.[Контроль успешности операций]

Если выявлена ошибка при срабатывании перехода, то завершить процедуру (конец).

11.[Контроль активизации переходов по входным позициям]

Проверить условие активизации переходов, связанных со входными позициями сработавшего перехода, из которых удалены фишки в результате срабатывания.

12.[Контроль активизации переходов по выходным позициям]

Проверить условие активизации переходов, связанных с выходными позициями сработавшего перехода, в которые поступили фишки в результате срабатывания.

13.[Повторный контроль сработавшего перехода]

Проверить условие повторной активизации сработавшего перехода (и если условие истинно, то должным образом отразить это в списках S, I, R).

14.[Контроль активизации переходов из списка R]

Проверить условие активизации переходов, находящихся в списке R.