/** * Configure the model function. * * @param value the model function value * @param jacobian the Jacobian of {@code value} * @return this */ public LeastSquaresBuilder model(final MultivariateVectorFunction value, final MultivariateMatrixFunction jacobian) { return model(LeastSquaresFactory.model(value, jacobian)); }
final int maxEvaluations, final int maxIterations) { return create(model(model, jacobian), new ArrayRealVector(observed, false), new ArrayRealVector(start, false),
/** * Configure the model function. * * @param value the model function value * @param jacobian the Jacobian of {@code value} * @return this */ public LeastSquaresBuilder model(final MultivariateVectorFunction value, final MultivariateMatrixFunction jacobian) { return model(LeastSquaresFactory.model(value, jacobian)); }
/** * Configure the model function. * * @param value the model function value * @param jacobian the Jacobian of {@code value} * @return this */ public LeastSquaresBuilder model(final MultivariateVectorFunction value, final MultivariateMatrixFunction jacobian) { return model(LeastSquaresFactory.model(value, jacobian)); }
final int maxEvaluations, final int maxIterations) { return create(model(model, jacobian), new ArrayRealVector(observed, false), new ArrayRealVector(start, false),
final int maxEvaluations, final int maxIterations) { return create(model(model, jacobian), new ArrayRealVector(observed, false), new ArrayRealVector(start, false),
/** * Perform Levenburg-Marquardt non-linear optimisation to get better * estimates of the parameters */ private void refine() { final LevenbergMarquardtOptimizer lm = new LevenbergMarquardtOptimizer(); final RealVector start = buildInitialVector(); final RealVector observed = buildObservedVector(); final int maxEvaluations = 1000; final int maxIterations = 1000; final MultivariateVectorFunction value = new Value(); final MultivariateMatrixFunction jacobian = new Jacobian(); final MultivariateJacobianFunction model = LeastSquaresFactory.model(value, jacobian); final Optimum result = lm.optimize(LeastSquaresFactory.create(model, observed, start, null, maxEvaluations, maxIterations)); updateEstimates(result.getPoint()); }
/** * Perform Levenburg-Marquardt non-linear optimisation to get better * estimates of the parameters */ private void refine() { final LevenbergMarquardtOptimizer lm = new LevenbergMarquardtOptimizer(); final RealVector start = buildInitialVector(); final RealVector observed = buildObservedVector(); final int maxEvaluations = 1000; final int maxIterations = 1000; final MultivariateVectorFunction value = new Value(); final MultivariateMatrixFunction jacobian = new Jacobian(); final MultivariateJacobianFunction model = LeastSquaresFactory.model(value, jacobian); final Optimum result = lm.optimize(LeastSquaresFactory.create(model, observed, start, null, maxEvaluations, maxIterations)); updateEstimates(result.getPoint()); }
@Override public Matrix refine(Matrix initial, List<? extends IndependentPair<? extends Point2d, ? extends Point2d>> data) { final LevenbergMarquardtOptimizer lm = new LevenbergMarquardtOptimizer(); final RealVector start = new ArrayRealVector(initial.getRowPackedCopy()); final RealVector observed = toRealVector(data); final int maxEvaluations = 1000; final int maxIterations = 1000; final MultivariateVectorFunction value = getValueFunction(data); final MultivariateMatrixFunction jacobian = getJacobianFunction(data); final MultivariateJacobianFunction model = LeastSquaresFactory.model(value, jacobian); final Optimum result = lm.optimize(LeastSquaresFactory.create(model, observed, start, null, maxEvaluations, maxIterations)); final Matrix improved = MatrixUtils.fromRowPacked(result.getPoint().toArray(), 3); MatrixUtils.times(improved, 1.0 / improved.get(2, 2)); return improved; } };
@Override public Matrix refine(Matrix initial, List<? extends IndependentPair<? extends Point2d, ? extends Point2d>> data) { final LevenbergMarquardtOptimizer lm = new LevenbergMarquardtOptimizer(); final RealVector start = new ArrayRealVector(initial.getRowPackedCopy()); final RealVector observed = toRealVector(data, false); final int maxEvaluations = 1000; final int maxIterations = 1000; final MultivariateVectorFunction value = getValueFunction(data); final MultivariateMatrixFunction jacobian = getJacobianFunction(data); final MultivariateJacobianFunction model = LeastSquaresFactory.model(value, jacobian); final Optimum result = lm.optimize(LeastSquaresFactory.create(model, observed, start, null, maxEvaluations, maxIterations)); final Matrix improved = MatrixUtils.fromRowPacked(result.getPoint().toArray(), 3); MatrixUtils.times(improved, 1.0 / improved.get(2, 2)); return improved; } },