Смекни!
smekni.com

на тему (стр. 7 из 9)

2.2.2 Изолированная однокомпонентная гибридная система

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

Интерфейс пользователя для изолированных однокомпонентных гибридных систем требует еще одного окна - например, окна редактора карт состояния (Simulink, Stateflow) или их расширения - гибридных карт состояний (Model Vision, Anylogic). Существует много различных способов описать смену фаз или режимов - это и сети Петри, и графы связей, но нам кажется наиболее перспективным использование гибридных автоматов.

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

2.2.3 Открытая однокомпонентная гибридная система

Это наиболее востребованная практикой модель, которая позволяет проводить активный компьютерный эксперимент и может быть использована в качестве библиотечной компоненты. Такая модель имеет доступные извне переменные, посредством которых она может взаимодействовать с окружающим миром: с другими компонентами и с экспериментатором. Используя модель маятника в виде изолированной системы, можно построить открытую систему, объявив, например, длину маятника не коэффициентом, а входом, и связав его с движком в окне двумерной анимации. Переход от изолированной модели к открытой может быть нетривиальным: например, маятник, у которого длина стержня непрерывно меняется, описывается совсем другими уравнениями. Окна переменных («живые таблицы») и анимации (по крайней мере, двумерной) становятся интерактивными. Пользователь может с помощью ползунков, круговых регуляторов, кнопок и тумблеров активно воздействовать на модель во время эксперимента. Очевидно, что активный эксперимент требует синхронной визуализации.

Авторы языка Modelica называют компоненту ориентированной, если все ее внешние переменные можно классифицировать либо как входы, значения которых не могут изменяться внутри компоненты, либо как выходы, значения которых, напротив, могут изменяться только внутри компоненты. Ориентированная компонента также называется блоком «вход-состояние-выход».

Блоки до сих пор трактовались как единственно возможные элементарные кирпичики, из которых строятся сложные модели. Блок может работать независимо и параллельно с другими блоками. Из блоков, соединенных связями, можно строить иерархические структурные схемы. Такая трактовка имеет место и в «классическом» пакете Simulink, и в новейшем языке Modelica. Различия касаются только характера связей (ориентированные или неориентированные) и способов автоматического построения эквивалентной однокомпонентной непрерывной динамической системы.

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

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

2.2.4 Структурная многокомпонентная система с ориентированными блоками

Успех проектирования электрических схем из компонент вселяет надежду на создание пакетов, в которых на основании компонентных и топологических уравнений можно будет строить сколь угодно сложные модели, объединяющие объекты различной физической природы. Основой этих моделей служит блок с особыми внешними переменными - контактами (Modelica), или неориентированный блок. Значения контактов могут меняться как внутри блока, так и извне. Одним из препятствий на этом пути построения многокомпонентных моделей служит то, что возникают трудности при автоматическом построении совокупной системы уравнений (особенно динамически). Но даже если такую систему удается построить, практически невозможно заранее ответить на вопросы: имеет ли она решение, единственное ли оно, какими численными свойствами оно обладает. Во всех существующих пакетах ответы на эти вопросы «перекладываются на плечи» численных методов, а они для этого меньше всего приспособлены. В то же время для ряда областей - проектирование электрических цепей или электромеханических приборов - использование блоков с контактами является общепринятым приемом.

2.2.5 Многокомпонентная гибридная система переменной структуры

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

2.2.6 Объектно-ориентированное моделирование

Объектно-ориентированный подход в последнее время стал так прочно ассоциироваться с программированием (даже аббревиатуру ООП обычно расшифровывают как Объектно-Ориентированное Программирование), что многие забывают о его прямой связи с моделированием - ведь первоначально он был использован в языке моделирования SIMULA-67. Однако в дальнейшем объектно-ориентированный подход развивался почти исключительно программистами.

Своеобразным итогом тридцатилетнего развития объектно-ориентированного программирования можно считать появление UML, предназначенного для создания объектно-ориентированных спецификаций программных систем на ранних этапах разработки. И только в последние годы объектно-ориентированный подход стал востребованным в своей «родной области» - моделировании. Объектно-Ориентированное Моделирование (ООМ) сегодня весьма модный термин, но на практике этот подход поддерживают не так уж много пакетов.

Объектом принято называть некоторую сущность, которая инкапсулирует в себе данные и методы как единое целое и взаимодействует с внешним окружением через определенный интерфейс. С понятием объекта тесно связано отношение двойственности - «класс-экземпляр». Каждый объект всегда является экземпляром какого-то класса.

Естественным кандидатом на роль объекта в ООМ является, конечно же, компонента. Компонента - совокупность переменных и поведения, она взаимодействует с внешним миром только через внешние переменные. Компонента всегда - явно или неявно - является экземпляром некоторого класса. Например, когда вы в пакете Simulink, который формально не поддерживает ООМ, размещаете на функциональной схеме новый блок, вы неявно порождаете новый экземпляр выбранного вами предопределенного класса из библиотеки. В современном ООМ компонента несет в себе информацию о поведении, структуре и динамическом образе моделируемого объекта. Это и есть три основных элемента определения класса.

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

В ООП различают объекты пассивные и активные. Пассивные объекты (большая часть объектов в программах) только «откликаются» на вызовы методов и сообщений извне, но сами ничего не делают, т. е. не могут изменять значения своих данных по собственной инициативе. Активные объекты (например, экземпляры класса Thread в языке Java) имеют свою собственную «нить управления» и функционируют независимо от других объектов и параллельно с ними. Объекты ООМ, конечно же, активные, причем их активность связана не с циклической последовательностью дискретных действий, а с непрерывным воспроизведением поведения и непрерывной реакцией на внешние воздействия.

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