解决二次优化问题在Matlab仿真软件和代码生成不同的行为吗?金宝app
9的观点(30天)
显示旧的评论
你好,
我在尝试解决二次优化问题(约400只变量和等式约束)在使用Matlab仿真软件的功能模块。金宝app基本上,我试着2个方法:
首先,我制定了矩阵和向量的线性方程系统和解决:
% H:问题的加权矩阵
% f:问题的权重向量
% Aeq:矩阵等式约束
%说真的:等式约束的向量
Atmp = [H, Aeq '; Aeq 0(大小(Aeq, 1),大小(Aeq 1)));
btmp = (- f;说真的);
解决方案= Atmp \ btmp;
执行这段代码在matlab提供的警告坏conidtioned矩阵但我得到正确的解决方案的问题。执行这段代码和把它变成一个Matlab仿真软件金宝app功能块提供无解(只有南)也警告糟糕的状况。
第二,我想解决这个问题使用quadprog ():
选择= optimoptions (“quadprog”,“算法”,“激活集”);
(解决方案,fval、exitflag、输出)= quadprog (H f [] [], Aeq,说真的,[],[],0(长度(H), 1),选项);
我第一次执行这个在Matlab中我得到了正确的结果2迭代和一个可接受的计算时间。执行这段代码在一个功能块模型我也得到一个结果(exitflag = 1),但这个解决方案是无稽金宝app之谈,不解决我最初的问题。
有人有一个想解释观察到的行为?有什么时要考虑解决数值问题在仿真软件Matlab函数块?金宝app它可以与自动代码生成(缺少库等)还是一个执行时间的问题?我执行的仿真软件模型与一个固金宝app定的时间步1 s,解决问题不应该需要多一些。
非常感谢你提前!
欢呼,
克莱门斯