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.