DefiBrilliamo Bologna
Bologna sa esattamente dove sono i suoi 263 DAE pubblici, caso raro. Abbiamo costruito un modello di copertura che dice dove mettere i prossimi venti. Spoiler: non in centro.
- Metodo
- Maximal Covering Location Problem (MCLP) incrementale
- Strumenti
- Python, PuLP, HiGHS
- Fonte dati
- Comune di Bologna — registro DAE (progetto-dae) · Comune di Bologna — sezioni di censimento e aree statistiche · ISTAT — Censimento permanente 2023, dati per sezione
- Risultato
- +72.091 — residenti entro 300 m da un DAE, con 20 apparecchi in più
Quando un cuore si ferma per strada, la partita si gioca in minuti: ogni minuto senza defibrillazione porta via il 7–10% delle probabilità di sopravvivere. Per questo le città disseminano defibrillatori pubblici (DAE) in negozi, scuole, palestre. La domanda scomoda, però, è un’altra: sono nei posti giusti? Di solito non si può nemmeno rispondere, perché nessuno sa con precisione dove siano gli apparecchi esistenti. Bologna è un’eccezione: il registro comunale dei DAE è open data, completo e georeferenziato — 263 apparecchi con le loro coordinate ufficiali. E allora i conti, per una volta, si possono fare sul serio.
Oggi il 54,8% dei bolognesi abita entro 300 metri da un DAE pubblico. Quante persone in più si coprono aggiungendo 20 apparecchi nei posti giusti?
Prova a dire un numero
72.091
Dieci volte quello che ottengono gli stessi venti apparecchi piazzati a caso: il valore non sta nell'hardware, sta nelle coordinate.
01La sfida
Le regole del gioco: i 263 apparecchi restano dove sono, se ne possono solo aggiungere venti — un aumento della rete di meno dell’otto per cento. Un residente conta come «coperto» se abita entro 300 metri da un DAE: un minuto di corsa ad andare e uno a tornare, la soglia più usata negli studi sul tema. La città è divisa in una griglia di celle da 250 metri (2.253 caselle): il modello sceglie le zone, mentre il punto esatto — una farmacia, un’edicola, l’ingresso di una scuola — resta a chi installa. Obiettivo: massimizzare i residenti coperti in più. Oggi lo è il 54,8%, cioè 213.556 persone su 389.478: le altre 175.922 abitano a più di trecento metri dall’apparecchio più vicino.
02Gli ingredienti
Cinque dataset, tutti aperti: quattro dal portale open data del Comune di Bologna e uno dall’ISTAT.
- Il registro DAE (progetto-dae): 263 apparecchi georeferenziati, fotografia di luglio 2026. È il registro ufficiale, non una stima ricostruita dal crowdsourcing.
- Le sezioni di censimento: le 2.606 tessere in cui è divisa la città, ognuna col suo centroide.
- La popolazione ISTAT del censimento permanente 2023, sezione per sezione — il dato più fine pubblicato in Italia: nel cuore della città una sezione è spesso un singolo isolato.
- Le aree statistiche: i 90 quartieri statistici, usati per costruire la griglia dei candidati e per raccontare i risultati.
La finezza del dato non è un vezzo: rifacendo tutti i conti con la stessa popolazione spalmata uniformemente sui quartieri, il guadagno ottimo cala del 12% e 15 dei 20 siti scelti cambiano posto. Sapere dove abita la gente, isolato per isolato, è metà del risultato.
03Il verdetto
La curva della copertura
Residenti entro 300 m da un DAE al crescere del numero di nuovi apparecchi (ognuno un modello risolto all'ottimo)
Vedi i dati in tabella (%)
| Copertura | |
|---|---|
| Oggi | 54,8 |
| +5 | 61,3 |
| +10 | 65,9 |
| +15 | 70,0 |
| +20 | 73,3 |
| +25 | 76,3 |
| +30 | 79,0 |
| +40 | 83,4 |
| +50 | 86,9 |
I primi 5 apparecchi coprono oltre 5.000 persone ciascuno; oltre i 40, circa 1.400.
Elaborazione su open data del Comune di Bologna e censimento ISTAT 2023
I primi apparecchi valgono oro — i primi cinque coprono più di cinquemila persone l’uno — poi la curva si piega: è la firma di ogni buon problema di copertura, e regala a chi decide una regola d’arresto onesta: si allarga il budget finché il guadagno marginale giustifica il costo di installare e mantenere un apparecchio.
La notizia vera, però, è dove finiscono i venti nuovi siti: tutti fuori dal centro storico, il più vicino a un chilometro e mezzo da Piazza Maggiore. In testa alla classifica dei quartieri scoperti ci sono San Savino (9.138 residenti oltre i 300 metri), Arcoveggio (8.635), Via Toscana (8.150), Bitone (7.120) e Cirenaica (6.150): non frange remote, ma quartieri residenziali densi e ordinari. La spiegazione è semplice: storicamente i DAE vanno dove stanno le istituzioni — scuole, impianti sportivi, sedi comunali — e le istituzioni si concentrano in centro. La popolazione no.
I defibrillatori seguono le istituzioni, le persone no. Un modello di copertura pesato sulla popolazione corregge esattamente questo vizio.
C’è anche un’eccezione istruttiva: il Pilastro, quartiere popolare della periferia est con 3.652 residenti scoperti, a quota venti apparecchi non riceve nulla. La sua popolazione scoperta è troppo sparsa perché un solo cerchio da 300 metri ne catturi abbastanza, così il budget scivola verso sacche più dense. È la logica dell’efficienza resa visibile: il modello massimizza la copertura totale, non l’equità fra quartieri. Chi vuole servire prima i quartieri peggio messi può aggiungere vincoli di equità — una copertura minima per quartiere — pagando un prezzo misurabile in copertura complessiva.
04Il posto o l’apparecchio?
Obiezione legittima: venti DAE in più migliorano la copertura comunque, che li si ottimizzi o no. Per misurarlo abbiamo tirato i dadi: 4.000 piazzamenti casuali dei venti apparecchi, valutati con le stesse identiche regole dell’ottimo.
Venti apparecchi, quattro modi di piazzarli
Residenti coperti in più rispetto a oggi; per i piazzamenti a caso, media su 2.000 estrazioni
Vedi i dati in tabella
| Residenti coperti in più | |
|---|---|
| A caso in città | 6.980 |
| A caso, zone utili | 10.602 |
| Migliore su 4.000 | 30.619 |
| Scelti dal modello | 72.091 |
Anche il colpo di fortuna migliore su 4.000 si ferma a due quinti dell'ottimo.
Benchmark Monte Carlo, 2.000 estrazioni per politica
Il piazzamento casuale medio copre 6.980 persone, l’ottimo 72.091: dieci volte tanto. E il colpo più fortunato su quattromila tentativi arriva appena a 30.619, due quinti di quello che gli stessi venti apparecchi rendono quando a piazzarli è il modello. Qui l’ottimizzazione non è la rifinitura finale: è la maggior parte del valore.
E se il budget fosse diverso?
Sposta il cursore: ogni posizione è un modello risolto all'ottimo dimostrato.
+72.091 residenti — lo scenario di questo caso
Tutti gli scenari in tabella
| Nuovi DAE | Copertura dei residenti | |
|---|---|---|
| +5 | 61,3% | +25.140 residenti — oltre 5.000 per apparecchio |
| +10 | 65,9% | +43.203 residenti |
| +15 | 70,0% | +59.137 residenti |
| +20 | 73,3% | +72.091 residenti — lo scenario di questo caso |
| +25 | 76,3% | +83.650 residenti |
| +30 | 79,0% | +93.945 residenti |
| +40 | 83,4% | +111.130 residenti |
| +50 | 86,9% | +124.812 residenti — il resto è collina a bassa densità |
Il modello, per chi vuole la matematica
È un Maximal Covering Location Problem (Church e ReVelle, 1974) in versione incrementale: la rete esistente non entra come vincolo ma come pre-elaborazione. Le sezioni già coperte dai 263 apparecchi si tolgono dal problema (contribuirebbero solo una costante), e restano 1.057 sezioni scoperte con 175.922 residenti e 1.453 celle candidate utili. La riduzione è esatta: le soluzioni ottime coincidono con quelle del modello completo.
max Σi wi · zi
t.c. zi ≤ Σj ∈ N(i) xj per ogni sezione i
Σj xj = k, xj ∈ {0,1}, 0 ≤ zi ≤ 1
dove wi sono i residenti della sezione i e N(i) le celle a meno di 300 metri dal suo centroide. Le z possono restare continue: con obiettivo massimizzante e pesi positivi salgono da sole a valori interi all’ottimo. In PuLP:
import pulp
m = pulp.LpProblem("dae_incrementale", pulp.LpMaximize)
x = {j: pulp.LpVariable(f"x_{j}", cat="Binary") for j in candidati}
z = {i: pulp.LpVariable(f"z_{i}", lowBound=0, upBound=1) for i in sezioni}
m += pulp.lpSum(residenti[i] * z[i] for i in sezioni)
for i in sezioni:
m += z[i] <= pulp.lpSum(x[j] for j in vicini[i])
m += pulp.lpSum(x.values()) == 20
m.solve(pulp.HiGHS())
Con 1.453 variabili binarie è un MILP piccolo: HiGHS, solutore open source, risolve all’ottimo dimostrato tutta la curva degli otto scenari in una ventina di secondi su un portatile. Script, dati e figure sono nel repository del caso su GitHub: ogni numero dell’articolo si rigenera da fonti pubbliche.
05Dove il gioco finisce
La domanda del modello è la popolazione residente, non gli arresti cardiaci veri: i dati georeferenziati degli eventi non sono aperti, e i luoghi ad alto passaggio — stazioni, stadi, centri commerciali — meritano un ragionamento a parte. I 263 apparecchi sono contati tutti come sempre disponibili, mentre alcuni stanno al chiuso con orari: è un’ipotesi ottimista, e filtrare i soli h24 abbasserebbe la base di partenza alzando il valore dei nuovi siti. I 300 metri sono in linea d’aria, non lungo le strade; le celle scelte sono zone, non siti chiavi in mano; la popolazione è quella del censimento 2023 contro un registro del 2026. E la copertura totale resta fuori portata: persino cinquanta apparecchi ottimi si fermano a quota 86,9%, perché su colli e frange rurali la densità è troppo bassa per la copertura di prossimità — lì funzionano meglio le app dei primi soccorritori o i DAE a bordo dei mezzi. Niente di tutto questo scalfisce il punto centrale: misurata sul registro ufficiale, la rete bolognese guarda al centro, e una ventina di apparecchi ben mirati vale più di quanto il loro numero lasci credere.