PyBrains 迷路の例を試しています
私のセットアップは次のとおりです。
envmatrix = [[...]]
env = Maze(envmatrix, (1, 8))
task = MDPMazeTask(env)
table = ActionValueTable(states_nr, actions_nr)
table.initialize(0.)
learner = Q()
agent = LearningAgent(table, learner)
experiment = Experiment(task, agent)
for i in range(1000):
experiment.doInteractions(N)
agent.learn()
agent.reset()
右下隅(1、8)は吸収状態です
mdp.py に追加の罰状態 (1, 7) を入れました。
def getReward(self):
""" compute and return the current reward (i.e. corresponding to the last action performed) """
if self.env.goal == self.env.perseus:
self.env.reset()
reward = 1
elif self.env.perseus == (1,7):
reward = -1000
else:
reward = 0
return reward
ここで、1000 回実行し、各実行中に 200 回のインタラクションを行った後、エージェントがどのようにして私の処罰状態が良好な状態であると判断するのか理解できません (四角が白であることがわかります)。
最終実行後にすべての状態とポリシーの値を確認したいと思います。それ、どうやったら出来るの?この行がいくつかの値を返すことがわかりましたがtable.params.reshape(81,4).max(1).reshape(9,9)
、それらが値関数の値に対応しているかどうかはわかりません