|
|
@@ -0,0 +1,35 @@
|
|
|
+#lang typed/racket
|
|
|
+
|
|
|
+;; A simple genetic algorithm
|
|
|
+;; Computer Exercise #1 from Intro to GA by Mitchell
|
|
|
+;;
|
|
|
+;; Uses:
|
|
|
+;; - fitness-proportionate selection
|
|
|
+;; - routlette-wheel sampling
|
|
|
+
|
|
|
+(require math)
|
|
|
+
|
|
|
+; population size and individual chromosome length
|
|
|
+(define popsize 100)
|
|
|
+(define chromlen 100)
|
|
|
+; single-point crossover rate
|
|
|
+(define p-cross 0.7)
|
|
|
+; bitwise mutation rate
|
|
|
+(define p-mutate 0.001)
|
|
|
+
|
|
|
+
|
|
|
+; Fitness assessment is the number of 1's in the population member
|
|
|
+(: fitness (-> (Listof Integer) Real))
|
|
|
+(define (fitness member)
|
|
|
+ (/ (sum member)
|
|
|
+ (length member)))
|
|
|
+
|
|
|
+
|
|
|
+; mutate an individual
|
|
|
+(: mutate (-> (Listof Integer) (Listof Integer)))
|
|
|
+(define (mutate member)
|
|
|
+ )
|
|
|
+
|
|
|
+(: genpop (-> (Listof Integer)))
|
|
|
+(define genpop
|
|
|
+ )
|