Parallelized Evolution System (PES)
This system is being developed in conjunction with IRIDIA within our
collaboration on the Swarm-bots project. The system parallelizes
the execution of evolutionary methods over multiple
computers connected via a network. PES is based upon PVM, a popular
parallel programming library.
- Simple usage
- Load balancing
- Fundamental genetic algorithm facilities
- improved fault tolerance via built-in ping mechanism
- Multi platform support and interoperability
PES runs GA centrally on the server but distributes function
evaluations to the clients. This scheme is more effective when the
fitness evaluations dominate the execution time of program. Following figure
demonstrates the architecture of a PES application.
To use PES library two applications should be implemented: server and
client. Both programs share some of the library codes but also
have distinct parts. Thus, PES is composed of two main components:
- a server component, named PES-S. This component is used for
Client component, named PES-C. This components is used for client
- Fundamental GA functionality: crossover/mutation and selection
mechanisms for binary strings and built-in neural network class. These
mechanisms can be replaced with custom ones for specific applications.
- Task management: sending tasks. A task is defined as data
required to evaluate a fitness. This can range from a simple bit
string to a neural network controller together with definition of world
it operates. PES-S provides functions to serialize and deserialize tasks to send to clients. PES also handles simple load
balancing so that the faster clients receive more work whereas slower
clients receive less.
- Result management: Receiving tasks from clients and matching
results with tasks.
- Ping mechanism: This mechanism keeps track of active clients.
PES-S functions send and receive ping packets to clients while
evaluating fitness functions. This allows not responding clients to be
detected and dropped. With this mechanism allows server to keep a stable
rate of execution and also allows more fault tolerance.
- Configuration manager: this class encapsulates options for PES.
These include execution environment specific options and configurations.
PES-S can load these options from a predefined file. This reduces
requirement for building for different applications.
- Task Management: receiving tasks from server.
- Ping mechanism: updating server about status of current task.
- Result management: sending result of execution to server.
Server uses PES-S functionality to distribute tasks and collect
results. Server implementer need not worry about details on how tasks
distributed or how results are collected. A single library call handles
this task. So server program looks exactly like a serial program, free
of inter-process communication.
Client on the other hand uses PES-C to receive tasks and send
results. Only part that requires special care in client programming is
checking messages (a single function call from PES) so that pings are
replied appropriately and new tasks are received.
PES is used on our application in evolutionary robotics. This application
evolves robots capable of clustering. The robots are simulated on Open
Dynamics Engine (ODE). ODE allows dynamic simulation of bodies and
is suitable for problems that cause lots of collisions between robots.