creatur-5.9.3: Framework for artificial life experiments.

Copyright(c) Amy de Buitléir 2012-2015
LicenseBSD-style
Maintaineramy@nualeargais.ie
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell98

ALife.Creatur.Genetics.Reproduction.SimplifiedSexual

Description

A reproduction method for artificial lifeforms where:

  • Each agent has a single strand of genetic information.
  • Each child has two parents.
  • Each parent contributes approximately half of its genetic information to the offspring.

Synopsis

Documentation

class Reproductive a where Source

A species that reproduces, transmitting genetic information to its offspring. Minimal complete definition: all except mate.

Minimal complete definition

recombine, build

Associated Types

type Strand a Source

A sequence of hereditary information for an agent.

Methods

recombine :: RandomGen r => a -> a -> Rand r (Strand a) Source

Recombines the genetic information from two parents, creating genetic information for potential offspring.

Typically this involves the following steps:

  1. Recombine the two strands of genetic information (one from each parent) to obtain two new strands.
  2. Discard one strand, and return the remaining one.

build :: AgentId -> Strand a -> Either [String] a Source

Builds an agent based on the genome provided, if it is possible to do so.

makeOffspring :: RandomGen r => a -> a -> AgentId -> Rand r (Either [String] a) Source

makeOffspring (parent1, parent2) name uses the genetic information from parent1 and parent2 to produce a child with the agent ID name. The default implementation:

  1. Calls recombine to create a genome for the child.
  2. Calls build to construct a child with this genome.