在 Gurobi 中附加 .lp 文件

Appending .lp files in Gurobi

我正在尝试解决 Gurobi 上的 MIP,但构建时间非常长。我有一个看起来像这样的循环(我有一个显式循环,但这个内置函数更优化):

m.addConstrs((quicksum(X_rdc_to_dist[j,i,s,t] for j in rdc_list) == demand_fcst_df.loc[(demand_fcst_df['ADDR_BOOK_N'] == i)&
                                           (demand_fcst_df['SKU'] == s)&
                                           (demand_fcst_df['DATE'] == t),'CASES'].sum())
             for i in dist_list
             for s in sku_list
             for t in time_periods_list
             )

每个列表的长度如下:

len(rdc_list) = 10
len(cdc_list) = 5
len(sku_list) = 20
len(dist_list) = 1333
len(time_period_list) = 100

这个循环的构建时间非常长。 Gurobi 不支持同一模型的多线程构建。但是,它确实允许在不同的线程上构建单独的模型。有没有办法构建单独的 .lp 文件(可以将其保存为 .txt 文件),然后将它们附加到一个模型中并解决它? 我正在努力减少构建时间。

还有其他支持多线程的开源包吗?我可以使用它构建一个 .lp 文件,然后使用 Gurobi 解决它。

.loc 函数正在减慢循环。我将 DataFrame 转换为 dict 并将其保存为 pickle (仅一次)。然后每次模型运行时,我都会从 pickle 中读取数据。如果需要更改数据,我会创建一个新的 pickle