TGondzioSolver::Solve() returns kUNKNOWN

I am using root 5.22/0 on Vista. I am using the quadratic programming package: I am fitting a bunch of paramters which must sum to 1 and each parameter must be >=0 and <=1. Ocassionally TGondzioSolver::Solve() returns 4 (kUNKNOWN). The returned parameters satisfy my constraints, but I am concerned that they are not properly optimized. Are there any guidelines or further investigations you can recommend? Thanks!

The author of this class has been informed.


Hi Ed,

I am on a trip till 12-July, so I can not have a look at the code till then.
I am happy to see somebody using the quadratic programming package
but your constrains are too “simple” for this package.

You can also solve your problem by using TMinuit . TMinuit does
accept parameter limits like min <= x_i <= max and your requirement
that (LaTeX notation)

   \sum_i x_i = b

is easily implemented through a Lagrangian multiplier. Just add to your
objective function f(x_i) (probably a chi-square) a term:

new objective function is: f(x_i) + lambda (\sum_i x_i)

where lambda (your Lagrangian multiplier) is one extra fit parameter.

In this case you will also have fitting parameter uncertainties.


Hi Eddy,
I realize its been 3 years since my previous posting on this subject, but…

I have considered your suggestiong of using minuit + lagrange multipliers + parameter limts, though there are problems with that approach. I am curious about your statement that my constraints are too simple. How can that be?

I have added a file qp.root containg the inputs to the solver that fails (or at least returns status=4) using the TGondsioSolver but appears to return a (better?) solution and no error code when using TMehrotraSolver. demo.cpp uses these inputs for both solvers.

The comments in root/tutorials/quadp/portfolio.C state the Gondzio is “more sophisticated”. Can you elaborate? Is there a reason you can think of why one method should produce better results than the other?

If you can look at this example I would be most appreciative. Thanks

One more thing: I am now running root v5.32/03 on windows 7 and compile w/ VS2010. Though the results don’t seem to depend on what version of root I use…

Ed Oltman
qp.root (4.25 KB)
demo.cpp (1.57 KB)