カスタムGym環境作成(16) - 広げたマップをランダム実行

前回記事で、マップを拡張し林を追加しました。

[広くしたマップイメージ]

今回は、そのマップに対してランダムで実行しています。

広げたマップをランダム実行

ランダム実行するソースは下記の通りです。

2行目でインポートするカスタムGym環境をenv7にしているのが、唯一の変更箇所となります。

[ソース]

random7.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import gym
from env7 import MyEnv

# 環境の生成
env = MyEnv()

# 環境リセット
state = env.reset()

total_reward = 0
while True:
# ランダム行動の取得
action = env.action_space.sample()
# 1ステップの実行
state, reward, done, info = env.step(action)
total_reward += reward
#print('state=', state, 'reward=', reward)
# 環境の描画
env.render()
print('reward:', reward, 'total_reward', total_reward)
print('-----------')
# エピソード完了
if done:
print('done')
break

ランダム実行のため毎回結果が異なります。
10回ほど実行した結果は下記のようになりました。

[結果]

  • 1回目(ゴールにたどり着けず)
    total_reward -4328
  • 2回目(ゴールに到着
    total_reward -675
  • 3回目(ゴールにたどり着けず)
    total_reward -4917
  • 4回目(ゴールに到着
    total_reward -4220
  • 5回目(ゴールに到着
    total_reward 1753
  • 6回目(ゴールにたどり着けず)
    total_reward -3657
  • 7回目(ゴールに到着
    total_reward 2255
  • 8回目(ゴールに到着
    total_reward 533
  • 9回目(ゴールにたどり着けず)
    total_reward -4570
  • 10回目(ゴールにたどり着けず)
    total_reward -3591

トータル報酬は -4917から1753 の範囲となりました。

ランダム実行の割には10回の試行のうち5回ゴールにたどり着く結果になったのは意外でした。

試行回数の制限(env6.pyのMAX_STEPS)を2000回と多めに設定したのがその原因かと思います。


次回はStable BaselinesACKTRアルゴリズムを使って、強化学習を行ってみます。