[prev in list] [next in list] [prev in thread] [next in thread]
List: jakarta-commons-dev
Subject: [math] CMAESOptimizer fails sometimes when point out of bounds
From: Bruce A Johnson <johnsonb () umbc ! edu>
Date: 2014-02-28 23:34:19
Message-ID: B25E6BE0-F10F-478C-90DA-CE61A39B64F9 () umbc ! edu
[Download RAW message or body]
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.
Bruce
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic