Проект Engine и компромиссы стоимости

В этом примере показано, как использовать 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 с помощью меню Apps в панели инструментов Simulink или sdotool команда в MATLAB. Можно запустить предварительно сконфигурированную задачу оптимизации в ответ Инструмент Оптимизации путем открытия сначала модели и путем двойного клика на оранжевом блоке в нижней части модели. От Response Optimization Tool нажмите кнопку Plot Model Response, чтобы симулировать модель и показать, как хорошо первоначальный проект удовлетворяет конструктивным требованиям.

Проект оптимизации, сохраненный с примером, соответствует этапу 2. На этом этапе мы оптимизируем параметры контроллера в рабочем диапазоне. Для этого мы задаем KP и 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')