2010-01-29 24 views
10

Vorrei creare una simulazione di una fabbrica e sto cercando idee su come farlo. I miei pensieri finora sono:simulazione di fabbrica

• Una fabbrica è costituita da un gruppo di processi, alcuni di questi processi sono in serie e alcuni sono in parallelo. Ogni processo potrebbe comunicare con esso è a monte ea valle e vicini paralleli per informarli del suo throughput

• ciascun processo sarebbe deve possedere attributi di base come massimo throughput, costi di manutenzione a causa di throughput

Ovviamente Non l'ho ancora pensato, ma speravo che qualcuno potesse darmi qualche idea o forse un link a una risorsa online

aggiornamento: Questo progetto è solo per mio intrattenimento personale, e forse imparare un po 'di più lungo la strada. Non sono impiegato come programmatore, la programmazione è solo un hobby per me. Ho deciso di scriverlo in C#.

+2

+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

+0

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

+0

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

risposta

3

Simulare un'intera fabbrica con precisione è un grande lavoro.

In primo luogo è necessario capire: perché stai facendo la simulazione? Per chi è? Che valore gli darà? Quali parti della simulazione sono interessanti? Quanto deve essere accurato? Quali parti del processo non devono essere simulate accuratamente?

Per capire le risposte a queste domande, è necessario parlare con chiunque desideri che la simulazione sia scritta.

Una volta capito cosa simulare, è necessario capire come simularlo. Hai bisogno di alcuni modelli e alcuni parametri per quei modelli. È possibile ottenere alcuni dati reali dalla produzione reale e provare a ricavare modelli dalle figure. I modelli potrebbero essere una semplice relazione lineare tra un input e un output, una relazione più complessa e forse anche un effetto stocastico (casuale). Se non hai accesso ai dati reali, dovrai fare supposizioni nel tuo modello, ma non sarà mai così buono, quindi cerca di ottenere dati reali laddove possibile.

Si potrebbe anche voler considerare le probabilità di rottura dei componenti e quali effetti potrebbero avere. E i lavoratori in sciopero? Indisponibilità delle materie prime? L'usura del macchinario provoca progressivamente una riduzione della produzione nel tempo? Anche in questo caso potresti non voler considerare questi dettagli, dipende da ciò che il cliente desidera.

Se la simulazione prevede eventi casuali, è possibile eseguirla più volte e ottenere un risultato medio, ad esempio utilizzando una simulazione Monte Carlo.

Per dare una risposta migliore, abbiamo bisogno di sapere di più su ciò che è necessario simulare e ciò che si desidera raggiungere.

+0

Non lavoro come programmatore. Sembra solo un progetto divertente, e forse imparare un po 'di più sulla programmazione. Non mi aspetto che l'applicazione sia di alcun interesse per nessuno tranne me stesso. – fishhead

+1

Questo tipo di applicazione è sicuramente interessante per molte persone che gestiscono il processo di produzione e un sacco di tempo e denaro per lo sviluppo di tali applicazioni. Non è un progetto facile, ma paga molto bene se puoi usare la tua simulazione per ottimizzare i loro processi, ridurre i tassi di fallimento, ecc. Se vuoi solo imparare come programmare, questo probabilmente non è un progetto ideale per imparare come è complesso e probabilmente non avrai dati reali con cui lavorare. –

+0

ho ho dati reali - connessione diretta a tutti i server SQL industriali e tutti gli ultimi 4 anni di dati. Ho anche connessioni al database di manutenzione e costi inclusi manodopera, appaltatori e parti – fishhead

0

Automod è la strada da percorrere. http://www.appliedmaterials.com/products/automod_2.html

C'è molto da imparare e non sarà economico.

L'Automod di ASI opera nel settore della simulazione di fabbrica da circa 30 anni. Ora è di proprietà di Applied Materials. I grandi giocatori che lavorano con la movimentazione dei materiali in un magazzino usano Automod perché è il leader provato.

+0

Perché è stato downvoted? Non so nulla di automod, ma qualcuno potrebbe spiegare il downvote? – dss539

+0

Ho downvoted perché non fornisce alcun supporto per il motivo per cui automod dovrebbe essere usato, e in generale non fornisce alcun consiglio su come simulare una fabbrica. –

+0

@Scottie Giusto abbastanza, ma questa risposta sembra simile alla risposta di Jim C. – dss539

0

Forse più di quello che stai cercando, ma visual components è un buon strumento di simulazione industriale.

Per essere chiari, non lavoro per loro, né l'azienda per cui lavoro li utilizza attualmente, ma li abbiamo guardati.

3

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.

+0

+1 bel esempio – dss539

1

Quello che stai descrivendo è un problema classico affrontato dalla simulazione di eventi discreti. Una varietà di linguaggi di simulazione sia per scopi generici che per scopi speciali sono stati sviluppati per modellare questo tipo di problemi.Anche se non consiglierei di programmare nulla da zero per un problema "reale", potrebbe essere un buon esercizio scrivere il tuo codice per un piccolo problema di accodamento in modo da poter capire la programmazione degli eventi, la generazione di numeri casuali, il monitoraggio dei calendari, ecc. Una volta che lo hai fatto, un linguaggio di simulazione generico farà tutto quel che ti serve per concentrarti sul quadro generale.

Una buona referenza è Law & Kelton. ARENA è un pacchetto standard. È ampiamente utilizzato e, IMHO, è molto completo per questo tipo di simulazioni. Il libro ARENA è anche un libro decente sulla simulazione e viene fornito con il software che può essere applicato a piccoli problemi. Per modellare i problemi più grandi, è necessario ottenere una licenza. Dovresti riuscire a scaricare una versione di prova di ARENA here.