µGP evolutionary core implements a layered architecture, built on the base concepts of Tagged Graph (TG), Constraints, and Constrained Tagged Graph (CTG).
The goal of a layered architecture is to neatly divide base concepts, such as the internal structure of individuals and the details of the constraints, from higher level concepts, more directly relating to the evolutionary method. Ideally the base classes will never be modified, but those using them will, to reflect the shifts in underlying concepts.
The TG is the base structure used in µGP, providing the foundation for every operation on the cultivated individuals. The instruction library describe the possible phenotypic content of an individual; in this way it provides a semantic for the TG, at the same time constraining the information that the graph can contain. The application of these constraints turns the Tagged Graph into a Constrained Tagged Graph.
Upon the CTG lies the Individual concept, implemented as a class. In µGP this is meant to be the lowest-level class subject to user modifications. These are principally meant to store additional data inside the individual, such as a hash signature or a pseudo-entropy measure. The dependence of the individual from the CTG, instead, is not questionable, since it directly affects the functioning of all the evolutionary operators. It is worth noting that some modifications to the Individual class would affect directly the population or even the EA: an example of the first category is the introduction of an entropy measure, which may be used to alter the selection and mating statistics; the second type of change may be represented by the introduction of individual aging and eventual death, which may be used to pass gradually from Plus Strategy to Comma Strategy.
Above the Individual there is the Population concept, again materialized by a class. This is another concept subject to modification, since several experiments may be performed on the internal population structure to adapt the selection and mating properties to different problems. The individuals belonging to a given population are subject to the application of a configurable set of operators; this set is associated with the population, so its materializing class will use the operators.
Lastly, the Evolutionary Algorithm exploits the Population class. This is the final goal of the work, but also the most volatile part of it. Indeed, the Evolutionary Algorithm class is in charge of instantiating one or more populations, each of which may have a different structure and size, determine which evolutionary operators every population may use, and finally run the actual evolution steps.
Wiki: Constrained Tagged Graph
Wiki: Constraints
Wiki: Home
Wiki: Tagged Graph