c++ - MIP 模型中忽略了等式约束
问题描述
我有一个 MIP 模型(Gurobi),其中包含以下约束:
model.addConstr(rawOutputVar == rawInputVar * edge->getMultiplicator());
rawOutputVar
并且rawInputVar
都是连续变量。edge->getMultiplicator()
返回一个小双。
在运行模型时,我看到约束被“忽略”。的值rawInputVar
被设置为 0,而是rawOutputVar
一个巨大的数字。于是等式变成了:edge->getMultiplicator()
0.0000346
100000000 == 0 * 0.0000346
这显然是错误的。然而,Gurobi 报告该解决方案是最优的。我用
model.addConstr(rawOutputVar <= rawInputVar * edge->getMultiplicator());
model.addConstr(rawInputVar * edge->getMultiplicator() <= rawOutputVar);
这基本上是一样的。它现在可以正常工作。
我想知道为什么我的第一次尝试没有正常工作。我在做一些根本错误的事情吗?
解决方案
推荐阅读
- c++ - C++ 中 extern "C" 的调用约定是什么?
- python - 通过 Django REST API POST 调用上传媒体文件(.mp4)时出现 MultiValueDictKeyError
- python - 如何在不使用 Python 函数的情况下找到最小值和最大值?
- c# - 从 SQL Server 计时器获取报告的问题
- reactjs - 需要使用库在 React Native 中以特定格式格式化当前日期
- python - Python 循环 N 到 0 或 -N 到 0
- python - 如何在 python 中正确地将英语翻译成孟加拉语单词?
- mysql - 如何组合2个mysql行并获得一行
- python - 在添加单个值时在列表中添加总值
- reactjs - 如何使用 antd 和 formik 设置和获取 datepicker 值?