List of usage examples for org.apache.commons.math3.optim.nonlinear.scalar.noderiv NelderMeadSimplex NelderMeadSimplex
public NelderMeadSimplex(final int n, double sideLength)
From source file:edu.utexas.cs.tactex.tariffoptimization.OptimizerWrapperApacheAmoeba.java
@Override public TreeMap<Double, TariffSpecification> findOptimum(TariffUtilityEstimate tariffUtilityEstimate, int NUM_RATES, int numEval) { double[] startingVertex = new double[NUM_RATES]; // start from the fixed-rate tariff's offset //Arrays.fill(startingVertex, -0.5 * SIMPLEX_EDGE); //Arrays.fill(startingVertex, -1 * SIMPLEX_EDGE); // TODO if there are convergence issues, change these guessed thresholds //SimplexOptimizer optimizer = new SimplexOptimizer(1e-10, 1e-30); //SimplexOptimizer optimizer = new SimplexOptimizer(1e-4, 1e-4); //SimplexOptimizer optimizer = new SimplexOptimizer(1e-2, 10); SimplexOptimizer optimizer = new SimplexOptimizer(1e-3, 5); //SimplexOptimizer optimizer = new SimplexOptimizer(1e-2, 5); final PointValuePair optimum = optimizer.optimize(new MaxEval(numEval), new ObjectiveFunction(new OptimizerWrapperApacheObjective(tariffUtilityEstimate)), GoalType.MAXIMIZE, new InitialGuess(startingVertex), //new NelderMeadSimplex(NUM_RATES, -1 * SIMPLEX_EDGE)); new NelderMeadSimplex(NUM_RATES, SIMPLEX_EDGE));// should be positive since this reflects decrease in (negative) charges TreeMap<Double, TariffSpecification> eval2TOUTariff = new TreeMap<Double, TariffSpecification>(); eval2TOUTariff.put(optimum.getValue(), tariffUtilityEstimate.getCorrespondingSpec(optimum.getKey())); return eval2TOUTariff; }