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:42 UTC

[09/25] [math] MATH-1335

MATH-1335

Use new RNG API.

Unrelated code comments removed in unit test.


Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/63a9488f
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/63a9488f
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/63a9488f

Branch: refs/heads/develop
Commit: 63a9488f2910434851e98a8fc0ec8c053b24083b
Parents: 11409e6
Author: Gilles <er...@apache.org>
Authored: Wed May 11 14:25:36 2016 +0200
Committer: Gilles <er...@apache.org>
Committed: Tue May 17 15:30:23 2016 +0200

----------------------------------------------------------------------
 .../MultiStartUnivariateOptimizer.java          |  6 ++---
 .../MultiStartUnivariateOptimizerTest.java      | 23 +++++++-------------
 2 files changed, 11 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-math/blob/63a9488f/src/main/java/org/apache/commons/math4/optim/univariate/MultiStartUnivariateOptimizer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/optim/univariate/MultiStartUnivariateOptimizer.java b/src/main/java/org/apache/commons/math4/optim/univariate/MultiStartUnivariateOptimizer.java
index 5383a52..65bfa67 100644
--- a/src/main/java/org/apache/commons/math4/optim/univariate/MultiStartUnivariateOptimizer.java
+++ b/src/main/java/org/apache/commons/math4/optim/univariate/MultiStartUnivariateOptimizer.java
@@ -26,7 +26,7 @@ import org.apache.commons.math4.exception.util.LocalizedFormats;
 import org.apache.commons.math4.optim.MaxEval;
 import org.apache.commons.math4.optim.OptimizationData;
 import org.apache.commons.math4.optim.nonlinear.scalar.GoalType;
-import org.apache.commons.math4.random.RandomGenerator;
+import org.apache.commons.math4.rng.UniformRandomProvider;
 
 /**
  * Special implementation of the {@link UnivariateOptimizer} interface
@@ -47,7 +47,7 @@ public class MultiStartUnivariateOptimizer
     /** Number of starts to go. */
     private final int starts;
     /** Random generator for multi-start. */
-    private final RandomGenerator generator;
+    private final UniformRandomProvider generator;
     /** Found optima. */
     private UnivariatePointValuePair[] optima;
     /** Optimization data. */
