ISSN 2782-2001 Системы анализа и обработки данных том 81, № 1, 2021, с. 103-122
http://journals.nstu.ru/vestnik Analysis and data processing systems Vol. 81, No. 1, 2021, pp. 103-122
ИНФОРМАТИКА, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И УПРАВЛЕНИЕ
INFORMATICS, COMPPUTER ENGINEERING AND CONTROL
УДК 004.434:004.942 Б01: 10.17212/2782-2001-2021-1-103-122
Язык моделирования гетерогенных динамических систем Ы8МА_НБ8*
Е.А. ПОПОВ", Ю.В. ШОРНИКОВ4
630073, РФ, г. Новосибирск, пр. Карла Маркса, 20, Новосибирский государственный технический университет
а [email protected] ь [email protected]
Гетерогенные динамические системы (ГДС) описывают одновременно протекающие процессы различной физической природы. Такие системы встречаются в многочисленных приложениях науки и техники. Можно выделить следующие характерные особенности ГДС. Часто такие системы оказываются многорежимными или гибридными. В общем случае их режимы задаются в классе задачи Коши для неявных дифференциально-алгебраических систем уравнений. В связи с наличием нескольких разнородных динамических компонентов или процессов, протекающих как во времени, так и в пространстве, размерность совокупной системы уравнений может быть достаточно высокой. В некоторых случаях система уравнений имеет внутреннюю структуру, например, дифференциально-алгебраическая система уравнений, аппроксимирующая дифференциальное уравнение в частных производных по методу прямых. Тогда имеется возможность компактной алгоритмической записи исходной громоздкой системы уравнений. Также в гетерогенных гибридных динамических системах могут возникать события качественно разных типов. Поэтому появляется необходимость в применении разных численных алгоритмов обнаружения событий.
Сегодня компьютерное моделирование ГДС выполняется в окружении инструментальных средств. Широко используемые инженерами языки моделирования не позволяют в полной мере отразить все свойства систем из этого класса. Например, в них отсутствует возможность типизации событий.
Поэтому был разработан декларативный язык моделирования общего назначения LISMA_HDS инструментальной среды ИСМА, учитывающий вышеуказанные характерные особенности ГДС. Новый язык включает возможности непосредственного или алгоритмического объявления модельных постоянных, задачи Коши для неявной дифференциально-алгебраической системы уравнений, начальных приближений переменных, а также позволяет задавать явные события времени, режимы функционирования и переходы между ними по событиям разных типов, использовать макроподстановки и реализовывать событийное управление.
LISMA_HDS задан с помощью порождающей грамматики в расширенной форме Бэкуса-Науэра и семантических ограничений. Доказана принадлежность порождающей грамматики к подклассу КЬ(2) контекстно-свободных грамматик.
Статья получена 28 октября 2020 г.
Ключевые слова: гетерогенные динамические системы, гибридные динамические системы, языки моделирования, типизация событий, формальные грамматики, инструментальная среда ИСМА
Гетерогенные динамические системы (ГДС) описывают одновременно протекающие процессы различной физической природы. Такие сложные системы находят применение во многих областях науки и техники: в автоматике, робототехнике, электроэнергетике, автомобилестроении, ракетостроении и т. д.
В общем случае ГДС характеризуются высокой размерностью в связи с наличием нескольких составляющих элементов. Это свойство особенно проявляется в случае, когда часть из них моделируют процессы, протекающие во времени и пространстве. Соответствующие дифференциальные уравнения в частных производных после пространственной дискретизации становятся системами обыкновенных дифференциальных уравнений высокой размерности [1].
Часто системы уравнений высокой размерности имеют некоторую внутреннюю структуру, позволяющую описать их в компактной форме с использованием циклов и индексной записи (например, система обыкновенных дифференциальных уравнений, аппроксимирующая дифференциальное уравнение в частных производных по методу прямых) [2, 3].
Дифференциально-алгебраические системы уравнений (ДАУ) являются естественной формой описания процессов самой различной природы. Они возникают, когда на фазовые переменные накладываются ограничения, например, в соответствии с законом сохранения массы [4]. Более того, при составлении совокупной системы уравнений сложной системы из моделей элементов и уравнений связей между ними в общем случае неизбежно возникает неявная система ДАУ [3].
С другой стороны, ГДС часто оказываются дискретно-непрерывными или гибридными. Гибридные системы (ГС) представляются в виде нескольких непрерывных режимов функционирования, между которыми определены переходы, условия их срабатывания и мгновенные действия при срабатывании (например, изменение значений переменных или изменение системы уравнений, описывающей режимное поведение) [4-6]. Переключение между режимами происходит мгновенно. В момент переключения непрерывное время останавливается, выполняются все переходы, условия которых истинны, и только потом продолжается процесс, описываемый активной системой уравнений.
Если хотя бы один элемент ГДС является гибридным, то и вся совокупная система также характеризуется гибридным поведением. Тогда режим гетерогенной гибридной динамической системы может быть представлен в общем случае в виде задачи Коши для неявной системы ДАУ с ограничением:
ВВЕДЕНИЕ
F(í, у ((), у'(()) = 0, у(^о) = У0, у'(^о) = У0,
где Р : М х М^ х М^ ^ М^ - вектор-функция, удовлетворяющая условиям существования и единственности
щей системы ДАУ на интервале
решения задачи Коши для соответствую* "1
to, t [1]; t - независимая переменная
(время); y(t) е ШN - вектор состояния системы; yo, y0 е ШN - согласованные начальные условия, т. е. F(to, yo, y0) = 0; pr: Ш x ШN ^ {false, true} -
*
режимный предикат; to - момент времени входа в текущий режим; t - момент времени переключения в следующий режим.
Пока ГС находится в текущем режиме, режимный предикат остается ис-
*
тинным. В момент времени t , когда pr впервые становится ложным, ГС переходит в следующий режим. Режимный предикат составляется из ограничений g (t, y(t)) < 0 на непрерывные событийные функции g : Ш x ШN ^ Ш , соединенные логическими операторами конъюнкции и дизъюнкции.
В условиях машинной арифметики точное определение момента пере*
ключения t не является практически возможным. Поэтому выделяют три
типа событий: односторонние, двусторонние, критичные к точности обнару-
*
жения [7]. Так как в общем случае невозможно найти момент времени t с использованием аналитических методов, применяют численные алгоритмы обнаружения событий. Однако не все алгоритмы гарантируют обнаружение в случае множественных пересечений границы режима в пределах одного шага интегрирования. Поэтому в рамках методологии комплексного обнаружения событий, когда используется несколько одновременно работающих алгоритмов обнаружения, можно также выделить класс труднообнаруживаемых событий [8]. Наличие событий разных типов - одна из ключевых особенностей гетерогенных ГС.
1. ЯЗЫК МОДЕЛИРОВАНИЯ LISMA_HDS
В настоящее время сложно представить проектирование или анализ сложной системы без применения компьютерного моделирования. Сегодня инженерам доступны инструментальные среды, автоматизирующие трудоемкий и подверженный ошибкам процесс построения компьютерной модели и выполнения вычислительного эксперимента с ней. Обычно изучаемая система представляется в виде текстовой модели на некотором языке моделирования.
Язык моделирования ГДС должен учитывать их особенности и включать удобные и интуитивно понятные конструкции. Более того, он должен быть простым для предметного пользователя. Большое количество ключевых слов и языковых конструкций, применение таких высокоуровневых парадигм, как объектно-ориентированность, повышают порог вхождения для предметного специалиста без углубленных знаний программирования. Примером может служить язык моделирования Modélica [9], на базе которого построены инструментальные среды Dymola, OpenModelica, Wolfram SystemModeler. В широко распространенном среди инженеров программном комплексе Matlab/Simulink используются базовые текстовый язык программирования и графический язык структурных схем, обладающий известными
недостатками при физическом моделировании сложных динамических систем [3, 5]. С другой стороны, ни один из массово используемых языков моделирования не позволяет описать все свойства ГДС (например, указать типы событий).
Порождающая грамматика языка моделирования должна быть в одном из известных и хорошо изученных подклассов контекстно-свободных грамматик, для которых доказана однозначность, например, ЬЬ(к) [10, 11].
Более того, для них могут быть сконструированы эффективные нисходящие безвозвратные синтаксические анализаторы с линейной зависимостью времени работы от длины входной цепочки [12].
Рассмотрим декларативный язык моделирования общего назначения LISMA_HDS инструментальной среды ИСМА [6], учитывающий все вышеуказанные особенности ГДС.
Отличительными особенностями языка LISMA_HDS, как и в случае LISMA_PDE [13], являются запись математических конструкций в близкой к языку математики форме, а также отсутствие повышенных требований к навыкам программирования у предметного пользователя.
Ниже приведены ключевые продукции порождающей грамматики модель] языка LISMA_HDS в расширенной форме Бэкуса-Науэра в соответствии со стандартом КОЛЕС 14977:1996 [14]. В левых частях правил в скобках приводятся сокращенные имена нетерминальных символов грамматики.
Программные модели (модель) на LISMA_HDS являются последовательностями объявлений, возможно, пустыми:
модель ^1) = {объявление}; объявление ф 1) = пост_об | уравнение | нач_усл | режим | соб_упр | макрос | цикл | цикл_соб;
Язык LISMA_HDS содержит конструкции для непосредственного или алгоритмического объявления программных постоянных, задачи Коши для неявной системы ДАУ, начальных приближений переменных, а также позволяет задавать явные события времени, режимы функционирования и переходы между ними по событиям разных типов, макроподстановки и реализовы-вать событийное управление. Поддерживаются как однострочные, так и многострочные комментарии в стиле языка С++.
Рассмотрим разные типы объявлений отдельно в рамках подзадач описания непрерывного и дискретного поведения ГС.
2. СПЕЦИФИКАЦИЯ НЕПРЕРЫВНОГО ПОВЕДЕНИЯ
Непрерывное поведение может быть в общем случае описано системой уравнений вида
у(0, у'(Г)) = Н (¿, у (Г), у '(0), (2)
которая может быть легко приведена к виду (1), где Е^, у^), у'^)) = = в(Г, у(), у'()) - Н(г, у (0, у '(0).
Уравнения системы (2) описываются на LISMA_HDS в соответствии с грамматикой
уравнение (E1) = [идент,":"], АВ," =", АВ,";";
где нетерминальный символ АВ , определенный далее по тексту, представляет собой арифметическое выражение, которое может включать фазовые переменные, их производные (имя переменной с последующим символом '), встроенную переменную модельного времени time, числовые литералы, встроенные и объявленные постоянные, а также вызовы встроенных математических функций; терминальный символ идент - идентификатор.
Метки перед уравнениями (идентификаторы) используются, когда необходимо указать на конкретные уравнения при изменении совокупной системы в момент входа в новый режим. Несколько уравнений могут иметь одинаковые метки.
Могут быть заданы как точные начальные условия задачи Коши, так и некоторые приближения к ним, которые в дальнейшем будут уточнены в процессе инициализации:
нач_усл (I1) = перем_имя,"(", "t0",")", (" = "|"~="), АВ,";";
где нетерминальный символ перем_имя означает имя переменной.
Если не задано начальное значение переменной, то на этапе инициализации в качестве начального приближения будет использоваться ноль.
При инициализации в исходном режиме init могут применяться только арифметические выражения, состоящие из числовых литералов и именованных постоянных величин.
Грамматика объявления постоянных величин имеет вид
пост_об(C1) = "const", цеп_присв, {",", цеп_присв},";"; цеп_присв (A1) = перем_имя," =", цеп_присв_хв; цеп_присв_хв (A4) = АВ | цеп_присв;
где АВ должно быть составлено только из объявленных и встроенных постоянных, а также числовых литералов.
LISMA_HDS позволяет задавать системы уравнений, начальные условия, постоянные, макроподстановки (макрос) и блоки событийного управления (соб_упр) алгоритмически с помощью цикла for и индексной записи:
цикл(C2) = "for", идент," =", мн_знач, {",", мн_знач}, цикл_тел; мн_знач(V2) = ЦБЗ, [":", ЦБЗ], [":", ЦБЗ];
цикл_тел (C3) ="{", {пост_об | макрос | уравнение | нач_усл | соб_упр},"}"; где терминальный символ ЦБЗ означает целое число без знака.
Заголовок цикла включает в себя переменную цикла (идентификатор) и множество ее значений О, определенное одной или несколькими тройками разделенных двоеточиями чисел I, s, г (мн_знач), означающих начальное значение переменной, шаг приращения и конечное значение соответственно:
О = иДЖ+О , О = {ш, = Ь + sij | ] е и {0} л®у < Г }, ¡1, П е и {0}, Si е Ж + , ¡^ < гг- . Шаг может быть опущен, тогда он по умолчанию будет установлен равным единице. Вместе с шагом также может быть опущена правая граница, что приведет к автоматической установке г = ¡1 и итоговому множеству О с единственным элементом ¡1.
Переменная цикла может быть использована внутри цикла как обычная переменная в арифметических выражениях и в качестве индекса вместе с обычной переменной:
перем(У1) = перем_имя, ["'"];
перем_имя (У3) = перем_инд | идент;
перем_инд = идент,"[", индекс,"]", [хвост];
индекс = [ЦБЗ, "*"], идент, [адд_оп, ЦБЗ];
адд_оп ="+ "|"-";
хвост = идент | ЦБЗ;
где терминальный символ перем_инд представляет собой имя переменной с индексом.
Как показано выше, в качестве индекса допускается использование простых арифметических выражений типа 2*1 + 1, 1-3 , 1 . Так как индексная запись является фактически манипуляцией с идентификаторами, индекс можно размещать внутри составного имени переменной, например, и[1] 0 , что в случае нулевого значения переменной цикла 1 приведет к использованию переменной с именем и0 0 .
Например, задача Коши
Х1'( 1 = Х2 (1) , Х1(10) = 1,
Х2' (1 = Х3 (1) , Х2С0) = 2,
Х3'(1 = Х4 (1) , Х3(10) = 3,
Х4' (1 = Х5 (1) , Х4С0) = 4,
Х5'( = Х1 (1) , Х5(10) = = 5
может быть описана на LISMA_HDS в виде программной модели, представленной на рис. 1.
Рис. 1. Программная модель с алгоритмическим определением задачи Коши
Fig. 1. A program model with an algorithmically defined initial value problem
В язык встроены некоторые часто используемые математические функции, например, модуля (abs(x)), экспоненциальная (exp(x)), максимума двух чисел (max(x, y)), минимума двух чисел (min(x, y)), степенная (pow(x, y)), квадратного корня (sqrt(x)), тригонометрические (sin(x), cos(x), tg(x), ctg(x)).
Грамматика вызова встроенной функции имеет вид
вызов(I3) = модуль |...| экспонента; модуль(A2) = "abs","(", АВ,")"; экспонента (A3) = "exp","(", АВ,")";
Рассмотрим простой пример неявной системы ДАУ. Имеется идеальный математический маятник - груз массой m, прикрепленный к подвижному шарниру при помощи жесткого недеформируемого стержня нулевой массы длиной l (рис. 2). Маятник находится в поле тяготения Земли, которое в рассматриваемой области пространства будем считать равномерным. На груз действует сила тяжести mg и усилие в стержне T . Совместим начало декартовой системы координат и положение шарнира. Пусть в начальный момент времени t0 груз находится в точке (Х0, y0), а его скорость равняется (vx0, vy0). Пренебрегая силой сопротивления среды и трением в шарнире, получим задачу Коши
mvx '(t) = -T(t)^, vx(t0) = vx0, x'(t)= vx (t), x(t0) = x0,
mvy '(t) = -T(t)y(t)-mg , vy(t0) = vy0, (3)
y'(t ) = vy (t) , y(t0) = y0 , x2(t) + y 2(t) = l2.
Математическая модель (3) может быть представлена на LISMA_HDS, как показано на рис. 3.
Строки 1, 2 отвечают за определение постоянных модели - массы маятника т и длины стержня ¡. Ускорение g является встроенной постоянной языка.
Строки 4, 6, 8, 10, 11 описывают систему уравнений в соответствии с математической моделью. Производные обозначаются традиционным для языка математики символом '.
н
Рис. 2. Идеальный математический маятник Fig. 2. A simple gravity pendulum
В строках 5 и 7 заданы точные начальные значения переменных x и v_x соответственно. Для y в строке 7 задано начальное приближение; v_y и T автоматически получат 0 в качестве начальных приближений.
2 const m = 1.0; // масса маятника
Рис. 3. Программная модель идеального математического маятника
Fig. 3. A program model of the simple gravity pendulum
Результаты вычислительного эксперимента с программной моделью на временном интервале [0;10] представлены на рис. 4.
Также LISMA_HDS содержит возможность задания макроподстановок, которые позволяют выделять общие части арифметических выражений в отдельную программную единицу с мнемоническим именем. Макроподстановки объявляются в соответствии с грамматикой
макрос(M3) = "macro", перем_имя," =", АВ,";";
Макроподстановки не являются уравнениями системы, а подстановка соответствующего арифметического выражения осуществляется во время формирования исполняемой модели.
Например, программная модель маятника, представленная на рис. 3, может быть записана с применением макроподстановок, как показано на рис. 5.
е
У, м
Рис. 4. Результаты расчета идеального маятника Fig. 4. Simulation results of the simple gravity pendulum calculation
2 const m = 1.0; ^ // масса^ маятника
Рис. 5. Программная модель идеального математического маятника с макроподстановкой
Fig. 5. A program model of the simple gravity pendulum with a macro
3. СПЕЦИФИКАЦИЯ ДИСКРЕТНОГО ПОВЕДЕНИЯ
Дискретное поведение ГС заключается в смене режимов при наступлении определенных событий.
Грамматика режима ГС на LISMA_HDS имеет вид
режим(M2) = "state", идент,"(", ЛВ,")", реж_тел, [реж_ист];
Описание режима ГС начинается с ключевого слова state . Следом идет имя режима (идентификатор) и логическое выражение (ЛВ ) в круглых скобках.
После предиката указывается тело режима, состоящее из набора уравнений, начальных условий и операторов удаления уравнений (ур_удал):
реж_тел (M4) ="{", {уравнение | нач_усл | ур_удал},"}";
ур_удал (D2) = "delete", ("*"| спис_мет),";"; спис_мет (L1) = идент, {",", идент};
Оператор delete позволяет удалить все (* ) или только указанные путем перечисления их меток уравнения из совокупной системы.
Объявление уравнений с уже существующей меткой приведет к замене всех старых уравнений с этой меткой в совокупной системе на новые с той же самой меткой.
Объявление уравнения без метки или с неиспользованной ранее меткой означает его добавление в совокупную систему.
Добавление или замена уравнения, задание начального значения переменной в режиме приводят к необходимости проведения инициализации.
После тела режима указываются режимы, из которых в него можно перейти, в соответствии с грамматикой
реж_ист (M5) = "from", реж_имя, {",", реж_имя},";"; реж_имя (M6) = идент | "init";
Если опустить конструкцию from , режим будет достижим из любого другого.
Логические выражения с типом событий (ЛВ) описываются следующей грамматикой:
ЛВ (E3) = ЛВТ, {или_оп, ЛВТ};
или_оп = "or"| "OR"|"||";
ЛВТ (E4) = ЛВР, {и_оп, ЛВР};
и_оп = "and "|" AND" | "&&";
ЛВР (E5) = ЛВС, {рав_оп, ЛВС}; рав_оп =" == "|"! =";
ЛВС (E6) = АВА, {отн_оп, АВА}; отн_оп =" <= "|" >= "|" < "|" >";
АВА (E7) = АВМ, {адд_оп, АВМ};
АВМ (E8) = УАВ, {мул_оп, УАВ};
мул_оп = "*" |"/";
УАВ (E9) = адд_оп, УАВ |УАВ2;
УАВ2(Е10) = не_оп, УАВ | операнд; не_оп ="not"|"NOT" |"!"; операнд(O1) ="(", АВ, ")"|перем|литерал|вызов|типизация; литерал (L2) = ЦБЗ |вещ_число; типизация (T1) = тип_соб,"(", ЛВ,")"; тип_соб (T2) = одн_соб | дву_соб | тру_соб | кри_соб; одн_соб = "unilateral"|" UNILATERAL"; дву_соб =" bilateral"|"BILATERAL"; тру_соб =" shortliving "|" SHORTLIVING";
кри_соб = "ordinary "|"ORDINARY";
АВ (E2) = ЛВ;
Таким образом, имеется возможность указать, что все событийные функции, входящие в предикат, описывают односторонние (одн_соб), двусторонние (дву_соб ), труднообнаруживаемые (тру_соб), критичные к точности обнаружения (кри_соб) события. По умолчанию события являются критичными к точности обнаружения. Тип события может быть указан только в логическом выражении конструкции state . В логические выражения не могут входить производные переменных системы.
Если ограничение на событийную функцию попадает под действие нескольких указателей типа события, то его типом считается ближайший, а остальные игнорируются. Например, предикат
unilateral(x<0 and bilateral(y<0))
эквивалентен предикату без вложенных указателей типа
unilateral(x<0) and bilateral(y<0).
В качестве примера ГС рассмотрим математический маятник из предыдущего раздела, но уже с горизонтальной недеформируемой пластиной бесконечной длины на уровне h = 0 , к которой прикреплен шарнир маятника (рис. 6). При столкновении с пластиной происходит абсолютно упругий отскок груза и последующее мгновенное разрушение стержня маятника.
Диаграмма состояний системы представлена на рис. 7, где условие перехода указано над стрелкой. Гибридная система начинает в режиме init, моделирующем движение маятника до разрушения.
УА
Рис. 6. Идеальный математический маятник с ограничением
Fig. 6. A simple gravity pendulum with an obstacle
y(t)>h
Рис. 7. Диаграмма состояний маятника с ограничением
Fig. 7. A state chart of the simple gravity pendulum with an obstacle
Режим «Маятник» имеет вид (3), но с дополнительным ограничением:
Pl(У(*)): У(*)" h < 0.
*
После столкновения в момент времени t система переходит в режим «Падение»:
vx '(t) = 0, vx(t*) = -vx(t* -0), x'(t) = vx (t), x(t*) = x(t* - 0),
Vy '(t) = -g , Vy (t*) = -Vy (t* -0),
y'(t) = Vy(t), y(t*) = y(t* - 0), pr2 (t): true,
*
где a(t - 0) означает финальное значение переменной a в предыдущем режиме.
Рассмотрим программную модель системы на LISMA_HDS, представленную на рис. 8.
const 1 = 5.0; // длина стержня const m = 1.0; // масса маятника
3 const h = 0.0; // высота препятствия
4
х" = их;
6 x(t0) =4.0;
7 у1 = v_y; у (tö) = -3.0; eqs: m * v_x" = -T
10 v_x(te) = -5.0;
11 eqs: m * v_y" = -T
12 est: x * x + у * у
IB
14 state Falling(unilateral(у >= h))
15 {
16 x(t0) = -5.0; y(t0) = h;
18 v_x(te) = 0.0;
19 v_y (t0) = - v_y;
20
21 delete est;
22 eqs: w_x" = 0.0;
23 eqs: w_y" = -g;
24 }
25 from init;
Рис. 8. Программная модель идеального математического маятника с ограничением
Fig. 8. A program model of the simple gravity pendulum with an obstacle
Строки 5-12 определяют локальное поведение ГС в режиме «Маятник» (init), где init - имя встроенного режима, в котором начинается вычислительный эксперимент.
Как только становится истинным условие y>=h с учетом односторонности события (указатель типа unilateral), выполняется переход в режим «Падение», описанный строками 14-25. Переход возможен только из режима init, что отражено в строке 25. При переходе удаляется уравнение-ограничение cst , заменяются дифференциальные уравнения eqs , включающие компоненты вектора скорости. Вертикальный компонент скорости меняет свой знак на противоположный в строке 19. Остальным переменным присваиваются новые явно заданные значения в строках 16-18. Это выполняется из-за невозможности идеально точного обнаружения события в связи с ограниченностью разрядной сетки компьютера.
На рис. 9 представлены результаты вычислительного эксперимента с моделью на временном интервале [0;2].
Кроме возможности объявления режима, LISMA_HDS также поддерживает событийное управление [15]. Оно позволяет выполнять некоторые действия в начале каждого шага интегрирования, если соответствующее условие истинно. Причем введение в модель событийного управления не приводит к появлению отдельного режима или событийных функций. Поэтому алгоритмы обнаружения событий в таком случае не используются. Событийное управление осуществляется с помощью известной конструкции if-else :
* х / 1;
* у / 1 - m * g; = 1*1;
соб_упр (I2) = "if","(", ЛВ,")", реж_тел, [иначе]; иначе (I4) = "else", реж_тел;
Рис. 9. Результаты расчета математического маятника с ограничением
Fig. 9. Simulation results of the simple gravity pendulum with an obstacle
Например, конструкция событийного управления в программной модели на рис. 10 не позволяет значению переменной x превысить 1.
Рис. 10. Пример использования событийного управления
Fig. 10. Example of using event control
Также в LISMA_HDS встроена конструкция для явного задания события времени. Это может быть как единоразовое событие, так и повторяющееся заданное количество раз. Грамматика конструкции имеет вид
цикл_соб (C4) ="at", время,["each", время, "гереа^'ДЦБЗ | "*")],реж_тел; время (T3) = литерал | идент;
Конструкция начинается с ключевого слова at и времени возникновения первого события. После ключевого слова each указывается период события. В качестве этих двух параметров могут выступать как числовые литералы, так и именованные постоянные (переменные). За ключевым словом repeat следует число повторений - неотрицательное целое число. Если опустить необязательную часть each - repeat, событие произойдет только один раз - в момент времени, указанный после at. * , repeat означает беско-
нечно генерируемое событие времени. Такую конструкцию удобно использовать для задания, например, генератора импульсов [16]. На рис. 11 показана программная модель с генерацией прямоугольных импульсов c периодом 2 и скважностью 2, начиная с момента времени t = 0 .
3 at 0 each 2 repeat * at 1 each 2 repeat *
Рис. 11. Генерация прямоугольных импульсов с помощью конструкции at - each - repeat
Fig. 11. Generating a square wave using the at - each-repeat construct
Объявлены два бесконечно повторяющихся явных события времени. Первое событие генерируется каждые две единицы модельного времени, начиная с tS1 = 0, и начинается очередной прямоугольный импульс. Второе
событие повторяется с тем же интервалом, но впервые возникает в ts2 =1 и
отвечает за окончание импульса.
4. КЛАССИФИКАЦИЯ ГРАММАТИКИ
Для простоты, когда это возможно, будем считать терминальными символами нетерминальные, означающие логические и арифметические операторы, например адд_оп , а также типы событий и имена математических функций. Введем сокращенные обозначения для терминальных символов G[модель] (табл. 1).
Представленная грамматика является контекстно-свободной по классификации Хомского, так как все ее продукционные правила имеют вид [11]
A ^а, A eVn , ae(Vj ^VN )*,
где VT и VN представляют собой терминальный и нетерминальный словари соответственно, а * означает итерацию.
Необходимым и достаточным условием принадлежности контекстно-свободной грамматики G(Vj, Vn , P, S), где P - множество продукционных правил, S - начальный символ грамматики, классу LL(k) является
VA ^ ß е P, A ^ у е P (ß * у): FIRST(£, ßra) n FIRST(£, ую) = 0
*
для все цепочек ю таких, что S ^ oAo [12].
Таблица 1 Table 1
Сокращенные наименования терминальных символов
Abbreviated notations of the terminal symbols
Терминал Сокращение Терминал Сокращение Терминал Сокращение
ii.II c1 и_и e1 идент i1
м(м 11 ")" r1 "t0" to
к _и e2 п. и s1 "const" c2
и и c3 "for" f1 ЦБЗ n1
вещ число n2 "{ " 12 r2
Mill d1 " [" 13 "]" r3
адд оп a1 m1 "/" m2
"state" m3 "delete" d2 "macro" m4
"from" f2 или оп o1 и оп a2
равн оп o2 отн оп o3 не оп n3
тип соб t1 имя мат функ a6 перем инд a5
"repeat" a4 "if" i2 "else" e3
"init" i3 "at" a3 "each" e4
FIRST(k, a), k e Z +, ae (Vt ^Vn ) , представляет собой множество выводимых из a терминальных цепочек, обрезанных до k символов [10, 12].
В табл. 2 представлены множества FIRST(1,a) и FIRST(2, a) для нескольких альтернативных продукционных правил G[модель] с пересекающимися FIRST(1, a). Совпадающие элементы множеств выделены полужирным шрифтом.
Таблица 2 Table 2
Множества FIRST(1, a) и FIRST(2, a)
Sets FIRST(1, a) and FIRST(2, a)
A a FIRST(1, a) FIRST(2, a)
A1 i1, a5 i1e1, a5e1
A4 E2 i1, a1, n3, 11, a6, t1, a5, n1, n2 a1a1, a1n3, n3a1, n3n3, a111, a1i1, a1a5, a1n1, a1n2, a1a6, a1t1, n311, n3i1, n3a5, n3n1, n3n2, n3a6, n3t1, 1111, 11i1, 11a5, 11n1, 11n2, 11a6, 11t1, 11a1,11n3, a611, t111, i1d1, a5d1, i1a1, i1m1, i1m2, i1o1, i1a2, i1o2, i1o3, a5a1, a5m1, a5m2, a5o1, a5a2, a5o2, a5o3, n1a1, n1m1, n1m2, n1o1, n1a2, n1o2, n1o3, n2a1, n2m1, n2m2, n2o1, n2a2, n2o2, n2o3
i1c1E2e1E2s1 i1 i1c1
E1 E2e1E2s1 i1, a1, n3, 11, a6, t1, a5, n1, n2 FIRST(2, E 2) u {i1e1,a5e1, n1e1, n2e1}
Окончание табл. 2
End of Tab. 2
A а FIRST(1, а) FIRST(2, а)
C1 c2 c2i1, c2a5
E1 i1, a1, n3, l1, a6, t1, a5, n1, n2 FIRST(2, i1c1E2e1E2s1) u FIRST(2, E2e1E2s 1)
D1 I1 i1, a5 i1l1, a5l1
M2 m3 m3i1
I2 i2 i2l 1
M3 m4 m4i1, m4a5
C4 a3 a3i1, a3n1, a3n2
C2 f1 f1i1
Аналогичным D1 образом строятся множества FIRST(1, а) и FIRST(2, а) для элементов тела цикла и тела режима, из которых так же выводятся цепочки E1 и I1, а поэтому пересекаются FIRST(1, а), но не пересекаются FIRST(2, а).
Таким образом, порождающая грамматика 0[модель] языка LISMA_HDS относится к классу LL(2).
ЗАКЛЮЧЕНИЕ
Представленный в работе декларативный язык моделирования общего назначения LISMA_HDS инструментальной среды ИСМА включает возможности непосредственного или алгоритмического объявления программных постоянных, задачи Коши для неявной системы ДАУ, начальных приближений переменных, а также позволяет задавать явные события времени, режимы функционирования и переходы между ними по событиям разных типов, использовать макроподстановки и реализовывать событийное управление.
Доказано, что порождающая грамматика LISMA_HDS принадлежит к подклассу LL(2) контекстно-свободных грамматик. Для грамматик типа LL(k) возможно построение k-предсказывающего нисходящего синтаксического анализатора, выполняющего однозначный и безвозвратный разбор входной цепочки символов за линейное относительно ее длины время. Так как новая грамматика относится к тому же классу, что и грамматика другого текстового языка моделирования инструментальной среды ИСМА -LISMA_PDE, обеспечивается преемственность методов анализа.
СПИСОК ЛИТЕРАТУРЫ
1. Brenan K.E., Campbell S.L., Petzold L.R. Numerical solution of initial-value problems in differential-algebraic equations. - PA, USA: Society for Industrial, Applied Mathematics, 1995. - 251 p.
2. Mazzia F., Magherini C. Test set for initial value problem solvers, release 2.4, Report 4/2008. - Bari, Italy: University of Bari, 2008. - URL: http://pitagora.dm.uniba.it/~testset (accessed: 09.03.2021).
3. CellierF.E., Kofman E. Continuous system simulation. - USA: Springer, 2006. - 644 p.
4. Urquía Moreleda A., Martín Villalba C. Modeling and simulation in engineering using Modélica. - Madrid, Spain: UNED Editorial, 2018. - 298 p.
5. Колесов Ю.Б., Сениченков Ю.Б. Моделирование систем. Динамические и гибридные системы: учебное пособие. - СПб.: БХВ-Петербург, 2012. - 224 с.
6. Shornikov Yu.V., DostovalovD.N. Fundamentals of event-continuous system simulation theory. - Novosibirsk: NSTU Publ., 2018. - 175 p.
7. Esposito J.M., Kumar V., Pappas G.J. Accurate event detection for simulating hybrid systems // Proceedings of the 4th International Workshop on Hybrid Systems: Computation and Control (HSCC '01). - Berlin, Heidelberg: Springer, 2001. - P. 204-217.
8. Попов Е.А., Шорников Ю.В. Детекция событий разного типа в гибридных динамических системах // Научный вестник НГТУ. - 2020. - № 4 (80). - С. 159-176.
9. Fritzson P. Principles of object-oriented modeling and simulation with Modelica 3.3: A cyber-physical approach. - Wiley-IEEE Press, 2015. - 1256 p.
10. Compilers: principles, techniques, and tools / A.V. Aho, M.S. Lam, R. Sethi, J.D. Ullman. -Pearson Education, 2007. - 1040 p.
11. Шорников Ю.В. Теория и практика языковых процессоров: учебное пособие. - Новосибирск: Изд-во НГТУ, 2004. - 208 с.
12. ГордеевА.В., МолчановА.Ю. Системное программное обеспечение. - СПб.: Питер, 2001. - 736 с.
13. БессоновА.В. Символьная спецификация и анализ программных моделей гибридных систем: дис. ... канд. техн. наук. - Новосибирск, 2016. - 164 с.
14. ISO/IEC 14977:1996 Information technology - Syntactic metalanguage - Extended BNFEBNF Standard. - ISO, 1996. - 12 p.
15. ТомиловИ.Н. Синтаксически ориентированные и графические средства описания и анализа моделей гибридных систем: дис. ... канд. техн. наук. - Новосибирск, 2010. - 175 с.
16. Shornikov Yu., Popov E. Modeling and simulation of electronic devices in the ISMA environment // 2019 International Seminar on Electron Devices Design and Production (SED). - IEEE, 2019. - P. 1-4.
Попов Евгений Александрович, ассистент кафедры автоматизированных систем управления Новосибирского государственного технического университета. Основное направление научных исследований - языки моделирования и алгоритмы численного анализа гибридных динамических систем. Имеет 30 публикаций. E-mail: e.popov@ corp.nstu.ru
Шорников Юрий Владимирович, доктор технических наук, профессор, профессор кафедры автоматизированных систем управления Новосибирского государственного технического университета. Основное направление научных исследований - математическое, лингвистическое и программное обеспечение моделирования гибридных динамических систем. Имеет около 200 публикаций. E-mail: [email protected]
Popov Evgeny A., teaching assistant at the Automated Control Systems Department of Novosibirsk State Technical University. The main area of his research is modeling languages and simulation algorithms for hybrid dynamical systems. He has 30 publications. E-mail: [email protected]
Shornikov Yury V, D.Sc. (Eng.), professor, professor at the Automated Control Systems Department of Novosibirsk State Technical University. The main area of his research is mathematical and linguistic software for modeling and simulation of hybrid dynamical systems. He has about 200 publications. E-mail: [email protected]
DOI: 10.17212/2782-2001-2021-1-103-122 LISMA_HDS language for modeling heterogeneous dynamic systems
E.A. POPOVa, YU.V. SHORNIKOVb
Novosibirsk State Technical University, 20, K. Marx Prospekt, Novosibirsk, 630073, Russian Federation
a [email protected] b [email protected]
Abstract
Heterogeneous dynamic systems (HDS) simultaneously describe processes of different physical nature. Systems of this kind are typical for numerous applications. HDSs are characterized by the following features. They are often multimode or hybrid systems. In general, their modes are defined as initial value problems (Cauchy problems) for implicit differential-algebraic systems of equations. Due to the presence of heterogeneous dynamic components or processes evolving in both time and space, the dimension of the complete system of equations may be pretty high. In some cases, the system of equations has an internal structure, for instance, the differential-algebraic system of equations approximating a partial differential equation by the method of lines. An original huge system of equations can then be algorithmically rewritten in a compact form. Moreover, heterogeneous hybrid dynamical systems can generate events of qualitatively different types. Therefore one has to use different numerical event detection algorithms.
Nowadays, HDSs are modeled and simulated in computer environments. The modeling languages widely used by engineers do not allow them to fully specify all the properties of the systems of this class. For instance, they do not include event typing constructs.
That is why a declarative general-purpose modeling language named LISMA_HDS has been developed for the computer-aided modeling and ISMA simulation environment. The language takes into account all of the characteristic features of HDSs. It includes constructs for plain or algorithmic declaration of model constants, initial value problems for explicit differential-algebraic systems of equations, and initial guesses for variables. It also allows researchers to define explicit time events, modes and transitions between them upon the occurrence of events of different types, to use macros and implement event control.
LISMA_HDS is defined by a generative grammar in an extended Backus-Naur form and semantic constraints. It is proved that the grammar belongs to the LL(2) subclass of context-free grammars.
Keywords: heterogeneous dynamic systems, hybrid dynamical systems, modeling languages, event typing, formal grammars, ISMA modeling and simulation environment
REFERENCES
1. Brenan K.E., Campbell S.L., Petzold L.R. Numerical solution of initial-value problems in differential-algebraic equations. PA, USA, Society for Industrial, Applied Mathematics, 1995. 251 p.
2. Mazzia F., Magherini C. Test set for initial value problem solvers, release 2.4, Report 4/2008. Bari, Italy, University of Bari, 2008. Available at: http://pitagora.dm.uniba.it/~testset (accessed 09.03.2021).
3. Cellier F.E., Kofman E. Continuous system simulation. USA, Springer, 2006. 644 p.
4. Urquía Moreleda A., Martín Villalba C. Modeling and simulation in engineering using Modelica. Madrid, Spain, UNED Editorial, 2018. 298 p.
*
Received 28 October 2020.
5. Kolesov Yu.B., Senichenkov Yu.B. Modelirovanie sistem. Dinamicheskie i gibridnye sistemy [System modeling and simulation. Dynamical and hybrid systems]. St. Petersburg, BHV-Peterburg Publ., 2012. 224 p.
6. Shornikov Yu.V., Dostovalov D.N. Fundamentals of event-continuous system simulation theory. Novosibirsk, NSTU Publ., 2018. 175 p.
7. Esposito J.M., Kumar V., Pappas G.J. Accurate event detection for simulating hybrid systems. Proceedings of the 4th International Workshop on Hybrid Systems: Computation and Control (HSCC '01). Berlin, Heidelberg, Springer, 2001, pp. 204-217.
8. Popov E.A., Shornikov Yu.V. Detektsiya sobytii raznogo tipa v gibridnykh dinamicheskikh sistemakh [Detection of different type events in hybrid dynamical systems]. Nauchnyi vestnik Novo-sibirskogo gosudarstvennogo tekhnicheskogo universiteta = Science bulletin of the Novosibirsk state technical university, 2020, no. 4 (80), pp. 159-176.
9. Fritzson P. Principles of Object-Oriented Modeling and Simulation with Modelica 3.3: A cyber-physical approach. Wiley-IEEE Press, 2015. 1256 p.
10. Aho A.V., Lam M.S., Sethi R., Ullman J.D. Compilers: principles, techniques, and tools. Pearson Education, 2007. 1040 p.
11. Shornikov Yu.V. Teoriya i praktika yazykovykh protsessorov [Theory and practice of language processors]. Novosibirsk, NSTU Publ., 2004. 208 p.
12. Gordeev A.V., Molchanov A.Yu. Sistemnoe programmnoe obespechenie [System software]. St. Petersburg, Piter Publ., 2001. 736 p.
13. Bessonov A.V. Simvol'naya spetsifikatsiya i analizprogrammnykh modelei gibridnykh sistem. Diss. kand. tekhn. nauk [Textual specification and analysis of hybrid system program models. PhD eng. sci. diss.]. Novosibirsk, 2016. 164 p.
14. ISO/IEC 14977:1996 Information technology - Syntactic metalanguage - Extended BNFEBNFStandard. ISO, 1996. 12 p.
15. Tomilov I.N. Sintaksicheski orientirovannye i graficheskie sredstva opisaniya i analiza modelei gibridnykh sistem. Diss. kand. tekhn. nauk [Syntax-oriented and visual tools for describing and analyzing hybrid system models. PhD eng. sci. diss.]. Novosibirsk, 2010. 175 p.
16. Shornikov Yu., Popov E. Modeling and simulation of electronic devices in the ISMA environment. 2019 International Seminar on Electron Devices Design and Production (SED). IEEE, 2019, pp. 1-4.
Для цитирования:
Попов Е.А., Шорников Ю.В. Язык моделирования гетерогенных динамических систем LISMA_HDS // Системы анализа и обработки данных. - 2021. - № 1 (81). - С. 103-122. -DOI: 10.17212/2782-2001-2021-1-103-122.
For citation:
Popov E.A., Shornikov Yu.V. Yazyk modelirovaniya geterogennykh dinamicheskikh sistem LISMA_HDS [LISMA_HDS language for modeling heterogeneous dynamic systems]. Sistemy analiza i obrabotki dannykh = Analysis and data processing systems, 2021, no. 1 (81), pp. 103-122. DOI: 10.17212/2782-2001-2021-1-103-122.
ISSN2782-2001, http://journals.nstu.ru/vestnik Analysis and data processing systems Vol. 81, No 1, 2021, pp. 103-122