To whom it may concern,

I have recently started learning programming and have been evaluating the
many NLopt algorithms as solvers for a 7 dimensional problem. I am using
nlopt-2.4.2 on a linux system and my problem is coded in C++.

One combination that seems to do very well is using G_MLSL_LDS with
LN_PRAXIS as the local solver. The problem I am having is that the result
returned by the "nlopt::optomize" function is "-nan". I put a print
statement in my objective (cost) function so that the value of the cost
function is printed. Based on this, I know that the algorithm solves the
problem and stops when the function value reaches below 0.0001 (set with
the "set_stopval" function). Unfortunately, the last value of the cost
function and the resulting values of the optimization variables are not the
ones returned as results by the "optimize" function. Instead, the results
given are the "-nan" value of the cost function and the optimization
variables corresponding to the last time the cost function equaled "-nan".

I followed the code to the "get_minf" function near line:260 in the file
"mlsl/mlsl.c" and then onto "rb_tree_min" function near line:280 in the
"util/redblack.c" file. Once at this point, I realized that I had better
ask for help or suggestions. I want the results of the optimization to be
the values from the last run of the cost function and not the ones when
"-nan". Surely, there is a very easy way of patching the NLopt code to
accomplish this but with my limited programming experience I am not sure
how. I'm not really sure how these functions work and am very inexperienced
with pointers.
Anyway, i thought that a conditional using the "isnan(-minf)" or something
would solve the issue, I just don't know where.

Any and all help will be appreciated,
Thanks,
Josh
_______________________________________________
NLopt-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/nlopt-discuss

Reply via email to