Matlab de entrada a maestro (2) -aprendizaje de algoritmos genéticos

El problema de optimización es uno de los principales problemas en un gran número de problemas de investigación científica, cuando se establece un modelo analógico-digital, cómo encontrar la solución óptima o mejor solución de este modelo. Los métodos comúnmente utilizados incluyen
  • Método exhaustivo (la teoría puede encontrar la solución óptima, pero es demasiado lento, generalmente nadie usa esto)
  • Derivación analítica de la solución óptima (en la mayoría de los casos no se puede derivar o la fórmula analítica es muy compleja y no se puede aplicar)
  • Algoritmo de optimización convexa (en muchos casos se puede inferir, pero también hay más casos en los que el problema no es convexo)
  • Después de que el problema no convexo se convierta en un problema convexo, utilice el algoritmo de optimización convexa
  • Algoritmo de optimización inteligente (se puede aplicar a varios problemas de optimización, incluidos los convexos y no convexos, y puede lograr mejores resultados con un buen diseño)
Este capítulo introduce primero el algoritmo genético en el algoritmo de optimización inteligente.
 

Algoritmo genético
Introducción: El algoritmo genético (algoritmo genético) es un método de búsqueda de la solución óptima mediante la simulación del proceso de evolución natural. Este algoritmo es un algoritmo de optimización global en el algoritmo de optimización inteligente, y es más adecuado para situaciones en las que la solución óptima no es sensible a los cambios de genes individuales.
 
Antes de utilizar el algoritmo genético para la optimización y la optimización, tenga en cuenta que aunque el algoritmo genético es una herramienta de optimización, si desea aplicar un algoritmo genético a su problema de optimización, debe diseñar la situación en el algoritmo en lugar de hacerlo de manera casual. Simplemente busque un fragmento de código de algoritmo genético para aplicarlo. El algoritmo genético no es una llave inglesa, es un conjunto de ideas de optimización y un marco de algoritmo basado en la simulación del proceso de evolución natural.
 
El proceso de optimización de los algoritmos genéticos de uso común o común es el siguiente:
  1. Generar población inicial (puede ser un patrón completamente aleatorio o fijo)
  2. La población genera nuevos individuos mediante mutación y cruzamiento (la forma de mutación y cruzamiento no es fija)
  3. Calcular la aptitud ambiental de los individuos de la nueva población (la función de aptitud es muy importante)
  4. La población realiza una selección natural basada en la aptitud ambiental para eliminar individuos y mantener el tamaño de la población (el método de eliminación es opcional)
  5. Repita los pasos 2 a 5 hasta alcanzar la condición de parada.
En los pasos descritos anteriormente (en los que se buscan cuidadosamente las descripciones de los nombres), hay varios elementos que necesitan atención o diseño al realizar la optimización del algoritmo genético.
  • Método de codificación, es decir, la relación correspondiente entre la solución del problema y el gen individual
  • Cómo se genera la población inicial
  • Variación y cruce
  • Cómo lidiar con soluciones que no satisfacen las limitaciones
  • Función fitness
Los cinco puntos enumerados anteriormente son los problemas principales que deben resolverse aplicando su problema al algoritmo genético.Sólo después de que los cinco puntos anteriores hayan diseñado su algoritmo genético, podrá encontrar la solución óptima adecuada. Los presentaré uno por uno a continuación.
 
Uno, diseño de codificación
El diseño de codificación es la clave para resolver la relación correspondiente entre la solución del problema y los genes individuales. La solución de tu problema es originalmente una representación abstracta. Para aplicar el algoritmo genético, se debe construir una función de conversión f para convertir el código x en lo que deseas. Solución real y.
Esto convertirá el problema de optimización original, ybest = argmax (g (y)) en xbest = argmax (g (f (x))), ybest = f (xbest)
 
Hay tres métodos de codificación de uso común: codificación binaria, codificación de números enteros y codificación de punto flotante. Se deben prestar atención a los siguientes puntos al diseñar y seleccionar métodos de codificación
  • ¿Este método de codificación causa muchas soluciones inválidas? La existencia de soluciones inválidas es fatal para el algoritmo genético, lo que equivale al hecho de que hay que optimizar la función objetivo con un gran número de agujeros profundos. Si las soluciones inválidas no se pueden ajustar bien en el procesamiento posterior, debe considerar diseñar una solución que pueda evitar soluciones inválidas. Método de codificación.
  • Si la función objetivo real g (f (x)) obtenida por esta codificación es adecuada para la optimización del algoritmo genético. El algoritmo genético es un algoritmo de optimización global. Este tipo de algoritmo tiene una característica obvia de que no es adecuado para optimizar situaciones de optimización con un gran número de características de mutación local. Como se muestra en la figura siguiente, la imagen de la derecha es más adecuada para el algoritmo genético y la imagen de la izquierda es más adecuada para los algoritmos de optimización local, como el algoritmo de banco de peces.
 
 
2. La generación de la población inicial
La población inicial en sí se genera generalmente de forma aleatoria. Su aleatoriedad asegura la riqueza de los tipos de genes de la población general. Por lo tanto, la población inicial generalmente se genera aleatoriamente en el espacio de solución.
Hay dos métodos de generación de uso común
  • Cada valor del código se genera de forma independiente y completamente aleatoria.
  • Genere aleatoriamente según las reglas de la solución.
