new methode to initialize nm_simplex
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.
More information about the Gsl-discuss