首页 > 解决方案 > Gurobi 多处理

问题描述

我正在尝试实现多处理以并行运行 9 个场景。我有一个模型,根据每个场景更改约束。我试图在每次迭代中并行运行这些场景。我从 Silke Horn 中找到了以下代码。但是,我需要迭代地运行这些场景,并且此代码需要为每次迭代定义模型。有没有另一种方法可以在迭代开始之前定义一个模型并将其用于多处理?

import multiprocessing as mp
import gurobipy as gp
def solve_model(input_data):
    with gp.Env() as env, gp.Model(env=env) as model:
        # define model
        model.optimize()
        # retrieve data from model
if __name__ == '__main__':
    with mp.Pool() as pool:
        pool.map(solve_model, [input_data1, input_data2, input_data3]

标签: pythonoptimizationmultiprocessinggurobi

解决方案


感谢您的评论。这行得通吗?我预先定义模型,然后在函数内创建它的副本以进行多处理。

import multiprocessing as mp 
import gurobipy as gp 
#define model as mdl 
def solve_model(input_data): 
    with gp.Env() as env, gp.Model(env=env) as model: 
        new_mdl = mdl.copy() 
        new_mdl.optimize() # retrieve data from model 
        if name == 'main': 
        with mp.Pool() as pool: 
        pool.map(solve_model, [input_data1, input_data2, input_data3]

推荐阅读