0

遺伝的アルゴリズムを使用して信号機のタイミングを最適化しようとしています。トラフィックのアニメーションを html5 で作成しました。GA は JavaScript で実装されています。だから、そのアニメーションのシミュレーションを実行したいとき、それは永遠に実行されます。

20 ミリ秒ごとにアニメーションがセマフォと車を描画し、次の反復のために値を更新します。シミュレーションでは、セマフォや車を描画する必要がないため、更新関数のみを呼び出します。

したがって、アニメーションとシミュレーションの違いは、シミュレーションはキャンバスに何も描画せず、while ループで実行されますが、アニメーションは setInterval ループで実行されます。

どうすればシミュレーションを高速化できますか?

車ごとの所要時間を計算してみましたが、赤や渋滞などでの待ち時間も含めて計算する必要があり、なかなか難しいです。

4

1 に答える 1

1

シミュレーションで正しく理解している場合は、while ループで無限に実行されるコード (または非常に長時間実行されるコード) を実行しています。

これはあなたの問題です。C++ や Java などの言語では、マルチスレッドのため、これはごく普通のことです。彼らがコードを噛んでいる間、他のコードを実行したり、画面を更新したりできます...など。

JS はシングルスレッドです。文字通り、その while ループを実行し続け、他にほとんど何もせず、プログラムのスムーズな実行を台無しにします。このように while ループを使用することは、シングル スレッド言語では絶対に「絶対にやらない」ことです。

于 2012-08-14T13:17:33.027 に答える