Revista La Ciencia y el Hombre
Septiembre•Diciembre
de 2009
REVISTA DE DIVULGACIÓN CIENTÍFICA Y TECNOLÓGICA DE LA UNIVERSIDAD VERACRUZANA
Volumen XXII
Número 3
Editorial
El origen de las especies o la descripción de las maravillas
El concepto de especie y la explicación de la extinción
La selección natural
La selección sexual
La selección artificial
Distribución geográfica de las especies animales
Distribución de la vegetación y cambio climático como proceso de selección natural
La influencia de Darwin en el pensamiento científico contemporáneo
Malthus, Darwin, las leyes estadísticas y la biometría
A propósito de Darwin
Hongos micorrizógenos y plantas: ¿una relación simbiótica ancestral?
La otra evolución de Darwin: su teoría y la prensa
DISTINTAS Y DISTANTES: MUJERES EN LA CIENCIA
Charles Darwin y las claves femeninas de la teoría de la evolución
CURIOSIDADES CIENTÍFICAS
El comportamiento animal... de Darwin
Nuestros colaboradores en este número
CARTAS AL DIRECTOR
 

La influencia de Darwin en el pensamiento científico contemporáneo

Manuel Martínez Morales

es indudable que la teoría de la evolución, enunciada por Charles Darwin a mediados del siglo X I X, provocó una revolución científica. Los conceptos de esta teoría, como el de selección natural, han permeado desde entonces casi todas las disciplinas científicas. Así, puede constatarse cómo han surgido áreas de estudio que van desde la evolución química prebiótica y la evolución molecular hasta la evolución tecnológica, pasando por ideas de la evolución aplicadas a las ciencias sociales y a las ciencias cognitivas. Algunas de estas “aplicaciones” han sido fructíferas, en tanto que otras han mostrado no ser apropiadas –como la idea de Marx, inspirada en Darwin, de considerar el desarrollo histórico de las formaciones sociales como una “historia natural”– o francamente grotescas –como la interpretación denominada “darwinismo social”.

Sería demasiado ambicioso pretender en un artículo como el presente exponer todas las ramificaciones y adaptaciones del darwinismo en las ciencias contemporáneas, por lo que me limitaré, a manera de ilustración, a describir la forma en que los conceptos de evolución y selección natural se han adoptado en el campo de la inteligencia artificial, en particular en el área de los algoritmos genéticos. Así que presentaré la forma en que las ideas de Darwin sobre la evolución y el mecanismo de la selección natural se aplican en la inteligencia artificial. Este enfoque tiene la ventaja de que, para que las ideas darwinistas sean funcionales, los conceptos correspondientes se definen con un alto grado de abstracción, lo que tiene la ventaja de que las ideas de evolución y adaptación alcancen un alto grado de generalidad y puedan aplicarse y compren derse tanto en los sistemas artificiales como en los naturales.

Computación evolutiva

La computación evolutiva es una rama de la inteligencia artificial que involucra problemas de optimización combinatoria. Se inspira en los mecanismos de la evolución biológica.

Durante los años 50 se comenzaron a aplicar los principios de Charles Darwin en la resolución de problemas. Durante los años 60 y 70, varias corrientes de investigación independientes empezaron a formar lo que ahora se conoce como computación evolutiva.

La programación evolutiva nació en la década de 1960 y su creador fue Lawrence J. Fogel. Este desarrollo comenzó como un esfuerzo encaminado a crear inteligencia artificial basada en la evolución de máquinas de estado finitas.

Las estrategias evolutivas fueron propuestas por Ingo Rechenberg y Hans-Paul Schwefel en la década siguiente y su principal objetivo era el de optimizar parámetros.

Los algoritmos genéticos fueron propuestos por John H. Holland a mediados de esa década y su motivación inicial fue la de proponer un modelo general de proceso adaptable.

Algoritmos evolutivos

De manera general, la computación evolutiva toma como base las ideas de la evolución propuestas por Charles Darwin y los descubrimientos realizados por Gregor Mendel en el campo de la genética. Entre los principales aspectos a considerar en el diseño de algoritmos evolutivos se encuentran los siguientes:
1. La elección de una codificación (representación de las variables del problema en el algoritmo evolutivo) tiene un gran efecto en el tamaño del espacio de búsqueda y, por ende, en el tiempo y dificultad de resolución.
2. La función de desempeño (fitness function), la cual considera la función objetivo o función de la que se desea obtener el valor óptimo.
3. Los algoritmos evolutivos poseen diversos parámetros, los cuales deben ser cuidadosamente elegidos para obtener un buen desempeño y evitar problemas tales como la convergencia prematura.

A continuación se describen someramente la clase de algoritmos conocidos como “algoritmos genéticos” que, en cierta forma, ilustran concretamente las ideas de la computación evolutiva, además de su interés intrínseco en cuanto a sus múltiples aplicaciones.

Algoritmos genéticos

Un algoritmo es una serie de pasos organizados que describen el proceso que se debe seguir para dar solución a un problema específico.
En los años de 1970, de la mano de John Henry Holland, surgió una de las líneas más prometedoras de la inteligencia artificial: la de los algoritmos genéticos (A G). Son llamados así porque se inspiran en la evolución biológica y su base genético-molecular. Estos algoritmos hacen evolucionar una población de individuos sometiéndola a acciones aleatorias semejantes a las que actúan en la evolución biológica (mutaciones y recombinaciones genéticas), así como también a una selección de acuerdo con algún criterio, en función del cual se decide cuáles son los individuos más adaptados –los que sobreviven– y cuáles los menos aptos –mismos que son descartados. También se denominan algoritmos evolutivos e incluyen las estrategias de evolución, la programación evolutiva y la programación genética. Un algoritmo genético es un método de búsqueda dirigida basada en probabilidad. Bajo una condición muy débil (que el algoritmo mantenga elitismo, es decir, que guarde siempre al mejor elemento de la población sin hacerle ningún cambio), se puede demostrar que el algoritmo converge en probabilidad en un grado óptimo. En otras palabras, al aumentar el número de iteraciones, la probabilidad de tener el óptimo en la población tiende a 1.

Los algoritmos genéticos establecen una analogía entre el conjunto de soluciones de un problema, llamado fenotipo, y el conjunto de individuos de una población natural, codificando la información de cada solución en una cadena, generalmente binaria, llamada cromosoma. A los símbolos que forman la cadena se les llama genes. Cuando la representación de los cromosomas se hace con cadenas de dígitos binarios, al resultado se le conoce como genotipo. Los cromosomas evolucionan a través de iteraciones, llamadas generaciones. En cada generación, los cromosomas se evalúan usando alguna medida de aptitud. Las siguientes generaciones (nuevos cromosomas), llamadas descendencia, se forman utilizando dos operadores: de cruzamiento y de mutación.

Funcionamiento de un algoritmo genético básico

Un algoritmo genético puede presentar diversas variaciones dependiendo de cómo se aplican los operadores genéticos (cruzamiento, mutación), de cómo se realiza la selección y de cómo se decide el reemplazo de los individuos para formar la nueva población. En general, consiste de los siguientes pasos:
Inicialización: Se genera aleatoriamente la población inicial, que está constituida por un conjunto de cromosomas los cuales representan las posibles soluciones del problema. En caso de no hacerlo aleatoriamente, es importante garantizar que dentro de la población inicial se tenga la diversidad estructural de estas soluciones para tener una representación de la mayor parte de la población posible o al menos evitar la convergencia prematura.
Evaluación: A cada uno de los cromosomas de esta población se aplicará la función de aptitud para saber cuán “buena” es la solución que se está codificando.
Condición de término:El algoritmo genético se deberá detener cuando se alcance la solución óptima, pero como ésta generalmente se desconoce, se deben utilizar otros criterios de detención. Normalmente se usan dos criterios: correr el AG un número máximo de iteraciones (generaciones), o detenerlo cuando no haya cambios en la población. Mientras no se cumpla la condición de término se hace lo siguiente:
Selección: Después de saber la aptitud de cada cromosoma, se procede a elegir aquellos que serán cruzados en la siguiente generación. Los cromosomas con mejor aptitud tienen mayor probabilidad de ser seleccionados.
Cruzamiento: El cruzamiento es el principal operador genético y representa la reproducción sexual; opera sobre dos cromosomas a la vez para generar dos descendientes en los que se combinan las características de ambos cromosomas padres. La mutación modifica al azar una parte del cromosoma de los individuos y permite alcanzar zonas del espacio de búsqueda que no estaban cubiertas por los individuos de la población actual.
Reemplazo: Una vez aplicados los operadores genéticos, se seleccionan los mejores individuos para conformar la población de la generación siguiente.
Como se ha dicho, los algoritmos genéticos tienen muchas aplicaciones, entre las que podemos destacar las siguientes: en el diseño automatizado, que incluye investigación en el diseño de materiales y el diseño multiobjetivo de componentes automovilísticos: mejor comportamiento ante choques, ahorros de peso, mejora de la aerodinámica, diseño de topologías de redes computacionales, aprendizaje de comportamiento de robots. En la bioinformática: alineamiento múltiple de secuencias, selección óptima de modelos matemáticos para la descripción de sistemas biológicos, construcción de horarios en grandes universidades, lo que evita los conflictos de clases, optimización de producción y distribución de energía eléctrica y un largo etcétera.

Para el lector interesado

Feldman, M.W. (Ed.) (1989). Mathematical evolutionary theory. Princeton, MA: Princeton University Press.


Graur, D. y Li, W.H. (2000). Fundamentals of molecular evolution (2nd ed.). Sunderland, MA: Sinauer Associates, Inc.


Holland, J.H. (1994). Adaptation in natural and artificial systems. An introductory analysis with applications to biology, control, and artificial intelligence. Cambridge, MA: The MIT Press.


Jiménez-Montaño, M. A. y Martínez-Morales, M. (1993). Un modelo estocástico de competencia tecnológica. Investigación Operacional, 1(4). La Habana: Universidad de La Habana.


Mason, S.F. (1991) Chemical evolution. Origin of the elements, molecules, and living systems. Oxford, MA: Clarendon Press.


Mitchell, M. (2009). Complexity, a guided tour. Oxford, MA: Oxford University Press.