查看: 82|回复: 1|关注: 0

[已答复] 用S函数实现二次规划

[复制链接]

新手

5 麦片

财富积分


050


8

主题

13

帖子

0

最佳答案
发表于 3 天前 | 显示全部楼层 |阅读模式
编写了二次规划(quadprog)的求解文件,在simulink里可以运行,但是整合到其他文件里就报错
问一下,这大概是什么原因,一开始用fminon求解就没有这个错误
function sys=mdlOutputs(u)
global Fz1 Fz2 Fz3 Fz4
Tmax=250;
R=0.28;
L=2.347;
m=1723;
g=9.8;
hg=0.54;
lf=1.232;
lr=1.468;
tr=1.375;
tf=1.416;
Fz1=(lr*m*g/2/L)-(hg*m*u(1)/2/L)-(lr*hg*m*u(2)/L/tf);
Fz2=(lr*m*g/2/L)-(hg*m*u(1)/2/L)+(lr*hg*m*u(2)/L/tf);
Fz3=(lf*m*g/2/L)+(hg*m*u(1)/2/L)-(lf*hg*m*u(2)/L/tr);
Fz4=(lf*m*g/2/L)+(hg*m*u(1)/2/L)+(lf*hg*m*u(2)/L/tr);
cd0=[0;0;0;0;0;0;0;0];
H=[1/0.8/0.8/Fz1/Fz1 0 0 0 0 0 0 0;0 1/0.8/0.8/Fz2/Fz2 0 0 0 0 0 0;0 0 1/0.8/0.8/Fz3/Fz3 0 0 0 0 0;0 0 0 1/0.8/0.8/Fz4/Fz4 0 0 0 0;0 0 0 0 1/0.8/0.8/Fz1/Fz1 0 0 0;0 0 0 0 0 1/0.8/0.8/Fz2/Fz2 0 0;0 0 0 0 0 0 1/0.8/0.8/Fz3/Fz3 0;0 0 0 0 0 0 0 1/0.8/0.8/Fz4/Fz4];
f=[0;0;0;0;0;0;0;0];
A=[1 0 0 0 0 0 0 0;0 1 0 0 0 0 0 0;0 0 1 0 0 0 0 0;0 0 0 1 0 0 0 0];
b=[Tmax/R;Tmax/R;Tmax/R;Tmax/R];
Aeq=[1 1 1 1 0 0 0 0;0 0 0 0 1 1 1 1;-tf/2 tf/2 -tr/2 tr/2 lf lf -lr -lr];
beq=[u(3);u(4);u(5)];
lb=[-893;-893;-893;-893;-893;-893;-893;-893];
ub=[893;893;893;893;893;893;893;893];
[cd,~]=quadprog(H,f,A,b,Aeq,beq,lb,ub,cd0);
sys(1)=cd(1);
sys(2)=cd(2);
sys(3)=cd(3);
sys(4)=cd(4);
sys(5)=cd(5);
sys(6)=cd(6);
sys(7)=cd(7);
sys(8)=cd(8);


报错

报错

论坛优秀回答者

4

主题

1263

帖子

149

最佳答案
  • 关注者: 86
发表于 前天 09:16 | 显示全部楼层
看起来像是初始状态时quadprog没有解?
设断点调试一下就清楚了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表