Revistas en papel
 Amiga World Nº38 - Diciembre 1992
Anterior
MenĂº
Logotipo

El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España
para ofrecer los artículos de la revista Amiga World España.

PRUEBAS DIGITALES Amiga World

AUTOMATISMOS CELULARES

Por John Iovine

No hace falta ser bioquímico o un mago para disfrutar con los 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 niveles de sofisticación, desde los más simples a los extremamente 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 inteligencia artificial.

El listado 1 utiliza 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 formas 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 difusión, para elegir.

El programa utiliza una sección de 16 x 40, de texto de pantalla y se considera 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.

El programa genera mundos celulares automáticos, con los
que poder aprender sobre formas digitales y automatismos.
Es útil para aprender y jugar a la vez

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 tabla, para actualizar y modificar la visualización en pantalla. El programa busca cada celda en la tabla antigua 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.


HÁGALO 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

Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal