首页 > 解决方案 > Pygame窗口在一段时间不刷新时没有响应

问题描述

我正在尝试用我制作的“游戏”进行一些强化学习。

在我的主循环中,当我玩我的游戏时,如果窗口定期刷新,一切正常。

但是,在一集之后,我想训练我的代理,但是如果训练时间太长,那么 pygame 窗口只会显示“控制栏”(带有 X 的栏用于关闭窗口),如果我尝试关闭它,程序只是崩溃了。

有没有一种简单的方法可以处理它?其他解决方案告诉我我应该定期调用一些 pygame 函数,但如果我不得不暂停训练只是为了不时进行,代码会变得有点混乱。

标签: pythonpygamereinforcement-learning

解决方案


强化学习训练循环通常在 while / for 循环中定义,其中包含环境和代理的包装器。

一种流行的设计是将游戏包装在 OpenAI 健身房中,并以动作为输入调用 step 函数,在该时间步内检索下一个状态、奖励、终止状态和其他统计信息:

例子:

EPISODES = 100
env = gym.make("CartPole-v1")
for i in range(EPISODES):
    state = env.reset()
    steps = 0
    terminal = False
    while terminal is False:
        action = agent.sample(state)
        state, reward, terminal, info = env.step(action)

        if episode > 0:
            agent.train()

我假设您没有包裹环境健身房,但这样做很容易。您也可以创建自定义代码,但应用程序的一般流程应如示例代码中所述。


推荐阅读