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

質問 (解決済み)

[artisocモデル] エージェントの特定の仕方について
質問者: midoriさん , 質問日時: 2019/12/09 18:59
KK-MASを使用した論文について学習している者です。エージェントに初期財産を与え、シミュレーションの中で所有財産が変化していくようなモデルを扱っています。そのなかで、財産がいくつ以上のエージェントを特定して、その集合を作り、エージェントの数を数えたいと考えています。
KK-MASでは以下のように表現されていました。
World.HITO = _CountCollection(_CollectAgent(_specifyagent(World.二次元空間.赤アリ.財産>400)))

これは、財産400より多く持っている赤アリを特定して集合を作り、そのエージェント数を数えるコードです。これをartisocで行おうとしたときに、KK-MASでの_specifyagentはSpecifyAgtTypeとなり、その後に(Universe.二次元空間.赤アリ.財産>400)とすると、SpecifyAgtTypeの引数がAgt型ではなく整数型になっていしまいます。引数の型が違うため、artisocではエラーとなってしまいます。

そこで、財産いくつ以上のエージェントをエージェントを集めて集合にし、数を数えるためにはどうしたらよいか、教えていただきたいです。
どうかよろしくお願いします。



▼解決した回答


KK-MASのことはわからないので、あくまでも以下のご質問に回答する形とします。
>財産いくつ以上のエージェントをエージェントを集めて集合にし、数を数えるためにはどうしたらよいか、教えていただきたいです。

すべてのエージェントが入っているエージェント集合型変数から、1エージェントずつ取り出し、財産を判定し、任意の値以上の場合に、別のエージェント集合型変数に格納します。別のエージェント集合型変数の中身を数えることとします。
Dim Allant As AgtSet
Dim Redant As AgtSet
MakeAgtSet(Allant, Universe.空間.ant)
For each ari in Allant
If ari.財産 > 400 Then
AddAgt(Redant, ari)
End if
Next ari
Println(CountAgtSet(Redant))

回答者: igaguri さん , 回答日時: 2019/12/11 18:09

▼ 全ての回答


KK-MASのことはわからないので、あくまでも以下のご質問に回答する形とします。
>財産いくつ以上のエージェントをエージェントを集めて集合にし、数を数えるためにはどうしたらよいか、教えていただきたいです。

すべてのエージェントが入っているエージェント集合型変数から、1エージェントずつ取り出し、財産を判定し、任意の値以上の場合に、別のエージェント集合型変数に格納します。別のエージェント集合型変数の中身を数えることとします。
Dim Allant As AgtSet
Dim Redant As AgtSet
MakeAgtSet(Allant, Universe.空間.ant)
For each ari in Allant
If ari.財産 > 400 Then
AddAgt(Redant, ari)
End if
Next ari
Println(CountAgtSet(Redant))

回答者: igaguri さん , 回答日時: 2019/12/11 18:09



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