Algotitmos geneticos mundial

11
1 “Predicción de los Cuatro Posibles Ganadores de la Copa Mundial de Fútbol BRASIL 2014 a través de Algoritmos Genéticos” L. Bravo, K. Herrera, J. Martínez, H. Paz, Resumen—A pocos días de aproximarse el mundial de fútbol BRASIL 2014 y como aplicación de las técnicas de inteligencia artificial, específicamente de los algoritmos genéticos, se ha propuesto desarrollar una aplicación bajo el lenguaje de pro- gramación Java, la cuál pretende pronosticar los cuatro posibles equipos que pueden consagrarse como el campeón mundial de Fútbol en base a distintos factores tales como el ranking de la Federación Internacional de Fútbol Asociada (FIFA) , el grupo en el que se encuentra ubicado, el número de copas obtenidas y los últimos tres partidos jugados que tenga cada equipo clasificado. Palabras Claves—Algoritmos genéticos, fútbol, optimización, mundial, java, JGAP I. INTRODUCCIÓN Los Algoritmos Genéticos surgieron con la necesidad de optimizar los procesos de búsqueda basada en la teoría de la evolución planteada por Charles Darwin, siendo esta técnica de inteligencia artificial una de las mas aceptadas para resolver problemas de búsqueda. Los algoritmos genéticos emplean di- ferentes criterios de selección que ayudan a que una población evolucione de forma más optima para obtener resultados mas exactos para un problema específico. En el presente trabajo se pretende crear una aplicación ba- sada en algoritmos genéticos que permita predecir los cuatro equipos que pudieran obtener la copa mundial de fútbol. Para alcanzar la solución al problema planteado se parte de un conjunto inicial de individuos(Equipos), llamado población, generado de manera aleatoria. Cada uno de estos individuos representa una posible solución al problema y se adaptarán en mayor medida tras el paso de cada generación a la solución requerida. II. ESTADO DEL ARTE II-A. HISTORIA DE LOS ALGORITMOS GENÉTICOS El desarrollo de los Algoritmos Genéticos(AGs) se debe a gran medida a John Holland, investigador de la Universidad de Michigan. A finales de la década de los 60 desarrolló una técnica que imitaba en su funcionamiento a la selección natural. L. Bravo , Estudiante de la Universidad Nacional de Loja, Loja, Ecua- dor, E-mail: [email protected] K. Herrera,Estudiante de la Universidad Nacional de Loja, Loja, Ecua- dor, E-mail: [email protected] J. Martínez,Estudiante de la Universidad Nacional de Loja, Loja, Ecua- dor, E-mail: [email protected] H. Paz, Docente de la Universidad Nacional de Loja, Loja, Ecua- dor, E-mail: [email protected] Finales de los 59 y principios de los 60.- Algoritmos Genéticos programados en computadoras por biólogos evolutivos que buscaban explícitamente realizar modelos de aspectos de la evolución natural. En 1962, investigadores como G.E.P. Box, G.J. Fried- man, W.W. Bledsoe y H.J. Bremermann habían desa- rrollado independientemente algoritmos inspirados en la evolución para optimización de funciones y aprendizaje automático, pero sus trabajos generaron poca reacción. En 1965 surgió un desarrollo más exitoso, cuando Ingo Rechenberg, entonces de la Universidad Técnica de Ber- lín, introdujo una técnica que llamó estrategia evolutiva. En 1975 apareció el trabajo fundamental en el campo de los algoritmos genéticos con la publicación del libro “Adaptación en Sistemas Naturales y Artificiales” de John Holland’. A finales de 1980s la General Electric comenzó a vender el primer producto de Algoritmo Genético para solucio- nar problemas de procesos industriales. En 1989 se creó el producto Evolver que fue el pri- mer producto de Algoritmo Genético para Computadoras personales.[1] II-B. DEFINICIÓN DE ALGORITMOS GENÉTICOS “Los Algoritmos Genéticos(AGs) son algoritmos de búsqueda basados en la mecánica de la selección natural y de la genética natural. Combinan la supervivencia del más apto entre estructuras de secuencias con intercambio de información estructurado, aunque aleatorizado, para constituir así un algoritmo de búsqueda que tenga algo de las genialidades de las búsquedas humanas”. Un algoritmo genético consiste en una población de soluciones codificadas de forma similar a cromosomas. Cada uno de estos cromosomas tendrá asociado un ajuste o valor de bondad que cuantifica su validez como solución del problema. En función de este valor se le darán más o menos oportunidades de reproducción. Además, con cierta probabilidad se realizarán mutaciones de estos cromosomas.[1] Cuando el Algoritmo Genético es implementado, se hace de forma que involucre el siguiente ciclo: Generación de una población inicial de manera aleatoria. Evaluar el desempeño de todos los individuos de la población, tomando en cuenta alguna función objetivo.

