手痛い停滞はよくあることです
(まだまだ続きます)こんにちわ。こんばんわ。かえるのクーの助手の「井戸中 聖」(いとなか セイ)でございます。
まだジブリ新作いっておりません。今日行きたいなぁ。
やっぱり悪と戦う戦隊モノなのかなぁ。
1日目はエージェントの視覚センサーで手間取り(結局まだうまくいっていない)予定の進捗ができておりません。関係者の方々には深くお詫び申し上げます。本日挽回するために身を粉にして頑張ります。
ポジショニングでの報酬について実装完了しました!
デバッガで確認したところ思うような報酬をあたえられています。
報酬のタイミングを色でわかるようにしよう
いちいち止めて確認するのは面倒なので、報酬を受けているエージェント(プレーヤー)は報酬を受けたことがわかるように改良してみます。
色を付けたので、報酬のタイミングがわかりやすくなりました。
ブルーチームは報酬で黄色、パープルチームは報酬で緑色になるようにしてみました。
ブルーチームの攻撃に対して、パープルチームが献身的な守備をしています。それぞれ報酬を得ています。
オウンゴールしたヤツは許さん!
それにしてもオウンゴールが多すぎます。
オウンゴールに対してのペナルティをポイントロスト以上に罰報酬としてみます。
オリジナルでは、ゴールは「チーム報酬」としており、誰がゴールを決めたかは管理していません。そこで、最後にボールタッチしたエージェントを記録して、ゴール時に誰がゴールを決めたかを判定可能にします。
ボールにタッチした判定はScript/SoccerBallController.cs のOnCollisionEnter()
でわかるので、SoccerEnvController.csに対して記録します。
強化学習しました
まずはこんな感じです
音なしです。
オウンゴールは少なくなった感じもしますが、まだまだです。チームプレーには程遠いです。このあたりが出発点になりそうです。
はたして良いチームはできるでしょうか?
ちなみに各エージェントは前方向に左右60°くらいで、コートの半分強の距離までしか見えない近眼です。(もちろん後ろ側はみえません)
報酬
・ゴールを決めたAgentには1.0付与されます。(しばらく金色:オレンジ表示になります。)
・オウンゴールを決めたAgentには-10.0付与されます。(しばらく赤色表示になります)
・ゴールのあったチームには誰がきめたかにかかわらず1.0-経過時間(必ずプラス)チーム報酬が付与されます
・青チームのAgentが(微)報酬をうけると黄色になります。
・紫チームのAgentが(微)報酬をうけると緑色になります。
・オフェンスでペナルティエリア付近でボールに対しいい位置になるとAgentに報酬 0.01を毎ステップ付与されます。
・ディフェンスでペナルティエリア付近でボールに対していい位置になるとAgentに報酬0.04を毎ステップ付与されます。
・ボールにタッチすると、タッチごとにAgentに報酬0.2が付与されます。
ゲーム(試合)としてみた場合の問題点
・戦略がめばえていない。(これを報酬によりコーチングするのが遊びの目標)
・ぼ~っと眺めていても感激がすくない。(たまにとんでもないプレーがありそこは楽しい)
・サイドからドリブルでぶっちぎり、センタリングして、もう1方のエージェントが走り込みゴールを決めるくらいはやってほしい。
ダメな点のコーチング
なにより「ボール」を追いかけすぎで「団子」状態になる小学生サッカーのテイストなので、もう少しパス回しさせるような報酬にします。味方からのパスが通れば、高めの報酬を付与します。これで学習をさせると少しはよくなるでしょうか?
(学習中。。。)
学習がまったく進みません。何かわるいところがありそうです。全然ボールに近寄ってくれません。
検証用にもう1台、環境を準備します。。。
あ、パラメータ調整したら引き継げなくなった。
このまま明日になりそうです。