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

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

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

Чтобы использовать решатель Разделения, откройте настройки блока Solver Configuration и:

  1. Установите флажок Use local solver.

  2. Установите параметр Solver type на Partitioning.

  3. Снимите флажок Start simulation from steady state.

  4. Установите параметр Equation formulation на Time.

Для симуляции в реальном времени также установите флажок Use fixed-cost runtime consistency iterations. Для получения дополнительной информации смотрите, Делают Вашу Модель В реальном времени Жизнеспособный.

Ограничения

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

  • Собственный компонент, который использует язык Simscape delay оператор.

  • Блок, который использует дискретный шаг расчета в периодических событиях. Примеры включают Counter, Random Number, Repeating Sequence или блоки Uniform Random Number из Simscape / библиотека Physical Signals / Sources.

Определенные настройки блока Solver Configuration не совместимы с решателем Разделения. Симуляция, которая использует решатель Разделения, приводит к ошибке, если модель содержит блок Solver Configuration с:

  • Start simulation from steady state выбран

  • Набор Equation formulation к Frequency and time

Опции

Чтобы далее улучшать производительность симуляции, можно установить параметр Partition storage method на Exhaustive и задайте значение для параметра Partition memory budget [kB], на основе данных Total memory estimate в Statistics Viewer. Для получения дополнительной информации смотрите Solver Configuration и Статистику Модели, Доступную при использовании Решателя Разделения.

Симулируйте модель Simscape Используя решатель разделения

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

  1. Откройте модель. В командной строке MATLAB® введите код.

     См. код

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

    % Enable single-output format 
    set_param(model,'ReturnWorkspaceOutputs', 'on')
  3. Включите сигнал, который переходит к блоку scope Motor RPM для регистрации данных Simulink® и просматривающий с Data Inspector Simulink.

     См. код

    Значок логгирования отмечает сигнал в модели.

  4. Запустите синхронизированные симуляции для каждого из этих решателей:

    • Глобальный решатель переменного шага, исходный решатель для модели

    • Фиксированный шаг локальный Обратный Эйлеров решатель

    • Фиксированный шаг локальный решатель Разделения

     См. код

    compTimeDiffTable =
    
      3×2 table
    
             Solver         Sim_Duration
        ________________    ____________
    
        'Baseline'            [0.0319]  
        'Partitioning'        [0.0204]  
        'Backward Euler'      [0.0291]  
    
    compPctDiffTable =
    
      3×2 table
    
                     Comparison                 Percent_Difference
        ____________________________________    __________________
    
        'Partitioning versus Baseline'              [35.9128]    
        'Backward Euler versus Baseline'            [ 8.6623]    
        'Partitioning versus Backward Euler'        [29.8349]        

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

    Локальное Разделение фиксированного шага и Обратные Эйлеровы решатели быстрее, чем базовый решатель переменного шага. Решатель Разделения обычно, но не всегда, быстрее, чем Обратный Эйлеров решатель.

  5. Чтобы сравнить результаты, откройте Data Inspector Simulink.

     См. код

    Чтобы видеть сравнение, нажмите Compare и затем нажмите Sensing 1.

    Первый график показывает наложение базовой линии и результатов симуляции решателя Разделения. Второй график показывает, как они отличаются. Допуском по умолчанию к различиям является 0. Чтобы определить, удовлетворяет ли точность результатов ваши требования, можно настроить относительное, абсолютное, и допуски времени. Для получения дополнительной информации смотрите, Сравнивают Данные моделирования (Simulink).

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

Больше о