次に、
<module name=" strategy"> (中略) </module>
では、「エージェントが、次のiterationで、どのように行動計画(plan)を変更するか」を定義しています。
つまり、MATSimの「学習ルール」です。
この設定では、エージェントは、
を行います。かなり“人間っぽい”設定です。
1. maxAgentPlanMemorySize
<param name="maxAgentPlanMemorySize" value="5" />
これは、「過去のplanを最大5個記憶する」という意味です。
例えば、
などを保持できます。
MATSimのエージェントは、「昔の成功体験」を記憶しています。
2. BestScore (weight=0.8)
<param name="strategyName" value="BestScore"/> <param name="weight" value="0.8"/>
これは、「過去のplanの中で、最もscoreが高かったものを使う」戦略です。
しかもweight=0.8とは、80%の確率で“無難な行動”を選ぶ、ということになります。
例えば、
| plan | 内容 | score |
|---|---|---|
| A | 8:00出発 | -120 |
| B | 7:45出発 | -80 |
| C | 別ルート | -90 |
なら、「Bを採用」します。
つまり、「以前マシだった行動を繰り返す」という、かなり人間っぽい動きです。
3. ReRoute (weight=0.1)
<param name="strategyName" value="ReRoute"/> <param name="weight" value="0.1"/>
これは、「経路だけ変える」戦略です。
つまり、
です。
例えば、
みたいなことをやる。ただし10%の確率でやります。つまり、「たまに冒険する」程度です。
4. TimeAllocationMutator (weight=0.1)
<param name="strategyName" value="TimeAllocationMutator"/>
これは、「活動時間や出発時刻を少し変更する」戦略です。
例えば、
などを試す。
つまり、「生活時間を少しずらす」です。
これは非常に重要です。なぜなら、MATSimは、「交通だけ」ではなく、「生活スケジュール」そのものを最適化対象にしているからです。
5. この3つを合わせると
エージェントは、
ことになります。
6. これは何を意味しているのか
これ、かなり人間っぽいです。
人間って、
つまりMATSimは、「超知能AI」を作っているわけではなく、むしろ、「昨日より少しマシを探す、保守的な人間」を作っています。
7. 重要なポイント
この設定では、
です。
つまり、「完全最適化」ではなく、「少しずつ試す」構造になっています。
これは、
にも少し似ていますが、MATSimはもっと泥臭いのです。各エージェントが、「まあ、昨日よりマシならいいか」を、永遠に繰り返しているだけです。
Copyright © ITmedia, Inc. All Rights Reserved.
記事ランキング