Фиксированные решатели шага в Simulink

Fixed-step solvers решает модель в интервалах постоянного времени с начала в конец симуляции. Размер интервала известен как размер шага. Можно задать размер шага или позволить решателю выбрать размер шага. Обычно меньшее размер шага увеличивает точность результатов, но также и увеличивает время, требуемое симулировать систему.

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

Фиксированный шаг дискретный решатель вычисляет время следующего шага симуляции путем добавления фиксированного размера шага в текущее время. Точность и отрезок времени получившейся симуляции зависит от размера шагов, сделанных симуляцией: чем меньший размер шага, тем более точны результаты всего лишь дольше, симуляция берет. По умолчанию Simulink® выбирает размер шага, или можно выбрать размер шага сами. Если вы выбираете настройку по умолчанию auto, и если модель имеет дискретные шаги расчета, то Simulink устанавливает размер шага на основной шаг расчета модели. В противном случае, если никакие дискретные уровни не существуют, наборы Simulink, размер к результату деления различия между симуляцией запускается и времена остановки 50.

Фиксированный шаг непрерывные решатели

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

Примечание

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

Simulink обеспечивает два типа фиксированного шага непрерывные решатели — явный и неявный.

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

Фиксированный шаг непрерывные явные решатели

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

x(n+1)=x(n)+hDx(n)

где

  • x является состоянием.

  • Dx является зависимой решателем функцией, которая оценивает производную состояния.

  • h является размером шага.

  • n указывает на шаг текущего времени.

Simulink обеспечивает набор фиксированного шага непрерывные явные решатели. Решатели отличаются по определенному методу численного интегрирования, что они используются для расчета производных состояния модели. Эта таблица приводит каждый решатель и метод интегрирования, который это использует. Таблица приводит решатели в порядке вычислительной сложности методов интегрирования, которые они используют от наименее комплексного (ode1) к самому комплексному (ode8).

РешательМетод интегрированияПорядок точности

ode1

Метод Эйлера

Сначала

ode2

Метод Хеуна

Второй

ode3

Формула Шемпина Богацков

Треть

ode4

Четвертый порядок формула (RK4) Рунге-Кутта

Четвертый

ode5

Dormand-принц (RK5) формула

Пятый

ode8

Формула Dormand-Prince RK8(7)

Восьмой

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

Если вы задаете тип решателя фиксированного шага для модели, то по умолчанию, Simulink выбирает FixedStepAuto решатель. Автоматический решатель затем выбирает соответствующий решатель фиксированного шага, который может обработать и непрерывные и дискретные состояния с умеренным вычислительным усилием. Как с дискретным решателем, если модель имеет дискретные уровни (шаги расчета), то Simulink устанавливает размер шага на основной шаг расчета модели по умолчанию. Если модель не имеет никаких дискретных уровней, Simulink автоматически использует результат деления общей длительности симуляции 50. Следовательно, решатель предпринимает шаги в каждом времени симуляции, в котором Simulink должен обновить дискретные состояния модели на уровне ее заданных частот дискретизации. Однако это не гарантирует, что решатель по умолчанию точно вычисляет непрерывные состояния модели. Поэтому вы, возможно, должны выбрать другой решатель, различный фиксированный размер шага, или и достигнуть приемлемой точности и приемлемого времени симуляции.

Фиксированный шаг непрерывные неявные решатели

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

x(n+1)x(n)hDx(n+1)=0

Simulink предоставляет одному фиксированному шагу неявный решатель: ode14x. Этот решатель использует комбинацию метода Ньютона и экстраполяции от текущего значения, чтобы вычислить значение состояния на следующем временном шаге. Можно указать, что количество итераций метода Ньютона и экстраполяции приказывает, чтобы решатель использовался для расчета следующего значения состояния модели. Смотрите размер Фиксированного шага (основной шаг расчета). Чем больше итераций и выше порядок экстраполяции, который вы выбираете, тем больше точность вы получаете. Однако вы одновременно создаете большую вычислительную нагрузку на размер шага.

Выберите решатель Фиксированного Шага

Этот пример показывает алгоритмический метод выбора соответствующего решателя фиксированного шага для вашей модели. Для рабочих процессов симуляции в Simulink™ настройкой по умолчанию для параметра Решателя в Параметрах конфигурации Модели является auto. Эвристика, используемая Simulink, чтобы выбрать решатель переменного шага, показана на рисунке ниже.

