В этом примере показано, как оптимизировать конструкцию для достижения пользовательской цели с помощью оптимизатора отклика. Параметры цилиндра оптимизируются для минимизации геометрии цилиндра и удовлетворения требований к конструкции.
Модель гидроцилиндра основана на модели Simulink sldemo_hydcyl. Модель включает в себя:
Pump и Cylinder Assembly подсистем. Дополнительные сведения о подсистемах см. в разделе Моделирование одного гидравлического цилиндра.
Ступенчатое изменение, применяемое к области отверстия регулирующего клапана цилиндра, которое вызывает изменение положения поршня цилиндра.
Площадь поперечного сечения цилиндра и постоянная поршневой пружины настраиваются в соответствии со следующими требованиями к конструкции:
Убедитесь, что время нарастания отклика поршня составляет менее 0,04 секунды, а время установки - менее 0,05 секунды.
Ограничить максимальное давление в цилиндре 1,75e6 Н/м.
Минимизируйте площадь поперечного сечения цилиндра.
Откройте оптимизатор ответа для настройки и выполнения задач оптимизации конструкции в интерактивном режиме с помощью команды
sdotool('sdoHydraulicCylinder')
В качестве конструктивных переменных для оптимизации укажите следующие параметры модели:
Площадь поперечного сечения цилиндра Ac
Постоянная поршневая пружина K
В раскрывающемся списке «Набор конструктивных переменных» выберите «Создать». Откроется диалоговое окно для выбора параметров модели для оптимизации.

Выбрать Ac и K. Нажмите кнопку < -, чтобы добавить выбранные параметры в набор конструктивных переменных.
Ограничьте площадь поперечного сечения цилиндра круглой площадью с радиусом от 1 до 2 сантиметров и постоянной пружиной поршня в диапазоне от 1e4 до 10e4 Н/м. Для этого укажите максимальное и минимальное значение для соответствующей переменной в столбцах «Максимальное» и «Минимальное».
Поскольку переменные значения имеют разные порядки величин, масштаб Ac по 1e-3 и K на 1е5.
После указания значений нажмите Enter.

Нажмите кнопку ОК. Новая переменная DesignVars отображается в браузере оптимизатора ответа.
Требования к конструкции требуют регистрации сигналов модели. Во время оптимизации модель моделируется с использованием текущего значения конструктивных переменных, а регистрируемый сигнал используется для оценки проектных требований.
Запишите давления в цилиндре, который является первым выходным отверстием Cylinder Assembly блок.
В раскрывающемся списке Создать выберите Сигнал. Откроется диалоговое окно выбора сигналов модели для регистрации.


Войти Pressures в качестве имени сигнала в поле Signal set. Затем в модели Simulink щелкните первый выходной порт Cylinder Assembly блок с именем Pressure. Диалоговое окно обновляется для отображения выбранного сигнала.
Выберите сигнал в диалоговом окне и нажмите - >, чтобы добавить его в набор сигналов.

Нажмите кнопку ОК. В браузере оптимизатора отклика появится новая переменная давления.
Аналогично, зафиксируйте положение поршня, которое является вторым выходом Cylinder Assembly блок, в переменной с именем PistonPosition.

Указать максимальное давление в цилиндре менее 1,75e6 Н/м.
В раскрывающемся списке New выберите Signal Bound. Откроется диалоговое окно для создания требования к привязке сигнала.


Обозначить имя требования как MaxPressure. В столбцах «Начальная» и «Конечная амплитуда» введите максимальное давление 1,75e6 Н/м и установите для параметра «Время окончания кромки» значение 0,1. В области «Выбор сигналов для ограничения» выберите Pressures, сигнал, к которому применяется это требование.

Нажмите кнопку ОК.
Новое MaxPressure появляется в браузере оптимизатора ответа.
Графическое представление требований к максимальному давлению создается автоматически.

Указать требование ответа на шаг положения поршня по времени подъема менее 0,04 секунды и времени отстаивания менее 0,05 секунды.
В раскрывающемся списке Создать на вкладке Оптимизация ответа выберите Конверт ответа шага. Откроется диалоговое окно для создания требования ответа на шаг.
Укажите требование с именем PistonResponseи необходимое повышение и установление временных границ. Выбрать PistonPosition в качестве сигнала для применения требования ответа на шаг к.

Нажмите кнопку ОК.
Пользовательская задача заключается в минимизации площади поперечного сечения цилиндра.
В раскрывающемся списке Создать выберите Пользовательское требование. Откроется диалоговое окно для создания пользовательского требования.

Укажите функцию для вызова во время оптимизации в поле Функция требования. При каждой итерации оптимизации программа вызывает функцию и передает текущие значения конструктивных переменных. Кроме того, при необходимости можно передавать регистрируемые сигналы в соответствии с пользовательским требованием. Здесь вы используете sdoHydraulicCylinder_customObjective в качестве пользовательской функции требования, которая возвращает значение площади поперечного сечения цилиндра.
В раскрывающемся списке Тип требования укажите, является ли требование целью минимизации (min), ограничение неравенства (<=) или ограничение равенства (==).

type sdoHydraulicCylinder_customObjective
function objective = sdoHydraulicCylinder_customObjective(data) %SDOHYDRAULICCYLINDER_CUSTOMOBJECTIVE % % The sdoHydraulicCylinder_customObjective function is used to define a % custom requirement that can be used in the graphical SDTOOL environment. % % The |data| input argument is a structure with fields containing the % design variable values chosen by the optimizer. % % The |objective| return argument is the objective value to be minimized by % the SDOTOOL optimization solver. % % Copyright 2011 The MathWorks, Inc. %For the cylinder design problem we want to minimize the cylinder %cross-sectional area so return the cylinder cross-sectional area as an %objective value. Ac = data.DesignVars(1); objective = Ac.Value; end
Щелкните График (Plot) Реакция модели (Model Response), чтобы смоделировать модель и проверить, насколько хорошо начальная конструкция удовлетворяет проектным требованиям. Чтобы отобразить оба графика требований одновременно, используйте виджеты компоновки печати на вкладке Вид (View).

На графиках видно, что требование к максимальному давлению удовлетворено, но требование к отклику шага положения поршня не удовлетворено.
Создайте график для отображения изменения площади поперечного сечения цилиндра и постоянной пружины поршня во время оптимизации.
В раскрывающемся списке «Данные для печати» выберите пункт «Варианты проектирования», содержащий конструктивные переменные оптимизации. Ac и K. В раскрывающемся списке Добавить график (Add Plot) создайте новый график итерации для отображения траекторий конструктивных переменных. Для этого нового графика щелкните Показать масштабированные значения (Show scaled values) на вкладке График итерации (Iteration Plot), чтобы облегчить просмотр двух траекторий на одних и тех же осях.

Щелкните Оптимизировать (Optimize) на вкладке Оптимизация ответа (Response Optimization).


Окно выполнения оптимизации обновляется в каждой итерации и показывает, что оптимизация сходилась после 4 итераций.
Pressures и PistonPosition графики показывают, что проектные требования выполнены. MinimizeAC график показывает, что площадь поперечного сечения цилиндра Ac минимизирована.
Чтобы просмотреть оптимизированные значения конструктивных переменных, щелкните имя переменной в браузере оптимизатора отклика. Оптимизированные значения конструктивных переменных автоматически обновляются в модели Simulink.
Как оптимизировать конструкцию цилиндра с помощью sdo.optimize см. раздел Оптимизация конструкции для достижения пользовательской цели (кода).