6
UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE INGERNIRÍA ESCUELA DE INGENIERÍA ELÉCTRICA DEPARTAMENTO DE POTENCIA  ALGORITMOS GENETICOS SOLUCIONADOR DE SUDOKU EMPLEANDO UN  ALGORITMO GENÉT ICO CON REPRESENTACION BASADA EN ORDEN INFORME FINAL Caracas, Febrero de 2011.

Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

Embed Size (px)

Citation preview

Page 1: Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

8/9/2019 Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

http://slidepdf.com/reader/full/aplicacion-de-algoritmos-geneticos-resolucion-de-sudokus 1/6

UNIVERSIDAD CENTRAL DE VENEZUELA

FACULTAD DE INGERNIRÍA

ESCUELA DE INGENIERÍA ELÉCTRICA

DEPARTAMENTO DE POTENCIA ALGORITMOS GENETICOS

SOLUCIONADOR DE SUDOKU EMPLEANDO UN

 ALGORITMO GENÉTICO CON

REPRESENTACION BASADA EN ORDEN

INFORME FINAL

Caracas, Febrero de 2011.

Page 2: Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

8/9/2019 Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

http://slidepdf.com/reader/full/aplicacion-de-algoritmos-geneticos-resolucion-de-sudokus 2/6

 ASPECTOS TEORICOS

Sudoku es un rompecabezas matemático que se popularizó en Japón en 1986 y se dio a

conocer en el ámbito internacional en 2005. Es un pasatiempo que consiste en un tablero de 9 filas x

9 columnas que componen 81 casillas. El tablero está dividido en subcuadrículas de 3x3 casillas. El

objetivo del juego es rellenar todas las casillas libres de dicho tablero con los números del 1 al 9

considerando que inicialmente existen algunos números ya colocados en algunas casillas. La solución

debe cumplir la restricción de que no se repite ningún número en una misma fila, columna o

subcuadrícula. La solución es única.

El objetivo del presente trabajo consiste en diseñar un programa que haciendo uso de un

algoritmo evolutivo, permita resolver sudokus. Para llevar a cabo el objetivo, se deben plantear los

siguientes aspectos:

1.  Representación del individuo.

2.  Definición de función de adaptación.

3.  Elección de los operadores a utilizar.

• Criterio de codificación: Es específico de cada problema y en el caso del Sudoku es conveniente

una representación con permutaciones de valores enteros ya que la solución de un sudoku puede

resumirse como la permutación de los números del 1 al 9 respetando ciertas restricciones. Las

representaciones basadas en orden se adaptan a este requerimiento

• Criterio de inicialización: La población inicial está formada por “tablas”, que representan cada una

un Sudoku, de manera que cada celda vacía estará rellena con un entero del 1 al 9.

• Operadores genéticos: operadores de cruce y mutación explicados posteriormente , ellos basados en

orden.

• Criterio de selección: en principio se utilizó la ruleta como mecanismo de selección, después se

escogió el torneo, esto debido a la gran cantidad de población que se empleó para la solución.

• Criterio de terminación y parámetros de funcionamiento : el algoritmo incluye elitismo, para no

perder la mejor solución. El criterio de parada es encontrar un individuo que no presente

repeticiones ni en columnas, filas o cuadrículas, esto hasta 100.000 generaciones.

Page 3: Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

8/9/2019 Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

http://slidepdf.com/reader/full/aplicacion-de-algoritmos-geneticos-resolucion-de-sudokus 3/6

Básicamente el sudoku es un problema de optimización con restricciones a nivel de columna,

fila y cuadrícula.

El individuo  es un arreglo de 81 posiciones, el cual estará constituido por 9 genes. Se

escogieron las filas como los genes, por lo que cada gen está constituido por 9 elementos.

De este modo, al cargar un sudoku al programa, las posiciones fijas serán respetadas e

incluidas de una vez en los individuos, por otro lado, las posiciones libres serán cargadas con ceros.

La generación de los individuos consistirá en rellenar cada uno de los genes de un individuo,

