commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gilles (JIRA)" <>
Subject [jira] Created: (MATH-397) Inconsistencies between "optimization.univariate" and "optimization.general"
Date Tue, 27 Jul 2010 15:19:16 GMT
Inconsistencies between "optimization.univariate" and "optimization.general"

                 Key: MATH-397
             Project: Commons Math
          Issue Type: Improvement
    Affects Versions: 2.1
            Reporter: Gilles
            Assignee: Gilles
            Priority: Minor
             Fix For: 2.2

I think that we could make the usage (from the developer's point-of-view) of "optimization.univariate"
more similar to what is done in "optimization.general". At first this looked like a small
change but then I discovered that "AbstractUnivariateRealOptimizer" competes with "ConvergingAlgorithmImpl"
for some functionality, and that everything could be more coherent by enforcing the use of
accessors and avoiding "protected" fields.

Moreover the logic inside  "AbstractUnivariateRealOptimizer" seems convoluted and one change
leading to another...

Currently only "BrentOptimizer" inherits from "AbstractUnivariateRealOptimizer", so I hope
that it's OK to revise that class.

In "ConvergingAlgorithmImpl", I propose to add a method:
protected void incrementIterationsCounter()
    throws ConvergenceException {
    if (++iterationCount > maximalIterationCount) {
        throw new ConvergenceException(new MaxIterationsExceededException(maximalIterationCount));
This is still not the best since in "BaseAbstractScalarOptimizer", we have
protected void incrementIterationsCounter()
    throws OptimizationException {
    if (++iterations > maxIterations) {
        throw new OptimizationException(new MaxIterationsExceededException(maxIterations));
(thus: two codes for the same problem, throwing different exceptions).

Then it seems that there is also a functionality overlap between "ConvergingAlgorithm" and

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message