解决二次优化问题在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,解决问题不应该需要多一些。
非常感谢你提前!
欢呼,
克莱门斯

答案(1)

马特·J
马特·J 2021年8月5日
编辑:马特·J 2021年8月5日
问题就是警告消息告诉你——问题是穷人需要的条件和需要改进,如果你希望有一个独特的解决方案。很可能是两种 quadprog 金宝搏官方网站解决方案是有效的,您可以验证通过查看 fval 在这两种情况下的输出。你应该看到,大致都是一样的,这意味着这两个解决方案都是你提供的解决最小化问题。金宝搏官方网站
1评论
克莱门斯巨魔
克莱门斯巨魔 2021年8月5日
谢谢你的回答!
同时我发现了问题:创建等式约束向量的算法在Matlab和Simulink行动不同由于平等的比较两个双打,我现在固定。金宝app因此,正确地仿真软件解决金宝app了线性方程系统。更重要的是:Matlab的结果是一样的。

登录置评。

类别

找到更多的在非线性优化帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的