Vida Artificial

Investigación

Artículos

Autor

Otros

Sobre la tecnología usada en la Investigación

Comparativa de Lenguajes de Programación

¿Que lenguajes de programación serán los mas adecuados para una investigación de Vida Artificial?

Un nuevo PC

El 05 de Marzo de 2002 fue un día especial, armé un nuevo equipo el cual acelerará el desempeño de las simulaciones y me permitirá plantear simulaciones mas complejas. Los datos técnicos son:
Procesador: AMD Athlon XP 1800+
Motherboard: MSI K7T266 Pro2
Memoria: 256MB
Disco Duro: Maxtor 40GB 7200RPM
Video: ATI Radeon 7200 AGP 64MB

¿En que plataforma trabaja?

Yo construyo las simulaciones en Visual C++ 6.0 bajo Windows 2000 Professional. Me siento cómodo en esta plataforma. Como es un motor que no requiere de un GUI (Interfaz de Usuario) o métodos especiales de I/O, es muy fácil hacer que sea compatible con otros compiladores C++ y en otras plataformas como Linux. Además evito extensiones que comprometan el motor a una determinada especificación. Para hacer la página WEB uso FrontPage 2000.

¿Por qué abandonó Java y empezó a programar en C++?

Java es un lenguaje de programación flexible, sencillo, poderoso, escalable, hecho para Internet, completamente orientado a objetos pero es lento. Estas simulaciones requieren un uso intensivo de CPU y de operaciones matemáticas. Por lo cual la diferencia de desempeño entre Java y C++ es muy notable.

¿El motor seguirá siendo multiplataforma?

Es mi objetivo, el motor será escrito en C++ (respetando el estándar ANSI), considero suficiente este nivel para dejarlo independiente de la plataforma. Aclaro, que los aplicativos que usen este componente (motor) serán en la mayoría de los casos escritos para una plataforma específica.

¿Como así?

Por ejemplo, si yo decido implementar una simulación gráfica del comportamiento evolutivo de organismos en un medio líquido, para hacer dicho ambiente debo hacer primero un GUI y decidir que estándar gráfico usar. Un programador en Windows podría usar MFC y DirectX, otro en Unix usaría VCL y OpenGL. Pero uno u otro, tendrán acceso al mismo motor.

¿No está reinventando la rueda en el campo de Algoritmos Genéticos?

No lo considero así, aunque el concepto general del que partí es el mismo usado en otras investigaciones (leyes darvinistas), la implementación varió mucho. He leído como se implementa este estudio, la mayoría se basan en cadenas de 1s y 0s (por ejemplo, 1110010101001), en el cual mutan, cortan y cruzan (reproducción sexual), y trabajan con poblaciones. El objetivo de estas investigaciones es buscar mínimos y máximos en una función o grupo de datos discretos. Los algoritmos genéticos son usados como técnicas de optimización (donde otras técnicas consumen muchísimo tiempo de computación). Las primeras simulaciones que realicé fueron muy parecidas, en vez de trabajar con cadenas, lo hice con expresiones matemáticas (las cuales varié usando técnicas de mutación, o aumento de operadores y operandos). Vinieron después simulaciones mucho mas complejas en las cuales se variaban conjuntos de expresiones matemáticas contenidas en un algoritmo.

¿Pero todos esos estudios de otras personas no cubren de una u otra forma lo que esta usted investigando en estos momentos?

Da la impresión de que así lo es, en cada simulación pruebo una y otra vez nuevas técnicas para hacer que las expresiones o los algoritmos sean mas efectivos en acercarse a la solución rápidamente. Las investigaciones de otros autores van más allá utilizando matemáticas avanzadas o técnicas probadas de Inteligencia Artificial como la búsqueda heurística. El objetivo de ellos es optimizar y hacer muy útil el uso de los algoritmos genéticos. Esa no es mi meta. Mi meta es entender el comportamiento de la vida a través de las simulaciones. Y claramente se puede observar como comienzo algo nuevo, en el capítulo 3 por ejemplo, las simulaciones tratan con múltiples ambientes o la adaptación a ambientes cíclicos.

Es decir, se aleja de los algoritmos genéticos...

En la estricta definición y uso de los algoritmos genéticos me estoy alejando. Los uso ahora es en investigar como los seres vivos se adaptan a múltiples ambientes y más aún cuando estos ambientes cambian de forma cíclica (día-noche, lluvioso-seco, primavera-verano-otoño-invierno).

1