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

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

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

Чтобы использовать решатель Partitioning, откройте настройки 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. Для получения дополнительной информации смотрите Сделать вашу модель в реальном времени жизнеспособной.

Ограничения

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

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

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

Определенные настройки Solver Configuration блоков несовместимы с решателем Partitioning. Симуляция, которая использует решатель Partitioning, приводит к ошибке, если модель содержит блок 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 Модели с помощью решателя разбиения на разделы

В этом примере показано, как сравнить скорость и точность симуляции, которая использует решатель Секционирования для результатов базовой линии. Это также показывает, как сравнить скорости решателя Partitioning и решателя Backward Euler.

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

     См. Код

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

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

     См. Код

    Логгирующий значок помечает сигнал в модели.

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

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

    • Локальный решатель Euler с фиксированным шагом

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

     См. Код

    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]        

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

    Локальные решатели fixed-step Partitioning и Backward Euler быстрее, чем решатель variable-step baseline. Решатель Partitioning обычно, но не всегда, быстрее, чем решатель Backward Euler.

  5. Чтобы сравнить результаты, откройте Данные моделирования Inspector.

     См. Код

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

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

Похожие примеры

Подробнее о