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