【发布时间】:2019-10-02 23:11:12
【问题描述】:
我正在创建一个自定义强化学习环境。到目前为止,环境只是一个 3 x 3 的网格。我想创建一个自定义环境,这就是我不使用 OpenAI Gym 的原因。最终目标是 DQN 代理找到一条合适的路径以最大化可能的奖励并到达网格上的目的地(例如,目标是到达坐标为 [2|2] 的场)。
我为环境创建了一个示例类(Env 类)。 build_canvas(self) 函数描述了网格的“架构”。可见,我使用 tkinter.canvas 来定义网格系统。不幸的是,当我尝试实例化 Env 类型的对象时,不会显示网格。
class Env(tk.Tk):
def __init__(self):
super(Env, self).__init__()
print("This is the standard constructor of our
environment class.")
self.build_canvas()
def build_canvas(self):
canvas = tk.Canvas(self, bg='green', height=HEIGHT,
width=WIDTH)
## Create grid with 3x3 (3 rows with 3 columns)
for c in range(0, WIDTH, 60):
x1, y1, x2, y2 = c, 0, c, HEIGHT
canvas.create_line(x1, y1, x2, y2)
for r in range(0, HEIGHT, 60):
x1, y1, x2, y2 = 0, r, HEIGHT, r
canvas.create_line(x1, y1, x2, y2)
canvas.pack()
return canvas
def render(self):
print("This renders the environment to the screen.")
def reset(self):
print("This resets the environment.")
def step(self, action):
print("This takes an action and the environment.")
if __name__ == "__main__":
env = Env()
它只是将字符串打印到控制台,但是根本没有加载网格。有人有建议吗?
【问题讨论】:
标签: python tkinter reinforcement-learning tkinter-canvas