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?
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
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? –
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