/*
*
* User level interface to the optimizer configuration.
*
* @author Tony Johnson, Victor Serbo, Max Turri
*
*/
package hep.aida.ext;
public interface IOptimizerConfiguration {
/**
* The error definition for the optimizers.
*
*/
public static final int DEFAULT_ERROR = 0;
public static final int CHI2_FIT_ERROR = 1;
public static final int LOGL_FIT_ERROR = 2;
/**
* The printout levels for the optimizer.
*
*/
public static final int NO_OUTPUT = -1;
public static final int NORMAL_OUTPUT = -2;
public static final int DETAILED_OUTPUT = -3;
/**
* Set the optimizer's tolerance. The tolerance is used to determine if the
* optimizer converged to an optimal solution.
* @param tolerance The tolerance.
* @return <code>true</code> if the tolerance was set succesfully,
* <code>false</code> otherwise.
*
*/
public void setTolerance(double tolerance) throws IllegalArgumentException;
/**
* Get the optimizer's tolerance.
* @return The tolerance.
*
*/
public double tolerance();
/**
* Set the precision required in the optimizer's calculations.
* The highest possible is the machine's precision.
* @param precision The precision.
* @return <code>true</code> if the precision was set succesfully,
* <code>false</code> otherwise.
*
*/
public void setPrecision(double precision) throws IllegalArgumentException;
/**
* Get the internal precision of the Optimizer.
* @return The precision.
*
*/
public double precision();
/**
* Tell the optmizer what kind of errors to calculate.
* @param errDef The type of error to be calculated.
*
*/
public void setErrorDefinition(int errDef) throws IllegalArgumentException;
/**
* Get the optimizer's error definition.
* @return The error definition.
*
*/
public int errorDefinition();
/**
* Set the maximum number of iterations to be performed in the optimization procedure.
* If the optimizer did not converge before maxIter iterations the optimization will stop.
* @param maxIter The maximum number of iterations.
*
*/
public void setMaxIterations(int maxIter) throws IllegalArgumentException;
/**
* Get the maximum number of iterations allowed before exiting the optimization procedure.
* @return The maximum number of iterations.
*
*/
public int maxIterations();
/**
* Set the printout level.
* @param printLevel The printout level.
* @return <code>true</code> if the level was set succesfully,
* <code>false</code> otherwise.
*
*/
public void setPrintLevel(int printLevel) throws IllegalArgumentException;
/**
* Get the printout level.
* @return the printout level.
*
*/
public int printLevel();
/**
* Set the title for the current optimization problem.
* @param title The title.
*
*/
public void setTitle(java.lang.String title);
/**
* Get the title.
* @return The title.
*
*/
public String title();
/**
* Specify if the optimizer has to use the gradient as provided by the IFunction.
* @param useGradient <code>true</code> if the Optimizer has to use the IFunction's
* calculation of the gradient, <code>false</code> otherwise.
*
*/
public void setUseFunctionGradient(boolean useGradient);
/**
* See if the optimizer uses the IFunction's evaluation of the gradient.
* @return <code>true</code> if the optimizer uses the IFunction's evaluation of the gradient.
*
*/
public boolean useFunctionGradient();
/**
* Specify if the optimizer has to use the Hessian as provided by the IFunction.
* @param useHessian <code>true</code> if the Optimizer has to use the IFunction's
* calculation of the Hessian, <code>false</code> otherwise.
*
*/
public void setUseFunctionHessian(boolean useHessian);
/**
* See if the optimizer uses the IFunction's evaluation of the Hessian.
* @return <code>true</code> if the optimizer uses the IFunction's evaluation of the Hessian.
*
*/
public boolean useFunctionHessian();
/**
* Set the strategy to be used by the optimizer in the optimization procedure.
* @param strategy The strategy.
*
*/
public void setStrategy(int strategy) throws IllegalArgumentException;
/**
* Get the strategy used by the optimizer in the optimization procedure.
* @return The strategy.
*
*/
public int strategy();
/**
* Set the method to be used by the optimizer in the optimization procedure.
* @param method The method to be adapted.
*
*/
public void setMethod( java.lang.String method ) throws IllegalArgumentException;
/**
* Get the method used by the optimizer in the optimization procedure.
* @return The method used.
*
*/
public String method();
}