François Laferrière created MATH-1657:
-----------------------------------------

             Summary: Enhance management the objective function of optimizer
                 Key: MATH-1657
                 URL: https://issues.apache.org/jira/browse/MATH-1657
             Project: Commons Math
          Issue Type: Improvement
          Components: legacy
    Affects Versions: 4.0-beta1
            Reporter: François Laferrière


In MultivariateOptimizer class, objective function is not accessible once set: 
only computeObjectiveValue(double[] params) allows to access the value. This is 
probably to ensure that the evaluation counter is always properly incremented.

But it is not very convenient for my purpose where I need to apply operators to 
the function. For instance

     double[] gradient = gradientOperator.operate(getObjectiveFunction())

I suggest to wrap the function into an anonymous MultivariateFunction at 
setting time:

    protected void setObjectiveFunction(MultivariateFunction func) {
        function = new MultivariateFunction() {
            @Override
            public double value(double[] point) throws IllegalArgumentException 
{
                incrementEvaluationCount();
                return func.value(point);
            }
        };
    }

So that we can still have at least a protected accessor

    protected MultivariateFunction getObjectiveFunction() {
        return function;
    }

This is only an extension that has no impact on current API.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to