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.