1)基于动力学求解最优解时遇到MATLAB报错:索引超出数组元素的数目(0)
其直接原因是MPCController S-function中quadprog函数求不出解时X为空,后续调用X则会导致索引超出数组元素的数目。
解决方法:在MPCController S-function中,每次求完X,判断其是否为有效的解,若不是则令u保持为前一时刻的值。
解决办法,在源程序中修改如下代码
if(isempty(X)==1)
u_piao=0; %如果为空,则控制量增量为0;
else
u_piao=X(1);%得到控制增量
end