В этом примере показано, как использовать 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
Model parameterization:
Чтобы достигнуть производительности и стоить целей, мы параметризовали следующее в модели:
Значение последнего шага ссылки скорости: Это гарантирует что дизайнерские работы в области значений рабочих точек от низкой скорости до скоростных значений.
Получите, полюс и нулевые значения контроллера: Это позволяет нам изменять производительность контроллера. Мы настраиваем эти значения с помощью оптимизации.
Время отклика привода дросселя: время отклика оптимизировано, чтобы минимизировать стоимость контроллера. Стоимость привода обратно пропорциональна времени отклика, т.е. более быстрое время отклика подразумевает более дорогой привод.
Точность датчика об/мин: точность задана значением стандартного отклонения и оптимизирована, чтобы минимизировать стоимость контроллера. Стоимость датчика обратно пропорциональна стандартному отклонению, т.е. меньшее стандартное отклонение подразумевает более точный датчик, который является более дорогим.
Оптимизация контроллера механизма для производительности и стоимости включает:
Оптимизируя контроллер, датчик и параметры привода.
Оптимизация ответа по различным условиям работы.
С проблемами этого типа это - хорошая практика, чтобы создать проект итеративно вместо того, чтобы оптимизировать для всех целей вместе. Здесь, мы используем деление и завоевываем стратегию как показано в приведенной ниже таблице. Идея состоит в том, чтобы использовать оптимизированные значения параметров от одного этапа как исходное предположение для следующего этапа.
Можно запустить 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')