Проект 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:

Чтобы достигнуть эффективности и стоить целей, мы параметрируем следующее в модели:

  • Значение последнего шага ссылки скорости: Это гарантирует что дизайнерские работы в области значений рабочих точек от низкой скорости до скоростных значений.

  • Получите, полюс и нулевые значения контроллера: Это позволяет нам изменять эффективность контроллера. Мы настраиваем эти значения с помощью оптимизации.

  • Время отклика привода дросселя: время отклика оптимизировано, чтобы минимизировать стоимость контроллера. Стоимость привода обратно пропорциональна времени отклика, i.e., более быстрое время отклика подразумевает более дорогой привод.

  • Точность датчика об/мин: точность задана значением стандартного отклонения и оптимизирована, чтобы минимизировать стоимость контроллера. Стоимость датчика обратно пропорциональна стандартному отклонению, i.e., меньшее стандартное отклонение подразумевает более точный датчик, который является более дорогим.

Выполнение оптимизации

Оптимизация контроллера механизма для эффективности и стоимости включает:

  • Оптимизируя контроллер, датчик и параметры привода.

  • Оптимизация ответа по различным условиям работы.

С проблемами этого типа это - хорошая практика, чтобы создать проект итеративно вместо того, чтобы оптимизировать для всех целей вместе. Здесь, мы используем деление и завоевываем стратегию как показано в приведенной ниже таблице. Идея состоит в том, чтобы использовать оптимизированные значения параметров от одного этапа как исходное предположение для следующего этапа.

Можно запустить Response Optimizer с помощью меню Apps в панели инструментов Simulink или sdotool команда в MATLAB. Можно запустить предварительно сконфигурированную задачу оптимизации в Response Optimizer путем открытия сначала модели и путем двойного клика на оранжевом блоке в нижней части модели. От Response Optimizer нажмите кнопку Plot Model Response, чтобы симулировать модель и показать, как хорошо первоначальный проект удовлетворяет конструктивным требованиям.

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