description

Articulo Científico sobre Algoritmos Genéticos con un caso practico de selección de los 4 posibles equipos ganadores del mundial Brasil 2014

Transcript of Algotitmos geneticos mundial

Page 1: Algotitmos geneticos mundial

1

“Predicción de los Cuatro Posibles Ganadores de laCopa Mundial de Fútbol BRASIL 2014 a través de

Algoritmos Genéticos”L. Bravo, K. Herrera, J. Martínez, H. Paz,

Resumen—A pocos días de aproximarse el mundial de fútbolBRASIL 2014 y como aplicación de las técnicas de inteligenciaartificial, específicamente de los algoritmos genéticos, se hapropuesto desarrollar una aplicación bajo el lenguaje de pro-gramación Java, la cuál pretende pronosticar los cuatro posiblesequipos que pueden consagrarse como el campeón mundial deFútbol en base a distintos factores tales como el ranking de laFederación Internacional de Fútbol Asociada (FIFA) , el grupo enel que se encuentra ubicado, el número de copas obtenidas y losúltimos tres partidos jugados que tenga cada equipo clasificado.

Palabras Claves—Algoritmos genéticos, fútbol, optimización,mundial, java, JGAP

I. INTRODUCCIÓNLos Algoritmos Genéticos surgieron con la necesidad de

optimizar los procesos de búsqueda basada en la teoría de laevolución planteada por Charles Darwin, siendo esta técnicade inteligencia artificial una de las mas aceptadas para resolverproblemas de búsqueda. Los algoritmos genéticos emplean di-ferentes criterios de selección que ayudan a que una poblaciónevolucione de forma más optima para obtener resultados masexactos para un problema específico.En el presente trabajo se pretende crear una aplicación ba-sada en algoritmos genéticos que permita predecir los cuatroequipos que pudieran obtener la copa mundial de fútbol. Paraalcanzar la solución al problema planteado se parte de unconjunto inicial de individuos(Equipos), llamado población,generado de manera aleatoria. Cada uno de estos individuosrepresenta una posible solución al problema y se adaptarán enmayor medida tras el paso de cada generación a la soluciónrequerida.

II. ESTADO DEL ARTEII-A. HISTORIA DE LOS ALGORITMOS GENÉTICOS

El desarrollo de los Algoritmos Genéticos(AGs) se debe agran medida a John Holland, investigador de la Universidadde Michigan. A finales de la década de los 60 desarrollóuna técnica que imitaba en su funcionamiento a la selecciónnatural.

L. Bravo , Estudiante de la Universidad Nacional de Loja, Loja, Ecua-dor, E-mail: [email protected]

K. Herrera,Estudiante de la Universidad Nacional de Loja, Loja, Ecua-dor, E-mail: [email protected]

J. Martínez,Estudiante de la Universidad Nacional de Loja, Loja, Ecua-dor, E-mail: [email protected]

H. Paz, Docente de la Universidad Nacional de Loja, Loja, Ecua-dor, E-mail: [email protected]

Finales de los 59 y principios de los 60.- AlgoritmosGenéticos programados en computadoras por biólogosevolutivos que buscaban explícitamente realizar modelosde aspectos de la evolución natural.En 1962, investigadores como G.E.P. Box, G.J. Fried-man, W.W. Bledsoe y H.J. Bremermann habían desa-rrollado independientemente algoritmos inspirados en laevolución para optimización de funciones y aprendizajeautomático, pero sus trabajos generaron poca reacción.En 1965 surgió un desarrollo más exitoso, cuando IngoRechenberg, entonces de la Universidad Técnica de Ber-lín, introdujo una técnica que llamó estrategia evolutiva.En 1975 apareció el trabajo fundamental en el campode los algoritmos genéticos con la publicación del libro“Adaptación en Sistemas Naturales y Artificiales” deJohn Holland’.A finales de 1980s la General Electric comenzó a venderel primer producto de Algoritmo Genético para solucio-nar problemas de procesos industriales.En 1989 se creó el producto Evolver que fue el pri-mer producto de Algoritmo Genético para Computadoraspersonales.[1]

II-B. DEFINICIÓN DE ALGORITMOS GENÉTICOS

“Los Algoritmos Genéticos(AGs) son algoritmos debúsqueda basados en la mecánica de la selección naturaly de la genética natural. Combinan la supervivencia delmás apto entre estructuras de secuencias con intercambiode información estructurado, aunque aleatorizado, paraconstituir así un algoritmo de búsqueda que tenga algo de lasgenialidades de las búsquedas humanas”.

Un algoritmo genético consiste en una población desoluciones codificadas de forma similar a cromosomas.Cada uno de estos cromosomas tendrá asociado un ajusteo valor de bondad que cuantifica su validez como solucióndel problema. En función de este valor se le darán más omenos oportunidades de reproducción. Además, con ciertaprobabilidad se realizarán mutaciones de estos cromosomas.[1]Cuando el Algoritmo Genético es implementado, se hace deforma que involucre el siguiente ciclo:

