1

仕事では、(タスク名、頻度) という形式の一連の制約が与えられます。ここで、頻度は、タスク「タスク名」の各呼び出し間のティック数を意味する整数です。2 つのタスクを同時に実行することはできず、各タスクの呼び出しが完了するまでに 1 ティックかかります。私たちの目標は、一連の制約に一致するという点で最適なスケジュールを見つけることです。

たとえば、{(a, 2), (b,2)} という制約が与えられた場合、最適なスケジュールは "ab ab ab..." になります。一方、制約 ({a,2) が与えられた場合、 }, {b, 5}, {c, 5}) 最適なスケジュールはおそらく「abaca abaca abaca...」です。

現在、実際の頻度と指定された制約との間の距離を最小化しようとする遺伝的アルゴリズムを実行することにより、最適なスケジュールを見つけています。実際にはかなりうまく機能しますが、この種の問題により適したアルゴリズムがあるのではないかと思います。Google で検索してみましたが、適切な言葉がないように思えます (通常、スケジューリングとは、タスクを完了することです :()。

4

1 に答える 1

1

まず、jldupontのコメントのメリットを考えてみましょう!:)

次に、「ピリオド」はタプルの2番目の要素の正確な説明であると思います(例:{Name、Period [icity]})。

そうは言っても、ネットワーキングアルゴリズムに注目してください。 重み付きキューイングのいくつかのバリエーションは、おそらくここで適用できます。

たとえば、N個のタスクが与えられた場合、タスクに対応するN個のキューを作成しT0...Tn、タスクの期間に基づいて各サイクル(「ティック」)で、対応するキューにアイテムをキューに入れます。

スケジューラアルゴリズムは、キュー内のウェイターの総数を(平均して)最小化することを目的としています。単純な開始点は、アイテムの数が最も多いqueneQxから単純にデキューすることです。(「年齢」を示すキューに入れられたアイテムのパラメーターは、優先順位付けに役立ちます。)

于 2009-10-29T15:19:19.277 に答える