<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=US-ASCII">
<META content="MSHTML 6.00.2900.2722" name=GENERATOR></HEAD>
<BODY id=role_body style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Arial"
bottomMargin=7 leftMargin=7 topMargin=7 rightMargin=7><FONT id=role_document
face=Arial color=#000000 size=2>
<DIV>I believe that the implementation of CycleCrossover in GA1DArrayGenome.c
contains an error.</DIV>
<DIV> </DIV>
<DIV>Briefly, I believe that the variable "current" in the segment of code
beginning with </DIV>
<DIV> if (c1 && c2)</DIV>
<DIV>should be reinitialized before the "bro" child genome is created, that
is, that the line</DIV>
<DIV> current = 0;</DIV>
<DIV>should be added between</DIV>
<DIV> mask.clear();</DIV>
<DIV> and</DIV>
<DIV> bro.gene(0, dad.gene(0));</DIV>
<DIV> </DIV>
<DIV>As the code reads now, the cycle for "bro" is resought starting at the
last new cycle-member's position in the earlier code (denoted by the value of
<current> left over from seeking the cycle during creation of
the "sis" genome) but the corresponding mask bit is not set, as it should be
(rather, the mask bit at position 0 is set, as it was in the code for
"sis"). As a result, the "bro" child, which presumably is supposed to
represent a permutation, may contain a duplicate value (and a
corresponding omission). On a subsequent crossover attempt,
the bogus chromosome can cause the program to hang up, presumably in an
infinite loop.</DIV>
<DIV> </DIV>
<DIV>If anyone thinks that I am in error or would like a more detailed
explanation, please let me know. I have very much enjoyed working with
this library.</DIV>
<DIV> </DIV>
<DIV>Sincerely,</DIV>
<DIV>Bob Moss</DIV></FONT></BODY></HTML>