MAS コミュニティ
artisoc質問用掲示板(アーカイブ)
  
質問掲示板は移転しました。新掲示板はこちら

質問 (解決済み)

[artisocモデル] gethistory関数及びIDについて
質問者: satoruさん , 質問日時: 2017/10/30 11:36
空間の一端から発生した複数のエージェントが、もう一端に向かい、到着したら消失するモデルを構築しようとしています。
その際に、エージェントの過去の座標情報が欲しかったためgethistory関数を用いました。モデルを動かしてみると、大半のステップ時には正常な返値が得られましたが、時々大幅にずれた値を返すことがありました。
調べてみると、別のエージェントが消失した際に、注目しているエージェントのMy.IDが小さい値に詰められてしまい、変更後のIDを持っていたエージェントの過去の座標を返してしまったために、注目していたエージェントとは別の物の座標値が得られてしまったと思われます。
山影進(2007) 人工社会構築指南‐artisocによるマルチエージェント・シミュレーション入門‐ P268 には「DelAgt()を実行して、エージェントを消滅させても、番号がずれたりしません。」とありますが、どちらが正しいのでしょうか?
また、正しい過去座標の情報を求めるためには、どのようにgethistory関数を用いればよいのでしょうか?
ご教示お願い致します。



▼解決した回答


DelAgt()を使用すると、ステップの終了後にはエージェントIDはずれます。
人工社会構築指南では、おそらく、同一ステップ内ではずれないという意味かと思います。
どのようなコードとなっているかわかりませんので、具体的な解決方法の提示は難しいのですが、
ずれるということは、GetHistory()をUniverseのルールなど他のルールで使用しているものと推察されます。GetHistory()を当該エージェントのルールで使用すれば、正しい過去の座標位置を取得することが可能です。
しかし、どうしてもUniverseのルールなど他のルールで管理したい場合は、あらかじめ整数型のエージェント変数を追加し、ユニークなIDを振ると、この値は固定のため、削除などでずれることはありません。

回答者: igaguri さん , 回答日時: 2017/10/30 12:05

▼ 全ての回答


DelAgt()を使用すると、ステップの終了後にはエージェントIDはずれます。
人工社会構築指南では、おそらく、同一ステップ内ではずれないという意味かと思います。
どのようなコードとなっているかわかりませんので、具体的な解決方法の提示は難しいのですが、
ずれるということは、GetHistory()をUniverseのルールなど他のルールで使用しているものと推察されます。GetHistory()を当該エージェントのルールで使用すれば、正しい過去の座標位置を取得することが可能です。
しかし、どうしてもUniverseのルールなど他のルールで管理したい場合は、あらかじめ整数型のエージェント変数を追加し、ユニークなIDを振ると、この値は固定のため、削除などでずれることはありません。

回答者: igaguri さん , 回答日時: 2017/10/30 12:05



Copyright © KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
( 会社情報 情報セキュリティ・個人情報について )