2017-11-24 1 views
0

In einem hybriden DES-ABM-Modell, das ich in Anylogic 8 gebaut habe, habe ich Probleme mit dem Senden von Nachrichten. In Main gibt es mehrere Kliniken, und in diesen Kliniken wird die Prozessmodellierungsbibliothek verwendet, um innerhalb klinischer Prozesse zu modellieren. Sobald der Patientenagent einen Block erreicht hat, wird ein Arzt-Agent beschlagnahmt.Anylogic - Nachricht senden von Agent zu Agent in DES-ABM-Modell

Nun, was ich versuche zu tun, ist, sobald dieser Arzt-Agent ergriffen wird, muss eine Nachricht von diesem "Greifen" Block zu dem Arzt-Agent gesendet werden, der in der Klinik lebt.

Ich habe das Anylogic Hilfe Handbuch konsultiert, und ich habe diesen Code-Schnipsel an dem 'ergreifen' Block, in dem 'On Eintrag' Feld eingefügt: -

agent.send("Start", Clinic.doctor) 

send("Start", Clinic.doctor) 

Error: Description: Cannot make a static reference to the non-static field

agent.send("Start", doctor) 

send("Start", doctor) 

Error: Description: The method send(Object, Agent) in the type Agent is not applicable for the arguments (String, Clinic._doctor_Population).

Wie würde ich das tun?

Antwort

0

Sie müssen die Nachricht im Codeabschnitt "onSeize" des Erfassungsblocks senden. Dort Typ:

send("Start", unit) 

Das Stichwort „Einheit“ wird es an den Arzt senden, die ergriffen worden ist. Lesen Sie mehr über diese Keywords und wo sie hier finden:

http://www.benjamin-schumann.com/blog/2016/2/4/the-magic-lightbulb-and-how-it-can-help-your-anylogic-modelling

+0

Vielen Dank, und sehr hilfreich Blogpost! Das scheint zu funktionieren, obwohl in den Staatsscheinen der Ärzte nichts passiert; sie scheinen nicht in andere Staaten überzugehen. Mit einem traceln() auf dem Statechart des Arztes scheint es jedoch, dass sie tatsächlich die Nachricht erhalten. Hast du irgendwelche Vorschläge? – UTq

+0

Nun, Sie brauchen einen Übergang, der tatsächlich auf die "Start" -Meldung reagiert * und * der Arzt muss in einem Zustand sein, in dem dieser Übergang verfügbar ist. Glaubst du, dass beide wahr sind? –

+0

Hi @StuartRossiter, ich glaube, dass diese Dinge wahr sind. Der Arztagent hat ein Zustandsdiagramm, in das er wechseln sollte, wenn er "Start" erhält. Als Hintergrundinfo: Ich versuche, die in diesem Artikel verwendete Modellstruktur neu zu erstellen: http://ieomsociety.org/ieom_2016/pdfs/554.pdf – UTq