AnyLogic AGV (FTS) Simulation

In diesem Artikel stelle ich ein einfaches AGV -Simulationsmodell vor . Es ist als Beispiel dafür gedacht, wie Teile-Routings in einer Fabrik simuliert werden können. Ich habe die Simulation in AnyLogic implementiert.

Ich habe bereits einige andere grundlegende Einführungen in AnyLogic bereitgestellt. Genauer gesagt habe ich zB zuvor in einer Reihe von YT-Videos einige grundlegende Förderermodelle vorgestellt. Hier ist eine Liste einiger grundlegender Einführungen in die AnyLogic-Simulationsmodellierung:

Einen konzeptionellen Aufbau der AGV-Simulation habe ich in der Abbildung weiter unten im nächsten Absatz dargestellt.

Verwendung von AnyLogic für die AGV-Simulation mit Routings

In früheren Beiträgen in diesem Blog habe ich bereits verschiedene Softwareoptionen für diskrete Ereignisse vorgestellt. Ich liste unten einige Beispiele auf. Klar bin ich ein Fan von freien und offenen Simulationstools und Frameworks (siehe zB „simmer“). AnyLogic ist jedoch ein kommerzielles Tool.

In verschiedenen Simulationsprojekten habe ich mit verschiedenen ereignisdiskreten Simulationswerkzeugen gearbeitet , nicht nur mit den oben aufgeführten. Für AGV-Simulationen, die in Materialflussstudien eingebettet sind, finde ich AnyLogic und Simio jedoch zu den besten Simulationstools für diskrete Ereignisse . Ich habe auch die Möglichkeiten von FlexSim und Plant Simulation in Bezug auf die AGV-Simulation gesehen, und Sie könnten diese ebenfalls nutzen. In Bezug auf die Anpassungsfähigkeit bevorzuge ich jedoch AnyLogic. Hauptsächlich aufgrund seiner Struktur, Dokumentation und Transparenz – und der Tatsache, dass AnyLogic in JAVA codiert ist.

Simulationsstudien erfordern ein Vorgehensmodell

Ein häufiger Fehler, den ich oft beobachte, wenn Supply-Chain-Analysten mit der Simulation beginnen, ist, dass sie direkt zur Modellierung übergehen. Ein gutes Simulationsmodell kann jedoch erst entwickelt werden, wenn das Ziel der Simulationsstudie klar definiert ist. Darüber hinaus ist dies in der Regel nur möglich, wenn das zugrunde liegende System oder Problem von allen Beteiligten vollständig verstanden wurde. Ich empfehle die Verwendung eines Vorgehensmodells für jede Simulationsstudie. Die folgende Abbildung veranschaulicht mein Vorgehensmodell.

Ereignisdiskretes Simulationsverfahrensmodell für AGV-Simulation.

Tatsächlich wurde das von mir angewandte Vorgehensmodell in früheren Beiträgen auf diesem Blog veröffentlicht. Hier sind zwei relevante verwandte Artikel:

Daher ist es in den frühen Phasen der Simulationsstudie wichtig, die Situation vollständig zu verstehen. Geeignete Begriffe für diesen Schritt sind zB Situationsanalyse, Lückenanalyse und Problemdefinition. Die Datenerhebung ist Teil dieses Schrittes. Anschließend definiere ich meist explizit, was Bestandteil des zu entwickelnden Simulationsmodells ist und was nicht . Zum Beispiel habe ich einmal einen Trambetrieb und Tramfahrpläne in Zürich (Schweiz) simuliert. Ich habe bei diesem Projekt entschieden, dass der Personenfluss, der die Straßenbahnschienen blockiert, nicht im Detail umgesetzt wird. Stattdessen habe ich die Häufigkeit und Dauer der Schienenblockade mit einer zufälligen Verteilungskurve beschrieben.

Schließlich geht die Simulationsstudie mit der Entwicklung eines Layouts und eines konzeptionellen Modells weiter. Die konzeptionelle Modellierung umfasst z. B. Flussdiagramme sowie die Definition von Zustandsübergangsdiagrammen für relevante Geräte. Dies erleichtert die tatsächliche Implementierung der Simulationsmodellierung erheblich und gewährleistet einen gut strukturierten Code.

