choco中的调度

时间:2014-06-13 21:54:03

标签: java schedule constraint-programming choco

我有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]);         
    }
}

如果任务i在句点j中开始,则变量x [i] [j]等于1,否则等于0。如果许多任务可能在同一时期运行,则必须满足资源容量限制。如果在求解器之前的给定任务中发现任务应该在哪个周期内开始,我必须为资源添加其他约束。因此,在给定的时间内,我必须通过运行任务来计算所有资源的使用情况。在模型解决之前,我必须知道它们何时开始和结束。

在不同的worrds中如何实现由以下总和组成的约束: BigSigma {i | start[i]≤t<start[i]+duration[i]} resourcesRequiredByTask[i] ≤ capacity, (∀ time t),其中索引i是任务编号。

0 个答案:

没有答案