猿问

如何在 python 中使用 Gurobi 的 MIPGap 和 TimeLimit?

我正在研究大规模 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 csv

import geopandas as gpd

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.patches as mpatches

from pandas.core.common import flatten

import 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))

  

绝地无双
浏览 363回答 2
2回答

喵喵时光机

或者,您可以调用模型的setParam()方法:model.setParam('MIPGap', 0.05) model.setParam('Timelimit', 300)

慕容708150

您需要在调用 Model.optimize() 之前设置参数。此外,MIPGap 和 TimeLimit 的单位分别是分数和秒。所以你的代码应该是:model.Params.MIPGap = 0.05    # 5%model.Params.TimeLimit = 300  # 5 minutesmodel.optimize()
随时随地看视频慕课网APP

相关分类

Python
我要回答