Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,38 @@
|
|||
(require 'sequences)
|
||||
(define ALPHABET (list->vector ["A" .. "Z"] ))
|
||||
(vector-push ALPHABET " ")
|
||||
|
||||
(define (fitness source target) ;; score >=0, best is 0
|
||||
(for/sum [(s source)(t target)]
|
||||
(if (= s t) 0 1)))
|
||||
|
||||
(define (mutate source rate)
|
||||
(for/string [(s source)]
|
||||
(if (< (random) rate) [ALPHABET (random 27)] s)))
|
||||
|
||||
(define (select parent target rate copies (copy) (score))
|
||||
(define best (fitness parent target))
|
||||
(define selected parent)
|
||||
(for [(i copies)]
|
||||
(set! copy (mutate parent rate))
|
||||
(set! score (fitness copy target))
|
||||
(when (< score best)
|
||||
(set! selected copy)
|
||||
(set! best score)))
|
||||
selected )
|
||||
|
||||
(define MUTATION_RATE 0.05) ;; 5% chances to change
|
||||
(define COPIES 100)
|
||||
(define TARGET "METHINKS IT IS LIKE A WEASEL")
|
||||
|
||||
(define (task (rate MUTATION_RATE) (copies COPIES) (target TARGET) (score))
|
||||
(define parent ;; random source
|
||||
(for/string
|
||||
[(i (string-length target))] [ALPHABET (random 27)]))
|
||||
|
||||
(for [(i (in-naturals))]
|
||||
(set! score (fitness parent target))
|
||||
(writeln i parent 'score score)
|
||||
#:break (zero? score)
|
||||
(set! parent (select parent target rate copies))
|
||||
))
|
||||
Loading…
Add table
Add a link
Reference in a new issue