es decir, las filas, con números aleatorios del 1 al 9 evitando que existan repeticiones en cada gen (se

restringe la repitencia en las filas) tal y como se muestra en la siguiente figura:

Figura 1: Individuo. Cada fila representa un gen, en las filas se tiene la restricción de no repitencia al momento de generar

los individuos.

En cuanto a la función de adaptación se considera que un sudoku es tanto mejor cuantas

menos fallas tenga, en tal sentido la función de adaptación usada es una suma ponderada de un valor

que representa la cantidad de fallas (repeticiones) en columnas y cuadriculas. Esta función de

adaptación fue modificada a lo largo de la realización del código hasta observarse el mejor

comportamiento.

Page 4: Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

8/9/2019 Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

http://slidepdf.com/reader/full/aplicacion-de-algoritmos-geneticos-resolucion-de-sudokus 4/6

El método de selección utilizado fue el torneo, esto debido a que en las pruebas presentó

un mejor rendimiento respecto a la ruleta. En el torneo aquí usado se escogen dos individuos al azar

de la población, se comparan sus adaptaciones, el que tenga mayor adaptación es seleccionado para

cruzar. Este procedimiento se repite hasta que la cantidad de individuos a cruzar sea igual a la

cantidad de población.

Se programaron dos cruces basados en orden. Uno de ellos no fue visto en clase, no obstante

presenta las características de los cruces basados en orden, es decir, se fundamentan en la

permutación de posiciones en listas fijas, los operadores utilizados fueron:

  Cruce uniforme un punto. Se escoge un punto de cruce divisorio en el individuo y se

intercambian los cuadros de los padres hasta ese punto.

 

Cruce alterno (operador AP ): Intercala los cuadros de cada uno de los padres en cada unode los hijos. El operador AP ( Larrañaga y col., 1999), crea un descendiente seleccionando

elementos alternativamente del primer y segundo padre en el orden ocupado por los

mismos, omitiéndose aquellas aquellos que ya se encuentran presenten en la gira

descendiente, ejemplificando lo anterior:

Sean los padres:

(1 2 3 4 5 6 7 8) (3 7 5 1 6 8 2 4)

Los descendientes:

(1 3 2 7 5 4 6 8) (3 1 7 2 5 4 6 8)

En el cruce se respetan las posiciones fijas, las cuales son comunes a ambos padres y

no se mueven o modifican.

Solo se utilizó un operador Mutación, el cual selecciona al azar un gen del individuo

a mutar, y escoge dos elementos del gen, verifica que no sean posiciones fijas y a

continuación los intercambia.

Para validar el método utilizado, se cargó al programa varios sudokus de internet, dediferentes dificultades y se procedió a correrlo. A continuación se presenta un diagrama de

flujo del programa:

Page 5: Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

8/9/2019 Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

http://slidepdf.com/reader/full/aplicacion-de-algoritmos-geneticos-resolucion-de-sudokus 5/6

CONCLUSIONES

En el presente trabajo se logró alcanzar el objetivo principal el cual contempla el diseño de

un algoritmo evolutivo que permita dar solución al juego Sudoku. Para ello se hizo uso de un

 Algoritmo Genético en donde se implementó la representación basada en orden. Esto último debido

a que el sudoku es un juego que requiere de una solución que guarda relación con un “orden”, es

decir, en primer lugar cada fila, columna y cuadrícula, admite nueve números enteros dispuesto de tal

forma que nunca exista coincidencia de un mismo número en cada una de ellas, en segundo lugar,

solo se admiten números enteros entre 1 y el 9, y en tercer lugar, el juego en si mismo se fundamente

en la realización de permutaciones para obtener la solución. Estos tres aspectos conllevaron a la

implementación de una representación basada en orden.

Es menester señalar que como todo algoritmo genético, la efectividad del mismo depende engran parte de la función objetivo o de adaptación a implementar. Para el presente algoritmo, se

