Ticket #101 (new enhancement)
extend DESolver to use "bounce back"
Reported by: | mmckerns | Owned by: | mmckerns |
---|---|---|---|
Priority: | minor | Milestone: | mystic-0.5a |
Component: | mystic.solvers | Keywords: | |
Cc: |
Description
extend DESolver to use "bounce back"
from Rainer Storn:
Bounce back ensures that your parameters stay within prescribed bounds and allows optima which are right at the bounds to be found. The method is very simple and you may find it in the C program on the DE homepage. Bounce back prevents that invalid parameters are evaluated since this can be costly. You follow a similiar idea in lines 239-246 but as I see it you basically discard the solution. In bounce back an invalid solution is transformed into a valid one: One of the basic ideas in DE is that new vectors are generated from existing ones. The prerequisite that existing vectors must be valid is fulfilled during initialization and then kept during the optimization. If a new vector falls outside the bounds its values are corrected such that they fall in the range between the original vector (the base vector) and the bounds. This is done before the objective function is evaluated. In optimization it can be a necessity that the parameters are corrected this way because if the optimum lies at the bounds there must be a way for the population to safely move towards the bounds. Bounce back ensures this.
Change History
Note: See
TracTickets for help on using
tickets.
A method for 'bounce back' actually was already there, just not used in the solvers. I activated it in http://dev.danse.us/trac/mystic/changeset/288. I found this as I was investigating how the parameter constraints and the bounds constraints interacted in certain situations, since sometimes there would be problems, especially in the solvers that use gradients, so I was trying to fix that.