如何让Gurobi只给出整数解?

时间:2014-09-21 02:21:02

标签: python gurobi

我试图使用Gurobi在python中优化以下问题,答案以小数形式出现。如何获得输出以求出最优整数?

from gurobipy import *
def main():
pass
if __name__ == '__main__':
main()
try:
    #Create a new model
    m = Model("Investment");
    #Create variables
    x1 = m.addVar(vtype=GRB.CONTINUOUS, name="x1")
    x2 = m.addVar(vtype=GRB.CONTINUOUS, name="x2")
    x3 = m.addVar(vtype=GRB.CONTINUOUS, name="x3")
    x4 = m.addVar(vtype=GRB.CONTINUOUS, name="x4")
    x5 = m.addVar(vtype=GRB.CONTINUOUS, name="x5")

    #Intigrate new variables
    m.update()

    #Set Objective
    m.setObjective(160*x1 + 160*x2 + 160*x3 + 75*x4 + 75*x5, GRB.MINIMIZE)
    m.addConstr(   x1 +    x2 +    x3                   >= 3,  "c0")
    m.addConstr(   x1                                   >= 1,  "c1")
    m.addConstr(           x2                           >= 0,  "c2")
    m.addConstr(                   x3                   >= 1,  "c3")
    m.addConstr(                           x4           >= 0,  "c4")
    m.addConstr(                                   x5   >= 0,  "c5")
    m.addConstr(40*x1 + 40*x2 + 40*x3 + 25*x4 + 25*x5   >= 365,"c6")

    m.optimize()

    for v in m.getVars():
        print v.varName, v.x
    print "Obj:", m.objVal

except GurobiError:
    print "Error reported"

2 个答案:

答案 0 :(得分:1)

使用.addVar(vtype=GRB.INTEGER, ...)

请参阅http://www.gurobi.com/documentation/5.6/reference-manual/py_model_addvar

答案 1 :(得分:0)

vtype = GRB.INTEGER

对于二进制vtype = GRB.BINARY,共有5个变量类型