我正在尝试实现最大化问题。在一部分中,我试图将浮点数与dvar浮点数进行比较,为此我得到错误“在CPLEX上下文中,运算符>(float,dvar float)不可用”。使用> =可以,但是我得到错误的结果。有什么办法可以解决该错误?
float price[D][A] = ...;
float volaforecast[D] = ...;
dvar float vola;
dvar int change[D][A];
maximize sum(d in D, a in A)(price[d][a] * change[d][a]);
subject to {
forall(d in D: d > 1) {
( volaforecast[d] <= vola &&
volaforecast[d-1] > vola &&
change[d]["a"] == 0
) || (
volaforecast[d] > vola &&
volaforecast[d-1] <= vola &&
change[d]["a"] == 1
);
}
}
答案 0 :(得分:0)
正如Tim在其评论中所述,您应该使用var >= value + epsilon
。严格的不等式不适合CPLEX使用的线性编程范例。