窓口のエージェントに対して、人間のエージェントが、自分自身の目の前に何か障害物(窓口や、ほかの人間のエージェントなど)があるときはその場で止まり、何もなければ一直線で窓口まで進むモデルを作りたいです。空間を移動するエージェントで表現したいのですが、どのように作りますか?具体的なコードを提示して、詳細な説明をしてください。・窓口は一つ・エージェントの生成場所は一か所のみ・エージェントが窓口に接触したら、一定時間後に消える以上の条件を含めてお願いします。
①:待ち時間が一定時間以上超えた場合
②:隣のレーンの同じX座標のセルをチェックして、もし空いていれば動く
ないしは、
②':隣のレーンの同じX座標のセルから数マス進んだ先をチェックして誰もいなかったら進む
ですね。
①のルールは再現するとしたらどうしますか?
自分自身のエージェントが同じ場所に滞留し続けている時間を待ち時間と呼ぶのか、
窓口でサービスを受けているエージェントのサービス時間を待ち時間と呼ぶのかで変わってきそうです。
②(ないしは②')のルールは再現するとしたらどうしますか?
どちらにせよ、自分とX座標が同じかそれより先の座標に誰もいないことの確認を、
make_agtset_around_own()などのエージェントを判別する関数で素直に行おうとすると、他のエージェントが干渉してきそうで難しそうです。
あと、隣のレーンに動く際に、そのレーンに新たにエージェントが並びすぎて、自分が並ぶ隙間がなくなった場合が難しそうです。
ちょうどよいサンプルモデルがなかったので作成しました。
まずはソースコードを読んでみて、参考になるか考えてみてください。