1 Постановка задачи

Вид материалаДокументы

Содержание


3Язык описания вычислительных моделей
3.1Теоретическая модель
Подобный материал:
1   2   3   4   5   6   7

2Обзор



В программных комплексах для моделирования уже применяются различные XML-ориентированные языки, которые ориентированы на ту или иную предметную область Эти языки описывают структуру соответствующих моделей, их параметры и зависимости между ними. Начиная с 90-х годов, это направление интенсивно развивается


Особенно много подобных языков существует в областях химии, биологии и физиологиии: ссылка скрыта , ссылка скрыта, BIOpolymer Markup Language (ссылка скрыта), Chemical Markup Language (ссылка скрыта), PhysioML, TissueML. Есть аналогичные разработки в области экономики: Business Process Modeling Language (ссылка скрыта). Много языков моделирования существует в очень узких областях, например Face Modeling Language (ссылка скрыта) применяется в компьютерной анимации лица.


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


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

3Язык описания вычислительных моделей




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


Таким образом, SimulML имеет блочную структуру и каждый логически выделенный нами блок тегов имеет собственный Document Type Definition (DTD). Такое разделение придаёт языку определённую гибкость и позволяет менять отдельные блоки без изменения структуры самого языка

3.1Теоретическая модель


Теоретическая модель может описываться только формулами и значениями параметров, но она не обязана быть реализована с помощью какого-либо численного метода. Как правило, такие модели создаются не математиками, а экспертами соответствующей предметной области, которые обычно не оперируют с векторами, матрицами и другими сложными математическими объектами, но для них важно наличие у параметров модели определенных характеристик типа размерности, а также семантическая взаимосвязь между разными частями модели. На SimulML структура данных выглядит следующим образом:


ELEMENT SystemofModels (SystemName, Model+, EquationSet+, Connection+)>

ELEMENT SystemName (#PCDATA)>

ELEMENT Model (ModelName,Description, ModelVariables, Model*)>











id CDATA #REQUIRED

type (in|out|calculated|regulated|constant) #REQUIRED

description CDATA #IMPLIED

dimension CDATA #IMPLIED

units CDATA #IMPLIED>

VariableName (ci)>



Connection (Variable1,Variable2)>



model1 CDATA #REQUIRED

model2 CDATA #REQUIRED>

Variable1 (#PCDATA)>

Variable2 (#PCDATA)>


Корневым элементом SimulML является SystemofModels. Этот элемент может содержать несколько элементов Model, описывающих конкретную вычислительную модель, элемент EquationSet, содержащий уравнения, связывающие параметры моделей системы, и элемент Connection, описывающий связи между параметрами в различных моделях.


Элемент Model может иметь иерархическую структуру и содержать другие элементы Model. Помимо этого, Model включает в себя элементы с символьным содержанием ModelName (задаёт имя модели) и Description (описание модели); и элемент ModelVariables.


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


Элемент ModelVariables содержит несколько элементов ModelVariable. У ModelVariable есть пять атрибутов атрибута. Атрибут id определяет смысловое значение переменной, (например, давление жидкости на стенки сосуда).Атрибут type определяет тип параметра: входной, выходной, расчетный, регулируемый или константа . Описание переменной может содержаться в атрибуте description; в атрибуте dimension содержится размерность переменной (например, сила, концентрация и пр.); единицы измерения описаны в атрибуте units.

Каждый элемент ModelVariable включает в себя элемент VariableName и необязательный элемент VariableValue. VariableName содержит математическое имя переменной, которое может быть задано тегами MathML. VariableValue определяет числовое значение переменной.


Параметры различных моделей, объединенных в одну систему, могут быть связаны между собой и эти связи описываются в элементе Connection. Этот элемент содержит два атрибута model1 и model2 , принимающих значения имён связанных моделей (имя модели содержится в элементе ModelName). Внутри элемента указаны имена связанных переменных в первой (Variable1) и второй (Variable2) моделях.


Похожий способ связывания существует и в других XML-ориентированных языках, например, в CellML. Но там в теге > задаются дополнительные элементы _variables> с атрибутами variable_1 и variable_2 , определяющих имена связанных

переменных. В SimulML связывание реализовано, по сути, тем же образом, но более изящно.