- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在同一 ILP 问题(完全相同的输入文件)上运行 CPLEX 时:
MIPEmphasis = 3
我得到一个目标值 6.81613e-06MIPEmphasis = 4
我得到一个目标值 1.03858在这两种情况下,CPLEX 都会返回 OPTIMAL
状态。
来自 CPLEX 用户手册:
To make clear a point that has been alluded to so far: every choice of
MIPEmphasis
results in the search algorithm proceeding in a manner that eventually will find and prove an optimal solution, or will prove that no integer feasible solution exists. The choice of emphasis only guides CPLEX to produce feasible solutions in a way that is in keeping with the user's particular purposes, but the accuracy and completeness of the algorithm is not sacrificed in the process.
我是不是漏掉了什么?我不仅在 MIPEmphasis
参数上遇到了这个问题,而且在其他参数(例如 ScaInd
)上也遇到了这个问题,通过改变参数我得到了不同的 OPTIMAL
质量差异很大的解决方案。
这里有一些我似乎无法破译的更多信息。
对于 MIPEmphasis = 3
:
Maximum condition number = 5.03484e+12,
Attention level = 0.290111,
Suspicious bases: 0.0111111,
Unstable bases = 0.966667,
Ill-posed bases = 0,
CPLEX Status = `OptimalTol`
对于 MIPEmphasis = 4
:
Maximum condition number = 4.73342e+08,
Attention level = 0.00925,
Suspicious bases: 0.925,
Unstable bases = 0,
Ill-posed bases = 0,
CPLEX Status = `Optimal`
最佳答案
这看起来像是常见的数值问题,并且在很大程度上取决于您的建模(例如,大 M 常量的使用)。
我从未使用过 CPLEX,但是这个 official page讨论病态 MIP 模型。
此处相关的小摘录:
You should reconsider your model if CPLEX reports any ill-posed bases or more than 5% unstable bases.
在你的情况 A 中,你有超过 95% 的不稳定碱基:
For MIPEmphasis = 3: .... Unstable bases = 0.966667 ...
所以很有可能 A 的结果不可信。此外,我会尝试重新制定我的模型。
如果我们看 B,你有 > 92.5% 的可疑碱基,所以即使在这种情况下,模型也可能在自找麻烦。
由于我不熟悉所有调整和默认设置,因此我无法深入了解关于您的 MIPEmphasis 和合作伙伴的这些截然不同的计算结果的来源。 (可能由于 MIPEmphasis 而生成更多的切割平面会导致更稳定的问题;只是猜测)。
关于algorithm - CPLEX 提供具有不同目标值的不同 OPTIMAL 解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45331766/
我想最小化受一组线性和二次约束的二次目标函数。 二次目标函数是不定的(非凸)。二次约束是正半定(凸)。变量是连续的。 我可以使用 Gurobi 或 CPLEX 处理这个问题吗?哪一个是更好的选择? 最
我正在尝试找出如何热启动 CPLEX 的二次规划求解器。我对终止于一阶固定点的非凸二次规划的 QP 求解器热启动特别感兴趣。 我相信start()函数应该这样做,但我不知道如何让求解器使用起始数据。
我目前正在使用命令行使用 cplex 和 pyomo pyomo -solver=cplex model.py data.dat 结果保存在文件 results.json 中。如何使用以前的结果作为起
我将 GAMS 与 CPLEX 优化器一起使用。在 CPLEX 优化器中有一个选项“iis”,以便它生成不可约的不一致约束集。如果我将 iis 选项设置为 1(或者我认为是 0 以外的任何值,但我只在
Docplex 和 CPLEX Python API 之间有什么区别?他们中的任何一个比另一个更快吗? 最佳答案 CPLEX Python API是围绕 C API 的轻量级包装器(又名,C 可调用库
是否可以在不调用 mip 求解器的情况下运行 cplex 预求解器来聚合问题?如果是,您能否提供一个使用 c 可调用库的示例? 最佳答案 是的,可以独立调用预求解。您要查找的函数是 CPXpresol
我是 LP 的新手,只是简单地使用过 PuLP在 Python 中。 为什么SCIP 3.2.1 - CPLEX 12.63之间有速度差异和 CPLEX 12.6.3 ? SCIP 不是仍然使用 CP
我已经使用GAMS很长时间了,但我无法在GAMS下使用CPLEX的所有功能。你能用 Pyomo 做到这一点吗?或者直接在 Python 中使用 CPLEX?谢谢! 最佳答案 使用 Pyomo 的优势是
我正在使用 CPLEX 求解线性二元优化模型。我已经用 MATLAB 和 JAVA 编写了模型。 JAVA和MATLAB编程得到的目标函数最优值是相同的。然而,最佳变量值是不同的。我的模型可能有多个最
我正在使用 CPLEX 12.8 为我的论文项目建模,但我遇到了无法解决的问题。我得到以下输出: CPLEX 12.8.0.0: integer infeasible. 1828 MIP simple
我必须使用 CPLEX Java API 解决以下问题: 我需要编写一个条件,该条件将返回一组整数变量的最小值(假设 x[i], i=1,2,...,n)但只考虑正数。 换句话说: 分钟{x[i] |
我正在尝试优化 CPLEX OPL 中的以下问题。我已经定义了参数和决策变量。但是,当我尝试制定目标函数和约束时,我似乎遇到了一个问题,因为我在目标函数调用行中收到错误“不能使用 int 的类型范围”
我遇到了交叉背包问题,其中需要通过最小化成本将一组元素中的最大数量的多个元素放入一个箱子中。我能够解决 CPLEX 中的优化问题。 但是,当问题由两个容器(具有不同的容量)组成时,我发现在 CPLEX
我正在开发一个用 Java 编写的 LP 并使用 cplex 作为求解器。找到最佳解决方案需要一些时间。如果我有一个计算速度更快的可行解决方案或者只是一个优化性降低的解决方案就足够了。 在CPLEX用
有没有办法在 cplex java 中获取两个不同决策变量的乘积并将其添加到目标函数中? 例如。 决策变量 -> x[i] 决策变量 -> y[j] -> x[i]*y[j] 这样的乘法应该是可能的,
我正在求解一个具有两种类型的变量的模型,x [i] [j]是ILOBOOL,而u [i]是ILOFLOAT。我正在尝试向此模型添加惰性约束。我设法以以下方式正确添加了惰性约束: std::string
我有一个 IloCplex 对象,我想使用 Cplex Java API 获取 IloObjective 的系数。 通过此代码,我获得了 IloObjective 和 IloNumExpr,但无法访问
我是 cplex 的新人,我正在尝试通过在约束中创建一个二进制变量来优化 x 的函数,这样: 如果 x[i] > 0 则 y[i] = 1 或如果 x[i] = 0 则 y[i] = 0 然后约束是
我是第一次使用 CPLEX Java API。 我想最小化某些索引上矩阵中值的总和,这是由条件给出的。 例如,如果我有矩阵 M = {{ 0, 1, 2, 1},{ 1, 2, 1, 0},{ 0,
我正在 cplex 上开发一个项目,情况是这样的: 这是一家化工厂,生产并销售 2 种最终产品 有 3 个 react 堆,每个 react 堆可以执行不同的任务,一次一个 目标函数使总利润最大化 解
我是一名优秀的程序员,十分优秀!