µGP (
MicroGP)
is a versatile optimizer able to outperform both human experts and conventional heuristics in finding the optimal solution of hard problems.
Given a task, it first fosters a set of random
solutions, then iteratively refines and enhance them.
Its heuristic algorithm uses the result of the evaluations, together with
some internal structural information, to efficiently explore the search space,
and eventually to produce the optimal solution. µGP has been devised in
2002
in the
CAD Group at Politecnico di Torino,
and subsequently developed thanks to the effort
of
several
people.
µGP original application was the creation
of
assembly-language programs for
testing different microprocessors,
hence the Greek letter µ (micro) in its name.
Afterward, it has been used on a wider range of problems, such as:
creation of
test programs
for
pre- and
post-silicon validation;
design of
bayesian networks;
creation of
mathematical functions represented as
trees;
integer and
combinatorial optimization;
real-value parameter optimization;
and even creation of
corewar warriors.
µGP is an
evolutionary algorithm,
hence the GP acronym (genetic programming) in its name.
A population of different solutions
is considered in each step of the search process, and new individuals
are generated through mechanisms that ape both
sexual and
asexual
reproduction. New solutions
inherit
distinctive traits from existing ones, and may
coalesce the good characteristics of different
parents. Better solutions have a greater chance to reproduce and to
succeed in the simulated
struggle for existence.
µGP is distributed under the
GNU Public License (GPL).
The current major version of the toolkit is three, also known as µGP
3, ugp3 (due to typographic limitations)
and MicroGP++ (being written in C++).
Comprehensive
instructions and the updated
documentation can be found online in the
µGP wiki.
For the practitioner, the wiki's
step-by-step tutorials help understanding the gory details
of
configuring the tool,
running it and
tweaking its many parameters.
For the programmer, the wiki explains the
design rationale,
and details the
internal architecture of the toolkit.
Sourceforge is kindly hosting the
project.
JetBRAINS is providing a free license of
IntelliJIDEA to developers.