我想使用docplex编写一个条件约束。约束条件是:
if:
y[(i, j,k)] == 1 or y[(j, i,k)] == 1
then:
g[i,j,k]==1
我以以下方式在docplex中实现了代码:
mdl.add(mdl.if_then(mdl.logical_or(y[(i, j,k)] == 1 ,y[(j, i,k)] == 1 ),g[i,j,k]==1))
但当我运行时,会出现以下错误:
DOcplexException: Expecting linear constraint, got: docplex.mp.LogicalOrExpr(y_13_16_14 == 1,y_16_13_14 == 1)
如何解决错误
Model.logical_or
返回一个表达式,如果其中一个参数为true,则等于1Model.if_then
需要线性约束,因此需要将表达式转换为约束,例如,write(Model.logical_or(a,b) ==1)
在这个小示例中,我声明当a或b等于1时,c等于1(请注意,逻辑运算符(如logical_或logical_)和接受二进制变量时,无需在此处添加“==1”:
结果是:
如果不需要线性约束,可以使用真值
让我给你们举一个关于bus example的小例子
相关问题 更多 >
编程相关推荐