commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gilles <gil...@harfang.homelinux.org>
Subject Re: [math] CMAESOptimizer fails sometimes when bounds are violated
Date Sun, 02 Mar 2014 19:40:34 GMT
On Fri, 28 Feb 2014 18:26:46 -0500, Bruce Johnson wrote:
> The CMAESOptimizer repairs points that are out of bounds by moving
> them into bounds, and adding a penalty based on how far they were
> moved.
>
> The penalty added is scaled by the range of values in the current
> population (valueRange field in code below).
>
> double[] x, final double[] repaired) {
>             double penalty = 0;
>             for (int i = 0; i < x.length; i++) {
>                 double diff = FastMath.abs(x[i] - repaired[i]);
>                 penalty += diff * valueRange;
>             }
>             return isMinimize ? penalty : -penalty;
>         }
>
> The calculation of the valueRange, however, includes the penalty so
> at each iteration the amount of penalty grows multiplicatively until
> the calculated value is infinite.
>
>
> I have a, not yet very elegant, patch that keeps the value and
> penalty separate so the valueRange can be based on the actual range 
> of
> values (not the penalized range of values).
>
> I can open a Jira issue for this if that makes sense.

Yes, please.

Gilles



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message