Syed Hassan Amin wrote:
> Dear Sir,
> I am applying vnl_levenberg marquardt optimization.
> I want to know two things about its usage :-
> 1). I want to restrict each of my parameter vector to
> certain range ie. b<=p(i)<=a
for an answer to a similar question.
I am thinking of updating that FAQ with something like the following info:
We don't have any industrial-strength* constrained optimisers in VXL.
Constained optimisation is very difficult, and solutions are usually
very tied to the particular constaints and cost function.
However, optimisation of a convex cost function with box inequality
constraints is a fairly common situation, and I believe there should be
code out there for it. Last time I looked (about 3 years ago) there were
free simple* constained optimisers available - google for Leon Bottou,
and several industrial-strength* tools advertised for sale.
Recently however, Tim Cootes has added a simple* quadratic-programming
optimiser (core/vnl/algo/vnl_solve_qp.*) However, if you thinking of
using vnl_levenberg_marquardt, then your problem is unlikely to be QP.
*Here I am defining simple to mean "works on numerically easy problems -
ie a cost function with low-dimension parameter vector, a
well-conditioned Hessian and Jacobian". Industrial-strength means "works
with numerically harder problems"
> 2). How do I apply custom updates to my parameter
If you want to apply your own update every n iterations:
Set max_iterations to n
run the optimiser, which should terminate early
apply your update to the optimiser's result
repeat until converged.