La capacità di produrre comportamenti sincronizzati
è una proprietà comune nei sistemi auto organizzati
in natura.
Alcuni esempi sono: le lucciole,
alcune specie delle quali sono capaci di sincronizzare i lampeggi,
o i grilli,
alcune specie dei quali sono capaci di sincronizzare il canto,
le cicale, un tipo di insetto che mostra uno sviluppo sincronizzato
ed emergente dallo stato larvale,
con un periodo che è un numero primo di anni.
Neuroni nel cervello, che sincronizzano le scariche.
Le cellule del cuore, che sincronizzano le loro contrazioni.
Tutto ciò sembra avere un significato adattativo,
ed è stato messo in opera per selezione naturale.
In questa subunit considereremo un esempio,
quello delle lucciole che si illuminano a intermittenza.
Se siete fortunati,
vi sarà capitato di assistere a questo fenomeno.
Lucciole che lampeggiano sincronizzate.
Ve lo mostro in questo video.
I piccoli punti luminosi sono singole lucciole.
potete notare che una parte di esse cominciano a lampeggiare all'unisono,
e che la luce sincronizzata diventa più intensa
quante più lucciole partecipano al lampeggio sincronizzato.
sembra circa un lampeggio al secondo.
E' molto molto suggestivo.
Come nella nostra discussione su flocking e schooling
possiamo chiederci perché questi sistemi si sincronizzano?
Bene, almeno nel caso delle lucciole
sembra esserci una spiegazione in termini
di accoppiamento
Anche qui vi sono differenti ipotesi.
Un'ipotesi è che il lampeggio sincronizzato
rende più visibile alle femmine la posizione dei maschi.
Così le femmine possono trovare i maschi.
Questo fa apparire piccoli gruppi di maschi più grandi,
e forse li rende più interessanti per le femmine.
Ciò riduce il rumore:
i maschi possono più facilmente trovare le femmine
nella fase buia tra i lampeggi, piuttosto che doverle cercare
mentre tutti lampeggiano caoticamente.
Queste sono ipotesi.
Forse sono tutte corrette.
Forse solo qualcuna.
Nessuno è davvero certo al riguardo.
Ma sembra essere un tratto adattativo.
La questione dunque è come sincronizzano.
Il presupposto è
che non ci sia un leader che guida la sincronizzazione,
e che ciascuna singola lucciola veda lampeggiare solo i suoi vicini.
Ciò che è stato scoperto è che ciascuna lucciola
è un oscillatore naturale, che ha un naturale lampeggio
di frequenza di circa un secondo.
Ciò accade a mezzo di attività cerebrale.
L'eccitazione cresce in certi neuroni fino a raggiungere una soglia
che porta al lampeggio.
C'è un periodo naturale per questo.
Tuttavia, se una lucciola vede i suoi vicini lampeggiare,
ciò resetta il suo ciclo,
cioè porta a zero il livello di eccitazione,
oppure accelera il ciclo, forse a seconda della specie.
Ma ciò che si è visto
in un gruppo di questi oscillatori
che interagiscono, è il genere di sincronia che abbiamo visto,
ed è chiamato sincronia attraverso oscillatori accoppiati.
Cosi, analogamente agli esempi di flocking
abbiamo un meccanismo molto semplice
che produce una sincronizzazione decentrata,
che possiamo simulare piuttosto facilmente con Netlogo.
Dunque consideriamo un modello,
cerchiamo il modello Netlogo fireflies
nella sezione biology della models library
e vedremo a breve cosa accade.
Qui abbiamo un certo numero di lucciole, e ciascuna è un oscillatore naturale,
ha il suo orologio personale
che dopo un certo numero di ticks produce un lampeggio.
Poniamo che la lunghezza del ciclo sia dieci,
e che l'orologio segni zero quando la lucciola lampeggia,
e che dopo il lampeggio sia portato a nove,
e che raggiunga di nuovo a zero, e lampeggi.
Cioè, ogni volta che raggiunge il massimo,
l'orologio sia posto a zero e lampeggi.
Tutte le lucciole del modello hanno cicli della stessa durata, ma
ciascuna, al reset,
parte da un punto casuale del ciclo,
cioè non partono tutte da zero, partono da un qualche punto a caso.
Vediamo.
Ho aperto Netlogo
sto andando nella libreria dei modelli
vado in biology
fireflies
e lo apro.
Dunque, per mostrare come lavora, fatemi cominciare con
una lucciola sola,
ora questo mostra quante lucciole abbiamo
e “cycle length” che abbiamo posto a dieci ticks
premiamo setup. Qua sotto c'è la nostra lucciola
il piccolo triangolo grigio
rallentiamo un po'
e "go"
vediamo che si muove intorno
potete vedere che il mondo si continua ai confini
e che ogni dieci ticks la lucciola lampeggia
ma qui non c'è nessuno con cui interagire
così continua a muoversi lampeggiando
con lo stesso ciclo. OK, lo fermo.
Ora partiamo con due lucciole. Iniziamo.
Qui ce ne è una che non potete vedere bene.
E qui un'altra, notate che cominciano in punti diversi del loro ciclo,
questa è partita con scelta casuale del punto di lampeggio per il suo ciclo,
questa è partita da un punto differente
così quando premo “go”
potete vederle lampeggiare in momenti differenti.
Allo stesso modo, fatemi partire da, diciamo ... 45.
Vediamo diversi individui lampeggiare in momenti diversi.
Ok, ora guardiamo come interagiscono.
Quando una lucciola percepisce una o più lucciole che lampeggiano vicino,
e possono vedere in un raggio di una patch,
cioè possono vedere solo una patch intorno a loro,
usano questa informazione per il reset del loro orologio.
Ecco come funziona:
ciascuna lucciola ha un parametro “flash length”
cioè quanti ticks dura ciascun lampeggio.
Nella versione che abbiamo
appena visto
c'era un tick per lampeggio
Puoi pensare a ciò come un tick.
Per adesso. Resettiamo.
C'è anche un parametro chiamato “flashes to reset”,
che da il numero delle lucciole che devono essere viste lampeggiare
perché cambi l'orologio
così devono guardare entro una patch intorno a loro
e ad ogni step contare il numero di lucciole
che vedono lampeggiare.
E possono usare una o l'altra di due regole.
La prima è chiamata "phase delay"
ed ecco come lavora.
Se sono una lucciola
e vedo abbastanza lucciole lampeggiare nel mio raggio visivo,
cioè se raggiungo coi flash visti, il numero
di quanti lampeggi devo vedere nel mio raggio visivo per regolare l'orologio,
se ne vedo abbastanza, procedo a resettare il mio orologio a
a “flash length”
“flash length” a un tick.
Resetto il mio orologio a uno,
tutti lampeggiano allo zero,
Quando il mio orologio dice zero io lampeggio,
quindi se io resetto l'orologio a uno, ciò significa
che sono tornata indietro, ovunque fossi,
indietro rispetto a quando avrei dovuto lampeggiare,
e ciò fa sì che io sia sincronizzata coi lampeggi che ho appena visto,
perché tutti quelli che ho visto lampeggiare
hanno appena lampeggiato, e i loro orologi sono tutti a uno,
o due se la lunghezza del flash è due, e così via
Così io sono sincronizzata con le altre lucciole che ho visto nei dintorni.
È chiamata delay perchè in effetti regola indietro il mio orologio
per essere in sincronia con quanto ho visto.
C'è un'altra regola chiamata
“phase advance”.
Se vedo abbastanza lampeggi nel mio raggio visivo, porto il mio orologio a zero,
cioè porto avanti il mio orologio, e immediatamente lampeggio.
Possiamo sperimentare entrambe le regole.
Guardiamo come appare il comportamento,
ora la strategia è posta su “delay”
il “flash” è settato dal reset, il numero che devo vedere intorno
per resettare il mio orologio è uno,
così è sufficiente vederne una,
“flash length” è un tick
“cycle length” è dieci ticks
ok “show dark fireflies” semplicemente mostra quelle grigie,
quelle che non stanno lampeggiando.
Se lo metto off queste spariscono
per ora non voglio farlo.
Ora scelgo il numero, diciamo ... sette … circa ...
poco sopra settecento.
Ok, “setup”
ora sono tante.
E “go”.
Aumentiamo un po' la velocità.
In questo grafico vediamo ad ogni step quante
hanno lampeggiato.
Dice questo.
Stanno interagendo le une con le altre,
si può vedere questo numero
aumentare qui
ciò significa che
una quantità sempre maggiore si sta sincronizzando
e cresce velocemente.
Sta scendendo un poco,
l'irregolarità deriva dal fatto che si stanno muovendo casualmente,
e così interagiscono in maniera casuale.
Ma stanno certamente sincronizzando sempre di più i loro lampeggi.
Lo vediamo più chiaramente se rallentiamo un poco.
Ora possiamo vedere un lampeggio davvero sincronizzato.
Sembra quindi che la trategia “delay” funzioni davvero.
Bene. Stop.
Dunque abbiamo un set di regole relativamente semplice
al quale obbedisce ciascuna lucciola.
Ognuna interagisce solo con i vicini entro una patch
e tuttavia otteniamo un gruppo in sincronia quasi perfetta.
Andando avanti diventerebbe ancora migliore ed otterremmo una perfetta sincronia
senza che nessuna lucciola abbia una conoscenza globale di ciò che accade.
Ora un piccolo quiz
dove proverete voi stessi questo modello.