Generación de una población inicial de manera aleatoria.Evaluar el desempeño de todos los individuos de lapoblación, tomando en cuenta alguna función objetivo.

Page 2: Algotitmos geneticos mundial

2

Crear una nueva población mediante la ejecución deoperaciones como el cruce y mutación sobre individuoscuyo desempeño haya sido evaluado.Descartar la población vieja e iterar usando la nueva,hasta que el número de generaciones alcanza al criteriode terminación.

Figura 1. Implementación de un Algoritmo Genético

II-C. CLASIFICACIÓN DE LOS ALGORITMOS GENÉTI-COS

II-C1. Algoritmo Genético Simple: El AlgoritmoGenético Simple, también denominado Canónico, se necesitauna codificación o representación del problema, que resulteadecuada al mismo. Además se requiere una función deajuste o adaptación al problema, la cual asigna un númeroreal a cada posible solución codificada. Durante la ejecucióndel algoritmo, los padres deben ser seleccionados para lareproducción, a continuación dichos padres seleccionadosse cruzarán generando dos hijos, sobre cada uno de loscuales actuará un operador de mutación. El resultado de lacombinación de las anteriores funciones será un conjunto deindividuos (posibles soluciones al problema), los cuales enla evolución del Algoritmo Genético formarán parte de lasiguiente población.

II-C2. Algoritmos Genéticos de Estado Fijo: Utilizan elesquema generacional de los mamíferos y otros animalesde vida larga,donde coexisten padres y sus descendientes,En este modelo,no solo se deben seleccionar los dosindividuos a ser padres sino también cuales de la poblaciónanterior serán eliminados para dar espacio a los descendientes.

II-C3. Algoritmos Genéticos Paralelos: Son aquellosdonde al evolucionar se recorren simultáneamente muchassoluciones.cada una representada por un individuo de lapoblación.

II-C4. Modelo de Islas: Si se tiene una población deindividuos, esta se divide en subpoblaciones que evolucionanindependientemente como un Algoritmo Genético normal.

II-C5. Modelo Celular: Coloca cada individuo en unamatriz, dónde cada uno solo podrá reproducirse con losindividuos que tenga a su alrededor, escogiendo al azar o almejor adaptado.

II-D. ELEMENTOS DE LOS ALGORITMOS GENÉTICOS

II-D1. Individuo : Un individuo es un ser que caracterizasu propia especie. El individuo es un cromosoma y es elcódigo de información sobre el cual opera el algoritmo. Cadasolución parcial del problema a optimizar está codificada enforma de cadena o String en un alfabeto determinado, quepuede ser binario.

II-D2. Población : A un conjunto de individuos(Cromosomas) se le denomina población. El método deAlgoritmos Genéticos consiste en ir obteniendo de formasucesiva distintas poblaciones. Por otra parte un AlgoritmoGenético trabaja con un conjunto de puntos representativosde diferentes zonas del espacio de búsqueda y no con un solopunto (como lo hace Hillclimbing).

II-D3. Función Fitness : La única restricción para usarun algoritmo genético es que exista una función llamadafitness, que le informe de cuan bueno es un individuo dadoen la solución deun problema. Esta función fitness o deevaluación es el principal enlace entre el Algoritmo Genéticoa un problema real, es la efectividad y eficiencia de la funciónfitness que se tome, por lo tanto debe procurarse que la funciónfitness sea similar. [2]

II-E. ESTRUCTURA DE LOS ALGORITMOS GENÉTICOS

II-E1. Tipos de Representación : Una representacióndebe identificar las características constituyentes del conjuntoa estudiar, de forma que distintas representaciones dan lugara distintas perspectivas y por tanto distintas soluciones.Tipos básicos de representaciones:

Representación binaria: Cada gen es un valor 1 ó 0.

Figura 2. Representación Binaria

Page 3: Algotitmos geneticos mundial

3

Representación entera: Cada gen es un valor entero.

Figura 3. Representación Entera

Representación real: Cada gen es un valor real.

Figura 4. Representación Real

II-E2. Población Inicial : Una cuestión que se puedeplantear es la relacionada con el tamaño idóneo de lapoblación. Parece intuitivo que las poblaciones pequeñascorren el riesgo de no cubrir adecuadamente el espaciode búsqueda, mientras que el trabajar con poblaciones degran tamaño puede acarrear problemas relacionados con elexcesivo costo computacional.

II-E3. Función Objetivo : El resultado al cual se deseallegar.

II-E4. Operador de Selección : El operador deSelección es el encargado de transmitir y conservar aquellascaracterísticas de las soluciones que se consideran valiosasa lo largo de las generaciones. El principal medio para quela información útil se transmita es que aquellos individuosmejor adaptados tengan más probabilidades de reproducirse.

