La pianificazione finita calcola l’inizio e la fine di ciascun lavoro da eseguire in produzione. Considera tempi ciclo e quantità per il carico di lavoro e la disponibilità del centro di lavoro tramite un calendario per la capacità.
Nella metodologia di sviluppo Fast Excel standard ciò richiede formule intelligenti e complicate per gestire date e ore. Queste formule sono sempre necessarie, anche con la forma più semplice di schedulazione finita: una logica di semplice schedulazione in avanti. Naturalmente puoi copiare e adattare le formule da altri esempi e lasciare che il Fast Excel Development Template esegua l’automazione e la codifica VBA per te.
Più di 20 anni fa su questo sito, il nostro fondatore Tony Rice scrisse un tutorial dettagliato su come eseguire la schedulazione in Excel, nota anche come “Bibbia di Tony”. È ancora il nostro riferimento quando si tratta di schedulazione e spiega una serie di casi di schedulazione diversi, come la schedulazione a 3 passi e le operazioni di più centri di lavoro. Lo includo nel bundle che puoi scaricare; Ti consiglio vivamente di prenderti il tempo per leggerlo: vale oro.
I miei articoli più recenti riguardavano la dimostrazione di quanto lontano puoi spingerti con il nostro Fast Excel Development Template senza scrittura di codice, quindi ho analizzato come costruire sistemi piuttosto complessi.
Questo articolo riguarda la semplificazione della schedulazione tramite l’uso di Power Query. E come sempre è disponibile uno strumento complementare che implementa la logica dell’articolo in uno strumento completamente automatizzato. Per scaricarlo compila il modulo in fondo a questo articolo. Ma, come sempre, tutto avrà molto più senso se prima ti prenderai 13,5 minuti per leggerlo.
I casi di utilizzo e le limitazioni di una schdulazione a capacità finita di tipo push
A prima vista, il concetto di schedulazione finita sembra semplice. Ho un certo numero di lavori da fare. Questi lavori richiedono che i workcenter svolgano il lavoro. I workcenter hanno un numero limitato di risorse e ciascuna risorsa può fare solo una cosa alla volta. I centri di lavoro possono lavorare solo quando sono disponibili su turni e non quando la fabbrica è chiusa. Un lavoro ha una data e un’ora di inizio. Il lavoro viene configurato ed eseguito. Una volta terminato il lavoro si può iniziare quello successivo. Fin qui tutto bene.
Puoi scegliere la schedulazione “push” (o “forward”) da cui inizi adesso e poi calcolare quando finirai. Oppure puoi eseguire una schedulazione “pull” (“all’indietro”) in cui finisci prima della data di scadenza e calcola quando inizierai.
Ora che abbiamo definito alcuni termini, vorrei parlare di una limitazione della programmazione “push”.
Esistono diversi casi d’uso in cui il requisito è semplice: un routing con un solo centro di lavoro e una schedulazione push a partire da una data e un’ora di inizio definite.
Esistono diversi casi d’uso in cui il requisito è semplice: un ciclo con un solo centro di lavoro e una pianificazione push a partire da una data e un’ora di inizio definite.
Andiamo un po’ più a fondo su alcuni vincoli di questa nuova tecnica che ti sto mostrando qui.
In questo caso, stiamo pianificando un singolo centro di lavoro per ciascuna famiglia di lavori. Non funziona con una sequenza di operazioni interconnesse che richiedono più centri di lavoro. È possibile svolgere il lavoro in parallelo utilizzando centri di lavoro diversi per parti e famiglie di processi diverse. Ma non è possibile eseguire il lavoro in serie utilizzando diversi centri di lavoro per la stessa parte.
In secondo luogo, una programmazione push va bene per te, ovvero hai un elenco di lavori da svolgere uno dopo l’altro al più presto e vuoi sapere quando saranno completati. i lavori sono ordinati per priorità e data di scadenza. È possibile regolare la capacità in modo che corrisponda al tasso medio di domanda del cliente.
Anche se questi vincoli sembrano piuttosto stringenti, ci sono molte situazioni del mondo reale che richiedono esattamente questa logica. Considera i due casi d’uso seguenti.
Primo esempio, devi fornire un feedback alle richieste dei tuoi clienti sulla data di disponibilità dei loro ordini e sai che esiste una risorsa specifica che determina la data di consegna.
Secondo esempio, si sta programmando un flusso di lavoro di alcune fasi di produzione con un collo di bottiglia che determina il ritmo di produzione: è possibile pianificare con questa tecnica il collo di bottiglia e pianificare a monte e a valle delle priorità e dei tempi del centro di lavoro pianificato applicando dei lead time.
I due casi sopra vi suonano familiari? Lo fanno per me: come responsabile della catena di fornitura o consulente ho avuto un buon numero di casi d’uso simili che rientravano nei vincoli, sia che stessi applicando la Teoria dei Vincoli, DDMRP o un flusso di lavoro lean.
Spiegazione dell’algoritmo di schedulazione semplificato
Fatta l’introduzione, qual è la tecnica?
È possibile soddisfare il carico di lavoro (misurato in ore) quando la capacità del centro di lavoro (anch’essa misurata in ore) è uguale o superiore a esso.
Ciò funziona in modo cumulativo. Se il carico di lavoro di un lavoro è di 24 ore e il relativo centro di lavoro funziona 8 ore al giorno, saranno necessari tre giorni per completarlo, in altre parole il centro di lavoro completa il lavoro quando la sua capacità cumulativa raggiunge il carico di lavoro.
Se il carico di lavoro successivo in sequenza è di 16 ore, ci vorrà fino al quinto giorno da adesso per completarlo: il carico di lavoro cumulato è 24+16=40, la capacità cumulata del workcenter raggiunge 40 il quinto giorno: 8 x 5 = 40 Finora il carico di lavoro e la capacità in alcuni momenti coincidono perfettamente.
Consideriamo un terzo lavoro di 12 ore: sappiamo già che verrà completato durante il settimo giorno lavorativo perché è allora che la capacità cumulata sarà maggiore del carico di lavoro. Ma quando esattamente? Si completerà 4 ore prima della fine del turno: questa è la differenza tra la capacità cumulata, 8×7=56, e il carico di lavoro cumulato, 24+16+12=52.
Quando aggiungiamo un quarto ordine di 6 ore, inizierà 4 ore prima della fine del settimo giorno e terminerà 6 ore prima della fine dell’ottavo giorno.
Stai centrando la logica?
Stiamo schedulando utilizzando le ore cumulative sia per la capacità che per il carico di lavoro.
Le persone che hanno già familiarità con i nostri metodi sanno che su Production-Scheduling.com utilizziamo una tecnica intelligente basata sulle quantità cumulative e sul auccessivo ordinamento per determinare la disponibilità dei materiali confrontando domanda e offerta. Nel caso della schedulazione il carico di lavoro è una domanda di ore, la capacità è una fornitura di ore, l’equivalente dell’articolo che analizziamo nella disponibilità dei materiali è il centro di lavoro.
Ecco l’esempio sopra.
Innanzitutto, abbiamo un elenco di lavori, il carico di lavoro. e un calendario, la capacità disponibile.
In secondo luogo, accumuliamo carico di lavoro e capacità e calcoliamo separatamente per ciascuno di essi le ore cumulative.
In terzo luogo, ordiniamo per “Cumulato” in ordine crescente e per Tipo in ordine decrescente.
Perché l’ordinamento discendente per Tipo?
Perché quando il carico di lavoro e le ore cumulate di capacità corrispondono esattamente, avremo la riga della capacità appena sotto la riga del carico di lavoro che serve.
Il carico di lavoro di un lavoro è la somma del tempo di attrezzaggio, generalmente dipendente dal lavoro precedente, e della quantità moltiplicata per l’unità di tempo.
La capacità di un centro di lavoro è determinata dal relativo calendario, ovvero un elenco di intervalli di tempo.
Un breve ma importante promemoria: Excel esprime il tempo in giorni e frazioni di giorno, esempi 1 ora = 1/24 giorni, 1 minuto è 1/1440 giorni.
In pratica, cumuliamo per centro di lavoro il carico di lavoro generato da ciascuna commessa e la capacità disponibile secondo un calendario di disponibilità separatamente e poi li uniamo ordinando i cumuli in ordine crescente. Quando la capacità accumulata eguaglia o supera il carico di lavoro accumulato con un lavoro aggiunto per ultimo al cumulo, quel lavoro viene completato, la differenza tra le due quantità cumulate fornisce l’anticipazione nell’intervallo di tempo.
E per quanto riguarda l’ora di inizio di un lavoro? Questa è una schedulazione push: un lavoro inizia quando finisce quello precedente.
Esiste un’eccezione: il primo lavoro nel centro di lavoro non ha un lavoro precedente e inizierà all’inizio dell’orizzonte di capacità del centro di lavoro, in genere da oggi o dal turno successivo.
Perché dico che questa è un’alternativa semplificata al nostro algoritmo di pianificazione push standard?
Innanzitutto, non richiede un numero di formule =MATCH() (=CONFRONTA()) combinate per determinare l’inizio e l’arresto di ciascun lavoro: lo fa cumulativamente e ordinando.
In secondo luogo, non è necessario navigare tra i calendari con calcoli di data e ora: il calendario viene utilizzato solo per generare la capacità del centro di lavoro.
In terzo luogo, è semplice cogliere il concetto di fondo.
La cartella di lavoro complementare: schedulazione della capacità e pianificazione a capacità finita degli ordini di vendita
Ho preparato per te uno strumento con tre funzionalità principali:
- pianificazione della capacità: analisi del carico di lavoro rispetto alla capacità disponibile;
- date di disponibilità degli ordini di vendita in base alla capacità finita;
- schedulazione a capacità finita dei centri di lavoro.
Ho fornito in bundle lo strumento e il suo set di dati:
- Fast Excel Development Template 4.3.9 che ho utilizzato per questa build;
- il file Scheduling_Excel.xls di Tony Rice, una preziosa fonte di informazioni sulla pianificazione tramite foglio di calcolo di cui ho parlato all’inizio dell’articolo.
Puoi scaricare lo strumento compilando il seguente modulo: il link per il download verrà inviato rapidamente all’indirizzo email specificato. Nessuna email di spam, promesso.
New Algorithm For Finite Scheduling Download
Prenditi il tempo necessario per eseguire i passi per farlo funzionare sul tuo computer.
- Utilizza il modulo qui sopra per accedere al download.
- Scarica la cartella ZIP e decomprimila direttamente sul tuo C Drive.
- Dovresti avere la seguente cartella: C:\P-S_SO_Scheduling e C:\P-S_SO_Scheduling\Data
- Apri lo strumento: P-S_SO_Scheduling _v1.xlsm
- Premere il pulsante “Update from Local”.
Questo è tutto. Verrà eseguito con dati fittizi.
Utilizza questo set di dati per conoscere lo strumento.
Quando sei pronto…
Per eseguire con i tuoi dati, sostituisci i file di input nella posizione: C:\ P-S_SO_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.
Ho creato lo strumento complementare con FEDT 4.3.9, l’ultimo rilasciato.
Include 6 template e una serie di macro intelligenti e funzioni che lavorano dietro le quinte per rendere il tuo sviluppo facile, veloce e affidabile:
- Parameter template, è dove gestisci i dati definiti dall’utente e li esporti;
- Query template, dedicato all’importazione dei dati, ma in combinazione con Power Query anche per unire/esplodere tabelle o impilarle;
- Table template, questo è il re dei calcoli;
- Pivot template, dedicato principalmente alla reportistica ma anche alla sintesi dei dati;
- Stack template, impilare le tabelle in modo tradizionale FEDT;
- ModuleList template, che consente l’orchestrazione di diversi moduli/cartelle di lavoro.
C’è anche un foglio di lavoro molto utile, denominato QuickReference, in cui trovi suggerimenti sulle funzionalità del Fast Excel Development Template.
Se desideri approfondire la potenza del FEDT per la creazione di sistemi per la supply chain completamente integrati, modulari e automatizzati, consiglio vivamente di controllare la serie di webinar ospitati da Kien Leong, partner di Production-scheduling.com e mio buon amico.
In questo esempio ho considerato due famiglie di prodotti e due workcenter ciascuno dedicato ad uno delle due famiglie.
La prima famiglia è composta da 8 prodotti (1A, 1B, 1C, 1D, 1E, 1F, 1G, 1H) prodotti sul centro di lavoro WC1, la seconda famiglia ha 4 prodotti (2U, 2X, 2Y, 2Z) prodotti su WC2. Sì, lo so, davvero poca fantasia, abbiate pazienza.
DAti di input:
- Ordini di vendita;
- Attrezzaggio: imposta il tempo per cambiare un centro di lavoro da un articolo a un altro;
- Ciclo di lavorazione: centro di lavoro e tempo di esecuzione unitario per ciascun articolo;
- Calendario: disponibilità dei workcenter nel tempo;
Gli ordini di vendita sono collegati ai cicli e la loro sequenza ai cambi formato: questo genera il carico di lavoro.
Il calendario del centro di lavoro fornisce la capacità disponibile tenendo conto dell’inizio della programmazione per ciascuno dei due centri di lavoro.
Il foglio di lavoro SalesOrders consente di modificare la sequenza degli ordini. Fallo prima e poi clicca sul pulsante Output: questo genererà un file di testo che verrà importato in fase di esecuzione del sistema completo.
La modifica della sequenza influisce sulla pianificazione in due modi:
Cambia il tempo di attrezzaggio a causa dei cambi
Cambia l’ordine in cui la capacità disponibile viene consumata per coprire gli ordini di vendita, in altre parole quale ordine viene servito per primo.
Allo stesso modo, nel foglio di lavoro Calendar è possibile modificare la disponibilità dei due centri di lavoro modificando i loro calendari e quindi facendo clic sul pulsante Output. Nell’esempio il centro di lavoro WC1 lavora 5 giorni alla settimana in due turni di 7 ore, WC2 lavora un turno di 10 ore al giorno.
Per eseguire il sistema, andare al foglio di lavoro Menu e premere il pulsante Update from local.
Di seguito è riportato un riepilogo grafico del flusso del processo.
Output reports:
- Data di completamento di ciascun ordine di vendita sotto forma di rapporto sulla data di scadenza rispetto alla data effettiva programmata;
- Rapporto carico di lavoro/capacità settimanale per ciascun centro di lavoro, che mostra anche il tempo di attrezzaggio;
- Programmazione del centro di lavoro per giorno e senza formattazione condizionale per ragioni di leggerezza.
Per le persone interessate ai dettagli tecnici, in questa build ho esplorato i potenziali vantaggi di Power Query.
Power Query è disponibile da Excel 2010 come componente aggiuntivo gratuito e da Excel 2016 integrato come strumento standard. A prima vista l’editor di Power Query è travolgente e l’introduzione a Power Query va oltre lo scopo di questo articolo.
Tuttavia, con una conoscenza molto limitata è possibile importare dati da diverse origini, ordinare, filtrare, combinare, unire tabelle, calcolare colonne e persino chiedere a Power Query di indovinare quali calcoli si desidera nella colonna in base agli esempi. La colonna Chiave nel foglio di lavoro ChangeOver è un esempio di quest’ultima funzionalità.
Vale la pena dedicare del tempo all’apprendimento di Power Query nel contesto del metodo di sviluppo rapido di Excel? Secondo me sì, perché riduce la necessità di elaborazione dei dati tramite formule e quindi semplifica e velocizza lo sviluppo. Come ulteriore vantaggio, la dimensione della tabella che puoi gestire non è limitata dal milione di righe del foglio di lavoro Excel e su tabelle di grandi dimensioni non avrai bisogno di ricalcolare centinaia di celle di formule attive, con vantaggi in termini di tempo di elaborazione.
In questo esempio ho utilizzato Power Query per importare i dati e per calcolare il carico di lavoro, il foglio di lavoro WorkLoad tecnicamente deve essere un modello di query perché esegue una query, tuttavia esegue i calcoli che solitamente eseguiamo tramite modelli di tabella e diverse formule nella riga 8.
Ecco perché ho utilizzato Power Query in questo esempio.
Power Query è flessibile nell’importazione dei dati: avevo file txt, ma Power Query è pronto per importare per i database più utilizzati, dal web, da file pdf e molto altro.
Power Query semplifica l’unione delle tabelle: questa operazione viene chiamata “esplosione” nel gergo FEDT: ad esempio, WorkLoad è il risultato dell’unione di ordini di vendita, ChangeOvers e Routing; Ho evitato di scrivere 16 formule in pochi click, e avrei potuto evitare di caricare in due fogli di lavoro i file txt Changeovers e Routing: li ho caricati per chiarezza.
Power Query semplifica lo sviluppo di un sistema in generale: l’editor di Power Query ti consente di unire, ordinare e impilare tabelle in pochi clic, senza scrivere alcuna formula.
Power Query aiuta a ridurre i tempi di elaborazione: il suo motore è progettato per operazioni su tabelle, mentre il tradizionale FEDT utilizza formule, di uso generale e che richiedono molta CPU quando vengono ricalcolate; ovviamente questo non è percepibile su dataset di piccole dimensioni come quello dell’esempio.
Power Query autodocumenta (parzialmente) le relazioni all’interno delle tabelle e le origini dati esterne: questo è utile in caso di relazioni tra tabelle complesse. Vedi sotto la documentazione della nostra cartella di lavoro complementare.
Il foglio di lavoro StackWorkLoadCapacity, che ho creato nel modo FEDT standard per facilitare la comprensione delle persone già a conoscenza dei calcoli sulla disponibilità dei materiali, è quello in cui avviene la magia: impila carico di lavoro e capacità, calcola i cumuli per centro di lavoro e tipo di dati (capacità/carico di lavoro), ordina e determina il turno, o intervallo di tempo se lo si desidera, in cui verrà completato ciascun ordine di vendita e calcola la fine e l’inizio esatti di ciascun ordine di vendita/lavoro.
Nota importante: il cumulo della disponibilità inizia dalla data impostata in PARA_SchedulingStart nel foglio di lavoro PARA, nell’esempio l’ho impostato su una data fissa per mantenere coerente l’intero set di dati, in un caso d’uso reale questo dovrebbe essere aggiornato manualmente ogni esecuzione o set di pianificazione a =OGGI() o =ADESSO().
Conclusione
Questo esempio è basilare ma mostra tutta la potenza della semplicità dell’algoritmo di pianificazione e offre la datazione degli ordini di vendita, la pianificazione della capacità e la pianificazione dei centri di lavoro.
Hai imparato un semplice algoritmo di pianificazione a capacità finita, puoi scoprire come ho tratto vantaggio da PowerQuery dalla cartella di lavoro.
Con uno sforzo limitato, questo strumento può essere trasformato in un modulo da eseguire come componente di un sistema più complesso in cui i lavori da programmare sono calcolati in un MRP, un gestore del livello di inventario Min Max o un modulo di sistema disaccoppiato DDMRP.
I tuoi prossimi passi:
Esegui lo strumento con il set di dati che ho preparato per te
Provalo con i tuoi dati
Modificalo per adattarlo ai tuoi specifici requisiti di “schedulazione”.
Hai bisogno di aiuto?
Per la formazione controlla i pacchetti di corsi su Production-scheduling.com
Per consulenza e sviluppo di sistemi basati su FEDT, contattaci.