This is the mail archive of the
gsl-discuss@sourceware.org
mailing list for the GSL project.
Re: new methode to initialize nm_simplex
- From: Brian Gough <bjg at network-theory dot co dot uk>
- To: Ivo Alxneit-Kamber <ivo dot alxneit at psi dot ch>
- Cc: gsl-discuss at sources dot redhat dot com
- Date: Thu, 2 Mar 2006 18:43:39 +0000
- Subject: Re: new methode to initialize nm_simplex
- References: <1140770280.3325.53.camel@pc446.psi.ch>
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