2016-05-05 9 views
0

Ich versuche zu emulieren, was QUEST tut, wenn ein Puffer für einen bestimmten Teil abgefragt wird. Dort, wenn sich das Teil nicht im Puffer befindet, wird die Anforderung anhängig gelassen und wenn ein Teil in den Puffer gelangt, wird es an die Maschine freigegeben, die es anfordert. Ich habe dieses Verhalten auch in SimPy gesehen, das eine weitere DES-Engine ist.Anfrage Entity von Anyogic Process Block und warten, bis es verfügbar ist, wenn es derzeit keine

Ich kann nicht scheinen, eine einfache Möglichkeit zu finden, dies in AL zu tun. Der Warteschlangenblock hat die folgenden Methoden:

  • Release (Agent): Wird false zurück und über die Anforderung vergessen, wenn es gibt kein Mittel als derjenige
  • remove (Agent) angegeben: Wird null zurück, wenn es keine ist
  • Agent in der Warteschlange

so werden diese Methoden nicht tun, was ich will ... Es ist ein wenig komplizierter wird als die Warteschlange Agenten mit Parametern enthält, und ich möchte einen bestimmten Satz von Parametern verlangen (sagen wir mal Die Agenten haben einen Zahlenparameter, der von 1 bis 3 gehen kann und ich bin nur an Agenten in der Warteschlange interessiert, wenn dieser Parameter h ist als der Wert 2). Auch gibt es eine Reihe von Agenten dieses Mittel aus der Warteschlange gleichzeitig ziehen, und ich möchte eine Priorität gesetzt werden (sich FIFO sagen) so ein paar Dinge gibt es, die ich versucht habe, und ich habe zu nichts führen:

  1. Verwendung eines Zugriffsblocks anstelle der Warteschlange und Hinzufügen der Agenten zur eingebetteten Warteschlange im Zugriffsblock. -> Ich kann nicht die richtige Methode finden, um aus dem Puffer auf eine andere Weise als ein Pufferblock zu nutzen (also ging ich zu Option 2), aber Seize hat eine vielversprechende Anpassung der Ressourcenauswahl, die bei der Parameter-Auswahl
  2. helfen könnte
  3. Verwendung eines Zugriffsblocks und Speichern der Agenten in einem Pool als Ressourcen. Probleme bei der dynamischen Erstellung von Ressourcen, Ergreifen der entsprechenden Komponente usw.
  4. Erstellen einer Warteschlange mit Anforderungen, die null aus einer Warteschlange zurückgegeben haben. Das klingt wie ein viel des Guten, aber ich werde schauen hinein

Alle diese scheinen ein wenig komplex für eine so einfache Sache in andere Software für die Simulation zu sein, so dass ich frage mich, wenn ich etwas fehlt oder wenn jemand ist auf dieses Problem gestoßen, bevor

+1

Wie Sie erwähnt haben, hat Anylogic keine native Möglichkeit, mit dieser Art von Problemen umzugehen. Sie können die Anforderungen speichern, die in einer Population (oder Warteblockierung) nicht erfüllt wurden, und jedes Mal, wenn ein Agent in die Warteschlange eintritt, überprüfen Sie diese Anforderungen, ob der Agent die gewünschten Parameter erfüllt. Das ist im Grunde was QUEST und SimPy (automatisch, obwohl). Viele Funktionen in anderer Software sind noch in Anylogic zu implementieren, aber die objektorientierte Programmierung ermöglicht Ihnen fast alles (mit ein wenig Java-Code) – luizfvpereira

Antwort

0

Vorschlag 1: möglicherweise hilft es Ihnen, die Agenten in der Warteschlange in einer Sammlung (oder verschiedenen Sammlungen, entsprechend den Parametereinstellungen) zu speichern. Ereignisse: "Eingeben" und "Bei Verlassen"

Vorschlag 2: Kann der Wait - Block Ihnen hier helfen?