- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个混合整数规划问题(使用列生成来削减库存),我已经在 AMPL 中解决了这个问题,并且我使用 cvxopt 移植到了 Python。 CVXOPT“op”没有提供我需要的二进制变量选项,所以我用 GLPK 扩展它以使用“ILP”。我得到 ilp status = "LP relaxation is primal infeasible",我知道这是不正确的,因为之前的 AMPL 解决方案。所以我知道我配置不正确。我试图通过玩弄 stackoverflow 问题 The integer linear programming(ILP) function in CVXOPT returns non integers 中的示例来理解整数“I”和二进制“B”键的使用.
我的问题是,I&B 键之间有什么区别,例如:
stat, sol1 = glpk.ilp(W, G.T, h, I=set([0, 1]))
stat, sol2 = glpk.ilp(W, G.T, h, I={0,1})
stat, sol3 = glpk.ilp(W, G.T, h)
有以下 3 种不同的解决方案:(print(soli.T
)
[ 0.00e+00 0.00e+00 5.00e-01 5.00e-01 5.00e-01 -0.00e+00 ... ]
[ 0.00e+00 0.00e+00 5.00e-01 5.00e-01 5.00e-01 -0.00e+00 ... ]
[ 5.00e-01 5.00e-01 5.00e-01 5.00e-01 5.00e-01 -0.00e+00 ... ]
我查看了help(ilp)
,但它只是说 I&B 是整数和二进制变量的索引集,(我理解),但它没有描述什么如果您同时使用 (I&B),或者它们重叠,或者一个或另一个是空集,或者未定义,则会发生这种情况。我会想到上面的 sol1
=sol2
,因为它只是定义集合 I 的两种不同方式。我假设 sol3
都是整数并且没有二进制变量,因为 B
未定义,但我没有任何文档可以证实这一点。
最佳答案
我找到了问题的答案,所以我将其张贴在这里以防其他人对 cvxopt.glpk.ilp() 和 I & B 参数有相同的问题。
A: (status, x) = ilp(c, G, h, A, b)
x 都是 float
B: (status, x) = ilp(c, G, h, A, b, I)
x 是 float 和整数的混合,具体取决于集合 I 中的索引
C(状态,x)= ilp(c,G,h,A,b,I,B) x 是 float 、整数和二进制的混合,具体取决于 集合 I 和集合 B 中的索引。
如果集合 I 和 Boverlap,则 B 取代。
问题 #33785396 提供了一个示例,我将在此处重复使用。来自于: https://en.wikipedia.org/wiki/Integer_programming#Example
For A: the result is [1.8, 2.8] all float
For B: with I={0}, the result is [2.0, 2.67] int & float
For B: with I={1}, the result is [2.67, 2.0] float & int
For B: with I={0,1}, the result is [2.0, 2.0] int & int
For C: with I={0,1} and B={0}, the result is [1.0, 2.0] binary & int
For C: with I={0,1} and B={0,1}, the result is [0.0, 1.0] binary & binary
关于python - 关于整数和二进制设置键的 cvxopt.glpk.ilp 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48834817/
我的代码中发生了一些奇怪的事情。我创建了一个函数来动态创建 MIP 问题以供 GLPK 解决。问题是在代码的某些部分 JVM 崩溃了。 调试后,我发现崩溃恰好发生在我创建 intArray (GLPK
我需要编写一个整数程序。它非常简单,但问题是几乎没有关于如何使用可调用库为 GLPK 编写整数程序的好信息,更不用说 GLPK# 了。 我的整数程序看起来非常像这样: Maximise: X[0] +
我正在尝试解决 GLPK 中的问题,但它给了我这个消息“问题没有主要可行的解决方案”。您将在下面找到该程序。给我错误的约束是“约束 6”,但我不知道如何修复它。谢谢你们的帮助 param n, int
我希望这对某人来说是显而易见的。我只使用过 GLPK/MathProg。 我无法弄清楚 GNU MathProg(在 GLPK 内)中的语法来执行以下操作,例如: set PartsOfWeek; s
我刚刚编写了一个 python 脚本来使用 igraph 模块执行优化模块,这个函数使用了 GLPK 库,但是即使在安装了 python-glpk 和几乎所有与 glpk 相关的包之后我也会收到这个错
我无法在一个名为 dist 的包含示例上运行我通过 apt-get 安装的 GLPK 求解器 (glpsol)。它抛出以下内容: $ glpsol dist.mod GLPSOL: GLPK LP/M
我有一个线性问题,我想在 Java 上使用 GLPK 获得最佳对偶解决方案。我试过这个: parm = new glp_smcp(); parm.setMeth(GLPKConstants.GLP_D
我一直在尝试在我的 Haskell 项目中使用glpk-hs,但我完全不知道如何去做。我正在使用 stack 来运行我的程序,我的困惑很可能来自于我对其工作原理缺乏了解。 话虽这么说,我已经下载了gl
我在 Linux 下使用 GLPK 来解决一些线性规划问题。在我的一个限制中,我有: s.t. example: binary_var+binary_val 0 还是 1? 最佳答案 如果binary
我正在尝试在我的 java 项目中使用 GLPK。我点击了这里的链接https://wiki.nps.edu/pages/viewpage.action?pageId=113606659安装和配置 j
我正在使用 Glpk java,我必须解决这个问题(原始) \* Problem: Branch and Bound Problem *\ Maximize z: + 0.5 x1 + 0.5 x2
如何在我的控制台或文件上打印 java-glpk 中所有已解决的问题? 类似这样的事情:(此输出来自 gusek) ------ ------------ ------------- -----
GLPK 是否可以将解决方案分散到多个等成本变量上? 假设我在 myprog 中有这段代码: from pymprog import * begin() loads = var('loads', 3)
我在我的程序中使用 GNU 线性编程工具包。一切正常,但是当我用 valgrind 检查程序时,我发现了一些内存泄漏: ==7051== 160 bytes in 1 blocks are still
我正在使用 Glpk java 来解决 LP 松弛问题。 奇怪的是,有时它可以工作,但有时 JVM 会崩溃。当它崩溃时,我遇到了这个错误: # A fatal error has been detec
较新版本的 glpk 没有 LPX api,而旧版软件包需要它。我如何将旧包(如 COBRA )与新版本的 glpk 一起使用? 请注意,COBRA 可用于 MATLAB 和 Python。两者都需要
我正在尝试安装 sparkTable在依赖于 Rglpk 的 R 3.1.0 中.我在系统上手动安装了 GPLK 并将 libs 文件夹添加到 LD_LIBRARY_PATH在为 install.pa
我正在使用 GLPK C API 来解决混合整数规划问题。有没有办法以人类可读的格式打印目标/约束以进行调试? 最佳答案 也许最好的格式是 CPLEX LP format 。它看起来像这样: Maxi
我正在尝试在我的 java 项目中使用 GLPK。我点击了这里的链接https://wiki.nps.edu/pages/viewpage.action?pageId=113606659安装和配置 j
我找到了很多关于如何为求解器指定模型(问题/约束)和从数据文件读取参数的 GLPK for Java 示例,但关于编程参数输入/输出的内容很少。在我的例子中,我需要以编程方式将值(权重和值的数组)提交
我是一名优秀的程序员,十分优秀!