parallel-processing - Julia - 并行数学优化器

标签 parallel-processing julia linear-programming glpk

我通过 Julia 使用 GLPK,并且我需要重复优化相同的 GLPK.Prob。 每次优化之间的变化是某些变量组合被固定为 0

简单地输入伪代码

lp = GLPK.Prob()
variables_to_block = [[1,2,3], [2,3], [6,7], [19,100,111]...]
for i in variables_to_block 
    block_vars(lp, i)
    simplex(lp)
    restore_vars(lp, i)
end 

当我运行这个程序时,看起来 CPU1 充当调度程序,保持在 9-11% 的范围内,CPU3 和 CPU4 上的负载在 0 和 100% 之间交替,但不会同时发生...... CPU2的负载保持在0%

这可能需要一些时间,我想使用所有核心

但是,使用 Julia 的并行功能有点麻烦,特别是对于 lp 模型,因为它们涉及指针,因此(据我所知)它们不能在内核之间轻松复制

有没有办法设置 GLPK 解算器二进制文件(或其他东西)以自动尝试充分利用所有核心?通过这种方式编译GLPK,或者任何其他方式

最佳答案

据我所知,GLPK是not multithreaded 。如果您必须有一个多线程求解器,请考虑使用较新的求解器,例如 GurobiMOSEK 。他们拥有免费的学术许可证。

如果商业求解器不符合您的目的,那么也许可以尝试 Splitting Cone Solver 。它是根据 MIT 许可证免费发布的。

否则,评论中的建议(例如批处理)可能是您唯一的资源。

关于parallel-processing - Julia - 并行数学优化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40082242/

相关文章:

c# - 并行化直方图函数

julia - 将绘图存储在数组中

android线性规划lp_solve库

python - PULP - 如何获取 CPLEX 求解器状态而不是 LpStatus 状态?

python - 报告 Dask 任务的进度

parallel-processing - 两个大文件彼此的平行余弦相似度

algorithm - 有哪些简单的令人尴尬的并行算法?

unicode - 在 PyPlot.jl 中,如何让 unicode 字符正确显示?

macros - 将字符串内插值传递给宏

python - python中的数值精确线性编程用于检查点是否可以线性分离?