Selección directa: Toma elementos de acuerdo a uncriterio objetivo, como son los x mejores,los x peores,los del tipo el cuarto individuo a partir del últimoescogido son empleados con mucha frecuencia cuandose quieren seleccionar dos individuos distintos.

Selección aleatoria: Puede ser realizado por selecciónequiprobable o selección estocástica.

Selección equiprobable: Todos tienen la mismaprobabilidad de ser escogidos.

Selección estocástica: La probabilidad de que unindividuo sea escogido depende de una heurística.

• Selección por sorteo: Cada individuo de lapoblación tiene asignado un rango proporcionaloinversamente proporcional.

• Selección por escaños: Se divide el rango delnúmero aleatorio en un número predeterminado deescaños.

• Selección por restos estocásticos: Igual que elmétodo de selección de escaños, sólo que losescaños no asignados directamente.

Selección por Ruleta: Con este método la probabilidadque tiene un individuo de reproducirse es proporcionala su valor de función de evaluación, es decir, a suadaptación. En este método se define un rango con lascaracterísticas de la selección por sorteo. El número alazar será un número aleatorio forzosamente menor queel tamaño del rango. El elemento escogido será aquelen cuyo rango esté el número resultante de sumar elnúmero aleatorio con el resultado total que sirvió paraescoger el elemento anterior.

Selección por Ranking: Desarrollado por Whitley(1989)consiste en calcular las probabilidades de reproducciónatendiendo a la ordenación de la población por el valorde adaptación en vez de atender simplemente a su valorde adecuación. Estas probabilidades se pueden calcularde diversas formas, aunque el método habitual es elranking lineal.

Selección por Torneo: En este caso dos individuosson elegidos al azar de la población actual y el mejoro más apto de los dos se coloca en la generaciónsiguiente. Esto continúa hasta que se complete la nuevapoblación. Basado en el rango. En este esquema semantiene un porcentaje de la población, generalmente lamayoría, para la siguiente generación.Se coloca toda lapoblación por orden de aptitud, y los M menos dignosson eliminados y sustituidos por la descendencia dealguno de los M mejores con algún otro individuo de lapoblación.[3]

II-E5. Operador de Cruce : El operador de Cruce permiterealizar una exploración de toda la información almacenadahasta el momento en la población y combinarla para crearmejores individuos. Dentro de los métodos habitualesdestacamos los siguientes:

Cruce de un punto: Es el método de cruce mássencillo. Se selecciona una posición en las cadenasde los progenitores, y se intercambian los genes a laizquierda de esta posición.

Page 4: Algotitmos geneticos mundial

4

Figura 5. Cruce por un punto

Cruce de n puntos: Es una generalización del métodoanterior. Se seleccionan varias posiciones (n) en lascadenas de los progenitores y se intercambian los genesa ambos lados de estas posiciones.

Figura 6. Cruce por n puntos

Cruce Uniforme: Se realiza un test aleatorio para decidirde cual de los progenitores se toma cada posición de lacadena.[4]

Figura 7. Cruce uniforme

Cruces para permutación: Existe una familia de crucesespecíficas para los problemas de permutación, siendoalgunos de ellos:

• Cruce de mapeamiento parcial: Toma unasubsecuencia del genoma del padre y procurapreservar el orden absoluto de los fenotipos - esdecir, orden y posición en el genoma- del resto delgenoma lo más parecido posible de la madre.

• Cruce de orden: Toma una subsecuencia delgenoma del padre y procura preservar el ordenrelativo de los fenotipos del resto del genoma lomás parecido posible de la madre.

II-E6. Operador de Mutación: La mutación se consideraun operador básico, que proporciona un pequeño elemento de

aleatoriedad en el entorno de los individuos de la población.Si bien el operador de cruce es el responsable de efectuar labúsqueda a lo largo del espacio de posibles soluciones, eloperador de mutación va ganando en importancia a medidaque la población de individuos va convergiendo. Existenvarias técnicas distintas de mutación. Algunas de éstas son:

Mutación de bit: Existe una única probabilidad de quese produzca una mutación de algún bit. De producirse,el algoritmo toma aleatoriamente un bit.

Mutación de gen: Igual que la mutación de bit,solamente que, en vez de cambiar un bit, cambia un gencompleto.

Mutación multigen: Igual que la mutación de multibit,solamente que, en vez de cambiar un conjunto debits, cambia un conjunto de genes. Puede sumar unvalor aleatorio, un valor constante, o introducir un genaleatorio nuevo.

II-F. ¿QUÉ PROBLEMAS PODEMOS RESOLVER CONALGORITMOS GENÉTICOS?

