下面指出的数学模型给求解器 CPLEX 带来了麻烦。我知道这个问题是由于约束的非凸性而出现的。
min { (b)*(d*m) + (1-b)*(d*n) }
st.
Cons0: d = p-g,
Cons1: b*d => 0,
Cons2: (1-b)*(-d) => 0
模型寻求 p 的最优值。这个想法是这样的;对于大于 g 的 p 值,目标函数应考虑 m 的成本(即 d m),反之亦然(即 d n)。b 是二进制变量,m、n 和 g 是假定给定的参数。
我使用 Pyomo(基于 Python 的优化建模语言)和求解器 CPLEX。运行代码最终会出现以下错误消息:
"CPLEX Error 5002: 'c_Cons1_' is not convex."
请就如何通过修改约束或其他方式绕过这个非凸性问题咨询我。
谢谢。