Javascript - 防止 Chrome 在长循环期间终止页面

标签 javascript google-chrome q-learning

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

如何在 chrome 不终止页面的情况下让程序运行更多的训练迭代?

最佳答案

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

选项 1:setInterval/setTimeout

正如其他人所建议的那样,使用 setIntervalsetTimeout 可以“分块”运行您的代码,并且任何分块都不会导致超时。

选项 2:setInterval + generators

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

继续阅读 generators -- 这使得分块运行代码变得更好,但可能需要重新设计。

选项 3:网络 worker

Webworkers提供另一种方式,这取决于你在计算什么。它们在后台运行,无法访问 DOM 或其他任何东西,但它们非常擅长计算。

选项 4:nodejs

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

关于Javascript - 防止 Chrome 在长循环期间终止页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37975869/

相关文章:

javascript - AngularJS 在指令运行之前通过 AJAX 检索数据

javascript - 如何使用JavaScript检测html中是否同时按下多个键

css - 旋转 div 的 Chrome 悬停问题

neural-network - 神经网络中的大权重值

python - 具有不同权重的同一 TensorFlow 网络的 2 个版本,并更新其中一个版本

javascript - 相同js文件的内容长度或大小在不同服务器上是不同的

css - 每秒分页后的 css <tr> 在谷歌浏览器中不起作用

CSS 显示 :table; spacing issue on Chrome

c++ - 使用 softmax 进行 Action 选择?

javascript - jQuery 更改事件不适用于 Rails 应用程序