Example usage for org.apache.commons.math3.optim SimpleVectorValueChecker SimpleVectorValueChecker

List of usage examples for org.apache.commons.math3.optim SimpleVectorValueChecker SimpleVectorValueChecker

Introduction

In this page you can find the example usage for org.apache.commons.math3.optim SimpleVectorValueChecker SimpleVectorValueChecker.

Prototype

public SimpleVectorValueChecker(final double relativeThreshold, final double absoluteThreshold) 

Source Link

Document

Build an instance with specified thresholds.

Usage

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);

}