PuLP中MIP车辆路线问题的高级启发式方法

时间:2020-04-08 00:21:28

标签: python gurobi heuristics pulp mixed-integer-programming

我目前正在尝试加快MIP的速度。我正在考虑的一种方法是使用PuLP实现cut回调启发式(将大于0.9的宽松整数变量四舍五入的方法)。不幸的是,我不相信PuLP可以调用这种功能,并且我已经研究了mip模块和dippy,但是我不想跳到这些功能。因此,作为旁注,如果有人知道如何使用PuLP本地完成此操作,请告诉我...

这使我想到了主要问题。由于PuLP是包装器,并且可以与其他求解器一起使用,因此我确实看到Gurobi具有这样的功能,并且能够使用以下代码从PuLP将代码调用到Gurobi:

Lp_prob = plp.LpProblem('Problem', plp.LpMinimize) 
sd = plp.solvers.GUROBI(mip=True)
sd.actualSolve(Lp_prob, callback=mycallback)

这是我要调用的函数:

def mycallback(model, where):
    model._vars = model.getVars()
    if where == GRB.Callback.MIPNODE:
        for x in model._vars:
            if model.cbGetNodeRel(x) > 0.9 and model.cbGetNodeRel(x) < 1.0:
                model.cbSetSolution(x, 1.0)
    else:
        return

但是,在运行了几次之后,启发式方法并没有完全加快速度,实际上,它使速度变慢了。我想知道这是否正确实施,或者我缺少什么。任何帮助或建议,将不胜感激。

0 个答案:

没有答案