Predicción del mundial con Algoritmos Genéticos

9

Click here to load reader

description

Programa que predice los 4 posibles finalistas del mundial 2014 utilizando algoritmos genéticos

Transcript of Predicción del mundial con Algoritmos Genéticos

Page 1: Predicción del mundial con Algoritmos Genéticos

Algorítmos Genéticos

Faicán RosaIngeniería en Sistemas

Mejía JorgeIngeniería en Sistemas

El presente documento tiene como finalidad dar un enfoque de Algoritmos Genéticos, teoría ypráctica con la finalidad de resumir los conceptos principales dentro de esta tem ática. Permi-tiendo hacer uso de este documento de forma sencilla y resumida.

Introducción

La capacidad del ser humano para predecir el comporta-miento de su entorno, se ha ido incrementando con el pasodel tiempo. De igual modo, ha comprendido que, si bienera capaz de controlar muchos aspectos de su vida, y suinteracción con lo que le rodeaba, no lo era para otros tantos.

La inteligencia artificial es responsable de muchosde esos logros. Los pioneros de esta ciencia estaban taninteresados en la electrónica, como en la biología, y por esosus aplicaciones iban desde calcular trayectorias de misiles,a tratar de modelizar el cerebro, de imitar el proceso deaprendizaje humano, y de simular la evolución biológica.

John Hollanden 1962 asienta las bases para desarrollar loque hoy en día se conoce como algoritmos genéticos.

Constituido como un método de búsqueda que imita lateoría de la evolución biológica de Darwin para la resoluciónde problemas. Para ello, se parte de una población inicialde la cual se seleccionan los individuos más capacitadospara luego reproducirlos y mutarlos para finalmente obtenerla siguiente generación de individuos que estarán másadaptados que la anterior generación.

História

En los últimos años, la comunidad científica internacionalha mostrado un creciente interés en una nueva técnica debúsqueda basada en la teoría de la evolución y que seconoce como el algoritmo genético. Esta técnica se basa enlos mecanismos de selección que utiliza la naturaleza, deacuerdo a los cuales los individuos más aptos de una po-blación son los que sobreviven, al adaptarse más fácilmentea los cambios que se producen en su entorno.(de la Peña, s.f.)

En la actualidad se sabe que los cambios se efectúan enlos genes (unidad básica de codificación de cada uno de losatributos de un ser vivo) de un individuo, y que los atributosmás deseables del mismo se transmiten a sus descendientes,

cuando éste se reproduce sexualmente.

Un investigador de la Universidad de Michigan llamadoJohn Holland estaba consciente de la importancia de laselección natural, y a fines de los 60s desarrolló una técnicaque permitió incorporarla en un programa de computadora.Su objetivo era lograr que las computadoras aprendieranpor sí mismas. A la técnica que inventó Holland se le llamóoriginalmente "planes reproductivos", pero se hizo popularbajo el nombre .algoritmo genético"tras la publicación de sulibro en 1975.

Este libro presentaba el algoritmo genético como unaabstracción de la evolución biológica, y proporcionaba elentramado teórico para la adaptación bajo el algoritmogenético. El Algoritmo Genético de Holland era un métodopara desplazarse, de una población de cromosomas (bits)a una nueva población, utilizando un sistema similar a la“selección natural” junto con los operadores de cruces,mutaciones e inversión inspirados en la genética. En esteprimitivo algoritmo, cada cromosoma consta de genes (bits),y cada uno de ellos es una muestra de un alelo particular (0o 1). El operador de selección escoge, entre los cromosomasde la población, aquellos con capacidad de reproducción, yentre éstos, los que sean más “compatibles”, producirán másdescendencia que el resto.(Recalde, s.f.)

La mayor innovación de Holland fue la de introducir unalgoritmo basado en poblaciones con cruces, mutacionese inversiones2. Es más, Holland fue el primero en intentarcolocar la computación evolutiva sobre una base teóricafirme.Hasta hace poco, esta base teórica, fundamentada en lanoción de “esquemas”, fue la estructura sobre la quese edificaron la mayoría de los trabajos teóricos sobrealgoritmos genéticos en las décadas siguientes.

