Техники моделирования, которые улучшают производительность

Ускорьте фазу инициализации

Ускорьте симуляцию путем ускорения фазы инициализации, использования этих методов.

Упростите графику Используя редактор маски

Объедините графику, и большие изображения занимают много времени, чтобы загрузить и представить. Маскированные блоки, которые содержат такие изображения, могут сделать вашу модель менее быстро реагирующей. Где возможно, удалите комплексные рисунки и изображения от маскированных блоков.

Если вы хотите сохранить изображение, замените его на меньшую, версию с низкой разрешающей способностью. Используйте редактор маски и отредактируйте команды рисования значка, чтобы сохранить изображение, которое загружается вызовом image().

Для получения дополнительной информации о редакторе маски см. Редактор Маски Обзор.

Консолидируйте вызовы функции

Когда вы открываете или обновляете модель, Simulink® запускает код инициализации маски. Если ваша модель содержит сложные команды инициализации маски, которые содержат много вызовов set_param, консолидируют последовательные вызовы в один вызов с несколькими парами аргумента. Консолидация вызовов может уменьшать издержки, сопоставленные с этими вызовами функции.

Чтобы узнать больше, смотрите Код коллбэка маски.

Загрузите данные Используя MAT-файл

Если вы используете скрипты MATLAB®, чтобы загрузить и инициализировать данные, можно улучшать производительность путем загрузки MAT-файлов вместо этого. Данные в MAT-файле находятся в двоичном файле и могут быть более трудными работать с, чем скрипт. Однако операция загрузки обычно инициализирует данные более быстро, чем эквивалентный скрипт MATLAB.

Для получения дополнительной информации смотрите MAT-файлы для Данных сигнала.

Уменьшайте интерактивность модели

В целом, чем более интерактивный модель, тем дольше она берет, чтобы моделировать. Используйте эти методы, чтобы уменьшать интерактивность вашей модели.

Отключите диагностику отладки

Некоторые активированные диагностические опции могут значительно замедлить симуляции. Считайте отключение их в образцовых параметрах конфигурации панелью Diagnostics.

Примечание

Выполнение Array bounds exceeded и Solver data inconsistency может замедлить образцовую производительность во время выполнения. Для получения дополнительной информации смотрите, что границы Массивов превысили и противоречивость данных Решателя.

Отключите отладку MATLAB

После проверки, что ваш код MATLAB работает правильно, отключите эти регистрации образцовых параметров конфигурации панель Simulation Target.

  • Enable debugging/animation

  • Detect wrap on overflow (with debugging)

  • Echo expressions without semicolons

Для получения дополнительной информации смотрите Образцовые Параметры конфигурации: Цель Симуляции.

Используйте поддержку библиотеки BLAS

Если ваша симуляция включает низкоуровневые операции над матрицей MATLAB, пользуйтесь библиотеками Basic Linear Algebra Subprograms (BLAS), чтобы использовать высоко оптимизированные внешние стандартные программы линейной алгебры.

Отключите анимации Stateflow

По умолчанию графики Stateflow® подсвечивают текущие активные состояния в модели и анимируют изменения состояния, которые происходят, когда модель моделирует. Эта функция полезна для отладки, но это замедляет симуляцию.

Чтобы ускорить симуляции, или закройте все диаграммы Stateflow или отключите анимацию. Точно так же рассмотрите анимацию отключения или сокращение точности сцены, когда вы будете использовать:

  • Simulink 3D Animation™

  • Визуализация Simscape™ Multibody™

  • FlightGear

  • Любой другой 3D пакет анимации

Чтобы узнать больше, смотрите, Ускоряют Симуляцию (Stateflow).

Настройте свойства средства просмотра осциллографа

Если ваша модель содержит средство просмотра осциллографа, которое отображает высокий показатель журналирования, и вы не можете удалить осциллограф, настроить свойства средства просмотра обменять точность на рендеринг скорости.

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

Для получения дополнительной информации смотрите Средство просмотра Осциллографа.

Уменьшайте сложность модели

Используйте эти методы, чтобы улучшать производительность симуляции путем упрощения модели, не жертвуя точностью.

Замените подсистемы на альтернативы Более низкой Точности

