Этот пример показывает, как использовать Simulink Design Optimization™, чтобы оптимизировать проект для производительности и стоить. В этом примере мы настраиваем автомобильный контроллер скорости вращения двигателя при сокращении затрат контроллера путем настройки точности датчика и время отклика привода.
Откройте автомобильную модель механизма использование команды ниже. Следующие подсистемы моделируют ответ механизма: Throttle & Manifold
, Induction to Power Stroke Delay
, Combustion
, Drag Torque
и Vehicle Dynamics
. Основной сигнал интереса к модели является скоростью вращения двигателя в об/мин. Система управления состоит из ведущей задержки Controller
, rpm Sensor
и блоки Throttle actuator
. Модель управляется ступенчатым изменением в ссылке скорости.
open_system('enginetradeoff_demo')
Проект имеет следующие цели:
Цель производительности двигателя:
Механизм должен ответить на ступенчатые изменения в ссылке скорости со следующими характеристиками:
Максимальное перерегулирование 2%
Время нарастания 4 секунд, чтобы достигнуть 90% ссылочной скорости
Время установления 7,5 секунд, чтобы достигнуть в 2% ссылочной скорости
Эта цель включена как ограничение в блоке Performance requirement
. Вход к этому блоку является скоростью вращения двигателя, которая нормирована значением ссылки скорости. Это означает, что несмотря на то, что ссылка скорости изменяется, требование к производительности остается то же самое.
Стойте цели минимизации:
Стоимость проекта контроллера должна быть минимизирована. Эта цель использует параметризацию датчика и привода, чтобы вычислить стоимость проекта. Стоимость проекта вычисляется так, чтобы это было всегда больше, чем 1, и оптимизация пытается управлять стоимостью для 1.
Мы используем пользовательское требование, чтобы минимизировать эту стоимость. Функция enginetreadeoff_cost
, используемая пользовательским требованием просто, возвращает величину затрат, которая будет минимизирована.
type enginetradeoff_cost
function Cost = enginetradeoff_cost(u) %Compute controller cost based on sensor accuracy, actuator response, and %controller sampling time. % Copyright 2013 The MathWorks, Inc. %Cost constants min_cost = 1; %Minimum cost > 0 sensor_var_min = 1e-3; %Minimum sensor variance (most expensive) sampling_min = 1e-2; %Minimum controller sampling time (most expensive) throttle_max = 2*pi*10; %Maximum actuator response frequency (most expensive) %Get variable names varnames = {u.DesignVars.Name}; %Form cost Cost = min_cost; %Add sensor cost index = strcmp(varnames, 'sensor_std'); if any(index) Cost = Cost + sensor_var_min./max(u.DesignVars(index).Value,sensor_var_min); end %Add sampling cost index = strcmp(varnames, 'Ts'); if any(index) Cost = Cost+ sampling_min./max(u.DesignVars(index).Value,sampling_min); end %Add throttle cost index = strcmp(varnames, 'Tthrottle'); if any(index) Cost = Cost + u.DesignVars(index).Value/throttle_max; end
Образцовая параметризация:
Чтобы достигнуть производительности и стоить целей, мы параметризовали следующее в модели:
Значение последнего шага ссылки скорости: Это гарантирует что дизайнерские работы в области значений рабочих точек от низкой скорости до скоростных значений.
Получите, полюс и нулевые значения контроллера: Это позволяет нам изменять производительность контроллера. Мы настраиваем эти значения с помощью оптимизации.
Время отклика привода дросселя: время отклика оптимизировано, чтобы минимизировать стоимость контроллера. Стоимость привода обратно пропорциональна времени отклика, т.е. более быстрое время отклика подразумевает более дорогой привод.
Точность датчика об/мин: точность задана значением стандартного отклонения и оптимизирована, чтобы минимизировать стоимость контроллера. Стоимость датчика обратно пропорциональна стандартному отклонению, т.е. меньшее стандартное отклонение подразумевает более точный датчик, который является более дорогим.
Оптимизация контроллера механизма для производительности и стоимости включает:
Оптимизируя контроллер, датчик и параметры привода.
Оптимизация ответа по различным условиям работы.
С проблемами этого типа это - хорошая практика, чтобы создать проект итеративно вместо того, чтобы оптимизировать для всех целей вместе. Здесь, мы используем деление и завоевываем стратегию как показано в приведенной ниже таблице. Идея состоит в том, чтобы использовать оптимизированные значения параметров от одного этапа как исходное предположение для следующего этапа.
Можно запустить Response Optimization Tool с помощью меню Analysis в Simulink или команды sdotool
в MATLAB. Можно запустить предварительно сконфигурированную задачу оптимизации в ответ Инструмент Оптимизации первым открытием модель и путем двойного клика на оранжевом блоке в нижней части модели. От Response Optimization Tool нажмите кнопку Plot Model Response, чтобы моделировать модель и показать, как хорошо первоначальный проект удовлетворяет конструктивные требования.
Проект оптимизации, сохраненный с примером, соответствует этапу 2. На этом этапе мы оптимизируем параметры контроллера в рабочем диапазоне. Для этого мы задаем K
, P
и Z
как настроенные параметры и значение последнего шага, final_step
, ссылочного сигнала как неопределенный параметр. На данном этапе пользовательская цель стоимости контроллера не включена в задачу оптимизации.
Мы вводим цель стоимости контроллера на этапе 3 путем конфигурирования модели можно следующим образом:
Откройте редактор Uncertain Variables
от Response Optimization Tool и затем снимите флажок для final_step
. Это удаляет развертку модели по различным рабочим точкам от задачи оптимизации и таким образом уменьшает вычислительную загрузку.
Откройте редактор Design Variables
от Response Optimization Tool и затем установите флажок для sensor_std
, чтобы настроить этот параметр.
Нажмите кнопку Select в Response Optimization Tool, чтобы открыть редактор Design Requirements
, и затем установить флажок для пользовательского Cost
. Это составляет цель минимизации стоимости во время оптимизации.
Мы запускаем оптимизацию путем нажатия кнопки Optimize от Response Optimization Tool. Графики обновляются, чтобы указать, что конструктивные требования теперь удовлетворены.
Сконфигурировать оптимизацию для Этапа 4:
Откройте редактор Design Variables
от Response Optimization Tool и затем установите флажок для Tthrottle
, чтобы настроить этот параметр.
Можно запустить оптимизацию путем нажатия кнопки Optimize от Response Optimization Tool.
Сконфигурировать оптимизацию для этапа 5:
Откройте редактор Uncertain Variables
от Response Optimization Tool и затем установите флажок для final_step
, чтобы развернуть модель в рабочем диапазоне.
Можно запустить оптимизацию путем нажатия кнопки Optimize от Response Optimization Tool.
% Close the model bdclose('enginetradeoff_demo')