Hi -

 

I'm using nlopt to compare to algorithms in a dynamic simulation package
(Vensim) and getting some odd results.

 

The objective function comes from execution of a model via a dll, which is
normally single precision. I'm using local nonderivative methods like
BOBYQA.

 

I've had problems with nlopt taking initial steps that are effectively 0 in
single precision. As a result, the objective fn doesn't change, and the
algorithm makes no progress along the dimension in question. For example,
where the initial guess for a parameter is 5000000.0, the first step is at
5000000.000039231.

 

When this first happened, I hadn't set absolute tolerances on the search
vector, so that was my next move. For the variable above, for example, I set
xTolAbs = 100. 

 

Now here's the puzzle: when I search over a limited subset of 27 parameters,
the initial step is to 5000100.0 (=xi+xTolAbs), which makes sense. But when
I search over the full set of 155 parameters, it again takes a first step to
5000000.000039231, apparently ignoring the tolerance.

 

Is there some reason that the dimensionality of the problem should affect
the behavior of the initial search steps?

 

Incidentally I'm working in Java and would be happy to share the wrapper I
wrote if it's of interest.

 

Tom 

_______________________________________________
NLopt-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/nlopt-discuss

Reply via email to