@@ -75,7 +75,7 @@ public class MultiStartUnivariateOptimizer
      */
     public MultiStartUnivariateOptimizer(final UnivariateOptimizer optimizer,
                                          final int starts,
-                                         final RandomGenerator generator) {
+                                         final UniformRandomProvider generator) {
         super(optimizer.getConvergenceChecker());
 
         if (starts < 1) {

http://git-wip-us.apache.org/repos/asf/commons-math/blob/63a9488f/src/test/java/org/apache/commons/math4/optim/univariate/MultiStartUnivariateOptimizerTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/optim/univariate/MultiStartUnivariateOptimizerTest.java b/src/test/java/org/apache/commons/math4/optim/univariate/MultiStartUnivariateOptimizerTest.java
index ec8ec06..a452ac8 100644
--- a/src/test/java/org/apache/commons/math4/optim/univariate/MultiStartUnivariateOptimizerTest.java
+++ b/src/test/java/org/apache/commons/math4/optim/univariate/MultiStartUnivariateOptimizerTest.java
@@ -28,7 +28,8 @@ import org.apache.commons.math4.optim.univariate.SearchInterval;
 import org.apache.commons.math4.optim.univariate.UnivariateObjectiveFunction;
 import org.apache.commons.math4.optim.univariate.UnivariateOptimizer;
 import org.apache.commons.math4.optim.univariate.UnivariatePointValuePair;
-import org.apache.commons.math4.random.JDKRandomGenerator;
+import org.apache.commons.math4.rng.UniformRandomProvider;
+import org.apache.commons.math4.rng.RandomSource;
 import org.apache.commons.math4.util.FastMath;
 import org.junit.Assert;
 import org.junit.Test;
@@ -37,8 +38,7 @@ public class MultiStartUnivariateOptimizerTest {
     @Test(expected=MathIllegalStateException.class)
     public void testMissingMaxEval() {
         UnivariateOptimizer underlying = new BrentOptimizer(1e-10, 1e-14);
-        JDKRandomGenerator g = new JDKRandomGenerator();
-        g.setSeed(44428400075l);
+        UniformRandomProvider g = RandomSource.create(RandomSource.TWO_CMRES, 44428400075l);
         MultiStartUnivariateOptimizer optimizer = new MultiStartUnivariateOptimizer(underlying, 10, g);
         optimizer.optimize(new UnivariateObjectiveFunction(new Sin()),
                            GoalType.MINIMIZE,
@@ -47,8 +47,7 @@ public class MultiStartUnivariateOptimizerTest {
     @Test(expected=MathIllegalStateException.class)
     public void testMissingSearchInterval() {
         UnivariateOptimizer underlying = new BrentOptimizer(1e-10, 1e-14);
-        JDKRandomGenerator g = new JDKRandomGenerator();
-        g.setSeed(44428400075l);
+        UniformRandomProvider g = RandomSource.create(RandomSource.TWO_CMRES, 44428400075l);
         MultiStartUnivariateOptimizer optimizer = new MultiStartUnivariateOptimizer(underlying, 10, g);
         optimizer.optimize(new MaxEval(300),
                            new UnivariateObjectiveFunction(new Sin()),
@@ -59,8 +58,7 @@ public class MultiStartUnivariateOptimizerTest {
     public void testSinMin() {
         UnivariateFunction f = new Sin();
         UnivariateOptimizer underlying = new BrentOptimizer(1e-10, 1e-14);
-        JDKRandomGenerator g = new JDKRandomGenerator();
-        g.setSeed(44428400075l);
+        UniformRandomProvider g = RandomSource.create(RandomSource.TWO_CMRES, 44428400075l);
         MultiStartUnivariateOptimizer optimizer = new MultiStartUnivariateOptimizer(underlying, 10, g);
         optimizer.optimize(new MaxEval(300),
                            new UnivariateObjectiveFunction(f),
@@ -79,12 +77,9 @@ public class MultiStartUnivariateOptimizerTest {
 
     @Test
     public void testQuinticMin() {
-        // The quintic function has zeros at 0, +-0.5 and +-1.
-        // The function has extrema (first derivative is zero) at 0.27195613 and 0.82221643,
         UnivariateFunction f = new QuinticFunction();
         UnivariateOptimizer underlying = new BrentOptimizer(1e-9, 1e-14);
-        JDKRandomGenerator g = new JDKRandomGenerator();
-        g.setSeed(4312000053L);
+        UniformRandomProvider g = RandomSource.create(RandomSource.TWO_CMRES, 4312000053L);
         MultiStartUnivariateOptimizer optimizer = new MultiStartUnivariateOptimizer(underlying, 5, g);
 
         UnivariatePointValuePair optimum
@@ -92,7 +87,7 @@ public class MultiStartUnivariateOptimizerTest {
                                  new UnivariateObjectiveFunction(f),
                                  GoalType.MINIMIZE,
                                  new SearchInterval(-0.3, -0.2));
-        Assert.assertEquals(-0.27195613, optimum.getPoint(), 1e-9);
+        Assert.assertEquals(-0.271956128, optimum.getPoint(), 1e-9);
         Assert.assertEquals(-0.0443342695, optimum.getValue(), 1e-9);
 
         UnivariatePointValuePair[] optima = optimizer.getOptima();
@@ -114,8 +109,7 @@ public class MultiStartUnivariateOptimizerTest {
                 }
             };
         UnivariateOptimizer underlying = new BrentOptimizer(1e-9, 1e-14);
-        JDKRandomGenerator g = new JDKRandomGenerator();
-        g.setSeed(4312000053L);
+        UniformRandomProvider g = RandomSource.create(RandomSource.TWO_CMRES, 4312000053L);
         MultiStartUnivariateOptimizer optimizer = new MultiStartUnivariateOptimizer(underlying, 5, g);
 
         try {
@@ -135,5 +129,4 @@ public class MultiStartUnivariateOptimizerTest {
     private static class LocalException extends RuntimeException {
         private static final long serialVersionUID = 1194682757034350629L;
     }
-
 }