Gilles created MATH-874: --------------------------- Summary: New API for optimizers Key: MATH-874 URL: https://issues.apache.org/jira/browse/MATH-874 Project: Commons Math Issue Type: Improvement Affects Versions: 3.0 Reporter: Gilles Assignee: Gilles Priority: Minor Fix For: 3.1, 4.0
I suggest to change the signatures of the "optimize" methods in * {{UnivariateOptimizer}} * {{MultivariateOptimizer}} * {{MultivariateDifferentiableOptimizer}} * {{MultivariateDifferentiableVectorOptimizer}} * {{BaseMultivariateSimpleBoundsOptimizer}} Currently, the arguments are * the allowed number of evaluations of the objective function * the objective function * the type of optimization (minimize or maximize) * the initial guess * optionally, the lower and upper bounds A marker interface: {code} public interface OptimizationData {} {code} would in effect be implemented by all input data so that the signature would become (for {{MultivariateOptimizer}}): {code} public PointValuePair optimize(MultivariateFunction f, OptimizationData... optData); {code} A [thread|http://markmail.org/message/fbmqrbf2t5pb5br5] was started on the "dev" ML. Initially, this proposal aimed at avoiding to call some optimizer-specific methods. An example is the "setSimplex" method in "o.a.c.m.optimization.direct.SimplexOptimizer": it must be called before the call to "optimize". Not only this departs form the common API, but the definition of the simplex also fixes the dimension of the problem; hence it would be more natural to pass it together with the other parameters (i.e. in "optimize") that are also dimension-dependent (initial guess, bounds). Eventually, the API will be simpler: users will # construct an optimizer (passing dimension-independent parameters at construction), # call "optimize" (passing any dimension-dependent parameters). -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira