A normal, bit vectored population, can be described by (2^n)^m, where n is the size of the individuals, and m the size of the population. This is of course isomorphic to 2^(n*m), but I like to think of the m -> n -> 2 form.
Point mutation is a function 2 -> 2, lifted twice to (2^n)^m -> (2^n)^m.
Crossover is (2^n)x(2^n) -> (2^n)x(2^n) lifted and composed with a function (2^n)^m -> ((2^n)x(2^n))^(m/2) that pairs up individuals.
Selection is ultimately a function (2^n)^m -> (2^n)^m, but it should be composed of a lifted function In general the 2^m can be any combinatorial object and the vector of individuals replaced with any function. It is possible that we would want a multi-sorted species, as in GEP when using multiple domains. Thats all for now I think. I would be interested to see a combination of species and monads, although I have no idea how it would work.
you make my brain hurt
ReplyDelete