Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Actividad 2.
Programación de
algoritmos
genéticos
Trabajo presentado por: Cristian Alberto Cañas
Garcia
Profesor: Rogerio Orlando Beltran Castro
© Universidad Internacional de La Rioja (UNIR)
Bogotá
09, 2022
1
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
▸ Objetivos: mediante esta actividad, comprenderás la mecánica que hay detrás de los algoritmos
genéticos.
Los algoritmos genéticos (AGs) son mecanismos de búsqueda basados en las leyes de la
selección natural y de la genética. Combinan la supervivencia de los individuos mejor
adaptados junto con operadores de búsqueda genéticos como la mutación y el cruce, de ahí
quesean comparables a una búsqueda biológica. Fueron desarrollados por John Holland y
Rechemberg que crearon algoritmos de optimización imitando los principios básicos de de
la naturaleza. Estos algoritmos se utilizan con éxito para gran variedad de problemas que
no permiten una solución eficiente a través de la aplicación de técnicas convencionales.
Tiene asimismo aplicaciones variadas en ingeniería, como es el diseño de piezas (turbinas,
rotores, etc.), diseño y control de redes, planificación de tareas, síntesis de mecanismos,
diseñode tolerancias, etc. y aplicaciones en otros gremios como en sistemas de computación
paralelos(paralelización automática de programas secuenciales), química (optimización de
© Universidad Internacional de La Rioja (UNIR)
2
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
2. Antecedentes históricos.
Los algoritmos genéticos tienen sus antecedentes en la biología y comienzan con Charles
Darwin, que con su libro El origen de las especies por medio de la selección natural o la
preservación de las razas favorecidas en su lucha por la vida, nos habla sobre los principios
dela selección natural.
Los principios básicos de los algoritmos genéticos se derivan de las Leyes de la Vida
Natural descritos por Darwin:
Una de las principales deficiencias del argumento de Darwin es que, a pesar de que la
herenciajuega un papel preponderante en su teoría, no ofrece una explicación acerca de su
funcionamiento. Sin embargo, desde Mendel se conoce que la herencia se produce a través
delcódigo genético presente en las células reproductivas.
3. Representación.
Todos los organismos vivos están constituidos por células, y cada célula contiene uno o más
cromosomas (cadenas de ADN), que le sirven como una especie de “plano” al organismo.
© Universidad Internacional de La Rioja (UNIR)
Un cromosoma puede ser conceptualmente dividido en genes cada uno de los cuales
codifica una proteína. En términos generales, se puede decir que un gen se codifica como
si fuera un rasgo,como puede serlo el color de ojos. Cada gen se encuentra en una posición
particular del cromosoma, y está formado por alelos.
3
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Se supone que los individuos (posibles soluciones del problema), pueden representarse
como un conjunto de parámetros (que denominaremos genes), los cuales agrupados forman
una ristrade valores, a menudo referida como cromosoma. Debe existir una representación
de estos genes para poder utilizarlos posteriormente en el algoritmo genético y dotarles de
unos valores. Se pueden considerar tres tipos básicos de representación o codificación de
los genes:
4
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
▪ Real: en ella se utiliza un vector cuya longitud es la del número de genes de cada
individuoy el valor que puede tomar cada elemento
es un número real.
Un individuo es una solución potencial al problema que se trata. Cada individuo contiene
un cromosoma. A un conjunto de individuos se le denomina población. El fitness de un
individuo es la evaluación de la función de evaluación e indica qué tan bueno es el
individuo(es decir, la solución al problema) con respecto a los demás.
© Universidad Internacional de La Rioja (UNIR)
5
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
4. Algoritmo.
Desarrollado por John H. Holland, el algoritmo genético opera entonces a nivel de genotipo
delas soluciones mediante la siguiente secuencia:
1. Comenzar con una población inicial, la cual puede ser generada de manera aleatoria.
2. Calcular el fitness (aptitud) de cada individuo.
3. Aplicar el operador de selección con base en el fitness de la población.
4. Aplicar los operadores genéticos de reproducción, cruce y mutación a la población
actualpara generar a la población de la siguiente generación.
5. Ir al paso 2 hasta que la condición de parada se satisfaga.
6. Cuando se cumple la condición de parada, se devuelve al mejor individuo encontrado
(bienel mejor de todas las generaciones, bien el mejor de la última generación).
Al igual que en muchas otras heurísticas, el comportamiento del algoritmo genético es
altamente dependiente de los parámetros iniciales (tamaño de la población, porcentaje de
cruce, porcentaje de mutación, número de generaciones, etc.), por lo que será necesario
ajustar esos parámetros para tratar de mejorar la solución para los objetivos del problema.
A cada iteración de este proceso se le denomina una generación. Un algoritmo genético
típicamente se itera de 50 a 500 o incluso más generaciones. El conjunto entero de
generacionesse denomina una ejecución. Al final de una ejecución existen a menudo uno o
varios cromosomas altamente adecuados en la población, y que pueden ser elegidos como
solución alproblema.
6
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Ambas funciones suelen ser iguales, pero puede ser que la función objetivo sea muy
compleja,tome valores negativos, o no proporcione un valor numérico y, por lo tanto, sea
necesario definir una función de aptitud diferente.
Una vez definido el sistema de codificación a emplear se verá cómo actúan los operadores
básicos de selección, cruce y mutación sobre este código.
6. Operadores genéticos.
En su forma más simple, un algoritmo genético consta de los siguientes operadores
genéticos:selección, reproducción, cruce (crossover) y mutación.
Selección
El proceso de selección sirve para escoger a los individuos de la población mejor adaptados,
para que actúen de progenitores de la siguiente generación. En la naturaleza existen varios
factores que intervienen para que un individuo pueda tener descendencia. El primero de
todos es que consiga sobrevivir, ya sea porque no es devorado por depredadores, o porque
sea capazde procurarse alimento. Lo segundo es que encuentre pareja para reproducirse. El
© Universidad Internacional de La Rioja (UNIR)
último factor es que la combinación de ambos individuos sea apta para crear un nuevo
individuo.
Sin embargo, en la realidad es posible que “el mejor” individuo no pueda reproducirse, pero
otro individuo de “peor calidad” pueda conseguirlo. Aunque este hecho es menos probable,
sigue siendo posible.
En los algoritmos genéticos, la selección es un conjunto de reglas que sirven para elegir a
los progenitores de la siguiente generación. Estos progenitores se reproducirán
7
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Un sistema muy utilizado en los algoritmos genéticos es la selección por torneo. Este
sistema consiste en escoger aleatoriamente de la población un cierto número de individuos.
De esos individuos se escoge el mejor de todos para ser el padre. Para escoger la madre se
repite el proceso: se escoge aleatoriamente a un número de individuos de la población y se
elige al individuo con mejor calidad. Este sistema garantiza un mínimo de diversidad,
ya que no siempre se elegirá al mejor individuo de la población para tener descendencia.
Pero, por el contrario, existen grandes posibilidades de que éste tenga descendencia, ya que
si es escogido en algún torneo, será el vencedor.
Reproducción
Cruce
Durante esta fase se cruzan o mezclan los individuos seleccionados en la fase anterior. Es
decir,los genes de los dos padres se mezclan entre sí para dar lugar a los diferentes hijos.
Existen diversos métodos de cruce, pero los más utilizados son los siguientes:
▪ Cruce basado en un punto: los dos individuos seleccionados para jugar el papel de
padres, son recombinados por medio de la selección de un punto de corte, para
posteriormente intercambiar las secciones que se encuentran a la derecha de dicho
punto. Es decir, los genes del padre1 a la izquierda del punto de corte forman parte
del hijo1 y los situados a la derecha formaran parte del hijo2, mientras que con el
padre2 sucederá lo contrario.
© Universidad Internacional de La Rioja (UNIR)
▪ Cruce punto a punto: este tipo de cruce es similar al anterior pero realizándose para
cada gen de los padres. Por tanto, en este cruce los genes pares del padre1 formarán
parte del hijo1 y los genes impares formarán parte del hijo2, mientras que para el
padre2 sucederá lo contrario.
▪ Cruce multipunto: en este tipo de cruce se selecciona aleatoriamente la cantidad de
puntosque se van a utilizar para el cruce. De esta forma, y de manera análoga al
anterior cruce, se irán intercambiando los genes para formar los dos nuevos hijos.
▪ Cruces específicos de codificaciones no binarias: Para este tipo de codificación se
8
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Este porcentaje de genes a mutar se puede seleccionar de dos maneras, de forma fija,
especificando el mismo porcentaje de mutación a todas las generaciones del algoritmo
genético y de forma variable, es decir, modificando el porcentaje de mutación de una
generación a otra,por ejemplo reduciéndolo. De esta manera, se consigue hacer una búsqueda
más amplia y globalal principio e ir reduciéndola en las siguientes generaciones.
Con otro tipo de codificaciones (por ejemplo codificación real) existen otras opciones de
mutación, aplicadas con una probabilidad generalmente pequeña:
▪ Mutación al azar: Modifica el valor de un gen asignando con un nuevo valor que se
encuentra dentro de un determinado rango. El nuevo valor es independiente del valor
previo del gen.
▪ Mutación gaussiana: Dado un cromosoma p con un gen seleccionado para la mutación
i, se le aplica una distribución normal N de media pi y desviación estándar s
(parámetro). Alternativamente se puede disminuir el valor de s a medida que
© Universidad Internacional de La Rioja (UNIR)
9
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Se distribuye bajo licencia GPL. En su página web podemos encontrar gran variedad de
ejemplos de uso y documentación.
Como veis, ya están implementados la mayoría de operadores de los que hemos hablado
anteriormente (cruce, selección, etc) y los tipos de genes más comunes. De todas formas,
siempre podrás crear los operadores y tipos de gen que necesites.
10
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
11
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Antes de descargar el Eclipse es necesario disponer de la máquina virtual de java para poder
compilarlas aplicaciones. Esto lo hace automáticamente el eclipse pero debe tenerse instalada
previamente. Sepuede obtener en este sitio o en el cd.
http://java.sun.com/javase/downloads/index.jsp
© Universidad Internacional de La Rioja (UNIR)
12
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Se deben descargar las librerías de JGAP desde el sitio oficial hay un link a la última
versión.Hasta el día de hoy es la 3.5.
http://sourceforge.net/projects/jgap/files/jgap/
13
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
© Universidad Internacional de La Rioja (UNIR)
14
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Una vez creado el proyecto se debe configurar el Build Path para incluir las librerías de
jgap.Haciendo clic derecho en el proyecto y seleccionando Set Configuratión ->
Customize
15
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Una vez realizado esto ya se puede utilizar las librerías desde una clase java de ese proyecto.
© Universidad Internacional de La Rioja (UNIR)
16
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Los algoritmos genéticos buscan imitar los procesos evolutivos de la naturaleza para
resolver problemas. En la naturaleza los individuos de una población se reproducen entre si
y de esta forma nacen nuevos individuos. Todos se someten a una selección natural durante
sus vidas enla que los más aptos tienen más probabilidades de sobrevivir, de esta forma las
poblaciones evolucionan, mejoran constantemente y se adaptan a los nuevos medios.
Para los algoritmos genéticos los individuos se denominan cromosomas. Cada cromosoma
es una solución a un problema específico. Las características de un cromosoma se
denominan genes. También existe una función de aptitud, la cual aplicada a cada
cromosoma devuelve unvalor que indica cuan apto es y permite compararlos entre ellos.
Antes de comenzar, es necesario tener una población inicial. Lo que suele hacerse es crear
unapoblación de cromosomas al azar.
Una vez que se tiene una población se reproducen los individuos para obtener mayor
variedad,tal como en la naturaleza. Luego, es necesario seleccionar los mejores, para ir
evolucionando. Hay varios métodos de selección pero en general lo que se busca es que los
mejores pasen a lapróxima generación y algunos no tan aptos también, ya que la variedad
ayuda a que en la reproducción se generen cromosomas más aptos aun que sus padres. Puede
que de la cruza de un cromosoma muy apto y otro no tanto resulte uno mucho mejor a sus
padres.
un individuo. Este cambio asegura más variedad y provoca cambios positivos o negativos.
Los cambios negativos deberían quedar en el olvido gracias a la selección natural y los
positivos perdurar haciendo evolucionar a la población. Para los algoritmos también se
puede utilizar mutación para agregar variedad y obtener mejores soluciones.
Para llegar a buenos resultados es necesario recorrer varias generaciones. Es decir,
reproducir varias veces los individuos y hacer varias selecciones y algunas pocas
17
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
MÉTODOS DE SELECCIÓN
Rueda de ruleta
Este método consiste en construir una ruleta particionada en ranuras de igual tamaño, las
cualesse numeran. A cada individuo de la población se le asigna una cantidad de ranuras
proporcionala su aptitud.
Hay algunas otras variantes como por ejemplo, incluir en la nueva generación el mejor
representante de la generación actual. En este caso, se denomina método elitista.
En este caso dos individuos son elegidos al azar de la población actual y el mejor o más
apto de los dos se coloca en la generación siguiente. Esto continúa hasta que se complete la
nueva población.
© Universidad Internacional de La Rioja (UNIR)
Basado en el rango
18
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Método Estocástico
MÉTODOS DE REPRODUCCIÓN
Cruza Simple
Los dos cromosomas padres se cortan por un punto, y el material genético situado entre
ellosse intercambia.
Cruza Multipunto
© Universidad Internacional de La Rioja (UNIR)
X | YXX | Y | YY | XX | Y | YXY | Y
YXY | Y | XX | X | XX | YY |
YXX | Y |
YY | Y
19
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Cruza binomial
Para generar un cromosoma hijo por cruza binomial, se define la probabilidad P0 como la
probabilidad de que el Alelo de cualquier posición del descendiente se herede del padre, y
1 - P0 como la probabilidad de que lo herede de la madre. En este caso se puede construir un
único hijo por cada aplicación del operador, o bien generar un segundo hijo como
complemento del primero.
Cuando existe igual probabilidad de heredar del padre como de la madre, P0 = 0,5 la cruza
se denomina uniforme. Para estructuras de longitud l la cruza uniforme implica un promedio
de l/2 puntos de cruza.
Mutación
Una vez establecida la frecuencia de mutación, por ejemplo, uno por mil, se examina cada
bit de cada cadena. Si un número generado aleatoriamente está por debajo de esa
probabilidad, secambiará el bit (es decir, de 0 a 1 o de 1 a 0). Si no, se dejará como está.
Dependiendo del número de individuos que haya y del número de bits por individuo, puede
resultar que las mutaciones sean extremadamente raras en una sola generación.
© Universidad Internacional de La Rioja (UNIR)
No hace falta decir que no conviene abusar de la mutación. Es cierto que es un mecanismo
generador de diversidad, y, por tanto, la solución cuando un algoritmo
genético está estancado, pero también es cierto que reduce el algoritmo genético a una
búsquedaaleatoria. Siempre es más conveniente usar otros mecanismos de generación de
diversidad, como aumentar el tamaño de la población, o garantizar la aleatoriedad de la
población inicial.
20
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
EJEMPLO DE APLICACIÓN:
1 Moneda de un dólar
1 Moneda de 25 centavos
1 Moneda de 10 centavos
3 monedas en total
Hay muchas formas de descomponer este monto en monedas cada una de ellas es una
soluciónposible al problema (cromosoma) y tiene un valor de aptitud asociado, que deberá
depender dela cantidad de monedas totales de ese cromosoma. Cuantas menos monedas se
necesiten más apta será la solución ya que lo que se busca es lograr la menor cantidad de
monedas posibles.
Cada cromosoma tendrá 6 genes. Los genes en este problema son números enteros que
© Universidad Internacional de La Rioja (UNIR)
centavosMoneda de
10 centavosMoneda
de 5 centavos
Moneda de 1
centavo
© Universidad Internacional de La Rioja (UNIR)
22
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
IMPLEMENTACIÓN DE EJEMPLO
Para poder implementar una solución a este problema utilizando jgap es necesario indicarle
alframework una serie de parámetros y codificar la función de aptitud.
Para este caso la clase principal se llamará CambioMinimo y la función aptitud se codificará
en la clase CambioMinimoFuncionAptitud.
En primer lugar se debe modelar el problema, es decir definir como se compone cada gen
de los cromosomas (soluciones posibles). Para este problema puntual cada gen será un
número entero y representará la cantidad de un tipo de moneda de ese cromosoma. Por lo
tanto cada cromosoma tendrá 6 genes Ejemplo:
23
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
// la próxima generación //
conf.setPreservFittestIndividual(true);
También se debe crear un cromosoma de ejemplo para que el framework conozca su estructura
// este caso tendran 6 genes (uno para cada tipo de moneda) con un // valor
// configuracion
Es importante tener en cuenta los valores máximos y mínimos ya que, si se cargan mal, podría
eliminarmuchas soluciones que tal vez sean las mejores o si son muy amplios costara más tiempo
de procesamiento llegar a soluciones óptimas.
Se puede configurar el tamaño que tendrá la población (Cantidad de cromosomas de una generación)
conf.setPopulationSize(200);
Para poder evolucionar se necesita una población inicial. El framework permite cargarla de un
xmlpero lo mejor en este caso es indicarle que genere una población inicial aleatoria. Poblacion
= Genotype.randomInitialGenotype(conf);
El método envolve evoluciona una generación. Se lo llama una cierta cantidad de veces con un loop
para que realice cierta cantidad de evoluciones.
Pobl acion,evolve();
El método guardar población creado para este manual guarda todos los datos de la población
en unxml llamado PoblacionCaminoMinimo.xml para demostrar como
Trabaja el Framework con las poblaciones y los xml. Para más detalle ver el código fuente del anexo.
guardarPoblacion(Poblacion);
© Universidad Internacional de La Rioja (UNIR)
25
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Función Aptitud
Este método le permite al framework determinar que cromosoma es más apto que otro. El
valordevuelto debe ser un double positivo.
Por defecto, se entiende que un valor más alto devuelto corresponde a un cromosoma más
aptopero esto puede no ser así, depende del evaluador que se haya utilizado. En el ejemplo
se tieneen cuenta esto antes de devolver el valor de aptitud.
© Universidad Internacional de La Rioja (UNIR)
26
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
package practica1;
import java.io.File;
import
org.jgap.Chromosome;
import
org.jgap.Configuration;
import
org.jgap.FitnessFunction;
import org.jgap.Gene;
import org.jgap.Genotype;
import
org.jgap.IChromosome;
import
org.jgap.data.DataTreeBuilder;
import
org.jgap.data.IDataCreators;
import
org.jgap.impl.DefaultConfiguration;
import org.jgap.impl.IntegerGene;
import
org.jgap.xml.XMLDocumentBuilder;
import org.jgap.xml.XMLManager;
import org.w3c.dom.Document;
© Universidad Internacional de La Rioja (UNIR)
/**
27
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
/**
/**
* @param Monto
* Monto que se desea descomponer en la menor cantidad de monedas
* posibles
* @throws Exception
*
* @author
* @author
* @since 1.0
© Universidad Internacional de La Rioja (UNIR)
*/
// la proxima generacion
28
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
// conf.setPreservFittestIndividual(true);
e // configuracion
G
//
e
© Universidad Internacional de La Rioja (UNIR)
conf.setPopulationSize(
n
e 200);
s Genotype Poblacion;
29
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
/ Poblacion = Genotype.randomInitialGenotype(conf);
/
// La Poblacion debe evolucionar para obtener resultados mas aptos // ------
d
e
long TiempoComienzo = System.currentTimeMillis();
v
u for (int i = 0; i < MAX_EVOLUCIONES_PERMITIDAS; i++) {
e Poblacion.evolve();
l
v
e
l
ms");
a
}
p
o long TiempoFin = System.currentTimeMillis();
b
System.out.println("Tiempo total de evolucion: " + (TiempoFin - TiempoComienzo) + "
l
a
guardarPoblacion(Poblacion);
c
i // Una vez que la poblacion evoluciono es necesario obtener el cromosoma
o
// mas apto para mostrarlo como solucion al problema planteado para ello
n
// se utiliza el metodo getFittestChromosome
r
a IChromosome cromosomaMasApto = Poblacion.getFittestChromosome();
n
System.out.println("El cromosoma mas apto encontrado tiene un valor de aptitud de: " +
d
o
m
© Universidad Internacional de La Rioja (UNIR)
c
r
e
a
d
a
Actividades 30
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
cromosomaMasApto.getFitnessValue());
System.out.println("\t" +
CambioMinimoFuncionAptitud.getNumeroDeComendasDeGen(cromosomaMasApto, 2) + "
Moneda25 centavos");
System.out.println("\t" +
CambioMinimoFuncionAptitud.getNumeroDeComendasDeGen(cromosomaMasApto, 3) + "
Moneda10 centavos");
System.out.println("\t" +
CambioMinimoFuncionAptitud.getNumeroDeComendasDeGen(cromosomaMasApto, 4) + "
Moneda 5
centavos");
System.out.println("\t" +
CambioMinimoFuncionAptitud.getNumeroDeComendasDeGen(cromosomaMasApto, 5) + "
Moneda 1centavo");
System.out.println("Para un total de "+
CambioMinimoFuncionAptitud.montoCambioMoneda(cromosomaMasApto) + " centimos en " +
CambioMinimoFuncionAptitud.getNumeroTotalMonedas(cromosomaMasApto) + " monedas.");
}
/**
* @param args
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
* Monto de dinero
* @throws Exception
*
* @author
* @author
* @since 1.0
*/
valido");
//amount = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
System.exit(1);
} else {
calcularCambioMinimo(amount);
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
//
//
package practica1;
import org.jgap.*;
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
// una excepcion
montoObjetivo = monto;
1);
* @param cromosoma
* El cromosoma a evaluar
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
if (diferenciaMonto != 0)
return 0.0d;
} else {
if (diferenciaMonto != 0)
return MAX_CANT_MONEDAS;
/ menor cantidad de
monedas. if
(evaluadorEstandard) {
// Se debe asegurar devolver un valor de aptitud positivo siempre.
// menos apto )
} else {
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
/**
* @param cromosoma
* El cromosoma a evaluar
* @return Retorna el monto en centimos compuesto por la suma de las monedas
* de ese cromosoma
*
*/
/**
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
* @param cromosoma
* El cromosoma a evaluar
* @param numeroGen
* El numero gen (tipo de moneda) de que se desea averiguar la
* cantidad
* @return Devuelve la cantidad de monedas de ese tipo de ese cromosoma
*
cromosoma.getGene(numeroGen).getAllele();
return numMonedas.intValue();
/**
* Calcula el total de monedas que tiene esa solucion. Este valor se utiliza
* para calcular la aptitud del cromosoma ya que el objetivo es minimizar la
* cantidad de monedas de la solucion
*
* @param cromosoma
* El cromosoma a evaluar
* @return El total de monedas que tiene esa solucion
*
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
return totalMonedas;
Para 90 centavos
0 Moneda 1 dólar
1 Moneda 50 centavos
1 Moneda 25 centavos
1 Moneda 10 centavos
1 Moneda 5 centavos
0 Moneda 1 centavo
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
1 Moneda 1 dólar
0 Moneda 50 centavos
1 Moneda 25 centavos
0 Moneda 10 centavos
1 Moneda 5 centavos
0 Moneda 1 centavo
Para 87 Centavos
0 Moneda 1 dólar
1 Moneda 50 centavos
1 Moneda 25 centavos
1 Moneda 10 centavos
0 Moneda 5 centavos
2 Moneda 1 centavo
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
Este fragmento esta publicado en la página principal de JGAP donde explica que es un software
libre. Pero si se quiere utilizar de forma comercial es necesario donar al menos 20 euros a JGAP.
JGAP is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
Public License as published by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version. Inste|ad, you could choose to use the Mozilla Public License
to use JGAP in commercial applications without the need of publishing your source code or make
it reverse engineerable (as is required with the GNU License). For using the MPL you have to
donateat least 20 Euros to JGAP. Maybe you would like to browser further information about
using JGAPcommercially.
JGAP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the above mentioned GNU Lesser Public License and the
Mozilla Public License for more details. But we offer really a lot of unit tests which help assure
a very high probability for a correct piece of software!
Bibliografía:
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
▸ Rúbrica
Programación Puntuación
Peso
de algoritmos Descripción máxima
%
genéticos (puntos)
Se presenta un resumen que refleja
Criterio 1 4
correctamente la comprensión del 50%
artículo.
El código compilado correctamente tras
Criterio 2 3
las modificaciones realizadas por los 20%
estudiantes.
El documento presentado contiene las
Criterio 3 respuestas a lo que se pide en la actividad 3 30%
y cumple la forma exigida.
10 100 %
▸ Extensión máxima y forma: 5 páginas, Georgia 11, interlineado 1.5, texto justificado.
Conclusión
Los Algoritmos Genéticos son una de las mejores opciones para la resolución de problemas, con la
emulación del comportamiento de los seres vivos nos permite desarrollar nuevas soluciones a
problemas que no pueden ser resueltos con técnicas convencionales.
Los algoritmos constituyen una gran herramienta que nos permiten encontrar soluciones con
un alto grado de aceptación, al buscar la mejor de todas las soluciones que encuentra, su
Actividades
Asignatura Datos del alumno Fecha
Computación Apellidos: Cañas Garcia
02/09/2022
Bioinspirada Nombre: Cristian Alberto
implementación no es compleja y se pueden llevar a otro tipo de campos, lo cual ayudaría a los usuarios
en la solución de sus necesidades. Su implementación en la aeronáutica, ingeniería del sonido,
inteligencia artificial, medicina, la bolsa de valores, trazado de rutas, sistemas de inscripción en las
escuelas y el ejército. Los Algoritmos Genéticos, han demostrado ser una forma efectiva de resolución
de problemas de fácil implementación para le desarrollador, no tienen una limitante que diga hasta
dónde puede llegar la gran capacidad del campo de implementación de dicha técnica para buscar
la solución a los problemas.
Actividades