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.



Modello di ottimizzazione della Supply Chain aperto in FlexSim, con visualizzazione della rete di distribuzione tra fabbriche e magazzini.
Supply Chain optimization model open in FlexSim, displaying the distribution network between factories and warehouses.
Il modello di ottimizzazione della Supply Chain in FlexSim

Flusso di calcolo

  1. Generazione della domanda: il Process Flow per il magazzino genera quotidianamente la domanda e la invia a una lista condivisa.
  2. 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.
  3. 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.
  4. 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.




Grafici e dashboard del modello di ottimizzazione della Supply Chain, con analisi delle spedizioni, costi e assegnazione delle risorse tra fabbriche e magazzini.


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!


Logo flexcon