質問

NジョブとMマシンがあります。各ジョブはリリース時間r [i]があります。マシンJでジョブIを処理します。P[i] [j]時間がかかります。 1つのジョブkの場合| {p [i] [j] | i == k} | <= c、ここでc << m。ジョブIの遅延をf [i] -r [i]として定義します。ここで、f [i]はジョブIが終了する時間です。システムは先制的ではありません。つまり、あるマシンで1つのジョブが開始されると、終了する前に中断することはできません。目標は、すべてのジョブの遅延合計を最小限に抑えるスケジューリングアルゴリズムを提供することです。何か案が?

役に立ちましたか?

解決

これがからの削減です 3パーティションの問題.

s = {xとします1, 、 …、 バツ3m}すべてのiの場合、b/4 <xの場合、3パーティションのインスタンスになります。 <b/2、ここでb = ∑x/mはターゲット合計です。

mがあるようにします 同一 マシン。時間0に、長さxの3Mジョブをリリースします1, 、 …、 バツ3m. 。 b、b + 1、…、b + 4mb -1、b + 4mb -1、長さ1のジョブをリリースするたびに、合計4m2Bジョブ。

3パーティションのインスタンスには、最初のジョブのメイクスパンがBよりも低い場合にのみ解決策があります。解決策がある場合、目的への最初のジョブの貢献は最大3MBです。他のジョブの貢献は4mです2B.

MASKPANがBよりも長い場合、4MBのジョブのチェーンが少なくとも1つのユニットを遅らせ、目的に4MBに寄与します。したがって、目的はせいぜい3MB + 4mです2b 3パーティションの問題が解決可能で、少なくとも4MB + 4mの場合2b 3パーティションの問題が解決できない場合。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top