Salta al contenuto
Mensile · dati aperti Rivista di ottimizzazione applicata Scrivici ↗
Caso N. 007 Trasporti

Gli autobus che nessuno conta

Roma pubblica l'orario dei bus notturni, ma non dice quanti mezzi servano per farlo girare. Ne servono 165 — e ventuno si risparmiano solo lasciando che un autobus cambi linea.

Lorenzo Terna 22 luglio 2026 7 min di lettura
Metodo
Minimo ricoprimento con cammini di un grafo aciclico (teorema di Dilworth)
Strumenti
Python, SciPy, HiGHS, OSRM
Risultato
165 — gli autobus che servono per le 682 corse della notte

Di un autobus si sa quasi tutto. A che ora parte, dove passa, quanto ci mette: Roma pubblica il suo orario in formato aperto, quello che alimenta le app di navigazione, e da lì si legge ogni singola corsa della città. Quello che non si sa è una cosa molto più semplice, e molto più costosa: quanti autobus servono per farle, tutte.

Nel file c’è persino il campo apposta. Si chiama block_id e serve a dire «queste corse le fa lo stesso mezzo, in quest’ordine». È vuoto. Non per qualche corsa: per tutte e 179.208.

Così l’unico modo per sapere quanti mezzi servono è rifare il conto da capo. Ed è un conto che si può fare esattamente, senza approssimazioni — cosa che, in questa rivista, capita raramente.

Prova a indovinare

Nella notte fra sabato e domenica la rete notturna di Roma fa 682 corse su 32 linee. Quanti autobus servono, al minimo, per farle tutte?

Prova a dire un numero

165 autobus

Nel momento di punta ce ne sono 139 in giro con i passeggeri a bordo. Gli altri ventisei esistono solo perché un mezzo che finisce a Laurentina non fa in tempo ad essere a Battistini.

01La sfida

Un autobus può fare la corsa B dopo la corsa A a una condizione sola: che gli basti il tempo per andare da dove finisce A a dove comincia B. Niente di più.

Scritta così sembra banale, e in un certo senso lo è. Ma se si tira una freccia fra ogni coppia di corse compatibili si ottiene una rete, e in quella rete un autobus è esattamente un cammino: entra da qualche parte, salta di corsa in corsa, esce. Coprire tutte le corse con il minor numero di autobus vuol dire coprire tutta la rete con il minor numero di cammini.

La notte scelta è quella fra sabato 25 e domenica 26 luglio 2026: 682 corse, 32 linee — i bus numerati più le linee nMA, nMB, nMC che sostituiscono la metropolitana quando chiude — e 37 capolinea.

Il confronto è con la regola che verrebbe naturale: ogni autobus resta sulla sua linea, fa avanti e indietro, e non si mescola con le altre.

02Gli ingredienti

  • L’orario ufficiale di Roma in formato GTFS, quello che il Comune pubblica come dato aperto. Da ogni corsa servono solo quattro cose: quando parte, da dove, quando arriva, dove.
  • I tempi di trasferimento a vuoto fra i 37 capolinea, presi sulla rete stradale vera con OSRM. A notte fonda le strade sono libere, quindi i tempi di percorrenza liberi sono la descrizione giusta: il capolinea mediano dista 21,4 minuti dagli altri, il più lontano quasi cinquanta.
  • Una scoperta nei dati che ha cambiato il conto. Nel gergo di questi file, una «giornata di servizio» che comincia di sabato contiene due notti diverse: le ore piccole del sabato mattina, che in realtà sono la notte del venerdì, e quelle della domenica mattina, che sono la notte del sabato. In mezzo ci sono sedici ore in cui non passa niente. Sono due problemi separati, e trattarli come uno solo sarebbe stato un errore.

03Il verdetto

Corse da coprire682
Autobus, mezzi liberi di cambiare linea165
Autobus, ogni mezzo sulla sua linea186
In servizio nel momento di punta139il minimo assoluto immaginabile

Ventuno autobus, e quello che costano

Stesse 682 corse, stesso orario: cambia solo se un mezzo può passare da una linea all'altra

Ogni mezzo sulla sua lineaMezzi liberi di cambiare linea
0100200300Autobus necessari165Chilometri a vuoto233
Vedi i dati in tabella
Ogni mezzo sulla sua lineaMezzi liberi di cambiare linea
Autobus necessari186165
Chilometri a vuoto123233

Il risparmio di ventuno mezzi si paga con 110 chilometri in più percorsi vuoti.

Elaborazione sull'orario GTFS di Roma Servizi per la Mobilità

