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!
Ed
The author of this class has been informed.
Rene
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.
Eddy
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…