Secciones de la página

Computación fisiológica


ChRules. RandRecursive


PDonnelly. CellsMatrix


ChRules. Iterative

Tol

Artículos del sitio

Presentación de Tol

Todos los programas

Simuladores visuales

Sitios que me gustan

Por categorías

Algoritmia

Búsqueda y ordenación

Computación fisiológica

Editorial y edición

Gráficos de datos

Herramientas y utilidades

Hipertexto

Informática forense

Lectura óptica de datos

Metaprogramación

No determinista

Ofimática

Recursión e iteración

Reglas y restricciones

Series y estadística









Programas que están inspirados en las funciones de los seres vivos

En esta sección se incluyen aquellos programas cuyos algoritmos o estrategias o estructuras o forma de funcionamiento están inspiradas en las funciones de los seres vivos.

A continuación se expone un breve resumen de cada uno de los progamas y, en cada programa, pulsando sobre el botón azul con flecha, a la derecha del título, se accede a su código completo.

make.tol de ChRules.RandRecursive

ChRules.RandRecursive es un programa de aplicacion de reglas de reescritura que: a) aplica a un area rectangular de caracteres, b) reglas de transformacion de areas rectangulares de caracteres y c) que juntas forman una base de reglas de transformacion del contenido de ese area con un cierto objetivo. Las reglas de ChRules.RandRecursive son del

ChRules.RandRecursive es un programa de aplicacion de reglas de reescritura que: a) aplica a un area rectangular de caracteres, b) reglas de transformacion de areas rectangulares de caracteres y c) que juntas forman una base de reglas de transformacion del contenido de ese area con un cierto objetivo. Las reglas de ChRules.RandRecursive son del tipo [condicion, accion], esto es: a) si se cumple la condicion b) entonces se aplica la accion de transformacion. Tanto la parte de la condicion como la de la accion son 2 rectangulos de caracteres, en principio de identicas dimensiones, por ejemplo de 2x3 caracteres, de 1x2 caracteres, 3x5 caracteres, etc. La parte inicial del nombre del programa, ChRules, proviene de estas caracteristicas, Ch de Ch(aracters) y Rules de reglas, esto es, que se podrian llamar reglas de caracteres. La idea basica del funcionamiento es la siguiente: a) si en el estado actual del area de caracteres existe algun subarea rectangular con el mismo contenido que la parte de condicion de una regla, b) entonces dicha regla es aplicable y de aplicarse el subarea rectangular del area de caracteres que coincide con la condicion es sobreescrita, conservando la forma, con el area rectangular de caracteres de la accion de la regla. Por tanto, estas reglas de rectangulos de caracteres que utiliza el programa ChRules.RandRecursive pueden considerarse como reglas de reescritura, pero, a diferencia de otras reglas de reescritura, en vez de trabajar con secuencias de caracteres trabajan con areas rectangulares de caracteres.

ChRules.RandRecursive visualiza sus resultados de 2 formas diferentes: a) Mediante una traza de evolucion del mapa por pantalla. b) Mediante una traza en un fichero en disco, escrita en Javascript, que permite la posterior simulacion de los resultados. Esta traza en Javascript necesita ser retocada, por ejemplo, en la finalizacion de los arrays, para poder ser empleada por un simulador Javascript. El programa se estructura en base a un probrama principal make.tol que se incluye tantos ficheros de aplicaciones como casos se han programado. Cada uno de los casos consta de: a) Un area de caracteres inicial que puede ser cosiderado como el mapa de operaciones o la base de hechos. b) Una base de reglas con las reglas de caracteres que operan sobre dicho mapa. Las funciones principales de ChRules.RandRecursive son: a) Set EngineCicle() que es el motor recursivo de aplicacion de reglas. b) Set EngineGetRule() que elige al azar una regla aplicable y para ello se apoya en EngineMatch() que encuentra los posibles match entre subareas del area y la parte de condicion de las reglas. c) Set EngineApplyRule() que aplica una regla y transforma un subarea al azar, de entre las transformables, del area y para ello se apoya en la funcion EngineApplyAction() que aplica una accion a un area. d) Real PackPrint() que se encarga de visualizar las reglas, las areas en su estado inicial y en su evolucion e, incluso, de la creacion de las trazas, como arrays en Javascript, que permitiran la simulacion. Aunque escribe Javascript, este programa no es categorizado como de metaprogramacion pues el codigo Javascript que genera no es 100% funcional.

make.tol de PDonnelly.CellsMatrix

PDonnelly.CellsMatrix es un programa que reproduce el autómata celular propuesto por Peter James Donnelly y que esta programado en Tol utilizando una estructura matricial, Matrix, de celulas de opinion. Es un programa desarrollado en un solo fichero Tol y que al emplear una version moderna de la funcion FormatMatrix() de 6 parametros, que en las

