Algoritmos Genéticos: un ejemplo simple

Como hay una demanda bastante importante del ejemplo en C de un algoritmo genético he decidido ponerlo aquí a disposición de quien quiera verlo en lugar de enviarlo por correo individualmente. El ejemplo es la resolución de una práctica de la asignatura “Modelos Computacionales” que cursé en la Universidad de Córdoba hace dos o tres años. Como es una práctica, no creo que esté exenta de fallos, pero el funcionamiento es correcto aunque también simple.

Leer más …

Anuncios

Eclipse va muy lento

eclipse_icon

Una de los mejores entornos de programación para Java, por no decir el mejor, es Eclipse. Está disponible para todas las plataformas habidas y por haber aunque se da el caso de que al bajarlo para Ubuntu por medio del sistema de paquetes su ejecución suele ser demasiado lenta. Esto ocurre a causa de que Eclipse está desarrollado en Java y por defecto se va a utilizar para su ejecución la implementación libre de la máquina virtual de Java conocida como GIJ (GNU Interpreter for Java).

He tenido la oportunidad de estudiar a fondo esta herramienta y comprobé que es muchísimo más lenta que su equivalente privativo por lo que si priorizamos la velocidad de ejecución recomiendo utilizar en nuestro sistema la versión de Sun. Eso hará que Eclipse se ejecute con mayor agilidad.

Leer más …

Makefiles & GNU GCJ

Como ya conté en anteriores posts, en mi proyecto de fin de carrera tenía que compilar una librería de clases Java bastante extensa con GNU GCJ. Es bastante sencillo compilar una clase simple, incluso compilar varias de ellas a mano, pero en el caso de una colección importante, el compilar y enlazar es una tarea muy larga y aburrida.

En su momento estuve buscando cómo podía automatizar esta tarea de compilación por medio de herramientas diseñadas para esta labor. Lo primero que se me ocurrió fue crear un paquete de instalación por medio de las GNU Autotools pero al mirar en la documentación pude comprobar que no había soporte para GCJ por lo que elegí una de las herramientas que se incorporan en este paquete: GNU Make.

Leer más …

Algoritmos Genéticos (AGs)

dna

Una vez más, volvemos con un post que está más enfocado a ser didáctico que interesante y que en esta ocasión trata con la Computación Evolutiva; en concreto con Algoritmos Genéticos. Para todos aquellos que estudien informática este tema deberá, como mínimo, sonarles de algo y es que se trata de un método de resolución de problemas muy utilizado además de interesante por su propia naturaleza.

La Computación Evolutiva es una rama de estudio de la Inteligencia Artificial que involucra problemas de optimización combinatoria. La peculiaridad de este tema es que la búsqueda de soluciones se inspira en la evolución biológica.

Leer más …

El Classpath de GCJ

En esta entrada voy a ir completando lo comentado en la introducción a GCJ. Ya expliqué entonces como podemos compilar una clase sencilla, sin dependencias de otras, de manera que obtendremos un ejecutable de la misma manera que si utilizásemos otros lenguajes como C/C++.

La dependencia entre clases en Java se satisface a través del classpath, una variable de entorno (aunque hay otras formas de especificarlo) en la que se enumeran los directorios en los que se encuentran clases o paquetes utilizados. La comprobación se realiza, en el caso de Java, además de al compilar a bytecodes, en tiempo de ejecución de manera que si nos falta una clase, se nos lanzará una excepción del tipo classnotfound; con GCJ esto no es así.

Leer más …

Introducción a GNU GCJ

java

Si algo he aprendido en el desarrollo de mi proyecto de fin de carrera es a utilizar GNU GCJ, cuáles son sus características, qué puede aportar a Java y cómo se utiliza. Cuando empecé a investigar busqué tutoriales sobre cómo compilar con este software y me encontré con apenas un par de ellos medianamente decentes pero insuficientes para mi propósito, que era compilar una librería de clases bastante grande.

Casi todo lo que he aprendido lo he hecho mirando tutoriales en inglés, leyendo la documentación y puede que aparentemente no sea gran cosa pero no fue sencillo. En esta entrada quiero dejar una introducción al uso básico de GCJ y en un futuro ir completando el manual con algunos posts más.

Leer más …

Apache, MySQL y PHP desde código fuente

Hoy en día, una de las distribuciones más utilizadas en el mundo de GNU/Linux, especialmente por usuarios no expertos, es Ubuntu. Sin duda es una opción genial para comenzar una andadura en el software libre, pero nuestros conocimientos no se deben quedar estancados en el uso de una sola distribución ni de un solo entorno.

Es cierto que el sistema de gestión de paquetes APT es muy fácil de utilizar, pero tiene algunos inconvenientes. El primero de ellos, bajo mi punto de vista, es que los paquetes vienen ya compilados y con características que probablemente no vayamos a utilizar nunca, lo que implica una pérdida de rendimiento. El segundo, es que nos acostumbramos a instalar todo a través de este software y nos olvidamos de que no está disponible en todas las distribuciones.

A causa de estos inconvenientes, es muy frecuente encontrarnos con How-to’s que se limitan a utilizar APT cuando lo más genérico es instalar desde el código fuente. Por este motivo en esta entrada vamos a ver cómo instalar Apache, MySQL y PHP desde el código fuente.

Leer más …