PyBrain强化学习 - 迷宫和图形

时间:2012-08-16 02:47:27

标签: python-2.7 reinforcement-learning pybrain

我试图在PyBrain中实现类似于Maze问题的东西。然而,它更像是一个带紧急出口的房间,您可以在其中一个房间内找到出口。 要将其转换为计算机方法,可以使用双向图,其中权重显示房间之间的路径。

我试图实现一个新的环境,但我有点失去应该是什么。 例如,基于抽象环境类我已经考虑过这个:

#!/usr/bin/python2.7

class RoomEnv(Environment):
    # number of action values acceptable by the environment
    # Two events: go forward and go back through the door (but, how we know what room is connect to another?)
    indim = 2
    # Maybe a matrix where 0 is no connection and 1 is a connection(?)
    #            A,B,C,D,E,F
    #indim = array([[0,0,0,0,0,0],  # A
                    [0,0,0,0,0,1],  # B
                    [0,0,0,0,0,0],  # C
                    [0,0,0,0,0,0],  # D
                    [0,0,0,0,0,1],  # E
                    [0,0,0,0,0,1],  # F
                  ])

    # the number of sensors is the number of the rooms
    outdim = 6

    def getSensors(self):
        # Initial state:
        # Could be any room, maybe something random(?)

    def performAction(self, action):
        # We should look at all the states possible to learn what are the best option to go to the outside state.
        # Maybe a for loop that goes through all the paths and use some weight to know where is the best option?

        print "Action performed: ", action

    def reset(self):
        #Most environments will implement this optional method that allows for reinitialization. 

此致

1 个答案:

答案 0 :(得分:1)

pybrain 中,您可以将房间定义为数组,然后将结构传递给Maze以创建新环境。例如:

structure = array([[1, 1, 1, 1, 1, 1, 1, 1, 1],
                   [1, 0, 0, 1, 0, 0, 0, 0, 1],
                   [1, 0, 0, 1, 0, 0, 1, 0, 1],
                   [1, 0, 0, 1, 0, 0, 1, 0, 1],
                   [1, 0, 0, 1, 0, 1, 1, 0, 1],
                   [1, 0, 0, 0, 0, 0, 1, 0, 1],
                   [1, 1, 1, 1, 1, 1, 1, 0, 1],
                   [1, 0, 0, 0, 0, 0, 0, 0, 1],
                   [1, 1, 1, 1, 1, 1, 1, 1, 1]])

# defining the environment
environment = Maze(structure, (7, 7))

在上面的示例中,1s显示墙,0显示代理可以行走的网格。因此,您可以修改结构以制作自己的结构。