Main ideas of the library
- Programming environment
The library is implemented in standard C++ thus it should be "almost portable". Note that it uses stl (standard template library) which may not be available in old C++ compilers.
- Multiple-objective metaheuristics
By multiple-objective metaheuristics we understand methods whose goal is to generate a set of approximately Pareto-optimal (efficient, non-dominated) solutions in a single run.
By metaheuristics we understand for example the following algorithms:
- (hybrid) genetic/evolutionary algorithms,
- local search,
- simulated annealing,
- tabu search,
- ant algorithms,
- etc.
- Metaheuristics as algorithm templates
We interpret metaheuristics as algorithm templates. They define general algorithmic scheme but they have to instantiated in order to obtain a heuristic for a given problem. The instantiation consists in definition of a number of operators used by the method. For example genetic algorithms require three problem specific operators: construction of initial solution, recombination (crossover) and mutation.
In the library each algorithm corresponds to a template class. You insatiate the algorithm template class with a problem specific class corresponding to solution of the problem. The solution class should implement in its methods problem specific operators required by the algorithm. You base your solution class on TMOMHSolution which contains virtual methods that should be overridden with methods implementing the problem specific operators.
- Solution encoding
The library does not assume any solution encoding. While adapting the algorithms from the library to a given problem you should define appropriate encoding in fields of the solution class. Note that the multiple objective algorithms never access these fields directly. They only call appropriate operators that access these fields.
- The use of external non-dominated set
The library assumes that each algorithm stores the potentially Pareto-optimal (non-dominated, efficient) solutions in an external non-dominated set. This is assumed also by most of the algorithms. We have decided, however, to extend some methods e.g. NSGA to update the external non-dominated set. This never deteriorates the results obtained in the same number of iterations (but we admit that it may slow down each iteration of the method).
- Scaling of objective values
In practice objectives often have very different ranges. Most algorithms do not take it into account. MOMHLib++ takes it into account in all algorithms that may be affected by scaling of objectives. This concerns all algorithms that use scalarizing functions or distance measures in objective space. The objectives are scaled dynamically with ranges in the current external non-dominated set.