Los Investigadores escribenPolítica cyti

La terminología en la computación evolutiva es tan importante como en otras áreas: Carlos Coello Coello

“En computación hay una definición recursiva cuando no se sabe definir las cosas, el concepto de individuo, por ejemplo, se refiere a un solo miembro de una población. Se denomina población a un grupo de individuos que pueden interactuar juntos para reproducirse”, sostuvo el colegiado

“La terminología en la computación evolutiva es tan importante como en otras áreas de la computación”, aseguró Carlos Coello Coello, miembro de El Colegio Nacional, al impartir la tercera sesión del curso Una introducción a la computación evolutiva: conceptos básicos y aplicaciones, realizada el 17 de enero, en el Aula Mayor de la institución.

El informático mexicano se refirió a los conceptos básicos de biología que se utilizan en la computación evolutiva con un significado diferente. Comenzó su descripción con el Ácido Desoxirribonucleico (ADN) que, en biología, es el material genético fundamental de todos los organismos vivos. En su definición más sencilla, es una macromolécula doblemente trenzada con una estructura helicoidal, los filamentos trenzados de esta cadena son moléculas de ácido nucleico lineales y sin ramificaciones, formadas de moléculas alternadas de desoxirribosa (azúcar) y fosfato.

“Si se pensara el ADN en términos computacionales o en términos de bioinformática, podemos pensar que toda esta estructura está conformada de un alfabeto, imagínense una secuencia de letras, eso es el ADN visto computacionalmente, pero el alfabeto sólo tiene cuatro letras, las de los pares de bases nucleótidos de los que estamos formados los seres vivos: Adenina (A), Timina (T), Citosina (C) y Guanina (G) que constituyen el alfabeto de información genética. Las secuencias de estas bases en la molécula de ADN determinan el plan constructor de cualquier organismo”.

Explicó que un gen o gene es una sección del ADN que codifica una cierta función bioquímica definida, es fundamentalmente una unidad de herencia. En computación evolutiva, se le llama gen a un segmento de una cadena que puede ser binaria o puede ser un vector de números reales que corresponde a una variable, “para nosotros una variable es la unidad de herencia. Biológicamente es una unidad encargada de una cierta función específica, por lo general, producir proteínas”.

Por su parte, un cromosoma es una de las cadenas del ADN que se encuentra en el núcleo de las células, los cromosomas son los responsables de la transmisión de información genética y están compuestos de genes, “por eso nosotros le llamamos cromosoma a la cadena completa que contiene todas las variables y una de las variables es nada más un gen, esa es la analogía que hacemos”.

En computación evolutiva, el cromosoma es una cadena, en el caso más sencillo, de números binarios, una estructura de datos que contiene todas las variables del problema que se quiero resolver. En este caso el alfabeto es binario, el cromosoma es la concatenación de todas las variables que deben ir en orden, de todas las X o las Y del problema. “Esa estructura de datos se puede almacenar de diferentes maneras, puede ser una lista de números enteros, una lista de números reales o una cadena binaria”.

En este sentido, cada gen puede ocupar una sola región en particular de un cromosoma, a esto se le conoce como “locus”, que en español significa “lugar”. En cada determinado lugar pueden existir, en la población, formas alternativas del gene, a estas formas alternativas se le llama alelos. “Para nosotros, esa es la cardinalidad, imaginen que tienen una cadena que son cuadritos pegados y en cada cuadrito pueden escribir algo, lo que se puede escribir es la cardinalidad, es a lo que le llamamos alelos”.

Por ejemplo, si el alfabeto es binario, el alfabeto binario sólo tiene dos símbolos, el cero y el uno, entonces su cardinalidad es dos. Pero si podemos escribir los dígitos, por ejemplo, del cero al nueve, ya tendría una cardinalidad de 10, eso es lo que en computación evolutiva se conoce como alelo, que biológicamente son formas alternativas del mismo gen en un solo lugar del cromosoma.

“Un gen es un segmento de un cromosoma que codifica el valor de una variable o de un solo parámetro, la longitud depende del rango de la variable y se denomina genotipo a la codificación de los parámetros que representan una solución del problema a resolverse. De los tres algoritmos evolutivos principales, el algoritmo genético es el único que usa genotipos, es decir, que, sin importar las variables, las convierte todas a número binario, las otras dos no usan genotipos, meten las variables de manera directa”.

En palabras de Coello Coello, en computación hay una definición recursiva cuando no se sabe definir las cosas, el concepto de individuo, por ejemplo, se refiere a un solo miembro de una población. Se denomina población a un grupo de individuos que pueden interactuar juntos para reproducirse. Las poblaciones son por especies, porque en realidad, lo que tienen en común es la capacidad de reproducirse entre ellos.

En biología, el fenotipo son los rasgos observables específicos de un individuo y el genotipo es la composición genética de un organismo, el genotipo da origen tras el desarrollo fetal y posterior al fenotipo del organismo. En computación evolutiva, un fenotipo es cuando esa cadena binaria se convierte a un valor en el problema que se está resolviendo, “si mi problema usa números reales lo tengo que convertir a decimales. Los valores que obtengo los tengo que definir con una fórmula”.

El doctor en Ciencias de la Computación por la Universidad Tulane también se refirió a los tipos de recombinación o cruza que existen en el área biológica, el tipo haploide, en el que se intercambian los genes entre los cromosomas de los dos padres; y el diploide, en el que se intercambian los genes entre cada par de cromosomas para formar un gameto, y, posteriormente, se forma un conjunto de cromosomas diploides. “En computación evolutiva, casi siempre utilizamos algoritmos con el caso haploide, simplemente, porque es más fácil de implementar. Hay diploides y por supuesto multiploides, pero es inusual hacer eso”.

“Un individuo es un miembro de mi población que tiene su cromosoma, que normalmente es haploide que contiene todas las variables del problema, cada individuo tiene un cromosoma, un genoma que representa una solución posible al problema”, subrayó.

En el caso de la aptitud de un individuo, se define biológicamente como la probabilidad de que éste viva para reproducirse, o como una función del número de descendientes que éste tiene, fertilidad. Hoy en día varios países tienen decrecimiento de población, como Japón y China. En computación evolutiva, “la aptitud es el valor que se obtiene de sustituir las variables en una función que se asigna a cada individuo y que indica qué tan bueno es éste con respecto a los demás para la solución de un problema”.

Según el informático mexicano, en su área de estudio existe también el término de paisaje de aptitud que es una hipersuperficie que se obtiene al aplicar la función de aptitud a cada punto del espacio de búsqueda. “El nombre viene de biología matemática y se refiere a una gráfica que cambia si se mueve un algoritmo genético y permite cambios en el espacio de búsqueda”.

En computación evolutiva, la especiación permite la cruza entre individuos de la misma subpoblación, es una emulación del fenómeno natural del mismo nombre. La idea es que cada subpoblación evolucione en una dirección distinta. En este sentido, la migración es la transferencia de los genes de un individuo de una subpoblación a otra.

“Hay un tipo de población que se usa en computación evolutiva en la que cualquier individuo se puede reproducir con otro con una probabilidad que sólo depende de su aptitud. A esas poblaciones se les llama panmítica, aquí no hay restricciones de reproducción con los más aptos, se maneja con probabilidades. Lo opuesto de esta población es permitir la reproducción sólo entre individuos de la misma subpoblación. La mayor parte de los algoritmos genéticos convencionales usan población panmítica.

“Debido a los ruidos estocásticos, los algoritmos genéticos tienden a converger a una sola solución, es decir, pierden diversidad, porque los números de la computadora son seudo aleatorios, lo que genera ruido estocástico y, si iteran mucho, todos los individuos van a tender a hacerse casi idénticos, dos individuos idénticos que se recombinan producen hijos idénticos, porque ya no tienen material nuevo, como ocurre en la naturaleza ocurre en la simulación, eso no quiere decir que esa solución sea la óptima, ese ya es un punto estacionario en la búsqueda, es volver a empezar la simulación con otros parámetros. Para evitar eso que se conoce como convergencia y mantener la diversidad, existen técnicas que permiten crear distintos nichos para los individuos”, concluyó el colegiado.

Fuente: El Colegio Nacional