org.apache.commons.math3.random.JDKRandomGenerator Java Examples
The following examples show how to use
org.apache.commons.math3.random.JDKRandomGenerator.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MultiStartUnivariateOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@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); MultiStartUnivariateOptimizer optimizer = new MultiStartUnivariateOptimizer(underlying, 5, g); UnivariatePointValuePair optimum = optimizer.optimize(new MaxEval(300), new UnivariateObjectiveFunction(f), GoalType.MINIMIZE, new SearchInterval(-0.3, -0.2)); Assert.assertEquals(-0.27195613, optimum.getPoint(), 1e-9); Assert.assertEquals(-0.0443342695, optimum.getValue(), 1e-9); UnivariatePointValuePair[] optima = optimizer.getOptima(); for (int i = 0; i < optima.length; ++i) { Assert.assertEquals(f.value(optima[i].getPoint()), optima[i].getValue(), 1e-9); } Assert.assertTrue(optimizer.getEvaluations() >= 50); Assert.assertTrue(optimizer.getEvaluations() <= 100); }
Example #2
Source File: UnivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testBadFunction() { UnivariateFunction f = new UnivariateFunction() { public double value(double x) { if (x < 0) { throw new LocalException(); } return 0; } }; UnivariateOptimizer underlying = new BrentOptimizer(1e-9, 1e-14); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(4312000053L); UnivariateMultiStartOptimizer<UnivariateFunction> optimizer = new UnivariateMultiStartOptimizer<UnivariateFunction>(underlying, 5, g); try { optimizer.optimize(300, f, GoalType.MINIMIZE, -0.3, -0.2); Assert.fail(); } catch (LocalException e) { // Expected. } // Ensure that the exception was thrown because no optimum was found. Assert.assertTrue(optimizer.getOptima()[0] == null); }
Example #3
Source File: MultivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testRosenbrock() { Rosenbrock rosenbrock = new Rosenbrock(); SimplexOptimizer underlying = new SimplexOptimizer(new SimpleValueChecker(-1, 1.0e-3)); NelderMeadSimplex simplex = new NelderMeadSimplex(new double[][] { { -1.2, 1.0 }, { 0.9, 1.2 } , { 3.5, -2.3 } }); underlying.setSimplex(simplex); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(16069223052l); RandomVectorGenerator generator = new UncorrelatedRandomVectorGenerator(2, new GaussianRandomGenerator(g)); MultivariateMultiStartOptimizer optimizer = new MultivariateMultiStartOptimizer(underlying, 10, generator); PointValuePair optimum = optimizer.optimize(1100, rosenbrock, GoalType.MINIMIZE, new double[] { -1.2, 1.0 }); Assert.assertEquals(rosenbrock.getCount(), optimizer.getEvaluations()); Assert.assertTrue(optimizer.getEvaluations() > 900); Assert.assertTrue(optimizer.getEvaluations() < 1200); Assert.assertTrue(optimum.getValue() < 8.0e-4); }
Example #4
Source File: MultivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testRosenbrock() { Rosenbrock rosenbrock = new Rosenbrock(); SimplexOptimizer underlying = new SimplexOptimizer(new SimpleValueChecker(-1, 1.0e-3)); NelderMeadSimplex simplex = new NelderMeadSimplex(new double[][] { { -1.2, 1.0 }, { 0.9, 1.2 } , { 3.5, -2.3 } }); underlying.setSimplex(simplex); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(16069223052l); RandomVectorGenerator generator = new UncorrelatedRandomVectorGenerator(2, new GaussianRandomGenerator(g)); MultivariateMultiStartOptimizer optimizer = new MultivariateMultiStartOptimizer(underlying, 10, generator); PointValuePair optimum = optimizer.optimize(1100, rosenbrock, GoalType.MINIMIZE, new double[] { -1.2, 1.0 }); Assert.assertEquals(rosenbrock.getCount(), optimizer.getEvaluations()); Assert.assertTrue(optimizer.getEvaluations() > 900); Assert.assertTrue(optimizer.getEvaluations() < 1200); Assert.assertTrue(optimum.getValue() < 8.0e-4); }
Example #5
Source File: MultivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testRosenbrock() { Rosenbrock rosenbrock = new Rosenbrock(); SimplexOptimizer underlying = new SimplexOptimizer(new SimpleValueChecker(-1, 1.0e-3)); NelderMeadSimplex simplex = new NelderMeadSimplex(new double[][] { { -1.2, 1.0 }, { 0.9, 1.2 } , { 3.5, -2.3 } }); underlying.setSimplex(simplex); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(16069223052l); RandomVectorGenerator generator = new UncorrelatedRandomVectorGenerator(2, new GaussianRandomGenerator(g)); MultivariateMultiStartOptimizer optimizer = new MultivariateMultiStartOptimizer(underlying, 10, generator); PointValuePair optimum = optimizer.optimize(1100, rosenbrock, GoalType.MINIMIZE, new double[] { -1.2, 1.0 }); Assert.assertEquals(rosenbrock.getCount(), optimizer.getEvaluations()); Assert.assertTrue(optimizer.getEvaluations() > 900); Assert.assertTrue(optimizer.getEvaluations() < 1200); Assert.assertTrue(optimum.getValue() < 8.0e-4); }
Example #6
Source File: BPMFModel.java From jstarcraft-rns with Apache License 2.0 | 6 votes |
@Override public void prepare(Configurator configuration, DataModule model, DataSpace space) { super.prepare(configuration, model, space); userMean = configuration.getFloat("recommender.recommender.user.mu", 0F); userBeta = configuration.getFloat("recommender.recommender.user.beta", 1F); userWishart = configuration.getFloat("recommender.recommender.user.wishart.scale", 1F); itemMean = configuration.getFloat("recommender.recommender.item.mu", 0F); itemBeta = configuration.getFloat("recommender.recommender.item.beta", 1F); itemWishart = configuration.getFloat("recommender.recommender.item.wishart.scale", 1F); rateSigma = configuration.getFloat("recommender.recommender.rating.sigma", 2F); gibbsIterations = configuration.getInteger("recommender.recommender.iterations.gibbs", 1); userMatrixes = new DenseMatrix[epocheSize - 1]; itemMatrixes = new DenseMatrix[epocheSize - 1]; normalDistribution = new QuantityProbability(JDKRandomGenerator.class, factorSize, NormalDistribution.class, 0D, 1D); userGammaDistributions = new QuantityProbability[factorSize]; itemGammaDistributions = new QuantityProbability[factorSize]; for (int index = 0; index < factorSize; index++) { userGammaDistributions[index] = new QuantityProbability(JDKRandomGenerator.class, index, GammaDistribution.class, (userSize + factorSize - (index + 1D)) / 2D, 2D); itemGammaDistributions[index] = new QuantityProbability(JDKRandomGenerator.class, index, GammaDistribution.class, (itemSize + factorSize - (index + 1D)) / 2D, 2D); } }
Example #7
Source File: DifferentiableMultivariateVectorMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test(expected=TestException.class) public void testNoOptimum() { DifferentiableMultivariateVectorOptimizer underlyingOptimizer = new GaussNewtonOptimizer(true, new SimpleVectorValueChecker(1.0e-6, 1.0e-6)); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(12373523445l); RandomVectorGenerator generator = new UncorrelatedRandomVectorGenerator(1, new GaussianRandomGenerator(g)); DifferentiableMultivariateVectorMultiStartOptimizer optimizer = new DifferentiableMultivariateVectorMultiStartOptimizer(underlyingOptimizer, 10, generator); optimizer.optimize(100, new DifferentiableMultivariateVectorFunction() { public MultivariateMatrixFunction jacobian() { return null; } public double[] value(double[] point) { throw new TestException(); } }, new double[] { 2 }, new double[] { 1 }, new double[] { 0 }); }
Example #8
Source File: UnivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testBadFunction() { UnivariateFunction f = new UnivariateFunction() { public double value(double x) { if (x < 0) { throw new LocalException(); } return 0; } }; UnivariateOptimizer underlying = new BrentOptimizer(1e-9, 1e-14); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(4312000053L); UnivariateMultiStartOptimizer<UnivariateFunction> optimizer = new UnivariateMultiStartOptimizer<UnivariateFunction>(underlying, 5, g); try { optimizer.optimize(300, f, GoalType.MINIMIZE, -0.3, -0.2); Assert.fail(); } catch (LocalException e) { // Expected. } // Ensure that the exception was thrown because no optimum was found. Assert.assertTrue(optimizer.getOptima()[0] == null); }
Example #9
Source File: UnivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testBadFunction() { UnivariateFunction f = new UnivariateFunction() { public double value(double x) { if (x < 0) { throw new LocalException(); } return 0; } }; UnivariateOptimizer underlying = new BrentOptimizer(1e-9, 1e-14); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(4312000053L); UnivariateMultiStartOptimizer<UnivariateFunction> optimizer = new UnivariateMultiStartOptimizer<UnivariateFunction>(underlying, 5, g); try { optimizer.optimize(300, f, GoalType.MINIMIZE, -0.3, -0.2); Assert.fail(); } catch (LocalException e) { // Expected. } // Ensure that the exception was thrown because no optimum was found. Assert.assertTrue(optimizer.getOptima()[0] == null); }
Example #10
Source File: MultiStartUnivariateOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@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); MultiStartUnivariateOptimizer optimizer = new MultiStartUnivariateOptimizer(underlying, 5, g); UnivariatePointValuePair optimum = optimizer.optimize(new MaxEval(300), new UnivariateObjectiveFunction(f), GoalType.MINIMIZE, new SearchInterval(-0.3, -0.2)); Assert.assertEquals(-0.27195613, optimum.getPoint(), 1e-9); Assert.assertEquals(-0.0443342695, optimum.getValue(), 1e-9); UnivariatePointValuePair[] optima = optimizer.getOptima(); for (int i = 0; i < optima.length; ++i) { Assert.assertEquals(f.value(optima[i].getPoint()), optima[i].getValue(), 1e-9); } Assert.assertTrue(optimizer.getEvaluations() >= 50); Assert.assertTrue(optimizer.getEvaluations() <= 100); }
Example #11
Source File: MultiStartMultivariateVectorOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
/** * Test demonstrating that the user exception is finally thrown if none * of the runs succeed. */ @Test(expected=TestException.class) public void testNoOptimum() { JacobianMultivariateVectorOptimizer underlyingOptimizer = new GaussNewtonOptimizer(true, new SimpleVectorValueChecker(1e-6, 1e-6)); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(12373523445l); RandomVectorGenerator generator = new UncorrelatedRandomVectorGenerator(1, new GaussianRandomGenerator(g)); MultiStartMultivariateVectorOptimizer optimizer = new MultiStartMultivariateVectorOptimizer(underlyingOptimizer, 10, generator); optimizer.optimize(new MaxEval(100), new Target(new double[] { 0 }), new Weight(new double[] { 1 }), new InitialGuess(new double[] { 0 }), new ModelFunction(new MultivariateVectorFunction() { public double[] value(double[] point) { throw new TestException(); } })); }
Example #12
Source File: UnivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testSinMin() { UnivariateFunction f = new Sin(); UnivariateOptimizer underlying = new BrentOptimizer(1e-10, 1e-14); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(44428400075l); UnivariateMultiStartOptimizer<UnivariateFunction> optimizer = new UnivariateMultiStartOptimizer<UnivariateFunction>(underlying, 10, g); optimizer.optimize(300, f, GoalType.MINIMIZE, -100.0, 100.0); UnivariatePointValuePair[] optima = optimizer.getOptima(); for (int i = 1; i < optima.length; ++i) { double d = (optima[i].getPoint() - optima[i-1].getPoint()) / (2 * FastMath.PI); Assert.assertTrue(FastMath.abs(d - FastMath.rint(d)) < 1.0e-8); Assert.assertEquals(-1.0, f.value(optima[i].getPoint()), 1.0e-10); Assert.assertEquals(f.value(optima[i].getPoint()), optima[i].getValue(), 1.0e-10); } Assert.assertTrue(optimizer.getEvaluations() > 200); Assert.assertTrue(optimizer.getEvaluations() < 300); }
Example #13
Source File: NaturalRankingTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testNaNsFixedTiesRandom() { RandomGenerator randomGenerator = new JDKRandomGenerator(); randomGenerator.setSeed(1000); NaturalRanking ranking = new NaturalRanking(NaNStrategy.FIXED, randomGenerator); double[] ranks = ranking.rank(exampleData); double[] correctRanks = { 5, 3, 6, 7, 3, 8, Double.NaN, 1, 2 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(tiesFirst); correctRanks = new double[] { 1, 2, 4, 3, 5 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(tiesLast); correctRanks = new double[] { 3, 3, 2, 1 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(multipleNaNs); correctRanks = new double[] { 1, 2, Double.NaN, Double.NaN }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(multipleTies); correctRanks = new double[] { 3, 2, 4, 4, 6, 7, 1 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(allSame); correctRanks = new double[] { 2, 3, 3, 3 }; TestUtils.assertEquals(correctRanks, ranks, 0d); }
Example #14
Source File: MultiStartUnivariateOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testSinMin() { UnivariateFunction f = new Sin(); UnivariateOptimizer underlying = new BrentOptimizer(1e-10, 1e-14); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(44428400075l); MultiStartUnivariateOptimizer optimizer = new MultiStartUnivariateOptimizer(underlying, 10, g); optimizer.optimize(new MaxEval(300), new UnivariateObjectiveFunction(f), GoalType.MINIMIZE, new SearchInterval(-100.0, 100.0)); UnivariatePointValuePair[] optima = optimizer.getOptima(); for (int i = 1; i < optima.length; ++i) { double d = (optima[i].getPoint() - optima[i-1].getPoint()) / (2 * FastMath.PI); Assert.assertTrue(FastMath.abs(d - FastMath.rint(d)) < 1.0e-8); Assert.assertEquals(-1.0, f.value(optima[i].getPoint()), 1.0e-10); Assert.assertEquals(f.value(optima[i].getPoint()), optima[i].getValue(), 1.0e-10); } Assert.assertTrue(optimizer.getEvaluations() > 200); Assert.assertTrue(optimizer.getEvaluations() < 300); }
Example #15
Source File: PercentileTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testStoredVsDirect() { final RandomGenerator rand= new JDKRandomGenerator(); rand.setSeed(Long.MAX_VALUE); for (final int sampleSize:sampleSizes) { final double[] data = new NormalDistribution(rand,4000, 50) .sample(sampleSize); for (final double p:new double[] {50d,95d}) { for (final Percentile.EstimationType e : Percentile.EstimationType.values()) { reset(p, e); final Percentile pStoredData = getUnivariateStatistic(); pStoredData.setData(data); final double storedDataResult=pStoredData.evaluate(); pStoredData.setData(null); final Percentile pDirect = getUnivariateStatistic(); Assert.assertEquals("Sample="+sampleSize+",P="+p+" e="+e, storedDataResult, pDirect.evaluate(data),0d); } } } }
Example #16
Source File: NaturalRankingTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testNaNsFixedTiesRandom() { RandomGenerator randomGenerator = new JDKRandomGenerator(); randomGenerator.setSeed(1000); NaturalRanking ranking = new NaturalRanking(NaNStrategy.FIXED, randomGenerator); double[] ranks = ranking.rank(exampleData); double[] correctRanks = { 5, 4, 6, 7, 3, 8, Double.NaN, 1, 4 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(tiesFirst); correctRanks = new double[] { 1, 1, 4, 3, 5 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(tiesLast); correctRanks = new double[] { 3, 4, 2, 1 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(multipleNaNs); correctRanks = new double[] { 1, 2, Double.NaN, Double.NaN }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(multipleTies); correctRanks = new double[] { 3, 2, 5, 5, 7, 6, 1 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(allSame); correctRanks = new double[] { 1, 3, 4, 4 }; TestUtils.assertEquals(correctRanks, ranks, 0d); }
Example #17
Source File: PediatricGrowthTrajectoryTest.java From synthea with Apache License 2.0 | 6 votes |
@Test public void generateNextYearBMI() { long birthDay = TestHelper.timestamp(2017, 1, 1, 0, 0, 0); Person person = new Person(0L); person.attributes.put(Person.BIRTHDATE, birthDay); person.attributes.put(Person.GENDER, "M"); JDKRandomGenerator random = new JDKRandomGenerator(6454); PediatricGrowthTrajectory pgt = new PediatricGrowthTrajectory(0L, birthDay); // This will be the initial NHANES Sample long sampleSimulationTime = pgt.tail().timeInSimulation; double initialBMI = pgt.tail().bmi; long sixMonthsAfterInitial = sampleSimulationTime + Utilities.convertTime("months", 6); // Will cause generateNextYearBMI to be run double sixMonthLaterBMI = pgt.currentBMI(person, sixMonthsAfterInitial, random); double oneYearLaterBMI = pgt.tail().bmi; double bmiDiff = oneYearLaterBMI - initialBMI; assertEquals(initialBMI + (0.5 * bmiDiff), sixMonthLaterBMI, 0.01); }
Example #18
Source File: UnivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@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); UnivariateMultiStartOptimizer<UnivariateFunction> optimizer = new UnivariateMultiStartOptimizer<UnivariateFunction>(underlying, 5, g); UnivariatePointValuePair optimum = optimizer.optimize(300, f, GoalType.MINIMIZE, -0.3, -0.2); Assert.assertEquals(-0.2719561293, optimum.getPoint(), 1e-9); Assert.assertEquals(-0.0443342695, optimum.getValue(), 1e-9); UnivariatePointValuePair[] optima = optimizer.getOptima(); for (int i = 0; i < optima.length; ++i) { Assert.assertEquals(f.value(optima[i].getPoint()), optima[i].getValue(), 1e-9); } Assert.assertTrue(optimizer.getEvaluations() >= 50); Assert.assertTrue(optimizer.getEvaluations() <= 100); }
Example #19
Source File: UnivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testSinMin() { UnivariateFunction f = new Sin(); UnivariateOptimizer underlying = new BrentOptimizer(1e-10, 1e-14); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(44428400075l); UnivariateMultiStartOptimizer<UnivariateFunction> optimizer = new UnivariateMultiStartOptimizer<UnivariateFunction>(underlying, 10, g); optimizer.optimize(300, f, GoalType.MINIMIZE, -100.0, 100.0); UnivariatePointValuePair[] optima = optimizer.getOptima(); for (int i = 1; i < optima.length; ++i) { double d = (optima[i].getPoint() - optima[i-1].getPoint()) / (2 * FastMath.PI); Assert.assertTrue(FastMath.abs(d - FastMath.rint(d)) < 1.0e-8); Assert.assertEquals(-1.0, f.value(optima[i].getPoint()), 1.0e-10); Assert.assertEquals(f.value(optima[i].getPoint()), optima[i].getValue(), 1.0e-10); } Assert.assertTrue(optimizer.getEvaluations() > 200); Assert.assertTrue(optimizer.getEvaluations() < 300); }
Example #20
Source File: MultiStartMultivariateVectorOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
/** * Test demonstrating that the user exception is finally thrown if none * of the runs succeed. */ @Test(expected=TestException.class) public void testNoOptimum() { JacobianMultivariateVectorOptimizer underlyingOptimizer = new GaussNewtonOptimizer(true, new SimpleVectorValueChecker(1e-6, 1e-6)); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(12373523445l); RandomVectorGenerator generator = new UncorrelatedRandomVectorGenerator(1, new GaussianRandomGenerator(g)); MultiStartMultivariateVectorOptimizer optimizer = new MultiStartMultivariateVectorOptimizer(underlyingOptimizer, 10, generator); optimizer.optimize(new MaxEval(100), new Target(new double[] { 0 }), new Weight(new double[] { 1 }), new InitialGuess(new double[] { 0 }), new ModelFunction(new MultivariateVectorFunction() { public double[] value(double[] point) { throw new TestException(); } })); }
Example #21
Source File: UnivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testSinMin() { UnivariateFunction f = new Sin(); UnivariateOptimizer underlying = new BrentOptimizer(1e-10, 1e-14); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(44428400075l); UnivariateMultiStartOptimizer<UnivariateFunction> optimizer = new UnivariateMultiStartOptimizer<UnivariateFunction>(underlying, 10, g); optimizer.optimize(300, f, GoalType.MINIMIZE, -100.0, 100.0); UnivariatePointValuePair[] optima = optimizer.getOptima(); for (int i = 1; i < optima.length; ++i) { double d = (optima[i].getPoint() - optima[i-1].getPoint()) / (2 * FastMath.PI); Assert.assertTrue(FastMath.abs(d - FastMath.rint(d)) < 1.0e-8); Assert.assertEquals(-1.0, f.value(optima[i].getPoint()), 1.0e-10); Assert.assertEquals(f.value(optima[i].getPoint()), optima[i].getValue(), 1.0e-10); } Assert.assertTrue(optimizer.getEvaluations() > 200); Assert.assertTrue(optimizer.getEvaluations() < 300); }
Example #22
Source File: NaturalRankingTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testNaNsFixedTiesRandom() { RandomGenerator randomGenerator = new JDKRandomGenerator(); randomGenerator.setSeed(1000); NaturalRanking ranking = new NaturalRanking(NaNStrategy.FIXED, randomGenerator); double[] ranks = ranking.rank(exampleData); double[] correctRanks = { 5, 4, 6, 7, 3, 8, Double.NaN, 1, 4 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(tiesFirst); correctRanks = new double[] { 1, 1, 4, 3, 5 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(tiesLast); correctRanks = new double[] { 3, 4, 2, 1 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(multipleNaNs); correctRanks = new double[] { 1, 2, Double.NaN, Double.NaN }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(multipleTies); correctRanks = new double[] { 3, 2, 5, 5, 7, 6, 1 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(allSame); correctRanks = new double[] { 1, 3, 4, 4 }; TestUtils.assertEquals(correctRanks, ranks, 0d); }
Example #23
Source File: UnivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@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); UnivariateMultiStartOptimizer<UnivariateFunction> optimizer = new UnivariateMultiStartOptimizer<UnivariateFunction>(underlying, 5, g); UnivariatePointValuePair optimum = optimizer.optimize(300, f, GoalType.MINIMIZE, -0.3, -0.2); Assert.assertEquals(-0.2719561293, optimum.getPoint(), 1e-9); Assert.assertEquals(-0.0443342695, optimum.getValue(), 1e-9); UnivariatePointValuePair[] optima = optimizer.getOptima(); for (int i = 0; i < optima.length; ++i) { Assert.assertEquals(f.value(optima[i].getPoint()), optima[i].getValue(), 1e-9); } Assert.assertTrue(optimizer.getEvaluations() >= 50); Assert.assertTrue(optimizer.getEvaluations() <= 100); }
Example #24
Source File: UnivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@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); UnivariateMultiStartOptimizer<UnivariateFunction> optimizer = new UnivariateMultiStartOptimizer<UnivariateFunction>(underlying, 5, g); UnivariatePointValuePair optimum = optimizer.optimize(300, f, GoalType.MINIMIZE, -0.3, -0.2); Assert.assertEquals(-0.2719561293, optimum.getPoint(), 1e-9); Assert.assertEquals(-0.0443342695, optimum.getValue(), 1e-9); UnivariatePointValuePair[] optima = optimizer.getOptima(); for (int i = 0; i < optima.length; ++i) { Assert.assertEquals(f.value(optima[i].getPoint()), optima[i].getValue(), 1e-9); } Assert.assertTrue(optimizer.getEvaluations() >= 50); Assert.assertTrue(optimizer.getEvaluations() <= 100); }
Example #25
Source File: DifferentiableMultivariateVectorMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test(expected=TestException.class) public void testNoOptimum() { DifferentiableMultivariateVectorOptimizer underlyingOptimizer = new GaussNewtonOptimizer(true, new SimpleVectorValueChecker(1.0e-6, 1.0e-6)); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(12373523445l); RandomVectorGenerator generator = new UncorrelatedRandomVectorGenerator(1, new GaussianRandomGenerator(g)); DifferentiableMultivariateVectorMultiStartOptimizer optimizer = new DifferentiableMultivariateVectorMultiStartOptimizer(underlyingOptimizer, 10, generator); optimizer.optimize(100, new DifferentiableMultivariateVectorFunction() { public MultivariateMatrixFunction jacobian() { return null; } public double[] value(double[] point) { throw new TestException(); } }, new double[] { 2 }, new double[] { 1 }, new double[] { 0 }); }
Example #26
Source File: MultiStartMultivariateVectorOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
/** * Test demonstrating that the user exception is finally thrown if none * of the runs succeed. */ @Test(expected=TestException.class) public void testNoOptimum() { JacobianMultivariateVectorOptimizer underlyingOptimizer = new GaussNewtonOptimizer(true, new SimpleVectorValueChecker(1e-6, 1e-6)); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(12373523445l); RandomVectorGenerator generator = new UncorrelatedRandomVectorGenerator(1, new GaussianRandomGenerator(g)); MultiStartMultivariateVectorOptimizer optimizer = new MultiStartMultivariateVectorOptimizer(underlyingOptimizer, 10, generator); optimizer.optimize(new MaxEval(100), new Target(new double[] { 0 }), new Weight(new double[] { 1 }), new InitialGuess(new double[] { 0 }), new ModelFunction(new MultivariateVectorFunction() { public double[] value(double[] point) { throw new TestException(); } })); }
Example #27
Source File: NaturalRankingTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testNaNsFixedTiesRandom() { RandomGenerator randomGenerator = new JDKRandomGenerator(); randomGenerator.setSeed(1000); NaturalRanking ranking = new NaturalRanking(NaNStrategy.FIXED, randomGenerator); double[] ranks = ranking.rank(exampleData); double[] correctRanks = { 5, 3, 6, 7, 3, 8, Double.NaN, 1, 2 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(tiesFirst); correctRanks = new double[] { 1, 2, 4, 3, 5 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(tiesLast); correctRanks = new double[] { 3, 3, 2, 1 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(multipleNaNs); correctRanks = new double[] { 1, 2, Double.NaN, Double.NaN }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(multipleTies); correctRanks = new double[] { 3, 2, 4, 4, 6, 7, 1 }; TestUtils.assertEquals(correctRanks, ranks, 0d); ranks = ranking.rank(allSame); correctRanks = new double[] { 2, 3, 3, 3 }; TestUtils.assertEquals(correctRanks, ranks, 0d); }
Example #28
Source File: MultivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@Test public void testRosenbrock() { Rosenbrock rosenbrock = new Rosenbrock(); SimplexOptimizer underlying = new SimplexOptimizer(new SimpleValueChecker(-1, 1.0e-3)); NelderMeadSimplex simplex = new NelderMeadSimplex(new double[][] { { -1.2, 1.0 }, { 0.9, 1.2 } , { 3.5, -2.3 } }); underlying.setSimplex(simplex); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(16069223052l); RandomVectorGenerator generator = new UncorrelatedRandomVectorGenerator(2, new GaussianRandomGenerator(g)); MultivariateMultiStartOptimizer optimizer = new MultivariateMultiStartOptimizer(underlying, 10, generator); PointValuePair optimum = optimizer.optimize(1100, rosenbrock, GoalType.MINIMIZE, new double[] { -1.2, 1.0 }); Assert.assertEquals(rosenbrock.getCount(), optimizer.getEvaluations()); Assert.assertTrue(optimizer.getEvaluations() > 900); Assert.assertTrue(optimizer.getEvaluations() < 1200); Assert.assertTrue(optimum.getValue() < 8.0e-4); }
Example #29
Source File: UnivariateMultiStartOptimizerTest.java From astor with GNU General Public License v2.0 | 6 votes |
@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); UnivariateMultiStartOptimizer<UnivariateFunction> optimizer = new UnivariateMultiStartOptimizer<UnivariateFunction>(underlying, 5, g); UnivariatePointValuePair optimum = optimizer.optimize(300, f, GoalType.MINIMIZE, -0.3, -0.2); Assert.assertEquals(-0.2719561293, optimum.getPoint(), 1e-9); Assert.assertEquals(-0.0443342695, optimum.getValue(), 1e-9); UnivariatePointValuePair[] optima = optimizer.getOptima(); for (int i = 0; i < optima.length; ++i) { Assert.assertEquals(f.value(optima[i].getPoint()), optima[i].getValue(), 1e-9); } Assert.assertTrue(optimizer.getEvaluations() >= 50); Assert.assertTrue(optimizer.getEvaluations() <= 100); }
Example #30
Source File: MultiStartUnivariateOptimizerTest.java From astor with GNU General Public License v2.0 | 5 votes |
@Test(expected=MathIllegalStateException.class) public void testMissingSearchInterval() { UnivariateOptimizer underlying = new BrentOptimizer(1e-10, 1e-14); JDKRandomGenerator g = new JDKRandomGenerator(); g.setSeed(44428400075l); MultiStartUnivariateOptimizer optimizer = new MultiStartUnivariateOptimizer(underlying, 10, g); optimizer.optimize(new MaxEval(300), new UnivariateObjectiveFunction(new Sin()), GoalType.MINIMIZE); }