On Dec 9, 2011, at 6:12 AM, kosala bandara wrote:
Many thanks for making this great code available. I've been using the
MMA algorithm for multiresolution shape optimisation.

Basically I have to update my geometry every time the algorithm
evaluates the cost function. The problem is I keep getting several
very unfeasible geometries for few iterations before the solution
starts to converge.

Is there a way to make the sub problem  more conservative at the start
of the iteration?

To force it to take smaller steps in the beginning, you have to hack the mma/mma.c code at the moment. Edit the lines:

     for (j = 0; j < n; ++j) {
          if (nlopt_isinf(ub[j]) || nlopt_isinf(lb[j]))
               sigma[j] = 1.0; /* arbitrary default */
          else
               sigma[j] = 0.5 * (ub[j] - lb[j]);
     }
     rho = 1.0;
     for (i = 0; i < m; ++i) {
          rhoc[i] = 1.0;
          dual_lb[i] = y[i] = 0.0;
          dual_ub[i] = HUGE_VAL;
     }


to either make rho and rhoc[i] bigger than 1.0 (try 10, 100, ...) or to make sigma[j] smaller. Either of these will cause it to take smaller initial steps.

Probably, I should consider making MMA use the initial_stepsize setting in order to choose the initial trust-region size, so that you can change it without modifying the code.

Steven

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

Reply via email to