En estos últimos años se ha generado una amplia interac-ción entre los investigadores de varios métodos de compu-tación evolutiva, rompiéndose las fronteras entre algoritmosgenéticos, estrategias evolutivas y programación evolutiva.

Page 2: Predicción del mundial con Algoritmos Genéticos

Mejía Jorge- Faicán Rosa Tutor: Ing. Henry Paz

Como consecuencia, en la actualidad, el término “algoritmogenético” se utiliza para designar un concepto mucho másamplio del que concibió Holland.

Genética

Figura 1. Genética

Estudia la forma como las características de los organis-mos vivos, sean éstas morfológicas, fisiológicas, bioquímicaso conductuales, se transmiten, se generan y se expresan,de una generación a otra, bajo diferentes condicionesambientales.

La genética, pues, intenta explicar cómo se heredan y semodifican las características de los seres vivos, que puedenser de forma, fisiológicas, e incluso de comportamiento, ola forma de aparearse de los mamíferos. De esta forma, lagenética trata de estudiar cómo estas características pasande padres a hijos, a nietos, etc., y por qué, a su vez, varíangeneración tras generación.

La genética es la disciplina unificadora de las cienciasbiológicas, ya que sus principios generales se aplican a todoslos seres vivos. En todas las áreas de la Biología se recurrea los conceptos que gobiernan la herencia, cuando se tratade explicar la variabilidad existente en la naturaleza, asícomo también cuando el hombre transforma la naturalezapara su beneficio. El mejoramiento de plantas y animales,la comprensión de la patología humana y producción demedicamentos por medio de la biotecnología, son apenasalgunos ejemplos.

La genética es la ciencia que se ocupa del estudio dela estructura y función de los genes en los diferentesorganismos, así como también del comportamiento de losgenes a nivel de poblaciones.(LÓPEZ, s.f.)

El desarrollo de nuevos métodos para la investigacióngenética en los últimos años, ha transformado a estadisciplina en el centro de la biología y de la medicina enparticular. Así por ejemplo, el estudio de los principios

genéticos básicos y sus aplicaciones en el diagnóstico, es desuma importancia en todas las profesiones relacionadas conla salud.

Además de su relevancia teórica para las ciencias biológi-cas, los principios de la genética tienen importantes aplica-ciones prácticas, ya sea en la producción de vegetal, tanto dealimentos como productos de interés industrial o farmaceu-tico, así como en la salud humana y la produccíon y saludanimal.

Algoritmos Genéticos

Los Algoritmos Genéticos son métodos adaptativosque pueden usarse para resolver problemas de búsqueday optimización. Están basados en el proceso genético delos organismos vivos. A lo largo de las generaciones, laspoblaciones evoluciónan en la naturaleza de acorde con losprincipios de la selección natural y la supervivencia de losmás fuertes, postulados por Darwin (1859).

Por imitación de este proceso, los Algoritmos Genéticosson capaces de ir creando soluciones para problemas delmundo real. La evolución de dichas soluciones hacia valoresóptimos del problema depende en buena medida de unaadecuada codificación de las mismas.(Martí, s.f.)

Figura 2. Individuo Genético Binario

En la naturaleza los individuos de una población compitenentre sí en la búsqueda de recursos tales como comida, aguay refugio. Incluso los miembros de una misma especiecompiten a menudo en la búsqueda de un compañero.Aquellos individuos que tienen más éxito en sobrevivir y enatraer compañeros tienen mayor probabilidad de generar ungran número de descendientes. Por el contrario individuospoco dotados producirán un menor número de descendientes.

Esto significa que los genes de los individuos mejoradaptados se propagarán en sucesivas generaciones hacia unnúmero de individuos creciente.La combinación de buenas características provenientes dediferentes ancestros, puede a veces producir descendientessuperindividuos", cuya adaptación es mucho mayor quela de cualquiera de sus ancestros. De esta manera, las

UNIVERSIDAD NACIONAL DE [email protected], [email protected]

2

Page 3: Predicción del mundial con Algoritmos Genéticos

Mejía Jorge- Faicán Rosa Tutor: Ing. Henry Paz

