List of usage examples for org.apache.commons.math3.analysis MultivariateVectorFunction MultivariateVectorFunction
MultivariateVectorFunction
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; }