/*
* UncminOptimizerConfiguration.java
*
* Created on May 28, 2002, 11:22 AM
*/
package hep.aida.ref.optimizer.uncmin;
/**
*
* Implementation of IOptimizerConfiguration for the Uncmin optimizer
*
* @author Tony Johnson, Victor Serbo, Max Turri
*
*/
public class UncminOptimizerConfiguration extends hep.aida.ref.optimizer.AbstractOptimizerConfiguration {
/**
* The methods available in Uncmin.
*
*/
public final static String LINE_SEARCH = "LIN";
public final static String DOUBLE_DOGLEG = "DOU";
public final static String MORE_HEBDON = "MOR";
/**
* The kind of strategies available in Uncmin.
* With the LOW_CALL_STRATEGY (default) the Hessian is evaluated
* by secant update rather than analytically or by finite difference.
* The option with "_CHECK" enables some authomatic checks.
*
*/
public final static int LOW_CALL_STRATEGY = 0;
public final static int HIGH_CALL_STRATEGY = 1;
public final static int LOW_CALL_STRATEGY_CHECK = 2;
public final static int HIGH_CALL_STRATEGY_CHECK = 3;
/** Creates a new instance of UncminOptimizerConfiguration */
public UncminOptimizerConfiguration() {
// setTolerance(1.e-10);
setTolerance(0.00001);
setMaxIterations(50);
setMethod(LINE_SEARCH);
setStrategy(LOW_CALL_STRATEGY);
// setStrategy(HIGH_CALL_STRATEGY);
}
/**
* Set the method to be used by the optimizer in the optimization procedure.
* @param method The method to be adapted.
*
*/
public void setMethod(String method) {
method = method.toUpperCase();
if ( method.startsWith(LINE_SEARCH) || method.startsWith(DOUBLE_DOGLEG) || method.startsWith(MORE_HEBDON) )
super.setMethod(method);
else
throw new IllegalArgumentException("Unsupported method : "+method);
}
/**
* Set the strategy to be used by the optimizer in the optimization procedure.
* @param strategy The strategy.
*
*/
public void setStrategy(int strategy) {
switch ( strategy ) {
case LOW_CALL_STRATEGY:
case HIGH_CALL_STRATEGY:
case LOW_CALL_STRATEGY_CHECK:
case HIGH_CALL_STRATEGY_CHECK:
super.setStrategy(strategy);
break;
default:
throw new IllegalArgumentException("Unsupported strategy : "+strategy);
}
}
public void setPrecision( double precision ) {
throw new UnsupportedOperationException();
}
public void setErrorDefinition(int errorDefinition) throws java.lang.IllegalArgumentException {
}
public int errorDefinition() {
return Integer.MIN_VALUE;
}
}