Which Minimizer to choose with non analytical Constraints

Hello Community,

My Problem is the following:
I have an Potential V ( omega_1 , omega_2, par ) , where par is a number of fixed parameters.
This Potential should be minimized in the variables omega_1 and omega_2 , there is no closed analytically expression for this.
In the process of calculating the Potential Value at given Input omega_1 and omega_2 and a fixed parameter set calculates 2 Mass-Matrices (2 4x4 Matrices) and it calculates their Eigenvalues. As these Eigenvalues are Mass-Squared values those can not be negative and thus the given Input set needs to be ignored while finding the Minimum.

Which Minimization Routine would you suggest me to use and how to implement these constraints?

I don’t use ROOT as a Programm but I’m thinking about the C++ Version of Minuit for the minimization, so I hope I’m not completly off in this forum.



Minuit2 is probably indicated for your problem.
You can get the standalone version from

 [project-mathlibs.web.cern.ch/pro ... index.html](http://project-mathlibs.web.cern.ch/project-mathlibs/sw/Minuit2/html/index.html)

This forum is more for using it via ROOT, but you may find information useful in the standalone case too.

G Ganis


As Gerardo mentioned, Minuit is available as a standalone C++ version, but it does not support non-trivial constraints. Only simple bounds on the parameters, such as A < parameter < B, where A nd B are constant, are supported. If A and B are functions of other parameters, then, these constraints are not supported.

Sometimes a simple parameter transformations can help to transform the constraints in simple bounds.
Otherwise, you could try to express the constraints as adding a penalty term in your minimisation function.
If the minimum is far away from the border region, then the result is independent on the extra penalty parameter.
As last alternative you could use a different minimization package supporting non-trivial constraints. I know of Nag, a commercial software package, who has these algorithms, otherwise maybe you can find something in R or some other open source software.

Best Regards