mattiaferdeghini.com

EN · Read in English
Torna ai progetti
Vista 3D in AutoMod del terminal simulato, con quattro bracci gru accanto a due aree nave a sinistra, un lungo piazzale centrale circondato dal percorso viola degli AGV e tre aree di stoccaggio a destraProgetto Universitario · Logistic Simulation Lab

Automatizzare il porto di Ravenna con gli AGV: una simulazione in AutoMod

Il nostro progetto finale per Logistic Simulation Lab. Abbiamo modellato il terminal container del porto di Ravenna, dove i container si spostano ancora con una movimentazione interna manuale, e lo abbiamo automatizzato con una flotta di dieci AGV e quattro gru, usando distanze reali e un file di input da 500 container.

In breve

Problema
Nel porto di Ravenna i container vengono ancora spostati dalla nave al piazzale e allo stoccaggio con una movimentazione interna manuale.
Approccio
Un modello del terminal reale, costruito con distanze misurate e alimentato da un file di input da 500 container, in cui una flotta di 10 AGV e 4 gru si occupa della movimentazione.
Risultato
Tutti i 500 container erano scesi dalla nave simulata entro l'ora 9, e la consegna ha preso la quota maggiore del tempo degli AGV (44,2%), segno per noi di una flotta ben dimensionata.
Strumenti
AutoMod

Questo è stato il nostro progetto finale per il corso Logistic Simulation Lab all'Università di Bologna, realizzato insieme al mio amico e compagno di corso Luca Naldi. Abbiamo scelto il porto di Ravenna perché dentro il terminal i container si spostano ancora con una movimentazione interna manuale, e volevamo vedere cosa succede se quel lavoro passa a una flotta di veicoli a guida automatica (AGV).

Abbiamo costruito e simulato tutto in AutoMod™, un software di simulazione a eventi discreti. Si descrive il layout fisico (percorsi, code, macchine) e la logica che ci fa muovere le cose dentro, poi si lascia scorrere il tempo simulato e si leggono le statistiche.

Il problemaLink a questa sezione

Ravenna è un porto canale: i suoi terminal si affacciano sul canale Candiano, tra la città e l'Adriatico. Il traffico container è consistente: il report sul traffico del porto di aprile 2025 conta 72.177 TEU tra gennaio e aprile 2025, su 148 approdi di navi portacontainer. Dentro il porto, quei container vanno spostati tra le navi, il piazzale e le aree di stoccaggio dove arrivano i treni.

Il nostro obiettivo era aumentare il livello di automazione di questa movimentazione interna. Abbiamo inserito nel sistema una flotta di AGV per rendere più veloce la gestione dei container, poi abbiamo verificato che la flotta scelta riuscisse a stare al passo senza che i veicoli si intralciassero tra loro.

Da dove vengono i datiLink a questa sezione

Volevamo un modello il più vicino possibile al porto vero. Abbiamo misurato distanze e dimensioni delle strade e delle aree di stoccaggio, e preso il resto dei dati dal sito ufficiale del porto di Ravenna. Per il piazzale centrale abbiamo preso la superficie reale e l'abbiamo divisa per l'ingombro di un container: ne è uscita una capacità di 1.746 container.

Per il carico abbiamo scritto un file di input, INDATA.csv, che funziona come la lista di carico di una nave in arrivo: una riga per container, 500 in tutto. Ogni riga ha tre campi:

  • dimensione: TEU (un container standard da 20 piedi) o FEU (uno da 40 piedi);
  • istruzione: cosa deve succedere al container una volta sceso dalla nave. upload lo manda direttamente alla nave in carico, stock a un'area di stoccaggio, prepare al piazzale centrale come deposito temporaneo, per i container la cui destinazione è ancora incerta;
  • settore: l'industria a cui appartiene (alimentare, chimica, metalli, retail o varie), così da poter monitorare quale settore muove più container.
Due grafici a barre del file di input da 500 container: per istruzione, 170 upload, 164 stock e 166 prepare, ciascuna divisa tra TEU e FEU; per settore, Retail 140, Alimentare 117, Metalli 112, Varie 66, Chimica 65
Cosa porta la nave: le 500 righe di INDATA.csv. Le tre istruzioni sono quasi in parità, e i TEU sono un po' più dei FEU (269 contro 231).

Il modello: tre zoneLink a questa sezione

Vista 3D in AutoMod dell'intero modello: due aree nave e quattro bracci gru a sinistra, il lungo piazzale centrale circondato dal percorso degli AGV al centro, tre aree di stoccaggio a destra
Il modello in esecuzione. A sinistra le due navi con quattro gru e i loro buffer. Al centro il piazzale centrale (Q_send), circondato dal percorso degli AGV con i suoi punti di controllo. A destra le tre aree di stoccaggio. I numeri blu sono contatori in tempo reale dei container in ogni area.

