Dieser Blogbeitrag beschreibt eine einfache Kranhofsimulation in AnyLogic . Ich habe dieses Modell zu Demonstrationszwecken in AnyLogic entwickelt. Ich habe bereits eine Reihe von Blogbeiträgen zur Simulationsmodellierung in AnyLogic veröffentlicht. Unten ist eine Liste von einigen von ihnen.
Dieser Beitrag betrachtet einen Lagerplatz für die Lagerung von verarbeiteten Teilen. Ich werde die Füllrate des Puffers selbst nicht berücksichtigen. Ich werde auch keine Einzelteilverfolgung modellieren. Das heißt, die Lagerkapazität ist eine Blackbox, und der Schwerpunkt liegt auf der Bewertung der Durchsatzleistung des Hofkrans. Dies setzt eine vorgegebene Materialflussmatrix voraus, die Zu- und Abfuhrraten zum und vom Puffer beschreibt.
Überblick über das Kranhof-Simulationsmodell
Der folgende Screenshot zeigt die Hauptkomponenten des AnyLogic Kranhof- Simulationsmodells . Der Lagerplatz hat zwei Einlaufbänder und drei Auslaufbänder. Es wird von einem einzigen horizontalen Hofkran bedient.
Es ist ein einfaches Modell, das in 1 Stunde aufgebaut werden kann. Wie in der Einleitung dieses Artikels erwähnt, ist die individuelle Teileverfolgung nicht Bestandteil des Modells. Das heißt, ein Teil wird in den Puffer eingelagert und dort vernichtet. Dies ist der Produktions -Einlagerungsprozess im obigen Logikblock-Abschnitt. Auslagerungen vom Hof werden als separater Prozess unter Verwendung desselben Hofkrans durchgeführt. Dies ist der Abruf-Versand -Prozess im obigen Logikblock-Abschnitt. Die Behausung von Teilen im Hof ist nicht modelliert. Füllraten werden nicht berücksichtigt. Der Fokus liegt auf der Beurteilung der maximal möglichen Umschlagleistung des Hofkrans.
Implementierung von Lagerplatz- und Bandzuweisungen
In diesem Kranhof- Simulationsmodell müssen zwei Allokationsentscheidungen getroffen werden:
- Für ein Teil, das auf einem der Einlaufförderer ankommt, muss entschieden werden, wo auf dem Hof das Teil gelagert werden soll
- Für ein Teil, das einem nachgelagerten Prozess zugeführt, also ausgelagert werden muss, muss entschieden werden, auf welchem Förderband das Teil abgelegt werden soll
Teile einem Lagerort zur Einlagerung zuordnen
Beginnend mit dem Produktions-Einlagerungsprozess : Dies wird in der folgenden Sequenz von Logikblöcken implementiert.
Ein Teil wird von der Quelle (Agent der benutzerdefinierten Klasse part ) erstellt. Dieses neue Teil wird auf einem der Einlaufförderer unter Verwendung der Logikblöcke „fördern_a“ und „fördern_b “ angeordnet . Die Wahrscheinlichkeit jedes Einlaufförderers beträgt 50 %.
Als nächstes wird eine kleine benutzerdefinierte Funktion aufgerufen ( Zuweisung_01 / Zuweisung_02 ). Diese Funktion entscheidet einfach, in welchem Knoten (1 bis 7), genannt „Schacht“, das Teil abgelegt werden soll. Sie tut dies, indem sie die Variablen targetbay_01 / targetbay_02 setzt . AnyLogic übernimmt dann den Kran und führt den Transport zu einem zufälligen Attraktor innerhalb des angegebenen Knotens durch.
Teile aus dem Lager holen und einem Förderband zuweisen
Für die Modellierung der Teileentnahme aus dem Lagerplatz müssen ein Quellfach (Quellknoten), aus dem ein Teil entnommen werden soll, und ein Zielförderer , auf dem das Teil abgelegt werden soll, angegeben werden. Um dies zu vereinfachen, habe ich diese beiden Variablen in die Agentenklasse des benutzerdefinierten Teils eingefügt.
sourcebay und targetconveyor sind ebenfalls Variablen im Hauptmodell selbst. Sie dienen jedoch lediglich als temporärer Speicher. Beim Eintreffen eines neuen Agenten in der Abrufquelle wird die Funktion selection() aufgerufen.
Die Auswahlfunktion setzt die temporären Quell- und Zielförderer- Platzhalter. Die Werte dieser Variablen werden dann in die . Sourcebay und . targetconveyor- Attribute des neu angekommenen Teileagenten (Objektinstanz). Der folgende Screenshot zeigt die Auswahlfunktion .
Wie Sie dem obigen Screenshot des Auswahlfunktionscodes entnehmen können, sind die Abruforte völlig zufällig. Das Zielband ist dann immer das Band, das dem Kran am nächsten ist.
Ausführen der Kranhofsimulation in AnyLogic
AnyLogic visualisiert sein Markup in 2D und 3D. Der folgende Screenshot zeigt einen 2D-Schnappschuss des Simulationsmodells während der Laufzeit.
Nach einer Stunde Simulation wurden 9 Teile versandt (abgeholt und am Ende eines der Auslaufbänder geliefert) und 9 Teile eingelagert. Unten ist ein Screenshot relevanter Blöcke nach einer Stunde Simulation.
Wenn ich Einlagerungen gegenüber Abrufen priorisieren oder eine andere Logik im Zusammenhang mit der Aufgabenpriorisierung implementieren möchte, könnte ich dies auch mit JAVA-Funktionen tun.
Schlussbemerkungen und zugehörige Inhalte
Ich habe ein einfaches Kranhof- Simulationsmodell ohne Einzelteilverfolgung vorgestellt. Ein solches Modell eignet sich zB zur Beurteilung des Gerätedurchsatzes. Dabei lag der Fokus auf den Umschlagleistungen des Horizontal-Hofkrans.
Wirtschaftsingenieur mit Interesse an Optimierung, Simulation und mathematischer Modellierung in R, SQL, VBA und Python
Leave a Reply