especies evolucionan logrando unas características cada vezmejor adaptadas al entorno en el que viven. Los AlgoritmosGenéticos usan una analogía directa con el comportamientonatural.

Trabajan con una población de individuos, cada unode los cuales representa una solución factible a un pro-blema dado. A cada individuo se le asigna un valor ópuntuación, relacionado con la bondad de dicha solución.En la naturaleza esto equivaldría al grado de efectividad deun organismo para competir por unos determinados recursos.

Cuanto mayor sea la adaptación de un individuo alproblema, mayor será la probabilidad de que el mismosea seleccionado para reproducirse, cruzando su materialgenético con otro individuo seleccionado de igual forma.Este cruce producirá nuevos individuos descendientes de losanteriores los cuales comparten algunas de las característicasde sus padres.

Cuanto menor sea la adaptación de un individuo, menorserá la probabilidad de que dicho individuo sea seleccionadopara la reproducción, y por tanto de que su material genéticose propague en sucesivas generaciones.(Valencia, s.f.)

De esta manera se produce una nueva población deposibles soluciones, la cual reemplaza a la anterior lainteresante propiedad de que contiene una mayor proporciónde buenas características en comparación con la poblaciónanterior. Así a lo largo de las generaciones las buenascaracterísticas se propagan a través de la población.

Favoreciendo el cruce de los individuos mejor adaptados,van siendo exploradas las áreas más prometedoras delespacio de búsqueda. Si el Algoritmo Genético ha sido biendiseñado, la población convergerá hacia una solución óptimadel problema.

El poder de los Algoritmos Genéticos proviene del hechode que se trata de una técnica robusta, y pueden tratarcon éxito una gran variedad de problemas provenientesde diferentes áreas, incluyendo aquellos en los que otrosmétodos encuentran dificultades.

Si bien no se garantiza que el Algoritmo Genéticoencuentre la solución óptima del problema, existe evidenciaempírica de que se encuentran soluciones de un nivel acep-table, en un tiempo competitivo con el resto de algoritmosde optimización combinatoria.(Coello, s.f.)

En el caso de que existan técnicas especializadas pararesolver un determinado problema, lo más probable es quesuperen al Algoritmo Genético, tanto en rapidez como en

eficacia. El gran campo de aplicación de los AlgoritmosGenéticos se relaciona con aquellos problemas para loscuales no existen téecnicas especializadas.

Incluso en el caso en que dichas técnicas existan, yfuncionen bien, pueden efectuarse mejoras de las mismashibridándolas con los Algoritmos Genéticos.

Funcionamiento de un Algoritmo Genético

Las caracteristicas del perceptrón son similiares a lasredes lineales, pero su función de transferencia es lineal, nose limita a las salidas entre 0 y 1.

La clasificación lineal y el Filtramiento Adaptativo seconstituyen como las aplicaciones mas comunes dentro delas redes lineales.

Métodos de selección

Permite orientar la búsqueda a aquellos puntos de la po-blación mas promisorios de la población generando una nue-va población del mismo tamaño que la original dejando a losespecímenes que tengan el mejor fitness para que formen unanueva población y de ella se desprendan los nuevos hijos. Elalgoritmo genético simple utiliza una regla de supervivienciaprobabilística. En analogía con un problema de la teoría dejuegos.

Selección Proporcional

La probabilidad de selección pi,t del i-esimo individuo enla población P(t) depende de la adaptación relativa de estecon respecto a la población:

Donde fj es la adaptación del j-esimo individuo. El núme-ro esperado de copias Ne del i-ésimo individuo en la próximageneración es:

La fase de selección de un algoritmo genético basado envalores esperados se compone de dos partes:

Determinación de los valores esperados Ne.

Conversión de los valores esperados a números discre-tos de descendencia (muestreo).

UNIVERSIDAD NACIONAL DE [email protected], [email protected]

3

Page 4: Predicción del mundial con Algoritmos Genéticos

Mejía Jorge- Faicán Rosa Tutor: Ing. Henry Paz

Método de la Ruleta

