MATH-1158.

Use new sampler 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/dff43a05
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/dff43a05
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/dff43a05

Branch: refs/heads/feature-MATH-1158
Commit: dff43a0530a6fbd524e3af24795cf6b92142735c
Parents: a5035d0
Author: Gilles <er...@apache.org>
Authored: Fri Mar 11 12:43:15 2016 +0100
Committer: Gilles <er...@apache.org>
Committed: Fri Mar 11 12:43:15 2016 +0100

----------------------------------------------------------------------
 .../ml/neuralnet/FeatureInitializerFactory.java  | 14 +++++++-------
 .../neuralnet/sofm/TravellingSalesmanSolver.java | 19 ++++++++++---------
 2 files changed, 17 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-math/blob/dff43a05/src/main/java/org/apache/commons/math4/ml/neuralnet/FeatureInitializerFactory.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/math4/ml/neuralnet/FeatureInitializerFactory.java
 
b/src/main/java/org/apache/commons/math4/ml/neuralnet/FeatureInitializerFactory.java
index 1729e42..9c36dd3 100644
--- 
a/src/main/java/org/apache/commons/math4/ml/neuralnet/FeatureInitializerFactory.java
+++ 
b/src/main/java/org/apache/commons/math4/ml/neuralnet/FeatureInitializerFactory.java
@@ -21,7 +21,8 @@ import org.apache.commons.math4.analysis.UnivariateFunction;
 import org.apache.commons.math4.analysis.function.Constant;
 import org.apache.commons.math4.distribution.RealDistribution;
 import org.apache.commons.math4.distribution.UniformRealDistribution;
-import org.apache.commons.math4.random.RandomGenerator;
+import org.apache.commons.math4.rng.RandomSource;
+import org.apache.commons.math4.rng.UniformRandomProvider;
 
 /**
  * Creates functions that will select the initial values of a neuron's
@@ -45,10 +46,10 @@ public class FeatureInitializerFactory {
      * @throws org.apache.commons.math4.exception.NumberIsTooLargeException
      * if {@code min >= max}.
      */
-    public static FeatureInitializer uniform(final RandomGenerator rng,
+    public static FeatureInitializer uniform(final UniformRandomProvider rng,
                                              final double min,
                                              final double max) {
-        return randomize(new UniformRealDistribution(rng, min, max),
+        return randomize(new UniformRealDistribution(min, 
max).createSampler(rng),
                          function(new Constant(0), 0, 0));
     }
 
@@ -64,8 +65,7 @@ public class FeatureInitializerFactory {
      */
     public static FeatureInitializer uniform(final double min,
                                              final double max) {
-        return randomize(new UniformRealDistribution(min, max),
-                         function(new Constant(0), 0, 0));
+        return uniform(RandomSource.create(RandomSource.WELL_19937_C), min, 
max);
     }
 
     /**
@@ -98,12 +98,12 @@ public class FeatureInitializerFactory {
     /**
      * Adds some amount of random data to the given initializer.
      *
-     * @param random Random variable distribution.
+     * @param random Random variable distribution sampler.
      * @param orig Original initializer.
      * @return an initializer whose {@link FeatureInitializer#value() value}
      * method will return {@code orig.value() + random.sample()}.
      */
-    public static FeatureInitializer randomize(final RealDistribution random,
+    public static FeatureInitializer randomize(final RealDistribution.Sampler 
random,
                                                final FeatureInitializer orig) {
         return new FeatureInitializer() {
             /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/commons-math/blob/dff43a05/src/test/java/org/apache/commons/math4/ml/neuralnet/sofm/TravellingSalesmanSolver.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/math4/ml/neuralnet/sofm/TravellingSalesmanSolver.java
 
b/src/test/java/org/apache/commons/math4/ml/neuralnet/sofm/TravellingSalesmanSolver.java
index fea0f16..ebd4200 100644
--- 
a/src/test/java/org/apache/commons/math4/ml/neuralnet/sofm/TravellingSalesmanSolver.java
+++ 
b/src/test/java/org/apache/commons/math4/ml/neuralnet/sofm/TravellingSalesmanSolver.java
@@ -44,8 +44,8 @@ import 
org.apache.commons.math4.ml.neuralnet.sofm.LearningFactorFunction;
 import 
org.apache.commons.math4.ml.neuralnet.sofm.LearningFactorFunctionFactory;
 import org.apache.commons.math4.ml.neuralnet.sofm.NeighbourhoodSizeFunction;
 import 
org.apache.commons.math4.ml.neuralnet.sofm.NeighbourhoodSizeFunctionFactory;
-import org.apache.commons.math4.random.RandomGenerator;
-import org.apache.commons.math4.random.Well44497b;
+import org.apache.commons.math4.rng.RandomSource;
+import org.apache.commons.math4.rng.UniformRandomProvider;
 import org.apache.commons.math4.util.FastMath;
 
 /**
@@ -56,7 +56,7 @@ import org.apache.commons.math4.util.FastMath;
 public class TravellingSalesmanSolver {
     private static final long FIRST_NEURON_ID = 0;
     /** RNG. */
-    private final RandomGenerator random;
+    private final UniformRandomProvider random;
     /** Set of cities. */
     private final Set<City> cities = new HashSet<City>();
     /** SOFM. */
@@ -72,7 +72,7 @@ public class TravellingSalesmanSolver {
      */
     public TravellingSalesmanSolver(City[] cityList,
                                     double numNeuronsPerCity) {
-        this(cityList, numNeuronsPerCity, new Well44497b().nextLong());
+        this(cityList, numNeuronsPerCity, RandomSource.createLong());
     }
 
     /**
@@ -84,7 +84,7 @@ public class TravellingSalesmanSolver {
     public TravellingSalesmanSolver(City[] cityList,
                                     double numNeuronsPerCity,
                                     long seed) {
-        random = new Well44497b(seed);
+        random = RandomSource.create(RandomSource.WELL_1024_A, seed);
 
         // Make sure that each city will appear only once in the list.
         for (City city : cityList) {
@@ -338,12 +338,13 @@ public class TravellingSalesmanSolver {
         final UnivariateFunction f1 = FunctionUtils.add(h1, new 
Constant(centre[0]));
         final UnivariateFunction f2 = FunctionUtils.add(h2, new 
Constant(centre[1]));
 
-        final RealDistribution u
-            = new UniformRealDistribution(random, -0.05 * radius, 0.05 * 
radius);
+        final RealDistribution u = new UniformRealDistribution(-0.05 * radius, 
0.05 * radius);
 
         return new FeatureInitializer[] {
-            FeatureInitializerFactory.randomize(u, 
FeatureInitializerFactory.function(f1, 0, 1)),
-            FeatureInitializerFactory.randomize(u, 
FeatureInitializerFactory.function(f2, 0, 1))
+            FeatureInitializerFactory.randomize(u.createSampler(random),
+                                                
FeatureInitializerFactory.function(f1, 0, 1)),
+            FeatureInitializerFactory.randomize(u.createSampler(random),
+                                                
FeatureInitializerFactory.function(f2, 0, 1))
         };
     }
 }

Reply via email to