Ich skizzierte ein einfaches Layout der AGV-Simulation

Abhängig von dem Projekt, an dem ich arbeite, zeichne ich normalerweise selbst ein grobes Layout. Alternativ verlasse ich mich auf eine AutoCAD-Zeichnung (oder ähnliches), die mir vom Engineering-Team des Kunden geliefert wird.

Einfacher Layoutentwurf des AGV-Simulationsmodells.

Obige Abbildung zeigt einen zentralen Annahmebereich, der empfangenes Eingangsmaterial über Rollenbahnen weiterleitet. Kräne oder Roboter platzieren Teile auf AGVs am Ende des Förderers.

Die AGVs erleichtern den Materialfluss vom ersten Empfang an

Die AGVs, die den Kern dieser AGV-Simulation in AnyLogic darstellen, leiten Teile zu den Arbeitsbereichen. Dieser Routing-Prozess kann eine Entscheidungsfindung erfordern, möglicherweise auf einer sehr komplexen Ebene.

Beispielsweise möchte ich der Aufgabe das nächste AGV oder das AGV mit der geringsten Auslastung zuweisen. Ich könnte auch einer Situation gegenüberstehen, in der ich die tatsächliche Routing-Entscheidung modellieren möchte. Das heißt, ein AGV nimmt die Route A und ein anderes AGV die Route B durch das AGV-Spurnetz.

Implementierung der AGV-Simulation in AnyLogic

Ich habe diese AGV-Simulation in AnyLogic implementiert. Ein Screenshot des Modells ist unten zu sehen.

AGV-Simulationsmodell in AnyLogic.

Im Wesentlichen besteht das Modell aus einer Quelle, die Teileankünfte generiert. Diese Teileankünfte werden an die Fördertechnik weitergeleitet. Sobald Teile an der definierten Endposition des Förderers angekommen sind, wird ein Transportauftrag ausgelöst. Tatsächlich ist dieser Task-Dispatch-Prozess ein standardmäßiger AnyLogic-Prozess. Ich hätte jedoch eine benutzerdefinierte Task-Dispatch-Logik mit JAVA implementieren können.

Sobald eines der AGVs dem Transport zugewiesen wurde, entscheidet das Modell unter Verwendung der standardmäßigen AnyLogic-Logik, wie oben beschrieben, in welchen Arbeitsbereich das Teil transportiert werden soll. Dazu habe ich zu Demonstrationszwecken eine benutzerdefinierte, aber einfache Entscheidungslogik implementiert. Ich beschreibe diese angepasste Logik im folgenden Kapitel weiter unten.

Da es sich um ein einfaches Beispiel handelt, habe ich die Arbeitsbereiche nicht im Detail implementiert. Außerdem habe ich auch den Pick-and-Place-Betrieb eines Roboters oder Krans am Bandauslauf nicht im Detail umgesetzt. Nach meinem Vorgehensmodell ist das völlig in Ordnung. Ich „darf“ diese Prozessschritte auf einer höheren Abstraktionsebene durchführen, solange das Studienziel und die Problemstellung nicht darauf hindeuten, dass ich diese Prozessschritte im Detail ausführen muss. Der Pick-and-Place-Vorgang kann zB zeitverzögert modelliert werden. Diese Zeitverzögerung kann zufällig verteilt werden, falls dies für die gewählte Flurfördereinrichtung geeignet ist.

Tatsächlich besteht eine weitere Abstraktion darin, dass ich die Arbeitsbereiche nicht visualisiert und kein benutzerdefiniertes Objekt implementiert habe, um sie darzustellen. Stattdessen habe ich einfach ein Standardknotenobjekt von AnyLogic verwendet. Der aktuell aktive Zielknoten, dh der aktuell relevante Arbeitsbereich, wird durch die Stationsvariable referenziert . Diese Variable wird durch einen benutzerdefinierten Routing-Algorithmus aktualisiert. Ich werde dies weiter unten in diesem Artikel erklären.

Verweise auf AGV-Simulationsarbeitsbereiche nach Station in Form von AnyLogic-Knoten

