我正在研究大規模 MILP。因此,我必須將時間限制設置為合理的值,或者必須將 MIPGap 設置為合理的水平。我已經知道 gurobi 的文檔了。MIPGap:https://www.gurobi.com/documentation/6.5/refman/mipgap.html時間限制:https://www.gurobi.com/documentation/8.0/refman/timelimit.html#parameter :TimeLimit當 MIPGap Gurobi 在最佳百分比范圍內找到解決方案時,它將停止TimeLimit Gurobi 將在一定時間后停止。但是您能否給我發送一個示例,其中將時間限制設置為 5 分鐘或將 MIPGap 設置為 5%?我不知道如何具體實現這些角色?請幫助我,我對 python 很陌生我嘗試過,但這不起作用 model.Params.TimeLimit = 5
model.setParam("MIPGap", mipgap)這是我的模型的簡短版本from gurobipy import * import csvimport geopandas as gpdimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.patches as mpatchesfrom pandas.core.common import flattenimport math################################# SOLVE function START ###################################################################def solve( vpmaint, wpunit, wuunit, vumaint, kfuel, koil, kbio, hb, ht, cj, ci, zinvestp, zinvestu, DEMAND, DEMANDM, LOCATION, SOURCE, BTYPE, SOURCEM, osi, oij, ojm ): model = Model("Biomass to liquid supply chain network design")################################# SOLVE function END ########################################################################################################################## variable section START #####################################################################################################binary variables ############################# Binary 1-2 #####################################################binary 1: Pyrolyse i with capacity p open? fpopen = {} for i in LOCATION: for p in R: fpopen[i,p] = model.addVar(vtype = GRB.BINARY,name = "fpopen_%s_%s" % (i,p))#binary 2: Upgrading j with capacity r and technology t open? fuopen = {} for j in LOCATION: for r in R: for t in TECHNOLOGY: fuopen[j,r,t] = model.addVar(vtype = GRB.BINARY,name = "fuopen_%s_%s_%s" % (j,r,t))
2 回答

喵喵時光機
TA貢獻1846條經驗 獲得超7個贊
或者,您可以調用模型的setParam()
方法:
model.setParam('MIPGap',?0.05) model.setParam('Timelimit',?300)

慕容708150
TA貢獻1831條經驗 獲得超4個贊
您需要在調用 Model.optimize() 之前設置參數。此外,MIPGap 和 TimeLimit 的單位分別是分數和秒。所以你的代碼應該是:
model.Params.MIPGap = 0.05 # 5%
model.Params.TimeLimit = 300 # 5 minutes
model.optimize()
添加回答
舉報
0/150
提交
取消