Algoritmos Genéticos
ALGORITMOS GENÉTICOS
En esta oportunidad, hablaremos sobre los Algoritmos Genéticos, los cuales son usados actualmente en diversos campos, tales como la economía, las ciencias sociales, sistemas de aprendizaje, entre otros. Este tipo de algoritmos guardan relación directa con el comportamiento natural, el cual fue tomado por la computación como un modelo para optimizar.
Los algoritmos genéticos se basan en
el proceso genéticos de los organismos vivos. Son métodos que se adaptan a
diversas situaciones para la resolución de problemas. Los algoritmos genéticos
son capaces de ir generando soluciones para problemas reales y orientados hacia
los valores más óptimos.
Dichos algoritmos están basados en un
método de búsqueda que imita la teoría de la evolución de Darwin. Para ello, se
inicia con una población inicial. De esta población, se seleccionan inidividuos
más capacitados para reproducirlos y mutarlos. Posteriormente, se obtiene la
generación de individuos más aptos que la anterior.
Chales Darwin publicó en el año 1859
el libro titulado “El origen de las especies” que desató polémica en el mundo
científico por sus novedosas ideas que sostenían que las especies evolucionan
para adaptarse. De esta manera, el universo pasaba de ser una creación divina y
se proponía un conjunto de individuos en constante competición y evolución
De acuerdo con las ideas de la
evolución, la computación observa en dicha teoría un claro proceso de
optimización, ya que se toman los individuos mejores adaptados, se cruzan,
generando nuevos individuos, que contendrán parte del código genético de sus
antecesores, y el promedio de adaptación de toda la población se mejora.
En la actualidad, el incremento de su
empleo en la ciencia es exponencial. La computación evolutiva se ha vuelto un
concepto general adaptable para resolución de problemas reales, gracias, entre
otros factores, a que agrega flexibilidad y adaptabilidad en la resolución,
combinables con la robustez y las ventajas de la búsqueda global de las
soluciones.
¿Qué es un algoritmo genético simple?
El Algoritmos Genético simple también
es conocido como Canónico. Este algoritmo necesita una codificación o
representación del problema que resulte adecuada. Asimismo, requiere una
función de ajuste o adaptación al problema. Durante la ejecución del algoritmo,
los padres deben ser seleccionados para reproducción. Luego, dichos padres se
cruzarán generando dos hijos; sobre cada uno de ellos, actuará un operador de
mutación. El resultado de la combinación de las anteriores funciones será un
conjunto de individuos, lo cuales son las posibles soluciones al problema. Los
cuales, en la evolución del algoritmo genético, formarán parte de la siguiente
población.
Codificación del algoritmo genético:
Los individuos obtenidos,
considerados las posibles soluciones al problema, pueden representarse como un
conjunto de parámetros, los cuales al agruparse forman una lista de valores
conocidos como cromosomas.
En términos biológicos, el conjunto
de parámetros que representan un cromosoma particular se denomina fenotipo; el
fenotipo contiene la información requerida para construir un organismo, al cual
se refiere como genotipo. Durante la fase reproductiva, se seleccionan los
individuos de la población para cruzarse y producir descendientes, que
constituirán la siguiente generación de individuos. La selección de los padres
se efectúa al azar usando un procedimiento que favorezca a los individuos mejor
adaptados, ya que a cada individuo se le asigna una probabilidad de ser
seleccionado que es proporcional a la función de adaptación.
Parámetros de los algoritmos genéticos:
Tamaño de la población:
Este parámetro nos indica el número de cromosomas que tenemos en nuestra población para una generación determinada. Si el número de elementos no fuese suficiente, el algoritmo genético tiene pocas posibilidades de realizar la reproducción; en consecuencia, realizaría una búsqueda de opciones escasas y poco óptimas; por otro lado, si la población es excesivamente numerosa, el algoritmo será lento e ineficiente.
Probabilidad de cruce:
La probabilidad de cruce indica la
frecuencia con la que se producen cruces entre los cromosomas padre, es decir,
que exista una probabilidad de reproducción entre ello. En el supuesto caso que
no exista probabilidad de reproducción, los hijos serán copias exactas de los
padres. En caso de que exista, los hijos tendrán partes de los cromosomas de
los padres.
Probabilidad de mutación:
La probabilidad de mutación nos
indica la frecuencia con la que los genes de un cromosoma son mutados; si no
hay mutación, los descendientes son los mismos que había tras la reproducción.
En caso de que haya mutaciones, partes del cromosoma descendiente es modificado
y su la probabilidad de mutación es completa (100%) el cromosoma cambia
totalmente.
Aplicaciones de los algoritmos genéticos:
Optimización:
Esta es la principal aplicación de los algoritmos genéticos y es considerada
una característica intrínseca, ya que se han realizado en numerosas tareas de
optimización, dentro de las que se encuentra la optimización numérica y los
problemas de optimización combinatoria.
Aprendizaje máquina: Los algoritmos genéticos se han empleado también en muchas de estas
aplicaciones; por ejemplo, en la predicción del tiempo. También, han servido para
desarrollar determinados aspectos de sistemas particulares de aprendizaje, como
pueda ser el de los pesos en una red neuronal, las reglas para sistemas de
clasificación de aprendizaje o sistemas de producción simbólica, y los sensores
para robots.
Economía: En
este caso, se ha hecho uso de estos algoritmos para modelar procesos de
innovación, el desarrollo estrategias de puja, y la aparición de mercados económicos.
Evolución y aprendizaje: Los Algoritmos Genéticos se han empleado en el estudio de
las relaciones entre el aprendizaje individual y la evolución de la especie.
Sistemas sociales: En el estudio de aspectos evolutivos de los sistemas sociales, tales
como la evolución del comportamiento social en colonias de insectos, y la evolución
de la cooperación y la comunicación.
Desventajas y limitaciones de los algoritmos genéticos:
La implementación de algoritmos
genéticos para la solución de problemas reales puede presentar desventajas y
limitaciones:
Para problemas de
muy complejos, la función de evaluación puede tornarse muy costosa en términos
de tiempo y recursos. Se pueden presentar
casos en los cuales, dependiendo de los parámetros que se utilizan para la
evaluación, el algoritmo podría no obtener una solución óptima u obtenga
resultados no satisfactorios. La teoría nos dice
que no posee una buena escalabilidad con la complejidad. Por ejemplo, para
sistemas que están compuestos de numerosas variables, componente o elementos,
su respectivo espacio de búsqueda crece de manera exponencial, productos de las
numerosas relaciones que pueden surgir.
Si quieres conocer más sobre los algoritmos genéticos, te invitamos a ver el siguiente vídeo:
--------------------------------------------------------------------------------------------------------------------------
Por: Braulio Alvarez y Gladys Castillo
--------------------------------------------------------------------------------------------------------------------------
Te invitamos a dejarnos tu opinión respecto al tema.
--------------------------------------------------------------------------------------------------------------------------
Por: Braulio Alvarez y Gladys Castillo
--------------------------------------------------------------------------------------------------------------------------
Te invitamos a dejarnos tu opinión respecto al tema.

También considero que al crear un algoritmo genético es definir una representación del problema. El lenguaje utilizado para especificar soluciones debe ser robusto; es decir, debe ser capaz de tolerar cambios aleatorios que no produzcan constantemente errores fatales o resultados sin sentido.
ResponderEliminarMuchas gracias por tu aporte. Efectivamente, para implementar Algoritmos Genéticos se debe utilizar un lenguaje de programación robusto que permita generar las soluciones. Entre los Lenguajes de programación más usado, tenemos JAVA, C, PHP, COBOL, entre otros.
Eliminar