Lasciare che un autobus finisca su una linea e riparta su un’altra — l’interlinea, in gergo — vale ventuno mezzi, l’undici per cento della flotta. Non è gratis: quei ventuno si comprano con 110 chilometri in più percorsi a vuoto, perché un mezzo che cambia linea di solito deve attraversare la città per farlo.

È uno scambio che conviene senza discussione. Centodieci chilometri di gasolio costano una frazione minima di quello che costa un autobus in più — comprarlo, tenerlo in officina, e soprattutto trovare qualcuno che lo guidi.

Ma il numero davvero interessante è un altro, ed è quello di cui non parla nessuno.

Quanto costa una pausa

Minuti che l'autobus deve stare fermo al capolinea prima di ripartire. Nessun passeggero se ne accorge. Ogni posizione è un modello risolto all'ottimo.

Sosta al capolinea5 minuti
Autobus necessari165

l'ipotesi usata in questo caso

Tutti gli scenari in tabella
Sosta al capolineaAutobus necessari
0 minuti145irrealistico: nessun margine di recupero
3 minuti148il tempo di girare il mezzo
5 minuti165l'ipotesi usata in questo caso
10 minuti178una pausa vera per chi guida
15 minuti191
20 minuti199cinquantaquattro mezzi più che a zero

Sei modelli risolti all'ottimo sulle stesse 682 corse

Fra zero e venti minuti di sosta al capolinea la flotta passa da 145 a 199 autobus: cinquantaquattro mezzi, il trentasette per cento in più. È il parametro più caro dell’intero piano, e non è una scelta di servizio — nessun passeggero si accorge di quanto sta fermo il bus al capolinea. È margine di recupero per i ritardi, ed è la pausa di chi guida.

Chi discute di quanto costa il servizio notturno senza dire quanti minuti di sosta ha ipotizzato, in realtà non ha detto niente.

Il modello, per chi vuole la matematica

Siano ai e di l’arrivo e la partenza della corsa i, τ(·,·) il tempo di trasferimento fra capolinea e L la sosta minima. Un mezzo può fare j dopo i se e solo se

ai + τ(finei, inizioj) + L ≤ dj

Siccome questa condizione implica di < dj, il grafo degli archi ammissibili è aciclico, e il turno di un autobus è un cammino. Il minimo numero di cammini che copre tutti i nodi vale, per il teorema di Dilworth,

flotta minima = numero di corse − massimo abbinamento

dove l’abbinamento è calcolato sul grafo bipartito che mette da un lato «il successore della corsa i» e dall’altro «il predecessore della corsa j».

Ed è qui che il caso si stacca da tutti gli altri di questa rivista. La matrice dei vincoli di un abbinamento bipartito è totalmente unimodulare: i vertici del rilassamento continuo sono già interi, quindi non serve ramificare e il problema si risolve in tempo polinomiale. Non è un’affermazione da prendere per buona — nel codice il rilassamento viene risolto davvero, sulla linea più carica, e si controlla quante variabili escono frazionarie. Zero.

Gli obiettivi sono due, in ordine: prima la flotta, poi — a parità di flotta — i chilometri a vuoto. Si ottengono da un unico problema di assegnamento prezzando l’arco inesistente a un valore così alto da rendere sempre preferibile un collegamento in più.

Vale la pena dire perché questa fortuna è rara. Basta aggiungere un vincolo realistico qualsiasi — capienza dei depositi, tipi di mezzo diversi, turni di chi guida — e la struttura si rompe: il problema torna NP-difficile come tutti gli altri.

04Dove il gioco finisce

Il modello programma i mezzi, non le persone. Non ci sono turni, pause, cambi di guida, né uscite e rientri dal deposito: ognuna di queste cose può solo aggiungere autobus, mai toglierne, quindi 165 è un pavimento, non una stima di quello che l’azienda usa davvero. Gli autobus sono trattati come intercambiabili, mentre alcune linee hanno vincoli di mezzo. Ogni corsa è supposta puntuale, e l’unico margine per i ritardi è la sosta al capolinea. I tempi a vuoto sono stime di OSRM sulla rete OpenStreetMap, non i tempi dell’azienda. I chilometri di uscita e rientro dal deposito non sono contati, il che sottostima il vuoto totale — ma non la flotta, perché avvengono fuori dall’orario di servizio. E si tratta di una notte sola di una rete che è piccola apposta: la rete diurna, con linee più lunghe e più frequenti, non si ricava da questa per proporzione.

Quello che resta in piedi sono le due cose strutturali. Un autobus libero di cambiare linea vale circa un nono della flotta notturna. E la sosta al capolinea è il numero più caro fra quelli che nessuno guarda.