Если у вас есть большая модель, это может быть сложно, чтобы идентифицировать, какие части вашей модели заставляют решатель делать небольшие шаги. Журналы Профилировщика Решателя и события отчетов, когда решатель пытается сделать большие шаги. Этот отчет событий помогает вам идентифицировать который части вашей модели фокусироваться на улучшить производительность решателя.
Эта тема представляет простые примеры, которые иллюстрируют различные события что отчеты профилирования.
Этот пример моделирует шар, возвращающийся на твердой поверхности.
Когда вы запускаете Профилировщика Решателя на этой модели, модель моделирует на шагах 2898
и что это инициировало нуль 67
пересекающиеся события. Чтобы подсветить нулевые события пересечения на графике размера шага, кликните по вкладке Zero Crossing и выберите блок, который вызывает событие.
Результат указывает на это, когда спуски шара на твердой поверхности, он возвращается 67 раз прежде, чем прибыть в остановку. Сброс решателя после каждого возврата, увеличивая вычислительную загрузку. Наличие многого сброса улучшает точность за счет загрузки вычисления. Поэтому важно знать этот компромисс при моделировании.
Если бы это построение моделирования принадлежало большей модели, Профилировщик Решателя помог бы вам определить местоположение его. Вы могли затем изменить модель, чтобы улучшить производительность решателя. Например, можно решить уменьшить точность контакта, динамического путем увеличения фактора затухания, который сократил бы количество событий возврата. Увеличение затухания от 100 до 500 заставляет шар возвратить только времена 13
, позволяя моделированию завершиться на только шагах 669
.
Этот пример моделирует две идентичных нелинейных ослабляющих пружину системы. Эти две системы имеют различную пружинную жесткость.
Когда вы запускаете Профилировщика Решателя на этой модели, вы видите превышающие допуск события во вкладке Solver Exception.
Результат указывает, что более жесткая пружина заставляет допуск решателя, превышают предел. Как правило, модель утверждает, что изменяются, самые быстрые имеют тенденцию быть самыми близкими к пределу допуска решателя.
Решатель пытается сделать самые большие шаги при оптимальном обменивании между скоростью и точностью. Иногда, этот компромисс заставляет решатель, предпринимают шаги, которые превышают предел допуска, и обеспечивает его, чтобы уменьшить размер шага. Превышение предела допуска не является плохой практикой моделирования сам по себе. Эта статистическая величина профилировщика не предназначена, чтобы помочь вам уменьшить допуск чрезмерные события, чтобы обнулить.
Эта статистическая величина может помочь вам идентифицировать части своей модели, которые являются близко к превышению предела допуска. Можно идентифицировать компоненты модели, которые изменяют самое быстрое или являются самыми жесткими. Можно решить сохранить эту модель, динамическую в моделировании или упростить его, чтобы ускорить моделирование.
Превышающая допуск статистическая величина может также помочь вам идентифицировать ошибки моделирования. Если вы не ожидаете, что подсвеченные состояния изменятся как быстро, можно исследовать модель на ошибки. В этом примере ошибка моделирования могла состоять в том, что жесткость более жесткой пружины задана в N/m
вместо N/mm
. Эта ошибка делает пружину, в 1000 раз более жесткую, чем ожидалось.
Отказы итерации Ньютона характерны для неявных решателей как ode15s
и ode23t
, и они следуют из итераций Ньютона, не сходящихся после нескольких испытаний. Подобный превышающим допуск событиям, эти отказы имеют тенденцию происходить, когда система изменяется быстро.
Этот пример моделирует, как радиус шара пламени изменяется, когда вы зажигаете спичку. Шар пламени растет быстро, пока это не достигает критического размера, когда количество кислорода использовало, балансирует рост в поверхности шара.
Когда вы запускаете Профилировщика Решателя на этой модели, вы видите отказы итерации Ньютона во вкладке Solver Exception.
Результат указывает, что, когда сгорание начинается, допуск решателя превышен многократно. Когда равновесие достигнуто, система кажется отличающейся, и отказ итерации Ньютона происходит. Якобиан системы повторно вычисляется, и решатель продолжает продвигаться.
Отказы ньютона не показательны из плохих методов моделирования. Эта статистическая величина профилировщика не предназначена, чтобы помочь вам уменьшить эти отказы обнулить. В этом примере можно уменьшить допуск решателя, чтобы предотвратить этот отказ. Но решатель затем делает небольшие шаги излишне, который контрпродуктивен. Поэтому в этом примере, этот отказ приемлем.
Этот тип отказа становится проблематичным, когда это происходит в больших количествах за короткий период, особенно в моделях Simscape™. Плотные отказы указывают, что ваша модель не устойчива численно. Один способ улучшить числовую робастность состоит в том, чтобы сжать допуск решателя. Иначе должен изменить модель, чтобы избежать быстрых изменений.
Бесконечное исключение состояния происходит, когда значение состояния приближается к бесконечности. Точно так же, когда значение производной состояния приближается к бесконечности, бесконечное производное исключение происходит. Решатель уменьшает размер шага и предпринимает другую попытку интегрирования.
Этот пример показывает набор двух блоков Integrator Limited, которые имеют начальные условия немного меньше, чем realmax
. Когда они интегрируют входной параметр Константа 1e305
, решатель быстро достигает бесконечного исключения состояния.
Когда вы запускаете Профилировщика Решателя для этой модели, вы видите, что блоки InfiniteState5 и InfiniteState7 имеют 188
и 152
бесконечные исключения состояния во вкладке Solver Exceptions.
Большинство моделей Simscape использует дифференциальные алгебраические уравнения (ДАУ), в отличие от моделей Simulink®, которые используют обыкновенные дифференциальные уравнения.
Использование ДАУ добавляет сложность к моделям Simscape. Решатели как ode15s
и ode23t
могут обработать много типов ДАУ. Однако, когда алгебраические ограничения между компонентами Simscape являются комплексными и изменяющиеся быстрый, процессу итерации Ньютона не удается решить к тем ограничениям.
Этот пример моделирует источник давления, который может быть направлен к одной из двух гидравлических камер.
Когда вы моделируете эту модель, Simulink отображает несколько предупреждений.
Как правило, маленькие модели могут обработать такие предупреждения и моделировать к завершению. Однако это предупреждение указывает, что модель не устойчива численно. Незначительные изменения к модели или интегрирование в большую модель, могут привести к ошибкам.
Когда вы запускаете Профилировщика Решателя на этой модели, вы видите отказы ДАУ во вкладке Solver Exception.
В этом случае исключение следует из большого допуска решателя. Сжатие допуска решателя обеспечивает решатель, чтобы сделать меньшие шаги и лучшее получение изменения в алгебраических ограничениях.
Также этого исключения можно избежать путем удаления алгебраического ограничения. В этом примере непосредственно соединяются Запорный клапан и Направленный Клапан С 4 путями. Когда их отношение потока давления изменяется быстро, решатель не может получить изменения. Вставка Гидравлической Камеры между теми двумя компонентами делает их совместимыми. Чтобы узнать больше о сухих узлах, см. документацию Simscape.
Профилировщик Решателя регистрирует события, которые заставляют решатель сбрасывать свои параметры, потому что сброс решателя действительно несет вычислительные расходы. В дополнение к общему количеству сброса можно также видеть отказ типом события сброса.
Событие сброса решателя может иметь несколько причин. В результате количество Общих событий сброса решателя в панели Статистики может быть меньше, чем сумма сброса решателя каждого типа.
Некоторые нулевые события пересечения имеют место в разрывах в сигнале. Рассмотрите модель в качестве примера прыгающего мяча от раздела Zero-Crossing Events.
Профилировщик Решателя записывает сброс решателя 67
, вызванный нулевыми пересечениями от блока switch в модели. Сравните неродной размер и выделение Сброса Решателя с выводом x блока Second-Order Integrator, который является высотой шара от земли. Заметьте, что сброс решателя происходит, когда шар возвращается от земли.
Сброс решателя также происходит, когда ваша модель имеет дискретный сигнал, управляющий блоком с непрерывными состояниями, как замечено в этой модели в качестве примера.
Дискретный блок Sine Wave выводит синусоиду на 1 рад/с с дискретной частотой дискретизации ts = 2.
Отчет профилирования Решателя показывает, что четыре сброса решателя происходит из-за дискретных сигналов, управляющих непрерывным блоком. Этот сброс происходит при каждом выполнении блока Sine Wave.
Этот тип сброса решателя происходит, когда блок вывод не выполняется во время испытательного или незначительного временного шага и обновляется только во время интегрирования или главного временного шага. В результате блок вывел изменения с перерывами от одного главного временного шага до другого. В результате сброс решателя. Смотрите Фиксированный в частоте дискретизации Незначительного шага.
Эта модель в качестве примера показывает простой завод и контроллер, который отслеживает синусоидальный ссылочный сигнал. Источник этого сигнала является блоком Sine Wave, частота дискретизации которого задана, чтобы быть зафиксированной на незначительном шаге.
Заметьте от результатов профильного сеанса, что существует 80
сброс решателя Сигнала ZOH в моделировании.
Когда вы выбираете Continuous States для журналирования или включаете параметр SaveStates
, производной непрерывного блока, управляемого Фиксированным в сигнале Незначительного шага, является NaN
.
Это вызвано тем, что управление, Фиксированное в блоке Minor-Step, обновляет свое значение только на каждом главном временном шаге. Сигнал, до которого доводят, непрерывный блок поэтому прерывист, и состояние не дифференцируемо.
График показывает выходные параметры блоков Синусоиды и Интегратора в модели в качестве примера.
Сброс решателя вызвал из-за сигналов ZOH, серьезны по сравнению с событиями сброса решателя, вызванными дискретными сигналами, и может значительно замедлить моделирование. Это вызвано тем, что события сброса сигнала ZOH имеют место на каждом существенном шаге решателя. Реконфигурируйте свое моделирование, чтобы избежать этого сброса в случае необходимости.
Иногда, блок может быть сконфигурирован, чтобы сбросить решатель, когда определенные обстоятельства удовлетворены во время его выполнения. Рассмотрите модель sldemo_bounce
прыгающего мяча.
Заметьте от профильных результатов, что существует сброс решателя 130
, инициированный блоком. Событие сброса решателя может иметь несколько причин. В этом случае нулевые пересечения и блочные изменения вызывают событие сброса решателя.
Одной установкой, которая вызывает Блочное событие сброса решателя Изменения, является Повторно инициализирование dx/dt, когда x достигает параметра насыщенности. Эта установка необходима, чтобы правильно моделировать динамику прыгающего мяча.
Когда вы запускаете моделирование, решатель должен сбросить свои параметры впервые. Это событие показывают как событие Initial Reset в Отчете профилирования Решателя. Это происходит однажды в начале моделирования.
Существуют некоторые события сброса, которые являются внутренними к механизму Simulink. Эти события сброса необходимы для механизма, чтобы правильно сконфигурировать себя для точного моделирования.
Профилировщик Решателя поддерживает якобиевское журналирование и анализ для ode15s
и решателей ode23t
только.
Можно установить флажок Model Jacobian в Профилировщике Решателя, чтобы регистрировать обновления якобиевской матрицы для модели. Когда вы запускаете Профилировщика Решателя на модели, вы видите журналы в якобиевской вкладке Analysis.
Якобиевская вкладка Analysis указывает на состояния в модели, которые, вероятно, замедляют решатель.
Чтобы исследовать причину каждого ограничивающего состояния, выберите строку в якобиевской вкладке Analysis и нажмите Highlight Block.