/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.math.impl.minimization; import static org.testng.AssertJUnit.assertEquals; import java.util.function.Function; import org.testng.annotations.Test; import com.opengamma.strata.collect.array.DoubleArray; /** * Abstract test. */ @Test public abstract class MultidimensionalMinimizerWithGradientTestCase { protected void assertSolvingRosenbrock(final MinimizerWithGradient<Function<DoubleArray, Double>, Function<DoubleArray, DoubleArray>, DoubleArray> minimzer, final double tol) { final DoubleArray start = DoubleArray.of(-1.0, 1.0); final DoubleArray solution = minimzer.minimize(MinimizationTestFunctions.ROSENBROCK, MinimizationTestFunctions.ROSENBROCK_GRAD, start); assertEquals(1.0, solution.get(0), tol); assertEquals(1.0, solution.get(1), tol); } protected void assertSolvingRosenbrockWithoutGradient(final MinimizerWithGradient<Function<DoubleArray, Double>, Function<DoubleArray, DoubleArray>, DoubleArray> minimzer, final double tol) { final DoubleArray start = DoubleArray.of(-1.0, 1.0); final DoubleArray solution = minimzer.minimize(MinimizationTestFunctions.ROSENBROCK, start); assertEquals(1.0, solution.get(0), tol); assertEquals(1.0, solution.get(1), tol); } protected void assertSolvingCoupledRosenbrock(final MinimizerWithGradient<Function<DoubleArray, Double>, Function<DoubleArray, DoubleArray>, DoubleArray> minimzer, final double tol) { final DoubleArray start = DoubleArray.of(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0); final DoubleArray solution = minimzer.minimize(MinimizationTestFunctions.COUPLED_ROSENBROCK, MinimizationTestFunctions.COUPLED_ROSENBROCK_GRAD, start); for (int i = 0; i < solution.size(); i++) { assertEquals(1.0, solution.get(i), tol); } } protected void assertSolvingCoupledRosenbrockWithoutGradient(final MinimizerWithGradient<Function<DoubleArray, Double>, Function<DoubleArray, DoubleArray>, DoubleArray> minimzer, final double tol) { final DoubleArray start = DoubleArray.of(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0); final DoubleArray solution = minimzer.minimize(MinimizationTestFunctions.COUPLED_ROSENBROCK, start); for (int i = 0; i < solution.size(); i++) { assertEquals(1.0, solution.get(i), tol); } } }