<div dir="ltr">Hello All,<div><br></div><div>I am new to Racket and just started building an evolutionary computing module to supplement my research and learn more about Racket.</div><div><br></div><div>When it comes to representing a chromosome, there are many encoding schemes one can choose from. To start I would like to build a function that lets the user choose the encoding scheme they would like by being able to directly insert it into the function call. So far I have created this:</div>
<div><br></div><div><div>(define (generate-chromosome encoding-scheme number-of-genes)</div><div>  (cond  [(zero? number-of-genes) empty]</div><div>            [else (cons encoding-scheme</div><div>                             (generate-chromosome encoding-scheme (sub1 number-of-genes)))]))</div>
<div><br></div><div>Two popular encoding schemes are the binary encoding scheme and the real value encoding scheme:</div><div><br></div><div>(define binary-encoding-scheme</div><div>  (random 2))</div><div>(define value-encoding-scheme</div>
<div>  (random))</div><div><br></div><div>So then calling this function using the binary encoding scheme:</div><div><br></div><div>(generate-chromosome binary-encoding-scheme 10)</div><div> </div><div>gives either a list of only ten 1's or a list of only ten 0's. Random only works once and whatever the first random value is stays and doesn't change.</div>
<div><br></div><div><div><b>How would I make random re-evaluate each time given that I want it to be included in the definition of an encoding scheme?</b></div></div><div><br></div><div>As an alternate, the function below works when I directly include (random 2) in for a value in the encoding scheme, but I prefer the structure of the above function.</div>
<div><br></div><div><div>(define (generate-chromosome-2 number-of-genes)</div><div>  (cond [(zero? number-of-genes) empty]</div><div>           [else (cons (random 2)         ;binary-encoding-scheme</div><div>                            (generate-chromosome-2 (sub1 number-of-genes)))]))</div>
<div><br></div><div>So the function call</div><div>(generate-chromosome-2 10) gives the desired result, but doesn't fit the needed structure.</div></div><div><br></div><div>Any help would be much appreciated. </div><div>
<br></div><div>Best Regards,</div>-- <br>Rian Shams
</div></div>