Когда использовать решатель Фиксированного Шага

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

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

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

Модель в качестве примера представляет алгоритм управления полетом для продольного рейса самолета.

Warning: Method 'setUserActionInProgress' is not defined for class
'slreq.app.MainManager' or is removed from MATLAB's search path. 

Warning: Method 'setUserActionInProgress' is not defined for class
'slreq.app.MainManager' or is removed from MATLAB's search path. 

Установите базовые результаты Используя решатель Переменного Шага

Прежде чем вы начнете симуляцию, определите приемлемые ошибочные допуски к вашему решателю переменного шага. Модель в настоящее время настраивается со значениями по умолчанию абсолютных и относительных допусков 1e-6 и 1e-4 соответственно.

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

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

Симулируйте модель с помощью auto решатель или выбор другой решатель. Кроме того, включите состояния Сохранения, Сэкономьте времени и Save параметры выходных параметров в панели Импорта/Экспорта Данных Параметров конфигурации Модели. Установите формат логгирования для своей модели к Dataset позволить Инспектору Данных моделирования регистрировать сигналы.

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

Профилируйте модель с помощью Solver Profiler, чтобы найти соответствующий размер шага для симуляций фиксированного шага кандидата модели. См. Solver Profiler для получения информации о том, как запустить и использовать инструмент. Для использования командной строки смотрите solverprofiler.profileModel.

Отметьте максимальные и средние размеры шага, возвращенные Solver Profiler.

Warning: Solver Profiler temporarily changed model parameter
'ReturnWorkspaceOutputs' value from 'off' to 'on' for profiling, the parameter
value will be automatically restored after profiling is complete. 
Warning: Solver Profiler temporarily changed model parameter 'SaveState' value
from 'on' to 'off' for profiling, the parameter value will be automatically
restored after profiling is complete. 
             solver: 'ode45'
             tStart: 0
              tStop: 60
             absTol: 1.0000e-06
             relTol: 1.0000e-04
               hMax: 0.1000
           hAverage: 0.0447
              steps: 1342
        profileTime: 0.0305
           zcNumber: 0
        resetNumber: 600
     jacobianNumber: 0
    exceptionNumber: 193

Запустите симуляции Фиксированного Шага модели

Если вы получаете результаты симуляции переменного шага модели, симулируете его с помощью одного или нескольких решателей фиксированного шага. В этом примере модель симулирована с помощью всех нежестких решателей фиксированного шага: ode1, ode2, ode3, ode4, ode5, и ode8. Можно также выбрать определенный решатель из Решателя, выпадающего в Параметрах конфигурации Модели, чтобы запуститься против базовой линии переменного шага.

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

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

Для этого определенного примера, набор размер фиксированного шага решателя к 0,1 (максимальный размер шага, обнаруженный Solver Profiler). Это учитывает дискретный шаг расчета 0.1 из блока Dryden Wind-Gust, а также периодическая природа перемещений палки и ответа самолета.

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

Симулируйте модель путем выбора любого или всех нежестких решателей фиксированного шага от Решателя, выпадающего из Параметров конфигурации Модели, когда Тип решателя будет установлен в Fixed-step.

Simulink.sdi.Run объект создается для симуляции (симуляций) решателя фиксированного шага и хранится в fsRuns struct в базовом рабочем пространстве.

Сравните симуляции Фиксированного Шага с базовой линией Переменного Шага

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

Чтобы сравнить сигналы, переключитесь на вкладку Compare в Инспекторе Данных моделирования. Установите Базовый запуск на симуляцию переменного шага и выберите симуляцию фиксированного шага из Сравнивания, чтобы выпасть. Установите Глобальный Допуск Abs, Глобальный Допуск Рэла и Глобальный Допуск Времени на основе ваших требований.

В данном примере Глобальный Допуск Abs установлен в 0.065, Глобальный Допуск Рэла установлен в 0,005, и Глобальное Время, Tolerancce установлен в 0.1.

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

Самое низкоуровневое со всеми сигналами в допуске полно решимости быть ode4. Рассмотрите результаты для ode1 решателя фиксированного шага, где результаты сравнения показали 11 сигналов из допуска. Заметьте, что существует 11 сигналов из допуска, когда параметры сравнения сигнала устанавливаются как: * Допуск Abs сигнала: 0.065 * Допуск Рэла Сигнала: 0.065 * Допуск Времени Сигнала: 0.1

Copyright 2019 The MathWorks, Inc.