我对 CPLEX 完全陌生,远非 MIP 专家,但我正在尝试使用这项技术 (CPLEX 12.4) 解决问题。我决定在 .lp 文件中创建 MIP 模型并将其提供给 CPLEx,这样我就可以有大量输入并测试不同的求解器等。但是我发现关于指标约束的一件事有点问题。
我想要类似的东西:
c1: a AND NOT(b)-> i1 - 100 v1 = 0
c2: b AND NOT(a)-> i1 - 120 v1 = 0
c3: a AND b -> i1 - 80 v1 =0
但是在 LP 格式中没有这样的东西(我什至不确定我是否可以在 CPX 界面上做到这一点,但我试图避免它)AND
。NOT
我发现的唯一解决方法是:
ca: a_not_b = 1 <-> a - b = 1
cb: b_not_a = 1 <-> a - b = -1
cab: a_and_b = 1 <-> a + b = 2
c1: a_not_b-> i1 - 100 v1 = 0
c2: b_not_a-> i1 - 120 v1 = 0
c3: a_and_b = 1-> i1 - 80 v1 =0
我可以接受这个,因为我将使用另一个程序生成这个 LP,但这会减慢 CPLEX 的速度吗?有没有更好的方法来做到这一点?
谢谢