This is the mail archive of the gsl-discuss@sourceware.cygnus.com mailing list for the GSL project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: multidimensional optimization



Hi. Brian may me out of contact at this point. I'm not sure if
he will get a chance to look at his mail before Christmas. If
I have any comments myself, I will let you know.

Thanks.

--
G. Jungman


Fabrice Rossi wrote:
> 
> As Brian said, the use of multidimensional optimization algorithms is
> currently quite complex, mainly because of the interaction with the 1d
> minimization algo. The main trouble is that when you allocate a 1d min algo,
> you have to provide an initial bracketing, which has to be correct. This is
> the right way to do (catch errors as soon as possible), but this makes the
> inner loop of the multi dim quite complex to write (see test.c in multimin
> directory).
> 
> I propose to include in the multidim algo a 1d min algorithm, simply by
> specifing it's type to gsl_multimin_fdf_minimizer_alloc. I propose also to
> support different bracketing algorithms, but only trough a function pointer. I
> don't think external control of the bracketing algorithm is needed (except to
> provide the number of iterations and perhaps a precision) and therefore I
> don't think we have to provide state handling. So the bracketing algorithm
> will be also given to gsl_multimin_fdf_minimizer_alloc.
> 
> With this approach, I plan to simplify the main loop in order to obtain
> something like that:
> gsl_multimin_fdf_minimizer *s=gsl_multimin_fdf_minimizer_alloc(parameters);
> do {
>         status = gsl_multimin_fdf_minimizer_next_direction(s);
>         /* react on status */
>         status = gsl_multimin_fdf_minimizer_bracket(s);
>         /* react on status */
>         do {
>                 status = gsl_multimin_fdf_minimizer_iterate_1d(s);
>                 /* react on status */
>         } while (stopping criterion for the 1d algorithm);
>         status = gsl_multimin_fdf_minimizer_step(s);
>         /* react on status */
> } while (stopping criterion for the multidim algo);
> 
> With this approach, you still have full control over the internal line search,
> but with a simplified interface. Drawbacks:
> - the fdf structure is going to be even more bloated that it is currently
> - changing the line search algorithm will not be as easy as it is currently
> - same thing for bracketing
> 
> Any comments or idea?
> 
> Fabrice Rossi

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]