La mayor parte de la literatura que he leído sobre GA sugiere usar un valor cruzado de alrededor de 0.7, por lo que toma el primer 70% de los genes de un cromosoma y el último 30% del otro para producir un nuevo cromosoma.
Si está eligiendo los cromosomas parentales tomando los dos primeros (clasificados según su estado físico), entonces puedo ver la lógica aquí, ya que está dando más peso a los genes del cromosoma de mayor calificación. Sin embargo, si está utilizando un método estocástico (como una rueda de ruleta) para elegir a los padres, entonces, ¿cuál es el punto de usar algo que no sea 0.5 como valor cruzado? Dado que ha elegido los cromosomas A y B como los padres, es tan probable que elija A primero y B segundo como B primero y A segundo, ¿verdad?
De hecho, solo he escrito un GA hasta ahora (todavía en la parte inferior de la curva de aprendizaje, ¡pero avanzando rápidamente gracias a una gran ayuda aquí!), Pero los experimentos sobre eso muestran que 0.5 da una convergencia más rápida a la solución que Cualquier otro valor.
¿O me estoy perdiendo algo?
fuente
Most of the literature I've read about GAs suggests using a crossover value of around 0.7
<- una cosa a tener en cuenta es que muchos de estos tipos de valores en la optimización heurística se derivan más o menos en función de qué valores parecen conducir a buenos resultados (en lugar de una derivación empírica). Estoy menos familiarizado con GA, pero sé que en otros métodos de optimización basados en la población, las constantes se determinaron de manera bastante arbitraria, ya que algunos investigadores hicieron algunos experimentos básicos, encontraron valores que funcionaban mejor y luego esos valores fueron adoptados por la comunidad de optimización en general .Respuestas:
La operación de cruce ideal depende mucho del espacio del problema. Los supuestos subyacentes de los algoritmos evolutivos y genéticos son que dos buenas soluciones a veces se pueden combinar en una mejor solución: las buenas soluciones se parecen a otras buenas soluciones. Esto tiene sentido intuitivamente si el espacio del problema tiene un óptimo único al que convergerá cada generación sucesiva.
Cuando hay múltiples óptimas, el espacio entre estas óptimas no es, por definición, óptimo. Si tomamos un cromosoma A que está cerca de un óptimo y lo combinamos con un cromosoma B de cerca de otro óptimo, aterrizaremos en el medio y probablemente tendremos un cromosoma c resultante que es peor que sus padres. Mantenerse más cerca de uno u otro padre aumenta la probabilidad de obtener un cromosoma d que sea mejor o al menos no mucho peor que el de los padres.
El valor cruzado es solo un parámetro de algoritmo que puede ajustar para adaptarse a la estructura de su problema. A veces verá una convergencia más rápida con un valor cruzado bajo, a veces con un valor cruzado muy alto. Pero para valores muy altos, esto sería menos como un crossover, pero solo un cambio muy pequeño como una mutación. Entonces, en lugar de usar un valor cercano a 1.0, preferiría reducir la tasa de cruce y aumentar la tasa de mutación.
fuente
Confusamente, la tasa de cruce y la tasa de mutación, aunque se denominan de manera similar, generalmente se interpretan de manera diferente.
Tasa de mutación de x% ==> Usted realiza el operador de mutación con probabilidad 1.0, y cada aplicación de ese operador cambiará x% de los bits del individuo mutado.
Tasa de cruce de x% ==> Usted elige para llevar a cabo la cruce en absoluto con probabilidad x.
Por lo tanto, una tasa de cruce del 70% no significa que tome el 70% de los bits del padre 1 y el 30% del padre 2. Significa que realizará el operador de cruce que haya elegido el 70% del tiempo. El 30% restante del tiempo, pasará a los padres sin modificar al grupo de descendientes.
fuente