AUTOMATISMOS CELULARES
Por John Iovine
|
No
hace falta ser bioquímico o un mago para disfrutar con
lso programas de automatismo celulares. Con algún simple
código de CA, como el listado en este artículo,
podrá evocar representaciones de toda clase de fenómenos
naturales.
|
De todas las
posibles aplicaciones del Amiga, crear formas de vida artificial con
un programa de automatismo celular (CA del inglés Cellular Automation),
es una de las más fascinantes.
Muy pocos se
dan cuenta de las infinitas posibilidades que un programa de este tipo
abre al usuario de ordenadores.
Con un programa
de automatismo celular se puede transformar líneas simples o
complejas de programación CA, en representaciones de organismos
biológicos y ecosistemas. Pueden representarse las migraciones
de las aves, las hormigas, abejas y bacterias.
Se pueden incorporar
algoritmos que modelen parámetros como el tiempo atmosférico,
el crecimiento de la población, la extensión de una enfermedad
infecciosa, etc. También se pueden recrear las conexiones entre
las redes de neuronas y crear así, inteligencia artificial.
LOS INICIOS
Para ayudarle
a comenzar, hemos incluido dos programas simples en Amiga Basic. Estos
programas le introducirán en el estudio de la programación
de formas más complejas, que de otra forma quedarían ocultas,
como en programas compilados, aplicaciones a comerciales, etc. Por supuesto
se pueden encontrar programas CA en el mercado (de momento en el americano),
como "CELLPRO CELLULAR AUTOMATA ART AND ANIMATION" de la compañía
"MegageM".
ORDEN EN EL CAOS
Los programas
de automatismo celulares varían en los nivles de sofisticación,
desde los más simples a los extremdamente complejos como para
usuarios no introducidos. Generalmente y debido a que los programas
CA están basados en reglas simples, los parámetros complejos
no están escritos en los mismos programas. Se desarrollan por
sí mismos. Cuando usted inicia algunas reglas para que el ordenador
las repita rápidamente, el programa genera aspectos nuevos, con
curiosos parámetros, que proporcionan nuevas áreas de
estudio y ventanas a nuevos mundos que modelar, con sistemas de vida
e intelgiencia artificial.
El listado
1 utliza la pantalla de texto para crear un CA aleatorio y simple. El
programa llena rápidamente la pantalla con caracteres de dos
colores, que después mueve hacia arriba, con scroll. Cada nueva
línea creada en la parte inferior de la pantalla, significa una
nueva generación. Pulsando la tecla "Q" se sale del
programa. Pulsando cualquier otra tecla, las reglas cambian aleatoriamente,
con lo que se producen nuevas generaciones.
El listado
2 es un poco más complejo, se trata de un programa de organización
propia, que puede exhibir ofrmas y estructuras típicas de lo
que se conoce como "Reacciones de Belousov-Zhabotinskii".
Este experimento químico simple, realizado hace treinta años
en Rusia, muestra el descubrimiento y la exploración de organismos
de organización propia.
En ese experimento,
una solución de iones de bromato en un medio altamente ácido,
se colocan en una plataforma y espontaneamente forman centros de actividad
química. Cada centro crea formas expansivas concéntricas,
anillos circulares, y en algunos casos, espirales. Según van
creciendo las formas, empiezan a chocar con las formas vecinas. Rápidamente,
toda la superficie del material se organiza en un único sistema.
El diseño empieza entonces a decaer y desaparece como reacciones
secundarias que incluyen a la estructura primaria.
El
experimento que impactó treinta años atrás era
inesperado, pero natural. Hoy en día, el estudio las reacciones
de formas de organización propia, superan las barreras de la
química y llegan a la física, biología o astronomía.
Como no todo
el mundo posee un laboratorio propio de química, aquí
les facilitamos el listado 2, para que puedan experimentar en casa,
escuelas o facultad, con su Amiga. Se facilitan 3 parámetros
o formas iniciales, espiral, regeneración y fidusión,
para elegir.
El programa
utiliza una sección de 16 x 40, de texto de pantalla y se ocnsidera
cada carácter como una celda. Cada celda puede reciclarse en
tres niveles, activo, receptivo y neutro. El programa colorea el carácter
de cada celda según el estado actual. Rojo significa activo,
blanco es receptivo y violeta es neutro. Las reglas de funcionamiento
del presente CA son simples. La actividad puede afectar a una celda
vecina sólo si esa celda es receptiva, y vuelve a un nivel receptivo
después de un período de neutralidad. Esto significa que,
mientras una celda decae hasta el estado receptivo, sigue el color en
la escala: rojo a violeta y a blanco.
* COMENTARIO DE EN MEDIO
*
El
programa genera mundos celulares automáticos, con los
que poder aprender sobre formas digitales y automatísmos.
Es útil para aprender y jugar a la vez * FIN COMENTARIO DE EN MEDIO
*
El programa
crea dos tablas de datos, nuevos y viejos que contienen los niveles
presentes y previos de cada una de las celdas de la pantalla. Utiliza
los datos contenidos en cada tablam para actualizar y modificar la visualización
en pantalla. El programa busca cada celda en la tabala ntigua y, cuando
la encuentra en nivel neutro, la cambia a estado receptivo, en la nueva
tabla. Cuando encuentra una celda activa, mira como están las
celdas vecinas, para ver si la actividad puede afectar a alguna de ellas.
Si es así, cambia todas las celdas receptivas en la nueva tabla.
Después,
neutraliza la celda activa y coloca ese datos en la tabal nueva. Tras
haber controlado toda la tabla antigua, se muestra la nueva tabla en
pantalla, mientras que, al mismo tiempo, se copia la tabal nueva en
la antigua. Al terminar la visualización, se repite de nuevo
todo el proceso. Tal como se ha explicado.
Como las reglas
son sencillas, tras unas pocas generaciones aparecen complejos sistemas
y formas. El programa está escrito enteramente en Amiga Basic,
por lo tanto el proceso es lento, unos diez segundos por pantalla. Si
usted lo compila, puede expandir la sección de pantalla a pantalla
completa. Y si trabaja en código máquina, el programa
trabajará tan rápido, que podrá utilizar pantallas
complejas y pixels en lugar de caracteres.
HAGALO USTED MISMO
Escribí
este programa en base a tres plantillas básicas, que pueden convertirse
en formas geométricas mucho más complejas. No debe considerar
estas formas o plantillas como restrictivas, simplemente son puntos
de partida. Puede cambiarlas como quiera.
Los códigos del programa
son:
1=blanco=receptivo
2=violeta=neutro
3=rojo=activo
utilice estos
números en la orden GOSUB, en la sección de comienzo de
definición de formas. También puede cmabiarlas en el subprograma
SPIRAL.
Para comenzar
con una pantalla en blanco, el programa llena las dos tablas, antes
de introducir las formas, con unos. Así se asegura un comienzo
totalmente nuevo. Usted sólo tiene que determinar el punto de
inicio de celdas activas y neutras. Que disfrute con el programa.
LISTADO 1. Automatismo celular aleatorio simple. 'J.Iovine PALETTE 0,0,0,0:PALETTE 1,1,1,1:PALETTE 2,0,0,0 FOR i=1 TO 8:READ n:code(i)=m:NEXT DATA 0,1,1,1,1,0,0,0 DIM olden(77),newen(88) GOTO start beginning: FOR j=1 TO 76 rule=(4*olden(j-1)+2*olden(j)+olden(j+1))+1 newen(j)=code(ruke) NEXT FOR j=1 TO 76 COLOR 2=neewn(j)),0 PRINT CHR$(31); olden(j)=newen(j) NEXT PRINT CHR$(10); a$=INKEY$ IF a$="q" THEN COLOR 1,0:END IF a$<>"" THEN codechange GOTO beginning start: RANDOMIZE FOR i=1 TO 76 olden(i)=INT(RND(2)*2) NEXT CLS GOTO beginning
LISTADO 2. Automatismo celular de organización propia.
REM j.iOVINE
DIM olden(721),newen(731)
flg=1:GOSUB setup
CLS:PRINT CHR$(13),"Use el ratón para seleccionar"
MENU 1,0,1,"Selección"
MENU 1,1,1,"Espiral"
MENU 1,2,1,"Regeneración"
MENU 1,3,1,"Difusión"
MENU 1,4,1,"Salida"
ON MENU GOSUB selection
MENU ON
WHILE flg
WEND
GOYO display
start:
FOR x=40 to 680
IF olden(x)=3 THEN changearound
IF olden(x)=2 HTEN newen(x)=1
cscan:
NEXT
GOTO display
changearound:
newen(x)=2
IF olden(x-1)=1 THEN newen(x-1)=3
IF olden(x+1)=1 THEN newen(x+1)=3
IF olden(x+40)=1 THEN newen(x+40)=3
IF olden(x+41)=1 THEN newen(x+41)=3
IF olden(x+39)=1 THEN newen(x+39)=3
IF olden(x-40)=1 THEN newen(x-40)=3
IF olden(x-41)=1 THEN newen(x-41)=3
IF olden(x-39)=1 THEN newen(x-39)=3
GOTO cscan
display:
LOCATE 4,1
FOR y=1 TO 16:PRINT TAB (19);
FOR x=1 TO 40:COLOR newen(x+(y*40)),0
olden(x+(y*40))=newen(x+(y*40))
PRINT CHR$(31);:NEXT
PRINT CHR$(13);:NEXT
GOTO start
setup:
PALETTE 0,0,0,0:PALETTE 1,1,1,1
PALETTE 2,.8,0,.93:PALETTE 3,1,.2,.27
FOR i=0 to 721:olden(i)=1:newen(i)=1:NEXT:RETURN
'Introducir forma
spiral: 'Espiral
GOSUB setup
FOR i=336 TO 346:newen(i)=3:NEXT
newen(307)=3:newen(335)=2
FOR i=295 TO 306:newen(i)=2:NEXT
flg=0:RETURN
regen: 'Regeneración
GOSUB setup
newen(380)=3:newen(381)=3:newen(300)=3
newen(301)=3:newen(339)=3:newen(340)=2
flg=0:RETURN
diff: 'Difusión
GOSUB setup
newen(340)=3:flg=0:RETURN
bye:
MENU RESET
END
selection:
ON MENU(1) GOSUB spiral,regen,diff,bye
RETURN
|
|