Actualmente estoy tratando de darme cuenta de un ejemplo muy simple de algoritmos genéticos.Cruce de dos enteros en bits
En un punto, debe hacer un "cruce" (biología) con dos números (padres) para obtener un "niño".
puede encontrar una explicación de Cross-Over aquí: (. El segundo ejemplo, el "de un punto" más fácil Cross-Over es el que yo estoy tratando de hacer)
How to "crossover" two strings (1234 & abcd -> 12cd & ab34)
Los cromosomas (padres e hijos) son números, pero el "cruce" será un poco operativo.
he encontrado una solución para uno de los "cromosomas", que es el siguiente:
- mover la cantidad x bits a la derecha (
>>>
operador) - y luego pasar los bits de nuevo X posiciones pero esta vez hacia la izquierda (operador
<<
)
Esto mantendría el final de uno de los cromosomas y llenará el inicio con 0s.
Pero realmente no sé cómo resolver el problema del otro cromosoma y luego también hacer el Cruce.
(Probablemente un XOR vez me quedé con el inicio/final de los cromosomas y llena el resto con 0s.)
o debería incluso abordar este problema desde otro ángulo?
es que siempre sabes lo grande que sus dos entradas son como números (por ejemplo, números enteros de 16 bits) ? – David
Sí, siempre son enteros de 16 bits. Una cosa que se puede modificar es el% de Cross-Over. Por ejemplo, el 75% mantendría los primeros 4 (25%) bits del padre A y luego seguiría esos 4 bits con 12 (75%) bits del padre B. –