Исследовательская среда визуального...

31
Санкт-Петербургский Государственный Политехнический университет. Факультет технической кибернетики. Кафедра распределённых вычислений и компьютерных сетей OpenMVLShell Исследовательская среда визуального моделирования Исаков Андрей Алексеевич 02.10.2013 Данный документ посвящен техническому обзору реализации открытой исследовательской среды визуального моделирования OpenMVLShell, раскрытию основных принципов работы пакета. Дано описания разработки, как с точки зрения обучаемого основам объектно-ориентированного моделирования, так и с точки зрения разработчика-исследователя.

Transcript of Исследовательская среда визуального...

Page 1: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

Санкт-Петербургский Государственный Политехнический университет.

Факультет технической кибернетики. Кафедра распределённых

вычислений и компьютерных сетей

OpenMVLShell Исследовательская среда визуального

моделирования

Исаков Андрей Алексеевич

02.10.2013

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

Page 2: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

1

Оглавление 1 Введение .............................................................................................................................................. 2

2 Предпосылки создания стандарта на разработку ............................................................................ 3

3 Проект OpenMVL ................................................................................................................................. 6

4 OpenMVLShell как инструмент обучения ........................................................................................... 6

5 Работа в проекте OpenMVL ................................................................................................................. 7

5.1 Подключение к проекту .............................................................................................................. 7

5.2 Redmine ........................................................................................................................................ 7

5.3 Настройка среды разработки ..................................................................................................... 8

5.4 Терминология ............................................................................................................................ 10

6 Текущее состояние разработки OpenMVLShell ............................................................................... 10

6.1 Моделирование в OpenMVLShell ............................................................................................. 11

6.2 Предопределенные команды .................................................................................................. 14

6.3 Главное меню и панель инструментов .................................................................................... 15

7 Программная структура пакета OpenMVLShell ............................................................................... 17

7.1 Решение OpenMVLShell ............................................................................................................. 19

7.2 Основное приложение. ............................................................................................................. 19

7.3 Предопределенные библиотеки классов ............................................................................... 20

7.4 Динамические компоненты OpenMVLShell ............................................................................. 20

7.5 Самодокументируемый код ..................................................................................................... 28

7.6 Структура репозитория ............................................................................................................. 28

8 Заключение ........................................................................................................................................ 29

9 Литература ......................................................................................................................................... 29

Page 3: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

2

1 Введение В 1968 году был разработан стандарт CSSL (Continuous System Simulation Language – язык

моделирования непрерывных систем), который стал вехой в развитии стандартов. Он обобщил

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

возможностей таких приложений и определил структуры моделей. Стандарт CSSL предлагает

структуры и возможности для описания модели и для экспериментирования с нею. Структура

ядра системы иллюстрируется на рис. 1 вместе с элементами, обслуживающими дискретное

поведение модели.

Рисунок 1. Расширенная структура сред моделирования на базе стандарта CSSL с дискретными

элементами.