La aplicación más común de los AGs ha sido la soluciónde problemas de optimización en donde han mostrado sereficientes y confiables.Sin embargo, no todos los problemas pudieran ser apropiadospara la técnica y se recomienda en general tomar en cuentalas siguientes características del mismo antes de usarla:

Su espacio de búsqueda o sus posibles soluciones debede estar delimitado dentro de un cierto rango.

Debe permitir la definición de una función de aptitudque nos indique que tan buena o mala es cierta respuesta.

Las soluciones deben programarse de una formaque resulte relativamente fácil de implementar en elcomputador.[5]

II-G. ÁREA DE APLICACIÓN DE LOS ALGORITMOS GE-NÉTICOS

II-G1. Optimización : Se trata de un campo especialmenteabonado para el uso de los AG, por las característicasintrínsecas de estos problemas. No en vano fueron la fuentede inspiración para los creadores de estos algoritmos. LosAG se han utilizado en numerosas tareas de optimización,incluyendo la optimización numérica, y los problemas deoptimización combinatoria.

II-G2. Programación automática : Los AG se hanempleado para desarrollar programas para tareas específicas,y para diseñar otras estructuras computacionales tales comoel autómata celular, y las redes de clasificación.

Page 5: Algotitmos geneticos mundial

5

II-G3. Aprendizaje máquina : Los AG se han utilizadotambién en muchas de estas aplicaciones , tales como lapredicción del tiempo o la estructura de una proteína. Hanservido asimismo para desarrollar determinados aspectosde sistemas particulares de aprendizaje, como puede ser elde los pesos de una red neuronal, las reglas para sistemasde clasificación de aprendizaje o sistemas de producciónsimbólica y los sensores para los robots.

II-G4. Economía : En este caso, se ha hecho uso de estosAlgoritmos para modelar procesos de innovación, el desarrollode estrategias de puja, y la aparición de mercados económicos.

II-G5. Sistemas inmunes : Al momento de modelarvarios aspectos de los sistemas inmunes naturales, incluyendola mutación somática durante la vida de un individuo y eldescubrimiento de familias de genes múltiples en tiempoevolutivo, ha resultado útil el empleo de esta técnica.

II-G6. Genética de poblaciones : En el estudio depreguntas del tipo "¿ Bajo qué condiciones será viableevolutivamente un gen para la recombinación?".

II-G7. Evolución y aprendizaje: Los AG se han utilizadoen el estudio de las relaciones entre el aprendizaje individualy la evolución de la especie.

II-G8. Sistemas sociales: En el estudio de aspectosevolutivos de los sistemas sociales, tales como la evolucióndel comportamiento social en colonias de insectos, y laevolución de la cooperación y la comunicación en sistemasmultiagentes.[6]

II-H. LIBRERÍA JGAP

Figura 8. Librería JGAP

JGAP son las siglas de Java Genetic Algorithms Package(paquete de algoritmos genéticos para Java). Es uncomponente de programación de algoritmos genéticosque se utiliza como un framework.JGAP es software libre y se puede distribuir bajo la GNULesser PublicLicense 2.1 o posterior. Las aplicacionescomerciales que no publiquen sucódigo fuente debendistribuirse bajo la Mozilla Public License.[7]

II-H1. Interfaces, Clases y Excepciones de la LibreríaJGAP: JGAP nos proporciona las siguientes interfaces:

Figura 9. Interfaces de la librería JGAP

JGAP cuenta con las siguientes clases:

Figura 10. Clases de la librería JGAP

JGAP tiene las siguientes excepciones:

Figura 11. Excepciones de la librería JGAP

Se trata de una solución genérica, sin relación alguna conun problema particular. Por esa razón se deben crear nuevasclases que heredan o implementan las clases e interfaces

Page 6: Algotitmos geneticos mundial

6

mencionadas. Así se adapta JGAP al problema específico quese quiere solucionar.

II-H2. Motor Genético: El “motor genético” creavarias soluciones (individuos) aleatoriamente con elmétodo randomInitialGenotype().Aplica operadores genéticos(mutación y combinación) para que surjan nuevas solucionescon el método evolve (). Pone a prueba cada solucióncon la función de ajuste evaluate(). Y por últimoretorna el cromosoma del individuo mejor adaptado congetFittestChromosome().

III. IMPLEMENTACIÓN

Código de la Clase TestEquipoFitness en la que definimosa través de la utilización de algoritmos genéticos las caracte-rístcas de que va a tener la solución:

%CODIGO DE LA CLASE TestEquipoFitness

package ec.unl.edu.ag;

import java.util.ArrayList;import java.util.List;import java.util.StringTokenizer;import org.jgap.Chromosome;import org.jgap.Configuration;import org.jgap.DefaultFitnessEvaluator;import org.jgap.Gene;import org.jgap.Genotype;import org.jgap.IChromosome;import org.jgap.impl.DefaultConfiguration;import org.jgap.impl.IntegerGene;import org.jgap.impl.SwappingMutationOperator;import ec.unl.edu.clases.Equipo;import ec.unl.edu.operaciones.Operaciones;

