You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gilles (JIRA)" <ji...@apache.org> on 2010/08/12 14:11:16 UTC
[jira] Issue Comment Edited: (MATH-397) Inconsistencies between
"optimization.univariate" and "optimization.general"
[ https://issues.apache.org/jira/browse/MATH-397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12897242#action_12897242 ]
Gilles edited comment on MATH-397 at 8/12/10 8:09 AM:
------------------------------------------------------
I'm about to create an {{IterativeAlgorithm}} interface and its corresponding "...Impl" class.
While at that I'd like to have the {{incrementIterationCount()}} method of that class throw an instance of a new {{TooManyIterationsException}} class that would be an _unchecked_ exception. I think that it would be fine that such an exception inherits from the standard {{IllegalStateException}} (passing through a yet-to-be-defined, localizable, {{MathIllegalStateException}}, of course...).
Do you agree?
> Inconsistencies between "optimization.univariate" and "optimization.general"
> ----------------------------------------------------------------------------
>
> Key: MATH-397
> URL: https://issues.apache.org/jira/browse/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:
> {code}
> protected void incrementIterationsCounter()
> throws ConvergenceException {
> if (++iterationCount > maximalIterationCount) {
> throw new ConvergenceException(new MaxIterationsExceededException(maximalIterationCount));
> }
> }
> {code}
> This is still not the best since in "BaseAbstractScalarOptimizer", we have
> {code}
> protected void incrementIterationsCounter()
> throws OptimizationException {
> if (++iterations > maxIterations) {
> throw new OptimizationException(new MaxIterationsExceededException(maxIterations));
> }
> }
> {code}
> (thus: two codes for the same problem, throwing different exceptions).
> Then it seems that there is also a functionality overlap between "ConvergingAlgorithm" and "ConvergenceChecker"...
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.