Skip to content

Commit

Permalink
Update documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
cbarrick committed Feb 11, 2016
1 parent baadc3d commit f73bff4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 31 deletions.
15 changes: 3 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,11 @@ https://godoc.org/github.com/cbarrick/evo

## Status & Contributing

Evo is a general framework for developing genetic algorithms and more. It began life in fall 2015 as I studied evolutionary algorithms as an undergrad. The most recent release is [v0.1.3].
Evo is a general framework for developing genetic algorithms and more. It began life in fall 2015 as I studied evolutionary algorithms as an undergrad. The most recent release is [v0.2.0].

Contributions are welcome! I am currently a student and inexperienced maintainer, so please bear with me as I learn. The focus of the project thus far has been on the API design and less on performance. I am particularly interested in hearing about use-cases that are not well covered and success stories of where Evo excels. Testing, code reviews, and performance audits are always welcome and needed.

[v0.1.3]: https://github.com/cbarrick/evo/tree/v0.1.3


## Overview

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 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.

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.
[v0.2.0]: https://github.com/cbarrick/evo/tree/v0.2.0


## Examples
Expand All @@ -37,7 +28,7 @@ You can browse example problems in the [example subpackage]. The examples are ma
[example subpackage]: https://github.com/cbarrick/evo/tree/master/example


## License
## License (LGPL)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Expand Down
32 changes: 13 additions & 19 deletions doc.go
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

0 comments on commit f73bff4

Please sign in to comment.