Simulazioni elettorali grafiche con Raspberry PI

Simulazioni elettorali raspberry pi

Un semplicissimo programma per simulazioni in C in grado di presentare le dinamiche elettorali italiane su di un piccolo Raspberry PI.

L’idea di questo programma ha radici profondissime. Ne sentii parlare per la prima volta da Carlo Maria Nardone, che ne pubblicò una versione in BASIC per il Commodore 64 ad Aprile del 1986. Ci trovavamo su MC-MicroComputer, nella rubrica curata da Tommaso Pantuso. A Dicembre dello stesso anno, Corrado Giustozzi ospitò nella sua rubrica Intelligiochi un riquadro intitolato “I lettori col Turbo” (volendo indicare il Pascal della Borland): Riccardo Gerardi tradusse il programma di simulazione del voto dal lento  BASIC Commodore al velocissimo TurboPascal.

Il codice per le simulazioni elettorali è leggero ed efficiente, ed ho pensato di tradurlo a mia volta in C per lanciarlo sul nostro fido Raspberry PI, “e vedere di nascosto l’effetto che fa”.

Dinamiche elettorali

Inutile dire che l’argomento risulta di drammatica attualità, in questo periodo. Il concetto è semplice: una griglia quadrata illimitata, in cui i lati opposti sono adiacenti (praticamente la superficie di un toro) rappresenta il nostro settore geografico. I diversi colori rappresentano un partito ciascuno. Per semplicità “proporzionale”, ciascun partito ha inizialmente un numero di elettori uguale a tutti gli altri, e si parte da una situazione di democrazia perfetta.

Una griglia da 25 righe e 74 colonne, con 16 partiti in competizione, conterà tra i 115 ed i 116 votanti per ciascun partito. Ma si sa come vanno le cose… chi ti sta vicino cerca sempre di convincerti a passare dalla sua parte.

Pertanto, ciascuna cella viene sottoposta randomicamente alla sollecitazione da parte del suo “intorno di Moore”. Applicativamente, ogni cella subisce l’influsso di una delle otto celle che la circondano, La prima cella diverrà dello stesso colore (partito) di quella scelta nel suo intorno (se già non lo era). Ciascun votante, quindi, potrà mutare la sua opinione politica. Il discorso si ripete ciclicamente ad ogni generazione (sondaggio), sin quando vedremo due soli partiti tentare di prendere il sopravvento.

Alla fine, “ne rimarrà solo uno”: nella simulazione parleremo di fine della democrazia.

Codice sorgente

Il codice in C utilizza appena 150 righe, ed è portabile su tutte le macchine dotate di un terminale in grado di riconoscere lo standard ANSI. ANSI è anche il sistema con il quale è stata implementata la macro GotoXY(). ANSI è la tabella di codifica del colore. La versione per Raspy ha la configurazione prefissata, mentre la versione plain vanilla è più flessibile. Consente di variare il numero di righe, di colonne e di partiti. È anche possibile modificare il periodo che intercorre tra due censimenti successivi. Ovviamente, diminuendo la frequenza dell’output a terminale l’eseguibile accelera notevolmente.

Il programma compila con la classica riga di comando:

La versione originale per Commodore 64 impiegava tre giorni per giungere alla “fine della democrazia”. Con il Raspy bastano pochi minuti, ma l’effetto grafico rimane affascinante. Ovviamente, il codice è repepribile su GitHub.

Certo un campione di 1850 votanti è un po’ scarso per i nostri fini statistici…

Sviluppi futuri

Niente paura: i nostri laboratori sono al lavoro per sviluppare una versione in grafica estesa. In essa i votanti rappresentati da semplici pixel su una griglia di centinaia di elementi per lato. La rappresentazione geografica della mappa sarà aggiornata in tempo reale attraverso un algoritmo parallelo scritto con CUDA. Anche in questo caso il codice sarà portabile su tutte le piattaforme CUDA, compreso il Jetson Nano.

Se siete interessati al software per la rappresentazione grafica delle simulazioni e alla programmazione parallela con CUDA, restate con noi!

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.