MHTB has the following components:
- MATLAB code: This component contains the MATLAB function the user has to call to run the toolbox, the functions to launch and stop the evaluation server, the ones that configure and run the libraries, the objective functions and operators implemented by the user, as well as a number of auxiliary functions. All these functions are explained in detail in the user's guide.
- Specific code: These are classes added to or modified in the libraries to allow their communication with the toolbox. A developer will have to implement these classes when integrating his library into our toolbox.
- Evaluation server: This component connects the previous two ones, that is, MATLAB and the libraries.
Figure 1 graphically shows these components and the way they intercommunicate to solve a problem. There are MATLAB functions to launch and stop the evaluation server and a specific function for each integrated library to configure and execute it. Once the server has been launched and the library is running, they communicate with each other in the following way: when the library wants to evaluate a solution (or apply an operator) it sends it to the server. The server evaluates this solution in MATLAB and sends its fitness value back to the library.
Figure 1: Components of the toolbox and relationships among them.
The current version of MHTB makes the following libraries available to MATLAB users:
- ssGA: This library, written in Java, implements a steady-state Genetic Algorithm. It only admits binary encoding for the solutions, can not be distributed and does not support the addition of new operators.
- jEA: This is a Java library of Evolutionary Algorithms. It admits binary, integer (with operators to deal with permutations) and real encoding for the solutions. It offers a large number of operators, and new ones can be added. It can also be parallelized.
- MALLBA: This is a library of skeletons for combinatorial optimization implemented in C++. It offers exact, heuristic and hybrid methods. We have integrated six of its skeletons in our toolbox (for more information, see the user's guide). This library can be parallelized and supports the addition of new operators.