Python 求目标函数中每个项的值

Python 求目标函数中每个项的值,python,optimization,gurobi,Python,Optimization,Gurobi,我想单独计算目标函数中的三项中的每一项。我该怎么做 第一项:c*(te[i]+到[i]+t[i,s])*X[i,b,s]表示卡车中的i,b表示区块中的b,s表示插槽中的s 第二项:d[b,s]*X[i,b,s]表示卡车中的i,b表示区块中的b,s表示插槽中的s 第三个:g*a[s]*X[i,b,s]代表卡车中的i,b代表区块中的b代表插槽中的s 目标函数方程 m.setObjective(quicksum(c*(te[i]+to[i]+t[i,s])*X[i,b,s] for i in Truc

我想单独计算目标函数中的三项中的每一项。我该怎么做

第一项:
c*(te[i]+到[i]+t[i,s])*X[i,b,s]表示卡车中的i,b表示区块中的b,s表示插槽中的s
第二项:
d[b,s]*X[i,b,s]表示卡车中的i,b表示区块中的b,s表示插槽中的s
第三个:
g*a[s]*X[i,b,s]代表卡车中的i,b代表区块中的b代表插槽中的s

目标函数方程

m.setObjective(quicksum(c*(te[i]+to[i]+t[i,s])*X[i,b,s] for i in Trucks for b in Blocks for s in Slots) + quicksum(d[b,s]*X[i,b,s] for i in Trucks for b in Blocks for s in Slots) +quicksum( g*a[s]*X[i,b,s] for i in Trucks for b in Blocks for s in Slots), GRB.MINIMIZE)

最好的方法是把你的目标分成三个独立的对象。优化后,可以使用这些对象的方法在最佳解决方案中提取表达式的值

在您的案例中,一个例子如下:

# Construct three linear expressions
expr = []
expr.append(quicksum(c*(te[i]+to[i]+t[i,s])*X[i,b,s] for i in Trucks for b in Blocks for s in Slots))
expr.append(quicksum(d[b,s]*X[i,b,s] for i in Trucks for b in Blocks for s in Slots))
expr.append(quicksum(g*a[s]*X[i,b,s] for i in Trucks for b in Blocks for s in Slots))

# Set objective and optimize
m.setObjective(quicksum(expr[i] for i in range(3)), GRB.MINIMIZE)
m.optimize()

# Return linear expression values
if m.status == GRB.Status.OPTIMAL:
    for i in range(3):
        print(expr[i].getValue())
else:
    print('Model not solved to optimality')