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 2021/08/02 00:39:00 UTC
[commons-math] 01/03: Delete spurious file.
This is an automated email from the ASF dual-hosted git repository.
erans pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-math.git
commit f49e77a8067785fcdaf44db84ab3487e4ae58387
Author: Gilles Sadowski <gi...@gmail.com>
AuthorDate: Wed Jul 28 13:01:18 2021 +0200
Delete spurious file.
File was committed by mistake.
---
.../SimplexOptimizerMultiDirectionalTest.java.NEW | 409 ---------------------
1 file changed, 409 deletions(-)
diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/SimplexOptimizerMultiDirectionalTest.java.NEW b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/SimplexOptimizerMultiDirectionalTest.java.NEW
deleted file mode 100644
index de721eb..0000000
--- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/SimplexOptimizerMultiDirectionalTest.java.NEW
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.math4.optim.nonlinear.scalar.noderiv;
-
-import org.apache.commons.math4.analysis.MultivariateFunction;
-import org.apache.commons.math4.exception.MathUnsupportedOperationException;
-import org.apache.commons.math4.optim.InitialGuess;
-import org.apache.commons.math4.optim.MaxEval;
-import org.apache.commons.math4.optim.PointValuePair;
-import org.apache.commons.math4.optim.SimpleBounds;
-import org.apache.commons.math4.optim.SimpleValueChecker;
-import org.apache.commons.math4.optim.nonlinear.scalar.GoalType;
-import org.apache.commons.math4.optim.nonlinear.scalar.ObjectiveFunction;
-import org.apache.commons.math4.optim.nonlinear.scalar.SimulatedAnnealing;
-import org.apache.commons.math4.optim.nonlinear.scalar.noderiv.MultiDirectionalSimplex;
-import org.apache.commons.math4.optim.nonlinear.scalar.noderiv.NelderMeadSimplex;
-import org.apache.commons.math4.optim.nonlinear.scalar.noderiv.SimplexOptimizer;
-import org.apache.commons.math4.util.FastMath;
-import org.apache.commons.math4.util.MathArrays;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.Ignore;
-
-public class SimplexOptimizerMultiDirectionalTest {
- private static final int DIM = 13;
-
- @Test(expected=MathUnsupportedOperationException.class)
- public void testBoundsUnsupported() {
- SimplexOptimizer optimizer = new SimplexOptimizer(1e-10, 1e-30);
- final OptimTestUtils.FourExtrema fourExtrema = new OptimTestUtils.FourExtrema();
-
- optimizer.optimize(new MaxEval(100),
- new ObjectiveFunction(fourExtrema),
- GoalType.MINIMIZE,
- new InitialGuess(new double[] { -3, 0 }),
- new NelderMeadSimplex(new double[] { 0.2, 0.2 }),
- new SimpleBounds(new double[] { -5, -1 },
- new double[] { 5, 1 }));
- }
-
- @Test
- public void testMinimize1() {
- SimplexOptimizer optimizer = new SimplexOptimizer(1e-11, 1e-30);
- final OptimTestUtils.FourExtrema fourExtrema = new OptimTestUtils.FourExtrema();
-
- final PointValuePair optimum
- = optimizer.optimize(new MaxEval(200),
- new ObjectiveFunction(fourExtrema),
- GoalType.MINIMIZE,
- new InitialGuess(new double[] { -3, 0 }),
- new MultiDirectionalSimplex(new double[] { 0.2, 0.2 }));
- Assert.assertEquals(fourExtrema.xM, optimum.getPoint()[0], 4e-6);
- Assert.assertEquals(fourExtrema.yP, optimum.getPoint()[1], 3e-6);
- Assert.assertEquals(fourExtrema.valueXmYp, optimum.getValue(), 8e-13);
- Assert.assertTrue(optimizer.getEvaluations() > 120);
- Assert.assertTrue(optimizer.getEvaluations() < 150);
-
- // Check that the number of iterations is updated (MATH-949).
- Assert.assertTrue(optimizer.getIterations() > 0);
- }
-
- @Test
- public void testMinimize2() {
- SimplexOptimizer optimizer = new SimplexOptimizer(1e-11, 1e-30);
- final OptimTestUtils.FourExtrema fourExtrema = new OptimTestUtils.FourExtrema();
-
- final PointValuePair optimum
- = optimizer.optimize(new MaxEval(200),
- new ObjectiveFunction(fourExtrema),
- GoalType.MINIMIZE,
- new InitialGuess(new double[] { 1, 0 }),
- new MultiDirectionalSimplex(new double[] { 0.2, 0.2 }));
- Assert.assertEquals(fourExtrema.xP, optimum.getPoint()[0], 2e-8);
- Assert.assertEquals(fourExtrema.yM, optimum.getPoint()[1], 3e-6);
- Assert.assertEquals(fourExtrema.valueXpYm, optimum.getValue(), 2e-12);
- Assert.assertTrue(optimizer.getEvaluations() > 120);
- Assert.assertTrue(optimizer.getEvaluations() < 150);
-
- // Check that the number of iterations is updated (MATH-949).
- Assert.assertTrue(optimizer.getIterations() > 0);
- }
-
- @Test
- public void testMaximize1() {
- SimplexOptimizer optimizer = new SimplexOptimizer(1e-11, 1e-30);
- final OptimTestUtils.FourExtrema fourExtrema = new OptimTestUtils.FourExtrema();
-
- final PointValuePair optimum
- = optimizer.optimize(new MaxEval(200),
- new ObjectiveFunction(fourExtrema),
- GoalType.MAXIMIZE,
- new InitialGuess(new double[] { -3.0, 0.0 }),
- new MultiDirectionalSimplex(new double[] { 0.2, 0.2 }));
- Assert.assertEquals(fourExtrema.xM, optimum.getPoint()[0], 7e-7);
- Assert.assertEquals(fourExtrema.yM, optimum.getPoint()[1], 3e-7);
- Assert.assertEquals(fourExtrema.valueXmYm, optimum.getValue(), 2e-14);
- Assert.assertTrue(optimizer.getEvaluations() > 120);
- Assert.assertTrue(optimizer.getEvaluations() < 150);
-
- // Check that the number of iterations is updated (MATH-949).
- Assert.assertTrue(optimizer.getIterations() > 0);
- }
-
- @Test
- public void testMaximize2() {
- SimplexOptimizer optimizer = new SimplexOptimizer(new SimpleValueChecker(1e-15, 1e-30));
- final OptimTestUtils.FourExtrema fourExtrema = new OptimTestUtils.FourExtrema();
-
- final PointValuePair optimum
- = optimizer.optimize(new MaxEval(200),
- new ObjectiveFunction(fourExtrema),
- GoalType.MAXIMIZE,
- new InitialGuess(new double[] { 1, 0 }),
- new MultiDirectionalSimplex(new double[] { 0.2, 0.2 }));
- Assert.assertEquals(fourExtrema.xP, optimum.getPoint()[0], 2e-8);
- Assert.assertEquals(fourExtrema.yP, optimum.getPoint()[1], 3e-6);
- Assert.assertEquals(fourExtrema.valueXpYp, optimum.getValue(), 2e-12);
- Assert.assertTrue(optimizer.getEvaluations() > 180);
- Assert.assertTrue(optimizer.getEvaluations() < 220);
-
- // Check that the number of iterations is updated (MATH-949).
- Assert.assertTrue(optimizer.getIterations() > 0);
- }
-
- @Test
- public void testRosenbrock() {
- final OptimTestUtils.Rosenbrock rosenbrock = new OptimTestUtils.Rosenbrock();
- SimplexOptimizer optimizer = new SimplexOptimizer(-1, 1e-3);
- PointValuePair optimum
- = optimizer.optimize(new MaxEval(100),
- new ObjectiveFunction(rosenbrock),
- GoalType.MINIMIZE,
- new InitialGuess(new double[] { -1.2, 1 }),
- new MultiDirectionalSimplex(new double[][] {
- { -1.2, 1.0 },
- { 0.9, 1.2 },
- { 3.5, -2.3 } }));
- Assert.assertTrue(optimizer.getEvaluations() > 50);
- Assert.assertTrue(optimizer.getEvaluations() < 100);
- Assert.assertTrue(optimum.getValue() > 1e-2);
- }
-
- @Test
- public void testPowell() {
- final OptimTestUtils.Powell powell = new OptimTestUtils.Powell();
- SimplexOptimizer optimizer = new SimplexOptimizer(-1, 1e-3);
- PointValuePair optimum
- = optimizer.optimize(new MaxEval(1000),
- new ObjectiveFunction(powell),
- GoalType.MINIMIZE,
- new InitialGuess(new double[] { 3, -1, 0, 1 }),
- new MultiDirectionalSimplex(4));
- Assert.assertTrue(optimizer.getEvaluations() > 800);
- Assert.assertTrue(optimizer.getEvaluations() < 900);
- Assert.assertTrue(optimum.getValue() > 1e-2);
- }
-
- @Test
- public void testMath283() {
- // fails because MultiDirectional.iterateSimplex is looping forever
- // the while(true) should be replaced with a convergence check
- SimplexOptimizer optimizer = new SimplexOptimizer(1e-14, 1e-14);
- final OptimTestUtils.Gaussian2D function = new OptimTestUtils.Gaussian2D(0, 0, 1);
- PointValuePair estimate = optimizer.optimize(new MaxEval(1000),
- new ObjectiveFunction(function),
- GoalType.MAXIMIZE,
- new InitialGuess(function.getMaximumPosition()),
- new MultiDirectionalSimplex(2));
- final double EPSILON = 1e-5;
- final double expectedMaximum = function.getMaximum();
- final double actualMaximum = estimate.getValue();
- Assert.assertEquals(expectedMaximum, actualMaximum, EPSILON);
-
- final double[] expectedPosition = function.getMaximumPosition();
- final double[] actualPosition = estimate.getPoint();
- Assert.assertEquals(expectedPosition[0], actualPosition[0], EPSILON );
- Assert.assertEquals(expectedPosition[1], actualPosition[1], EPSILON );
- }
-
- @Test
- public void testRosen() {
- doTest(new OptimTestUtils.Rosen(),
- OptimTestUtils.point(DIM, 0.1),
- GoalType.MINIMIZE,
- 183861,
- new PointValuePair(OptimTestUtils.point(DIM, 1.0), 0.0),
- 1e-4);
- }
-
- @Test
- public void testEllipse() {
- doTest(new OptimTestUtils.Elli(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 873,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 1e-14);
- }
-
- //@Ignore
- @Test
- public void testElliRotated() {
- doTest(new OptimTestUtils.ElliRotated(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 873,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 1e-14);
- }
-
- @Test
- public void testCigar() {
- doTest(new OptimTestUtils.Cigar(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 925,
- new PointValuePair(OptimTestUtils.point(DIM,0.0), 0.0),
- 1e-14);
- }
-
- @Test
- public void testTwoAxes() {
- doTest(new OptimTestUtils.TwoAxes(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 1159,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 1e-14);
- }
-
- @Test
- public void testCigTab() {
- doTest(new OptimTestUtils.CigTab(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 795,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 1e-14);
- }
-
- @Test
- public void testSphere() {
- doTest(new OptimTestUtils.Sphere(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 665,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 1e-14);
- }
-
- @Test
- public void testTablet() {
- doTest(new OptimTestUtils.Tablet(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 873,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 1e-14);
- }
-
- @Test
- public void testDiffPow() {
- doTest(new OptimTestUtils.DiffPow(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 614,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 1e-14);
- }
-
- @Test
- public void testSsDiffPow() {
- doTest(new OptimTestUtils.SsDiffPow(),
- OptimTestUtils.point(DIM / 2, 1.0),
- GoalType.MINIMIZE,
- 656,
- new PointValuePair(OptimTestUtils.point(DIM / 2, 0.0), 0.0),
- 1e-15);
- }
-
- @Ignore
- @Test
- public void testAckley() {
- doTest(new OptimTestUtils.Ackley(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 587,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 0);
- }
-
- @Ignore
- @Test
- public void testAckleyWithSimulatedAnnealing() {
- doTestWithSimulatedAnnealing(new OptimTestUtils.Ackley(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 100000,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 0);
- }
-
- @Ignore
- @Test
- public void testRastrigin() {
- doTest(new OptimTestUtils.Rastrigin(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 535,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 0);
- }
-
- @Ignore
- @Test
- public void testRastriginWithSimulatedAnnealing() {
- doTestWithSimulatedAnnealing(new OptimTestUtils.Rastrigin(),
- OptimTestUtils.point(DIM, 1.0),
- GoalType.MINIMIZE,
- 100000,
- new PointValuePair(OptimTestUtils.point(DIM, 0.0), 0.0),
- 0);
- }
-
- /**
- * @param func Function to optimize.
- * @param startPoint Starting point.
- * @param goal Minimization or maximization.
- * @param fTol Tolerance relative error on the objective function.
- * @param pointTol Tolerance for checking that the optimum is correct.
- * @param maxEvaluations Maximum number of evaluations.
- * @param expected Expected optimum.
- */
- private void doTest(MultivariateFunction func,
- double[] startPoint,
- GoalType goal,
- int maxEvaluations,
- PointValuePair expected,
- double tol) {
- final int dim = startPoint.length;
- final SimplexOptimizer optim = new SimplexOptimizer(1e-10, 1e-12);
- final PointValuePair result = optim.optimize(new MaxEval(Integer.MAX_VALUE), // XXX
- //new MaxEval(maxEvaluations), // XXX
- new ObjectiveFunction(func),
- goal,
- new InitialGuess(startPoint),
- new MultiDirectionalSimplex(dim, 0.1));
- final double dist = MathArrays.distance(expected.getPoint(),
- result.getPoint());
- System.out.println("==> " + func.getClass().getName()); // XXX
- System.out.println(" N=" + optim.getEvaluations()); // XXX
- System.out.println(" d=" + dist); // XXX
- System.out.println(" v(r)=" + func.value(result.getPoint())); // XXX
- System.out.println(" v(e)=" + func.value(expected.getPoint())); // XXX
-
- Assert.assertEquals(0d, dist, tol);
- }
-
- /**
- * @param func Function to optimize.
- * @param startPoint Starting point.
- * @param goal Minimization or maximization.
- * @param fTol Tolerance relative error on the objective function.
- * @param pointTol Tolerance for checking that the optimum is correct.
- * @param maxEvaluations Maximum number of evaluations.
- * @param expected Expected optimum.
- */
- private void doTestWithSimulatedAnnealing(MultivariateFunction func,
- double[] startPoint,
- GoalType goal,
- int maxEvaluations,
- PointValuePair expected,
- double tol) {
- final int dim = startPoint.length;
- final SimplexOptimizer optim = new SimplexOptimizer(1e-14, 1e-15);
- final PointValuePair result = optim.optimize(new MaxEval(Integer.MAX_VALUE), // XXX
- //new MaxEval(maxEvaluations), // XXX
- new ObjectiveFunction(func),
- goal,
- new InitialGuess(startPoint),
- new MultiDirectionalSimplex(dim, 0.1),
- new SimulatedAnnealing(OptimTestUtils.rng(),
- maxEvaluations));
- final double dist = MathArrays.distance(expected.getPoint(),
- result.getPoint());
- System.out.println("++> " + func.getClass().getName()); // XXX
- System.out.println(" N=" + optim.getEvaluations()); // XXX
- System.out.println(" d=" + dist); // XXX
- System.out.println(" v(r)=" + func.value(result.getPoint())); // XXX
- System.out.println(" v(e)=" + func.value(expected.getPoint())); // XXX
-
- Assert.assertEquals(0d, dist, tol);
- }
-}