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

質問  (回答受付中)

[artisocモデル] sortagtsetと配列について
質問者: kiba0827さん , 質問日時: 2018/07/17 10:38
sortagtsetを用いて配列を持つ変数をキーとしてソートしようとしているのですが,結果をコンソール画面に表示してもソートができていないようです.

sortagtsetはそもそも配列を持つ変数には用いることができないのでしょうか.
改善策があればご教授お願いします.



▼ 全ての回答


どうやら対応していないようです。

たとえば、下記のように変数を定義します。
Car ...エージェント
price ...Carエージェントが持つ実数型の1次元配列変数
parking ...Carエージェントを格納するエージェント集合型変数

このとき、priceは1次元の配列なので、値をとるためには、
price(0)
とか、
price(1)
のような書き方をする必要があります。

ですから、
SortAgtSet(parking, "price", false)
と書いても、ソートができないのは当然です。(このときエラーは出ないようですが)

一方で、
SortAgtSet(parking, "price(0)", false)
のような書き方をするとうまくいきそうな気がしますが、こうすると「ソートキーとなるエージェント変数を保持しないエージェントが存在します」というエラーが出ます。
おそらく、エージェントが"price(0)"という名前の変数を持っているかを判定しようとしてしまうためだと思います。

もしprice(0)でソートしたいのだとすれば、やや面倒ですがCarエージェントにSortKeyという配列でない変数を持たせた上で、
For each one in parking
one.SortKey = one.price(0)
Next one
SortAgtSet(parking, "SortKey", false)
などとすれば良いでしょう。

回答者: tomo さん , 回答日時: 2018/07/18 18:36



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