Newsgroups: comp.ai.genetic
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!news.mathworks.com!news.kei.com!hookup!nstn.ns.ca!yak.nstn.ns.ca!ecicrl!romanus!nsdev!neal
From: neal@nsdev.ocunix.on.ca (Neal Sanche)
Subject: Genetic Operator Precedence
X-Newsreader: TIN [version 1.2 PL2]
Organization: == NSDev - No Such Device ==
Message-ID: <D9Eu3p.1Ax@nsdev.ocunix.on.ca>
Date: Tue, 30 May 1995 21:23:48 GMT
Lines: 28

I've got a fairly simple question. I'm working on a C++ class library
for Genetic Algorithms which (in my mind) is designed to simplify things.
It creates chromosomes as a template class so that the internal representation
is an array of integers, real numbers, or structures (sorry we'd better not
include pointers in those structures <grin>) and allows access to the
individual bits so that the genetic algorithm has what can be thought of
as a bit vector to operate on. If anyone is interested, I'll share the code.

Now, my question. I want to make the operators as simple as possible. I'll have
a selection operator, a crossover operator, and a mutation operator. In
Goldberg's book _Genetic Algorithms in Search, Optimization and Machine
Learning_, the crossover operator mutated each bit individually as they were
copied to the child chromosomes. Would there be any difference if the
crossover was done first, then the child chromosomes all be shipped
through the mutation operator?

My gut reaction is no. As long as each bit is flipped with the same probability
it doesn't matter when they are done. Also, my other reaction is that calling
a function for each bit may be more expensive that doing it chromosome by
chromosome after crossover has taken place. But perhaps we all have fast
enough computers that function call overhead really doesn't matter much.

Thanks for any thoughts you may want to share.

-Neal

[ neal@nsdev.ocunix.on.ca - There comes a time when you just have to say... ]

