Los algoritmos genéticos son una abstracción de la evolución biológica real. Puede usarlos para desarrollar soluciones a muchos problemas, siempre que pueda configurar el sistema de la manera correcta. A menudo, las soluciones que presentan son muy diferentes de lo que un humano diseñaría, y mucho mejores y más complejas de lo que un humano podría diseñar.
Lo primero que necesita es una forma de codificar soluciones en un vector (una cadena de valores). Imaginemos que quieres desarrollar una estructura de puente. Necesita una asignación de una colección de números a un diseño de puente. Hay muchas formas creativas de hacer esto, pero necesita algo que sea robusto. Otra cosa que desea es tener pequeños cambios en los valores para que se correspondan con pequeños cambios en la solución final. Eso facilitará la evolución.
Entonces, por ejemplo, imagine algún tipo de codificación donde los valores en el vector se interpretan como longitud, ángulo, grosor y datos de conexión de un grupo de armaduras en un puente.
- ¿Por qué Python se considera un buen lenguaje para IA y Machine Learning?
- ¿Cuáles son los problemas reales de control de los manipuladores de robots?
- ¿Qué lenguajes de programación se necesitan para desarrollar IA?
- Cómo controlar remotamente una mano de robot de acuerdo con los movimientos de mi propia mano EXACTAMENTE igual
- ¿Vivimos en el mundo de los dispositivos inteligentes?
Comienza creando una población de vectores aleatorios (genotipos). Digamos 100 individuos. Revisa cada uno, lee los valores y crea un diseño de puente (fenotipo), luego lo prueba de alguna manera (función de condición física) y le asigna una puntuación para indicar qué tan bien se desempeñó (condición física). Tal vez utilizando una simulación física que calcule las tensiones en las armaduras y juntas resultantes de la gravedad, el viento y el tráfico extenso.
Al final de todas estas pruebas, a cada individuo de la población se le ha asignado un valor de aptitud de acuerdo con su desempeño para resolver el problema. Desde que comenzó con números puramente aleatorios, lo más probable es que todos sean terribles. Sin embargo, algunos serán un poco mejores que otros. Algunos pueden aguantar un poco más que otros, y algunos pueden tener subestructuras que soportan bastante bien. El punto es que habrá variación en estos valores de aptitud.
La siguiente etapa es la cría. Necesitas crear la próxima generación. Usted crea 100 ‘niños’ seleccionando aleatoriamente dos padres de la población original. El punto importante aquí es que la probabilidad de que un individuo sea ‘seleccionado’ para ser padre debe ser proporcional a su estado físico relativo. Esto significa que cuanto mayor sea la condición física, más descendencia e individuo deberían tener, en promedio. Un individuo con una condición física relativamente baja debe tener muy pocas posibilidades de reproducirse.
Para crear el genotipo de un niño, toma algunos de los valores del padre A, y el resto del padre B. Esto se llama ‘cruce’ y es similar a cómo obtenemos una mezcla aleatoria de genes de nuestros padres. En esta etapa, los nuevos genotipos se alteran ligeramente al azar. Esto es ‘mutación’, y así es como se introduce el nuevo material genético.
Luego elimina la generación original, la reemplaza por la nueva y prueba cada uno de los nuevos genotipos. Eso es todo al respecto. Dado que el material genético en la nueva población se toma de la población anterior, pero está sesgado hacia las mejores condiciones físicas, en promedio, la nueva población tendrá un puntaje ligeramente más alto que sus padres. Sigue haciéndolo durante muchas generaciones y con el tiempo aumentará la aptitud física promedio de la población. No hay garantía de que se encuentre la “mejor” solución, si hay una, pero generalmente se encontrará una satisfactoria, y en ocasiones una excelente.
Así es como se verá un gráfico típico de un progreso de GA:
El eje x es la generación, y el eje y es la aptitud (lo que sea que eso signifique para este problema).
Puedes ver cómo es un análogo de la biología real. Las personas de la población combinan sus genes y tienen hijos, cuyos genes están sujetos a algunas mutaciones leves. Algunas personas transmiten sus genes muchas veces, mientras que otras no tendrán descendencia. La probabilidad de tener hijos es proporcional a algún tipo de aptitud objetiva. En un GA, diseñas ese estado físico con un propósito en mente, pero en el mundo natural, el entorno define el estado físico (esto es lo que significa ‘selección natural’). El entorno para una especie incluye muchas cosas, como el clima, el clima, la coevolución con otras especies (depredadores, presas, parásitos, huéspedes, simbiontes, polinización), la coevolución con miembros de la misma especie (selección sexual, competencia con otros por comida o compañeros). , eficacia de camuflaje, etc.) y otros factores físicos / químicos.
Los GA pueden desarrollar soluciones a problemas en cualquier área, pero no es fácil definir un buen mapeo de genotipos a soluciones, o explicar lo que quiere al sistema cuando define la función de aptitud. Hay un arte en ello. No hay una bala de plata GA que resuelva todos los problemas, deben diseñarse caso por caso teniendo en cuenta los detalles del problema.