Оптимизируйте, оцените, и значения параметров блоков развертки

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

Можно развернуть значения параметров блоков или значения переменных рабочей области, которые вы используете, чтобы установить значения параметров. Используйте Model Data Editor (View> Model Data Editor) вкладка Parameters, Property Inspector (View> Property Inspector), командная строка или скрипты, чтобы изменить значения параметров между выполнениями симуляции.

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

Чтобы изучить, как управлять значениями параметров во время итеративного процесса создания модели, смотрите Мелодию и Эксперимент со Значениями Параметров блоков.

Для основной информации о доступе и устанавливании значений параметров блоков, когда вы разрабатываете модель, смотрите Установленные Значения Параметров блоков. Для основной информации о программно симуляции модели, такой как при помощи скрипта, смотрите Симуляции Выполнения Программно.

Разверните значение параметров и осмотрите результаты симуляции

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

Модель sldemo_absbrake в качестве примера использует блок Constant, чтобы задать заданное значение промаха для антиблокировочной тормозной системы. Моделируйте модель с двумя различными заданными значениями промаха, 0.24 и 0.25, и сравните выходную скорость колеса каждой запущенной симуляции.

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

Откройте модель в качестве примера.

open_system('sldemo_absbrake');

В модели выберите View> Model Data Editor.

В Model Data Editor выберите вкладку Signals.

Установите представление Change выпадающий список на Instrumentation. Столбец Данных логов показывает, что сигналы yout (который является виртуальной шиной) и slp сконфигурированы для журналирования. Когда вы моделируете модель, можно собрать и позже осмотреть значения этих сигналов при помощи Инспектора Данных моделирования.

В Model Data Editor выберите вкладку Parameters. Установите представление Change на Design.

В модели блок Constant выбор, маркировал Desired relative slip. Model Data Editor подсвечивает строку, которая соответствует параметру Постоянного значения блока.

Используйте Столбец значений, чтобы установить значение параметров на relSlip.

В то время как редактирование значения, рядом с relSlip, кликает по кнопке действий (с тремя вертикальными точками) и выбирает Create.

В диалоговом окне Create New Data, установленном Значении к 0.2 и нажимают Create. Переменная, значением которой является 0.2, появляется в базовом рабочем пространстве. Модель теперь получает относительное заданное значение промаха от этой переменной.

Также можно использовать эти команды в командной строке, чтобы создать переменную и сконфигурировать блок:

relSlip = 0.2;
set_param('sldemo_absbrake/Desired relative slip','Value','relSlip')

В командной строке создайте массив, чтобы сохранить два значения экспериментирования для относительного заданного значения промаха, 0.24 и 0.25.

relSlip_vals = [0.24 0.25];

Создайте объект Simulink.SimulationInput для каждой симуляции, которую вы хотите запустить (в этом случае, два). Храните объекты в переменной единого массива, simIn. Используйте метод setVariable каждого объекта идентифицировать каждое из двух значений экспериментирования.

for i = 1:length(relSlip_vals)
    simIn(i) = Simulink.SimulationInput('sldemo_absbrake');
    simIn(i) = setVariable(simIn(i),'relSlip',relSlip_vals(i));
end

Используйте функцию sim, чтобы моделировать модель. Опционально, сохраните вывод в переменной под названием simOutputs.

simOutputs = sim(simIn);
[11-Jan-2019 05:05:33] Running simulations...
[11-Jan-2019 05:05:35] Completed 1 of 2 simulation runs
[11-Jan-2019 05:05:36] Completed 2 of 2 simulation runs

Образцовые потоки регистрируемые сигналы, yout и slp, Инспектору Данных моделирования. Можно просмотреть данные сигнала в Инспекторе Данных моделирования.

Сравните выходные данные двух последних выполнений симуляции.

runIDs = Simulink.sdi.getAllRunIDs();
runResult = Simulink.sdi.compareRuns(runIDs(end-1), runIDs(end));

Постройте различие между значениями сигнала Ww (который является элементом виртуального сигнала шины yout) путем указывания, что результат индексирует 1.

signalResult = getResultByIndex(runResult,1);
plot(signalResult.Diff);