El algoritmo de muestreo debe mantener una poblaciónconstante y al mismo tiempo proveer de un muestreo exac-to, consistente y eficiente. El algoritmo de muestreo originalpropuesto por Holland se conoce como método de la ruleta.

Determinar la suma S de las adaptaciones de toda lapoblación.

Relacionar uno a uno los individuos con segmentoscontiguos de la recta real [0, S], tal que cada segmentoindividual sea igual en su tamaño al grado de adapta-ción.

Repetir el proceso hasta obtener el número deseado demuestras.

Sufre dispersión ilimitada, es decir la discrepancia en-tre el número esperado de copias y el número real ob-tenido por el método de ruleta puede ser el máximoposible.

Muestreo Estocastico Universal

Corrige el problema del método de la ruleta, es análogoa este método con M punteros espaciados en parte igualesentre si, de modo que con un solo lanzamiento se obtienenM ganadores. No tiene sesgo y su disperision es la minimaposible.

La determinación del valor esperado con la ayuda deeste método es muy sensible a la presencia de un individuocon afinidad en la adaptación establecida dentro de lapoblación actual, llevándose así un número elevado decopias generación tras generación en poblaciones pequeñas.

Selección por Ranking

El algoritmo de seleción es el siguiente:

Ordenar la población del mejor individuo (x=1) al peor(x=M).

Asignar un número de copias esperadas según:

Fórmulas:

n+=máximmo valor esperado n-=mínimo valor espe-rado

Usar el valor del muestreo estocástico para llenar lapoblación.

Selección por Torneo

Esté método de seleción no se basa en valores esperadosy por lo tanto no requiere de un algoritmo de muestreo.

Algortimo:

Escoger el tamaño del torneo.

Crear una permutación aleatoria de M enteros.

Comparar la adaptación de los próximos miembros dela población y seleccionar el mejor.

Si se acaba la permutación, generar una nueva permu-tación

Repetir hasta llenar la población.

Es análogo a método de ranking debido a que ambosrealizan copias al mejor y cero copias al peor.

Lo métodos de seleción se ordenan en orden crecien-te de presión selectiva, para valores estándares de susestados.(Ramirez, 2011)

Métodos de cruce

Se trata de un operador cuya labor es elegir un lugar,y cambiar las secuencias antes y después de esa posiciónentre dos cromosomas, para crear nueva descendencia (porejemplo, las cadenas 10010011 y 11111010 pueden cruzarsedespués del tercer lugar para producir la descendencia10011010 y 11110011). Imita la recombinación biológicaentre dos organismos haploides.

Cruce por un punto

Los dos cromosomas padres se cortan por un punto. Secopia la información genética de uno de los padres desde elinicio hasta el punto de cruce y el resto se copia del otroprogenitor. Es una de las formas clásicas de crossover.

UNIVERSIDAD NACIONAL DE [email protected], [email protected]

4

Page 5: Predicción del mundial con Algoritmos Genéticos

Mejía Jorge- Faicán Rosa Tutor: Ing. Henry Paz

Figura 3. Crossover por un punto

Curce por dos puntos

Se trata de la misma filosofía que en el caso anterior peoen este caso los padres se cortan por dos puntos. Se copiaráal descendiente los genes de un cromosoma progenitor desdeel principio hasta el primer punto de cruce, los genes del otroprogenitor desde el primer punto de cruce hasta el segundo ydel segundo punto de cruce hasta el final se copiará del otroprogenitor.(Holland, Septiembre 1992)

Figura 4. Crossover por dos puntos

Cruce uniforme

Cada gen del descendiente se obtiene de cualquiera de lospadres de forma aleatoria. Una opción es generar un númeroaleatorio.Si este número supera un cierto umbral se elegirá un padredeterminado y si no lo supera se elige al otro.

Figura 5. uniforme

Mutación

Tiene baja probabilidad de ser utilizado y permiteintroducir nueva información no presente en la población.Opera sobre un solo individuo, determina una posición y lainvierte con cierta probabilidad. Permite salir de máximoslocales.

Figura 6. Mutación del Gen de un individuo

Dentro del algoritmo simple el operador de mutaciónpermite invertir ocasionalmente un bit. Tasa de mutaciónpequeña garantiza que el individuo no se diferencie muchode sus padres.

