gpt4 book ai didi

python - 关于整数和二进制设置键的 cvxopt.glpk.ilp 文档

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:00 24 4
gpt4 key购买 nike

我有一个混合整数规划问题(使用列生成来削减库存),我已经在 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)

  1. [ 0.00e+00 0.00e+00 5.00e-01 5.00e-01 5.00e-01 -0.00e+00 ... ]

  2. [ 0.00e+00 0.00e+00 5.00e-01 5.00e-01 5.00e-01 -0.00e+00 ... ]

  3. [ 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com