Il terminal ha tre zone, collegate dagli AGV.

Le navi. Due code chiamate Q_ship rappresentano due navi, una da caricare e una da scaricare. Quattro gru fanno il sollevamento, due per nave. Ogni gru ha una piccola coda buffer (Q_crane, 50 container) dove appoggia i container che scarica e prende quelli da caricare, così un breve ritardo altrove nel sistema non ferma la gru finché il buffer non è pieno.

Il piazzale centrale. Una grande coda, Q_send, con posto per 1.746 container. Contiene i container che sono già in porto quando parte la simulazione, in attesa di essere stoccati o caricati su una nave, e fa anche da deposito temporaneo per i container con destinazione ancora incerta. Visto quanto è lungo, gli AGV lo raggiungono da sei punti di controllo, tre per lato, così non si mettono in coda uno dietro l'altro per prelevare o depositare.

Le aree di stoccaggio. Tre code chiamate Q_stock, da 550 container ciascuna. Qui arrivano i treni, quindi questa zona porta anche nuovi container nel sistema: un treno arriva ogni 3-8 ore (distribuzione triangolare, valore più probabile 5) e i suoi container vengono poi smistati dagli AGV in base alla destinazione. Il porto reale ha più di tre aree di stoccaggio; abbiamo dovuto ridurle a tre perché il software limita il numero di entità che si possono costruire.

La flotta è di 10 AGV su un percorso guidato che gira attorno al piazzale centrale. Nel modello i rettilinei lungo il piazzale sono lunghi circa 580 m, e il modello di veicolo ha una velocità massima di 4,5 m/s. Gli AGV prelevano e depositano solo nei punti di controllo: uno per gru, sei lungo il piazzale, uno per area di stoccaggio, più un parcheggio su una strada secondaria, lontano dalle corsie principali. Dove due corsie si incontrano, un blocco lascia passare un solo veicolo alla volta, così non possono scontrarsi agli incroci.

Dal porto alle entità di AutoModLink a questa sezione

Per chi non ha mai aperto AutoMod: il software mette a disposizione un insieme fisso di mattoncini, e gran parte del lavoro di modellazione sta nel decidere quale oggetto reale diventa quale mattoncino.

Nel porto realeIn AutoModNel nostro modello
Un containerLoad, con attributiOgni container porta con sé dimensione, istruzione e settore. L_container crea i 400 già in porto, L_arrival quelli portati dai treni, L_dummy_container legge il file di input e si clona nei 500 sulla nave.
Una gruResourceR_crane, 4 unità. Ogni sollevamento dura tra 90 e 150 secondi (triangolare, valore più probabile 120).
Nave, buffer della gru, piazzale, area di stoccaggioQueueQ_ship (2), Q_crane (4), Q_send (1), Q_stock (3), ognuna con la sua capacità.
Lavorare a lottiOrder listOL_upload e OL_unload trattengono i container finché non sono dieci, poi li rilasciano insieme alla gru.
Cosa succede a un container, passo per passoProcessP_unload, P_upload, P_send, P_stock, più P_start e P_stock_arrival che creano container con attributi casuali.
La flotta di AGVPath mover system10 veicoli, il percorso guidato, i punti di controllo e le liste che dicono ai veicoli liberi dove andare.
Gli incrociBlockUn blocco con 28 istanze, una per ogni incrocio dove due veicoli potrebbero scontrarsi.
Contatori e KPIVariable e labelContatori a schermo in tempo reale, più i totali per flusso, per dimensione e per settore.

Abbiamo scritto i processi in modo il più possibile vettoriale. Invece di un processo per ogni gru, c'è un solo processo con più copie, e l'indice della copia (procindex nel linguaggio di AutoMod) gli dice su quale gru, nave o area di stoccaggio sta lavorando. Così il codice è rimasto corto. Questo è il cuore del processo di carico:

inc V_load(procindex) by 1
if V_load(procindex) = 10 begin
    order 10 loads from OL_upload(procindex)
    in case order not filled backorder on OL_upload(procindex)
    set V_load(procindex) to 0
end
wait to be ordered on OL_upload(procindex)
use R_crane(procindex) for triangular 90, 120, 150
move into Q_ship(1)

Ogni container che arriva a una gru aggiunge uno a un contatore e aspetta sulla order list. Quando il contatore arriva a dieci il lotto viene rilasciato, la gru solleva ogni container (da 90 a 150 s) e il container finisce sulla nave.

Tre liste guidano gli AGV. La named list decide dove compaiono all'inizio (il parcheggio). La park list dice a un veicolo libero, senza più nulla da fare, di tornare al parcheggio. Le work list dicono a un veicolo che ha appena depositato un container quali punti di controllo controllare per un carico in attesa.

