octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: de_min.m: global optimisation (differential evolution)


From: Michael Creel
Subject: Re: de_min.m: global optimisation (differential evolution)
Date: Tue, 21 Jul 2009 10:00:36 +0200

On Tue, Jul 21, 2009 at 1:51 AM, Christian Fischer<address@hidden> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Hi there,
>
> I'm currently working an a global optimisation function using
> Differential Evolution. It is based on the Matlab function on this
> page: http://www.icsi.berkeley.edu/~storn/code.html )
>
> I have converted it according to the "octave style" and improved it
> using the latest developments on differential evolution.
>
> It is a derivative free method usable for problems with many local
> minima and high dimensionality (variables).
> It is also possible to set the boundaries as constraints.
>
> It should be better or at least comparable to state of the art
> evolutionary strategies or genetic algorithms.
>
> I have the impression that octave does not have a good global
> optimiser at the moment. So maybe this function could fill the gap.
>
> I do have a few questions.
> What is the current policy for the optimisation package? What makes
> a function part of the core octave and why are some functions in the
> external octaveforge package?
>
> Who is responsible for the optimisation part in octave?
>
> I attached my current version to this mail. I still have to change the
> header using the texinfo statements and add a test. I also might
> rewrite it in C++ in case I get the feeling that it is too slow.
> (There is one nasty loop I couldn't vectorise.)
>
> I am willing to maintain this function and would appreciate criticism
> of any kind.
>
> To my person: I am a mechanical engineering student from Germany.
> Currently I'm writing my diploma (master) thesis on optimisation of radial
> turbomachinery using differential evolution. I am using octave for
> 5 years now and I think its time to give something back :)
>
> Best wishes
> Christian
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
> Comment: Use GnuPG with Firefox : http://getfiregpg.org (Version: 0.7.6)
>
> iQIcBAEBCAAGBQJKZQLcAAoJEJghsQQMM0PT3IMQANqjtEU067/Xb4kLBIaRKekW
> K5n8rtEmAfnNjyavlB5UA8HZ0nLamftsXyvpFYHv1qGFKxCf7aHmKwLUVYDPY75k
> JX0YW/AGnUXEQvkDmYhXaVLiaA6WstXZlmcuERoKkFA/RVmkQID6mEQF4hIv6OtX
> v9EdGqOyBpTOwsyNA3BMppZtwS49kvI6NNRGUxz3sQRCwya0Q1/hhgisP5e5DUWz
> bMFOGjX7McpkxyE5DcZ5iNYRgHR4ipBIxCFD4wDkCTYLjKs5/PYp2zHCuCUYTITR
> pADtwKq5Y+h6zSS5ZT3xDd5naZzJCTE2FsxGAt0RJchvI5dT3H1eGoTzuhWUT3z2
> TlXoV8gyUZDdKaT+X1jUxETOI3R4XNQXC3+rbDqWqOdH8cmA1PCen6yYVRHyuYVU
> bMp6btRrmZXtPM0QJnePTFRfSpIR7Um91HXQ/Rb6RurCJpGURNY6ExOvXZPxsZSI
> IP1CDnsU/UYhe9QskWeGRgz0+IzSYT8NhNfWCTc2PNHdvzku7dO3t26xaUYD2yP3
> gQxccXH3LSfeSrD4ofIPpY+VkDlQHidKY+1BabJsSvm6uACY3TAlGgN0nmSZ0zEz
> D6rxgk4qf65I5VypHzX2vRg/1QB3sva54cSdVQjwaQ7XfjUdY8Rk1kFMAHuWnQkQ
> lGQIw+S/RdqG2gtPjPFg
> =u4DR
> -----END PGP SIGNATURE-----
>
> ________________________________________________________________
> Neu: WEB.DE Doppel-FLAT mit Internet-Flatrate + Telefon-Flatrate
> für nur 19,99 Euro/mtl.!* http://produkte.web.de/go/02/
>
>


Hi Christian,
This function looks like it could find a home in the optim package
(http://octave.sourceforge.net/optim/index.html). I have written
simulated annealing code that is already part of the package.
Following is a script that will use your code and the simulated
annealing code to minimize a higher dimensional Rosenbrock function
(also in optim).
Best, Michael

dim = 10;
ctl.XVmin = -2*ones(1, dim);
ctl.XVmax = 2*ones(1, dim);
tic;
[x, obj_value, nfeval] = de_min (@rosenbrock, ctl);
toc
printf("solution: \n");
disp(x);

# SA controls
ub = 2*ones(dim,1);
lb = -ub;
nt = 20;
ns = 5;
rt = 0.75; # careful - this is too low for many problems
maxevals = 1e10;
neps = 5;
functol = 1e-7;
paramtol = 1e-5;
verbosity = 1; # only final results. Inc
minarg = 1;
control = { lb, ub, nt, ns, rt, maxevals, neps, functol, paramtol,
verbosity, 1};
# do sa
x = zeros(dim,1);
tic;
[theta, obj_value, convergence] = samin("rosenbrock", {x}, control);
toc



reply via email to

[Prev in Thread] Current Thread [Next in Thread]