Dal momento che il cliente è te stesso, dovrai decidere la risposta a tutte le domande che sono state poste Mark Byers. Tuttavia, ti darò alcuni suggerimenti e spero che ti diano un inizio.
Supponiamo che la vostra fabbrica utilizzi alcune parti diverse e le assemblaggi in un unico prodotto finito. Un diagramma di flusso del processo di assemblaggio potrebbe essere simile:
Factory Flowchart http://img62.imageshack.us/img62/863/factoryflowchart.jpg
Per il primo diamante, dove widgets A e B vengono assemblati, assumere ci vogliono circa 30 secondi per completare questo passaggio. Assumeremo che il tempo effettivo impiegato per i due widget da assemblare sia distribuito normally, con media 30 s e varianza 5 s. Per il secondo diamante, supponiamo che richieda anche una media di 30 secondi, ma la maggior parte delle volte non ci vuole molto, e altre volte ci vuole molto più tempo. Questo è ben approssimato da un exponential distribution, con 30 s come parametro di frequenza, spesso rappresentato in equazioni da una lambda.
Per il primo processo, calcolare il momento di assemblare widgets A e B come:
timeA = randn(mean, sqrt(variance)); // Assuming C# has a function for a normally
// distributed random number with mean and
// sigma as inputs
Per il secondo processo, calcolare il tempo di aggiungere widget di C all'assieme come:
timeB = rand()/lambda; // Assuming C# has a function for a uniformly distributed
// random number
Ora il tempo totale di assemblaggio per ciascun iGadget sarà timeA + timeB + waitingTime
. In ogni punto di raccolta, memorizzare una coda di widget in attesa di essere assemblata. Se il secondo punto di assemblaggio è un collo di bottiglia, la coda si riempirà. È possibile applicare una dimensione massima per la coda e tenere le cose più in alto quando viene raggiunta la dimensione massima. Se un articolo è in una coda, il tempo di assemblaggio viene aumentato da tutti gli iGadgets che lo precedono nella catena di montaggio. Lascio a te la responsabilità di capire come codificarlo, e puoi eseguire molte prove per vedere quale sarà il tempo totale di assemblaggio, in media. Come appare la distribuzione risultante?
modi per "Spice Questa up":
- Richiede 3 widgets B per ogni Un widget. Gioca con l'inventario. Rifornire l'inventario a intervalli casuali.
- Aggiungere un controllo di garanzia della qualità (la distribuzione esponenziale è buona da usare qui) e rifiutare alcuni dei iGadgets completati. Suggerisco di usare un basso tasso di rifiuto.
- Provare a utilizzare distribuzioni di probabilità diverse da quelle che ho suggerito. Guarda come influiscono sulla tua simulazione. Cerca sempre di capire come i parametri di input per le distribuzioni di probabilità si mapperebbero nei valori del mondo reale.
Si può fare molto con questa semplice simulazione. Il prossimo passo sarebbe quello di generalizzare il codice in modo da poter avere un numero arbitrario di widget e passaggi di assemblaggio. Non è così facile. Esiste un intero campo di matematica applicata chiamato operations research dedicato a questo tipo di simulazione e analisi.
+1 domanda interessante. Sembra che tu voglia sia una modellazione matematica in modo da poter ottimizzare determinate variabili (costo, capacità, ecc.). Non sono sicuro che tu voglia veramente una "simulazione". – dss539
Io lavoro è una fabbrica ea volte aumentiamo il through put. Questo aumento ha diversi impatti negativi su altri budget dipartimentali come l'aumento dei costi elettrici, l'aumento dei costi di manutenzione e la riduzione della durata delle apparecchiature. Anche se sarebbe divertente provare e simulare le modifiche del throughput e dei costi. Non sono un programmatore professionista, ma mi diletto un po 'e ho pensato che sarebbe stato un progetto divertente. – fishhead
Il tuo commento rafforza il mio punto di vista che vuoi un modello matematico. Sono d'accordo, sembra un progetto divertente. Diventerà ancora più divertente quando inizi ad ottimizzare determinati parametri. ;) Puoi modellare molte di queste variabili semplicemente usando un foglio di calcolo ... ovviamente scrivere un programma per farlo potrebbe essere più divertente. – dss539