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
