我对Pyomo和优化都很新 . 我试图解决一个迭代的局部搜索算法,我必须多次解决“相对较小”的优化问题 . 目前,我已经实现了一个循环,每次,我制定优化问题并用Gurobi解决它 . 但是,我想知道是否有一种“并行化”的方式来解决这个问题,因为本地搜索的结果并没有相互影响 . 我查看了ThreadPoolExecutor和ProcessPoolExecutor . 第一个没有提高速度,而第二个给我一些错误 . 你有什么建议吗?这些是几行代码,只是为了给出一个想法 . 谢谢 .
def task(input)
###optimization formulation
#optimization solver (gurobi)
return (result_optimization)
def main():
with concurrent.futures.ProcessPoolExecutor(max_workers=2) as executor:
future_task={executor.submit(task,number): number for number i list_local_searches}
for future in concurrent.futures.as_completed(future_task):
results_local_searches.append(future.result())
if __name__ == '__main__':
main()
1 回答
您可能会遇到许可问题,具体取决于您的Gurobi许可 . 凭借我的学历,我目前每台机器只能运行一个Gurobi流程 .
有一个站点许可证可以解决这个问题,但你要感受到正确设置它的权力 .