Vestasive 2023-05-03 14:53 采纳率: 33.3%
浏览 48
已结题

matlab fmincon优化

求解这个索引不能超过1的怎么改

img

img

img


如上,然后data2是一个150行1列的数组,大小差不多都在130-145之间

  • 写回答

3条回答 默认 最新

  • copy_editor 2023-05-04 11:10
    关注

    首先抱歉,因为可能并不能帮到您。
    其次,报错的原因在于对fmincon的错误使用,代码
    S(j+1,1) = fmincon(@(S) MPC(S, j), S(j+1,1), [], [], [], [], 96, 300, nonlinconstr, options);
    中,S(j+1,1)是一个需要带入到函数MPC(S,j)中作为S的初始值的值。
    将初始值S(j+1,1)带入函数MPC后,MPC的输入变量S为一个1x1的标量,因此,在第50行中,S(i+1,-14)为S(2,-14)超出索引。同时,serendipity★ 也指出了此处应该是S(i+1,1)。
    以上,是对报错的原因分析。
    除了这个问题,您的代码还有一些问题。由于基本工作区的中变量一般不会带入到函数工作区中,函数MPC中没有定义变量 r和eta,直接调用同样会报错。
    此外,您应当注意到,fmincon只能优化返回标量的函数。您的函数MPC返回向量,不能使用fmincon进行优化。
    最后,不建议您使用matlab自带的优化函数进行模型预测控制。
    关于MPC,状态变量和控制变量最好还是区分开来。
    以上,希望对您有所帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 赞助了问题酬金15元 5月3日
  • 创建了问题 5月3日