标签: glpk

Python混合整数线性规划

是否有适用于Python的混合整数线性规划(MILP)求解器?

GLPK python可以解决MILP问题吗?我读到它可以解决混合整数问题.
我对线性编程问题很新.所以我很困惑,如果混合整数规划与混合整数线性规划(MILP)不同,则无法区分.

python linear-programming glpk integer-programming

67
推荐指数
3
解决办法
5万
查看次数

Python中的热启动线性编程?

我正在研究一个中等大小的线性程序(70k x 10k稀疏约束矩阵)并且需要运行大量场景,在我当前的解决时间需要大约2,000个CPU小时.因为变化相对较小(最多改变目标函数的约10%,即c矩阵),使用热启动可以显着加快求解时间,但我无法找到快速热启动LP求解器蟒蛇.

我一直linprog在使用Matlab和Python中的CVXOPT lp求解器,使用CVXOPT中的GLPK单纯形求解器获得最佳性能.但是,即使使用GLPK可以进行热启动,GLPK的CXVOPT包装也不会实现热启动.虽然CVXOPT在其原生求解器中支持热启动,但这明显慢于GLPK中的冷启动.我无法在PuLP中找到热启动选项或在Python模块中找到热启动的其他参考.conelp

有没有人有经验适应/修补CVXOPT用GLPK做热启动,或者可以展示如何在其他Python优化包中做一个热门的开始?

在这里这里已经提出类似的问题,但没有足够的细节来产生有用的答案.

python matlab mathematical-optimization glpk cvxopt

9
推荐指数
0
解决办法
842
查看次数

无法在OSX 10.8/Ubuntu 14.x上编译pyglpk

我正在努力在OSX 10.8上编译PyGLPK.我已经通过自制软件安装了glpk和gmp.我已经验证/ usr/local/include中存在以下文件

gmp.h
gmpxx.h
glpk.h
Run Code Online (Sandbox Code Playgroud)

但我仍然得到以下错误.

python setup.py build
running build
running build_ext
building 'glpk' extension
clang -fno-strict-aliasing -fno-common -dynamic -I/usr/local/include -I/usr/local/opt/sqlite/include -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/include -Isrc -I/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/glpk.c -o build/temp.macosx-10.9-x86_64-2.7/src/glpk.o -m32
clang -fno-strict-aliasing -fno-common -dynamic -I/usr/local/include -I/usr/local/opt/sqlite/include -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/include -Isrc -I/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/lp.c -o build/temp.macosx-10.9-x86_64-2.7/src/lp.o -m32
In file included from src/lp.c:24:
src/kkt.h:30:3: error: unknown type name 'LPXKKT'
  LPXKKT kkt;
  ^
src/lp.c:182:18: warning: implicit declaration of function 'lpx_read_model' is invalid …
Run Code Online (Sandbox Code Playgroud)

python macos glpk

8
推荐指数
1
解决办法
1763
查看次数

GLPK:尝试安装R软件包时没有此类文件或目录错误

我试图安装sparkTable在R 3.1.0依赖Rglpk.我在系统上手动安装了GPLK并添加了libs文件夹,LD_LIBRARY_PATH然后进入R install.packages("sparkTable")程序.我在安装过程中遇到此错误.有任何想法吗?

* installing *source* package ‘Rglpk’ ...
** package ‘Rglpk’ successfully unpacked and MD5 sums checked
** libs
/bin/sh: line 0: cd: GLPK: No such file or directory
make: *** [GLPK.ts] Error 1
ERROR: compilation failed for package ‘Rglpk’
* removing ‘/opt/R/R-3.1.0/lib64/R/library/Rglpk’
ERROR: dependency ‘Rglpk’ is not available for package ‘sparkTable’
* removing ‘/opt/R/R-3.1.0/lib64/R/library/sparkTable’
Run Code Online (Sandbox Code Playgroud)

r glpk

