Todo está inventado

Durante la carrera estuve becado en un departamento de mi universidad, y pude tener una visión desde dentro de cómo funciona el mundo universitario, y más en concreto, de cómo funciona todo lo relacionado con la docencia y la investigación.

Recuerdo una anécdota de aquella época: yo estaba en el despacho del profesor con el que estaba becado mientras él discutía sobre temas académicos con otro colega. Estaban hablando de próximos proyectos y se decían:

-Mira, ¿has visto lo que han hecho estos ingleses?

-Vaya, sí… pues está muy bien.

-¿Y recuerdas aquello que dijimos que sería interesante desarrollar?

-Sí, claro.

-Pues estos Alemanes ya han hecho algo parecido también.

-Sí, pero no sigas mirando… En realidad TODO ESTÁ INVENTADO YA. Lo único que se puede hacer es repetir lo mismo de distinta forma.

Hoy he recordado esa conversación porque llevo unos días pensando en comenzar un nuevo proyecto relacionado con mi Doctorado y acabo de descubrir que ya está hecho, y no una vez, sino varias.

Había pensado en desarrollar un sistema de programación genética distribuida, que pudiera ser utilizado para superar los problemas de escalabilidad de la programación genética tradicional, repartiendo la carga de trabajo entre varios procesadores. Ya había mencionado la librería de programación genética Groovy Java Genetic Programming en un post anterior, pero había intentado ir un poco más allá imaginando un sistema parecido a SetiAtHome en el que, mediante un salvapantallas pudieran emplearse los ciclos de CPU ociosos de ordenadores conectados a internet para resolver problemas de programación genética de gran complejidad.

El Sistema Distribuido que se conseguiria de esta manera permitiría que pudieran abordarse problemas que hasta ahora eran inviables por la escasez de recursos de cómputo.

Yo sabía que había algun proyecto similar en el ámbito académico. De hecho, el proyecto Tierra de Tom Ray utiliza una aproximación parecida a la que yo menciono, aunque no está orientado a la resolución de problemas: su objetivo es conseguir una diversificación e incremento de la complejidad de los programas evolutivos análogo al sufrido por los organismos biológicos durante la explosión cámbrica. Como objetivo, esto es bastante distinto de lo que yo pretendo, de modo que aunque las técnicas sean similares no hay casi solapamiento.

Sin embargo, antes de decidirme a comenzar el desarrollo he pasado unos días investigando por Internet qué hay desarrollado que pudiera servirme de base, y me he encontrado con esto:

- La programación genética distribuida es una disciplina relativamente explorada en la actualidad y hay unas cuantas decenas de artículos académicos al respecto.

Esto lo intuía. La idea de la paralelización de la programación genética es algo que se te ocurre de manera casi obvia cuando llevas un tiempo pensando en estos temas.

- Hay una implementación de un sistema de programacíón genética distribuida basado en Java que data del año 1998. Esto no me inquieta demasiado, porque se ve que dicha implementación se desarrolló como proyecto académico y que no ha tenido demasiada continuidad.

- Hay un sistema de computación distribuida bastante bueno (aparentemente) llamado Distributed Beagle. Este sistema ha sido desarrollado en C++ y está basado en Open Beagle (un sistema secuencial bastante serio).

Esto es lo que más me ha hecho pensar… Este sistema es algo muy parecido a lo que yo pretendo desarrollar y ahora me pregunto: si esto ya está hecho, ¿vale la pena que me ponga yo a reescribir lo mismo?

Seguro que si lo hago aprenderé mucho sobre el tema, pero ¿no sería mejor emplear este sistema como base y desarrollar por encima de él?

O, siendo algo más radical: ¿no debería plantearme comenzar un proyecto distinto?

Cualquiera de las tres posibilidades me plantea bastantes dudas.

Tengo que pensar un poco más sobre todo esto….

This entry was posted in IA, Internet, Personal, Proyectos and tagged , , , . Bookmark the permalink.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>