2016-06-21 33 views
1

移動エージェントが移動ノードを移動しようとしています。これは私のセットアップです。エージェントが移動ノードを移動する

  1. エージェント(人/人)は、ランダムにスペースに配置されています。
  2. ノード(ちょうど別の種類のエージェント)もスペースにランダムに配置されています。
  3. それぞれの人はターゲットノードを定義します。人はのナビゲーションノードを通してそのターゲットノードに移動する必要があります。

これは私が何をしたいです:

  1. 各エージェントは、ターゲット・ノードに向かって回転します。
  2. 各エージェントには、エージェントが移動先を見つけられなかった場合に増加するビジョン範囲があります。

  • 各エージェントは、最も近いナビゲーションノードに移動し、再度検索処理を開始します。

  • エージェントは、最も近いナビゲーションノードがターゲットノードである場合に停止します。その後、エージェントが到着しました!

  • 私の質問は:

    double r = Math.atan2(targetNode.getY() - this.getY(), 
         targetNode.getX() - this.getX()); 
    
    this.setRotation(r); 
    
  • 私はAnylogicにおけるビジョン範囲をプログラムする方法を確認していない:

    1. は、私が使用してエージェントの回転を設定します。何か案は?

  • 答えて

    1

    私は博士時代に同様のことをしました。

    多角形ノードオブジェクトmyViewAreaを、ビュー領域の初期サイズと形状でエージェントに追加します。

    次に、エージェントがmyViewArea.contains()メソッドを使用してナビノードを「見ている」かどうかをチェックし、そのモデル内のすべてのナビノードに対してチェックすることができます。

    彼がいずれも見つからない場合は、

    は、この情報がお役に立てば幸いです(そのためのJava APIを参照してください)プログラムで、あなたのmyViewAreaを変更することができます。

    +0

    例:http://agiltools.com/blogsp/2016/06/ – sdaza

    +0

    何らかの理由でcontains()メソッドが機能しません。私のエージェントは常に回転しているので、おそらく相対座標を定義するときに間違ったことをしています。 – sdaza

    +0

    私はあなたのビジョン範囲のソリューションを実装しようとしましたが、ナビゲーションノードの取得にはまだ問題があります。このコードを使用してポリライン内のノードを取得しています(agentVision)。ここでは例を示します:http://dl.getdropbox.com/u/18116710/ExampleVisionPolyLine.alp – sdaza

    関連する問題