シミュレーションでは、ワーカーはタスクを実行するためにマップ内を移動する必要があります。
各シミュレーション「ティック」で、1 マス移動できます。
隣接してタスクを実行するには、10 ティックかかります。
タスク スクエアは通過できません。ワーカーがいるマスは通過できません。複数のワーカーが正方形で作業できます。
労働者は互いに競合していません。目的は、すべてのタスクをできるだけ早く完了することです。
追加:理想的には、アルゴリズムは簡単に概念化でき、実装が簡単でなければなりません。それは誰もが望んでいることではありませんか?モデルを頻繁にゼロから再計算するのではなく、更新して再利用できるなど、効率的であれば大きなプラスです。理想的には、ローカルオプティマを使用できるため、NP 問題をブルートフォースしようとはしませんが、労働者が他人の計画にほとんど注意を払わない本質的にランダムな放浪ではなく、あからさまに貪欲になることを避け、少し先のことを考えます。
次に例を示します。
ワーカー 1 と 2 は、正方形 A、B、C、および D のタスクを完了する必要があります。
どのワーカーがどのタスクを実行するかをどのように決定しますか?
1 が A を実行し、2 が C を実行する必要があることは自明のようです。
1 は A から 4 マス離れているので、14 ティックで完了します。1 は次にどこに行くべきで、その理由は?
また、B のすぐ上に別のタスク (E) が配置されている場合はどうなるでしょうか。
次に進むべき場所を決定するためにワーカーが使用するロジックは何ですか?
私が試したこと:
趣味のRTSゲームなので、空いているワーカーが一番近いタスクに進むか、他のワーカーがやっていない一番近いタスクに進むようにしてみました。
この貪欲なアプローチは明らかに非効率的であることが証明されており、プレーヤーのテストにより、それが受け入れられないことが明らかになりました. 戦略的な採掘/構築/ファーミングがゲームの鍵であり、プレイヤーがすべての労働者を細かく管理してルーティングすることを望まないため、代わりに労働者が使用できるかなり公正で合理的に最適なアルゴリズムを探しています。