8
推荐指数
4
解决办法
1万
查看次数

PyInstaller .exe 文件什么都不做

3天后,我无法将python程序打包成.exe文件。我试过 py2exe(它不断错过模块)和 PyInstaller。

这是复杂的部分。我的程序使用了许多额外安装的模块(coopr、pyomo、openpyxl、glpk、cbc、pyutilib、numpy 等)。这些反过来又导入了各种其他东西,我无法追踪它(PyInstaller 警告日志列出了 676 行丢失或可能不需要的模块。)

但是,我得到了(通过将“缺失”模块的导入添加到我的程序中)一个 .exe 版本,它通过双击或从命令行运行,没有打印任何错误。

问题是,程序什么都不做。我有一个包含在构建中的输入文件,我的程序读入该文件,进行一些(密集)计算,然后在同一目录中创建一个 .csv 输出文件。它作为 .py 文件工作。我的 .exe 什么也不做。

所以,如果你能告诉我出了什么问题,请继续。如果没有,我想知道任何有用的步骤或想法可以尝试。在这一点上,我已经用尽了可以从程序和文档中找到的反馈。

python cmd linear-programming pyinstaller glpk

8
推荐指数
2
解决办法
1万
查看次数

如何在Windows 10中使用带有cvxopt的GLPK?

我使用64位Windows 10.我glpk-4.64为Windows 下载.我将文件解压缩到我的文档中.我将此文件夹中的w64路径添加到Windows的环境变量中.我通过执行以下命令检查glpk是否在命令行中工作:

C:\Users\userz>glpsol
GLPSOL: GLPK LP/MIP Solver, v4.64
No input problem file specified; try glpsol --help
Run Code Online (Sandbox Code Playgroud)

所以我觉得glpk安装得当.

然后我cvxopt在命令行中使用它安装:

python -m pip install cvxopt
Run Code Online (Sandbox Code Playgroud)

然后安装cvxopt.

当我做:

import cvxopt.glpk
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

import cvxopt.glpk
ImportError: No module named glpk
Run Code Online (Sandbox Code Playgroud)

那么,我该如何解决这个问题呢?

python glpk cvxopt

6
推荐指数
1
解决办法
684
查看次数

构建 glpk 错误:无法为使用 PEP 517 且无法直接安装的 glpk 构建轮子

尝试安装 glpk 时出现以下错误。我尝试了很多方法来解决它,但我找不到解决方案