PDonnelly.CellsMatrix es un programa que reproduce el autómata celular propuesto por Peter James Donnelly y que esta programado en Tol utilizando una estructura matricial, Matrix, de celulas de opinion. Es un programa desarrollado en un solo fichero Tol y que al emplear una version moderna de la funcion FormatMatrix() de 6 parametros, que en las versiones anteriores solo tiene 3, funciona a partir de la version Tol 2.0.1, sin embargo, su adaptacion a versiones anteriores no es compleja.

Cada celda de la matriz de este automata celular contiene un valor, por ejemplo, el 0 o el 1 elegido aleatoriamente, si bien PDonnelly.CellsMatrix puede funcionar hasta con 10 valores diferentes del 0 al 9 Cada valor 0 o 1 puede representar, por ejemplo, la opinión política de la persona residente en esa celda de la matriz u otra opinion sobre cualquier otro tema en particular. En cada paso del programa, se selecciona al azar a una de las personas y su opinion se somete a un posible cambio. Para ello se selecciona al azar uno de sus 8 vecinos, o menos si la celda esta situada en un borde o esquina de la matriz y su opinion se cambia por la de este vecino, fuera cual fuera su anterior opinión, pudiendo ser que no cambie si era la misma que la de su vecino. Este automata celular de, a partir de una matriz con valores aleatorios, tiende a crear zonas de opinion que crecen unas sobre otras y evolucionan por areas de influencia, llegado el caso, tras multiples ciclos, puede que toda la matriz puede terminar siendo de la misma opinion. Una de las posibles variantes de simulacion, que se incluye dentro de este programa PDonnelly.CellsMatrix, es la de la opinion contraria, esto es, que la persona en vez de adoptar la misma opinion que su vecino, adopte justo la contraria. Con esta estrategia, en vez de formarse grupos el proceso es justo el contrario, los grupos de opinion tienden a deshacerse segun avanza el proceso de ejecucion.

make.tol de ChRules.Iterative

ChRules.Iterative es un programa iterativo de aplicacion de reglas de reescritura que: a) aplica a un area rectangular de caracteres, b) reglas de transformacion de areas rectangulares de caracteres y c) que juntas forman una base de reglas de transformacion del contenido de ese area para alcanzar un cierto objetivo, como por ejemplo, solucionar un

ChRules.Iterative es un programa iterativo de aplicacion de reglas de reescritura que: a) aplica a un area rectangular de caracteres, b) reglas de transformacion de areas rectangulares de caracteres y c) que juntas forman una base de reglas de transformacion del contenido de ese area para alcanzar un cierto objetivo, como por ejemplo, solucionar un problema Las reglas de ChRules.Iterative son del tipo [condicion, accion], esto es: a) si se cumple la condicion, el rectangulo condicion de la regla equipara con alguna subarea del area de trabajo b) entonces se aplica la accion de transformacion cambiando el contenido de la antigua subarea del area de trabajo por el nuevo rectangulo que proporciona la parte de la accion de la regla.

Los casos de estudio que incluye ChRules.Iterative son, por ejemplo: a) Automatas celulares con sus reglas de la vida, que pueden funcionar tanto de forma determinista como aletatoria. Este caso incluye un area y 2 bases de reglas. b) Robots en laberintos que encuentran la salida con el algoritmo de la mano derecha o el de la izquierda y que solo se pueden resolver aplicando las reglas de forma determinista, ya que al azar los robots suelen perderse y dar vueltas, aunque tarde o temprano terminarian por encontrar la salida, por casualidad. En este caso se incluyen varios laberintos y varias bases de reglas que se pueden combinar para crear otras. c) Relleno de figuras, que se resuelven bien de forma aleatoria y que tambien funcionan de manera determinista, se incluyen 2 areas y una base de reglas sencilla. d) Partidas de pong, el pingpong electronico, en las que de forma completamente al azar es dificil que los jugadores den mas de 2 toques seguidos sin perder, de forma completamente determinista lo habitual es que los jugadores no fallen nunca si las reglas estan bien definidas (pues las reglas del jugador se definen antes que las reglas del movimiento de la pelota), entrando facilmente en una partida que es un ciclo eterno y con una cierta proporcion de azar, por ejemplo, 0.15 o 0.20, en los que las partidas simulan ser mas reales con varios toques consecutivos pero sin hacerse eternas. e) Una simulacion de un sistema de sedimentacion, orden parcial, mediante un metodo similar al metodo de ordenacion llamado de la burbuja.

2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio

Tol