This is an automated email from the ASF dual-hosted git repository. erans pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-math.git
commit 30aa597f1edec81de7514e638bc8d713ca281edc Author: Alex Herbert <aherb...@apache.org> AuthorDate: Sat Aug 21 08:16:20 2021 +0100 sonar fix: Ensure checkFeasableCount is not negative. Change loop condition to 'i <= checkFeasableCount' from 'i < checkFeasableCount + 1' This ensures the loop to identify a new feasible column (RealMatrix arxk) always executes at least once even with checkFeasibleCount at the limit of 0 or Integer.MAX_VALUE. --- .../math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizer.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizer.java index a5b8e35..13e7480 100644 --- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizer.java +++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/CMAESOptimizer.java @@ -236,7 +236,7 @@ public class CMAESOptimizer this.stopFitness = stopFitness; this.isActiveCMA = isActiveCMA; this.diagonalOnly = diagonalOnly; - this.checkFeasableCount = checkFeasableCount; + this.checkFeasableCount = Math.max(0, checkFeasableCount); this.random = new NormalDistribution(0, 1).createSampler(rng); this.generateStatistics = generateStatistics; } @@ -398,7 +398,7 @@ public class CMAESOptimizer // generate random offspring for (int k = 0; k < lambda; k++) { RealMatrix arxk = null; - for (int i = 0; i < checkFeasableCount + 1; i++) { + for (int i = 0; i <= checkFeasableCount; i++) { if (diagonalOnly <= 0) { arxk = xmean.add(BD.multiply(arz.getColumnMatrix(k)) .scalarMultiply(sigma)); // m + sig * Normal(0,C)