Duda con implementación de autómata celular

4eVaH
08 de Febrero del 2009
Buenas a todos, tengo que implementar un autómata celular en java, para, con ayuda de algoritmos genéticos, solucionar el problema de la mayoría.

Lo voy a hacer en java porque es lo que más entiende el que me va a corregir... el caso es que me han aparecido algunas dudas.

Para el autómata he pensado en una clase "Organismo" con los siguientes atributos y operadores:
- Una lista de células
- Una array con los distintos estados que puede tomar una célula en nuestro organismo.
- Una tabla de reglas, que són las que marcan el cambio de estado de una célula en concreto.
+ evolucionar() provoca una evolución de un paso en el organismo, tomando la tabla de reglas
+ evolucionaCelula(celula) provoca la evolución de una célula enconcreto

Para la célula:
- Estado , representa el estado en que se encuentra mi célula
+ cambiaEstado(nuevo_estado) cambia el estado de la célula

Ademas de todos los atributos get, set, y add que me puedan ser útiles.

Vamos con el problema... la tabla de reglas:

La tabla de reglas tiene esta pinta.
[img]http://img142.imageshack.us/img142/1379/screenshot2ky1.png[/img]
(para un ejemplo sencillo)

El valor del centro representa mi célula, y el de los extremos los de las células adyascentes. Por ejemplo en la primera columna si mi célula está muerta (vale 0) y las dos adyascentes también pues permanece muerta. y en la última columna, si mi célula está viva (vale 1) y las de los extremos tambien (valen 1) entonces mi célula muere.

Se me han ocurrido algunas formas de diseñar en java una tabla de reglas, pero todas me parecen bastante chapuceras, y para una tabla de reglas sencilla puede funcionar, pero también tengo que trabajar sobre modelos de autómatas multidimensionales y eso ya se me podría ir de las manos.

Alguna sugerencia sobre los tipos de datos que me puede ser mas correctos?

He pensado en crear mi propio tipo abstracto de datos, Tabla de Reglas, con las operaciones comunes de una tabla de reglas, pero no se yo...

En fin, a ver si alguno puede echarme una mano. El tema de usar el algoritmo genético una vez que tengo el autómata celular mas o menos lo tengo controlado.

Saludos.

telemak0
08 de Febrero del 2009
Personalmete creo que deberias definir una clase Datos, en la que definirias la Tabla de reglas, es decir, algo asi:


package pruebas;


public class Tabla_de_reglas {

private String ValorColumna1= null;
private String ValorColumna2 = null;
private String ValorColumna3 = null;

// Constructor por defecto
public Tabla_de_reglas() {

}

public String getValorColumna1() {
return ValorColumna1;
}

public void setValorColumna1(String N) {
this.ValorColumna1 = N;
}

/// RESTO DE METODOS.....

}


Pienso que asi los datos son mucho mas faciles de manejar a la hora de la programacion posterior, espero que te sirva de ayuda.


Un saludo.