qp() in octave-3.0.0 gets stuck on wrong answer to convex problem

Joshua Redstone redstone at gmail.com
Thu Jun 5 09:50:11 CDT 2008


Hi all,I think I've come across a bug in qp() in which qp() gets stuck
(empirically converges to the wrong answer) when it shouldn't.
I've found a problem instance for which, depending on the initial X0
provided, qp() either
declares the problem convex and returns the global optimum solution in 120
iterations, or
gets stuck on a particular suboptimal solution regardless of how many
iterations it executes for.
I think either qp() is erroneously reporting the problem is convex, or more
likely, it is somehow getting stuck.
I've attached an octave file, qpprob.dat, with which to reproduce the
problem (generated on OSX 10.5.2).  It contains the full problem instance
including an initial x_bad and x_good which
causes qp() to either get stuck or quickly find the optimum.
Below is the output of a session exhibiting the problem.  In the following
session, I've modified qp() so that it takes an extra argument specifying
the maximum number of iterations to execute for (the default without the
extra arg is 200, I think):

octave-3.0.0:1> format long

octave-3.0.0:2> load "qpprob.dat"

octave-3.0.0:3> [X, OBJ, INFO, LAMBDA] = qp(x_bad, H, Q, A, B, LB, UB, A_LB,
A_IN, A_UB, 200);

octave-3.0.0:4> OBJ

OBJ =  0.00763280553660678

octave-3.0.0:5> INFO

INFO =

{

  solveiter =  200

  info =  3

}


octave-3.0.0:6> [X, OBJ, INFO, LAMBDA] = qp(x_bad, H, Q, A, B, LB, UB, A_LB,
A_IN, A_UB, 1000);

octave-3.0.0:7> OBJ

OBJ =  0.00763280553660678

octave-3.0.0:8> INFO

INFO =

{

  solveiter =  1000

  info =  3

}


octave-3.0.0:9> [X, OBJ, INFO, LAMBDA] = qp(x_good, H, Q, A, B, LB, UB,
A_LB, A_IN, A_UB, 200);

octave-3.0.0:10> OBJ

OBJ =  1.57898325754824e-05

octave-3.0.0:11> INFO

INFO =

{

  solveiter =  121

  info = 0

}


As you can see, with x_bad, qp() has converged to a suboptimal solution
which doesn't change as I increase the number of iterations.When I try
x_good, it returns INFO=0, which means the problem is convex and it has
found the global solution, which is two orders of magnitude
smaller in the objective.....

Does anyone have suggestions of a workaround or ways to track down the bug?
Thanks,
Josh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://www.cae.wisc.edu/pipermail/bug-octave/attachments/20080605/6dd649f9/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: qpprob.dat
Type: application/octet-stream
Size: 36195 bytes
Desc: not available
Url : https://www.cae.wisc.edu/pipermail/bug-octave/attachments/20080605/6dd649f9/attachment-0001.obj 


More information about the Bug-octave mailing list