这个例子展示了如何为Simscape™Multibody™模型找到稳态工作点findop
函数与基于投影的优化器。
基于投影的优化器加强了模型初始条件在每次评估目标函数或非线性约束函数时的一致性,这可以改善Simscape模型的裁剪结果。使用基于投影的微调优化器需要Optimization Toolbox™软件。
本示例的模型是一个在Simscape Multibody中建模的挖土机系统。
打开Simulin金宝appk模型。
mdl =“scdbackhoeTRIM”;open_system (mdl)
要定义工作点规范,首先要创建一个规范对象。中的输入、输出和状态值运维
匹配模型初始条件。
opspec = operspec (mdl);
指定模型输出为已知值以进行微调。
opspec.Outputs(1)。1 = true(10日);
为反铲系统的角度指定已知值。
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
选项“通路”
.
选择= findopOptions (“OptimizerType”,“graddescent-proj”,...“DisplayReport”,“通路”);
指定用于优化的函数求值的最大数目。
opt.OptimizationOptions.MaxFunEvals = 20000;
找到符合规范的稳态工作点opspec
.该操作耗时数分钟。
op = findop (mdl opspec,选择);
求出所有要求的dx/dt=0 x(k+1)-x(k)=0 y=ydes。(最大误差)块--------------------------------------------------------- (4.50000e+01) scdbackhoeTRIM/Out1 (3.54436e+00) scdbackhoeTRIM/Out1 (2.29690e-01) scdbackhoeTRIM/Out1 (3.84952 -02) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂右/转动关节臂(9.31982e-03) scdbackhoeTRI金宝appM/Plant/安装scdbackhoeTRIM/Plant/安装组件/安金宝app装底座和支撑臂/支撑臂左/转动关节臂(6.61700e-04) scdbackhoeTRIM/Plant/安装组件/安装底座和支撑臂/支撑臂左/转动关节臂(8.93138e-05)scdbackhoeTRIM/Plant/ installation Assembly/ installation金宝app Base and Support Arms/Support Arm Left/ revolte Joint Arm (1.41327e-05) scdbackhoeTRIM/Plant/ installation / installation Base and Support Arms/Support Arm Left/ revolte Joint Arm (9.72968e-06组装/安装底座和支撑臂/支撑臂右/转动关节臂(1.05金宝app012e-06) scdbackhoeTRIM/工厂/气缸底座到安装板(1.05012e-06) scdbackhoeTRIM/工厂/气缸底座到安装板操作点规格成功满足。
配置模型以使用计算的工作点人事处
作为模型的初始条件。
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 (,' /关节角轨迹”])
仿真结果表明,5个角均修剪到期望值。由于数值噪声和不稳定性,轨迹会随着时间的推移而轻微偏离。你可以使用反馈控制器来稳定角度。