pythongurobi:如何在目标函数中实现决策变量的最大值?

pythongurobi:如何在目标函数中实现决策变量的最大值?,python,optimization,gurobi,Python,Optimization,Gurobi,希望有人能帮我。我正在开发一个优化模型,在该模型中,我可以在时间(t)和不同交易中最小化电力成本。(式中:标准功率(p)*电费(c)=电费) 现在,我尝试在目标函数中实现一个成本组件,它基于所发生的最大功耗(有些类似:max(p[s,t]))。但是,np.max()返回一个错误,因为P[s,t]是np.max()不支持的类。此外,Gurobi函数gp.max_(P[s,t])也给出了一个不受支持的类错误。有人有解决办法吗 代码: obj = gp.quicksum(p[s, t] * Cost_

希望有人能帮我。我正在开发一个优化模型,在该模型中,我可以在时间(t)和不同交易中最小化电力成本。(式中:标准功率(p)*电费(c)=电费)

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

代码:

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
约束分配给一个新的辅助变量,并将该变量放入目标中,而不是实际约束中

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)


你好,谢谢!这确实按照我的要求起了作用,但我没有预料到一个非常重要的部分。我想得到一个列的最大值,该列在时间t每s求和一次。所以基本上正常的代码:P_batt_charge['total']=P_batt_ch.sum(axis=1)Pmax=P_batt_charge['total'].max(),在“正常”脚本中非常简单,但我无法使其在优化范围内工作。您对此也有解决方案吗?:D