Sobald Teile im Arbeitsbereich angekommen sind, verweilt das Teil im Arbeitsbereich für eine festgelegte Vorgabezeit. Schließlich gelangt das Teil in die Spüle. Die Senke löscht das Teil und entfernt es dadurch aus dem Modell.

Implementieren von benutzerdefinierten Routing-Entscheidungen mit JAVA

Bei der Implementierung von AGV-Simulationen möchte ich unter anderem Einfluss auf die Routing-Entscheidungen nehmen. Das liegt ganz klar daran, dass Routings jeden Materialfluss erleichtern. Wenn ich in diesem Fall davon ausgehe, dass jedes vom Wareneingang kommende Teil dasselbe Eingangsmaterial darstellt, z. B. Rohteile zum Fräsen oder für andere Verarbeitungen, kann ich nicht einfach nach Materialart routen. Vielleicht möchte ich stattdessen basierend auf der Auslastung des Arbeitsplatzes oder anderen Kriterien weiterleiten. Der Punkt ist, dass die Routing-Entscheidung einfach anpassbar sein muss. Ich habe diesen Blogbeitrag geschrieben, um ein einfaches Beispiel dafür zu geben, wie man das in AnyLogic angehen könnte.

In diesem einfachen AGV -Simulationsmodell ermögliche ich benutzerdefiniertes Routing mit 4 Variablen und 1 Funktion:

  • output_01 bis output_03 messen die Gesamtzahl der an den jeweiligen Arbeitsbereich gelieferten Teile
  • Station referenziert den Zielarbeitsbereich des Teils (AnyLogic-Knotenobjekt)
  • set_route ist eine Funktion, die eine kundenspezifische Routing-Entscheidung erleichtert

Der folgende Screenshot zeigt den Inhalt der Funktion set_route .

Benutzerdefinierte Routing-Logik, die in AnyLogic in die AGV-Simulation implementiert wurde

Die Funktion set_route implementiert einfach zyklisches Routing. Das heißt, der erste Teil geht an station_a , der zweite Teil geht an station_b und so weiter. Bei Bedarf könnte ich jedoch zusätzliche Funktionen und Variablen sowie andere Arten der Entscheidungsfindung spezifizieren. Letztendlich hängt die umzusetzende Logik von der konkreten Situation ab.

Die set_route- Funktion wird immer dann aufgerufen, wenn ein Agent in den moveTo_a- Block in der unteren Kette von Logikblöcken eintritt.

Logikblöcke zum Aufrufen von benutzerdefiniertem Routing in der AGV-Simulation

Diese Kette von Logikblöcken implementiert den folgenden Ablauf:

  • src erzeugt Teile mit zufällig verteilten Intervallzeiten
  • Fördern befördert das Teil von der Start- zur Endposition des Förderband-Markups
  • get_transport fordert ein AGV auf, das Teil vom Fördererausgang abzuholen
  • moveTo_a ruft set_route auf und transportiert einen Teil zu den Knotenreferenzen in station
  • delay bewirkt, dass das Teil einige Zeit im Knoten (der den Arbeitsbereich darstellt) verweilt
  • sink entfernt das Teil aus dem Modell

Ich kann den Funktionsaufruf im OnEnter-Abschnitt des moveTo_a-Blocks angeben. Siehe Screenshot unten.

Move-Block-Calls-Routing-Logik

Fazit und zugehörige Inhalte

In diesem einfachen AGV-Simulationsbeispiel habe ich gezeigt, wie Sie Teile-Routings in AnyLogic anpassen können. Die in diesem Beispiel verwendeten Routing-Kriterien und die Routing-Logik waren sehr einfach. Ein echter Routing-Algorithmus wäre oft ausgefeilter und auf die Anforderungen der Fabrik zugeschnitten, in der er betrieben wird. Solche Routing-Algorithmen werden schnell komplex und können eine Herausforderung darstellen.

In diesem Artikel habe ich bereits eine Vielzahl von Links zu verwandten Inhalten bereitgestellt. Trotzdem möchte ich hier einige zusätzliche Artikel mit dem interessierten Leser teilen:

You May Also Like

Leave a Reply

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.