Example usage for org.apache.commons.math3.analysis MultivariateVectorFunction MultivariateVectorFunction

List of usage examples for org.apache.commons.math3.analysis MultivariateVectorFunction MultivariateVectorFunction

Introduction

In this page you can find the example usage for org.apache.commons.math3.analysis MultivariateVectorFunction MultivariateVectorFunction.

Prototype

MultivariateVectorFunction

Source Link

Usage

From source file:com.itemanalysis.psychometrics.analysis.AbstractDiffFunction.java

public MultivariateVectorFunction gradient() {
    return new MultivariateVectorFunction() {
        public double[] value(double[] point) {
            return gradient(point);
        }/*from w  w w.  java 2  s  .  c  om*/
    };
}

From source file:com.itemanalysis.psychometrics.analysis.AbstractMultivariateFunction.java

public MultivariateVectorFunction gradient() {
    return new MultivariateVectorFunction() {
        public double[] value(double[] point) {
            return gradientAt(point);
        }/*from   w  w w .  j ava  2  s.  c  o  m*/
    };
}

From source file:net.sf.tweety.math.opt.solver.ApacheCommonsNonLinearConjugateGradientOptimizer.java

@Override
public Map<Variable, Term> solve(ConstraintSatisfactionProblem problem) throws GeneralMathException {
    // only optimization problems
    if (!(problem instanceof OptimizationProblem))
        throw new IllegalArgumentException("Only optimization problems allowed for this solver.");
    OptimizationProblem p = (OptimizationProblem) problem;
    // no constraints allowed
    if (!p.isEmpty())
        throw new IllegalArgumentException(
                "Only optimization problems without constraints allowed for this solver.");
    final Term target = p.getTargetFunction();
    final List<Variable> vars = new ArrayList<Variable>(target.getVariables());
    MultivariateFunction acTarget = new MultivariateFunction() {
        @Override//  w  w w  .  j av  a  2  s . c om
        public double value(double[] arg0) {
            return target.replaceAllTerms(arg0, vars).doubleValue();
        }
    };
    final Term[] targetGradient = new Term[vars.size()];
    for (int i = 0; i < vars.size(); i++)
        targetGradient[i] = target.derive(vars.get(i));
    MultivariateVectorFunction acTargetGradient = new MultivariateVectorFunction() {
        @Override
        public double[] value(double[] arg0) throws IllegalArgumentException {
            double[] result = new double[arg0.length];
            for (int i = 0; i < arg0.length; i++)
                result[i] = targetGradient[i].replaceAllTerms(arg0, vars).doubleValue();
            return result;
        }
    };
    // create solver
    NonLinearConjugateGradientOptimizer optimizer = new NonLinearConjugateGradientOptimizer(
            NonLinearConjugateGradientOptimizer.Formula.FLETCHER_REEVES,
            new SimplePointChecker<PointValuePair>(this.precision, this.precision));
    double[] s = new double[vars.size()];
    for (int i = 0; i < vars.size(); i++)
        s[i] = 0.5;
    PointValuePair val = optimizer.optimize(new ObjectiveFunction(acTarget),
            new ObjectiveFunctionGradient(acTargetGradient), new InitialGuess(s),
            p.getType() == OptimizationProblem.MAXIMIZE ? GoalType.MAXIMIZE : GoalType.MINIMIZE,
            new MaxEval(this.maxEval));
    Map<Variable, Term> result = new HashMap<Variable, Term>();
    for (int i = 0; i < vars.size(); i++)
        result.put(vars.get(i), new FloatConstant(val.getPoint()[i]));
    return result;
}

From source file:com.itemanalysis.psychometrics.cfa.MaximumLikelihoodEstimation.java

@Override
public MultivariateVectorFunction gradient() {
    return new MultivariateVectorFunction() {
        public double[] value(double[] point) {
            return gradientAt(point);
        }/* w  ww  .  j  av  a 2  s .  c o  m*/
    };
}

From source file:uk.ac.diamond.scisoft.analysis.optimize.ApacheOptimizer.java

public MultivariateVectorFunction createGradientFunction() {
    MultivariateVectorFunction f = new MultivariateVectorFunction() {

        @Override//from   w  w  w .  ja  va 2  s.  com
        public double[] value(double[] parameters) throws IllegalArgumentException {
            double[] result = new double[n];

            for (int i = 0; i < n; i++) {
                result[i] = calculateResidualDerivative(params.get(i), parameters);
            }
            return result;
        }
    };

    return f;
}