Need for Classes
Modules are connected. The information passed between these
Modules may be a class of type
Solutions in the case of an optimization or
Datain the case of learning
Modules look similar, and someone writing a new
Module doesn't want to implement all interface methods by hand.
For these cases, we wrote the abstract classes
Optimizers in the case of an optimization algorithm
Problems in the case of an optimization problem
Learners in the case of a learning algorithm
These classes already implement most of the necessary methods. A writer of an optimizer just has to implement the algorithm itself and no other details such as checking or connecting.
Similarly, a writer of a problem just has to implement the
evaluate(...) method of the
In a learner, the method to override is
run() . It executes the learning algorithm.