Улучшение эффективности оптимизации Используя быстрый перезапуск (код)

В этом примере показано, как использовать Быструю функцию Перезапуска Simulink®, чтобы ускорить оптимизацию модели. Вы используете быстрый перезапуск, чтобы оценить параметры модели дросселя механизма.

Как Быстрый Перезапуск Ускоряет Оптимизацию

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

Во время оптимизации неоднократно симулируется модель (часто десятки или сотни времен), Быстрый Перезапуск означает, что модель только скомпилирована однажды для них симуляция по сравнению с небыстрым перезапуском, где модель перекомпилирована каждый раз.

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

Открытая модель

Загрузите модель дросселя механизма. Цель состоит в том, чтобы настроить параметры модели, чтобы совпадать с результатами измерений. Для получения дополнительной информации на настройке задач смотрите Оценочные Значения Параметра модели (графический интерфейс пользователя) пример.

open_system('spe_engine_throttle')

Задайте проблемные данные об оценке

Это примеры фокусируется на интерфейсе командной строки для использования Быстрого Перезапуска во время оценки. Поскольку подробное описание интерфейса командной строки оценки видит Оценочные Значения Параметра модели (Код).

Задайте значения параметра модели, чтобы оценить и любые границы параметра.

p = sdo.getParameterFromModel('spe_engine_throttle',{'J','c','input_delay','k'});
p(1).Minimum = 0;
p(2).Minimum = 0;
p(3).Minimum = 0;
p(3).Maximum = 0.1;
p(4).Minimum = 0;

Задайте эксперимент оценки. Измеренные данные об эксперименте загружаются от spe_engine_throttle_ExperimentData Файл MATLAB. файл MATLAB Содержит Input_SignalData и Output_SignalData переменная, задающая данные сигнала ввода и вывода эксперимента.

load spe_engine_throttle_ExperimentData

Exp = sdo.Experiment('spe_engine_throttle');
Input = Simulink.SimulationData.Signal;
Input.Values    = Input_SignalData;
Input.BlockPath = 'spe_engine_throttle/Input';
Input.PortType  = 'inport';
Input.PortIndex = 1;
Input.Name      = 'spe_engine_throttle/Input:1';
Exp.InputData = Input;
Output = Simulink.SimulationData.Signal;
Output.Values    = Output_SignalData;
Output.BlockPath = 'spe_engine_throttle/Throttle';
Output.PortType  = 'outport';
Output.PortIndex = 1;
Output.Name      = 'spe_engine_throttle/Throttle:1';
Exp.OutputData = Output;

Создайте средство моделирования модели из эксперимента

Simulator = createSimulator(Exp);

Сконфигурируйте средство моделирования для быстрого перезапуска

Средство моделирования управляет, симулирована ли модель с помощью, быстро перезапускают или нет. fastRestart команда используется, чтобы сконфигурировать средство моделирования, чтобы использовать Быстрый Перезапуск.

spe_engine_throttle модель использует решатель переменного шага, и не могут выходные значения в те времена в измеренных данных об эксперименте. К выходным значениям во времена результатов измерений используйте set_param команда, чтобы задать логгирование модели выходные времена как переменная рабочей области. В целевой функции оценки переменная затем используется, чтобы задать выходные времена, чтобы совпасть с измеренными данными об эксперименте. Модель OutputTimes установлен прежде, чем сконфигурировать средство моделирования для быстрого перезапуска, как, если модель сконфигурирована для быстрого перезапуска, модель, регистрирующая настройку, не может измениться.

set_param('spe_engine_throttle','OutputOption','SpecifiedOutputTimes','OutputTimes','OutputTimesValues');
Simulator = fastRestart(Simulator,'on');

Средство моделирования может теперь использоваться во время оценки, и модель будет симулирована с помощью, быстро перезапускают.

Запустите оценку

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

optimfcn = @(P) spe_engine_throttle_Objective(P,Simulator,Exp);

Установите опции оптимизации и запустите оптимизацию.

Options = sdo.OptimizeOptions;
Options.Method = 'lsqnonlin';
[pOpt,Info] = sdo.optimize(optimfcn,p,Options);
 Optimization started 23-Jul-2021 10:29:08

                                          First-order 
 Iter F-count        f(x)      Step-size  optimality
    0      9       32.048            1                                         
    1     18        12.24       0.6495           18
    2     27       3.5944       0.3919         8.65
    3     36      1.11908        0.188         3.11
    4     45     0.648736       0.1968         1.25
    5     54     0.287517        1.093         1.12
    6     63     0.150691       0.3233        0.414
    7     72    0.0909367       0.5668       0.0794
    8     81    0.0705989       0.5692        0.154
    9     90    0.0705989        9.235        0.154
   10     99     0.070166        2.256        0.252
   11    108    0.0515291       0.3859       0.0676
   12    117    0.0481688       0.5612        0.214
   13    126    0.0378954       0.2593       0.0254
   14    135    0.0366916       0.3957        0.195
   15    144     0.028778      0.06182       0.0671
   16    153    0.0244849        2.036        0.087
   17    162    0.0210853        2.309       0.0435
   18    171    0.0177636        4.618        0.114
   19    180    0.0137155        4.973        0.114
   20    189    0.0107631        3.471       0.0684
   21    198   0.00861032        2.924       0.0603
   22    207   0.00771667        1.815       0.0461
Local minimum possible.

lsqnonlin stopped because the final change in the sum of squares relative to 
its initial value is less than the value of the function tolerance.

Восстановите модель

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

Simulator = fastRestart(Simulator,'off');
set_param('spe_engine_throttle','OutputOption','RefineOutputTimes','OutputTimes','[]');

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

Можно также сгенерировать код, чтобы сконфигурировать вас модель для быстрого перезапуска в Parameter Estimator и Response Optimizer. Сконфигурируйте модель для быстрого перезапуска как описано в Улучшающейся Эффективности Оптимизации Используя Быстрый Перезапуск (графический интерфейс пользователя). Затем используйте Generate MATLAB Code функция приложения.

Закройте модель.

bdclose('spe_engine_throttle')

Смотрите также

|

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

Больше о