Ottimizzazione della Supply Chain con Mixed Integer Programming e FlexSim

Introduzione
Nell’era della trasformazione digitale, l’ottimizzazione della Supply Chain è diventata un elemento chiave per migliorare l’efficienza operativa e ridurre i costi. Grazie all’integrazione tra FlexSim e la programmazione intera mista (MIP) in Python, è possibile modellare e ottimizzare scenari complessi di distribuzione, garantendo decisioni più efficaci basate su dati concreti.
Questo articolo presenta un proof-of-concept che combina le funzionalità GIS di FlexSim con un algoritmo di ottimizzazione del flusso a costo minimo, dimostrando come sia possibile migliorare la gestione della produzione e della distribuzione nella Supply Chain.
Il modello di simulazione
Il modello proposto simula una rete di distribuzione formata da:
- Fabbriche (icone rosse), responsabili della produzione.
- Magazzini (icone blu), che ricevono e distribuiscono il prodotto.
L’obiettivo è minimizzare i costi totali di produzione e spedizione.
Ogni giorno, i magazzini generano una domanda casuale di prodotto. Il demand dispatcher calcola quale fabbrica deve produrre e quanto spedire a ciascun magazzino, minimizzando i costi totali.
La soluzione considera:
- Capacità massima giornaliera e costo unitario di produzione delle fabbriche.
- Costi di spedizione tra fabbriche e magazzini.
Questo problema si traduce nel noto problema del flusso a costo minimo nell’ambito dell’ottimizzazione.
L’integrazione tra FlexSim e Python per l’ottimizzazione
Per risolvere il problema, è stato sviluppato uno script Python che utilizza cvxpy per risolvere il problema del flusso a costo minimo come un programma intero misto (MIP). Questo modello differisce da quello standard perché:
- La capacità totale delle fabbriche può superare la domanda totale dei magazzini.
- Utilizza variabili intere anziché continue.
Nonostante queste differenze, il modello è efficace per dimostrare la capacità di ottimizzazione.

Flusso di calcolo
- Generazione della domanda: il Process Flow per il magazzino genera quotidianamente la domanda e la invia a una lista condivisa.
- Elaborazione dei dati: il Demand Dispatcher raccoglie dati su capacità produttiva, domanda e costi, e li passa a uno script Python tramite la funzione getMinCostFlow.
- Risoluzione del problema di ottimizzazione: la funzione getMinCostFlow, definita nel modulo MinCostFlow.py, formula e risolve il MIP con cvxpy, restituendo le quantità di spedizione ottimali per ogni abbinamento fabbrica-magazzino.
- Visualizzazione e analisi: il modello crea e anima “camion virtuali” per simulare il trasporto e offre dashboard con dati dettagliati su produzione, distribuzione e costi.
Il modello potrebbe essere esteso con strategie di gestione dell’inventario o simulazioni di tempi di consegna casuali.

Insight strategici: bilanciare costi di produzione e spedizione
Il modello permette quindi di analizzare l’equilibrio tra costi di spedizione e di produzione:
- Quando i costi di spedizione sono bassi rispetto a quelli di produzione, l’algoritmo privilegia le fabbriche con costi di produzione più bassi, anche se distanti dai magazzini.
- Al contrario, se i costi di spedizione sono alti, l’algoritmo favorisce le fabbriche più vicine ai magazzini, riducendo il peso della produzione nelle fabbriche più lontane o costose.
Questo equilibrio tra costi guida le decisioni ottimali di produzione e spedizione.
Prova il modello di ottimizzazione della Supply Chain
Se sei già un utente FlexSim, puoi contattarci per ricevere il modello e testarlo direttamente nel tuo ambiente di simulazione.
Per eseguire il modello, sono necessari: Python (versioni 3.7-3.10) e pacchetti cvxpy e cvxopt installati.
Occorre configurare il percorso di Python nel sistema e FlexSim (versione 22.1 o superiori).
Non hai FlexSim? Provalo gratuitamente!
Se non utilizzi ancora FlexSim, puoi scaricare la versione Express, gratuita, con alcune funzionalità limitate, ma che ti permette comunque di provare il modello.
Scaricala ➡ qui.
Puoi consultare il forum https://answers.flexsim.com per questo e altri modelli utili!
Contatta Flexcon: per una demo completa di tutte le funzionalità di FlexSim.