Following the thread Monitoring iterative algorithms, here is a first attempt at defining a general enough framework for iterative algorithms at large. At the moment, the classes provide support for
- maximum number of iterations
- events handling
- initialization event (prior to entering the main loop),
- iteration event (after completion of one iteration),
- termination event (after termination of the main loop).
These classes do not yet provide support for a stopping criterion.
Some points worth to note
- For the time being, the classes are part of the o.a.c.m.linear package.
- For the time being, IterativeAlgorithm.incrementIterationCount() throws a TooManyEvaluationsException. If the proposed new feature is integrated into CM, then a proper TooManyIterationsException should be created, from which the former could derive.