Hi. The BOBYQA optimizer takes simple bound contraints into account: lowerBound(i) <= p(i) <= upperBound(i) 0 <= i < n where "n" is the problem dimension.
The parent class ("BaseMultivariateRealOptimizer") currently mandates the following "optimize" method: ---CUT--- RealPointValuePair optimize(int maxEval, FUNC f, GoalType goalType, double[] startPoint); ---CUT--- I think that the bounds are arguments that should be passed through that method. The current method definition is a special case: no bound constraints (or, equivalently, all lower bounds = -infinity, all upper bounds = +infinity). Thus, it seems that adding the following to the API ---CUT--- RealPointValuePair optimize(int maxEval, FUNC f, GoalType goalType, double[] startPoint, double[] lowerBounds, double[] upperBounds); ---CUT--- is all there is to do in order to accomodate algorithms like BOBYQA. I'll then add the boiler plate code the concrete base class ("BaseAbstractScalarOptimizer") so that subclasses can access the bounds, similar to what is done for the "startPoint" argument. The concrete implementation of the first "optimize" will just call the new method with "lowerBounds" and "upperBounds" set to null. Is that OK? Best regards, Gilles --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org