public class TestEquipoFitness {

String respuesta = "";String fitnessValor = "";

public String getRespuesta() {return respuesta;}

public void setRespuesta(String respuesta) {this.respuesta = respuesta;}

private ArrayList<String> respuestaVista=new ArrayList<String>();

public ArrayList<String> getRespuestaVista() {return respuestaVista;}

public void setRespuestaVista(ArrayList<String> respuestaVista) {this.respuestaVista = respuestaVista;}

private Configuration configuracion;private SwappingMutationOperator

operadorMutacion;

private EquipoFitnessFunctionequipoFitness = null;

public ArrayList<Equipo> equipos =new ArrayList<Equipo>();

public List genes = new ArrayList();public ArrayList<String> listaRespuesta =new ArrayList<String>();

Operaciones operaciones = new Operaciones();

private static final int MAX_ALLOWED_EVOLUTIONS =2000;

private Chromosome equipoCromosoma = null;

public void inicializar(String tipo)throws Exception {

StringTokenizer st =new StringTokenizer(tipo);

while (st.hasMoreElements()) {String gen = st.nextToken();genes.add(gen);}

equipos = operaciones.recuperarEquipos();

configuracion = new DefaultConfiguration();Configuration.resetProperty(Configuration.PROPERTY_FITEVAL_INST);configuracion.setFitnessEvaluator(new DefaultFitnessEvaluator());configuracion.getGeneticOperators().clear();

operadorMutacion =new SwappingMutationOperator(configuracion);configuracion.addGeneticOperator(operadorMutacion);configuracion.setPreservFittestIndividual(true);configuracion.setPopulationSize(1000);configuracion.setKeepPopulationSizeConstant(false);

equipoFitness = new EquipoFitnessFunction(equipos, genes);

configuracion.setFitnessFunction(equipoFitness);

Gene[] equiposGenes = new Gene[4];

equiposGenes[0] = new IntegerGene(configuracion, 0,equipos.size()-1);equiposGenes[1] = new IntegerGene(configuracion, 0,equipos.size()-1);equiposGenes[2] = new IntegerGene(configuracion, 0,equipos.size()-1);equiposGenes[3] = new IntegerGene(configuracion, 0,equipos.size()-1);

equipoCromosoma = new Chromosome(configuracion, equiposGenes);

equiposGenes[0].setAllele(0);equiposGenes[1].setAllele(1);equiposGenes[2].setAllele(2);equiposGenes[3].setAllele(3);

Page 7: Algotitmos geneticos mundial

7

configuracion.setSampleChromosome(equipoCromosoma);

}

public void pruebaSeleccionarMejoresEquipos()throws Exception {

equipos = operaciones.recuperarEquipos();Genotype poblacion =Genotype.randomInitialGenotype(configuracion);

IChromosome mejorSolucionHastaAqui =equipoCromosoma;

for (int i=0;i<MAX_ALLOWED_EVOLUTIONS;i++) {// evolucionar poblacionpoblacion.evolve();IChromosome candidatoAMejorSolucion =poblacion.getFittestChromosome();

if (candidatoAMejorSolucion.getFitnessValue() >mejorSolucionHastaAqui.getFitnessValue()) {mejorSolucionHastaAqui =candidatoAMejorSolucion;

}}this.setRespuestaVista(retornarSolucionFinal(mejorSolucionHastaAqui,equipos));

}

public ArrayList<String> retornarSolucionFinal(IChromosome solution,ArrayList<Equipo> equipos) {

fitnessValor =String.valueOf(solution.getFitnessValue());

for (int i=0;i<solution.size(); i++) {int index =(Integer) solution.getGene(i).getAllele();Equipo equipo = (Equipo) equipos.get(index);listaRespuesta.add(equipo.getNombre().toString());}return listaRespuesta;}

public String presentarRespuesta()throws Exception {

equipos =operaciones.recuperarEquipos();

Genotype poblacion =Genotype.randomInitialGenotype(configuracion);String salida = "";

IChromosome mejorSolucionHastaAqui =equipoCromosoma;

for (int i=0; i<MAX_ALLOWED_EVOLUTIONS;i++){// evolucionar poblacionpoblacion.evolve();

IChromosome candidatoAMejorSolucion =poblacion.getFittestChromosome();

salida = salida+ candidatoAMejorSolucion+"\n";}salida = salida+ "\n >>> Valor Fitness: "+ fitnessValor;

return salida;}}

La clase EquipoFitnessFunction es la que trataremos las condi-ciones de entrada que tendrá nuestro algoritmo: el número decopa, el ranking en la FIFA y el resultado de sus tres últimospartidos:

%CODIGO DE LA CLASE EquipoFitnessFunction

package ec.unl.edu.ag;

import java.util.ArrayList;import java.util.List;

import org.jgap.FitnessFunction;import org.jgap.IChromosome;import org.jgap.impl.IntegerGene;

import ec.unl.edu.clases.Equipo;

public class EquipoFitnessFunctionextends FitnessFunction {

ArrayList<Equipo> equipos =new ArrayList<Equipo>();

List genes =new ArrayList();

public EquipoFitnessFunction(ArrayList<Equipo> equipos,List genes) {

this.equipos = equipos;this.genes = genes;

}

@Overrideprotected double evaluate(IChromosome icromosoma) {

double puntuacion = 0;List dups = new ArrayList();int malaSolucion = 1;

for(int i=0;i<icromosoma.size();i++) {

IntegerGene un_gen =(IntegerGene) icromosoma.getGene(i);

int indice =(Integer) icromosoma.getGene(i).getAllele();

Page 8: Algotitmos geneticos mundial

8

if (dups.contains(indice)) {malaSolucion = 0;} else {dups.add(indice);}

Equipo equipo = equipos.get(indice);

double puntuacionGenes =this.obtenerPuntuacionGenes(equipo);

if(puntuacionGenes == 0){malaSolucion = 0;}

double resultado1 =equipo.getAntepenultimo_partido();double resultado2 =equipo.getPenultimo_partido();double resultado3 =equipo.getUltimo_partido();

puntuacion =(puntuacion+ resultado1+ resultado2+ resultado3+ puntuacionGenes);

}return (puntuacion*malaSolucion);}

private int obtenerPuntuacionGenes(Equipo equipo) {

int _ranking=0;int _partido_antepenultimo=0;int _partido_penultimo=0;int _partido_ultimo=0;int total=0;

int numero_copas =equipo.getNumero_copas();int ranking_fifa =equipo.getRanking();int antepenultimo =equipo.getAntepenultimo_partido();int penultimo =equipo.getPenultimo_partido();int ultimo =equipo.getUltimo_partido();

if (antepenultimo == 1) {_partido_antepenultimo = 1;}if (antepenultimo == 0) {_partido_antepenultimo = 0;}if (antepenultimo == -1) {_partido_antepenultimo = -1;}if (penultimo == 1) {_partido_penultimo = 1;}if (penultimo == 0) {_partido_penultimo = 0;

}if (penultimo == -1) {_partido_penultimo = -1;}if (ultimo == 1) {_partido_ultimo = 1;}if (ultimo == 0) {_partido_ultimo = 0;}if (ultimo == -1) {_partido_ultimo = -1;}

if ((ranking_fifa >= 1)&& (ranking_fifa <= 10)) {_ranking = 12;}

if ((ranking_fifa >= 11)&& (ranking_fifa <= 20)) {_ranking = 11;}

if ((ranking_fifa >= 21)&& (ranking_fifa <= 30)) {_ranking = 10;}

if ((ranking_fifa >= 31)&& ((ranking_fifa) <= 40)) {_ranking = 9;}

if ((ranking_fifa >= 41)&& (ranking_fifa <= 50)) {_ranking = 8;}

if ((ranking_fifa >= 51)&& (ranking_fifa <= 60)) {_ranking = 7;}

if ((ranking_fifa >= 61)&& (ranking_fifa <= 70)) {_ranking = 6;}

if ((ranking_fifa >= 71)&& (ranking_fifa <= 80)) {_ranking = 5;}

if ((ranking_fifa >= 81)&& (ranking_fifa <= 90)) {_ranking = 4;}

if ((ranking_fifa >= 91)&& (ranking_fifa <= 100)) {_ranking = 3;}

if ((ranking_fifa >= 101)&& (ranking_fifa <= 110)) {_ranking = 2;}

Page 9: Algotitmos geneticos mundial

9

if ((ranking_fifa >= 111)) {_ranking = 1;}

total =numero_copas+ _ranking+ _partido_antepenultimo+ _partido_penultimo+ _partido_ultimo;

return total;}}

Como se ha propuesto obtener los cuatro mejores candidatosa ganar el Mundial tenemos, la clase en la cual se ejecuta elalgoritmo genético la cual es la siguiente:

/** Evento dentro del boton Obtener* para ejecutar el Algoritmo* Genetico*/btnObtener.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {

/** llamado a la clase TestEquipoFitness* para obtener los resultados*/

TestEquipoFitness test =new TestEquipoFitness();

try {test.inicializar(" ");test.pruebaSeleccionarMejoresEquipos();String valorConsola =test.presentarRespuesta();

txtAreaConsola.setText(valorConsola);

/** obtiene la lista de resultados* y los presenta en los* cuadros de texto* correspondientes*/ArrayList<String> resultados =test.getRespuestaVista();txtEquipo1.setText(resultados.get(0));txtEquipo2.setText(resultados.get(1));txtEquipo3.setText(resultados.get(2));txtEquipo4.setText(resultados.get(3));

Configuration.reset();

} catch (Exception e) {e.printStackTrace();}

}});

