что влияет на время выполнения моделирования в Modelica

Чтобы ускорить моделирование моей модели в Modelica, я задаю следующий вопрос: Что влияет на время выполнения моделирования в Modelica?

Я буду благодарен за любую возможную помощь.


person Dahmani Merzaka    schedule 03.01.2021    source источник
comment
Вы можете прочитать это: doi.org/10.3384/ecp1511859, а также Claytex.com/blog/how-can-i-make-my -модели-бегают-быстрее   -  person Priyanka    schedule 03.01.2021


Ответы (1)


Изменить: более подробную информацию можно найти в моей книге Modelica by Application - Power Systems (URL)

Что влияет на производительность среды выполнения?

I. Прикладные техники компиляции

Естественно, объектно-ориентированные модели Modelica, даже тривиальные, соответствовали бы крупномасштабной системе уравнений. Среды моделирования Modelica обычно оптимизируют такие сгенерированные модели:

  • уменьшить количество возможных уравнений, удалив тривиальные (например, уравнения-псевдонимы)
  • разложить большой блок системы уравнений с так называемым BLT-преобразованием на более мелкие каскадные блоки систем уравнений, которые могут быть решены быстрее последовательным образом, а не как единый блок уравнений,
  • решить s.c. большие алгебраические лупы с использованием разрывных методов.
  • Теоретически он может даже зайти слишком далеко и попытаться решить блоки системы уравнений аналитическим способом, если это возможно, вместо проведения дорогостоящего численного интегрирования.

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

II. Характер модели

Характер модели может повлиять на производительность во время выполнения, в частности:

  1. Модель - это крупномасштабная система? или малогабаритный?
  2. Он сильно нелинейный или полулинейный?
  3. Является ли полученная оптимизированная система уравнений, соответствующая модели, разреженной (т. Е. Большой набор уравнений, каждое из которых содержит небольшое количество переменных, например, модели энергосистемы) или плотной (например, многотельные системы и биохимические сети)
  4. Это жесткая система? (например, система с несколькими подсистемами, некоторые из которых демонстрируют очень быструю динамику, а другие - очень медленную)
  5. Показывает ли система большое количество государственных событий?
  6. ...

III Выбор решателя

Упомянутые характеристики данной модели обычно влияют на идеальный выбор решателя. Решающая программа может в значительной степени влиять на производительность (и точность) во время выполнения. Стратегия выбора решателя может быть сделана в следующем порядке:

  1. Для нежесткой слабонелинейной модели идеальным выбором был бы явный метод, например Одношаговая Рунга-Кутта или Многоступенчатая Адама-Башфорта высшего порядка. Если точность менее значима, можно попробовать явный метод более низкого порядка, который будет выполняться быстрее. Естественно, увеличение допустимой погрешности решателя также ускорило бы моделирование.

  2. Однако может случиться так, что, особенно для крупномасштабных систем, будет труднее гарантировать численную стабильность. Затем следует попытаться уменьшить размер шага решателя (и / или меньшую устойчивость к ошибкам) ​​для явных решателей. В этом случае неявный решатель с большим допуском ошибок может быть сопоставим с явным решателем с меньшим допуском.

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

  1. Для увеличения нелинейности модели выбор будет в большей степени ориентирован на современные решатели, использующие методы переменного шага. Здесь я бы начал с неявных многошаговых методов Рунга-Кутта с переменным шагом (то есть одношаговых) и / или неявных многошаговых методов Адамса – Моултона с переменным шагом. Для обоих этих классов можно увеличить допуск решателя и / или снизить порядок ошибок решателя и выяснить, дает ли моделирование сравнительно точные решения (но с более быстрым временем выполнения).

  2. Реализации предыдущих классов методов обычно менее консервативны с контролем ошибок, и поэтому для увеличения жесткости модели или плохо масштабируемых моделей выбор будет больше в пользу современных решателей, реализующих так называемую численно более стабильную формулу обратного дифференцирования (BDF). , са DASSL, CVODE, IDA. Эти решатели (могут) также использовать s.c. Якобиан системы адаптивного управления размером шага.

  3. Современный решатель, такой как LSODAR, который переключается между явным и неявным решателями, а также выполняет автоматический контроль порядка ошибок (переключение между разными порядками), является хорошим выбором, если вы не знаете столько информации о поведении модели. Возможно, в некоторых средах Modelica есть расширенный решатель, использующий автоматическое переключение. Однако, если кто-то знает поведение модели заранее, также разумно использовать другие предлагаемые методы, поскольку LSODAR может не выполнять наиболее оптимальное переключение при необходимости.

