MAS コミュニティ
artisoc質問用掲示板

質問 (解決済み)

[MAS全般] 第9回MASコンペのモデルのエラーについて
質問者: kiba0827さん , 質問日時: 2017/10/13 17:42
第9回MASコンペの「マルチエージェントシミュレーションを用いたアメリカ電力市場取引戦略のQ学習モデル」について、
「Q学習.no2」
「市場規模変化後.no2」
「予備実験.no2」
の三つのモデルをダウンロードして実行をしても、どのモデルについても「配列式に対して、演算はできません」というエラーがでてしまうのですが、どこをどのように訂正すればモデルを実行することができるのでしょうか。



▼解決した回答


まず、そこかしこに
universe.市場.company.max売値(0)
などといった書き方がされています。
しかしこの書き方だと、どのcompanyエージェントの変数を参照したいのか分かりません。
修正するにはたとえば、
universe.市場.company(0).max売値(0)
などと、インデックスとしてエージェントのID指定をします。
こう書くことで、IDが0番のcompanyエージェントのmax売値変数を参照することができます。

また、変数のインデックス指定が変数の次元数と合っていない箇所が多くあります。
たとえば上記の「max売値」変数は、プロパティを見ると実は2次元です。したがって、
「max売値(0)」→「max売値(0,0)」
などと、インデックスを2つ指定する必要があります。
他にも同じように次元数が合っていない変数が多くあります。

上記の修正を行うと、動きました。

もちろん、インデックスの数値として何を入れるべきかは、モデルを読み解いて作者の意図を汲み取る必要があります。
(あるいは、変数の次元数のほうを修正すべきなのかもしれません。)

当時のMASコンペで問題がなかったのだとしたら、旧バージョンのartisocではこのような書き方でもエラーが出なかったのかもしれませんね。

回答者: tomo さん , 回答日時: 2017/11/16 08:48

▼ 全ての回答


まず、そこかしこに
universe.市場.company.max売値(0)
などといった書き方がされています。
しかしこの書き方だと、どのcompanyエージェントの変数を参照したいのか分かりません。
修正するにはたとえば、
universe.市場.company(0).max売値(0)
などと、インデックスとしてエージェントのID指定をします。
こう書くことで、IDが0番のcompanyエージェントのmax売値変数を参照することができます。

また、変数のインデックス指定が変数の次元数と合っていない箇所が多くあります。
たとえば上記の「max売値」変数は、プロパティを見ると実は2次元です。したがって、
「max売値(0)」→「max売値(0,0)」
などと、インデックスを2つ指定する必要があります。
他にも同じように次元数が合っていない変数が多くあります。

上記の修正を行うと、動きました。

もちろん、インデックスの数値として何を入れるべきかは、モデルを読み解いて作者の意図を汲み取る必要があります。
(あるいは、変数の次元数のほうを修正すべきなのかもしれません。)

当時のMASコンペで問題がなかったのだとしたら、旧バージョンのartisocではこのような書き方でもエラーが出なかったのかもしれませんね。

回答者: tomo さん , 回答日時: 2017/11/16 08:48

MASコミュニティ
掲示板TOP







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