Near line 2044, the iteration limit for the line search (minor 
iterations) is 10,

            if (h1 <= h3 / ten || line > 10) {

This is too small for some of our problems. When I changed the 10 to 20 
then things started working much better.

Is there a reason to limit the number of minor iterations? If too many 
minor iterations are taken then eventually the step size will be 0 and 
convergence criteria will be met, correct?

If we do need to limit the number of minor iterations then we need to 
add a check that the function value is decreasing between major 
iterations. For example, if I change the minor iteration limit from 10 
to 4 then it is easy to find problems where the function value jumps 
randomly up and down between major iterations. I believe the check would 
go in around line 2612,

          if (mode == -1 && feasible_cur) {
               if (fprev < fcur) {   // here

but I'm not sure which error code to return.

Looking forward to your guidance.

Thanks.

-- 
Joshua N. Pritikin
Department of Psychology
University of Virginia
485 McCormick Rd, Gilmer Hall Room 102
Charlottesville, VA 22904
http://people.virginia.edu/~jnp3bc

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

Reply via email to