[SciPy-dev] Advice on Simulated Annealing (ticket #875)

Scott Sinclair scott.sinclair.za at gmail.com
Tue Mar 3 01:04:07 EST 2009


> 2009/3/2 william ratcliff <william.ratcliff at gmail.com>
>
> Perhaps we could enhance the documentation so this is clear?
> Also, having another module which does impose bounds on the actual values of the parameters would be useful.
> My ansatz was that if the next iteration would fall outside of the bounds, stay at the current location.

Another option is to use a suitable transform on the parameters so
that the parameter search is carried out in an unbounded domain and
the unbounded parameters transformed to bounded parameters when
evaluating the objective function.

Something like:

Given an unbounded parameter estimate y, a bounded estimate x with

a < x < b is given by x = ( (b*exp(y) + a) / (1 + exp(y)) )

This is based on a variation of the logit transform (e.g.
http://en.wikipedia.org/wiki/Logit)

For a < x < b, y is unbounded if y = ln( (x - a) / (b - x) )

I don't know if there are any subtle problems with using this
approach, especially when x is close to the bounds a & b. I've found
it to work well in the past.

Cheers,
Scott



More information about the SciPy-Dev mailing list