Il progetto ScalaSim si pone di realizzare un simulatore di Automi
Cellulari capace di
supportare varie tipologie di questi ultimi, provvedendo a fornire meccanismi e
componenti generali ed estendibili per fare in modo di adattare il software
costruito in base alle esigenze delle simulazioni.
Un automa cellulare è un modello matematico che consiste in una griglia costituita da celle che rappresentano delle entità che evolvono nel tempo. Ciascuna di queste celle può assumere un insieme finito di stati e in ogni unità di tempo la griglia viene aggiornata seguendo delle regole definite dalla tipologia di automa simulato.
Durante l’analisi del dominio, sono stati individuati i seguenti requisiti del sistema software da realizzare.
L’obiettivo del progetto è la creazione di un simulatore di automi cellulari all’interno di un ambiente finito. L’ambiente è suddiviso in celle, le quali durante la simulazione possono subire un cambiamento di stato dettato da un insieme di regole o comportamenti definiti da uno specifico automa cellulare. L’applicazione o meno di una regola può dipendere sia dallo stato della cella su cui viene applicata, sia da un insieme di fattori che caratterizzano l’ambiente e la simulazione in un certo istante di tempo. Generalmente tra questi fattori possono essere considerati lo stato del vicinato di una cella, o il numero di step che la simulazione ha effettuato in un dato momento. Una regola deve quindi essere definita nella maniera più generale possibile in modo tale da poter rappresentare, potenzialmente, un qualsiasi comportamento di un automa cellulare.
Il simulatore prodotto dovrà implementare almeno 3 dei seguenti automi cellulari:
Di seguito una breve descrizione per ognuno di essi.

Conway’s Game of Life è un semplice automa cellulare che simula l’evoluzione di un universo artificiale composto da cellule. Queste cellule possono essere in due stati: vive o morte.
Le regole sono molto semplici:

Brian’s Brain è un automa cellulare che simula l’evoluzione di un universo artificiale composto da celle che possono trovarsi in uno dei seguenti tre stati:
ON): La cella è attiva e può influenzare le celle vicine.DYING): stato della cella un’iterazione successiva dopo essere
stata attiva.OFF): La cella è inattiva, non ha alcun effetto sulle celle vicine.Ad ogni step della simulazione, una cella OFF diventa ON se esattamente due
degli otto vicini hanno stato ON. Tutte le celle ON, allo step successivo
diventano DYING: tutte le celle in questo, all’iterazione successiva avranno
stato OFF.
![]()
Questo automa cellulare ha un comportamento molto semplice ma i risultati che emergono possono essere piuttosto complessi.
La griglia iniziale è composta da sole celle bianche, e in una qualunque posizione viene collocata una formica. Ad ogni iterazione la formica si sposta di una posizione secondo le seguenti regole:

WaTor simula l’evoluzione di una popolazione contenente prede e predatori,
nel nostro caso Fish e Shark rispettivamente, all’interno di un ambiente
toroidale. I risultati possono essere interessanti, come l’estinzione di una o
entrambe le specie o un equilibrio tra le due.
Le regole possono essere così riassunte:
![]()
Rule110 è un automa cellulare monodimensionale che si espande all’infinito. Ogni cella può assumere due valori, e lo stato successivo è definito dalla cella stessa e i suoi vicini. Le celle possono assumere valore 1 e 0, visivamente codificati rispettivamente in nero e bianco.
In base alla configurazione di una cella e delle due vicine si definisce lo stato della cella sottostante al passo successivo in base allo schema:
| 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
Gli utenti saranno in grado di interagire con il sistema principalmente in due modalità:
In entrambe le modalità un utente potrà configurare i parametri della simulazione, tra cui:
Il sistema software deve essere in grado di rappresentare una vasta gamma di automi cellulari, ovvero supportare un ambiente costituito da celle aventi un certo stato, il quale può mutare nel tempo in base a specifiche regole dell’automa. Oltre ad essere in grado di modellare un automa, il sistema deve poter effettuare un certo numero di iterazioni dell’evoluzione del sistema, ossia applicare l’insieme di regole caratterizzanti l’automa alle celle componenti l’ambiente, in modo tale da causare un susseguirsi di cambiamenti di stato delle stesse ad ogni ciclo.
Il sistema deve garantire la correttezza di ognuno degli automi cellulari listati precedentemente, permettendo inoltre una visualizzazione in tempo reale della loro evoluzione o un’esportazione grafica del loro risultato.
Trattandosi di un simulatore con la possibilità di visualizzazione in tempo reale, il sistema deve garantire un discreto livello di efficienza. Riguardo l’interfaccia grafica che permette l’interazione col simulatore stesso, essa dev’essere intuitiva e di facile uso, specialmente per quanto riguarda aspetti più avanzati come la configurazione della simulazione.
| Indice | Capitolo Precedente | Capitolo Successivo |