2016-06-21 30 views
1

Ich versuche Agenten durch Navigationsknoten bewegen zu bewegen. Das ist mein Setup:Agenten bewegen sich durch Navigationsknoten

  1. Agenten (sagen wir Menschen/Person) sind nach dem Zufallsprinzip in den Weltraum gelegen.
  2. Knoten (nur eine andere Art von Agenten) sind auch zufällig im Raum angeordnet.
  3. Jede Person definiert einen Zielknoten. Eine Person sollte sich über Navigationsknoten zu diesem Zielknoten bewegen.

Dies ist, was ich tun möchte:

  1. Jeder Agent zu einem Zielknoten dreht.
  2. Jeder Agent hat einen Sichtbereich, der zunimmt, wenn der Agent keinen Navigationsknoten findet, an dem er sich bewegen kann.

  1. Jeder Agent bewegt sich zum nächsten Navigationsknoten und startet den Suchvorgang erneut.

  2. Der Agent stoppt, wenn der nächstgelegene Navigationsknoten der Zielknoten ist. Dann ist der Agent angekommen!

Meine Fragen:

  1. stelle ich die Rotation eines Mittels mit:

    double r = Math.atan2(targetNode.getY() - this.getY(), 
         targetNode.getX() - this.getX()); 
    
    this.setRotation(r); 
    
  2. Ich bin nicht sicher, wie die Vision Bereich in Anylogic zu programmieren. Irgendwelche Ideen?

Antwort

1

Ich habe eine ähnliche Sache während meiner Doktorarbeit gemacht.

Fügen Sie Ihrem Agenten ein polygonales Knotenobjekt myViewArea mit der ursprünglichen Größe und Form des Ansichtsbereichs hinzu.

Anschließend können Sie den Agenten prüfen lassen, ob er einen Navi-Knoten "sieht", indem er die myViewArea.contains()-Methode verwendet und dies für alle Navi-Knoten im Modell überprüft.

Wenn er nicht findet, können Sie Ihr myViewArea programmatisch ändern (siehe Java-API für die)

Hoffnung, das hilft.

+0

Hier ein Beispiel: http://agiltools.com/blogsp/2016/06/ – sdaza

+0

aus irgendeinem Grund, die Methode enthält() funktioniert nicht. Meine Agenten rotieren ständig, wahrscheinlich mache ich etwas falsch, wenn ich die relativen Koordinaten definiere. – sdaza

+0

Ich habe versucht, Ihre Vision-Range-Lösung zu implementieren, aber ich habe immer noch Probleme mit den Navigationsknoten. Ich verwende diesen Code, um Knoten innerhalb einer Polylinie (agentVision) zu erhalten: Hier ein Beispiel: http://dl.getdropbox.com/u/18116710/ExampleVisionPolyLine.alp – sdaza