上下文
我正在为python中的确定性两人游戏编写一个AI。我希望编写一个函数,它将一个超时值作为其参数之一,并在超时后不久返回一个移动。该函数在超时结束之前搜索(否定或类似的),然后返回它所能找到的最佳移动。
规范
提出的实现
我想我对如何实现这一点有一个想法,但我在网上发现了很多相互矛盾的建议(主要是针对与这个不太一样的问题)。我也担心,我是过度工程的东西。因此,我要问的是,这一实施建议是否明智,或者你是否提出了其他建议。
我正在考虑将我的AI算法写成一个生成器,从而产生更好的动作。收益率之间的时间延迟可能很长,但第一次收益率几乎是即时的。
然后,我将在子进程中调用这个生成器,并让它将产量值输入管道。
然后,主进程将在以下循环中运行:
我在用Python3做游戏。
发布于 2013-03-10 15:24:16
您可以使用一个超时线程来包装您的否定方法。
该方法将使用到目前为止的最优解更新共享数据结构。共享数据结构可以简单地成为传递给消极方法的列表。当超时发生时,调用方将从列表中读取解决方案。
发布于 2013-03-10 15:25:19
如果您正在使用UNIX,则可以使用信号库来实现超时函数:如果要花太长时间才能完成超时功能
发布于 2013-03-10 16:41:49
既然您已经在使用玩偶游戏,请使用以下任何一种:
def foo(duration):
# time as MS
start = pygame.time.get_ticks()
while True:
now = pygame.time.get_ticks()
if now - start >= duration:
return
# do stuff或者这两种功能中的一种:
pygame.time.wait或pygame.time.delay
您可以制作一个稍微复杂一些的版本,它仍然允许您的主循环继续。但是如果你的显示器不能在短时间内更新,那可能是太过分了。
https://stackoverflow.com/questions/15323805
复制相似问题