0

当 Chrome 正常运行时,它会在我的 connect-4 浏览器游戏中间不断杀死页面。该游戏是玩家与计算机的设置,游戏本身运行正常且永不崩溃。当我将迭代次数设置得太高而无法训练计算机对手时,页面会崩溃。这些程序使用 qLearning 算法训练人工智能,人工智能在其中发挥自己并为每个遇到的状态存储一个值。如果我将迭代次数设置为大约 125,000 次或更少,那么一切正常(除了对手不是那么好)。我不知道是循环的运行时间(大约需要 30 分钟才能运行)会杀死程序还是其他东西,例如记录状态的内存限制及其相应的 q 值。

如何让程序运行以进行更多的训练迭代而不用 chrome 杀死页面?

4

1 回答 1

2

你有几个关于如何处理你的代码的选择。

选项 1:setInterval/setTimeout

正如其他人所建议的那样,使用setIntervalsetTimeout可以在“块”中运行您的代码,并且没有一个块会导致超时。

选项 2:setInterval+generators

对于深度嵌套的代码,使用 setTimeout 很难正确地重新输入代码。

阅读生成器——这使得在块中运行代码更好,但可能需要重新设计。

选项 3:网络工作者

Webworkers提供了另一种方式,具体取决于您正在计算的内容。它们在后台运行,无法访问 DOM 或其他任何东西,但它们擅长计算。

选项4:nodejs

您的最后一个选择是离开浏览器并在另一个环境中运行,例如node.JS。如果您在 Windows 下运行,HTA 文件可能是另一种选择。

于 2016-06-22T18:45:40.897 回答