utilizó una suma ponderada de las fallas o errores contenidos en las filas, columnas y cuadrículas. Se

observó que la convergencia del algoritmo se ve influencia por los pesos que se le asigna a cada una

de estas sumatorias que conforman la función de adaptación. La mejor solución se obtuvo al

otorgarle mayor peso a la sumatoria de fallas en las columnas. Esto de alguna manera porque desde

la inicialización de la población, todos los individuos (sudokus), son forzados a carecer de repetición

de elementos por fila, por lo que en parte, se establece un orden o un aporte a la solución del

problema. En cuanto a las cuadrículas experimentalmente se obtuvo menos fallas en estas, se

presume que esto se debe a que por cuadrícula existe mayor grado de libertad para fijar los números

respecto a las intercepciones de 3 filas y 3 columnas, es decir es posible realizar permutaciones entre

filas y columnas en un cuadro de 3x3, mientras que en las columnas se limita solo a permutaciones

en ella misma, lo cual resultó de mayor complejidad para alcanzar la solución deseada.

Dentro de esta perspectiva, previamente se han mencionaron ciertas reglas o condiciones

que debe cumplir un sudoku. Estas reglas se traducen o implican ciertas restricciones, que no es más

que acotar el rango donde se pueden encontrar la solución deseada. Existen muchas restriccionesque pudieran ser implementadas para un solucionador de sudoku mediante algoritmos genéticos, por

ejemplo, la sumatoria de las filas o columnas o cuadrículas siempre debe ser igual a 45; la productoria

de filas o columnas o cuadrículas debe ser siempre 362880; entre otras. En el presente estudio se

utilizó como restricción que los elementos en cada fila, para todos los individuos desde la

inicialización de la población, nunca pueden repetirse. Se estableció que para cada individuo de la

Page 6: Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

8/9/2019 Aplicacion de Algoritmos Geneticos: Resolucion de Sudokus

http://slidepdf.com/reader/full/aplicacion-de-algoritmos-geneticos-resolucion-de-sudokus 6/6

población, indiferentemente de la generación, los elementos fijos del sudoku cuya solución se

requiere permanezcan de esa forma hasta la solución final. Se apreció de forma clara el aporte de las

restricciones cuando al establecer limitación de la no repetición de elementos de las filas, se condujo

al hecho de que la función de adaptación requiera menor peso en cuanto a las fallas por filas, pues ya

la restricción condujo a una reducción en la búsqueda de las posibles soluciones.

En este orden de ideas, resulta importante mencionar el uso del torneo como método de

selección. Inicialmente se había considerado el método de la ruleta sin embargo no resultó efectivo

pues se necesitaba de un método que permitiera mayor discriminación en cuanto a la adaptación. En

el método de la ruleta la probabilidad de selección resulta proporcional al fitness, mientras que en el

torneo directamente se utiliza la adaptación, y este aporta un alto grado de discriminación a los

individuos menos aptos, seleccionados a pares.

De los gráficos obtenidos en los ensayos realizados se percibe que el operador de cruce juegaun papel inicial en las primeras generaciones. Sin embargo luego de cierta cantidad de generaciones,

la presencia de superindividuos conlleva a limitar la efectividad del operador cruce, por lo cual se

observó que era necesario implementa un operador de mutación tan efectivo como fuere posible

para lograr alcanzar la solución y vencer a los superindividuos. En las representaciones basadas en

orden se suele usar un porcentaje de mutación alto (20% a 30%), esto es porque existe una alta

tendencia a la creación de superindividuos cuando como en este caso, los genes tienen poca variedad

de elemento (del 1 al 9), el establecimiento de un orden implica también la formación de estructuras

que conllevan de nuevo a los superindividuos. Para el algoritmo implementado se obtuvieron

mejores soluciones con un porcentaje de mutación entre el 30% y el 50%. En la curva de adaptación

 vs generaciones, se observó como luego de cientos de generaciones donde prácticamente el fitness

no variaba, la mutación contribuye de forma eficaz para alcanzar la solución.