@Override public void setFunction(FunctionNtoS function, FunctionNtoN gradient, double minFunctionValue) { this.functionCost = function; if( gradient == null ) this.functionGradient = FactoryNumericalDerivative.gradientForwards(function); else this.functionGradient = gradient; this.minimumFunctionValue = minFunctionValue; }
public TriangulateRefineEpipolarLS(double convergenceTol, int maxIterations) { this.maxIterations = maxIterations; this.convergenceTol = convergenceTol; minimizer = FactoryOptimization.levenbergMarquardt( null,false); }
/** * <p>Checks for convergence using f-test. f-test is defined differently for different problems</p> * * @return true if converged or false if it hasn't converged */ protected boolean checkConvergenceFTest(double fx , double fx_prev ) { if( fx_prev < fx ) throw new OptimizationException("Score got worse. Shoul have been caught earlier!"); // f-test. avoid potential divide by zero errors ftest_val = 1.0-fx/fx_prev; // for print later on return config.ftol * fx_prev >= fx_prev - fx; }
@Override public double getFitScore() { return minimizer.getFunctionValue(); } }
@Test public void gradient() { SimpleS f = new SimpleS(); SimpleGradient g = new SimpleGradient(); assertTrue(DerivativeChecker.gradient(f,g,new double[]{2,4.5},1e-5)); }
public void setVerbose( PrintStream out , int level ) { this.verbose = out; if( level != 0 ) this.lineSearch.setVerbose(out,level); }
@Override public double getFitScore() { return minimizer.getFunctionValue(); }
public LeastSquaresTriangulateCalibrated( double convergenceTol, int maxIterations) { this.convergenceTol = convergenceTol; this.maxIterations = maxIterations; minimizer = FactoryOptimization.leastSquareLevenberg(1e-3); }
public TrivialLeastSquaresResidual( double a, double b) { for( int i = 0; i < 3; i++ ) { f[i] = model(a,b,i); } }
@Override public UnconstrainedMinimization createAlgorithm() { return FactoryOptimization.quasiNewtonBfgs(null); } }
@Override public double getFitScore() { return minimizer.getFunctionValue(); } }
public TriangulateRefineMetricLS(double convergenceTol, int maxIterations) { this.convergenceTol = convergenceTol; this.maxIterations = maxIterations; minimizer = FactoryOptimization.levenbergMarquardt(null,false); }
@Override public void setFunction(FunctionNtoS function, FunctionNtoN gradient, double minFunctionValue) { this.functionCost = function; if( gradient == null ) this.functionGradient = FactoryNumericalDerivative.gradientForwards(function); else this.functionGradient = gradient; this.minimumFunctionValue = minFunctionValue; }
/** * <p>Checks for convergence using f-test. f-test is defined differently for different problems</p> * * @return true if converged or false if it hasn't converged */ protected boolean checkConvergenceFTest(double fx , double fx_prev ) { if( fx_prev < fx ) throw new OptimizationException("Score got worse. Shoul have been caught earlier!"); // f-test. avoid potential divide by zero errors ftest_val = 1.0-fx/fx_prev; // for print later on return config.ftol * fx_prev >= fx_prev - fx; }
public void setVerbose( PrintStream out , int level ) { this.verbose = out; if( level != 0 ) this.lineSearch.setVerbose(out,level); }
public LeastSquaresTriangulateEpipolar(double convergenceTol, int maxIterations) { this.maxIterations = maxIterations; this.convergenceTol = convergenceTol; minimizer = FactoryOptimization.leastSquareLevenberg( 1e-3); }
@Override public void process(double[] input, double[] output) { double a=input[0]; double b=input[1]; for( int i = 0; i < 3; i++ ) { output[i] = f[i] - model(a,b,i); } }
@Override public double getFitScore() { return minimizer.getFunctionValue(); } }
public TriangulateRefineProjectiveLS(double convergenceTol, int maxIterations) { this.convergenceTol = convergenceTol; this.maxIterations = maxIterations; minimizer = FactoryOptimization.levenbergMarquardt(null,false); }
public double getThreeViewError() { return optimizer.getFunctionValue(); }