【发布时间】:2018-08-25 18:46:05
【问题描述】:
我正在遵循here 的步骤,以便使用我所有的计算能力(10 核 Intel i9 CPU)并求解单实例抽象 Pyomo 模型。但是,求解器似乎只使用一个 CPU 内核,需要 2 天以上才能返回 50 个节点输入的解决方案(10 个节点只需要几秒钟。)关于使 Pyomo 模型运行的任何帮助都可用CPU 内核?
谢谢
【问题讨论】:
-
哪个求解器?怎么编译的?怎么叫?您对收益有何期望? (我不希望超过 2 或类似的加速;但这当然取决于许多细节)
-
取决于求解器和模型。一些求解器是单线程的,另一些是并行运行的。通常,MIP 模型可以从并行处理中获益良多。 LP 没有那么多(一些内点方法做得很合理)。请注意,您需要大量内存才能让求解器在多个内核上并行运行模型。
-
除了@sascha 的问题,你能告诉我们一些关于当前时间的事情吗?生成 Pyomo 模型需要多长时间?在求解器中花费了多少时间?如果 Pyomo 一直持续下去,那可能是由于您声明约束的方式相对容易解决的问题。另外,什么样的模型(LP/MIP/NLP/MINLP?随机?)?
-
我正在处理一个 MILP 模型并使用 GLPK。模型几乎是立即创建的,求解器调用部分如下
opt = SolverFactory('glpk') instance = model.create_instance("scenario1.dat") results = opt.solve(instance, tee=True) instance.solutions.load_from(results)正如所料,模型仍在运行(现在已经超过 2 天),我的 CPU 使用率低于 20%,这只是少数核心,所以我只想知道它当前是否正在并行处理,或者是否有余地来改善其运行时间。 -
GLPK 是一个串行求解器(即单线程)。您可以尝试 CBC 或 Cplex 或 Gurobi 等商业求解器。这些求解器具有并行功能。
标签: python parallel-processing mathematical-optimization pyomo