主要内容

基于投影修剪优化器的稳态仿真

此示例展示了如何使用Simscape™Multibody™模型的findop函数与基于投影的优化器。

基于投影的优化器在每次评估目标函数或非线性约束函数时强制模型初始条件的一致性,这可以改善Simscape模型的修剪结果。使用基于投影的修剪优化器需要“优化工具箱”软件。

开放模式

本例的模型是在Simscape Multibody中建模的反铲系统。

打开Simulin金宝appk®模型。

mdl =“scdbackhoeTRIM”;open_system (mdl)

定义工作点规格

要定义操作点规范,首先创建一个规范对象。中的输入、输出和状态值运维匹配模型初始条件。

Opspec = operspec(mdl);

指定模型输出为用于微调的已知值。

opspec.Outputs(1)。已知= true(10,1);

指定反铲系统中已知的角度值。

opspec.Outputs(1).y(1) = 0;%斗角opspec.Outputs(1).y(3) = 50;%上角opspec.Outputs(1).y(5) = -50;%低角度opspec.Outputs(1).y(7) = 0;%底角opspec.Outputs(1).y(9) = -45;%支金宝app撑角

对于对应的角速度,已知值为零,与模型初始条件相匹配opspec

调整模型

控件创建用于微调的选项集,并指定优化器类型OptimizerType选择。对于这个例子,使用基于投影的梯度下降求解器。要在命令窗口中查看修剪进度的迭代更新,请设置DisplayReport选项“通路”

opt = findopOptions(“OptimizerType”“graddescent-proj”“DisplayReport”“通路”);

指定用于优化的函数求值的最大次数。

opt.OptimizationOptions.MaxFunEvals = 20000;

求满足规范的稳态工作点opspec.该操作需要几分钟。

Op = findop(mdl,opspec,opt);
优化解出所有期望的dx/dt=0, x(k+1)-x(k)=0, y=ydes。(最大误差)块--------------------------------------------------------- (4.50000e+01) scdbackhoeTRIM/Out1 (3.54437e+00) scdbackhoeTRIM/Out1 (2.29759e-01) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂右/旋转关节臂(9.32099e-03) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂右/旋转关节臂(7金宝app.25773e-04) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂右/旋转关节臂金宝app支撑臂/支撑臂左/旋转关节臂(6.61787e-04) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂左/旋转关节臂(8.93526e-05) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂左/旋转关节臂(1.41433e-05) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂左/旋转关节臂(9.74033e-06) scdbackhoeTRIM/Plant/气缸底座到安装板(1.01910e-06)scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂右/旋转关节臂(1.04653e-06金宝app) scdbackhoeTRIM/Plant/气缸底座到安装板(6.15935e-08) scdbackhoeTRIM/Plant/ Plant/气缸底座到安装板(3.88544e-08) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂右/旋转关节臂(3.88544e-08) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂右/旋转关节臂操作点成功地满足了规格要求。

模拟模型

配置模型以使用计算的操作点人事处为模型初始条件。

set_param (mdl“LoadExternalInput”“上”) set_param (mdl“ExternalInput”“getinputstruct (op) ') set_param (mdl“LoadInitialState”“上”) set_param (mdl“InitialState”“getstatestruct (op) '

模拟模型。

sim (mdl);

观察关节角轨迹。

(mdl open_system (,'/关节角轨迹'])

仿真结果表明,这五个角度都被裁剪到各自的期望值。随着时间的推移,由于数值噪声和不稳定性,轨迹可能略有偏离。你可以用反馈控制器稳定角度。

另请参阅

功能

相关的话题