AI e scenari elettorali: una simulazione mediante chatbot e foglio di calcolo

AI e scenari elettorali: una simulazione mediante chatbot e foglio di calcolo

Nel precedente articolo ho analizzato diversi sistemi elettorali e discusso le idee che stanno alla base degli algoritmi che, nel sistema proporzionale, traducono i voti in seggi. Adesso vi voglio proporre un’attività che esplora una delle potenzialità dell’intelligenza artificiale e in particolare di alcuni chat bot: la capacità di produrre codice in un dato linguaggio di programmazione. 

Gli obiettivi di apprendimento in questa proposta sono:

  • esplorare la possibilità di inserire macro1 in un foglio di calcolo (in linguaggio VBA, Visual Basic for Applications, il linguaggio di programmazione ad alto livello di alcuni fogli di calcolo);
  • comprendere la struttura di un algoritmo;
  • interagire con un chat bot raffinando le richieste e costruendo dei prompt2 sempre più complessi;
  • sperimentare come simulare uno scenario elettorale pur senza conoscere la sintassi di un dato linguaggio di programmazione;
  • analizzare un codice e riconoscere la tipologia delle istruzioni;
  • controllare la correttezza dell’output fornito dal chat bot.

Nel seguito illustro, per passi, come tali obiettivi potrebbero essere raggiunti, fornendo anche le “domande” poste al chat bot e le relative “risposte”.

Creare una macro per il foglio di calcolo tramite un chat bot

Possiamo iniziare il percorso mostrando la risposta generata da un chat bot per un prompt relativamente semplice come il seguente:

Scrivi un programma in VBA che consenta di scegliere un sistema elettorale e calcolare i seggi assegnati prendendo in input il numero di partiti, il numero di voti ricevuti da ciascun partito e il tipo di sistema elettorale. Il programma deve restituire la composizione finale del parlamento e l’indice di Gallagher.

Analizziamo questo prompt, prima di guardare la risposta del chat bot.

Alle studentesse e agli studenti possiamo far notare che in realtà le richieste sono molto precise e che possono esserlo soltanto se abbiamo chiaro cosa vogliamo riprodurre o “simulare”. Non solo: dobbiamo avere in mente da quali variabili dipende il risultato, cioè la composizione finale dell’ipotetico Parlamento. Nel nostro caso, come abbiamo discusso nell’articolo precedente, le variabili da specificare sono il numero di partiti, il numero di voti di ciascun partito e il tipo di sistema elettorale. Infine, possiamo sottolineare che abbiamo richiesto che le variabili in oggetto siano acquisite come input: questo vuol dire che il nostro programma (la macro) non sarà riferito a un caso specifico, ma sarà generale, cioè in grado di lavorare con un numero di partiti e con un esito elettorale che di volta in volta potranno cambiare, interagendo dinamicamente con il programma.

A questo punto possiamo scegliere di analizzare l’output prodotto (il codice generato), oppure di utilizzarlo e vedere come funziona. Nel secondo caso, come utilizziamo il programma? Anche questa è una domanda che possiamo porre al chat bot, in modo molto semplice:

Come uso e lancio questo programma?

Il chat bot ci fornirà le istruzioni e a noi non resterà che eseguirle.

Facciamo un po’ di prove con il foglio di calcolo, eseguendo direttamente la macro. In questo modo vedremo come inserire in input le variabili: attraverso una finestra di dialogo.

Potrebbe sembrare (soprattutto alle nostre studentesse e ai nostri studenti) tutto perfetto, ma è veramente così? Siamo consapevoli delle operazioni che il codice esegue? Ci sono dei margini di miglioramento? Cosa dobbiamo controllare?

Leggendo le istruzioni che compaiono nella macro ci rendiamo conto di alcune cose: la scelta del sistema elettorale comprende solo due opzioni (maggioritario e proporzionale) e inoltre il numero di seggi è fissato a $100$. Mentre illustriamo il significato di un blocco condizionale, possiamo mostrare come includere l’opzione del sistema misto (anche in questo caso chiedendo l’aiuto del chat bot). Possiamo anche discutere come rendere variabile il numero totale di seggi da attribuire. C’è un altro grosso limite del “prodotto” che abbiamo ottenuto finora: il risultato (ammesso che sia corretto) non è “permanente”.

Ecco l’ulteriore richiesta che possiamo fare al chat bot:

Puoi modificare il codice in modo che i dati in input inseriti e i dati in output vengano conservati nel foglio di calcolo e inoltre siano disponibili per fare un grafico a torta della composizione del Parlamento?

Indubbiamente questo è un bel passo avanti, ma non abbiamo ancora finito. Se scegliamo il sistema misto, l’assunzione di base presente nel codice è che il $50\%$ dei seggi sia assegnato tramite il sistema maggioritario e il restante $50\%$ mediante il sistema proporzionale. In realtà questo non è il caso “generale”3. Possiamo allora fare in modo che anche il peso dei due sistemi sia una variabile. Inoltre possiamo raffinare ulteriormente la nostra simulazione, per esempio migliorando l’input dell’utente sostituendo UserForm a InputBox in modo da avere un’interfaccia più sofisticata e semplice da usare, oppure prevedendo, come nel nostro attuale ordinamento, una soglia di sbarramento, cioè una percentuale di voti minima affinché, anche nel sistema proporzionale, un partito ottenga seggi in Parlamento.

Da ultimo, resta il passo più importante: il controllo dei risultati. La distribuzione dei seggi restituita dal chat bot è effettivamente quella corretta? Ci sono altre “assunzioni” nel codice che non abbiamo considerato? Sfruttando le competenze fin qui acquisite, le nostre studentesse e i nostri studenti dovrebbero essere in grado di rispondere a queste domande. Il controllo può essere fatto sfruttando il foglio di calcolo stesso: i risultati ottenuti mediante le istruzioni generate dal chat bot sono automaticamente nel foglio “Risultati Elettorali” del file; si può aggiungere un altro foglio, al medesimo file, in cui si ricopiano i dati di imput e poi, nelle colonne successive, si calcolano i seggi da attribuire e il corrispondente indice di Gallagher. 

Uno dei vantaggi di questa attività consiste nel fatto che anche i chat bot nelle loro versioni gratuite sono in grado di generare software specifico per il foglio di calcolo o per la piattaforma che si utilizza; la simulazione può quindi essere riprodotta praticamente con ogni tipo di dotazione informatica a disposizione.

1 La macro è una procedura che esegue delle istruzioni nella cartella, nel foglio di calcolo o nella cella selezionati al momento del lancio della macro stessa.
2 Un prompt è una richiesta (input), in formato testo, scritta in linguaggio naturale e posta a una intelligenza artificiale per eseguire un compito specifico (output).
3 In Italia, ad esempio, il $61\%$ dei seggi è attribuito con sistema proporzionale, il $37\%$ con sistema maggioritario e il $2\%$ è assegnato nelle circoscrizioni estere.

Leggi anche

Quali asintoti ha una funzione razionale fratta? Scopriamolo in TEAL
Calendario matematico delle feste
Una torta per introdurre la modellizzazione matematica e il problem solving
Divisioni, resti, proporzioni e democrazia: la matematica delle elezioni
Il Global Gender Gap Index: un’attività di Educazione civica e Matematica per misurare il divario di genere
Non solo femminicidi: alcuni dati sulla violenza di genere