我正在尝试实现一个使用 Q-learning 玩Ludo的代理。我使用 e-greedy 动作选择器对其进行了训练,epsilon 为 0.1,学习率为 0.6,折扣因子为 0.8。
我跑了大约 50K 步,但没有赢得一场比赛。这令人费解,因为 Q 表似乎与我想要的非常准确。为什么我会输给随机玩家这么多?如果 Q 表没有发生太大变化,系统是否应该能够获胜,并且通常我需要训练我的代理多少次迭代?
我不确定需要多少信息,如果需要,我会用相关信息更新帖子。
可能的状态,表示为 Q 表中的行:
- 在家
- 在地球上
- 在一颗星星上
- 在目标
- 在赢家路上
- 与同色球员安全
- 在自由空间
可能的操作,表示为每个状态的列:
- 从家里搬出去
- 进入目标
- 移动到地球
- 移星
- 通过星星移动到目标
- 使用相同颜色的令牌进入安全状态
- 进入赢家之路
- 如果对手在地球上,自杀
- 杀死对手
- 动起来
- 不能动
我首先用随机值初始化我的 Q 表,并以在 5000 次迭代后看起来像这样的表结束:
-21.9241 345.35 169.189 462.934 308.445 842.939 256.074 712.23 283.328 137.078 -32.8
398.895 968.8 574.977 488.216 468.481 948.541 904.77 159.578 237.928 29.7712 417.599
1314.25 756.426 333.321 589.25 616.682 583.632 481.84 457.585 683.22 329.132 227.329
1127.58 1457.92 1365.58 1429.26 1482.69 1574.66 1434.77 1195.64 1231.01 1232.07 1068
807.592 1070.17 544.13 1385.63 883.123 1662.97 524.08 966.205 1649.67 509.825 909.006
225.453 1141.34 536.544 242.647 1522.26 1484.47 297.704 993.186 589.984 689.73 1340.89
1295.03 310.461 361.776 399.866 663.152 334.657 497.956 229.94 294.462 311.505 1428.26
我的即时奖励是基于每个令牌在游戏中的距离乘以常数 10,在执行一个动作之后。起始位置的位置为 -1,目标位置的位置为 99。中间的所有位置的位置都在 0 - 55 之间。如果目标中的代币,将在目标中的每个代币的即时奖励中增加额外奖励 +100 .
通常,我的球员总是向球门移动一个标记……就是这样。