代码:
from gurobipy import *
#数据准备
demand_pr=[
[50,60],
[45,65],
[30,70],
[20,30],
[25,35]
]
bom_rel=[
[2,1,2],
[1,1,0]
]
item_cost=[
[20,25,23,30,15],
[44,47,24,49,25],
[137,125,104,139,138],
[38,46,59,45,54]
]
con_protime=[
[20,23],
[25,28],
[23,25],
[20,23],
[25,27]
]
con_reatime=[
[50,50],
[50,50],
[50,50],
[50,50],
[50,50]
]
con_cap=[
[5000,5100],
[5500,5600]
]
#建立模型和决策变量
m=Model("scheduling")
x=m.addVars(2,5,vtype=GRB.BINARY,name="x")
m.update()
expr=sum((x[0][i]+x[1][i]-item_cost[0][i])*(item_cost[1][i]+item_cost[2][i]+item_cost[3][i]) for i in range(0,5))
m.setObjective(expr,GRB.MINIMIZE)
#建立约束
for i in temp:
m.addConstr(x[0][i]>=demand_pr[i][0],"a1")
m.addConstr(x[1][i]>=demand_pr[i][1],"a2")
for i in range(0,2):
m.addConstr(x[i][0]>=2*x[i][3]+x[i][4],"b1")
m.addConstr(x[i][1]>=x[i][3]+x[i][4],"b2")
m.addConstr(x[i][2]>=2*x[i][3],"b3")
for i in range(0,2):
for k in range(0,2):
m.addConstr(sum(x[i][j]*(con_protime[j][k]+con_reatime[j][k])for j in range(0,5))<=con_cap[j][i],"c1")
#求解
m.optimize()
for v in m.getVars():
print(v.varName,v.x)