Descargar

Introducción a los algoritmos genéticos en Python (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

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

edu.red

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!.

edu.red

Definición del problema

Base.fitness 15

edu.red

Registro de funciones Toolbox: “Caja de herramientas” donde registramos todas las funciones que nos hacen falta para implementar el algoritmo genético.

edu.red

Toolbox

toolbox = base.Toolbox()

17

edu.red

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

edu.red

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!

edu.red

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”).

edu.red

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

edu.red

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

edu.red

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

edu.red

Algoritmos genéticos – Ejemplo Función de fitness

edu.red

Algoritmos genéticos – Ejemplo Algoritmo genético

edu.red

Algoritmos genéticos – Ejemplo Algoritmo genético

edu.red

Algoritmos genéticos – Ejemplo Solución

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente