-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
16 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,23 @@ | ||
// Evo is a framework for implementing evolutionary algorithms in Go. | ||
// | ||
// Evo exposes a clean and flexible API oriented around two interfaces: `Genome` | ||
// and `Population`. Genomes represent candidate solutions to the user's problem | ||
// and are implemented by the user. Genomes define their own means of evolution, | ||
// allowing for a multiplicity of techniques ranging from genetic algorithms to | ||
// evolution strategies and beyond. Populations represent the architecture under | ||
// and `Population`. Genomes represent both the function being optimized and the | ||
// representation of solutions. Populations represent the architecture under | ||
// which genomes are evolved. Multiple population types are provided by Evo to | ||
// enable the construction of both common and novel architectures. | ||
// | ||
// The body of the evolutionary loop is defined by the Evolve method of the | ||
// Genome type being evolved. For each genome in a population, the Evolve method | ||
// is called, receiving some subset of the population, called the suitors, as | ||
// arguments. The Evolve method then applies operators to the suiters | ||
// (selection, mutation, etc) and returns a genome that will replace the caller | ||
// within the population for the next iteration. The concrete genome type is | ||
// problem specific and defined by the user, while common operators for a | ||
// variety of domains are provided as subpackages of Evo. | ||
// The body of the evolutionary loop is defined by an evolve function. For each | ||
// genome in a population, the evolve function is called, receiving some subset | ||
// of the population, called the suitors, as arguments. The evolve function then | ||
// applies the user's variation operators (selection, mutation, etc) and returns | ||
// a genome for the next iteration. common operators for a variety of | ||
// representations are provided as subpackages of Evo. | ||
// | ||
// Populations orchestrate the evolution of genomes. A few different population | ||
// types are provided by Evo under the package `evo/pop`. Populations themselves | ||
// implement the Genome interface, making them composeable. The Evolve method of | ||
// the builtin populations implements uniform random migration: A random | ||
// population is chosen from the pool of suitors. Then the first population and | ||
// its suitor exchange random members. This allows novel architectures like the | ||
// island model to be implemented by nesting populations. | ||
// Populations model the evolution patterns of genomes. A few different | ||
// population types are provided by Evo under the package `evo/pop`. Populations | ||
// themselves implement the Genome interface, making them composeable. Migration | ||
// functions are provided to be used in this context, allowing go novel | ||
// architectures like the island model. | ||
package evo | ||
|
||
// TODO: Keep this in sync with the readme |