关于优化算法在线更新simulink参数时的一些注意事项

仅为了便利自己的学习,便于快速解决仿真中的一些问题

1. 关于sim函数使用报错:Too many return arguments are specified. Specify only one.

关于优化算法在线更新simulink参数时的一些注意事项_第1张图片

 主要是第一条说sim函数的返回参数过多,刚开始我以为是函数使用的问题,但是发现并不是,sim函数的使用格式为:

[T,X,Y1,...,Yn] =sim('model',Timespan, Options, UT)

其中T为时间变量,X为状态,Y1....Yn为使用out等模块输出到工作区间的值,以out模块输出为例,其Y1对应out模块参数中Port number :1,以此类推。

关于优化算法在线更新simulink参数时的一些注意事项_第2张图片

好了,下面我们说一下报错的原因:

有的matlab版本会在simulink仿真时数据输出中默认会勾选out输出,所以导致输出个数不确定,把

其取消即可,如下:

关于优化算法在线更新simulink参数时的一些注意事项_第3张图片

 参考博主链接:

Error “Too many return arguments are specified. Specify only one.”_wuqx_blogs的博客-CSDN博客

2.对于优化算法在线优化模型参数时,需要将输入确定下来,如使用白噪声Band-LimitedWhiteNoise模块时,由于是通过随机数产生,所以是每次仿真运行都不一样的,应该先将其一组数据确定下来。否则优化算法迭代的时候没有一个优化的基准,可能就会导致无法优化。

3.两个时间同步:

①对于模块的采样时间要与仿真分析的定步长时间相同,如下:

关于优化算法在线更新simulink参数时的一些注意事项_第4张图片

关于优化算法在线更新simulink参数时的一些注意事项_第5张图片

②对于matlab中设定的仿真分析时间要与simulink设定的仿真时间相同,如下matlab的sim函数中设定仿真时间为10s,所以simulink中也要设定为10:

关于优化算法在线更新simulink参数时的一些注意事项_第6张图片

 3.利用M文件实现对Simulink中S函数的程序实现自动调参数的功能

比如说我们用s函数写了滑模控制器,滑模控制律中的滑模面系数和趋近律系数都是需要认为调节的(如果不使用优化算法),这时候我们每次调节都得在s函数中修改,而且每次修改完调节参数后都得运行模型,很没有效率,所以提出自己编写m文件实现s函数自动调参的功能。

其主要步骤为:

(1).将s函数中需要调节的参数进行封装显示,如何封装可以参考一下链接:

在Simulink中对S 函数进行参数传递的三种方法_独坐寒江边 的博客-CSDN博客_simulink传递函数输入参数

(2).编写m文件

参考链接:

在MATLAB中采用M文件实现对Simulink中的S函数程序实现自动调参数_独坐寒江边 的博客-CSDN博客

注:本人也是在自己学习过程中尝试解决问题,如有错误欢迎指导!

你可能感兴趣的:(优化算法,matlab,simulink)