# quadprog different output for R2020a and R2017a

조회 수: 7(최근 30일)
Kyril Kaufmann 2020년 5월 4일
댓글: Kyril Kaufmann 2020년 5월 6일
Hello,
If I run quadprog minimization function I get completely different results on R2020a and R2017a. It seems that the output on the lattest release is wrong. Did something changed? Is it a bug you are aware of?
Kind regards
##### 댓글 수: 5표시 이전 댓글 수: 4숨기기 이전 댓글 수: 4
Kyril Kaufmann 2020년 5월 5일
That's really nice of you.
For the moment I run the code with the 2017 release and it gives me nice results so it's not urgent. Thanks so much

댓글을 달려면 로그인하십시오.

### 채택된 답변

Jason Nicholson 2020년 5월 6일
There is an option called 'LinearSolver'. It can be dense or sparse. I set it to sparse and it converged quickly.
This problem is solvable but be careful with the condition number of the H matrix. i.e. cond(H). The higher the condition number, the more ill-conditioned the problem. ill-condition problems are harder to solve. With the generic cost: J = 1/2*x'*H*x+f'*x. Small pertubations to f will cause large changes to the solution, x.
H = structure.quadprog_input.H; % 404x404 matrix
f = structure.quadprog_input.f; % 1x404 vector
Aineq = structure.quadprog_input.Aineq; % 808x404 matrix
bineq = structure.quadprog_input.bineq; % 808x1 vector
% with opt.TolCon = 100*eps, opt.TollFun = 100*eps, opt.Display = 'none',
% opt.Algorithm = 'interior-point-convex
Aeq = [];
beq = [];
f = f'; % f should be 404x1
% Objective is 1/2*dp'*2*H*dp+f'*dp
%
% dp' is 1x404
% dp is 404x1
% 2*H is 404x404
% f is 404x1
% f' is 1x404
%
% 1/2*dp' * 2*H *dp + f' *dp
% 1x404 404x404 404x1 1x404 404x1
% 1x1 + 1x1
% 1x1
% Thus, f should be 404x1
%
opt = optimoptions('quadprog', 'TolCon', 100*eps, 'TolFun', 100*eps, ...
'Display', 'iter-detailed', 'Algorithm', 'interior-point-convex', ...
'MaxIter', 1500,'LinearSolver','sparse');
% Best case cost ignoring constraints
[~,fval,~] = quadprog(2*H,f,[], [], [], [],[],[],[],opt)
% solve quadprog problem. Note this doesn't converge
[dp,fval,~] = quadprog(2*H,f,Aineq, bineq, Aeq, beq,[],[],[],opt); fval
##### 댓글 수: 2표시 이전 댓글 수: 1숨기기 이전 댓글 수: 1
Kyril Kaufmann 2020년 5월 6일
Hello, thanks for your support. No it's not a linear fitting.
With your set of options it works! At least my power imput (dp) is within meaningfull physical range. I'm not sure though what happend here...

댓글을 달려면 로그인하십시오.

### 범주

Find more on Quadratic Programming and Cone Programming in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by