¿A qué se debe prestar atención durante el proceso de generación? Sigue siendo el problema de las soluciones inválidas. En algunos casos, las reglas de la solución son muy complicadas y solo se pueden generar de forma completamente aleatoria. Hay una gran cantidad de soluciones inválidas que deben resolverse.
 
 
Tres, variación y modo de cruce
La forma en que el algoritmo genético genera nuevas soluciones durante la mutación y el cruce es uno de los factores clave para la posterior optimización del algoritmo genético.
Cruce: se produce una parte de los individuos parentales que se pueden utilizar como cruzamiento. La operación de cruce de cromosomas se refiere a la selección de dos de estos individuos parentales para el apareamiento mutuo, y sus cromosomas se intercambian por algunos genes de cierta manera para formar dos nuevos. Proceso individual. (Ajuste global)
Mutación: un nuevo individuo formado después de la operación de cruce tiene una cierta probabilidad de mutación genética (ajuste local).
Métodos comunes de cruce:
  • Cruce de mapa parcial (PMX), seleccione aleatoriamente las posiciones inicial y final del segmento del gen, intercambie las posiciones de los dos conjuntos de genes, realice la detección de conflictos y establezca una relación de mapeo basada en los dos conjuntos de genes intercambiados.
  • Order Crossover (OX), seleccione al azar las posiciones inicial y final del segmento del gen, mantenga los genes seleccionados y obtenga otros genes de otro conjunto de genes en orden.
  • Crossover basado en la posición (PBX), selecciona aleatoriamente varios genes para mantener, y otros genes se obtienen de otro conjunto de genes en orden.  
  • Overlay Crossover, seleccione aleatoriamente las posiciones inicial y final del segmento del gen, y los dos conjuntos de genes se superponen en diferentes proporciones para generar una nueva solución (principalmente adecuada para la codificación entera o de punto flotante).
 
Operadores de mutación comunes: 
  • Variación de bits básica: Realice una operación de variación en el valor de un cierto bit o algunos bits designados al azar en la cadena de código individual con probabilidad de variación.
  • Variación uniforme: reemplace respectivamente el valor del gen original en cada locus en la cadena de codificación individual con un número aleatorio que se distribuye uniformemente en un cierto rango con una cierta pequeña probabilidad.
  • Mutación de límite: seleccione al azar uno de los dos valores de gen límite correspondientes en el locus para reemplazar el valor del gen original. Es especialmente adecuado para una clase de problemas cuando el mejor punto está en o cerca del límite de la solución factible.
  • Mutación no uniforme: realice una alteración aleatoria del valor del gen original y utilice el resultado después de la alteración como el nuevo valor del gen tras la mutación. Una vez realizada la operación de mutación en cada locus con la misma probabilidad, equivale a un ligero cambio de todo el vector solución en el espacio solución.
  • Mutación de aproximación gaussiana: al realizar la operación de mutación, reemplace el valor del gen original con un número aleatorio con una distribución normal con un valor medio de símbolo de P y una varianza de P ** 2.
 
Cuarto, la forma de abordar las soluciones que no cumplen con las limitaciones
El proceso de generación de las nuevas soluciones mencionadas anteriormente no considera completamente las limitaciones. En situaciones reales, si se permite que se almacenen soluciones inapropiadas en la población, la eficiencia general del procesamiento será muy baja, y mucho menos para encontrar la solución óptima.
Soluciones comunes:
  • Descarta estas soluciones insatisfechas en la selección natural
  • Ajustar la solución que no satisface la restricción a la solución que satisface la restricción de acuerdo con las reglas
  • La función de penalización está diseñada para reducir la probabilidad de seleccionar una solución que no cumpla con las restricciones en el proceso de selección natural.
La elusión efectiva de los problemas de restricciones todavía se basa en la codificación. Solo puedo decir que este problema se puede evitar.
 
Cinco, diseño de función de fitness
El significado de aptitud es, literalmente, si el individuo puede adaptarse al entorno, es decir, si cumple con el índice objetivo de optimización. Debido a que la selección natural subsiguiente se basa en la función de aptitud, la función de aptitud y su función objetivo no necesitan ser exactamente iguales.
¿Cuáles son los diseños de funciones de fitness más utilizados? Suelo utilizar los siguientes métodos
  • Utilizar directamente la función objetivo o su recíproca, que es simple pero la desventaja es que puede hacer que la diversidad de la población sea demasiado grande o demasiado pequeña.
  • La función objetivo establece otras funciones f (x) para cambiar la distribución de la aptitud.
  • La población realiza la normalización y otras operaciones de acuerdo con el valor de la función objetivo general para garantizar la distribución de la aptitud en todo momento.
 
Precauciones:
En el proceso de optimización del algoritmo genético, la diversidad de genes poblacionales es un factor importante para evitar caer en la solución local óptima, si el resultado de optimización de la función objetivo converge prematuramente probablemente se deba a una diversidad insuficiente de la población.
Para garantizar la diversidad de la población, el diseño de la función de codificación y aptitud es particularmente importante.
 
 

Vista previa del próximo número "Matlab de la entrada a la competencia (2) -problema de caso de algoritmo genético-TSP"
 

Supongo que te gusta

Origin blog.csdn.net/Xiaoxll12/article/details/105033391
Recomendado
Clasificación