CPLEX - 无效的简单约束

时间:2018-01-22 08:20:15

标签: cplex

我对CPLEX很新,我遇到了一个约束问题。

我只需要总结一下尊重某一条件的条款:

Sum

我先写了

forall(r in RangeR, w in RangeW, d in RangeD, h in RangeH){
        sum(k in RangeK) sum(j in RangeJ) rc[j][r] * sum(g in max(0,h-p[j]+1)..h) x[k][j][w][d][g] <= ra[r][w][d][h];   
}

当然,这让我得到了经典的&#34;无法提取表达&#34;错误。我尝试通过不同地编写约束来绕过此错误:

forall(r in RangeR, w in RangeW, d in RangeD, h in RangeH){        
    sum(k in RangeK) sum(j in RangeJ) rc[j][r]*sum (g in RangeH)(g >= h - p[j]+1 && g <= h)*x[k][j][w][d][g] <= ra[r][w][d][h];    
}

如果我理解正确,每次条件为真时,括号内的表达式都应计数。

通过这种重新制定,我不再拥有&#34;无法提取表达&#34;错误(实际上我不再有错误),但解决方案中没有考虑约束。

如何在解决中计算此约束?

谢谢!

1 个答案:

答案 0 :(得分:0)

请检查您是否仍然无法提取表达式&#34;将sum(g in max(0,h-p[j]+1)..h)替换为sum(g in max(1,h-p[j]+1)..h)时出错,因为在您的数学公式中,总和索引会受到>0限制。