La mutación permite evitar la pérdida de diversidad quehan convergido a un cierot valor para toda la población y quepor lo tanto no pueden ser recuperados por el operador derecombinació.(Rodriguez, s.f.)

Aplicación de los Algoritmos Genéticos

Dentro de los problemas y soluciones que se puedendar estan los siguientes beneficios de la aplicación de losAlgoritmos Genéticos.

Optimización: Se trata de un campo en el que se hahecho uso de numerosas tareas de optimización inclu-yendo la optimización numérica y los problemas deoptimización combinatoria.

Programación Automática: Los Algoritmos Genéti-cos se han empleado para desarrollar programas pa-ra tareas específicas, y para diseñar otras estructurascomputacionales tales como el autómata celular, y lasredes de clasificación.

Aprendizaje máquina: Los algoritmos genéticos se hanutilizado también en muchas de estas aplicaciones,tales como la predicción del tiempo o la estructurade una proteína. Han servido asimismo para desarro-llar determinados aspectos de sistemas particulares deaprendizaje, como pueda ser el de los pesos en una redneuronal, las reglas para sistemas de clasificación deaprendizaje o sistemas de producción simbólica, y lossensores para robots.(Poste, s.f.)

Sistemas inmunes: A la hora de modelizar varios as-pectos de los sistemas inmunes naturales, incluyendola mutación somática durante la vida de un individuoy el descubrimiento de familias de genes múltiples entiempo evolutivo, ha resultado útil el empleo de estatécnica.

Ecología: En la modelización de fenómenos ecológi-cos tales como las carreras de armamento biológico,

UNIVERSIDAD NACIONAL DE [email protected], [email protected]

5

Page 6: Predicción del mundial con Algoritmos Genéticos

Mejía Jorge- Faicán Rosa Tutor: Ing. Henry Paz

la coevolución de parásito-huesped, la simbiosis, y elflujo de recursos.

Genética de poblaciones: En el estudio de preguntasdel tipo “¿Bajo qué condiciones será viable evolutiva-mente un gene para la recombinación?”

Evolución y aprendizaje: Los Algoritmos Genéticos sehan utilizado en el estudio de las relaciones entre elaprendizaje individual y la evolución de la especie.

Sistemas sociales: En el estudio de aspectos evoluti-vos de los sistemas sociales, tales como la evolucióndel comportamiento social en colonias de insectos, yla evolución de la cooperación y la comunicación ensistemas multi-agentes.(Baker, s.f.)

Ejemplo Práctico

Se muestra un grupo de pantallas en las cuales se describelos datos a ingresar y las salidas que se tendrán comoresultado a estos ingresos.

Figura 7. Pantalla inicial al ejecutar el programa

Código en Java

CLASE FitnessFunction.java.(R, s.f.)

public class MovieFitnessFunction extends FitnessFun-ction

Figura 8. Pantalla donde se presentan los resultados

List equipos = new ArrayList();List ranking = new ArrayList();

public MovieFitnessFunction(List movies, List genres)this.equipos = movies;this.ranking = genres;

@Overrideprotected double evaluate(IChromosome chromosome)double score = 0;double imdbScore = 0;

List dups = new ArrayList();int badSolution = 1;

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

IntegerGene agene = (IntegerGene) chromosome.getGene(i);int index = (Integer) chromosome.getGene(i).getAllele();

if (dups.contains(index))badSolution = 0;elsedups.add(index);

RankingFifa equipo=(RankingFifa) equipos.get(index);

UNIVERSIDAD NACIONAL DE [email protected], [email protected]

6

Page 7: Predicción del mundial con Algoritmos Genéticos

Mejía Jorge- Faicán Rosa Tutor: Ing. Henry Paz

double genreScore = getGenreScore(equipo);if (genreScore == 0)badSolution = 0;

double a= Double.parseDouble(equipo.getPartido2());double b= Double.parseDouble(equipo.getPartido3());score = (score + equipo.getPartido1() + a + b) +(genreScore);

return (score * badSolution);

