我试图在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.
此致
答案 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显示代理可以行走的网格。因此,您可以修改结构以制作自己的结构。