Данная модель является примером модели изолированной гибридной системы с гибридным поведением простейшего типа – мгновенные скачки значений переменных при неизменных системе уравнений и наборе переменных.
Предположим, что наш маятник получает мгновенное приращение угловой скорости с соответствующим знаком всякий раз при прохождении через нижнее вертикальное положение. Для описания такого маятника системы уравнений (1) недостаточно: необходимо помимо решения этой системы уравнений еще ловить дискретное событие – переход слева или справа нижнего вертикального положения – и по этому событию выполнять мгновенное дискретное действие – скачком изменять значение переменной на величину . На языке гибридных карт состояний это означает, что мы должны выполнять решение системы уравнений (1) в состоянии «Колебания», а по указанному дискретному событию выполнить переход в то же самое состояние (Рис. 1). В действиях этого перехода будет произведено мгновенное приращение угловой скорости и далее будет продолжено решение системы уравнений (1) с новыми начальными условиями.
|
|
Рис. 1
Теперь возникает вопрос: как задать событие «проход через нижнее вертикальное положение»? Первое, что приходит в голову, это задать его логическим предикатом , где n – целое число. Математически это совершенно правильное определение, однако не вполне пригодное для численного моделирования. События, заданные строгими равенствами вещественных выражений – это очень неприятный сюрприз для алгоритмов поиска точек переключения в гибридных моделях. Поэтому мы используем другое, более конструктивное определение события «проход через нижнее вертикальное положение». Разобьем все множество значений угла на сектора размером . Для любого текущего значения мы можем указать сектор, которому принадлежит это значение, а также нижнюю и верхнюю границы этого сектора и . Тогда выполнение условия будет означать переход в следующий сектор, а выполнение условия - возвращение в предыдущий сектор. В результате мы получим гибридную карту состояний, показанную на Рис. 2.
Рис. 2
При переходе из одного -сектора в другой соответственно смещаются нижняя и верхняя границы. Начальное определение текущего -сектора производится во входных действиях состояния Init путем вызова процедуры «определить2PiСектор».
procedure определить2PiСектор is
N_2Pi: integer;
begin
N_2Pi:=abs(trunc(Alpha/(2*pi)));
if Alpha>0 then
Amin2Pi:=2*pi*N_2Pi;
Amax2Pi:=2*pi*(N_2Pi+1);
else
Amax2Pi:=-2*pi*N_2Pi;
Amin2Pi:=-2*pi*(N_2Pi+1);
endif;
end определить2PiСектор;
Зависимости показаны на Рис 3а. Вследствие воздействия подталкивающей силы амплитуда колебаний увеличивается и на втором цикле маятник «переваливает» через верхнеее вертикальное положение после чего начинает крутиться против часовой стрелки с увеличивающейся угловой скоростью. Траектория движения показана на Рис 3б. Фазовая траектория в координатах показана на Рис 3в.
|
|
Рассмотрим внимательно увеличенный фрагмент графика на Рис 3г. На интервале 1 моделируемая система ведет себя как классическая непрерывная динамическая система, поведение которой определяется системой уравнений (1) и значение переменной изменяется непрерывно. На правом конце этого интервала в момент . В момент срабатывает переход и переменная скачком приобретает значение . Далее на интервале 2 система снова ведет себя как непрерывная. Место «склейки» двух соседних непрерывных интервалов в гибридном моделировании называют «временной щелью». Внутри «временной щели» непрерывное время останавливается и начинает продвигаться локальное дискретное время. Моменты дискретного времени обычно соотносят с натуральным рядом чисел (т.е. просто нумеруются 1,2, …n). Один момент дискретного времени отделяется от другого дискретным событием – срабатыванием какого-нибудь перехода. В данном случае мы имеем два значения дискретного времени – момент 1 до срабатывания перехода и момент 2 после срабатывания перехода. Все моменты локального дискретного времени «временной щели» одновременны в непрерывном времени. Пару можно рассматривать как гибридное время. Таким образом, если в непрерывном времени функция является многозначной в точке , то в гибридном времени она однозначна: и .
В более сложных моделях во «временной щели» может последовательно мгновенно срабатывать более одного перехода.
а)
б) в)
г)
Рис 3
Объектный подход.
Давайте рассмотрим более внимательно, как мы сделали эту модель. Мы «взяли за основу» уже имеющуюся модель простого маятника и модифицировали ее. Модификация заключалась в следующем:
- добавлены новые переменные;
- в главной карте поведения добавлен узел «Колебания» и новые переходы;
- «Система_уравнений_1» удалена из узла «Init» и помещена в узел «Колебания»;
- в узел «Init» добавлены входные действия.
Все эти действия вполне укладываются в традиционную схему наследования в объектно-ориентированном подходе: класс объекта, который берется за основу, называется базовым классом (родительским классом, классом-предком, суперклассом), класс, который получается в результате модификации этой основы, называется производным классом (классом-наследником, классом-потомком, подклассом). При этом модификация сводится к добавлению новых элементов описания и переопределению существующих элементов (в существующем узле «Init» пустая последовательность входных действий замещена на непустую и, напротив, непустое локальное поведение заменено на пустое).
Таким образом мы можем построить эту модель и так: на основе класса «Маятник» построить производный класс «МаятникСПодталкиванием». От способа «копирование и модификация» этот способ отличается тем, что в силу отношения наследования любое изменение в базовом классе (например, модификация системы уравнений) будет немедленно и автоматически отражаться в производном классе (кстати, это может и порождать конфликты). Таким образом, если в описание простейшего маятника вводится уточнение (например, учет сопротивления воздуха), то это уточнение автоматически распространится на все маятники – наследники простейшего.