Archive for March, 2010

Añadiendo comportamientos a agentes

Saturday, March 20th, 2010

Continuando con la serie de minitutoriales, toca dotar a nuestros agentes de inteligencia. Lo haremos añadiéndoles comportamientos. Un comportamiento es un algoritmo sencillo que nuestro agente ejecutará para intentar cumplir un objetivo. Evidentemente no hay inteligencia real en estos comportamientos, pero al tener muchos agentes interactuando entre ellos al final aparece un comportamiento global que podría calificarse como tal.

Al igual que con los agentes, para crear un comportamiento hemos de heredar de una clase de JADE, aunque esta vez tenemos varias para elegir. Dependiendo del tipo de comportamiento que queramos crear hemos de extender una clase u otra, y si no nos convence ninguno, extendemos la clase superior de la jerarquía y determinamos nosotros mismos las condiciones de ejecución del comportamiento. (more…)

OSM: Mapa de Nueva Orleans a todo color

Friday, March 12th, 2010

Finalmente nos vamos aproximando al visor de mapas de carreteras hexagonales definitivo (para este proyecto, claro).

Ahora tenemos una representación en colores fijos para los distintos elementos. El Rojo es para las carreteras (cuanto más rosa sea, más rápida es la vía… :D). El Azul es para el agua, el Magenta es para las vías de tren, el Verde es para los edificios gubernamentales, parques, iglesias o cualquier otro sitio donde la gente se pueda refugiar.

Se puede ver cómo el valor de cada casilla es el del elemento más importante de los que la ocupan. Por ejemplo, se pinta antes el puente que el río. En la parte superior del visor se encuentra información útil sobre la localización y detalles del mapa.

Creando un Agente

Friday, March 12th, 2010

Hoy traigo un nuevo minitutorial, esta vez sobre la creación de agentes.

Crear un agente utilizando la plataforma JADE es realmente sencillo, basta con crear una clase que extienda a jade.core.Agent y listo. Para introducir nuestra lógica en el agente lo que tenemos que hacer es sobreescribir un par de métodos.

El método setup() se ejecuta al inicio del ciclo de vida del agente, y es donde hemos de escribir el código de inicialización. El otro es el método takeDown(), que se ejecuta cuando muere el agente y nos permite escribir el código para liberar los recursos que estuviese utilizando. (more…)

OSM: Pintando Puentes

Thursday, March 11th, 2010

Seguimos progresando a la hora de representar, en nuestra malla hexagonal, la información extraída de OSM. Hemos mejorado el visor para que nos muestre una vista real del puente (ahora estan en la dirección correcta). También hemos tenido en cuenta la prioridad de las carreteras a la hora de representar nuestra información, siendo las carreteras más importantes las que queden pintadas. Por ejemplo, si una carretera pasa por encima de un río (el puente de la imagen), se pintará la autopista (azul) por encima de otras carreteras menos importantes u obstáculos (como el río que pasa debajo del puente).

Como se puede ver, si aumentamos mucho el tamaño del hexágono, perdemos mucha información, llegando a interrumpirse las carreteras.

OSM: Contratiempos

Monday, March 8th, 2010

Curioso contratiempo el de la rotación del escenario a la hora de representarlo con JAVA 2D, ¿cual será el problema? Estamos recorriendo mal la matriz obviamente.

La solución próximamente.