Script: Nqueens.py
Vamos ir viendo cada uno de los componentes del script.
13
Definir el problema y el individuo: básicamente tenemos que indicar dos cosas, primero si es un problema de maximización o minimización de la función objetivo. Segundo, si es un problema con un objetivo (single objective) o con varios objetivos (multi-objective). Definimos el tipo del individuo ? representación
creator.create (alias, < clase_hereda>, atributos)
54)? Creamos una clase que se llama FitnessMin y que hereda de la clase base.Fitness y que tiene
una tupla weights como atributos. ? DEFINICIÓN DEL TIPO DE PROBLEMA
55)? Creamos una clase que se llama Individual que hereda de una lista y que tiene un atributo
que es fitness (justo la clase que hemos creado anteriormente).? DEFINICIÓN DEL INDIVIDUO
Representación del Individuo
Resolución con algoritmo genético
Individuo: Una lista de posiciones de las damas en el tablero. Sólo guardamos la
fila en la que está la reina, la columna coincide con el índice de la lista. Por lo que sólo hay una reina por columna (Simplificación).
(Gp:) 0
(Gp:) NQUEENS-1
(Gp:) F1
(Gp:) F2
(Gp:) FN-1
Una representación correcta puede ayudar a resolver el problema. No siempre tiene que ser
una lista!.
Definición del problema
Base.fitness
15
Registro de funciones
Toolbox: Caja de herramientas donde registramos todas las funciones que
nos hacen falta para implementar el algoritmo genético.
Toolbox
toolbox = base.Toolbox()
17
Las herramientas Tools
El módulo Tools tiene una gran cantidad de funciones que nos van a hacer falta para
diseñar el algoritmo genético, tales como operaciones de croossover, mutaciones, selección, etc.
Estas funciones las vamos a utilizar para registrar funciones más complejas.
18
Algoritmos genéticos – Ejemplo
Resolución con algoritmo genético
Selección: mediante torneo.
Ojo! A medida que avanzamos en las generaciones los individuos y sus fitness se parecen!
Algoritmos genéticos – Ejemplo
Resolución con algoritmo genético
Crossover: PartiallyMatched ? Combinamos la información genética de dos individuos (padres) para crear dos individuos (hijos).
Algoritmos genéticos – Ejemplo
Resolución con algoritmo genético
Mutación: Barajamos (shuffle) el contenido de la lista.
(Gp:) 0
(Gp:) NQUEENS-1
(Gp:) F1
(Gp:) F2
(Gp:) FN-1
Algoritmos genéticos – Ejemplo
Función de fitness
Calculamos el número de reinas en cada diagional
?Tenemos dos tipos de diagonales (diagonal_izquierda_derecha, diagonal_derecha_izquierda).
diagonal_izquierda_derecha = fila + columna
Algoritmos genéticos – Ejemplo
Función de fitness
Calculamos el número de reinas en cada diagional
?Tenemos dos tipos de diagonales (diagonal_izquierda_derecha, diagonal_derecha_izquierda).
diagonal_derecha_izquierda = size-1-columna+fila
Algoritmos genéticos – Ejemplo
Función de fitness
Algoritmos genéticos – Ejemplo
Algoritmo genético
Algoritmos genéticos – Ejemplo
Algoritmo genético
Algoritmos genéticos – Ejemplo
Solución
Página anterior | Volver al principio del trabajo | Página siguiente |