python - 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]
解决方案
感谢您的评论。这行得通吗?我预先定义模型,然后在函数内创建它的副本以进行多处理。
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]
推荐阅读
- python - Python ADAL acquire_token_with_client_credentials 刷新令牌?
- php - 在php中将word doc转换为pdf时出错
- sql - 当 WHERE 子句依赖于旧值时,Oracle 中同时更新的一致性
- tsql - TSQL - 在全新的数字集中更新具有重复项的列
- python - 如何有效地处理 Python3 中的大列表?
- mysql - 从索引表中高效查询
- c# - 为什么要为类编写扩展方法而不是直接更改实现?
- php - 如何从codeigniter中的多个数组创建新数组?
- php - 使用 XAMPP 的 PHP 中的数据库连接问题
- javascript - 使用 WebSocket 的简单 PHP 聊天