List of usage examples for org.apache.commons.math3.optim SimpleVectorValueChecker SimpleVectorValueChecker
public SimpleVectorValueChecker(final double relativeThreshold, final double absoluteThreshold)
From source file:eu.crisis_economics.abm.markets.clearing.heterogeneous.LevenbergMarquardtClearingAlgorithm.java
@Override public double applyToNetwork(final MixedClearingNetwork network) { Preconditions.checkNotNull(network); final VectorCostFunction function = super.getVectorCostFunction(network); final MultivariateJacobianFunction model = LeastSquaresFactory.model(function, super.getJacobianMatrixFunction(network)); final RealVector observed = new ArrayRealVector(super.calculateTarget(network)), start = new ArrayRealVector(network.getNumberOfEdges()); for (int i = 0; i < network.getNumberOfEdges(); ++i) start.setEntry(i, network.getEdges().get(i).getMaximumRateAdmissibleByBothParties()); start.set(1.0);// www . j ava2 s . com final ConvergenceChecker<LeastSquaresProblem.Evaluation> evaluationChecker = LeastSquaresFactory .evaluationChecker(new SimpleVectorValueChecker(relErrorTarget, absErrorTarget)); final LeastSquaresProblem problem = LeastSquaresFactory.create(model, observed, start, evaluationChecker, maximumEvaluations, maximumIterations); final LevenbergMarquardtOptimizer optimizer = new LevenbergMarquardtOptimizer(); final Optimum result = optimizer.optimize(problem); final double residualCost = result.getRMS(); System.out.println("Network cleared: residual cost: " + residualCost + "."); return residualCost; }
From source file:edu.ucsf.valelab.saim.calculations.SaimFunctionFitter.java
@Override protected LeastSquaresProblem getProblem(Collection<WeightedObservedPoint> points) { final int len = points.size(); final double[] target = new double[len]; final double[] weights = new double[len]; int i = 0;//from w ww. j a va 2 s . c o m for (WeightedObservedPoint point : points) { target[i] = point.getY(); weights[i] = point.getWeight(); i += 1; } final AbstractCurveFitter.TheoreticalValuesFunction model = new AbstractCurveFitter.TheoreticalValuesFunction( saimFunction_, points); ConvergenceChecker<PointVectorValuePair> checker = new SimpleVectorValueChecker(1.0e-6, 1.0e-10); // this parameter validator appears to have the same effect // as using the SaimFunctionFitterWithBounds double[] lowerBounds = { 0.0, 0.0, 0.0 }; double[] upperBounds = { 64000, 64000, 1000 }; ParameterValidator spv = new SaimParameterValidator(lowerBounds, upperBounds); return new LeastSquaresBuilder().maxEvaluations(Integer.MAX_VALUE).maxIterations(maxIterations_) .lazyEvaluation(true). //checker(checker). start(guess_).target(target).parameterValidator(spv).weight(new DiagonalMatrix(weights)) .model(model.getModelFunction(), model.getModelFunctionJacobian()).build(); }
From source file:de.thkwalter.et.ortskurve.Ausgleichsproblem.java
/** * Dieser Konstruktor initialisiert den Gau-Newton-Algorithmus. * /*w ww . j av a 2 s . c o m*/ * @param messpunkte Die in den verschiedenen Betriebspunkten gemessenen Stromstrken (in A) im Format (-Im I1, Re I1). */ public Ausgleichsproblem(Vector2D[] messpunkte) { // Die in den verschiedenen Betriebspunkten gemessenen Stromstrken (in A) im Format (-Im I1, Re I1) werden // initialisiert. this.messpunkte = messpunkte; // Der Gau-Newton-Algorithmus wird erzeugt. Es wird festgelegt, dass der Algorithmus QR-Zerlegung benutzen soll. // Die Lsung des Ausgleichsproblems gilt als gefunden, wenn sich kein Residuum zwischen zwei Iterationsschritten um // mehr als 1 Prozent ndert. this.gaussNewtonOptimizer = new GaussNewtonOptimizer(false, new SimpleVectorValueChecker(0.01, -1.0)); // Die Zielwerte und die Gewichte in der Ausgleichsrechnung werden erzeugt. this.gewichte = new double[messpunkte.length]; this.zielwerte = new double[messpunkte.length]; for (int i = 0; i < messpunkte.length; i++) { gewichte[i] = 1.0; zielwerte[i] = 0.0; } }
From source file:org.orekit.propagation.conversion.AbstractPropagatorConverter.java
/** Build a new instance. * @param builder propagator builder/*from w w w. ja va 2 s . c o m*/ * @param threshold absolute convergence threshold for optimization algorithm * @param maxIterations maximum number of iterations for fitting */ protected AbstractPropagatorConverter(final PropagatorBuilder builder, final double threshold, final int maxIterations) { this.builder = builder; this.frame = builder.getFrame(); this.availableParameters = builder.getSupportedParameters(); this.optimizer = new LevenbergMarquardtOptimizer(); this.maxIterations = maxIterations; this.sample = new ArrayList<SpacecraftState>(); final SimpleVectorValueChecker svvc = new SimpleVectorValueChecker(-1.0, threshold); this.checker = LeastSquaresFactory.evaluationChecker(svvc); }