Математический базис ядра среды моделирования это описание в пространстве состояний вида:

)1(,)(),,),(),(()( 00 xtxpttutxftx

где )(tx

– переменные состояния,

)(tu

- переменные управления, p

– параметры модели.

Это описание используется решателями ОДУ. Какое бы ни было исходное описание модели оно

должно быть приведено к (1). В этой схеме вектор производных ),,,( ptuxf

используется, чтобы

вычислить новое состояние ),,(1 hfxx iii

, где h размер шага (все контролируется ядром

моделирования), в дискретных моментах времени it .

Описанная форма задания модели делает стандарт CSSL не подходящим для современных

технологий моделирования, потому как на практике в сегодняшних средствах моделирования

общепринятыми являются описание моделей в форме АДУ, ОДУ, НАУ – значительно более

широкое многообразие моделей.

Современные пакеты компьютерного моделирования давно отошли от стандарта CSSL и каждый

развивается своим путем, наращивая функционал, востребованный на практике. Данные

практические возможности, никак не отраженные в стандарте CSSL, были выделены в статье [2].

Авторы в данной работе определяются распространенные и структурные возможности сред

Page 4: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

3

моделирования и сравниваются наиболее популярные современные пакеты компьютерного

моделирования в отношении данных возможностей (табл. 1).

Таблица 1. Доступность распространенных и структурных возможностей в пакетах визуального

моделирования

Кл

асси

фи

кац

ия

мо

де

ле

й

Оп

иса

ни

е с

об

ыти

й

Об

раб

отк

а со

бы

тий

сост

оян

ия

Ре

ше

ни

е А

ДУ

По

ни

же

ни

е и

нд

екс

а

Фи

зиче

ско

е

мо

де

ли

ро

ван

ие

(те

кст)

Фи

зиче

ско

е

мо

де

ли

ро

ван

ие

(гр

афи

ч.)

«О

нл

айн

» в

изу

али

зац

ия

Кар

та п

ове

де

ни

я (т

екс

т)

Кар

та п

ове

де

ни

я (г

раф

ич.

)

Стр

укту

рн

о-д

ин

ами

ческ

ий

анал

из

Час

тотн

ый

ан

али

з

MATLAB нет нет (да) (да) нет нет нет (да) нет нет да да Simulink да (да) (да) (да) нет нет (нет) (да) нет нет нет да

MATLAB/Simulink да да да (да) нет нет (нет) (да) нет нет да да Simulink/Stateflow да да да да нет нет (нет) (да) (да) да нет да Simulink/Simscape да да да да (да) да да (да) нет нет нет да

Simulink/Simscape/Stateflow да да да да (да) да да (да) (да) да нет да

Matlab/SL/SS/ Stateflow

да да да да (да) да да (да) (да) да да да

ACSL да да да да нет нет (нет) (да) нет нет нет да Dymola да да да да да да да да (да) (да) нет (нет)

MathModelica да да да да да да да (да) (нет) (да) нет (нет) MathModelica/ Mathematica

да да да да да да да да (нет) (да) да да

Misilab да да да да (нет) да да (нет) да да да нет

OpenModelica да да да да да да (нет) (нет) (нет) (да) нет нет SimulationX да да да да да да да да (нет) (да) нет да

AnyLogic да да (да) (да) нет нет нет да да да да нет

Model Vision Studium да да да да да да да да да да да да

Scilab да нет (да) (да) нет нет нет (да) нет нет да да

Scicos да (да) да да (да) да да (да) да (да) нет нет

Scilab/Scicos да да да да (да) да да (да) да (да) да да

MapleSim да (да) (да) да да да да да нет нет (да) (да)

Сравнение возможностей, по мнению автора, – правильный шаг на пути создания стандарта в

области создания пакетов компьютерного моделирования. Опираясь на потребности

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

является спецификой конкретно взятого пакета моделирования.

2 Предпосылки создания стандарта на разработку

Проблема отсутствия общепринятого стандарта среди пакетов компьютерного моделирования

ведет к тому, что для каждой среды разработки моделей реализуется своя библиотека

стандартных моделей. Это всегда уникальные коллекции, иногда продаваемые отдельно от

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

моделированию и исследования пакета на предмет его возможностей, производительности и

точности воспроизведения решения. Конвертирование моделей из одной среды в другую часто

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

Page 5: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

4

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

гарантировать (если модель не тривиальна), что в пакет будет загружена эквивалентная

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

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

является закрытым, не представляется возможным посмотреть, с каким именно представлением

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

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

методам для непосредственного решения, с какими настройками будет запущен тот или иной

метод решения.

Для того чтобы удовлетворить практически потребности пользователей, наиболее

распространенные из которых приведены в табл. 1, разработчики реализуют в пакете

компьютерного моделирования некоторые (иногда эвристические) алгоритмы решения научно-

технических задач, возникающих в процессе работы. Закрытость исходного кода пакетов не

позволяет сравнивать эти алгоритмы, говорить об эффективности различных реализаций. Обо

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

Высокая стоимость пакетов моделирования в совокупности с закрытостью программного

решения, принятого разработчиками среды визуального моделирования, с точки зрения обучения

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

которыми автоматически должен справляться инструмент моделирования. Специалист,

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

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

описания моделей и научился менять настройки визуальной модели. Часто непонимание

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

действительности модель пользователя приводит к некорректной математической системе,

которую заведомо невозможно (или практически невозможно) решить.

Все данные аспекты являются предпосылками к созданию современного стандарта в области

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

1. Классификация основных типы моделей (НАУ, ОДУ, АДУ);

2. Унификация входного языка описания моделей (на базе UML);

3. Декларирование стандартных инструментов работы с моделью, исследования ее

поведения;

4. Определение фундаментальных проблем, которые должны быть разрешены в пакетах

компьютерного моделирования, чтобы обеспечить в них автоматическое выполнение всех

этапов численного эксперимента и реализовать при этом поддержку важных практических

функций (табл. 1):

a. Перевод данных проблем на язык математики и теории алгоритмов;

b. Предложение имеющихся в настоящей теории и практике решений

сформулированных проблем;

5. Определение структуры пакета, которая обладала бы свойство расширяемости;

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

В силу того, что успешные профессиональные пакеты компьютерного моделирования постоянно

наращивают список предоставляемых пользователю возможностей, и на практике оказываются

Page 6: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

5

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

укладываются в табл. 1), декларируемый стандарт должен динамически развиваться, то есть:

1. Содержать актуальный список возможностей пакетов визуального моделирования;

2. Отражать наиболее современные придуманные разработчиками решения;

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

возможностей пакетов;

4. Пополняться новыми модельными задачами, отражающие новые классические задачи,

встречающиеся на практике.

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

развиваться некоторый практических базис – «скелет» современной среды компьютерного

моделирования. Автором данного пособия был сформулирован план предлагаемого стандарта и

разработан программный комплекс «OpenMVLShell», которые полностью согласуется с этим

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

поддержку всех этапов численного эксперимента.

В качестве языка моделирования был выбран язык Model Vision Language [8-10], который

опирается на UML (стандарт в своей области) и развивает идею гибридного подхода к описанию

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

профессиональными пакетами компьютерного моделирования (Model Vision Studium, AnyLogic,

Matlab, Dymola и др.).

Пакет компьютерного моделирования построен в соответствии с определяемой в стандарте

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

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

независимо изменен при условии согласования его интерфейса с другими составляющими среды

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

одни и те же функции различными способами. В таком случае можно проводить на практических

тестах сравнение имеющихся программных решений по скорости построения и выполнения

модели и по точности воспроизведения получаемого решения.

Для простоты модификации пакета «OpenMVLShell» было принято решение максимально

упростить графический интерфейс и оставить в нем то необходимое, что достаточно для

проведения всех этапов численного эксперимента:

1. Редактор команд (загрузка модели в пакет, ее структурный анализ, построение

программной реализации и пр.);

2. Испытательный стенд (временные и фазовые диаграммы).

Данное упрощение позволяет абстрагироваться от нюансов визуального отображения оболочки и

сосредоточиться на решении фундаментальных проблем определенных в рамках стандарта.

Несмотря на то, что такая минимизация сильно усложняет моделирование с точки зрения

пользователя и делает «OpenMVLShell» не пригодным для верстки сложных практических

приложений, она делает данный программный комплекс простейшим подручным инструментом

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

сравнить их с существующими подходами.

Важно также, что проект «OpenMVL» открыт к подключению для всех желающих [15]. Доступ к

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

проблемами, имеющимися в моделировании. Таким образом, ставится цель в открытом формате

Page 7: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

6

накапливать исследовательский опыт посредством использования возможностей и ресурсов

Интернета.

3 Проект OpenMVL Проект «OpenMVL» (среда моделирования «OpenMVLShell»):

является свободно распространяемым (бесплатным);

сохранил всю полноту объектно-ориентированного подхода, отказавшись от графической

формы языка моделирования (сохранение всех возможностей объектно-

ориентированного моделирования);

предоставил пользователям возможность проводить вычислительные эксперименты с

построенной моделью;

предоставляет пользователям открытые коды всего проекта (возможность

модифицировать любую его часть);

предлагает использовать язык Model Vision Language – MVL (предложенный авторами

пакета Rand Model Designer [10-13]), наследующий объектно-ориентированный подход

(объектно-ориентированное моделирование) языка Modelica [18], расширяющий

возможности моделирования гибридных систем, стандартизованный в соответствии с

требованиями языка UML.

Такого рода минимизация упрощает реализацию различных подходов в пакете (нет

необходимости сопровождать сложные графические инструменты описания и отладки модели –

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

4 OpenMVLShell как инструмент обучения Можно выделить два подхода к практическому обучению моделированию:

Пассивный метод обучения: предоставить студентам один или несколько пакетов

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

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

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

графическим интерфейсам и формам описания моделей и их выполнения. В качестве

недостатка такого подхода можно выделить относительно неглубокое понимание, как

именно пакетом компьютерного моделирования выполняются все этапы численного

эксперимента: как осуществляется построение модели, ее упрощение, построение

совокупной математической системы и другие вещи, которые скрыты внутри

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

разработчиков моделей, то для таких специалистов вполне достаточно понимания как

производить разработку и отладку моделей. И такой подход является вполне

оправданным.

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

на уровне открытых исходных кодов. Таким образом, познакомить их с внутренней

структурой пакета, фундаментальными проблемами, которые возникают при реализации

подобного программного обеспечения. Предложить разобраться в какой-либо подсистеме

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

сформулированных проблем.

Page 8: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

7

Последний подход представляется наиболее эффективным в силу того, что каждый студент имеет

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

принять участие в исследовании (сравнение различных существующих алгоритмов, предложение

нового), положительный результат которого может быть зафиксирован и опубликован. По этим

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

в области моделирования на кафедре «Распределенных вычислений и компьютерных сетей»

(РВКС) Института Информационных Технологий и Управления (ИИТУ) Санкт-Петербургского

Государственного Политехнического Университета (СПбГПУ) в рамках курсов, посвященных

компьютерному моделированию, на базе проекта «OpenMVL».

5 Работа в проекте OpenMVL

5.1 Подключение к проекту

Для того чтобы познакомиться с проектом «OpenMVL» на уровне исходных кодов, достаточно

познакомиться с основными идеями создания и развития проекта, и заявить о своем желании,

обратившись на кафедру РВКС факультета технической кибернетики Санкт-Петербургского

Государственного Политехнического университета [20] или непосредственно написав

соответствующее письмо автору проекта «OpenMVL» по электронной почте

[email protected].

От подключившегося к проекту пользователя требуется настроить среду разработки (см. раздел

5.3) и установить клиент для работы с исходными текстами, находящимися в репозитории, через

систему контроля версий SVN – TortoiseSVN.

Для зарегистрированных пользователей тексты проекта будут доступны по адресу

https://dcn.ftk.spbstu.ru/svn/openmvl. Структура репозитория описана в разделе 7.6.

5.2 Redmine

Для управления проектами (и, в частности, проектом «OpenMVL») на кафедре РВКС используется

система «Redmine» [20, 21]. Система «Redmine» предоставляет следующие возможности, которые

используются в учебном процессе на кафедре на базе «OpenMVL» (рис. 2):

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

система отслеживания ошибок;

диаграммы Ганта и календарь;

ведение новостей проекта, документов и управление файлами;

оповещение об изменениях с помощью электронной почты;

форум проекта;

учёт временных затрат (хранится затраченное время, вид деятельности студента – выполнение задачи, проведение исследования, исправление ошибки – и краткий комментарий к работе; эти данные могут быть использованы, например, для анализа вклада каждого участника в проект и для оценки фактической трудоемкости разработки);

достаточно простая интеграция с системой управления версиями исходных файлов проекта – SVN [22] (интеграция заключается в отслеживании изменений во внешнем репозитории, их фиксации в базе данных, анализе изменений с целью их привязки к определенным задачам);

автоматическое оповещение по e-mail обо всех изменениях в поставленных задачах для оперативного отслеживания их выполнения.

Page 9: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

8

Рис. 2. Проект «OpenMVL» в сети Интернет в системе управления проектами Redmine.

В рамках курсов «Среды визуального моделирования», «Методы оптимизации», «Компонентное

моделирование» студентам ставятся задачи по внесению доработок в существующий учебно-

исследовательский комплекс моделирования «OpenMVLShell».

5.3 Настройка среды разработки

Создание и редактирование пакета «OpenMVLShell» ведется в среде разработки Microsoft Visual

Studio 2010 на языке C#. Основой для разработки служит классический объектно-

ориентированный подход [11].

Для вывода графики в пакете «OpenMVLShell» используется свободно распространяемый пакет,

разработанный на базе открытой библиотекой «OpenGL» – Tao Framework. Данный пакет

предоставляет удобные в использовании графические компоненты, реализованные на языке C# и

подходящие для разработки графики пакета «OpenMVLShell» на платформе .NET. Таким образом,

для того, чтобы строить временные и фазовые диаграммы в пакете «OpenMVLShell», не

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

библиотеку. Это можно сделать одним из двух следующих способов:

1. Загрузить дистрибутив TaoFramework с http://sourceforge.net/projects/taoframework.

2. Установить пакет моделирования «OpenMVLShell» из дистрибутива. Дистрибутив в

процессе установки предложит загрузить пакет TaoFramework и установить его (рис. 3).

Page 10: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

9

Рис. 3. Установка TaoFramework при установке OpenMVLShell.

Для сборки проекта «OpenMVLShell» вместе с инсталлятором потребуется также установить

свободно распространяемую среду разработки пакетов инсталляции Inno Setup 5

(http://www.jrsoftware.org/isdl.php). Наконец, нужно прописать в переменную окружения PATH

следующие пути:

путь к библиотекам, отвечающим за корректную работу графических компонент Tao

Framework (например, для 32-битной ОС Windows при установке Tao Framework в папку по

умолчанию добавляемый путь будет вида «C:\Program Files\TaoFramework\lib»);

Page 11: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

10

путь к IDE Microsoft Visual Studio 2010 (например, «C:\Program Files\Microsoft Visual Studio

10.0\Common7\IDE»);

путь к IDE Inno Setup 5 (например, «C:\Program Files\Inno Setup 5»).

В IDE Microsoft Visual Studio 2010 нужно в диалоге параметров редактора («Сервис»

«Параметры» «Текстовый редактор» «C#») настроить, чтобы вместо знаков табуляции

вставлялось 2 пробела (рис. 4).

Рис. 4. Параметры редактора исходных текстов.

5.4 Терминология

В проекте «OpenMVL» используется термин «компилятор языка MVL», определяющий

подсистему, которая читает исходное описание модели на объектно-ориентированном языке

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

данных пакета. Тогда как классический термин «компилятора» [9] подразумевает трансляцию

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

так называемый, машинный код). Поэтому в рамках проекта «OpenMVL» точнее было говорить о

том, что реализован своего рода «преобразователь» исходного описания модели в описание

модели в другом формате. Тем не менее, в силу того, что данная подсистема широко использует

теорию построения компиляторов (используется разбиение текста на лексемы лексическим

анализатором, методом рекурсивного спуска построен синтаксический анализатор) условно

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

оговорками.

6 Текущее состояние разработки OpenMVLShell На сегодняшний день пакет «OpenMVLShell» подходит для построения многокомпонентных и

изолированных гибридных систем. Модель должна быть описана во внешнем текстовом файле с

расширением «omvl» на языке MVL. Пока в интерфейсе используется только английский язык.

Для пользователя основное приложение пакета – регистрозависимый командный редактор,

позволяющий производить компиляцию описания модели, ее анализ, построение программной

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

Page 12: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

11

команды могут быть автоматически набраны с помощью пунктов меню File или панели

инструментов.

Рис. 5. Приложение в начале работы

6.1 Моделирование в OpenMVLShell

Для проведения всего цикла по разработке модели пользователь должен проделать ряд

итераций, которые можно определить следующим образом:

1. Составление описания гибридной изолированной модели на языке MVL. Возможно

получить его путем экспорта модели в текстовое представление из редактора модели

Rand Model Designer (рис. 6).

Рис. 6. Сохранение текстового представления модели в Rand Model Designer.

2. В запущенном командном редакторе загрузить модель командой «compileFile» с

указанием в качестве параметра полного пути в кавычках к файлу с описанием модели

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

ошибкам компиляции, пользователю выдается сообщение об успешности компиляции и

предоставляется возможность сохранить проект модели (рис. 7).

Рис. 7. Успешная компиляция «OpenMVLShell».

Page 13: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

12

В противном случае компилятор выводит диалог с текстовым описанием модели,

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

ошибки (рис. 8). Серым подсвечивается текст, который не имеет отношения к поведению

модели. К такому тексту относятся комментарии и элементы графической нотации,

которые в «OpenMVLShell» в отличии от Rand Model Designer не поддерживаются.

Поняв ошибку, пользователь может исправить ее, сохранить исправление и перезапустить

процесс компиляции.

Рис. 8. Ошибка в описании модели.

3. После того как проект модели сохранен на диске, нужно проверить изолированные

математические системы в сохраненном проекте на корректность, а именно:

провести замену переменных для производных порядка выше первого;

запустить алгоритм поиска трансверсали (выполнение перестановок в исходной

системе);

назначить в уравнениях неизвестные;

проверить, что число неизвестных соответствует числу уравнений (система

определена правильно)

Для этого используется команда «analizeModel» с указанием в качестве параметра полного

пути в кавычках к проверяемому проекту.

Если каждый шаг успешен, проект модели может быть обновлен.

Рис. 9. Обновление проекта модели после выполнения его предварительного анализа.

4. По обновленному проекту можно построить программу модели. Для этого нужно ввести

команду «buildProgram», которой нужно передать в качестве параметра полный путь к

Page 14: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

13

проекту модели в кавычках. Если построение и компиляция программы модели прошла

успешно, дается возможность ее сохранить в виде динамической библиотеки (*.dll –

библиотеки классов C#, рис. 10).

Рис. 10. Генерация и сохранение программы модели.

5. Далее следует выполнить команду запуска двигателя модельного поведения

«runProgram», которой нужно передать в качестве параметра полный путь в кавычках к

построенной программе модели. При этом запустится диалог управления двигателем

модельного поведения (рис. 11). В данном диалоге можно запускать, останавливать и

перезапускать процесс моделирования. При этом, если установлена галочка «Trace On»,

пользователь будет видеть трассировку модельного поведения. Данную трассировку

можно сохранить в текстовом виде «*.txt» и в формате «*.xml» для того, чтобы по ней в

последствие можно было построить график. В диалоге выводится модельное время и

реально прошедшее с начала численного эксперимента.

Рис. 11. Проведение численного эксперимента.

6. Наконец, пользователь может посмотреть результаты проведения численного

эксперимента на испытательном стенде в виде графиков. Для этого нужно набрать

команду «plot», указать первым параметром полный путь в кавычках к файлу трассировки,

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

вывести графики.

В пакете определены два режима работы команды «plot»:

a. можно строить временные диаграммы: в качестве параметров команды «plot»

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

график;

b. можно строить фазовые диаграммы: в качестве параметров команды «plot»

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

вертикальной оси. После перечисления этих переменных нужно поставить «;» и

указать искомую переменную, относительно которой будут строиться фазовые

диаграммы.

На стенде предоставляется возможность имитировать работу двигателя модельного

поведения (приостановка, запуска, перезапуск), а также подсветить координаты любой

интересной пользователю точки (рис. 12).

Page 15: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

14

Рис. 12. Графики в OpenMVLShell.

6.2 Предопределенные команды

В приложении «OpenMVLShell» предопределены команды, перечисленные в таблице 2. Все

данные команды вместе с синтаксисом можно вывести в командном редакторе «OpenMVLShell»

командой «help». В таблице 2 дан синтаксис команд, краткое описание и пример использования.

Расширения проведены при условии использования всех компонент по-умолчанию. При вводе в

командном редакторе команды, можно не печатать ее целиком, воспользовавшись клавишей

«Tab» на клавиатуре.

Таблица 2. Команды «OpenMVLShell».

Команда Синтаксис Описание Пример

Загрузка модели в пакет

compileFile(“<путь к файлу модели *.omvl>”)

Компилирует текстовое описание модели, заполняя объектно-ориентированную базу данных, позволяет сохранить ее в *.xml формате.

loadFile (“E:\Sample.omvl”)

Редактирование модели

editFile(“<путь к файлу модели *.omvl>”)

Позволяет редактировать текстовое описание модели.

editFile(“E:\Sample.omvl”)

Просмотр текста описания модели

analizeModel(“<путь к файлу модели *.xml>”)

Проводит предварительный анализ модели пользователя с возможностью ее обновления.

analizeModel (“E:\Model.xml”)

Сохранение базы данных пакета

saveWorkspace(“<путь к сохраняемому файлу

модели *.xml>”)

Сохраняет текущую базу данных модели в XML-файле.

saveWorkspace

(“E:\WS.xml”)

Построение программного

кода

buildProgram(“<путь к проекту модели

*.xml>”)

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

buildProgram

(“E:\Model.xml”)

Запуск двигателя модельного

runProgram(“<путь к сохраненной программе

Запуск подсистемы продвижения модельного времени с указанной

runProgram

(“E:\Model.dll”)

Page 16: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

15

поведения модели *.dll>”) программой модели

Построение графиков

plot((“<путь к сохраненной трассе численного прогона

*.xml>”, <переменная>

{,<переменная>}

[; <переменная>])

Выполняет построение временных и фазовых диаграмм. Если после списка переменных перечисленных через «,» следует «;» и еще одна переменная, то от последней будут строиться фазовые диаграммы. В противном случае строятся временные диаграммы всех указанных неизвестных

plot((“E:\Trace.xml”, x1,x2,x3)

plot((“E:\ Trace.xml”, x1,x2;x3)

Справка help Выводит список поддерживаемых команд и их синтаксис

help

Очистка базы данных пакета

reset Зачищает текущую базу данных пакета.

reset

Выход exit Завершение работы приложения

exit

6.3 Главное меню и панель инструментов

Раздел меню «File» предоставляет пользователю автоматизировать набор некоторых команд, а

именно:

«Compile Model Description…» - «compileFile». Раскрывает диалоговое окно выбора

существующего файла описания модели с расширением «omvl»на диске.

«Analize & Update Model…» - «analizeModel». Раскрывает диалоговое окно выбора

существующего файла проекта модели с расширением «xml» на диске.

«Edit Model…» - «editFile». Раскрывает диалоговое окно выбора существующего файла

описания модели с расширением «omvl» на диске.

«Build Program…» - «buildProgram». Раскрывает диалоговое окно для выбора

существующего файла проекта модели с расширением «xml» на диске.

«Run Program…» - «runProgram». Раскрывает диалоговое окно выбора файла с

библиотекой классов модели с расширением «dll» на диске.

«Build Graphic…» - «plot». Раскрывает диалоговое окно для выбора нового или

существующего файла трассировки с расширением «xml» на диске.

«Exit» - «exit».

Раздел меню «Edit» предлагает стандартные функции редактирования.

Пункты меню разделов «File» и «Edit» продублированы на панели инструментов.

Раздел меню «Properties» выводит диалог настроек пакета. Настройки разделены на три группы:

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

(рис. 13). Часть компонент является неизменной составляющей частью «OpenMVLShell» и

определяет интерфейс взаимодействия заменяемых компонент. Назначение компонент

описано в разделе 7.

Page 17: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

16

Рис. 13. Компоненты «OpenMVLShell».

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

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

численной оптимизации и пр. (рис. 14).

Рис. 14. Настройки численных методов «OpenMVLShell».

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

построения модели и конфигурации, в которой следует собирать библиотеку классов

модели (с отладочной информацией или без нее, рис. 15).

Page 18: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

17

Рис. 15. Настройки построения модели.

Подраздел меню «About» приводит информацию о версии приложения, о разработчике, ссылках

на проект «OpenMVL» и некоторой справочной информации по использованию виртуальной

памяти в системе.

7 Программная структура пакета OpenMVLShell С точки зрения реализации пакет состоит из следующих двух групп компонент:

1. Неизменяемые компоненты. Данные компоненты представляют собой «скелет» системы

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

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

(рис. 13) они присутствуют, но поля редактирования путей к ним неактивны. К этим

компонентам относятся:

a. OpenMVLShell.exe – основное приложение, работающее с пользователем в режиме

командной строки, позволяющее производить настройки численного решения,

двигателя модельного поведения, генератора кода и т. д.;

b. DBClasses.dll – библиотека классов, которая определяет, в каком формате хранится

проект модели;

c. Common.dll – библиотека классов, содержащая общие для всех компонент

программные константы, функции и процедуры;

d. MEClasses.dll – библиотека классов, которая определяет абстрактное устройство, от

которого будут наследоваться все объекты, описанные MVL классами в текстовой

форме;

e. NSClasses.dll – библиотека классов, которая предоставляет интерфейсы, по

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

поведения;

f. TRClasses.dll – библиотека классов, которая определяет формат хранения

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

Page 19: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

18

качестве выходной разметки данных, для подсистемы рисования графиков – в

качестве входной.

2. Изменяемые компоненты. Данные компоненты представляют собой динамическую часть

пакета. По желанию пользователь-разработчик может разработать альтернативные

компоненты и провести соответствующую замену (см. раздел 7.4). От данных компонент

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

них динамическая (на стадии выполнения) и определяется ini-файлом настроек основного

приложения («Properties.ini»). К этим компонентам относятся:

a. OMVLC.exe – компилятор модели на языке MVL. Должен предоставлять

возможность сохранить скомпилированный проект модели;

b. DBKernel.dll – инструмент загрузки, сохранения, редактирования базы данных

проекта модели;

c. CodeGen.exe – генератор кода программы модели. Должен предоставлять

возможность сохранить скомпилированную программу модели;

d. ModelEngine.exe – двигатель модельного поведения. Должен предоставлять

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

проведенного эксперимента, которая может быть использована для построения

графиков;

e. SystemAnalizer.exe – подсистема предварительного анализа пакета на возможные

структурные ошибки, назначения неизвестных там, где это возможно. Должна

предоставлять возможность обновления проекта модели;

f. NumSolvers.dll – библиотека классов, предоставляющая численные методы,

которые могут быть использованы для численного решения;

g. PlotEngine.exe – графическая подсистема, которая отвечает за построение

временных и фазовых диаграмм по предоставленному файлу трассировки;

h. Optimizer.dll – библиотека классов, предоставляющей методы численной

оптимизации.

Взаимодействие данных подсистем приведено на рисунке 16. Черным цветом отмечены

неизменяемые составляющие, зеленым – изменяемые, синим – динамически генерируемые.

Рис. 16. Схема взаимодействия компонент в пакете OpenMVLShell.

Page 20: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

19

7.1 Решение OpenMVLShell

Каждая компонента «OpenMVLShell» представляет собой проект Visual Studio, который может

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

быть предварительно скомпилированы. Все проекты, объединены в единое решение, построение

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

7.2 Основное приложение.

Основное приложение (программный проект «OpenMVLShell») взаимодействует с пользователем

в режиме командной строки. По мере выполнения пользователем команд ведется история

введенных команд, по которой можно проходить курсорными клавишами «вверх»/«вниз».

Панель инструментов и главное меню предоставляют стандартные инструменты редактирования

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

автоматизированный набора от пользователя требуется нажать на соответствующую кнопку меню

или панели инструментов и выбрать обрабатываемый файл. Для построения графиков требуется

также указать, от каких фазовых переменных будет выполнено построение (рис. 17).

Рис. 17. Выбор переменных для графика.

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

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

Информация об определенных в модели переменных берется из предоставленного файла

трассировки.

Сам командный компилятор реализован на основе методики рекурсивного спуска [9]. Это

позволяет зарезервировать возможность для введения команд с нетривиальной структурой

(вложенные выражения, вложенные команды и т.п.).

Поддерживаемые на настоящий момент команды были определены в разделе 6.2.

На успешно выполненные команды отдельной строкой в редакторе команд добавляется

сообщение «Done» или, в противном случае, выводится ошибка – текст обработанного

исключения.

Все настраиваемые свойства пакета, которыми могут пользоваться все остальные компоненты,

сохраняются в виде ini-файла. Структура данного ini-файла определяется библиотекой

«Common.dll».

Page 21: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

20

7.3 Предопределенные библиотеки классов

В «OpenMVLShell» определено несколько библиотек классов, которые относятся к неизменяемым

компонентам:

Библиотека Common служит для предоставления общей на уровне всего пакета

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

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

o Иерархия классов исключений;

o Механизм чтения и сохранения свойств пакета, а именно:

численных методов;

методов оптимизации;

параметров построения программы модели;

все полные пути к изменяемым компонентам пакета

все расширения файлов, которые соответствующий разработанный

компонент обрабатывает.

Библиотека «DBClasses» содержит иерархию классов для хранения модели. В частности,

определен наиболее общий класс «MCWorkspace», в объекте которого определяется

список пакетов (типа «MCPackage»). Каждый пакет может содержать в себе список классов

(типа «MCClass»), список глобальных функций (типа «MCFunction»), список глобальных

идентификаторов (типа «MCIdentifier») и т. д. В библиотеке широко используется

полиморфизм классов, что упрощает понимание назначения реализованных классов.

Каждый инициализированный объект типа «MCPackage» взаимно однозначно

соответствует текстовому описанию MVL-пакета с точностью до наличия в текстовом

описании инструкций визуализации (начинаются с «pragma»), комментариев,

неограниченного числа пробелов, переводов строк, порядка определений и т. п.

Библиотека «MEClasses» содержит иерархию классов для формального описания модели

для работы двигателя модельного поведения. В частности определен класс «EMDevice»,

который представляет собой абстрактное устройство, по предопределенным интерфейсам

которого подсистема продвижения модельного времени инициирует активность этого

устройства (см. раздел 7.4.4).

Библиотека классов «NSClasses» предоставляет интерфейс прямого и обратного вызова

численного метода. Данная библиотека предоставляет возможность «развязать» в

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

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

обращается по предопределенному абстрактному интерфейсу с именем метода,

определенному в настройках пакета. Второй ничего не знает о конкретной реализации

двигателя модельного поведения и при необходимости обращается к пересчету правой

части решаемой системы также по предопределенному интерфейсу.

Библиотека классов «TRClasses» содержит иерархию классов для определения разметки, в

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

Данная библиотека позволяет «развязать» двигатель модельного поведения и подсистему

рисования графиков, которые косвенно взаимодействуют друг с другом через

сохраненный файл трассы.

7.4 Динамические компоненты OpenMVLShell

Прежде чем приступить к описанию динамических компонент пакета «OpenMVLShell», следует

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

Page 22: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

21

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

редактора «OpenMVLShell» имеет файл сохраненный на диске в качестве входной информации и

также файл сохраненный на диске в качестве выходной информации. Каждая из динамических

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

взаимодействия компонент не поменяется: читаем файл, полученный на предыдущем этапе,

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

на диске самих компонент может быть настроено через свойства оболочки «OpenMVLShell» (рис.

13).

Рис. 18. Схема процесса моделирования в «OpenMVLShell».

7.4.1 Компилятор MVL

Компилятор описания модели на языке MVL (проект «Compiler») представляет собой приложение

«Windows Forms», которое в качестве первого аргумента командной строки принимает имя

обрабатываемого файла. В случае ошибочного обращения будет выдана подсказка с правильным

синтаксисом.

Компилятор MVL также как и компилятор команд в основном приложении реализован на базе

методики рекурсивного спуска. При первом проходе из текста с описанием модели

выбрасываются все инструкции визуализации («pragma») и комментарии. На втором проходе

распознаются зарезервированные ключевые слова – лексемы, строится таблица

идентификаторов, вещественных, целочисленных и строковых констант. Далее, при третьем

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

Семантикой разбора является однозначное заполнение объектно-ориентированной базы модели

в формате, определенном в библиотеке «DBClasses».

В процессе компиляции описания модели пользователю выводится диалог прогресса, в котором

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

Можно разработать и свой компонент компилятора (исполняемый exe-модуль). От такого

компонента требуется, чтобы он, принимая в качестве аргумента командной строки полный путь к

файлу с описанием, выполнял его обработку (желательно отображая при этом соответствующий

прогресс). В результате обработки должен инициализироваться объект пакета модели в формате,

определенном в библиотеке «DBClasses». Далее он должен позволить пользователю сохранить

проект модели, используя компонент «DBKernel».

Page 23: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

22

7.4.2 Библиотека редактирования проекта модели

Проект модели сохраняется и загружается в формате XML [17] (проект «DBKernel»).

Библиотека имеет статический класс «ModelDatabase», в котором определены следующие

функции, используемые внешними компонентами:

Функция сохранения пакета модели public static bool SaveProject(MCPackage package, string filename)

Возвращает, завершилась ли операция успешно.

Функция сохранения всего рабочего пространства public static bool SaveWorkSpace(MCWorkspace workSpace, string filename)

Возвращает, завершилась ли операция успешно.

Функция загрузки пакета в рабочее простанство public static bool LoadProject(MCWorkspace ws, string filename)

Возвращает, завершилась ли операция успешно.

Функция получения public static string GetLastError()

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

нужно создать библиотеку классов (*.dll) и также определить в ней статический класс

«ModelDatabase» и перечисленные выше функции.

7.4.3 Генератор программы модели

Генератор кода представляет собой приложение «Windows Forms» (проект «CodeGen»), которое в

качестве первого аргумента командной строки принимает имя обрабатываемого файла. В случае

ошибочного обращения будет выдана подсказка с правильным синтаксисом.

В процессе генерации и компиляции программы пользователю выводится диалог прогресса, в

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

Для генерации кода используется рабочий каталог, расположение которого настраивается в

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

программного кода в рабочий диалог. MVL-пакету ставится в соответствие одноименное

программное пространство имен. Каждому его MVL-классу – программный класс,

пронаследованный от «EMDevice» (возможно через несколько других модельных классов).

Каждый класс оформляется как отдельный файл с исходным текстом. Верстка ведется таким

образом, чтобы исключить возможные конфликты имен. Далее составляется файл проекта

«*.csproj» на основе файла проекта по-умолчанию «defaultProject.xml», входящего в состав среды

моделирования «OpenMVLShell». Формируется файл «AssemblyInfo.cs» для добавления

служебной информации программе модели (имя ассемблерной сборки и т. п.). Наконец,

запускается компиляция созданного проекта, формируется библиотека классов C#, которая

является программным описанием MVL-классов. Если компиляция проходит успешно,

пользователю предлагается сохранить созданный файл «*.dll».

Если требуется разработать альтернативную компоненту генерации и компиляции кода модели

нужно, чтобы такая компонента (исполняемый exe-модуль), принимая в качестве аргумента

командной строки полный путь к файлу с проектом модели, выполнял его обработку (желательно

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

модели, используя иерархию классов «MEClasses», и компилировать его. Если планируется

использовать свой двигатель модельного поведения, можно не придерживаться иерархии

«MEClasses» и использовать свою библиотеку классов. В случае отсутствия ошибок разработанная

компонента должна позволить пользователю сохранить программу модели.

Page 24: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

23

7.4.4 Подсистема продвижения модельного времени

Подсистема продвижения модельного времени представляет собой приложение «Windows

Forms» (проект «ModelEngine»), которое в качестве первого аргумента командной строки

принимает полный путь к построенной программе, сохраненной на диске (библиотека «*.dll»

классов модели). В случае ошибочного обращения будет выдана подсказка с правильным

синтаксисом.

В библиотеке классов модели ищется класс с именем «Model» (в MVL-пакете является

обязательным наличие класса с таким именем), после чего двигателю модельного поведения

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

модельного поведения описана общая для всех моделей схема поведения (переключения между

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

состояниях и пр.). Класс «Model» из программы модели трактуется как класс-наследник

абстрактного устройства, который имеет объект карты состояния (который в свою очередь

определяется классом-наследником от абстрактной карты поведения). В процессе работы

двигатель модельного поведения работает по общей схеме (рис. 19)

инициализация узла карты поведения;

выполнение локальной непрерывной деятельности узла, если она определена в этом узле;

проверка переходов, если они есть;

если переход сработал, деинициализация узла карты поведения, выполнение действий на

переходах и прочее.

Pred1/Init1

Do:

Inv:

Рис. 19. Упрощенная схема работы гибридного автомата карты поведения.

Приложение двигателя модельного поведения с точки зрения интерфейса представляет собой

консоль по управлению численным экспериментом (рис. 20). С помощью данной консоли можно

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

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

сохранить эту трассу как в текстовом виде, так и в формате «*.XML», разметка которого

предопределена в библиотеке классов «TRClasses» (см. раздел 7.3). Также есть возможность

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

но позволяет оценить производительность выполнения численного эксперимента без накладных

расходов на ведение трассы.

Рис. 20. Консоль управления Model Engine.

Page 25: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

24

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

компонента (исполняемый exe-модуль), принимая в качестве аргумента командной строки

полный путь к файлу с программой модели, выполнял его обработку (желательно отображая при

этом соответствующий прогресс) и позволял управлять проведением численного эксперимента.

Пользователю должны быть предоставлена возможность сохранить трассу в формате «*.xml».

Если планируется использовать свою подсистему рисования графиков, можно не придерживаться

предлагаемого формата и разметки трассы.

7.4.5 Подсистема обработки математического описания

Подсистема обработки математического описания представляет собой приложение «Windows

Forms» (проект «Analizer»), которое в качестве первого аргумента командной строки принимает

полный путь к проекту модели («*.xml»). В случае ошибочного обращения будет выдана

подсказка с правильным синтаксисом.

В процессе обработки описания пользователю выводится диалог прогресса, в котором

указывается в каком состоянии находится выполняемый модуль: какой класс в пакете

обрабатывается на данный момент.

С помощью компоненты «DBKernel» проект модели загружается, далее выполняется обработка

каждого ее класса: упрощение, определение структурной вырожденности, приведение к тому

виду, в котором систему можно будет передать численным методам и т. д.

На настоящий момент в пакете осуществляется замена всех производных, порядок

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

именами, гарантирующими уникальность.

Далее выполняется подстановка Гира, которая позволяет явно выделить чисто алгебраические и

дифференциальные уравнения, явно разрешенные относительно производной. Данный этап

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

вводится еще одна новая переменная и соответственно еще одно дифференциальное уравнение.

После такой обработки выполняется поиск трансверсали (алгоритм MC12A [1]) и проверяется, что

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

структурные ошибки, об этом сообщается пользователю. Если нет, выдается диалог с

предложением обновить проект модели.

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

(исполняемый exe-модуль), принимая в качестве аргумента командной строки полный путь к

файлу с проектом модели, выполнял его обработку (желательно отображая при этом

соответствующий прогресс) и позволял обновить загруженный проект. Для загрузки и сохранения

модели проекта предполагается использовать подсистему «DBKernel».

7.4.6 Численные методы

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

выполнения численного эксперимента. Все численные методы собраны в библиотеке классов

«NumSolvers». Каждый численный метод является наследником абстрактного класса

«NumMethod» (из библиотеки «NSClasses») и поддерживает, таким образом, необходимы набор

функций, требуемый для работы двигателя непрерывного поведения (подсистема двигателя

модельного поведения). Компонента «ModelEngine» находит все такие методы динамически на

стадии выполнения по именам, которые статически прописываются в свойства среды

моделирования (рис. 14).

Page 26: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

25

Реализованные численные методы сгруппированы следующим образом (аналогично [14]):

1. Методы для решения система обыкновенных дифференциальных уравнений (Ordinary

Differential Equation – ODE, пространство имен «OpenMVLShell.Numeric.ODE»):

a. отладочная программа пошагового решения RKF4 (класс «RK4»).

В данной программе введено ограничение на порядок применяемых методов, а

именно – применяются только явный и неявный методы Эйлера. Такой выбор

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

одношаговые методы способны преодолеть трудные участки лучше многошаговых

методов.

Потребность в таких методах возникает и при отладке, когда "плохое" поведение

может быть обусловлено просто ошибками. Программу RKF4 не следует применять

для интегрирования отлаженных задач;

b. программы для решения жестких задач из коллекции [2] – RADAU5 (класс

«Radau5»), которая является представителем реализации неявных одношаговых

методов на базе неявного метода Рунге-Кутта;

c. программа метода Рунге-Кутта 4(5) порядков для решения систем обыкновенных

дифференциальных уравнений (класс «DOPRI5»);

d. программа метода Рунге-Кутта 8(5,3) порядка решения систем обыкновенных

дифференциальных уравнений (класс «Dop853»);

2. Методы для решения нелинейных алгебраических уравнений (NonLinear-Algebraic Equation

– NAE, пространство имен «OpenMVLShell.Numeric.NAE»):

a. Класс гибридного метода Пауэлла решения нелинейных алгебраических уравнений

из коллекции MinPack [2] (класс «Powell»);

b. Метода Ньютона решения нелинейных алгебраических уравнений (класс

«Newton_NAE») и его модификации:

i. матрица Якоби пересчитывается на каждом шаге – классический метод

(класс «Newton_NAE_G»);

ii. матрица Якоби после первого шага сохраняется (класс «Newton_NAE_F»);

iii. матрица Якоби пересчитывается каждые 5 шагов (класс «Newton_NAE_M»);

c. Класс автоматического решателя системы нелинейных алгебраических уравнений

наиболее подходящим методом из реализованных (класс «Auto_NAE»);

3. Методы для решения алгебро-дифференциальных уравнений (Differential-Algebraic

Equation – DAE, пространство имен OpenMVLShell.Numeric.DAE):

a. программа метода Рунге-Кутта 8(5,3) порядка решения систем обыкновенных

дифференциальных уравнений и модифицированного метода Ньютона для

разрешения нелинейной алгебраической системы (класс «Dpr853Ntn»);

b. программа метода Рунге-Кутта 4(5) порядков решения обыкновенных

дифференциальных уравнений и модифицированного метода Ньютона для

разрешения нелинейной алгебраической системы (класс «DprNtn»);

c. программа модифицированного метода Ньютона, используемого для решении

системы алгебро-дифференциальных уравнений (класс «Newton_DAE»).

При необходимости добавить новый метод рекомендуется добавлять новый класс, наследуя его

от абстрактного класса «NumMethod». Но можно разработать и альтернативную библиотеку

численных методов. В таком случае нужно, чтобы такая компонента (библиотека классов *.dll),

ссылаясь на «NSClasses», аналогично «NSSolvers» определяла численные методы в виде классов-

наследников «NumMethod».

Page 27: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

26

7.4.7 Подсистема рисования графиков

Подсистема рисования графиков представляет собой приложение «Windows Forms» (проект

«PlotEngine»), которое в качестве первого аргумента командной строки принимает полный путь к

файлу трассировки модели («*.xml»). Следующим аргументом указывается «time» для построения

временной диаграммы и полное имя фазовая переменной для построение фазовой диаграммы.

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

графики. В случае ошибочного обращения будет выдана подсказка с правильным синтаксисом.

Проект «PlotEngine» использует библиотеки из рабочего набора «TaoFramework»:

Tao.Platform.Windows, Tao.OpenGl, Tao.FreeGlut. Для построения графиков используется

элемент управления «SimpleOpenGlControl» из библиотеки Tao.Platform.Windows. При

построении имитируется работа двигателя модельного поведения: по таймеру с настраиваемым

таймаутом прозвоится чтение значений нужных переменных из файла трассировки. Как в

компоненте ModelEngine поведение можно запускать, приостанавливать, перезапускать.

Соответствующие элементы управления расположены на панели инструментов (рис. 21). Также на

панели инструментов выводится текущее модельное время.

На испытательном стенде «OpenMVL Plotting» в элементе управления «SimpleOpenGlControl»

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

определяющей значения по осям. Легенда графика выводится справа, причем есть возможность

сменить цвет для каждого из выводимых графиков. Легенда имеет перемещаемый сплиттер,

отделяющий ее от графика. Также реализована возможность вывода значения координат

положения курсора. На риc. 21 приведен пример прогоны системы построения графиков на одном

из демонстрационных примеров Rand Model Designer: многокомпонентная модель, состоящая из

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

без сопротивления.

Рис. 21. Испытательный стенд. Многокомпонентная модель «прыгающих мячиков».

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

компонента (исполняемый exe-модуль), принимая в качестве аргумента командной строки

Page 28: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

27

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

построение графиков (желательно отображая при этом соответствующий прогресс). В качестве

формата и разметки сохраненной трассы следует использовать предопределенную библиотеку

классов «TRClasses».

Если помимо графической компоненты предполагается реализовывать свою компоненту

двигателя модельного поведения, достаточно, чтобы формат трассировки этих компонент был

согласован (без использования «TRClasses»).

7.4.8 Подсистема оптимизации

В спецификации используемого входного языка описания моделей MVL определен оператор

поиска экстремума и он имеет следующий синтаксис:

<действие> <выражение~вещественное> for <указание_переменной>

{,<указание_переменной>}

[ constraints "{" <ограничение>; {<ограничение>;} "}" ];

<действие> ::=

minimize

! maximize

<указание_переменной> ::=

<имя_переменной> [ in <диапазон> ]

<ограничение> ::=

<выражение~вещественное> <= <выражение~вещественное>

! <выражение~вещественное> >= <выражение~вещественное>

! <выражение~вещественное> = <выражение~вещественное>

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

приложения (рис. 13). Там же устанавливаются свойства поиска экстремума: количество итераций,

точность поиска.

В качестве начального приближения используются значения переменных оптимизации на момент

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

Примеры:

maximize x**2+y**2 for x in 0..Infinity, y in 0..Infinity

constraints { y<=3-x; y>=x+1;};

minimize x**2+y**2 for x in 1..3, y in 1..2;

minimize (x-1)**2+(y-2)**2 for x, y;

Все реализованные методы оптимизации собраны в библиотеке классов Optimizer и

пронаследованы от абстрактного класса оптимизации (аналогично численным методам в

«NumSolvers» пронаследованным от «NumMethod») «AOptimizationMethod».

В библиотеке классов MEClasses есть класс «EMPdf», который содержит в себе все

предопределенные математические функции (тангенс, логорифм, получение величин,

распределенных по различным законам, и пр.). В него также включен метод оптимизации –

Optimize, который принимая строчку – имя метода – и параметры поиска экстремума, выполняет

динамическое обращение в библиотеке классов оптимизации к соответствующему методу.

Генератор кода, встречая в модели оператор поиска экстремума создает в программном коде

модели обращение к «EMPdf.Optimize» с именем метода, который задан в настройках пакета.

Компонента оптимизации содержит следующие методы оптимизации:

1. Метод Розенброка («Rosenbrock»);

Page 29: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

28

2. Метод сопряжённых градиентов («ConjugateGradient»); 3. Алгоритм SPAC1, описанный в [15] («SPAC1»); 4. Метод одномерной оптимизации fmin («Fmin»);

5. Многокритериальная оптимизация на основе взвешенной суммы функционалов

(«MultiCrit»).

По умолчанию задаётся точность 1E-8 и ограничение числа итераций в 1000.

При необходимости добавить новый метод рекомендуется добавлять новый класс, наследуя его

от абстрактного класса «AOptimizationMethod». Но можно разработать и альтернативную

компоненту оптимизации. В таком случае нужно, чтобы такая компонента (библиотека классов

*.dll) сохраняла интерфейс вызова Optimize и SetInterval, которые должны быть реализованы в

каждом классе поиска экстремума.

7.5 Самодокументируемый код

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

разработки Microsoft Visual Studio всех классов, полей и функций, что упрощает их понимание и

позволяет на стадии разработки оперативно понимать, какие алгоритмы были реализованы и за

что они отвечают, с помощью встроенной в Microsoft Visual Studio технологии IntelliSense [19].

7.6 Структура репозитория

Репозиторий расположен по адресу https://dcn.ftk.spbstu.ru/svn/openmvl. В нем созданы

следующие стандартные директории:

«trunk» – основная ветка разработки (меняется чаще всего и может содержать

экспериментальный код, который может быть нестабильным);

«tags» – копии основных веток, когда заданный функционал реализован в законченном

виде и продукт в целом демонстрирует относительную стабильность;

«branch» – копии основных веток, которые предполагается поддерживать параллельно с

текущими наработками.

Текущая ветка «trunk» в свою очередь содержит директории:

«doc» - документация по программной архитектуре продукта;

«src» - исходные тексты пакета «OpenMVLShell»:

o решение «OpenMVLShell» вместе со всеми проектами компонент.

o директория «bin_base», на базе которой будет упаковываться дистрибутив

«OpenMVLShell»:

Bin – будущая директория-контейнер для исполняемых модулей

«OpenMVLShell»;

Examples – отлаженные демонстрационные примеры пакета;

System – неисполняемые файлы, используемые пакетом и без которых

целостность системы будет нарушена;

o в директории «install» расположен проект инсталлятора, собираемый в IDE Inno

Setup 5;

скрипт «_init.cmd», выполняющий инициализацию выходной директорию «out», в которой

будет целиком собираться проект. Данная директория после построения проекта будет

содержать:

o Bin – слепок исполняемой конфигурации пакета, используемый для создания

дистрибутива;

o Logs – логи построения системы;

Page 30: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

29

o Obj – промежуточные файлы построения системы;

o Setup – при успешном построении в данную директорию помещается дистрибутив

пакета «OpenMVLShell», который позволит использовать пакет на операционных

системах Windows без среды разработки;

o Если при построении произошли какие-то ошибки, создается файл «Error.txt» с

причинами сбоя при построении;

скрипт «_build.cmd», выполняющий полное построение «OpenMVLShell» в выходную

директорию «out».

8 Заключение В проекте «OpenMVL» ставится цель создать исследовательское и учебное программное средство,

которое сможет стать открытым инструментом для изучения проблем современного

моделирования. И работающий прототип на настоящей стадии работы уже создан. Любой

интересующийся вопросами моделирования разработчик может, подключившись к работе,

продемонстрировать её улучшение в той или иной подсистеме с тем, чтобы предложить какое-то

свое решение и зафиксировать свое достижение в рамках улучшение открытой разработки в

целом.

С другой стороны, изучая внутренней устройство пакета моделирования «OpenMVLShell»,

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

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

Двигаясь по пути создания открытого программного обеспечения с точки зрения открытости

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

проблемами в некотором едином формате, в котором решения можно сравнивать в равных

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

аналогичного операционной системе Linux: раскрываем исходные коды с тем, чтобы привлечь

максимальное число людей к исследовательской работе над актуальными проблемами в

изучаемой предметной области – моделировании.

9 Литература 1. Duff S. On Algorithms for Obtaining a Maximum Trasversal. ACM Transactions on Mathmatical

Software, Vol 7, No 3, September 1981, 315-330 pp.

2. More J.J., Gabrow B.S., Hillstrom K.E. User Guide for MINPACK-1. Argonne National Laboratory

Report ANL-80-74, Illinois, 1980.

3. Popper N., Breitenecker F., Extended and Structural Features of Simulators. Simulation News

Europe, 2008 - Dec., pp.27-38.

4. Исаков А.А., Сениченков Ю. Б. Среда визуального моделирования OpenMVL // XXXIX

Неделя науки СПбГПУ. Материалы международной научно технической конференции, Спб:

Изд-во Политехнического Университета. - 2010 - cc. 151-153.

5. Исаков А.А., Сениченков Ю. Б. Среда визуального моделирования OpenMVL

//Вычислительные, измерительные и управляющие системы , Спб: Изд-во

Политехнического Университета. - 2010 - cc. 84-89.

6. Исаков А.А., Сениченков Ю. Б. Program Complex OpenMVL for Modeling Complex Dynamic

Systems // Электронный журнал "Дифференциальные Уравнения и Процессы Управления",

Page 31: Исследовательская среда визуального моделированияdcn.icc.spbstu.ru/fileadmin/userfiles/Documents/... · Математический

30

Математико-механический факультет Санкт-Петербургского Государственного

университета - 2011.

7. Исаков А.А., OpenMVLShell - Исследовательская среда визуального моделирования

//Всероссийский конкурс научно-исследовательских работ студентов и аспирантов

"инновационные технологии в образовательном процессе", Белгородский

государственный национальный исследовательский университет - 2011 - cc. 11-15.

8. Исаков А.А., Горбунов А. Ю., Марков А. О., Мишина А. С., Пчелко П. В., Топтыгин А. В.,

Чугреев Д. А., Модуль оптимизации среды моделирования OpenMVLShell // Всероссийский

конкурс научно-исследовательских работ студентов и аспирантов в области информатики

и информационных технологий, Белгородский государственный национальный

исследовательский университет - 2011 - cc. 622-625.

9. Карпов Ю. Г. Теория и технология программирования. Основы построения трансляторов. –

СПб.: БХВ-Петербург, 2005.

10. Колесов Ю. Б., Сениченков Ю. Б., Бенькович Е. С. Практическое моделирование

динамических систем . – СПб.: БХВ-Петербург, 2002.

11. Колесов Ю. Б., Сениченков Ю. Б. Моделирование систем. Объектно-ориентированный

подход. – СПб.: БХВ-Петербург, 2006.

12. Колесов Ю. Б., Сениченков Ю. Б. Моделирование систем. Динамические и гибридные

системы. – СПб.: БХВ-Петербург, 2006.

13. Колесов Ю. Б., Сениченков Ю. Б. Моделирование систем. Практикум по компьютерному

моделированию. – СПб.: БХВ-Петербург, 2007.

14. Сениченков Ю.Б. Численное моделирование гибридных систем, Санкт-Петербург,

Издательство Политехнического университета – 2004.

15. Черноруцкий И.Г. Методы оптимизации. Компьютерные технологии.

16. Rand Model Designer workgroup: http://www.rand-service.com; http://www.xjtek.com;

http://www.mvstudium.com

17. XML формат: http://ru.wikipedia.org/wiki/XML

18. http://www.openmodelica.org – официальный сайт проекта OpenModelica.

19. http://ru.wikipedia.org/wiki/IntelliSense – технология подсказок в исходном коде

IntelliSense.

20. Проект OpenMVL в Интернете: http://dcn.ftk.spbstu.ru/index.php?id=276; https://dcn.ftk.spbstu.ru/redmine/projects/openmvl; https://dcn.ftk.spbstu.ru/svn/openmvl.

21. http://www.redmine.org – официальный сайт Redmine.

22. http://tortoisesvn.net – официальный сайт TortoiseSVN.

23. http://www.microsoft.com/en-us/openness/licenses.aspx – Microsoft Public License.