General: Algorithm-Based - Component-Based - Programming hints - EO documentation

Local: Introduction - Continuators - Combined continuators - Checkpoints - Statistics - Monitors - Updaters


What is Checkpointing about?
Evolutionary Algorithms are almost all timely ticked, the basic time unit being what is called a generation. EO checkpointing mechanism allow you to program things that you want to be done at the end of every generation. This includes deciding to stop, outputing some statistics on the current state of the algorithm,  updating some dynamical variables of your algorithm, saving the population to disk, ...

EO classes described in this page:



Continuators are functors that compute stopping critera. They receive a population and return a boolean value which is set to false only when some stopping vriterion is met. All algorithms in EO have a loop that goes do{...}while(continuator(pop)which means that the algorithm stops only when the continuator returns false.

Interface:  The abstract class for computing stopping conditions is eoContinue, and the interface for its operator() is

                           bool operator()(const eoPop<EOT>& )

which you could have guessed from the inheritance diagram for class eoContinue, as you see there that eoContinue derives from class eoUF<const eoPop<EOT>&, bool>.

Using a continuator:
You can find an first example of using a continuator in the code for FirstBitEA ior more sophisticated continue conditions in  Lesson2.
If you want to find out how it is used inside an algorithm, go and see for instance in eoSGA, the simplest EA within EO.

Writing a continuator:
There are only two things to modify in the template class definitions provided (apart from the name of the class you are creating!)

Existing continuators: Of course you can find out all existing (non-virtual!) subclasses of eoContinue by looking at its  inheritance diagram. But you might find it more convenient to have them listed here:

Combining continuators:



Using a checkpoint: An eoCheckPoint being an eoContinue, its usage is exactly the same. However, an eoCheckPoint will actually do many more things than an eoContinue before returning its boolean result as an eoContinue.

Writing a checkpoint:
This is something you should never have to do. However, should you feel you have to do it, please do - and send us both the reasons that lead you to that (what is it you couldn't do with existing eoCheckPoint), and the resulting code, of course.



Using statistics:

Writing a statitic:



Using monitors:

Writing a monitor:



Using updaters:

Writing an updater:

Local: Introduction - Continuators - Combined continuators - Checkpoints - Statistics - Monitors - Updaters

General: Algorithm-Based - Component-Based - Programming hints -EO documentation

Marc Schoenauer

Last modified: Fri Dec. 8 2000