Сохраните значения развертки в объектах Simulink.SimulationInput

Когда вы пишете скрипт, чтобы запустить много симуляций, создать массив объектов Simulink.SimulationInput (один объект для каждой симуляции, которую вы хотите запустить). Используйте setVariable и методы setBlockParameter каждого объекта идентифицировать значения параметров, чтобы использовать для соответствующей запущенной симуляции. С этим методом вы избегаете необходимости использовать функцию set_param, чтобы изменить значения параметров блоков и команды присвоения, чтобы изменить значения переменных рабочей области между выполнениями симуляции.

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

Разверните нескаляры, структуры и объекты параметра

Если вы используете нескалярные переменные, переменные структуры, или Simulink.Parameter возражает, чтобы установить значения параметров блоков, использовать метод setVariable каждого объекта Simulink.SimulationInput. Обратитесь к примерам в таблице.

СценарийПример
Переменная MATLAB®, myArray, значение которого является массивом. Вы хотите установить третий элемент в массиве (принимающий индексацию на основе одну).
setVariable(simIn,'myArray(3)',15.23)
Переменная MATLAB, myStruct, который имеет поле под названием field1.
setVariable(simIn,'myStruct.field1',15.23)
Объект параметра, myParam, свойство Value которого является скаляром.
setVariable(simIn,'myParam.Value',15.23)
Объект параметра, myArrayParam, свойство Value которого является массивом. Вы хотите установить третий элемент в массиве.
setVariable(simIn,'myArrayParam.Value(3)',15.23)
Объект параметра, myStructParam, свойство Value которого является структурой. Структура имеет поле под названием field1.
setVariable(simIn,'myStructParam.Value.field1',15.23)

Разверните значение переменной в рабочем пространстве модели

Если вы используете рабочее пространство модели, чтобы сохранить переменные, когда вы используете метод setVariable объекта Simulink.SimulationInput изменить значение переменных, используйте аргумент пары Workspace, чтобы идентифицировать содержание модели:

setVariable(simIn,'myVar',15.23,'Workspace','myModel')

Получите и визуализируйте результаты симуляции

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

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

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

Улучшите скорость симуляции

Выполнять много симуляций, что каждое использование различные значения параметров, можно использовать ускоренные режимы симуляции. Для больших моделей ускоренные симуляции занимают меньше времени, чтобы выполниться, чем нормальные симуляции. Если у вас также есть Parallel Computing Toolbox™, можно использовать несколько ядер процессора, чтобы одновременно выполнить симуляции. Используйте аргументы функций parsim и sim.

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

Разверните значения параметров, чтобы протестировать и проверить систему

Если у вас есть Simulink® Test™, можно подтвердить, что модель все еще удовлетворяет требования, когда вы используете различные значения параметров. Переопределения параметра и тестовые итерации позволяют вам установить различные значения параметров для каждого теста. Для получения дополнительной информации смотрите Переопределения Параметра (Simulink Test) и Тестовые Итерации (Simulink Test).

Оцените и калибруйте параметры модели

Если у вас есть Simulink Design Optimization™, можно оценить значения параметра модели так, чтобы симуляция, выходные параметры тесно соответствуют данным, которые вы измеряете в реальном мире. Используйте этот метод, чтобы оценить реальные значения параметров в plant model, который представляет динамику реальной системы, когда вы не можете непосредственно измерить значения. Эта оценка улучшает точность модели объекта управления. Для получения дополнительной информации смотрите Оценочные Параметры от Результатов измерений (Simulink Design Optimization).

Настройте и оптимизируйте параметры контроллера и ПИД

Если у вас есть Simulink Control Design™, можно использовать PID Tuner, чтобы настроить параметры блока PID Controller. Для получения дополнительной информации смотрите, что ПИД-регулятор Настраивает Simulink (Simulink Control Design).

Если у вас есть Simulink Design Optimization, можно оптимизировать значения параметров управления так, чтобы симуляция, выходные параметры удовлетворяют требования ответа, которые вы задаете. Для получения дополнительной информации смотрите Оптимизацию Проекта, чтобы Удовлетворить Требования Переходного процесса (графический интерфейс пользователя) (Simulink Design Optimization).

Похожие темы