Boids

 

 

Ciao, ben tornato o ben tornata. In questo post daremo il benvenuto ai “Boids”.

Nel posto d’introduzione agli agenti ti ho lasciato con questo nome, appunto, “Boids”.

Ma cosa sono?

Facciamo un salto nel tempo, agli albori della simulazione, quando i moderni simulatori, come li conosciamo oggi, non esistevano.

L’idea di fondo, come sempre, in questo campo, parte da un modello. Anzi, direi, che parte da un’idea. Un’idea di Craig Raynolds, il quale voleva “modellizzare” il volo degli uccelli in uno stormo. Craig Raynolds scrisse il suo “paper” nel 1987 e decise di chiamare questi agenti (in questo caso il singolo volatile appartenente allo stormo), appunto, Boids; termine che altro non è se non la contrazione di “Bird – Oid- Object”.

L’acronimo appena citato, a sua volta, si rifà a “Bird-like Object”.

Il modello prevedeva delle semplici regole, come la distanza tra i volati, la direzione e soprattutto la capacità di evitare gli ostacoli. Oggi abbiamo modelli ben più complessi che descrivono il volo degli uccelli. Tengono conto di una miriade di variabili tra cui la “formazione”.

In questo post, volutamente, non parlerò di ambiente (nell’accezione di “luogo” in cui gli agenti interagiscono), ed il motivo principe è che ne parlerò nel prossimo post, quello che “amichevolmente” all’interno del nostro gruppo abbiamo definito “Main Post”.

Ma torniamo a noi ed ai boids.

Come accennavo prima, Craig Raynolds, scrisse un programma di simulazione definibile come programma di vita artificiale. Ogni Boid all’interno del software aveva una forma triangolare e alcune regole. Tre per esser precisi, ovvero:

  • Coesione (Cohesion)
  • Separazione (Separation)
  • Allineamento (Alignment)

Con “Cohesion” si intende una regola per la quale il singolo volatile “triangolare” tenda a “sterzare”, a “virare”, verso il punto di massa medio dell’intero stormo.

Coesione

Mentre con Separation, invece, si intende la capacità dell’agente di evitare ostacoli nell’ambiente ed gli altri agenti durante il “volo simulato”.

 

Separazione

L’ultima regola è Alignment, ovvero la capacità dell’agente di virare in funzione della direzione che lo stormo, in quel dato momento (tᵢ) ha.

 

Allineamento

Con queste poche regole Raynolds ha dato vita ad un sistema eccezionale. Tanto che il famigerato regista Tim Burton ha usato il suo modello nel classico filmBatman Returns del 1992.

Non solo questo modello ha applicazioni decisamente più pratiche e direi moderne. Alla base di alcuni software di pilotaggio di UAV (droni aerei) ci sono proprio richiami al modello dei Boids.

Il progetto di Raynolds, visti i tempi e la complessità, ha richiesto un po’ di “escamotage”. Di fatti la stesura del software fu fatta in “Symbolic Common Lisp”, mentre il codice e l’animazione sono stati prodotti su una macchina “Symbolic 3600 lisp Machine”.

Gli aspetti geometrici del sistema “boids” sono stati generati basandosi su un modellatore geometrico interattivo chiamato S-Geometry.

Cosa sono gli aspetti geometrici?

In questo caso praticamente tutto. Dall’ambiente e dagli ostacoli ai boids in toto. Di fatti questi “triangolini vintage” sono guidati nel loro volo a partire da calcoli geometrici.

Abbiamo visto poco fa le tre regole che governano questo sistema; tutti i movimenti dei singoli volatili “triangolari” sono definiti con regole geometriche. Per fare questi calcoli, hanno usato assi X,Y (pitch, yaw) e Z, ossia l’altezza. Il movimento, l’avvicinarsi o l’allontanarsi da compagni di volo e oggetti sono basati sulla distanza geometrica tra due punti. Il primo, appunto, il baricentro del volatile ed il secondo invece può essere il baricentro di un altro volatile in prossimità, piuttosto che il punto tangente del oggetto definibile come ostacolo. Il movimento dei Boids può essere definito sia caotico sia ordinato. Inoltre, un comportamento inaspettato, come, per esempio, la divisione dello stormo e la successiva “riunione” dopo l’aver evitato un ostacolo, può esser considerato come un comportamento emergente.

 

 

Questo progetto, come molti simulatori di vita artificiale, è un sistema di comportamento emergente. In questo caso, dello stormo. Questo comportamento “viene a galla” dall’interazione del singolo agente in accordo con le regole date a monte (le tre regole citate prima). In sostanza possiamo definire la prima categoria (di tre, definiti in base alla loro struttura interna o algebrica) di agenti: l’agente tropistico, attribuendo questo “motto” inglese “see – do -action.

Oltre al già citato uso di questo modello nella cinematografia (Tim Burton’s “Batman Returns”), si è trovato riscontro anche, per esempio, nell’automazione dei programmi muticanale delle web-radio. Prima di salutarci vorrei consigliarti di dare un’occhiata in rete cercandoNetLogo”.

NetLogo è un simulatore programmabile dall’utente. A seconda delle regole imposte tramite codice, è in grado di generare agenti boids-like guidati dalle regole scritte tramite codice.

Un’introduzione a NetLogo è possibile trovarla chiedendo al Professor Vizzari Giuseppe del dipartimento di Informatica, Sistemistica e Comunicazione (DISCO) dell’Università degli Studi di Milano Bicocca.

In ogni caso qui è possibile scaricare il simulatore in questione.

Mentre qui vi lascio il link di una raccolta di video-tutorial (in inglese) per programmare NetLogo.

 

Per oggi, da Mare della Simulazione, è tutto.

Come sempre mi auguro la lettura sia stata di tuo gradimento e ci “vediamo” al prossimo post.

Un saluto, ciao.

 

 

 

 

Andrea

 

Fonti:

  • http://www.red3d.com/cwr/boids/
  • https://en.wikipedia.org/wiki/Unmanned_aerial_vehicle
  • https://it.wikipedia.org/wiki/Batman_-_Il_ritorno
  • https://it.wikipedia.org/wiki/Tim_Burton
  • http://www.n-a-n-o.com/lisp/cmucl-tutorials/LISP-tutorial-3.html
  • https://en.wikipedia.org/wiki/Symbolics
  • https://ccl.northwestern.edu/netlogo/
  • https://www.youtube.com/watch?v=XJ-gO-yAwHU&list=PL8AF794C0800A6A73
  • http://www.disco.unimib.it/
  • https://www.unimib.it/giuseppe-vizzari