#lang racket


;;PARAMETROS QUE SON VARIABLES
;;del cromosoma
;;representación (P1 P2 U3 P3 P4 U4 P5 P6 U5)
(define length-cromosoma 9)
;;de la población
(define length-poblacion 50); 50 100
;;porcentaje de la población que se reproduce
(define %pot-repr (/ 2 3))
;;los mejores son un % de %a-cruzar
(define %mejores-repr (/ 3 4))
;;punto del cruce de cromosomas
(define punto-de-cruce #f);(random length-cromosoma)); 3
;;probabilidad de la mutación: 1 por 1000
(define prob-mutacion (cons 5 1000)); ~1/6
;;cuando se conoce la solución, ésta es un cromosoma
(define solucion 'desconocida)



;;Genera al azar un gen
(define un_parametro
  (lambda ()
    (let ((pos-neg (random 2)))
      (case pos-neg
        ((0) (* -1 (random 10)) )
        ((1) (random 10))
        )
      ) ))

(define haz-gen! un_parametro)

(define muta-gen un_parametro)

(provide 
 ;parámetros que son variables
 length-cromosoma 
 length-poblacion
 %pot-repr 
 %mejores-repr
 punto-de-cruce
 prob-mutacion
 solucion
 ;parámetros que son procedimientos         
 haz-gen!
 muta-gen
 )
