Uno strumento completamente automatizzato per la pianificazione dei materiali, la pianificazione della capacità e la schedulazione finita, costruito con ZERO scrittura di codice in Excel.
L’interruzione delle catene di approvvigionamento globali a causa dei recenti eventi rende le attività di programmazione della produzione piuttosto impegnative: prima del 2019, la disponibilità degli articoli acquistati era data per scontata in molte attività, pertanto non vi era dedicata particolare attenzione durante la programmazione della produzione.
Avanziamo velocemente fino al 2022, molti settori di attività stanno soffrendo per la mancanza di componenti: la disponibilità di materiale è spesso un vincolo critico.
Inoltre, la maggior parte dei sistemi di pianificazione non tiene conto dell’impatto dei ritardi di fornitura o degli ordini d’acquito annullati: in questo caso puoi invece utilizzare il Fast Excel Development Template per costruire il tuo sistema. Ecco un sistema di pianificazione della produzione e con vincoli di disponibilità materiali completamente integrato. Può funzionare come un sistema pilota o come un robusto strumento software.
Ho preparato per te uno strumento di pianificazione della produzione che è anche vincolato dalla disponibilità dei materiali. Sia le scorte disponibili che la fornitura in entrata, la quale che tiene conto sia degli ordini di acquisto sia dei tempi di consegna. Ho usato il Fast Excel Development Template (strumento) e il Fast Excel Development Method (principi).
Se un ordine di acquisto viene posticipato, influisce immediatamente sulla schedulazione e ed allo stesso modo hanno impatto su di essa i tempi di consegna.
Ho considerato un caso in cui i prodotti finiti hanno una distinta base a tre livelli, con componenti acquistati, un’operazione basata sul lead time e cinque operazioni schedulate finali. Prenderemo in considerazione: ordini di vendita e di acquisto, lead time interni ed esterni, scorte disponibili, lavorazioni in corso per le operazioni schedulalate, centri di lavoro e relativi calendari di lavoro.
È necessario eseguire prima la pianificazione dei materiali per determinare le quantità da produrre, le quantità da acquistare e, da queste ultime, i vincoli di disponibilità del materiale.
Quindi, prima di passare alla schedulazione, è necessaria una pianificazione della capacità: se capacità e carico di lavoro non sono in equilibrio, i conseguenti lunghi tempi di consegna potrebbero allontanare i clienti.
Infine, c’è una schedulazione finita multi-operazione.
Ho creato questo strumento da zero in meno di 30 ore grazie al Fast Excel Development Template.
In allegato a questo articolo c’è uno strumento completamente automatizzato basato sul set di dati fittizio del produttore di cicli P_S Cycles Ltd..
Raccoglie in bundle lo strumento funzionante, un set di dati e il Fast Excel Development Template da me usato. Oltre a questo c’è un vecchio e prezioso documento: Tony Rice, il fondatore di P_S, ha raccolto i principi di Pianificazione con a fogli di calcolo e ha scritto questo gioiello. Ho mosso i miei primi passi nel Fast Excel più di 20 anni fa utilizzando questo documento; a proposito, questo mi rende il secondo utente più anziano del Fast Excel Development nel team di Production-scheduling.com.
Per scaricare il sistema completo, il set di dati ed il modello che ho utilizzato per costruire lo strumento completa il form qui sotto e ti invieremo via email il link di download.
Material-Constrained Scheduling Tool Download
Prenditi il tempo necessario per eseguire i passi per farlo funzionare sul tuo computer.
- Usa il form sopra per avere accesso al download.
- Scarica la cartella ZIP e decomprimi direttamente sul tuo C Drive.
- Dovresti avere le seguenti cartelle: C:\P-S_MaterialConstrained_Scheduling e C:\P-S_MaterialConstrained_Scheduling/Data
- Apri il file: PS_MaterialConstrained_Scheduling_v01.xlsm
- Premi il bottone “Update from Local”
- Questo è tutto. Funzionerà con i dati di PS Cycles. Utilizza questo set di dati per prendere confidenza con lo strumento. Quando sei pronto..
- Per eseguire con i tuoi dati, sostituisci i file di input nella posizione: C:\P-S_MaterialConstrained_Scheduling/Data
- Tutte le colonne devono essere uguali e i dati devono essere coerenti e corrispondere.
E ricorda: nessun essere umano ha programmato in VBA durante la produzione di questo software completamente automatizzato.
Istruzione NEXT, la nuova funzionalità FEDT che consente il looping e il branching.
Prima di approfondire i dettagli dell’algoritmo e dello strumento, vorrei ricapitolare cos’è il Fast Excel Development ed annunciare una nuova funzionalità di cui sono particolarmente orgoglioso.
MRP, CRP e Finite Capacity Scheduling sono algoritmi abbastanza complessi, se chiedi al personale IT, ritorneranno da te con un piano di giornate e settimane di codifica; in alternativa puoi andare con il fai da te su Excel e dopo giorni di duro lavoro ti ritroverai con fogli di calcolo inaffidabili e pieni di formule. E la prossima volta dovrai ricominciare dall’inizio. Oppure puoi acquistare un software specifico: licenza e consulenza per un progetto del genere sono notevolmente costosi (fascia di spese in conto capitale).
Bene, non è affatto complicato per noi di Production-scheduling e i membri della nostra community:
- Abbiamo il Fast Excel Development Template, che a partire dalla release 4 non richiede alcuna capacità di codifica per costruire un processo completamente automatizzato
- Abbiamo corsi di formazione su come costruire un sistema MRP personalizzato tramite fogli di calcolo
- Abbiamo esempi e modelli disponibili per il download gratuito
Il modello di sviluppo rapido di Excel è una piattaforma di sviluppo software che porta le migliori pratiche di ingegneria del software sul tuo desktop, perché sì, hai Excel lì e ti consente di configurare un software completamente automatizzato senza scrivere una sola riga di codice.
Abbiamo sviluppato nel corso degli anni cinque modelli principali di foglio di lavoro (o template):
- Query template: dove ti colleghi alle origini dati esterne
- Table template: modello di calcolo principale, filtri righe o colonne, esplosione una tabella in un’altra e molto altro ancora
- Stack template: lo strumento che semplifica l’accodamento dei dati di diverse colonne in diversi fogli di lavoro e li normalizza in un’unica tabella
- Parameter Template: qui memorizzi i dati che devi conservare nel tuo foglio di calcolo – mantieni limitata il più possibile la memorizzazione di dati su Excel, esportali ed esegui il backup; in questo template c’è un pulsante di output che esporta i dati come file di testo, che viene reimportato in fase di esecuzione
- Pivot template: il principale strumento di reporting e talvolta anche un potente strumento di calcolo
Inoltre, una serie di brillanti macro stanno facendo il lavoro di automazione per te dietro le quinte. Uno di questi è molto speciale: è una macro che scrive la macro di automazione per tuo conto.
Per coloro che sono molto interessati alla sicurezza: il codice FEDT VBA è open source, quindi puoi ispezionarlo e se lo desideri puoi modificarlo.
Quando ho inviato il mio precedente articolo ai miei amici e partner di Production-scheduling, il nostro fondatore e il mio maestro FEDT Tony Rice mi ha suggerito un brillante algoritmo che richiedeva un’elaborazione non lineare: fino a pochi giorni fa infatti lo strumento di automazione FEDT funzionava in modo lineare da sinistra a destra, foglio dopo foglio senza capacità di loop o ramificazione. Ho risposto a Tony che per il momento avrei mantenuto il mio algoritmo più semplice e automatizzabile, ma accettai la sfida a medio termine di rendere disponibili ramificazioni e loop sul sistema di automazione del FEDT.
Dopo qualche mese parlavo dei bei vecchi tempi della programmazione Assembly con un mio collega: qualcosa mi è scattato in mente e in poche ore ho codificato la nuova funzionalità, basata sulla parola chiave NEXT impostata nella riga 6, dove tutte le le parole chiave di automazione sono impostate.
Ora il sistema di automazione FEDT è in grado di gestire branching e loop.
Qualche parola su NEXT: consente il controllo del flusso di lavoro di calcolo con rami e loop. In altre parole, è possibile controllare quale sarà il prossimo foglio elaborato dal risultato di una formula, il foglio successivo può essere a destra (salto in avanti) oa sinistra (salto all’indietro) di quello corrente.
Quando viene elaborata un’istruzione NEXT, il processore di automazione macro crea un intervallo denominato SheetName_Next nella riga 5 sopra l’istruzione Next. Accetta come parametri un certo numero di nomi di fogli più la stringa speciale TheEnd: quest’ultima permette di andare a…The End ed uscire dall’elaborazione.
Il valore in SheetName_Next deve essere uno dei parametri passati a Next, in caso contrario viene visualizzata una finestra di messaggio di errore. Il foglio successivo elaborato è il valore di SheetName_Next.
SheetName_Next in genere conterrà una formula che ne restituisce una nei possibili fogli successivi.
Ogni foglio accetta una sola dichiarazione NEXT.
Prv_Sht, un intervallo denominato non riferito a celle, serve per tenere traccia del foglio precedente elaborato: può essere utilizzato per impostare formule a seconda di quale fosse il foglio precedente.
Importante: un uso improprio dell’istruzione NEXT potrebbe generare loop infiniti, se utilizzato correttamente abilita ramificazioni e loop.
Fatto l’annuncio, immergiamoci nel flusso di lavoro.
La logica del flusso di processo
Abbiamo bisogno dei seguenti passaggi:
- Generazione della distinta base prodotto, a partire dalla distinta base per ogni singolo articolo nel portafoglio ordini
- Calcoli relativi al Material Requirements Planning (MRP), in altre parole esplosione dei fabbisogni di materiale
- Disponibilità dei materiali e vincoli di data
- Capacity Requirements Planning (CRP – pianificazione della capacità): prima della pianificazione, è necessario sapere in che modo il carico di lavoro si adatta (o non si adatta) al profilo di capacità
- Schedulazione a capacità finita: programmazione in tre passaggi, in avanti se non c’è capacità, all’indietro dalla data di scadenza se il carico di lavoro è compatibile con la capacità, avviare un lavoro solo se i materiali necessari sono disponibili
Dobbiamo alimentare i calcoli con i seguenti dati:
- Ordini di vendita (o Previsioni)
- Distinta Base (genitore-figlio-quantità per)
- Inventario (Quantità disponibile a magazzino totale per ciascun codice)
- Articoli (informazioni di base per ogni articolo)
- Ordini di Acquisto
- Centri di Lavoro (Caratteristiche dei CdL)
- Calendari (ore / profili di disponibilità)
- Cicli(sequenza delle operazioni da fare pre produrre un codice a partire dai suoi componenti)
- Lavorazioni in corso (WIP)
E dai calcoli otterremo tre report:
Vincoli materiali: quando i materiali acquistati saranno disponibili per ogni ordine cliente
Carico di lavoro per centro di lavoro: un grafico che mostra la saturazione della capacità dei centri di lavoro nel tempo
Scheduling Gantt: il noto grafico
Dai dati calcolati è possibile costruire una serie di altri report utili: se lo desideri, questo è un compito per te.
Product BOM (distinta base di prodotto)
La tipica distinta base ERP ha la struttura di base padre – figlio – quantità per; tuttavia, per eseguire un MRP dobbiamo far esplodere la domanda indipendente (ordini di vendita nel nostro esempio) attraverso i prodotti semilavorati fino ai componenti acquistati e per farlo, abbiamo bisogno di una distinta base del prodotto, che assomigli al prodotto – genitore – figlio – q.tà per.
Nel mio precedente articolo sull’inventario avanzato analisi, ho costruito la distinta base del prodotto con un’esplosione lineare di 9 livelli, non uno di più e non uno di meno, anche se non servirebbe, possono essere elaborati in questo modo.
Devo copiare il meccanismo del precedente articolo? No. Ora ho l’istruzione NEXT e l’ho usata: la distinta base del prodotto viene generata scorrendo avanti e indietro fra di due fogli, uno per i livelli pari e uno per i livelli dispari della distinta base, si interrompe automaticamente quando non c’è più lnulla da esplodere e virtualmente può esplodere un numero illimitato di livelli. Per tranquillità, ho impostato un limite di 20 livelli per evitare loop infiniti a causa di dati incoerenti, puoi rimuoverlo o modificarlo cambiandolo nel foglio di lavoro PARA.
Viene generata una distinta base prodotto per ogni articolo distinto nel libro degli ordini di vendita, al fine di ottimizzare i calcoli.
Material Requirements Planning
Utilizziamo la distinta base del prodotto, gli ordini di vendita e l’inventario a disposizione.
Semplificando molto, la domanda indipendente viene propagata attraverso la distinta base del prodotto per ogni ordine cliente, tenendo conto delle scorte disponibili, calcolando così la domanda netta, che diventa la domanda lorda per il livello successivo.
In altre parole, dobbiamo calcolare il fabbisogno lordo di ogni livello della distinta base e dobbiamo calcolare il fabbisogno netto, il fabbisogno lordo meno il livello di scorte disponibile se maggiore di zero, ed estenderlo al livello inferiore della distinta base come fabbisogno lordo.
Questa elaborazione genera un elenco di articoli e quantità da acquistare o produrre, per ciascun ordine cliente.
Disponibilità Materiali e vincoli di data
Consideriamo l’elenco dei fabbisogni degli articoli acquistati dal passaggio MRP.
Le quantità a disposizione sono state utilizzate dal MRP, quindi abbiamo l’elenco delle parti che non possiamo ritirare dal magazzino.
D’altra parte, abbiamo un elenco di ordini di acquisto rilasciati e conosciamo il tempo di consegna per ogni articolo.
Un materiale specifico sarà disponibile al momento della consegna di un ordine di acquisto o dopo il lead time (ammesso che un ordine di acquisto adeguato venga rilasciato tempestivamente).
Per calcolare la data di disponibilità, utilizziamo una tecnica brillante: prima accumuliamo separatamente gli ordini di acquisto di ciascun articolo ordinati per data di consegna crescente e i fabbisogni di ciascun articolo ordinati in base alla priorità dell’ordine cliente, in secondo luogo per articolo ordiniamo le quantità cumulate, mescolando fabbisogni e forniture. In questo modo scopriamo quale ordine di acquisto copre quale requisito, e quindi quando verrà soddisfatto il requisito e, se non c’è copertura da ordine di acquisto, sappiamo che il lead time determinerà la data di disponibilità.
Riproduci la clip qui di seguito: spiega magnificamente la logica di questo trucco del calcolo della disponibilità. A proposito, è una presentazione di un webinar tenuto da Kien Leong.
Sappiamo quando può iniziare la produzione, ovviamente perché programmiamo solo i prodotti finiti, se c’è un passaggio interno prima dell’articolo finito, aggiungiamo il suo lead time alla data di disponibilità dei componenti di acquisto.
Perfetto: abbiamo il vincolo di disponibilità del materiale.
Capacity Requirements Planning
Per valutare il carico di lavoro ed equilibrare la capacità dei centri di lavoro, esplodiamo l’elenco degli articoli da realizzare tramite il ciclo di produzione di ciascun articolo e calcoliamo il carico di lavoro di ciascun centro di lavoro. Per quanto riguarda il time phasing, partiamo dalla data di scadenza di ciascun ordine cliente per il lead time e nelle operazioni di un articolo + l’offset indicato nei cicli di produzione.
Per calcolare la capacità nel tempo, ci avvaliamo dei calendari di ogni centro di lavoro per creare una lista della capacità disponibile data per data per ogni centro di lavoro.
Se accodiamo capacità e carico di lavoro in una unica tabella, possiamo costruire un grafico che mostra la saturazione della capacità.
Perché abbiamo bisogno di questo strumento? Ebbene, la schedulazione a capacità finita livellerà perfettamente il carico di lavoro all’interno del profilo di disponibilità dei CdL nel tempo, tuttavia:
- picchi di carico di lavoro generano ritardi nella consegna
- l’eccesso di capacità potrebbe diventare uno spreco di denaro
Una volta che abbiamo gestito la capacità al meglio, possiamo passare alla programmazione finita.
Schedulazione a tre passaggi attraverso più centri di lavoro vincolati dalla disponibilità degli articoli di acquisto
Che cos’è la schedulazione a tre passaggi?
Prima programmiamo in avanti a partire da oggi: il primo lavoro inizia subito, il secondo subito dopo il primo e così via. I lavori vengono spinti attraverso la produzione il prima possibile. Questo è chiamato push1
Come secondo passo, pianifichiamo a ritroso dalla data di consegna e quindi possiamo avere un lavoro che inizia in passato. I lavori vengono tirati dalla loro data di consegna. Lo chiamiamo pull.
Il terzo passo è quello saggio: si parte oggi, si schedula in avanti se c’è una capacità limitata e si tira all’indietro se la capacità disponibile permette di rispettare le scadenze. Lo chiamiamo push2.
Qui sotto trovi un esempio da Scheduling Excel di Tony Rice.
E quale ruolo gioca il nostro elenco di vincoli sulla disponibilità dei materiali? Agisce nella fase push1: un lavoro non può iniziare prima che sia disponibile l’ultimo nei suoi materiali, quindi la fase push2 andrà avanti dalla data di disponibilità se l’ordine se la data di inizio pull è precedente.
Ora la logica a più centri di lavoro: quando il push dell’operazione di lavoro successiva non può iniziare prima del completamento di quello precedente, quando il pull partendo dalla data di scadenza e andando indietro, la fine di un’operazione non può avvenire prima dell’inizio della precedente.
Mettiamo tutto insieme e abbiamo una logica di schedulazione a tre passaggi attraverso più centri di lavoro vincolati dalla disponibilità degli articoli acquistati.
Oltre a tutto questo, ho considerato anche i lavori in corso, WIP in breve: alcune parti e operazioni di un ordine specifico potrebbero essere già completate, in altre parole possiamo avere degli ordini in corso: per tenerne conto ho fatto due ipotesi. Il primo presupposto, ogni ordine passa all’operazione successiva solo quando completato, quindi se trovo parti nell’operazione 3 presumo che non ci sarà più nulla da fare per quel lavoro nell’operazione 1 e 2 e la seconda, i materiali vengono prelevati dalla giacenza solo quando l’ordine è completato.
Il bundle di file associati all’articolo
Material-Constrained Scheduling Tool Download
Con una registrazione gratuita sopra riceverai un link per scaricare un pacchetto contenente:
- Una cartella con i dati utilizzati in questo esempio
- Lo strumento di pianificazione e schedulazione sopra descritto
- Un vero gioiello: il manuale scheduling by spreadsheet scritto dal nostro fondatore Tony Rice – tra l’altro è il documento da cui ho iniziato la mia storia infinita di Fast Excel Development più di 20 anni fa – in Production-scheduling lo consideriamo una pietra miliare che ci riferiamo ad esso come “La Bibbia di Tony”
- L’ultima versione del Fast Excel Development Template professionale, quello da cui sono partito
Se si desidera eseguire lo strumento, è necessario decomprimere la cartella zip nella radice dell’unità c:.
La prima volta che apri la cartella di lavoro potrebbe apparire un avviso: abilita ciò che ti viene chiesto.
Nel foglio di lavoro denominato Menu, il primo a sinistra, è presente un pulsante denominato “Update from Local”: cliccandoci sopra si esegue l’elaborazione completa.
Cosa puoi fare ora?
- Sperimenta con lo strumento
- Esegui lo strumento con i tuoi dati
- Ricostruiscilo da zero dalla FEDT
- Migliora/adatta lo strumento in base alle tue esigenze
- Studia il documento di Tony Rice
- Sperimenta il FEDT: leggi il mio articolo sulle funzionalità di base di FEDT 4.0, anche il foglio Quick Reference incluso nel FEDT è utile.
Come utente di Fast Excel Development da oltre 20 anni e recentemente sviluppatore, se posso permettermi, ecco un consiglio per te: esercitati per padroneggiare sempre meglio la Fast Excel Development Methodology, poiché più la usi più impari.