Hello. On Mon, Nov 19, 2012 at 04:47:08PM -0500, Bruce A Johnson wrote: > On Nov 17, 2012, at 6:57 PM, Konstantin Berlin wrote: > > > There are numerous examples when the optimization might not have > > converged to the stopping condition, but the minimum discovered point > > is better than the starting point that was initially provided. The > > user should have the ability to at least decide if it is good enough, > > or use it as a starting point into a different optimization run. This > > is the behavior that most optimizers have, including MATLAB. > > > > This functionality important when you have a time constraint, where any > > improvement in result is better than no information at all. There are also > > non-convex regions of a function where the convergence rate is very slow, > > and you might want to stop. > > > > A simple modification for now is to just let > > org.apache.commons.math3.exception.TooManyEvaluationsException contain > > within it the best found solution so far. > > > > I agree that there are many situations where one is constrained by the amount > of resources one can throw at a problem and the user would like the best > solution given those resources (here, the maximum number of iterations) so I > fully support a solution that lets us get the best solution that has been > achieved. I wonder if it is possible, instead of using the exception, to > specify a convergence checker that checks not only the tolerances, but could > instead return success if the maximum number of iterations has been exceeded. > I realize this will look inappropriate to some, but using the convergence > checker in this way would be entirely up to the person calling it. If you > can get back the number of iterations used, then presumably if that is equal > to the max you'll know it hasn't really converged.
Your proposal is brilliant: problem solved (IMHO)! The convergence checkers are there to allow users to define their notion of convergence; and the API provides the current iteration count. We could add this feature in CM's "Simple...Checker" implementations by adding one constructor (and an if-block in the "converged" method) without touching the optimizers. The user who passes such a checker will indeed be aware of the implication: the algorithm might quietly terminate before reaching the optimal solution. Shall I 1. resolve the issue as "Not a Problem" (the user should implement his own custom checker) or 2. add the constructors in the checkers defined within CM and resolve as "Fixed"? Regards, Gilles --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org