private int getGenreScore(RankingFifa equipo)int copas = 0;int Rankingc = 0;int partido3=0;int partido2=0;int partido1=0;int total = 0;int grupoA=0;int grupoB=0;int grupoC=0;int grupoD=0;int grupoE=0;int grupoF=0;int grupoG=0;int grupoH=0;

int c= Integer.parseInt(equipo.getCopas());int d= Integer.parseInt(equipo.getRanking());int e= Integer.parseInt(equipo.getPartido2());int f= Integer.parseInt(equipo.getPartido3());int g= equipo.getPartido1();String grupo=equipo.getGrupo();if(grupo.equals(.A"))grupoA=grupoA +4;

if(grupo.equals("B"))grupoB=grupoB +3;

if(grupo.equals(Ç"))grupoC=grupoC +3;

if(grupo.equals("D"))grupoD=grupoD +2;

if(grupo.equals(.E))grupoE=grupoE +3;

if(grupo.equals("F"))grupoF=grupoF +1;

if(grupo.equals("G"))grupoG=grupoG +1;

if(grupo.equals("H"))grupoH=grupoH +1;

int grupitos=grupoA+grupoB+grupoC+grupoD+grupoE+grupoF+grupoG+grupoH;

if(e == 1)partido2= partido2 +1;

if(e == 0)partido2= partido2;

if(e == -1)partido2= partido2 - 1;

if(f == 1)partido3= partido3 +1;

if(f == 0)partido3= partido3 + 0;

if(f == -1)partido3= partido3 - 1;

if(g == 1)partido1= partido1 +1;

if(g == 0)partido1= partido1 + 0;

if(g == -1)partido1= partido1 - 1;

if (c >0)copas = c + c;

if(c == 0)copas=0;

if ((d >= 1) (d<=10))Rankingc = Rankingc + 18;

if ((d>= 11) (d<=20))Rankingc = Rankingc + 15;

if ((d>= 21) (d<=30))Rankingc = Rankingc + 12;

UNIVERSIDAD NACIONAL DE [email protected], [email protected]

7

Page 8: Predicción del mundial con Algoritmos Genéticos

Mejía Jorge- Faicán Rosa Tutor: Ing. Henry Paz

if ((d>= 31) ((d)<=40))Rankingc = Rankingc + 9;

if ((d>= 41) (d<=50))Rankingc = Rankingc + 6;

if ((d>= 51) (d<=60))Rankingc = Rankingc + 3;

total = copas + Rankingc + partido3 + partido2 +partido1+grupitos;

return total;

Clase TestFitness.java

public class TestFitness

private Configuration conf;private SwappingMutationOperator swapper;private MovieFitnessFunction fitnessFunction = null;public List equipos = new ArrayList();public List ranking = new ArrayList();private List resultado = new ArrayList();private String solucion;private String solucion2;

private static final int MAXALLOWEDEVOLUT IONS =2000;privateChromosomeequipoChromosome = null;

public void initialize(String tipoPelicula) throwsExceptionStringTokenizer st = new StringTokenizer(tipoPelicula);

while (st.hasMoreElements())String genre = st.nextToken();ranking.add(genre);

equipos = this.loadEquipos();

conf = new DefaultConfiguration();Configuration.resetProperty(Configuration.PROPERTYF IT EVALI NS T );

con f .setFitnessEvaluator(newDe f aultFitnessEvaluator());con f .getGeneticOperators().clear();

swapper = new SwappingMutationOperator(conf);conf.addGeneticOperator(swapper);conf.setPreservFittestIndividual(true);conf.setPopulationSize(1000);conf.setKeepPopulationSizeConstant(false);

fitnessFunction = new MovieFitnessFunction(equipos,ranking);

conf.setFitnessFunction(fitnessFunction);

Gene[] equiposGenes = new Gene[4];

equiposGenes[0] = new IntegerGene(conf, 0,equipos.size() - 1);equiposGenes[1] = new IntegerGene(conf, 0,equipos.size() - 1);equiposGenes[2] = new IntegerGene(conf, 0,equipos.size() - 1);equiposGenes[3] = new IntegerGene(conf, 0,equipos.size() - 1);equipoChromosome = new Chromosome(conf,equiposGenes);equiposGenes[0].setAllele(new Integer(0));equiposGenes[1].setAllele(new Integer(1));equiposGenes[2].setAllele(new Integer(2));equiposGenes[3].setAllele(new Integer(3));conf.setSampleChromosome(equipoChromosome);

public String getSolucion2()return solucion2;

public void setSolucion2(String solucion2)this.solucion2 = solucion2;

public List getResultado()return resultado;

public void setResultado(List resultado)this.resultado = resultado;

public String getSolucion()return solucion;

UNIVERSIDAD NACIONAL DE [email protected], [email protected]

8

Page 9: Predicción del mundial con Algoritmos Genéticos

Mejía Jorge- Faicán Rosa Tutor: Ing. Henry Paz

public void setSolucion(String solucion)this.solucion = solucion;

private List loadEquipos()equipoMundial em=new equipoMundial();List list = new ArrayList(em.getList());

em.getEntityManager().getTransaction().commit();em.getList();list=em.getList();return list;

public void testSelectFittestMovies() throws Exception

equipos = this.loadEquipos();System.out.println(equipos);Genotype population = Genotype.randomInitialGenotype(conf);

IChromosome bestSolutionSoFar = equipoChromosome;

for (int i = 0; i <MAXALLOWEDEVOLUT IONS ; i + +)

population.evolve();IChromosome candidateBestSolution =population.getFittestChromosome();

if (candidateBestSolution.getFitnessValue() >bestSolutionSoFar.getFitnessValue())bestSolutionSoFar = candidateBestSolution;

printSolution(bestSolutionSoFar, equipos);solucion2=String.valueOf(bestSolutionSoFar);

public void printSolution(IChromosome solution,List equipos)System.out.println("Valor del Fitness: -solution.getFitnessValue());solucion=String.valueOf(solution.getFitnessValue());System.out.println(solucion);for (int i = 0; i <solution.size(); i++)int index = (Integer) solution.getGene(i).getAllele();RankingFifa equipo = (RankingFifa)equipos.get(index);

resultado.add(equipo.getNombre().toString());

System.out.println(equipo.getNombre().toString());

System.out.println(resultado);

Conclusiones

Se puede concluir que los algoritmos genéticos permi-ten la simulación por medios computacionales de lagénetica del ser humano, así como tambien la selec-ción de los genes con mayor grado de adaptabilidaddentro de una población.

No necesitan conocimientos específicos sobre el pro-blema que intentan resolver. Operan de forma simultá-nea con varias soluciones, en vez de trabajar de formasecuencial como las técnicas tradicionales.

Recomendaciones

Son fáciles de ejecutars en arquitecturas modernas, porlo que es recomendable realizar las funciones de adap-tación deacuerdo al problema que se intenta resolver.Usan operadores probabilísticos, en vez de los típicosoperadores determinísticos de las otras técnicas.

Referencias

Baker, J. (s.f.). Algoritmos Genéticos.Coello, C. A. C. (s.f.). Algoritmos Genéticos y sus Aplicaciones.de la Peña, J. A. (s.f.). Algoritmos genéticos. Descargado deUniversidad Carlos III

Holland, J. H. (Septiembre 1992). Algoritmos Genéticos.LÓPEZ, M. H. (s.f.). Predicción económica con algoritmos genéti-

cos: operadores genéticos versus matriz de transición.Martí, R. (s.f.). Algoritmos Genéticos.Poste, M. G. (s.f.).

R, M. J. (s.f.). Código en Java. Descargado dehttp://mundial-ag.googlecode.com/svn/trunk/PredicciC3B3nMundialAlgoritmosGenC3A9ticos/

Ramirez, J. C. C. (2011). Composición Musical usando AlgoritmosGenéticos.

Recalde, L. (s.f.). Esquemas Algorítmicos - Algoritmos Genéticos.Rodriguez, P. T. (s.f.). Introducción a los Algoritmos Genéticos y

sus aplicaciones.Valencia, P. E. (s.f.). Optimización Mediante Algoritmos Genéti-

UNIVERSIDAD NACIONAL DE [email protected], [email protected]

9