optimization - 如何使用严格的不等式比较浮点变量?
问题描述
我正在尝试实现最大化问题。在一个部分中,我试图将浮点数与 dvar 浮点数进行比较,我得到错误“运算符 >(float, dvar float) 在 CPLEX 的上下文中不可用”。使用 >= 有效,但我得到错误的结果。有没有办法解决这个错误?
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
);
}
}
解决方案
正如蒂姆在他的评论中提到的,你应该使用var >= value + epsilon
. 严格不等式不适合 CPLEX 使用的线性规划范式。
推荐阅读
- api - 物联网云服务器 P2P
- python - 对重新排序 Dict 或 OrderedDict 的能力感到困惑
- git - 无法使用 Sourcetree 克隆存储库
- cloud-foundry - CF 市场未找到服务产品
- prolog - maplist 仅适用于列表列表的第一个列表?
- javascript - 我应该使用 Python 还是 Javascript 来使用 Django 构建基于文本的冒险?
- r - 在ggplot 2中的x轴上将时间从几分钟缩放到几小时
- swift - 在 SwiftUI Document App 中,如何从函数中保存文档
- python - augemtation 错误,tensorflow.python.keras.preprocessing.image.ImageDataGenerator
- python - 如何在 Superset 中以编程方式向角色添加权限?