IV. RESULTADOS

En esta figura 12 podemos observar de manera generalla aplicación:

Figura 12. Aplicación para el Mundial 2014 en base a AG

En la figura 13 podemos ver como es presentado unseleccionado:

Figura 13. Presentación de un Equipo

En la figura 14 podemos ver como se puede sermodificar a un seleccionado:

Page 10: Algotitmos geneticos mundial

10

Figura 14. Modificación de un Equipo

En la figura 15 podemos ver cual es el resultado, luegode la ejecución del AG:

Figura 15. Presentación de Resultado:Cuatro posibles equipos ganadores

El código de la aplicación estará disponible en la siguientedirección:

github.com/JhymerMartinez/AlgoritmosGeneticosMundial.git

V. CONCLUSIONES Y RECOMENDACIONES

Como podemos comprobar los algoritmos genéticossirven para problemas de optimización de recursos,en este caso nos permite obtener los mejores equiposcandidatos a ganar el mundial.

El mejor resultado que podemos obtener, dependerá dela ubicación que tenga el equipo en el ranking dentrode la clasificación, el número de copas ganadas, asícomo se pueden agregar otros factores que permitandeterminar con más exactitud el resultado.

La utilización de una librería como JGAP en nuestraaplicación permite una mejor implementación de losalgoritmos genéticos en aplicaciones con lenguaje JAVA.

Los algoritmos genéticos utilizan una simulación de losprocesos genéticos que se realizan en los genomas delser humano, su implementación y uso es cada vez másaceptada en la comunidad científica.

Es importante considerar la utilización de una librería dealgoritmos genéticos como JGAP, la cual nos permitiráaplicar los conocimientos de algoritmos genéticos en laprogramación utilizando lenguaje JAVA.

Este tipo de aplicaciones prácticas permiten mejorar lacomprensión de los conocimientos teóricos referentes ala técnica de algoritmos genéticos.

REFERENCIAS[1] HERNANDEZ. LYDY,LOPEZ. RICARDO,MENDIOLA.ROSA

Algoritmos Genéticos, Ingeniería Cibernética y en SistemasComputacionales, Universidad de la Salle: Bogotá, 2011.[En línea].Available:http://www.maestrosilvestre.aprenderapensar.net/files/2011/05/02-AG.doc.[Último acceso: 27 de Mayo 2014].

[2] RAMIREZ.CAMILO, Algoritmos Genéticos,, Bogotá, 2013.[Enlínea]. Available:http://camilortte.blogspot.com/2013/04/algoritmos-geneticos.html.[Último acceso: 27 de Mayo 2014].

[3] GIL.NATHYELEM, Algoritmos Genéticos,Universidad Nacionalde Colombia,2006. [En línea]. Available: http://www.trabajos-pdf/algoritmos-geneticos/algoritmos-geneticos.pdf. [Último acceso:27 de Mayo 2014].

[4] GESTAL. MARCOS, Introducción a los Algoritmos Ge-néticos,Universidad de Coruña,2006.[En línea]. Available:http://sabia.tic.udc.es/mgestal/cv/aaggtutorial/node14.html. [Últimoacceso: 27 de Mayo 2014].

[5] Algoritmos Genéticos,[En línea]. Available:http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/temageneticos.pdf[Último acceso: 27 de Mayo 2014].

[6] Algoritmos Genéticos,[En línea]. Availa-ble:http://users.exa.unicen.edu.ar/ icompevol/filminasenpdf/tercera-clase.pdf. [Último acceso: 27 de Mayo 2014].

[7] Package org.jgap,[En línea]. Availa-ble:http://jwork.org/scavis/api/doc.php/ org/jgap/package-summary.html[Último acceso: 27 de Mayo 2014].

Page 11: Algotitmos geneticos mundial

11

Luis Bravo

Estudiante de la Carrera de Ingeniería en Sistemas de laUniversidad Nacional de Loja, Nivel Medio en Software Libre, Redesy Mantenimiento, Provincia de Loja, Ciudad Loja, Ecuador, 2014.

Karla Herrera

Estudiante de la Carrera de Ingeniería en Sistemas de laUniversidad Nacional de Loja, Programador Senior en Java, Analistade Sistemas nivel medio, Provincia de Loja, Ciudad Loja, Ecuador,2014.

Jhymer Martínez

Estudiante de la Carrera de Ingeniería en Sistemas de laUniversidad Nacional de Loja, Programador Senior en Java, Analistade Sistemas nivel medio,Provincia de Loja, Ecuador, 2014.