qp() in Octave 3.0.0 returns result egregiously violating input constraints

Gabriele Pannocchia g.pannocchia at ing.unipi.it
Sun Apr 6 12:29:32 CDT 2008


Hi,

I ran the example and got a result that is feasible with respect to
equality constraits:
octave:8> norm(A*X-B)
ans =  2.5177e-15
octave:19> tol = 10*eps; all(A_IN*X < A_UB + tol) & all(A_IN*X > A_LB -
tol)
ans =  1
octave:20> tol = 10*eps; all(X < UB + tol) & all(X > LB - tol)
ans =  1

However, the solver did not converge as it reached the maximum number of
iterations:
INFO =
{
  solveiter =  200
  info =  3
}

One reason for not reaching convergence could be the fact that the
Hessian of the objective function is NOT positive definite (it actually
INDEFINITE because it has at least a negative eigenvalue):
octave:23> min(eig(H))
ans = -0.0011912

Even the projected Hessian is not positive definite (we can say that it
is semi-definite):
octave:26> Z = null(A);min(eig(Z'*H*Z))
ans = -5.0136e-122

> octave:7> result = X'*H*X + X'*Q
> result =  5.0743e-06

You can see the objective function in the variable OBJ, and please
notice that it is: 0.5*X'*H*X + X'*Q
octave:25> OBJ
OBJ =  2.5372e-06

There is no guarantee that qp converges for non convex QPs, and indeed
convergence of indefinite (or semi-definite) programs is a large topic
in optimization.

Cheers,
	Gabriele



More information about the Bug-octave mailing list