ec.breed.README Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ecj Show documentation
Show all versions of ecj Show documentation
ECJ, A Java-based Evolutionary Computation Research System.
ECJ is a research EC system written in Java. It was designed to be highly flexible, with nearly all classes (and all of their settings) dynamically determined at runtime by a user-provided parameter file. All structures in the system are arranged to be easily modifiable. Even so, the system was designed with an eye toward efficiency.
ECJ is developed at George Mason University's ECLab Evolutionary Computation Laboratory. The software has nothing to do with its initials' namesake, Evolutionary Computation Journal. ECJ's sister project is MASON, a multi-agent simulation system which dovetails with ECJ nicely.
The newest version!
This directory contains some simple utility breeding pipelines. These
pipelines don't make modifications of individuals, so if you're looking
for crossover or mutation etc., you'll need to check in other packages
more specifically designed for your representation.
ec.breed.ReproductionPipeline
Requests an individual from its sole source pipeline, then
makes a copy of it and returns the copy. Largely used in the
genetic programming package.
ec.breed.MultiBreedingPipeline
When asked to create one or more children, selects from among
some N source pipelines attached to it, requests indivdiuals
from the chosen source, copies them, and returns them. The
selection procedure is probabilistic, based on the 'probability'
values stored in each of the sources (in fact,
MultiBreedingPipeline is the reason those probability values exist.
This is historical: we probably should have stored them in
the MultiBreedingPipeline instead! Might change in the future.)
ec.breed.ForceBreedingPipeline
When asked to create some N children, this repeatedly requests from
its sole source some M<=N children at a time (you specify the M)
until it gets the N children asked for. This is useful for various
minor tricks, such as forcing Crossover to only produce one individual.
ec.breed.BufferedBreedingPipeline
When asked to create some N children, this makes a large request
from its sole source to create some M >= N children at a time
(you specify the M). It then returns N of these children, storing
away the other M - N ones. When asked again to create some more
children, it reaches into this storage and provides some of them.
When the storage is depleted, it creates another M children. This
is useful for certain minor tricks: for example, enabling you to cross
over two individuals, then cross them over *again*. We'd do that by
attaching the same BufferedBreedingPipeline (with M=2) to _both_
sources of a CrossoverPipeline (use the "same" options). The
BufferedBreedingPipeline then has another CrossoverPipeline as its
source. When the top CrossoverPipeline asked for its first child
to cross over, the BufferedBreedingPipeline would demand two children
from the subsidiary CrossoverPipeline (already crossed over), then
provide one of them. When the second child is requested, the remaining
child would be provided.
ec.breed.GenerationSwitchPipeline
This pipeline takes two sources. If the generation is less than G,
then the pipeline provides copies of individuals from source 0. Else
it provides copies of individuals from source 1.
© 2015 - 2025 Weber Informatics LLC | Privacy Policy