加速s-function 编写的MPC算法

加速s-function 编写的MPC算法


一句话总结,这是一个误会。大神勿喷

背景

由于我的控制问题中约束条件是时变的,不是一个定值,simulink自带的MPC模块貌似不能用(如果可以望大神告知),所以采用S-Function编写了MPC算法。我把状态方程,序列化的状态方程,等很复杂的矩阵放在S-Function里写了(switch flag之前),之后单步调试的时候看,这一部分代码只运行了一次,之后就一只在case 0,2,3等那几个代码块中切换了。因此我认为这样的写法不会影响运行速度。

现象

30秒的仿真要跑块300秒。。。。我吐了,我还有个3000秒的仿真要跑啊!阿里云也救不了我。。。

解决方法

使用profile代码分析工具发现,那块计算各种矩阵的代码每个采样时间都被调用了,里面还写了各种循环嵌套。。。之后就好办了,由于这段代码计算的这些参数是不会变的,另开一个脚本先计算好,在传入S-Function就好了。改进后30秒的仿真只要跑80秒啦,99%的时间都花费在最后求解二次规划上了,那暂时就没有优化空间了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值