python - Pygame窗口在一段时间不刷新时没有响应
问题描述
我正在尝试用我制作的“游戏”进行一些强化学习。
在我的主循环中,当我玩我的游戏时,如果窗口定期刷新,一切正常。
但是,在一集之后,我想训练我的代理,但是如果训练时间太长,那么 pygame 窗口只会显示“控制栏”(带有 X 的栏用于关闭窗口),如果我尝试关闭它,程序只是崩溃了。
有没有一种简单的方法可以处理它?其他解决方案告诉我我应该定期调用一些 pygame 函数,但如果我不得不暂停训练只是为了不时进行,代码会变得有点混乱。
解决方案
强化学习训练循环通常在 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()
我假设您没有包裹环境健身房,但这样做很容易。您也可以创建自定义代码,但应用程序的一般流程应如示例代码中所述。
推荐阅读
- c# - C# 方法更改“图片框”
- sprite-kit - 测量 SKShapeNotes 之间的碰撞
- python - 更改为 PostgreSQL raise django.db.utils.OperationalError: no such table 错误
- javascript - 不能在 map() 内使用 if
- c++ - 如何指定 Makefile 输出目录?
- android - 如何将输入限制为某个值?
- c++ - 使用内存地址从另一个程序中读取字符串变量
- javascript - 如何使用 UiPath 从 Google Chrome JavaScript 警报弹出窗口中提取数据
- javascript - 为什么动态生成的元素没有在悬停时显示?
- python - Azure Cosmos DB Python SDK:如何读取更改源?