You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2012/04/02 20:46:43 UTC

svn commit: r1308454 - in /commons/proper/math/trunk/src: changes/changes.xml main/java/org/apache/commons/math3/genetics/ElitisticListPopulation.java test/java/org/apache/commons/math3/genetics/ElitisticListPopulationTest.java

Author: tn
Date: Mon Apr  2 18:46:42 2012
New Revision: 1308454

URL: http://svn.apache.org/viewvc?rev=1308454&view=rev
Log:
[MATH-776] Use same range check in ctor as in setter for ElitisticListPopulation.
Thanks to Reid Hochstedler

Modified:
    commons/proper/math/trunk/src/changes/changes.xml
    commons/proper/math/trunk/src/main/java/org/apache/commons/math3/genetics/ElitisticListPopulation.java
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/genetics/ElitisticListPopulationTest.java

Modified: commons/proper/math/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/changes/changes.xml?rev=1308454&r1=1308453&r2=1308454&view=diff
==============================================================================
--- commons/proper/math/trunk/src/changes/changes.xml (original)
+++ commons/proper/math/trunk/src/changes/changes.xml Mon Apr  2 18:46:42 2012
@@ -52,6 +52,12 @@ If the output is not quite correct, chec
   <body>
     <release version="3.1" date="TBD" description="
 ">
+      <action dev="tn" type="fix" issue="MATH-776" due-to="Reid Hochstedler">
+        Use same range check in constructor for ElitisticListPopulation as in corresponding setter.
+      </action>
+      <action dev="tn" type="fix" issue="MATH-767" due-to="Dennis Hendriks">
+        Fixed unbalanced use of code tags in javadoc of several classes.
+      </action>
       <action dev="tn" type="add" issue="MATH-773" due-to="Reid Hochstedler">
         Added class FixedElapsedTime (new StoppingCondition for evolution of generations) to genetics package.
       </action>

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/genetics/ElitisticListPopulation.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/genetics/ElitisticListPopulation.java?rev=1308454&r1=1308453&r2=1308454&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/genetics/ElitisticListPopulation.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/genetics/ElitisticListPopulation.java Mon Apr  2 18:46:42 2012
@@ -24,7 +24,7 @@ import org.apache.commons.math3.exceptio
 import org.apache.commons.math3.util.FastMath;
 
 /**
- * Population of chromosomes which uses elitism (certain percentace of the best
+ * Population of chromosomes which uses elitism (certain percentage of the best
  * chromosomes is directly copied to the next generation).
  *
  * @version $Id$
@@ -42,12 +42,13 @@ public class ElitisticListPopulation ext
      * @param populationLimit maximal size of the population
      * @param elitismRate how many best chromosomes will be directly transferred to the
      *                    next generation [in %]
+     * @throws OutOfRangeException if the elitism rate is outside the [0, 1] range
      */
     public ElitisticListPopulation(final List<Chromosome> chromosomes,
                                    final int populationLimit,
                                    final double elitismRate) {
         super(chromosomes, populationLimit);
-        this.elitismRate = elitismRate;
+        setElitismRate(elitismRate);
     }
 
     /**
@@ -57,10 +58,11 @@ public class ElitisticListPopulation ext
      * @param populationLimit maximal size of the population
      * @param elitismRate how many best chromosomes will be directly transferred to the
      *                    next generation [in %]
+     * @throws OutOfRangeException if the elitism rate is outside the [0, 1] range
      */
     public ElitisticListPopulation(final int populationLimit, final double elitismRate) {
         super(populationLimit);
-        this.elitismRate = elitismRate;
+        setElitismRate(elitismRate);
     }
 
     /**

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/genetics/ElitisticListPopulationTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/genetics/ElitisticListPopulationTest.java?rev=1308454&r1=1308453&r2=1308454&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/genetics/ElitisticListPopulationTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/genetics/ElitisticListPopulationTest.java Mon Apr  2 18:46:42 2012
@@ -17,6 +17,10 @@
 package org.apache.commons.math3.genetics;
 
 
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.math3.exception.OutOfRangeException;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -36,6 +40,54 @@ public class ElitisticListPopulationTest
 
         Assert.assertEquals(20, nextGeneration.getPopulationSize());
     }
+    
+    @Test
+    public void testSetElitismRate() {
+        final double rate = 0.25;
+        final ElitisticListPopulation pop = new ElitisticListPopulation(100, 0.203);
+        pop.setElitismRate(rate);
+        Assert.assertEquals(rate, pop.getElitismRate(), 1e-6);
+    }
+    
+    @Test(expected = OutOfRangeException.class)
+    public void testSetElitismRateTooLow() {
+        final double rate = -0.25;
+        final ElitisticListPopulation pop = new ElitisticListPopulation(100, 0.203);
+        pop.setElitismRate(rate);
+    }
+    
+    @Test(expected = OutOfRangeException.class)
+    public void testSetElitismRateTooHigh() {
+        final double rate = 1.25;
+        final ElitisticListPopulation pop = new ElitisticListPopulation(100, 0.203);
+        pop.setElitismRate(rate);
+    }
+    
+    @Test(expected = OutOfRangeException.class)
+    public void testConstructorTooLow() {
+        final double rate = -0.25;
+        new ElitisticListPopulation(100, rate);
+    }
+    
+    @Test(expected = OutOfRangeException.class)
+    public void testConstructorTooHigh() {
+        final double rate = 1.25;
+        new ElitisticListPopulation(100, rate);
+    }
+
+    @Test(expected = OutOfRangeException.class)
+    public void testChromosomeListConstructorTooLow() {
+        final List<Chromosome> chromosomes = Collections.emptyList();
+        final double rate = -0.25;
+        new ElitisticListPopulation(chromosomes, 100, rate);
+    }
+
+    @Test(expected = OutOfRangeException.class)
+    public void testChromosomeListConstructorTooHigh() {
+        final List<Chromosome> chromosomes = Collections.emptyList();
+        final double rate = 1.25;
+        new ElitisticListPopulation(chromosomes, 100, rate);
+    }
 
     private static class DummyChromosome extends Chromosome {
         private final int fitness;