次の問題を考えてみましょう。
説明:
N個の仕事がありますJ1... Jn サイクルタイムC1.... Cn。 time Quantumと、次のことを考慮したスケジューリングテーブルを見つけます。
例:
ソリューション例:
時間量子= 1秒
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 seconds
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|J1|J2|J3| |J1| | |J2|J1| |J3| |J1|J2| | |J1| |J3|J2|J1| | | |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
私の考えでは、これはスケジューリング問題のファミリーに属し、より一般的な問題の特殊なケースである可能性があります。 そうですか?オンラインで検索しようとしましたが、似たようなものは見つかりませんでした。スケジューリング問題の経験がないので、何を検索すればよいのかさえわかりません。
私が見るものから:
これは、動的計画法を伴うものではなく、単純な解決策があると私に信じさせます。 そうですか?
誰かが私にこの問題のためのいくつかのリソース、おそらくアルゴリズムさえも指摘できますか?
また、ジョブを複数のスケジューリングテーブルに分散できるバリエーションについても興味があります。
GCD =最大公約数
編集:指定されたサイクル時間でN個のジョブをスケジュールする方法を尋ねていません。一部の人が示唆しているように、これを行うためのより動的な方法があると確信しています。私の問題は「次のことを考慮してタイムクォンタムとスケジューリングテーブルを見つける:[...]」です。それが数学のいくつかの部分にルーツを持っている可能性さえあります。
優先度付きキュー を使用して最適なスケジュールを決定できます。スケジューリングの決定の瞬間はどこにありますか?これは、特定の秒に開始するサイクルが複数ある場合です。
可能なスケジュールを表す「スケジュール」データ型が必要です(上記で記述したデータは、ここで表すデータの完璧な例です)。
したがって、疑似アルゴリズムは次のようになります。
各サイクルタイプを独自のスケジュールに追加し、最小のGCD *(C1、...、Cn)/ n値で優先順位を付けて、各スケジュールを優先キューにプッシュします。
次に、GCD *(C1、...、Cn)/ nの値が最小のスケジュールから始めて、起動する新しいサイクルを追加して、古いものから新しいスケジュールを作成します。
好きなだけ続けます。
スケジュールをいつ終了するかを決定します。これは優先キューであるため、任意の時点で最初の要素がGCD *(C1、。。、cn)/ nに関して最適であることが保証されます。
お役に立てば幸いです。