x. ...

Сравнения между решателями из классов 3, 4 и 5 непросто судить, и это также зависит от того, является ли система непрерывной или гибридной, то есть лежащими в основе алгоритмами поиска корней.

Обычно DASSL может быть медленнее, поскольку он более консервативен с размером шага / контролем ошибок. Так что вроде IDA и другие быстрее. Существуют некоторые опубликованные работы, которые могут дать некоторую интуицию относительно таких сравнений. Было бы неплохо иметь библиотеку Modelica, включающую все возможные типы моделей и выполняющую все возможные тесты w.r.t. точность и время выполнения, чтобы сделать еще несколько выводов, касающихся решателя / модели. Для этой цели можно использовать и расширять библиотеку ScalableTestSuite Modelica.

IV. Дополнительные аспекты

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

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

  3. Один набор предлагаемых решений (также для систем с высокой степенью жесткости) заключается в использовании так называемых методов QSS (система квантованного состояния). Это было бы значительно выгодно, особенно для моделей, которые нельзя решить с помощью явных решателей. Существуют как явные, так и неявные методы QSS. Существуют также другие стратегии численного интегрирования, которые стоит попробовать, когда при аппроксимации события состояния оцениваются только подмножества всей системы уравнений. Здесь я не уверен в наличии таких решателей.

  4. В некоторых средах моделирования различают два режима моделирования, которые могут влиять на время выполнения моделирования: режим ODE и режим DAE. В первом режиме система сводится к системе ОДУ с потенциально дополнительными каскадными блоками систем нелинейных уравнений. В режиме DAE система сводится к системе DAE с индексом один. Первый режим был бы полезен для плотных систем, показывающих такие большие каскадные блоки нелинейных уравнений, которые нужно решать с помощью s.c. Методы разрыва вместо численного интегрирования. Режим DAE будет полезен для крупномасштабных разреженных систем, решаемых с использованием разреженных решателей. Я думаю, что режим ODE обычно активируется выбором CVODE или LSODAR, в то время как режим DAE активируется выбором IDA или DASSL. Но также рекомендуется копаться в документации кое-где.

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

x. ...

В. Распараллеливание

Очевидно, что использование многоядерных процессоров / графических процессоров для параллельного выполнения численного интегрирования, среди других подходов к применению распараллеливания, может ускорить вычисления.

VI. довольно сложные темы

Чтобы обратить внимание на некоторые отличные исследовательские попытки, некоторые из которых могут быть использованы для ускорения выполнения моделирования крупномасштабных (слабосвязанных) гибридных сетевых моделей, я также перечисляю это здесь. Ускорение может быть достигнуто за счет использования гибридных парадигм, парадигмы агентного моделирования и / или многомодовой парадигмы. Идея состоит в том, что можно описать слабосвязанную систему в нескольких меньших подсистемах и осуществлять обмен данными между подсистемами только при необходимости. Это может быть полезно, а причины можно отследить, выполнив поиск соответствующих публикаций. По некоторым из упомянутых направлений проделана отличная работа, и если это так, стоит продолжить их там, где они остановились.

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

Предупреждение: некоторые из вышеперечисленных аспектов основаны на личном опыте работы с конкретным типом моделей и не обязательно верны для всех типов моделей.

Мало кто предлагал прочитать, и мне определенно не хватает многих ключевых публикаций:

person Atiyah Elsheikh    schedule 03.01.2021