CPLEX - 不起作用的简单约束



我是 CPLEX 的新手,我的一个约束有问题。

我只需要对尊重某个条件的术语求和:

我先写

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];   
}

当然,这让我得到了经典的"无法提取表达式"错误。我试图通过以不同的方式编写约束来绕过此错误:

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];    
}

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

通过这种重新表述,我不再有"无法提取表达式"错误(实际上我不再有错误),但解决方案中没有考虑约束。

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

谢谢!

请检查当您用sum(g in max(1,h-p[j]+1)..h)替换sum(g in max(0,h-p[j]+1)..h)时是否仍然收到"无法提取表达式"错误,因为在您的数学公式中,对求和指数施加了>0限制。

相关内容

  • 没有找到相关文章

最新更新