/* * Copyright (c) 2012 Diamond Light Source Ltd. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package uk.ac.diamond.scisoft.analysis.fitting; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import uk.ac.diamond.scisoft.analysis.optimize.ApacheOptimizer; import uk.ac.diamond.scisoft.analysis.optimize.ApacheOptimizer.Optimizer; import uk.ac.diamond.scisoft.analysis.optimize.IOptimizer; @RunWith(Parameterized.class) public class ApacheFittingTest extends AbstractFittingTestBase { static final long SEED = 12357L; private Optimizer o; @Parameters public static Collection<Object[]> data() { Object[][] data = new Object[][] { // {Optimizer.GAUSS_NEWTON}, {Optimizer.SIMPLEX_MD}, {Optimizer.SIMPLEX_NM}, // {Optimizer.POWELL}, // bad fit {Optimizer.BOBYQA}, // {Optimizer.CMAES}, // bad fit // {Optimizer.CONJUGATE_GRADIENT}, // does not work for PseudoVoigt and PearsonVII {Optimizer.LEVENBERG_MARQUARDT}, // {Optimizer.GAUSS_NEWTON}, }; return Arrays.asList(data); } static { deltaFactor = new HashMap<String, int[]>(); deltaFactor.put(GAUSSIAN, new int[] {1, 1}); deltaFactor.put(LORENTZIAN, new int[] {4, 6}); deltaFactor.put(PEARSON_VII, new int[] {1, 2}); deltaFactor.put(PSEUDO_VOIGT, new int[] {1, 7}); } public ApacheFittingTest(Optimizer optimizer) { o = optimizer; } @Override public IOptimizer createOptimizer() { ApacheOptimizer opt = new ApacheOptimizer(o); opt.seed = SEED; return opt; } }