シミュレーションでは2種類のエージェントを使用する予定です。
1つのエージェントタイプについて、そのエージェントタイプの「起動時」アクションで呼び出されるsetXYZ()メソッドによって明示的に位置を設定することを使用する予定です。
2番目のエージェントタイプの要塞では、次の説明に従って、事前定義されたレイアウトパターン(ランダムまたはリング)の1つを使用する予定です。
問題は、メインエージェントタイプの「起動時」アクションに配置された次のコードが、2つのエージェントタイプを区別しないことです(たとえば、すべてのエージェントを円で囲みます)。
setLayoutType(Agent.LAYOUT_RING);
applyLayout();
(私がすでに試したように)どういうわけか上記のコードを変更しますか、それとも別の方法がありますか?
レイアウトタイプは、スペースに存在するすべてのエージェントで同じである必要があると思います...それでも...これを行うことができます:
//first you apply the ring layout to everything
setLayoutType(Agent.LAYOUT_RING);
applyLayout();
//then you define the type of agent you don't want to follow the ring layout separately
for(int i=0;i<100;i++){//assuming you will create 100 agents initially
MyAgent p=add_myAgents();//you need to create your agents after the ring layout is applied though..
p.setXY(uniform(0,500), uniform(0,500));//assuming your agents are in a 500x500 square in main
}
もっと良い方法があるかどうかはわかりません...しかし、これは私が可能だと知っていることです
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加