Collecting glpk
  Using cached glpk-0.4.5.tar.gz (152 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Building wheels for collected packages: glpk
  Building wheel for glpk (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: 'c:\users\ruizm\appdata\local\programs\python\python38-32\python.exe' 'c:\users\ruizm\appdata\local\programs\python\python38-32\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\ruizm\AppData\Local\Temp\tmpk6uqubal'
       cwd: C:\Users\ruizm\AppData\Local\Temp\pip-install-k_surgky\glpk
  Complete output (12 lines):
  running bdist_wheel
  running build
  running build_ext
  building 'glpk' extension
  creating build
  creating build\temp.win32-3.8
  creating build\temp.win32-3.8\Release
  creating build\temp.win32-3.8\Release\src
  C:\Program Files (x86)\Microsoft …
Run Code Online (Sandbox Code Playgroud)

python glpk

6
推荐指数
0
解决办法
408
查看次数

GLPK 线性规划

我正在研究一些非常大规模的线性规划问题。(矩阵目前大约为 1000x1000,这些是“迷你”矩阵。)

我以为我的程序运行成功了,但我才意识到我得到了一些非常不直观的答案。例如,假设我要在一组约束 x+y<10 和 y+z <5 下最大化 x+y+z。我运行它并获得最佳解决方案。然后,我运行相同的方程,但有不同的约束:x+y<20 和 y+z<5。然而在第二次迭代中,我的最大化减少了!

我已经煞费苦心地经历了,并向自己保证约束加载正确。

有谁知道问题可能是什么?

我在关于 lpx_check_kkt 的文档中找到了一些东西,它似乎告诉你你的解决方案何时可能是正确的或高可信度(或低可信度),但我不知道如何使用它。

我尝试并收到错误消息 lpx_check_kkt 未定义。

我正在添加一些代码作为附录,希望有人能找到错误。这样做的结果是它声称已经找到了一个最佳解决方案。然而,每次我提高上限时,它都会变得不太理想。
我已经确认我的界限是上升而不是下降。

    size = 10000000+1
    ia = intArray(size)
    ja = intArray(size)
    ar = doubleArray(size)
    prob = glp_create_prob()

    glp_set_prob_name(prob, "sample")
    glp_set_obj_dir(prob, GLP_MAX)
    glp_add_rows(prob, Num_constraints)
    for x in range(Num_constraints):
            Variables.add_variables(Constraints_for_simplex)
            glp_set_row_name(prob, x+1, Variables.variers[x])
            glp_set_row_bnds(prob, x+1, GLP_UP, 0, Constraints_for_simplex[x][1])
            print 'we set the row_bnd for', x+1,' to ',Constraints_for_simplex[x][1]
    glp_add_cols(prob, len(All_Loops))
    for x in range(len(All_Loops)):
            glp_set_col_name(prob, x+1, "".join(["x",str(x)]))
            glp_set_col_bnds(prob,x+1,GLP_LO,0,0)
            glp_set_obj_coef(prob,x+1,1)
    for x in range(1,len(All_Loops)+1):
            z=Constraints_for_simplex[0][0][x-1] …
Run Code Online (Sandbox Code Playgroud)

python linear-programming python-2.7 glpk

5
推荐指数
1
解决办法
1909
查看次数

添加许多约束时,PuLP非常慢

我正在尝试使用PuLP,但是需要50秒才能添加4000个约束(67个变量).解决问题只需要几分之一秒.

我们希望使用PuLP轻松测试一大堆问题上的几个求解器.

它应该花这么长时间服用PuLP吗?直接使用PyGLPK只需要一小部分时间,包括设置和求解,所以我希望不会.我该怎么做才能提高PuLP中这一步骤的效率?


更新

我的约束矩阵非常稀疏,并且通过仅包括非零系数,我能够将该特定问题的建立时间减少到4或5秒.我仍然能够编写自己的.lp或.mps格式的文件,用cbc或glpsol子进程解决问题,并且比PuLP更有效地解析解决方案,因为我可以在几毫秒内编写输入文件PuLP需要几秒钟.我仍然不确定为什么会这样.

python linear-programming glpk pulp

5
推荐指数
2
解决办法
3833
查看次数

CVXPY:抑制 GLPK 的输出

我正在使用 cvxpy,自从更新到 1.0.6 以来,我在调用 GLPK 时得到了不需要的输出。

import cvxpy as cvx
x = cvx.Variable(2)
p = cvx.Problem(cvx.Minimize(x[0]), [x[0] + x[1] == 1, x[0] - x[1] >= 1])
p.solve(solver = cvx.GLPK)
Run Code Online (Sandbox Code Playgroud)

在 IPython3 中,这会创建输出

GLPK Simplex Optimizer, v4.61
2 rows, 2 columns, 4 non-zeros
      0: obj =   0.000000000e+00 inf =   2.000e+00 (2)
      1: obj =   1.000000000e+00 inf =   0.000e+00 (0)
*     2: obj =   1.000000000e+00 inf =   0.000e+00 (0)
OPTIMAL LP SOLUTION FOUND
Out[5]: 1.0
Run Code Online (Sandbox Code Playgroud)

在 0.4.11 中,我只得到了1.0打印,我想恢复这种行为。对于其他求解器,有该verbose选项,但对于 …

glpk cvxpy

5
推荐指数
0
解决办法
477
查看次数