quadprog output: this problem is non-convex
3 次查看(过去 30 天)
显示 更早的评论
I am trying to solve a quadratic optimization problem but quadprog keeps telling me that my problem is non-convex.
After several experiments, I found that the problem comes from the equation constraints matrix A, which is a 57250*57441 matrix.
For the following code,
[m, n] = size(A);
assert(m < n);
options = optimoptions('quadprog','Display','off');
[Pwp,fval,exitflag,output] = quadprog(speye(n), zeros(n,1), [], [], A, zeros(m, 1), [], [], [], options);
obviously the solution should be the all-zero vector. But the output still said that this is a nonconvex problem.
=============
Update: I am using matlab 2022b. Here is the link for the mat file of my matrix A:
I am sorry that it's larger than 5MB so I can only put the link here instead of directly attaching it to this post.
11 个评论
Walter Roberson
2024-8-14
All, I was counting on the fact that there was no error message, and was not checking exitflag . exitflag is showing up as -6, non-convex problem detected.
Walter Roberson
2024-8-14
Unfortunately the invoked routine, ipqpsparse, is a .p file, so we cannot examine what is going on internally.
采纳的回答
Matt J
2024-8-14
编辑:Matt J
2024-8-14
I think you probably should report it as a bug, but a possible workaround would be to approximate the original problem with inequality constraints,
b=repelem(1e-10,m);
[Pwp,fval,exitflag,output] = ...
quadprog(speye(n), zeros(n,1), [A;-A], [b;b], [], [], [], [], [], options);
0 个评论
更多回答(1 个)
Torsten
2024-8-14
移动:Torsten
2024-8-14
Maybe there are Inf or NaN coefficients in your A ? The following small example works.
A = rand(53,66);
[m,n] = size(A);
options = optimoptions('quadprog','Display','off');
[Pwp,fval,exitflag,output] = quadprog(speye(n), zeros(n,1), [], [], A, zeros(m, 1), [], [], [], options)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!