- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在java中使用cplex。我刚刚实现了一个程序,它与 cplex optimization studio 中的程序具有相同的目标函数和几乎相同的约束设置。
程序(旅行推销员问题)针对一个非常小的问题实例(3 个客户)运行。一旦实例变得更大一点,java(eclipse) 就会给我输出如下,但没有解决方案。
Tried aggregator 2 times.
MIP Presolve eliminated 617 rows and 607 columns.
MIP Presolve modified 13624 coefficients.
Aggregator did 6 substitutions.
Reduced MIP has 697 rows, 763 columns, and 18408 nonzeros.
Reduced MIP has 381 binaries, 238 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.16 sec. (79.02 ticks)
Probing fixed 252 vars, tightened 287 bounds.
Probing changed sense of 4 constraints.
Probing time = 0.08 sec. (23.50 ticks)
Cover probing fixed 29 vars, tightened 83 bounds.
Tried aggregator 2 times.
MIP Presolve eliminated 400 rows and 528 columns.
MIP Presolve modified 1532 coefficients.
Aggregator did 11 substitutions.
Reduced MIP has 286 rows, 224 columns, and 5117 nonzeros.
Reduced MIP has 96 binaries, 80 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.03 sec. (9.14 ticks)
Nodes Cuts/
Node Left Objective IInf Best Integer Best Bound ItCnt Gap
0 0 -1.00000e+037 0 -86.8576 0
Root node processing (before b&c):
Real time = 0.02 sec. (2.20 ticks)
Parallel b&c, 2 threads:
Real time = 0.00 sec. (0.00 ticks)
Sync time (average) = 0.00 sec.
Wait time (average) = 0.00 sec.
------------
Total (root+branch&cut) = 0.02 sec. (2.20 ticks)
同时,“唯一”的 cplex 程序仍然能够计算此实例的解决方案。
由于我对 cplex 和 java 比较陌生,所以我不确定如何解释此输出。
我想到了这一点:
-由于我的程序与前面提到的“只是”cplex 实现非常相似,因此约束数量不能太高并导致太大的计算量。
-当它解决一个小实例时,它还应该运行其他实例,这些实例适用于“只是”cplex 实现。
难道java不能解决一些问题,而cplex仍然可以吗?
编辑:
使用exportModel(filename.lp)后,我得到一个像这样的文件:
\ENCODING=ISO-8859-1
\Problem name: ilog.cplex
Minimize
obj: x1 - x2
Subject To
c1: x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17
+ x18 + x19 + x20 + x21 + x22 + x23 + x24 + x25 + x26 + x27 + x28 + x29
+ x30 + x31 + x32 + x33 + x34 + x35 + x36 + x37 + x38 + x39 + x40 = 1
c3: x77 + x78 + x79 + x80 + x81 + x82 + x83 + x84 + x85 + x86 + x87 + x88
+ x89 + x90 + x91 + x92 + x93 + x94 + x95 + x96 + x97 + x98 + x99
+ x100 + x101 + x102 + x103 + x104 + x105 + x106 + x107 + x108 + x109
+ x110 + x111 + x112 = 1
c5: x113 + x114 + x115 + x116 + x117 + x118 + x119 + x120 + x121 + x122
+ x123 + x124 + x125 + x126 + x127 + x128 + x129 + x130 + x131 + x132
+ x133 + x134 + x135 + x136 + x137 + x138 + x139 + x140 + x141 + x142
+ x143 + x144 + x145 + x146 + x147 + x148 = 1
c7: x185 + x186 + x187 + x188 + x189 + x190 + x191 + x192 + x193 + x194
+ x195 + x196 + x197 + x198 + x199 + x200 + x201 + x202 + x203 + x204
+ x205 + x206 + x207 + x208 + x209 + x210 + x211 + x212 + x213 + x214
+ x215 + x216 + x217 + x218 + x219 + x220 = 1
[...]
这只是 8771 行的简短摘录。我看不出任何明显的错误。我了解到可以将此 .lp 文件或 .sav 文件导入 cplex 交互式优化器以改进程序,但找不到任何进一步的信息。
调试和改进程序的典型方法是什么?
编辑:
更改一些小内容并添加目标值的上限后,我得到如下输出(程序运行 3 个实例):
Instanz: 1
Row 'c2023' infeasible, all entries at implied bounds.
Presolve time = 0.02 sec. (2.66 ticks)
Instanz: 2
Row 'c2023' infeasible, all entries at implied bounds.
Presolve time = 0.02 sec. (2.70 ticks)
Instanz: 3
Infeasibility row 'c1': 0 = 1.
Presolve time = 0.00 sec. (0.45 ticks)
我不太确定如何阅读此内容。我的程序类和导出模型的分析都没有这么多行。
在哪里可以找到 c2023 或 c1 行?
最佳答案
分析 .lp(或 .sav)文件,假设找不到可行的解决方案。从命令行启动 cplex。
cplex> read filename.lp
cplex> optimize
..... [output log]
cplex> conflict
cplex> write filename.iis
如果 filename.lp 有一个不可行的解决方案,那么 filename.iis 将包含约束的“不可约不可行子集”,这通常可以让您更好地了解问题所在。运行交互式 cplex 时,您应该获得与在 Java 程序中执行的操作类似的行为。 您可以通过命名变量和约束来使 .lp 文件更有用。您可以使用 .setName() 方法,或使用构造函数参数。
关于java - cplex java,未找到解决方案;如何使用exportModel()改进程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18349516/
这个问题在这里已经有了答案: Different ways of loading a file as an InputStream (6 个答案) 关闭 8 年前。 在我的 gradle java
给定一个 User 类: class User end 我想使用 .class_eval 定义一个新常量.所以: User.class_eval { AVOCADO = 'fruit' } 如果我尝试
这可能听起来很奇怪,但我正在开发一个需要查找 div 内的元素或 div 本身的插件。 脚本根据用户选择查找元素,但内容(包括标记)是可变的。因此脚本将按如下方式查找元素: $('.block').f
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
我需要在按我自己的函数排序的对的多集中查找并删除一个值。显然, .find 总是将迭代器返回到末尾,而不是返回到搜索到的值。有小费吗?这是函数: struct cmp { bool operato
求助!我将如何通过遍历查看字符并计算有效字符出现之前的下划线数量来查找和删除前导下划线。以及从字符串末尾向后迭代以查找任何尾随下划线。 我可以使用下面的方法来删除下划线,但是如何迭代才能找到下划线。
如果你在 $(xml) 中有下面的 xml,你会变得懒惰: $(xml).find("animal").find("dog").find("beagle").text() 在 jQuery 中是否有类
你如何找到4个文件的交集? 我用了grep -Fx -f 1.txt 2.txt 3.txt 4.txt ,但它似乎只适用于 2 个文件。同样comm -12 1.txt 2.txt无法扩展为 4 个
我已经完成了标记的姿势估计并获得了 rvec 和 tvec 值。我不知道如何找到它的中心,因为我需要绘制一个需要中心值的圆柱体。 我该怎么做? 最佳答案 标记的 tvec 是标记从原点的平移 (x,y
我有一个任务,我需要找到 2 个单链接(单对单)列表的交集。我还必须为 2 个双向链接(双重 vs 双重)列表执行此操作: 对于单链表,我使用 mergeSort() 对两个列表进行排序,然后逐项比较
我是 R 的新手,我有一个 100x100 的方阵。我想找到这个矩阵的最大特征值。我试过了 is.indefinite(x) 但是它写 is.indefinite(x) : argument x is
您好,我是 svg 和 JavaScript 的新手,当鼠标位于 svg 上方时,我试图使一些 svg 元素弹出(通过缩放),反之亦然,当鼠标离开 svg 元素时。 我已经能够通过使用转换使 svg
我正在尝试为 scala 项目编写一个类,但在多个地方使用 class、def、while 等关键字出现此错误。 它发生在这样的地方: var continue = true while (conti
我有两个 pandas 数据框,它们只取自一列并将日期列设置为索引,所以现在我有两个 Series。我需要找到这些系列的相关性。 这里有几行来自dfd: index change 2018-
我正在尝试调整我的 Vagrantfile,因此如果它丢失,它会自动在项目根目录中创建一个文件夹。创建文件夹没问题,但我无法找到创建该文件夹的位置。 我发现此信息可在 Vagrant::Environ
我正在尝试在 jquery 中找到 Test3 的位置,请有人引导我走上正确的道路。 我需要jquery来显示5 Test7 Test2 Test6 Test5 Test3 Test8 谢谢 最佳
大家早上好 我有一个像这样的图像列表: 使用 jQuery 如何查找 ul#preload 中包含特定字符串(例如“green”)的所有图像 src 类似... var new_src = j
我正在开发一个修改 Excel 文件的应用程序。 如何找到任意行中最后使用的单元格? 示例:行号 => 5 中最后使用的单元格 最佳答案 要找到一行中的最后一个单元格,您需要 Range 的 End
我刚刚陷入 react native ,需要一些帮助才能在找到 token 时导航到 protected 屏幕。我应该在哪里寻找应用程序加载时的 token ?如何在不多次调用导航的情况下导航用户一次
非常奇怪...此页面是 protected 内容还是我不知道的内容?我尝试单击下一页 anchor 。 参见this page first. 我试图用这个来抓取元素 var buttonNext =
我是一名优秀的程序员,十分优秀!