为什么fmincon使用sqp算法需要一个完整的矩阵指定线性约束吗?

4视图(30天)
我需要在我指定的一些变量优化需要订购,所以v_i-v_ (I + 1) < 0 I = N_1甲烷。fmincon这是容易设置,在Av < b,但是,正如你所看到的,该算法不能将一个稀疏输入a在解决我的一个大问题,这给了我一个1000×4000矩阵,仅有2000名非零项,这似乎对我疯狂。
我知道我可以用这个问题所以我使用不同的变量,而不是(我最终可能不得不这样做),解决这个问题的,但是(我)这使得计算梯度更尴尬,(2)我能看到不好reasonnot允许一个稀疏。
所以,我的问题是,有好的原因“特性”?

接受的答案

马特·J
马特·J 2023年3月20日
编辑:马特·J 2023年3月20日
可能是因为SQP算法必须提取经常约束矩阵的行子集。这可以更快的完全比稀疏矩阵(见下文)。另外,即使你的约束是稀疏的,没有理由认为算法的二次规划子问题。所以这是可疑的好处在稀疏约束独自的形式。
一个= sprand (4000、4000、4000/4e5) + speye (4000);
房颤=全(A);
抽搐
i = 1:尺寸(1)
=(我:);
结束
toc
运行时间是0.676821秒。
抽搐
i = 1:尺寸(1)
= Af(我:);
结束
toc
运行时间是0.155082秒。
最后,即使你的问题是稀疏的一切,任何矩阵反演中必须经常会更快完成完整形式比稀疏小规模问题,这sqp预计问题。的例子,
b =兰德(4000 1);
抽搐
一个\ b;
toc
运行时间是1.480658秒。
抽搐
房颤\ b;
toc
运行时间是0.507184秒。
4评论

登录置评。

答案(1)

约翰D 'Errico
约翰D 'Errico 2023年3月20日
这听起来像一个好借口特性请求给我。然而,我的直觉告诉我有一个技术算法本身的原因(可能是在它是如何实现),排除了稀疏矩阵的线性约束。不幸的是,我们不能看着代码本身,因为sqpInterface是p。如果我胡乱猜想,这个问题归结于这一事实QR(用来)的行为巧妙不同稀疏和完整的矩阵。我记得在过去,你不能使用QR经济回转的QR分解矩阵是稀疏的。这不是今天的情况。这可能是唯一的一个问题是对以前版本,今天,不需要真正的,但有人会需要深入fmincon代码,使necessry变化。
无论如何,最好的方法得到一个好的答案需要来自TMW直接。最好的办法就是直接联系他们。

类别

找到更多的在和迭代解算器输出显示帮助中心文件交换

下载188bet金宝搏


释放

R2022a

社区寻宝

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

开始狩猎!