11 Stimmen

Simulation einer Fabrikhalle

Ich möchte eine Simulation einer Fabrikhalle erstellen und suche nach Ideen, wie ich dies tun kann. Meine bisherigen Überlegungen sind:

- Eine Fabrik besteht aus einer Reihe von Prozessen, von denen einige in Serie und andere parallel laufen. Jeder Prozess kommuniziert mit seinen vor- und nachgelagerten sowie parallelen Nachbarn, um ihnen mitzuteilen, dass er fertig ist.

- Jeder Prozess hat seine eigenen grundlegenden Eigenschaften, wie z.B. maximaler Durchsatz, Wartungskosten als Ergebnis des Durchsatzes

Natürlich habe ich das noch nicht ganz durchdacht, aber ich hatte gehofft, dass mir jemand ein paar Ideen oder vielleicht einen Link zu einer Online-Ressource geben könnte

aktualisieren: Dieses Projekt ist nur für meine eigene Unterhaltung, und vielleicht ein wenig lernen, auf dem Weg. Ich bin nicht als Programmierer angestellt, Programmieren ist nur ein Hobby für mich. Ich habe beschlossen, es in C# zu schreiben.

4voto

Mark Byers Punkte 761508

Eine ganze Fabrik genau zu simulieren ist eine große Aufgabe.

Zunächst müssen Sie herausfinden: Warum machen Sie die Simulation? Für wen ist sie gedacht? Welchen Wert hat sie für sie? Welche Teile der Simulation sind interessant? Wie genau muss sie sein? Welche Teile des Prozesses müssen nicht genau simuliert werden?

Um die Antworten auf diese Fragen herauszufinden, müssen Sie mit demjenigen sprechen, der die Simulation schreiben will.

Wenn Sie herausgefunden haben, was Sie simulieren wollen, müssen Sie herausfinden, wie Sie es simulieren können. Sie brauchen einige Modelle und einige Parameter für diese Modelle. Sie können vielleicht einige tatsächliche Zahlen aus der realen Produktion erhalten und versuchen, daraus Modelle abzuleiten. Bei den Modellen könnte es sich um eine einfache lineare Beziehung zwischen einem Input und einem Output handeln, um eine komplexere Beziehung und vielleicht sogar um einen stochastischen (zufälligen) Effekt. Wenn Sie keinen Zugang zu realen Daten haben, müssen Sie in Ihrem Modell Vermutungen anstellen, die aber nie so gut sein werden.

Sie sollten auch die Wahrscheinlichkeit des Versagens von Bauteilen und die damit verbundenen Auswirkungen berücksichtigen. Was ist mit einem Streik der Arbeiter? Nichtverfügbarkeit von Rohstoffen? Verschleiß an den Maschinen, der im Laufe der Zeit zu einer immer geringeren Produktion führt? Auch diese Details müssen nicht unbedingt berücksichtigt werden, denn es kommt darauf an, was der Kunde wünscht.

Wenn Ihre Simulation Zufallsereignisse beinhaltet, möchten Sie sie vielleicht viele Male durchführen und ein durchschnittliches Ergebnis erhalten, z. B. mit einer Monte Carlo Simulation.

Um eine bessere Antwort geben zu können, müssen wir mehr darüber wissen, was Sie simulieren müssen und was Sie erreichen wollen.

4voto

Scottie T Punkte 11029

Da Ihr Kunde Sie selbst sind, müssen Sie die Antwort auf alle Fragen finden, die Sie sich stellen. Mark Byers gefragt. Ich werde Ihnen jedoch einige Vorschläge machen und hoffe, dass Sie damit einen Anfang machen können.

Nehmen wir an, Ihre Fabrik nimmt einige verschiedene Teile und baut sie zu einem einzigen Endprodukt zusammen. Ein Flussdiagramm des Montageprozesses könnte wie folgt aussehen:

Fabrik-Flussdiagramm http://img62.imageshack.us/img62/863/factoryflowchart.jpg

Für den ersten Diamanten, bei dem die Widgets A und B zusammengesetzt werden, nehmen wir an, dass dieser Schritt im Durchschnitt 30 Sekunden dauert. Wir nehmen an, dass die tatsächliche Zeit, die für den Zusammenbau der beiden Widgets benötigt wird, verteilt ist normalerweise mit einem Mittelwert von 30 s und einer Varianz von 5 s. Für den zweiten Diamanten nehmen wir an, dass er im Durchschnitt ebenfalls 30 Sekunden braucht, aber die meiste Zeit dauert es nicht annähernd so lange, und manchmal dauert es viel länger. Dies lässt sich gut durch eine Exponentialverteilung mit 30 s als Geschwindigkeitsparameter, der in Gleichungen häufig durch ein Lambda dargestellt wird.

Berechnen Sie für den ersten Prozess die Zeit für den Zusammenbau der Widgets A und B wie folgt:

timeA = randn(mean, sqrt(variance)); // Assuming C# has a function for a normally
                                     // distributed random number with mean and 
                                     // sigma as inputs

Berechnen Sie für den zweiten Prozess die Zeit zum Hinzufügen von Widget C zur Baugruppe wie folgt:

timeB = rand()/lambda;  // Assuming C# has a function for a uniformly distributed
                        // random number

Die Gesamtmontagezeit für jedes iGadget beträgt nun timeA + timeB + waitingTime . Speichern Sie an jedem Montagepunkt eine Warteschlange von Widgets, die darauf warten, montiert zu werden. Wenn der zweite Montagepunkt ein Engpass ist, wird sich seine Warteschlange füllen. Sie können eine maximale Größe für die Warteschlange festlegen und die Dinge weiter oben im Fluss halten, wenn diese maximale Größe erreicht ist. Wenn sich ein Element in einer Warteschlange befindet, verlängert sich seine Montagezeit um alle iGadgets, die in der Montagelinie vor ihm liegen. Ich überlasse es dir, herauszufinden, wie du das programmieren kannst, und du kannst viele Versuche durchführen, um zu sehen, wie die Gesamtmontagezeit im Durchschnitt aussieht. Wie sieht die resultierende Verteilung aus?

Möglichkeiten zum "Aufpeppen":

  • Für jedes A-Widget sind 3 B-Widgets erforderlich. Spielen Sie mit dem Inventar herum. Füllen Sie das Inventar in zufälligen Abständen auf.
  • Fügen Sie eine Qualitätssicherungsprüfung hinzu (hier bietet sich die Exponentialverteilung an), und lehnen Sie einige der fertigen iGadgets ab. Ich schlage vor, eine niedrige Ablehnungsquote zu verwenden.
  • Versuchen Sie es mit anderen Wahrscheinlichkeitsverteilungen als den von mir vorgeschlagenen. Sehen Sie, wie sie sich auf Ihre Simulation auswirken. Versuchen Sie immer herauszufinden, wie sich die Eingabeparameter der Wahrscheinlichkeitsverteilungen auf die realen Werte auswirken würden.

Mit dieser einfachen Simulation können Sie eine Menge erreichen. Der nächste Schritt wäre die Verallgemeinerung Ihres Codes, so dass Sie eine beliebige Anzahl von Widgets und Montageschritten haben können. Das ist nicht ganz so einfach. Es gibt ein ganzes Gebiet der angewandten Mathematik namens Operations Research die sich mit dieser Art von Simulation und Analyse befasst.

1voto

Grembo Punkte 1207

Was Sie beschreiben, ist ein klassisches Problem, das durch diskrete Ereignissimulation gelöst wird. Für die Modellierung dieser Art von Problemen wurde eine Vielzahl von Simulationssprachen entwickelt, die sowohl für allgemeine als auch für spezielle Zwecke geeignet sind. Ich würde zwar nicht empfehlen, für ein "echtes" Problem etwas von Grund auf neu zu programmieren, aber es kann eine gute Übung sein, Ihren eigenen Code für ein kleines Warteschlangenproblem zu schreiben, damit Sie die Ereignisplanung, die Erzeugung von Zufallszahlen, die Verfolgung von Kalendern usw. verstehen können. Sobald Sie das getan haben, wird eine Allzweck-Simulationssprache all diese Dinge für Sie erledigen, so dass Sie sich auf das große Ganze konzentrieren können.

Eine gute Referenz ist Gesetz & Kelton . ARENA ist ein Standardpaket. Es ist weit verbreitet und ist, IMHO, sehr umfassend für diese Art von Simulationen. Das ARENA-Buch ist auch ein gutes Buch über Simulation und wird mit der Software geliefert, die auf kleine Probleme angewendet werden kann. Um größere Probleme zu modellieren, müssen Sie eine Lizenz erwerben. Sie sollten in der Lage sein, eine Testversion von ARENA herunterzuladen aquí .

0voto

aaaa bbbb Punkte 2893

Automod ist der richtige Weg. http://www.appliedmaterials.com/products/automod_2.html

Es gibt viel zu lernen, und es wird nicht billig sein.

Automod von ASI ist seit etwa 30 Jahren im Bereich der Fabriksimulation tätig. Das Unternehmen gehört jetzt zu Applied Materials. Die großen Unternehmen, die mit der Materialhandhabung in einem Lager arbeiten, verwenden Automod, weil es sich als führend erwiesen hat.

0voto

Jim C Punkte 5009

Es ist vielleicht mehr als das, was Sie suchen, aber visuelle Komponenten ist ein gutes industrielles Simulationswerkzeug.

Ich möchte klarstellen, dass ich weder für sie arbeite noch dass das Unternehmen, für das ich arbeite, sie derzeit nutzt, aber wir haben sie uns angesehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X