Python Gurobi:如何在 objective 函数中实现决策变量的最大值?

Python Gurobi: How can I implement a maximum value of a decision variable in the objective function?

希望有人能帮助我。我正在开发一个优化模型,在该模型中,随着时间的推移 (t) 和不同的交易 (s),我将电费降至最低。 (其中:标准功率(p)*电费(c)=电费)。

现在我正尝试在 objective 函数中实现一个基于发生的最大功耗的成本组件(有些类似:max(P[s,t]) )。但是,np.max() returns 是一个错误,因为 P[s,t] 是 np.max() 不支持的 class。此外,Gurobi 函数 gp.max_(P[s,t]) 也给出了不受支持的 class 错误。有人有解决办法吗?

代码:

obj = gp.quicksum(p[s, t] * Cost_elect[t]e for t in range(T) for s in range(S)) + gp.max_(p_batt_ch[s,t]*fixed_cost for t in range(T) for s in range(S))

您需要将 max 约束分配给新的辅助变量,并将此变量放入 objective 而不是实际约束。

maxobj = model.addVar()
max_constr = model.addConstr(maxobj == gp.max_(p_batt_ch[s,t] * fixed_cost
                             for t in range(T) for s in range(S)))

obj = gp.quicksum(p[s,t] * Cost_elect[t] for t in range(T) for s in range(S)) + maxobj)

Gurobi documentation