0

スケジュールするタスクが n 個あります。タイム ホライズンは 0..T 期間です。各タスクは、実行時にリソースを消費します。リソースは限られており、さまざまな種類のリソースである可能性があります。choco 2.1.5 では次の決定変数を使用します。

IntegerVariable[][] x = new IntegerVariable[n][m]; // decision variables

int i, j;
for (i = 0; i < n; i++){
    for (j = 0; j < T; j++){
        x[i][j] = Choco.makeIntVar("x_" + i +"_" + j, 0, 1,Options.V_ENUM);
                    model.addVariable(x[i][j]);         
    }
}

変数 x[i][j] は、タスク i が期間 j で開始される場合は 1 に等しく、それ以外の場合は 0 に等しくなります。多数のタスクが同じ期間に実行される可能性がある場合、それらはリソースの容量制限を満たす必要があります。ソルバーがタスクを開始する期間を見つける前に、特定のタスクの場合、リソースに追加の制約を追加する必要があります。したがって、特定の期間に、タスクを実行してリソースのすべての使用量をカウントする必要があります。そして、モデルが解決される前に、それらがいつ開始され、いつ終了するかをどうにかして知る必要があります。

別の言い方をすれば、次の合計で構成される制約を実装する方法です BigSigma {i | start[i]≤t<start[i]+duration[i]} resourcesRequiredByTask[i] ≤ capacity, (∀ time t)。ここで、インデックス i はタスク番号です。

4

0 に答える 0