我正在尝试用遗传算法优化交通信号灯时间。我在html5中制作了流量动画,GA在javascript中实现。所以,当我想运行该动画的模拟时,它会永远运行。
动画每20ms绘制信号量和汽车,并更新下一次迭代的值。在模拟中我只调用更新函数,因为我不需要绘制信号量和汽车。
因此,动画和模拟之间的区别在于,模拟不在画布上绘制任何内容,而是在while循环中运行,而动画在setInterval循环中运行。
任何想法如何加速模拟?
我试图计算每辆车的行程时间,但它真的很难,因为你需要把等待时间包括在红色,拥堵等等。
答案 0 :(得分:1)
如果我在模拟中正确理解你,你就会在while循环中运行无限运行的代码(或很长时间运行的代码)。
这是你的问题。在像C ++和Java这样的语言中,由于多线程,这是很常见的做法。当他们在咀嚼代码时,其他代码仍然可以运行,屏幕仍然可以更新......等等。
JS是一个单线程。它实际上只是继续运行,而循环,几乎没有别的,破坏你的程序的任何平稳运行。以这种方式使用while循环绝对是单线程语言中的“永远不会那样”。