Voters 2

Più in dettaglio

In un post precedente abbiamo parlato del programma “Voters” e della sua realizzazione fatta 30 anni fa.

Vediamo più in dettaglio come è realizzata questa simulazione e di conseguenza cosa fa il programma che la realizza e vediamo se le conclusioni tratte allora sono ancora valide.

L’insieme degli elementi della simulazione è una griglia quadrata i cui elementi possono assumere un valore discreto ( non continuo ) di opinioni. Ogni elemento ha otto vicini, tranne quando di trova sul bordo del quadrato. Questo comporterebbe una diversa possibilità di influenzare le opinioni dei vicini per un elettore posto sul bordo della griglia in quanto questi elettori hanno un numero ridotto di vicini.

Nel caso del quadrato rosso i vicini mancanti sono 3, mentre per quello azzurro sono 5. É evidente quanto questo possa alterare la “capacità di convincimento” dell’elettore se posizionato in queste posizioni o analoghe: nel caso in cui sia posto accanto al bordo laterale la capacità di scelta di un singolo elettore è 5/8 di quella di uno al centro, cioè il 37,5% in meno. I conti per quello nell’angolo li lasciamo a chi legge.

Per mantenere lo stesso numero di vicini, con un artificio computazionale, si fanno coniungere fra loro i lati contrapposti del quadrato così da avere un cilindro piegato ad anello ( toro ).

Se immaginiamo la griglia quadrata disposta su di un toro, vedremo che anche gli elementi che si trovano sul bordo del quadrato hanno sempre 8 elementi vicini.

Si può obbiettare che il toro non è una figura geometrica molto frequente in natura, però visto che viene generata con la rotazione di un cerchio attorno ad un asse si può dimostrare che non è molto diverso da una sfera. ANZI!!! La sfera è solo un toro molto particolare, infatti se nel toro l’asse di rotazione che lo costruisce passa in un punto qualsiasi nella sfera l’asse di rotazione coincide con il diametro: toro e sfera sono, a livello geometrico, parenti molto stretti!

Ricapitolando, vediamo di riassumere come è implementato il programma.

Nota Bene:nella realizzazione del programma che ho usato ho trascurato completamente la parte grafica, in quanto, sebbene sia accattivante da vedere, non aggiunge nulla a quello che intendevo misurare/evidenziare.

Condizioni iniziali:

  • vengono stabilite le dimensioni della griglia e il numero delle opinioni possibili.
  • la griglia di partenza viene popolata con valori distribuiti a caso.
  • viene stabilito il numero di interazioni N fra soggetti della popolazione dopo il quale la simulazione termina.
  • viene stabilito un certo numero di “sondaggi” : ovvero durante la simulazione si fissano dei momenti ( ad esempio ogni M interazioni ) in cui si conta la popolazione e si misura quanto e’ diffusa una certa opinione.

L’esecuzione del programma avviene nel seguente modo:

Per N volte:

  1. viene selezionato un componente del quadrato e succcessivamente viene selezionato un vicino. A seconda del modello proposto avverrà un sorteggio in base al quale il vicino selezionato cambierà opinione.
  2. se sono state compiute M interazioni si effettua un “sondaggio”, ovvero  una misurazione delle opinioni, cioè vengono contati e registrati quanti componenti della popolazione hanno una certa opinione (matematicamente: viene calcolato l’istogramma dei valori contenuti nella griglia stessa ) e tali valori vengono salvati su un file o vengono stampati.

Come viene definito l’andamento nel tempo della opinione ?

Viene memorizzato e studiato l’andamento dell’istogramma e non quello della griglia stessa, in quanto è una rappresentazione più compatta ma che mantiene inalterato l’insieme delle informazioni che ci interessano: non ci interessa sapere lo stato di un singolo elemento, ma come la collettivià si divide.

Modelli in simulazione per il cambio di opinione

  1. Completamente casuale.
    In questo modello non viene controllato nulla, tranne che le persone che interagiscono fra loro siano adiacenti. Al momento della interazione viene “lanciata una moneta” ed in base a questo il soggetto selezionato, cambia opinione oppure no.
  2. Cambio di opinione casuale, ma solo in persone con opinione diversa dalla propria.
    In questo modello viene controllato che le persone che interagiscono fra loro siano adiacenti e siano di opinioni differenti. Il cambio di opinione avviene con la modalità del modello precedente.
  3. Cambio di opinione ponderato.
    In questo modello i controlli effettuati sono gli stessi del modello precedente. Il cambio di opinione avviene nel modo visto in precedenza ma la nuova opinione non e’ quella del primo elettore, ma e’ quella che presenta la seconda opinione in importanza nella popolazione.
  4. Insorgenza di nuove opinioni. ( ancora da implementare e testare )

Cosa viene studiato: il variare e la numerosità nel tempo delle opinioni esistenti nella popolazione in esame. Sono simulazioni casuali. Per annullare l’effetto delle variazioni statistiche si ripetono più simulazioni. Nel mio caso, ho effettuato 33 simulazioni.

Nota: al momento della prima realizzazione del programma, i generatori di numeri casuali generavano numeri non troppo casuali: essi si basavano sulle cifre meno importanti dell’orologio di sistema. Se l’orologio interno al computer segnava, ad esempio

15:43:28.498579823

mostrava solo

15:43:28

e solo una parte delle cifre decimali dei secondi ( che variavano troppo rapidamente per essere visualizzate ) venivano usate come generatori dei numeri casuali, nel nostro caso

0.498579823

Questo fatto aveva – ed ha ancora – un inconveniente non da poco! Non genera numeri casuali ma numeri che si ripetono con un lungo periodo (lungo per il calcolatore). Se immaginiamo che l’orologio fosse aggiornato ogni ventesimo di secondo, e immaginiamo che i numeri si ripetessero ogni 10.000 aggiornamenti, avremo che i numeri “casuali” si sarebbero ripetuti ogni 500 secondi ovvero ogni 8 minuti e 20 secondi. Questo fatto, in un programma che aveva necessità di essere eseguito per una notte intera (almeno 12 ore di elaborazione), significava che i numeri “casuali” si sarebbero ripetuti almeno 86 volte… un po’ troppo per essere CASUALI! Cosa comporta questo fatto? Comporta che l’evoluzione del sistema rappresentato dal programma presenta delle oscillazioni e delle ripetizioni che si discostano anche di molto dal comportamento che dovrebbe avere.

Questo problema viene superato utilizzando una routine di codice che genera numeri casuali in maniera più efficiente. Al giorno d’oggi tutti i linguaggi di programmazione hanno tali routine, quindi basta riscrivere il programma in una versione di linguaggio più aggiornato che tale problema viene superato. Inoltre il tempo di esecuzione dello stesso programma decresce a parità di parametri da 12 ore a meno di mezz’ora.

Vedremo in un altro articolo i risultati dell’esecuzione del programma ed una sua realizzazione.

Advertisements

3 pensieri su “Voters 2

  1. Pingback: Voters | Num3ri v 2.0

  2. Pingback: Voters 3 | Num3ri v 2.0

  3. Pingback: Pochi ma Buoni ? | Num3ri v 2.0

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...