Obtaining the Pareto front of a MOP is the main goal of multi-
objective optimization. In theory, a Pareto front could contain a
large number (or even infinitely many) points. In practice, a usable
approximate solution will only contain a limited number of them;
thus, an important goal is that they should be as close as possible
to the exact Pareto front (convergence) and uniformly spread
(diversity), otherwise, they would not be very useful to the decision
maker. Closeness to the Pareto front ensures that we are dealing
with optimal solutions, while a uniform spread of the solutions
means that we have made a good exploration of the search space
and no regions are left unexplored.
3. Architecture of jMetal
jMetal has been designed following an object-oriented architec-
ture which facilitates the inclusion of new components and the re-
use of existing ones. It provides the user with a set of base classes
which can be used to design new algorithms, and to implement
problems or complex operators, etc. This section is aimed at
describing the classes composing the core of jMetal.
Fig. 1 depicts an UML diagram including the base classes within
jMetal. The working principle jMetal is based in relies in that an
Algorithm solves a Problem using one (and possibly more) Solution-
Set and a set of Operator objects. As we can see in the figure, our
tool contains classes for representing those and some other
elements.
A generic terminology to name the classes within jMetal has
been employed in order to make them general enough to be used
in any metaheuristic. This way, in the context of evolutionary
algorithms, populations and individuals correspond to SolutionSet
and Solution jMetal classes, respectively; the same can be applied
to particle swarm optimization algorithms concerning the con-
cepts of swarm and particles.
Class Algorithm represents the superclass for all the optimizers:
whatever metaheuristic included in jMetal has to inherit from it.
An instance object of Algorithm may require some application-
specific parameters, that can be added and accessed by using the
methods addParameter () and getParameter (), respectively. Simi-
larly, an algorithm may also make use of some operators. For
example, genetics algorithms typically use operators for recombi-
nation and selection of individuals. There are also methods for
incorporating operators (addOperator ()) and to get them
(getOperator ()). The main method in Algorithm is execute (), which
starts the execution of the algorithm.
As its name suggests, class SolutionSet represents a set of
Solution objects. Each Solution object has associated a type
(SolutionType) and it is composed of an array of Variable objects.
This last is a superclass aimed at describing different kinds of
representations for solutions. The proposed scheme by jMetal is
very flexible because a Solution object is not restricted to contain
variables of the same representation; instead, it can be composed
of an array of mixed variable types. Furthermore, it is also
Fig. 1. General architecture of jMetal.
762 J.J. Durillo, A.J. Nebro / Advances in Engineering Software 42 (2011) 760–771