Simulink优化工具箱入门案例演示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Simulink优化工具箱
Simulink优化工具箱有五个基本功能:
1.参数校准
2.系统响应优化
3.优化灵敏度分析
4.基于优化技术的控制系统设计
5.自动生成查表表格
通常来说灵敏度分析是说系统各个不确定性源对系统输出的影响。在优化工具箱里所进行的优化灵敏度分析是指各个优化参数对优化目标的cost function的影响。所以可以在优化之前进行灵敏度分析,评价各个参数对优化目标的权重。还可以在优化之后,分析优化结果对优化参数的鲁棒性。
基于优化技术的控制系统设计其实也就是优化控制参数。
下面举例来说明参数校准,系统响应优化以及自动生成查表表格。
参数校准
顾名思义,也就是使用参考数据来自动估算模型的参数或者仿真初始状态。
1.模型
打开这个内置模型msd_system。
初始位置设置为-0.1
待估算参数
mbk的当前值
示波器Positions里显示三路信号:当前仿真信号pos,第一次实验结果exp1,第二次实验结果exp2。
这里的m,b,k是保存在模型的workspace(注意不是base workspace,而是model workspace)。
仿真结果与实验结果的误差
当前m,b,k参数不准确
所以需要校准参数
两次实验时的初始位置也是不同的
2.初步估算
我们现在来利用实验结果来自动估算m,k,b的值。
双击模型左下角的橘红色模块,打开预先配置好的参数估算页面。
点击视图标签页调整为左右布局,如下图,同时显示两次的实验结果。
点击红圈内的图标,把当前的仿真结果也同时显示在两张图上,如下图。
点击Select Parameters,看到已选中的估算的参数及其初始值:
点击Select Experiments,选择同时使用这两组已经导进来的实验数据进行参数估算(如何导入实验数据参见后面的自动生成查表表格案例):
Cost Function,可以看到还可以选择绝对值误差。
More Option菜单页,还可以选择优化算法以及使用并行运算加快估算过程。
点击绿色的按钮开始自动估算,会自动跳出这两张图:
参数估算结果:
估算效果:
参数调整过程
迭代过程
迭代收敛
后期吻合得还行
前期误差略大
前期误差略大
后期吻合得还行
从前面的步骤应该能“猜”到这里的原因:模型仿真的初始值设定为-0.1,而我们两次实验数据的初始位置均不是-0.1。
这也就是说,我们在利用这一组实验数据做估算的时候,应该把初始值也考虑进去。
3.添加估算仿真初始状态值
分别在这两个Experiments下面右键编辑,添加位置初始参数,如下图:
这时候点击Select Parameters看到这一轮估算所考虑的参数。
与所有实验数据相关的估算参数可点击设置参数上下限
与单次实验数据相关的参数再次估算,收敛后得到的参数:
估算效果如图:
系统响应优化
1.模型
打开模型sldo_model1:
设计参数:
Kp, Ki, Kd
设计要求:
系统响应吻合指定曲线:y=1−exp(−0.1×t)
当前初始响应:
2.响应优化打开系统响应优化工具:
a.选择待优化控制参数:
对应的是PID模块里设置的参数:
需要在模块里设置好参数名,
才会显示在上图的待选框里。同样,也可以根据需要限制参数范围:
比如说控制参数必须大于0
这时候,可以看到新增加的设计参数高亮显示:
b.设置目标函数
可以看到可以设置时域以及频域的优化目标函数:
填入刚才的目标曲线表达式:本次所使用的目标函数类型
根据刚才的设置生成的设计变量
信号线要处于选中状态
如果设置了多个优化目标,可以同时选择:
选择本次的优化目标函数查看优化前响应:
点击优化:
参数已经自动更新了
控制参数已经自动更新,仿真原模型:
自动生成查表表格
1.模型
加载估算与验证所需要的数据。
已知y数据是通过x查表得到的,但现在不知道具体的表格数据。>> load lookup_regular.mat
>> subplot(2,1,1);
>> plot(time1,xdata1);
>> title('xdata1');
>> subplot(2,1,2);
>> plot(time1,ydata1);
>> title('ydata1');
查表
打开lookup_regular
2.表格参数估算打开参数估算工具箱:
选择待估算参数:
添加参考数据:
点击优化开始估算:待自动估算的表格值,可以看
到初始都设置为0
[time1,ydata1],填入后会自动
变化.注意上面是输出,下面
才是输入
Table参数已经自动更新
3.使用独立数据验证
导入另一组独立数据:
设置数据用于验证:验证:[time2,ydata2],填入后会自动变化
Simulink优化工具箱2015版V1.0
打开刚才的Simulink模型,运行模型,对比原始数据与Simulink查表仿真的结果:sim('lookup_regular')
figure(2); plot(xdata2,ydata2, 'm*', xout, yout,'b^')
hold on; plot(linspace(0,6.5,10), table, 'k', 'LineWidth', 2)
可以看到其实原始的x,y是近似sin函数关系。