new methode to initialize nm_simplex

Brian Gough bjg@network-theory.co.uk
Thu Mar 2 18:43:00 GMT 2006


Ivo Alxneit-Kamber writes:
 > i had sometimes difficulties with this initializer because it results in
 > a "very regular" initial simplex. the first trial steps often only
 > change one parameter. (just as an example. i tried to optimize the
 > contour of a mirror defined by a spline interpolation of several points.
 > the current minimizer would start by trying to shift only individual
 > points. this, of course were not successful steps. it then contracted
 > for a long time until it finally took off correctly sometimes).
 > 
 > so my proposal (see patch) is to change the call to
 > gsl_multimin_fminimizer_set() to use a starting vector and a single
 > value for the initial step size. nm_simplex_set() then contructs a
 > regular n-pod of size initial_step_size with the starting point at its
 > center. you can fine-tune the orientation of this initial simplex by
 > using different values for the environment variable GSL_NM_SIMPLEX_SEED.

If you take the existing step_size vector, you could create a n-pod
oriented in that direction with size |step_size| -- that would avoid
any changes to the API, and allow it to be a new method (reusing most
of the existing functions).

To randomize the other orthogonal directions I'd suggest putting a
simple RNG like 'vax' inside the method itself, so there aren't any
dependencies on libgslrng.

-- 
Brian Gough



More information about the Gsl-discuss mailing list