Решатель Partitioning является Simscape™ локальным решателем с фиксированным шагом, который улучшает эффективность для определенных моделей путем снижения вычислительных затрат на симуляцию. Уменьшение вычислительных затрат приводит к более высокой скорости симуляции для моделирования рабочего стола и сокращению времени выполнения задачи (TET) для развертывания. Решатель преобразует всю систему уравнений для присоединенной сети Simscape в несколько меньших наборов коммутируемых линейных уравнений, которые соединяются через нелинейные функции. Вычислительные затраты уменьшаются, потому что более эффективно вычислять решения для нескольких меньших систем уравнений, чем вычислять решение для одной большой системы уравнений.
Решатель Partitioning не разбивает модели, то есть не разделяет модель на отдельные подсистемы для многоядерной обработки. Чтобы узнать, как разбить модель Simscape, смотрите Раздел модели.
Чтобы использовать решатель Partitioning, откройте настройки Solver Configuration блоков и:
Установите флажок Use local solver.
Установите параметр Solver type равным Partitioning
.
Снимите флажок Start simulation from steady state.
Установите параметр 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 и Статистика модели, доступная при использовании решателя секционирования.
В этом примере показано, как сравнить скорость и точность симуляции, которая использует решатель Секционирования для результатов базовой линии. Это также показывает, как сравнить скорости решателя Partitioning и решателя Backward Euler.
Откройте модель. В MATLAB® в командной строке введите код.
Чтобы вернуть все выходы симуляции за одну Simulink.SimulationOutput
объект, чтобы вы могли позже сравнить времена симуляции, включить формат с одним выходом sim
команда.
% Enable single-output format set_param(model,'ReturnWorkspaceOutputs', 'on')
Включите сигнал, который идет к блоку Motor RPM возможности для Simulink® логгирование и просмотр данных с помощью Данные Моделирования Inspector.
Логгирующий значок помечает сигнал в модели.
Запустите симуляции с разбиением по времени для каждого из этих решателей:
Глобальный решатель с переменным шагом, исходный решатель для модели
Локальный решатель 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.
Чтобы сравнить результаты, откройте Данные моделирования Inspector.
Чтобы увидеть сравнение, нажмите Compare и затем нажмите Sensing 1.
Первый график показывает наложение результатов симуляции базовой линии и решателя секционирования. Второй график показывает, чем они отличаются. Допуск по умолчанию для различий 0
. Чтобы определить, соответствует ли точность результатов вашим требованиям, можно настроить относительные, абсолютные и временные допуски. Для получения дополнительной информации см. «Сравнение данных моделирования».