Nage is platform dedicated for solving optimization and simulation problems by multi-agent systems with a use of evolutionary algorithms.
For now it contains a library for creating customizable evolutionary algorithms but it is planned to create a full agent-based computational platform

Evolutionary algorithms

Evolutionary algorithms use mechanisms inspired by biological evolution, such as reproduction, mutation, recombination, and selection.
The most common usage of evolutionary algorithms is for optimization problems.
Candidate solutions to the optimization problem play the role of individuals in a population,
and the fitness function determines the environment within which the solutions "live".
Evolution of the population then takes place after the repeated application of the above operators.

The implementation of typical biological processes should look as follows:
  • Generate the initial population of individuals randomly - first Generation
  • Evaluate the fitness of each individual in that population
  • Repeat on this generation until termination (time limit, sufficient fitness achieved, etc.):
    • Select the best-fit individuals for reproduction - parents
    • Breed new individuals through crossover and mutation operations to give birth to offspring
    • Evaluate the individual fitness of new individuals
    • Replace least-fit population with new individuals


  • Genetic algorithms are parallel on the inside. They can explore the solution space in multiple directions at once
  • Genetic algorithms allow us to evaluate many schemas at once, they are particularly well-suited to solving problems where the space of all potential solutions is huge
  • Genetic algorithms perform well in problems for which the fitness evaluation is complex (the fitness function is discontinuous, noisy, changes over time, or has many local optima)
  • Genetic algorithms give an ability to manipulate many parameters simultaneously which is good as many real-world problems cannot be stated in terms of a single, constant value
  • Genetic algorithms know nothing about the problems they are created to solve. They make random changes to their candidate solutions and then use the fitness function to determine whether those changes produce an improvement.


  • It is tough to define a representation for the problem. The language used to specify candidate solutions must be robust and must be able to tolerate random changes such that fatal errors or nonsenses.
  • The fitness function must be carefully considered and written so that higher fitness really does mean better solution
  • All of the paremeters like the size of the population, the rate of mutation and crossover, the type and strength of selection must be chosen with care or the algorithm won't give proper results.
  • The common problem could be a premature favourising. If an individual that is more fit than most of its competitors early on in the course of the run, it may drive down the population's diversity too soon

Last edited Jan 7, 2013 at 2:29 PM by marochm, version 6


No comments yet.