2011-08-16 11 views
5

新しいジョブ(実行が順次接続されているタスクのセット)が数秒ごとに到着するスケジューリングの問題があります。
各ジョブでは、既知の間隔で割り当てられるリソースが必要です。たとえば

は 仕事j1が知られているスケジューリングパターンに我々は資源を予約れるタスクのセット{r1, r2, r3} です:実行 スケジューリングアルゴリズム

  • TD1の開始時刻であること

    r1:[t0 .. t1=t0+td1], 
    r2:[t2=t1+td2+i2 .. t3=t2+td3] 
    
    • t0が長さですr1のリソース割当の数
    • t1は、r1のリソース割り当ての終了時刻です。
    • i1は、 r1、r2の間の待機ペリオイド。例では

    schedule example
    、新しいジョブJ2はJ1の実行が開始された直後に予定されています。 j2の最も早い開始時刻はt1です。 ジョブの実行には数分かかる場合があります。そのほとんどは待機しています。

    私は現在の予約テーブルを見て、固定割り当て時間と待機期間を持つ新しいジョブの可能な最も早い開始時刻を決定し、それに応じて予約を行うスケジューラを持っています。

    (実際には、待機時間を固定する必要はありませんが、リソースの使用率には多少の割合(多分5%)があります。たとえば、リソースr3.1が予約されている場合、 )同じことを達成するために3.2をそのまま使用することができます)。

    しかし、新しいジョブが到着したときにすべてのスケジュール割り当てを動的に調整できるようにするには、スケジューラが必要です待ち時間が正確に与えられている必要はなく、いくつかの重複複製(3.1/3.2)と並列実行する可能性があるという事実を利用して、1日で実行された総作業量は、スケジューリングスキーム(現在の私の現在の開始時のアプローチよりも早い)。

    1. あなたはそれからどのようなスケジューリングスキームを呼びますか?
    2. (新しい)問題に近づくための提案はありますか? 「使用状況をリソースへの代替案」に関するご質問については
  • 答えて

    1

    最も一般的な問題のその種に取り組むために実装されたパターンは、このためにObject Pool Pattern
    最も広く知られている例はおそらくThreadPool

    です

    int GetResource(ResourceType type, int durationInSeconds)メソッドを使用してResourcePoolクラスを実装することをお勧めします。 戻り値は、指定されたResourceTypeの次のリソースがいつ利用可能になるかを示します。

    0

    RCPSP(Resource Constrained Project Scheduling Problem)を扱うことができます。ソリューションのテクニックには、整数プログラミングや制約プログラミングからさまざまなヒューリスティックまでさまざまです。技術は

    など、あなたが解決策のスケジュールを必要とするどのくらいの速、タスク/ジョブは/共有リソースをどのように使用するかは、そのような計画期間などの詳細を依存

    参照:

    https://developers.google.com/optimization/scheduling/job_shop

    http://www.laas.fr/files/ROC/2014-Presentations/MILP-RCPSP-PMS2014.pdf

    関連する問題