В этом примере показано, как использовать 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.
Мы используем пользовательское требование, чтобы минимизировать эту стоимость. enginetradeoff_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
Model parameterization:
Чтобы достигнуть эффективности и стоить целей, мы параметрируем следующее в модели:
Значение последнего шага ссылки скорости: Это гарантирует что дизайнерские работы в области значений рабочих точек от низкой скорости до скоростных значений.
Получите, полюс и нулевые значения контроллера: Это позволяет нам изменять эффективность контроллера. Мы настраиваем эти значения с помощью оптимизации.
Время отклика привода дросселя: время отклика оптимизировано, чтобы минимизировать стоимость контроллера. Стоимость привода обратно пропорциональна времени отклика, i.e., более быстрое время отклика подразумевает более дорогой привод.
Точность датчика об/мин: точность задана значением стандартного отклонения и оптимизирована, чтобы минимизировать стоимость контроллера. Стоимость датчика обратно пропорциональна стандартному отклонению, i.e., меньшее стандартное отклонение подразумевает более точный датчик, который является более дорогим.
Оптимизация контроллера механизма для эффективности и стоимости включает:
Оптимизируя контроллер, датчик и параметры привода.
Оптимизация ответа по различным условиям работы.
С проблемами этого типа это - хорошая практика, чтобы создать проект итеративно вместо того, чтобы оптимизировать для всех целей вместе. Здесь, мы используем деление и завоевываем стратегию как показано в приведенной ниже таблице. Идея состоит в том, чтобы использовать оптимизированные значения параметров от одного этапа как исходное предположение для следующего этапа.
Можно запустить Response Optimizer с помощью меню Apps в панели инструментов Simulink или sdotool
команда в MATLAB®. Можно запустить предварительно сконфигурированную задачу оптимизации в Response Optimizer путем открытия сначала модели и путем двойного клика на оранжевом блоке в нижней части модели. От Response Optimizer нажмите кнопку Plot Model Response, чтобы симулировать модель и показать, как хорошо первоначальный проект удовлетворяет конструктивным требованиям.
Проект оптимизации, сохраненный с примером, соответствует этапу 2. На этом этапе мы оптимизируем параметры контроллера в рабочем диапазоне. Для этого мы задаем K
P
и Z
как настроенные параметры и значение последнего шага, final_step
, из опорного сигнала как неопределенный параметр. На данном этапе пользовательская цель стоимости контроллера не включена в задачу оптимизации.
Мы вводим цель стоимости контроллера на этапе 3 путем конфигурирования модели можно следующим образом:
Откройте Uncertain Variables
редактор от Response Optimizer и затем снимает флажок для final_step
. Это удаляет развертку модели по различным рабочим точкам от задачи оптимизации и таким образом уменьшает вычислительную загрузку.
Откройте Design Variables
редактор от Response Optimizer и затем устанавливает флажок для sensor_std
настроить этот параметр.
Нажмите кнопку Select в Response Optimizer, чтобы открыть Design Requirements
редактор, и затем устанавливает флажок для пользовательского Cost
. Это составляет цель минимизации стоимости во время оптимизации.
Мы запускаем оптимизацию путем нажатия кнопки Optimize от Response Optimizer. Графики обновляются, чтобы указать, что конструктивным требованиям теперь удовлетворяют.
Сконфигурировать оптимизацию для Этапа 4:
Откройте Design Variables
редактор от Response Optimizer и затем устанавливает флажок для Tthrottle
настроить этот параметр.
Можно запустить оптимизацию путем нажатия кнопки Optimize от Response Optimizer.
Сконфигурировать оптимизацию для этапа 5:
Откройте Uncertain Variables
редактор от Response Optimizer и затем устанавливает флажок для final_step
развертывать модель в рабочем диапазоне.
Можно запустить оптимизацию путем нажатия кнопки Optimize от Response Optimizer.
% Close the model bdclose('enginetradeoff_demo')