错因:0-1规划才可以用GRB.BINARY,创建新变量中变量类型应该修改为GRB.CONTINUOUS
GRB.CONTINUOUS:连续型
GRB.BINARY:0-1型
GRB.INTEGER:整数型
import gurobipy as gp
from gurobipy import GRB
try:
#创建一个新模型
m=gp.Model("mipl")
#创建新变量
a=m.addVar(vtype=GRB.BINARY,name="a")
b=m.addVar(vtype=GRB.BINARY,name="b")
c=m.addVar(vtype=GRB.BINARY,name="c")
d=m.addVar(vtype=GRB.BINARY,name="d")
e=m.addVar(vtype=GRB.BINARY,name="e")
f=m.addVar(vtype=GRB.BINARY,name="f")
#设定目标(注意*号)
m.setObjective(12*a+24*b+8*c+30*d+12*e+24*f,GRB.MAXIMIZE)
#添加约束条件
m.addConstr(a+b+c<=4,"c0")
m.addConstr(d+e+f<=8,"c1")
m.addConstr(-a-d<=-2,"c2")
m.addConstr(-b-e<=-4,"c3")
m.addConstr(-c-f<=-5,"c4")
#优化模型
m.optimize()
#优化完成后,可查询属性值,可查询Varname和X变量属性,以获得每个变量的名称和解决方案值
for v in m.getVars():
print('%s%g'%(v.VarName,v.X))
#还可以查询模型上的ObjVal(Objective value for current solution即当前解决方案的目标值)属性,以获取当前解决方案的目标值
print('Obj:%g' %m.ObjVal)
except gp.GurobiError as e:
print('Error code'+str(e.errno)+":"+str(e))
except AttributeError :
print('Encountered an attribute error')