You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2016/05/17 15:49:40 UTC
[07/25] [math] MATH-1335
MATH-1335
Use new RNG API.
Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/0c9af5f4
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/0c9af5f4
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/0c9af5f4
Branch: refs/heads/develop
Commit: 0c9af5f450ce73da9b791051f861cb9a6420e0f1
Parents: 6fc152e
Author: Gilles <er...@apache.org>
Authored: Wed May 11 13:54:06 2016 +0200
Committer: Gilles <er...@apache.org>
Committed: Tue May 17 15:30:23 2016 +0200
----------------------------------------------------------------------
.../commons/math4/genetics/GeneticAlgorithm.java | 18 +++++++++---------
.../commons/math4/genetics/NPointCrossover.java | 4 ++--
.../commons/math4/genetics/OrderedCrossover.java | 4 ++--
.../commons/math4/genetics/UniformCrossover.java | 4 ++--
4 files changed, 15 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-math/blob/0c9af5f4/src/main/java/org/apache/commons/math4/genetics/GeneticAlgorithm.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/genetics/GeneticAlgorithm.java b/src/main/java/org/apache/commons/math4/genetics/GeneticAlgorithm.java
index bf77606..d76fe93 100644
--- a/src/main/java/org/apache/commons/math4/genetics/GeneticAlgorithm.java
+++ b/src/main/java/org/apache/commons/math4/genetics/GeneticAlgorithm.java
@@ -18,8 +18,8 @@ package org.apache.commons.math4.genetics;
import org.apache.commons.math4.exception.OutOfRangeException;
import org.apache.commons.math4.exception.util.LocalizedFormats;
-import org.apache.commons.math4.random.JDKRandomGenerator;
-import org.apache.commons.math4.random.RandomGenerator;
+import org.apache.commons.math4.rng.RandomSource;
+import org.apache.commons.math4.rng.UniformRandomProvider;
/**
* Implementation of a genetic algorithm. All factors that govern the operation
@@ -30,12 +30,12 @@ import org.apache.commons.math4.random.RandomGenerator;
public class GeneticAlgorithm {
/**
- * Static random number generator shared by GA implementation classes. Set the randomGenerator seed to get
- * reproducible results. Use {@link #setRandomGenerator(RandomGenerator)} to supply an alternative to the default
- * JDK-provided PRNG.
+ * Static random number generator shared by GA implementation classes.
+ * Use {@link #setRandomGenerator(UniformRandomProvider)} to supply an
+ * alternative to the default PRNG, and/or select a specific seed.
*/
//@GuardedBy("this")
- private static RandomGenerator randomGenerator = new JDKRandomGenerator();
+ private static UniformRandomProvider randomGenerator = RandomSource.create(RandomSource.WELL_19937_C);
/** the crossover policy used by the algorithm. */
private final CrossoverPolicy crossoverPolicy;
@@ -90,7 +90,7 @@ public class GeneticAlgorithm {
*
* @param random random generator
*/
- public static synchronized void setRandomGenerator(final RandomGenerator random) {
+ public static synchronized void setRandomGenerator(final UniformRandomProvider random) {
randomGenerator = random;
}
@@ -99,7 +99,7 @@ public class GeneticAlgorithm {
*
* @return the static random generator shared by GA implementation classes
*/
- public static synchronized RandomGenerator getRandomGenerator() {
+ public static synchronized UniformRandomProvider getRandomGenerator() {
return randomGenerator;
}
@@ -148,7 +148,7 @@ public class GeneticAlgorithm {
public Population nextGeneration(final Population current) {
Population nextGeneration = current.nextGeneration();
- RandomGenerator randGen = getRandomGenerator();
+ UniformRandomProvider randGen = getRandomGenerator();
while (nextGeneration.getPopulationSize() < nextGeneration.getPopulationLimit()) {
// select parent chromosomes
http://git-wip-us.apache.org/repos/asf/commons-math/blob/0c9af5f4/src/main/java/org/apache/commons/math4/genetics/NPointCrossover.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/genetics/NPointCrossover.java b/src/main/java/org/apache/commons/math4/genetics/NPointCrossover.java
index 5c79ef1..847e9bc 100644
--- a/src/main/java/org/apache/commons/math4/genetics/NPointCrossover.java
+++ b/src/main/java/org/apache/commons/math4/genetics/NPointCrossover.java
@@ -24,7 +24,7 @@ import org.apache.commons.math4.exception.MathIllegalArgumentException;
import org.apache.commons.math4.exception.NotStrictlyPositiveException;
import org.apache.commons.math4.exception.NumberIsTooLargeException;
import org.apache.commons.math4.exception.util.LocalizedFormats;
-import org.apache.commons.math4.random.RandomGenerator;
+import org.apache.commons.math4.rng.UniformRandomProvider;
/**
* N-point crossover policy. For each iteration a random crossover point is
@@ -142,7 +142,7 @@ public class NPointCrossover<T> implements CrossoverPolicy {
final List<T> child1Rep = new ArrayList<T>(length);
final List<T> child2Rep = new ArrayList<T>(length);
- final RandomGenerator random = GeneticAlgorithm.getRandomGenerator();
+ final UniformRandomProvider random = GeneticAlgorithm.getRandomGenerator();
List<T> c1 = child1Rep;
List<T> c2 = child2Rep;
http://git-wip-us.apache.org/repos/asf/commons-math/blob/0c9af5f4/src/main/java/org/apache/commons/math4/genetics/OrderedCrossover.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/genetics/OrderedCrossover.java b/src/main/java/org/apache/commons/math4/genetics/OrderedCrossover.java
index b5aecc8..6b6502c 100644
--- a/src/main/java/org/apache/commons/math4/genetics/OrderedCrossover.java
+++ b/src/main/java/org/apache/commons/math4/genetics/OrderedCrossover.java
@@ -25,7 +25,7 @@ import java.util.Set;
import org.apache.commons.math4.exception.DimensionMismatchException;
import org.apache.commons.math4.exception.MathIllegalArgumentException;
import org.apache.commons.math4.exception.util.LocalizedFormats;
-import org.apache.commons.math4.random.RandomGenerator;
+import org.apache.commons.math4.rng.UniformRandomProvider;
import org.apache.commons.math4.util.FastMath;
/**
@@ -103,7 +103,7 @@ public class OrderedCrossover<T> implements CrossoverPolicy {
final Set<T> child1Set = new HashSet<T>(length);
final Set<T> child2Set = new HashSet<T>(length);
- final RandomGenerator random = GeneticAlgorithm.getRandomGenerator();
+ final UniformRandomProvider random = GeneticAlgorithm.getRandomGenerator();
// choose random points, making sure that lb < ub.
int a = random.nextInt(length);
int b;
http://git-wip-us.apache.org/repos/asf/commons-math/blob/0c9af5f4/src/main/java/org/apache/commons/math4/genetics/UniformCrossover.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/genetics/UniformCrossover.java b/src/main/java/org/apache/commons/math4/genetics/UniformCrossover.java
index 3da1c87..df5b929 100644
--- a/src/main/java/org/apache/commons/math4/genetics/UniformCrossover.java
+++ b/src/main/java/org/apache/commons/math4/genetics/UniformCrossover.java
@@ -23,7 +23,7 @@ import org.apache.commons.math4.exception.DimensionMismatchException;
import org.apache.commons.math4.exception.MathIllegalArgumentException;
import org.apache.commons.math4.exception.OutOfRangeException;
import org.apache.commons.math4.exception.util.LocalizedFormats;
-import org.apache.commons.math4.random.RandomGenerator;
+import org.apache.commons.math4.rng.UniformRandomProvider;
/**
* Perform Uniform Crossover [UX] on the specified chromosomes. A fixed mixing
@@ -115,7 +115,7 @@ public class UniformCrossover<T> implements CrossoverPolicy {
final List<T> child1Rep = new ArrayList<T>(length);
final List<T> child2Rep = new ArrayList<T>(length);
- final RandomGenerator random = GeneticAlgorithm.getRandomGenerator();
+ final UniformRandomProvider random = GeneticAlgorithm.getRandomGenerator();
for (int index = 0; index < length; index++) {