Un load dedicato chiamato L_print scrive i KPI su un file di output: la prima volta dopo 8 ore simulate, poi ogni ora. Per ogni flusso (scaricati dalla nave, prelevati dallo stoccaggio, stoccati, caricati sulla nave) scrive quanti container sono stati movimentati fino a quel momento.

RisultatiLink a questa sezione

Grafico a gradini dei container movimentati cumulati dall'ora 8 all'ora 25: gli scaricati dalla nave arrivano a 500 all'ora 9, i caricati sulla nave a 400, gli stoccati a 397, i prelevati dallo stoccaggio a 237
Il file di output nel tempo simulato. I 500 container della nave erano tutti scaricati entro l'ora 9; da lì in poi gli altri flussi crescono solo in pochi gradini.

All'ora 8, 476 dei 500 container della nave erano già scesi; all'ora 9 lo erano tutti e 500. All'ora 25 il modello aveva svolto 1.534 operazioni in totale. Un container scaricato e poi caricato sull'altra nave conta una volta in ciascun flusso, quindi questo è un conteggio di operazioni di movimentazione, non di container distinti.

Flusso (all'ora 25)Container
Scaricati dalla nave500
Prelevati dallo stoccaggio237
Stoccati397
Caricati sulla nave400
Operazioni totali1.534

La flotta di AGVLink a questa sezione

Grafico a barre orizzontali del tempo degli AGV per stato: in consegna 44,2%, in recupero 28,5%, verso il parcheggio 23,2%, parcheggiato 4,2%
Come gli AGV usano il loro tempo, ridisegnato dal business graphic di AutoMod del nostro report.

Questo grafico dice se la flotta ha la dimensione giusta. La consegna prende la quota maggiore del tempo (44,2%), quindi i veicoli passano più tempo a trasportare container che a fare qualsiasi altra cosa. Il recupero, cioè il viaggio a vuoto verso il prossimo prelievo, prende il 28,5%. Andare al parcheggio prende il 23,2%, che è parecchio; la nostra ipotesi è che un AGV riceva quell'istruzione mentre aspetta che gli venga assegnato un nuovo carico. Il tempo passato parcheggiato è solo il 4,2%, e quella fase serve comunque: è quando un AGV può ricaricarsi, e tiene i veicoli inattivi fuori dalle corsie dove bloccherebbero gli altri. Nel complesso la flotta sembra ben bilanciata: dieci AGV bastano a gestire il flusso di container, senza essere così tanti da passare il tempo parcheggiati.

Cosa è passato dal terminalLink a questa sezione

AutoMod ha disegnato anche tre business graphic, che sono finiti nel nostro report: container per settore industriale, tempo degli AGV per stato (gli stessi dati del grafico sopra) e container per dimensione.

Grafico a torta di AutoMod intitolato Sector: Food 117 (10,83%), Chemicals 147 (13,61%), Metals 250 (23,15%), Retail 140 (12,96%), Miscellaneous 426 (39,44%)
Container per settore industriale, come contati dal modello. Un errore nelle etichette del nostro codice ha contato come Miscellaneous i container Food e Retail generati a caso, quindi quella fetta è sovrastimata.
Grafico a torta di AutoMod intitolato AGVs: in consegna 44,18%, in recupero 28,47%, verso il parcheggio 23,18%, parcheggiato 4,17%
Tempo degli AGV per stato, così come esportato da AutoMod.
Grafico a torta di AutoMod intitolato Size: TEU 579 (53,61%), FEU 501 (46,39%)
Container per dimensione: TEU 579, FEU 501.

Abbiamo costruito il grafico per settore per vedere quali industrie si appoggiano di più al terminal e quanto ogni categoria di prodotto pesa sul suo carico di lavoro. Quello per dimensione mostra che poco più della metà dei container movimentati (53,61%) erano TEU. Conoscere la ripartizione tra container da 20 e da 40 piedi aiuta a stimare le tonnellate movimentate dal sistema.

LimitiLink a questa sezione

Il modello semplifica il porto reale in alcuni punti:

  • I ritardi negli arrivi di treni e navi non sono inclusi.
  • Il porto reale è più grande e complesso. In particolare le aree di stoccaggio sono state ridotte a tre per il limite di entità.
  • I treni non sono modellati come veicoli, solo come i container che portano, sempre per il limite di entità.
  • Abbiamo rappresentato le quattro gru di banchina con il modello di braccio robotico di AutoMod, che non può muoversi.
  • Il piazzale centrale è una coda. Nella realtà, per spostare i container al suo interno servirebbe una gru mobile.

Dettagli

Corso
Logistic Simulation Lab M
Ateneo
Università di Bologna
Team
Luca Naldi, Mattia Ferdeghini
Software
AutoMod 12.6
Anno
2026
Ruolo
Modellazione e simulazione (team di due)
  • Simulazione a eventi discreti
  • AutoMod
  • AGV
  • Logistica
  • Porti

Altri progetti