Замените комплексную подсистему на одну из этих альтернатив:

  • Линейная или нелинейная динамическая модель, которая была создана из измеренных данных ввода - вывода с помощью System Identification Toolbox™.

  • Высокочастотная, нелинейная статистическая модель, которая была создана с помощью Model-Based Calibration Toolbox™.

  • Линейная модель, которая была создана с помощью Simulink Control Design™.

  • Интерполяционная таблица. Для получения дополнительной информации смотрите интерполяционную таблицу.

Можно поддержать оба представления подсистемы в библиотеке и использовать различные подсистемы, чтобы управлять ими. В зависимости от модели можно сделать эту замену, не влияя на полный результат. Для получения дополнительной информации смотрите, Оптимизируют Сгенерированный код для Блоков Интерполяционной таблицы.

Сократите количество блоков

Когда вы сокращаете количество блоков в вашей модели, меньше блоков требует обновлений во время симуляций, и симуляция быстрее.

  • Векторизация является одним способом уменьшать ваше количество блока. Например, если у вас есть несколько параллельных сигналов, которые подвергаются подобному набору вычислений, пытаются объединить их в вектор с помощью блока Mux и выполнить одно вычисление.

  • Можно также включить параметр Block Reduction в диалоговом окне Configuration Parameters.

Используйте основанную на кадре обработку

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

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

Выберите и сконфигурируйте решатель

Simulink обеспечивает всестороннюю библиотеку решателей, включая фиксированный шаг и решатели переменного шага, чтобы обработать жесткие и нежесткие системы. Каждый решатель определяет время следующего шага симуляции. Решатель применяет численный метод решить обыкновенные дифференциальные уравнения, которые представляют модель.

Решатель, который вы выбираете и опции решателя, которые вы выбираете, может влиять на скорость симуляции. Выберите и сконфигурируйте решатель, который помогает повысить производительность вашей модели с помощью этих критериев. Для получения дополнительной информации смотрите, Выбирают Solver (Global Optimization Toolbox).

Жесткость системы

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

Образцовый размер шага и динамика

Когда вы решаете между использованием переменного шага или решателя фиксированного шага, имеете в виду размер шага и динамику вашей модели. Выберите решатель, который использует временные шаги, чтобы получить только движущие силы, которые важны для вас. Выберите решатель, который выполняет только вычисления, должен был разработать следующий временной шаг.

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

Выберите решатель фиксированного шага, когда основной шаг расчета вашей модели будет равен одной из частот дискретизации. Выберите решатель переменного шага, когда основной шаг расчета вашей модели будет меньше, чем самая быстрая частота дискретизации. Можно также использовать решатели переменного шага, чтобы получить непрерывную динамику.

Уменьшите порядок решателя

Когда вы уменьшаете порядок решателя, вы сокращаете количество вычислений, которые Simulink выполняет, чтобы определить выходные параметры состояния, который улучшает скорость симуляции. Однако результаты становятся менее точными, когда порядок решателя уменьшается. Выберите самый низкий порядок решателя, который приводит к результатам с приемлемой точностью.

Увеличьте допуск размера или ошибки шага решателя

Увеличение допуска размера или ошибки шага решателя обычно увеличивает скорость симуляции за счет точности. Внесите эти изменения с осторожностью, потому что они могут заставить Simulink пропускать потенциально важную динамику во время симуляций.

Отключите обнаружение пересечения нулем

Решатели переменного шага динамически настраивают размер шага, увеличивая его, когда переменная изменяется медленно и уменьшение его, когда переменная изменяется быстро. Это поведение заставляет решатель делать много небольших шагов около разрыва, потому что это - когда переменная изменяется быстро. Точность улучшается, но часто за счет длинных времен симуляции.

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

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

Для получения дополнительной информации смотрите Обнаружение Пересечения нулем.

Сохраните состояние симуляции

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

Используя SimState, можно сохранить состояние симуляции в конце фазы запуска и затем восстановить его для использования в качестве начального состояния для будущих симуляций. Этот метод не улучшает скорость симуляции, но это может уменьшать общее время симуляции для последовательных выполнений, потому что фаза запуска должна быть моделирована только однажды.

Смотрите Сохраняют и Рабочая точка Симуляции Восстановления для получения дополнительной информации.

Связанные примеры

Больше о