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

Якимов Н.М.

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

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

Наиболее известными сейчас являются решения для блочного моделирования, такие как Mathlab Simulink, VisSim, и их открытые аналоги, такие как Scicos. Общей проблемой подобных решений является их ориентированность на разработку моделей для обработки сигналов, в частности электрических цепей и насосных станций. Несмотря на то, что для подобных применений эти решения подходят достаточно хорошо, для реализации более сложных моделей требуются значительные усилия.

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

Сравнительно новой альтернативой подходу блочного моделирования является компонентное моделирование систем. К программным решениям этого класса относятся, например, EcosimPro, ASCEND, EMSO и различные реализации стандарта Modelica, как открытые, так и закрытые.

Все перечисленные решения для компонентного моделирования обладают общей проблемой: адаптация старых исходных кодов моделей на Fortran, C или C++ требует генерации специальным образом сформированной динамической библиотеки (DLL или SO) либо специальным образом сформированного исходного кода (в случае AMESim).

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

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

К недостаткам закрытых решений так же можно отнести их высокую стоимость.

Что касается открытых решений, ASCEND, несмотря на длительное присутствие на рынке, на момент написания значительно проигрывает другим программным пакетам по функциональности (которая либо не реализована, либо является экспериментальной). Для “полу-закрытого” EMSO, по условиям лицензии основной программный пакет доступен только для образовательных и некоммерческих применений.

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

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

Автоматическая сборка комплексной модели из моделей подсистем обеспечивается модулем “компилятора”, принимающим на вход файл-описание и исходные коды и создающим двоичный исполняемый файл комплексной модели, который затем можно использовать отдельно от программного комплекса. Модуль “компилятора” написан с использованием C++ и пакета библиотек Boost.

Модульная архитектура позволяет использование пользовательских интеграторов и решателей. Стандартный API требует от модуля решателя только использования соглашений на именование и прототипы функций и использование XML фиксированного формата для управления настройками решателя и модели.

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

Адаптация “старых” моделей как правило сводится к написанию простого “адаптера”, описывающего входы и выходы, и небольшой модификации исходной модели для работы с “адаптером”.

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

Инструмент графического редактирования связей между моделями подсистем написан на С++ с использованием графических библиотек Qt.

Все основные инструменты программного пакета написаны на C++ с использованием кросс-платформенных библиотек, что позволяет легко портировать программный пакет на любую платформу с поддержкой этих библиотек, в частности, на Linux, Windows и Mac OSX.

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