基本信息
源码名称:利用氢能作为长期储能媒介,并通过优化布局提高氢能网络的利用效率
源码大小:6.50M
文件格式:.ipynb
开发语言:Python
更新时间:2025-06-13
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
利用氢能作为长期储能媒介,并通过优化布局提高氢能网络的利用效率
# Decision Variables
x = m.addVars(I, K, lb = 0, vtype=GRB.BINARY, name="x")
h_tr = m.addVars(I, I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="h_tr")
epsilon_r = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_r")
epsilon_h = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_h")
epsilon_dis = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_dis")
epsilon_n = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_n")
epsilon_cha = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_cha")
epsilon_e2h = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_e2h")
theta_h = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="theta_h")
theta_b = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="theta_b")
h_se = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="h_se")
w = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="w")
o = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="o")
eps_n = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="eps_n")
epsilon = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon")
theta_h = m.addVars(I, range(8761), S, lb = 0, vtype=GRB.CONTINUOUS, name="theta_h")
theta_b = m.addVars(I, range(8761), S, lb = 0, vtype=GRB.CONTINUOUS, name="theta_b")
psi = m.addVars(I, lb = 0, ub = 1, vtype=GRB.CONTINUOUS, name="psi")
# Objective Function
Capex = sum(x[i, k] * (c_ins[k] / sum(1 / (1 delta) ** tau for tau in range(1, lifetime 1))) for i in I for k in K)
fixedOM = quicksum(c_om[k] * x[i, k] for i in I for k in K)
OandM = quicksum(xi[s] * (
quicksum(c_tr * h_tr[i, j, t, s] * d[i, j] for i in I for j in I if j != i for t in T)
quicksum(c_w * w[i, t, s] for i in I for t in T)
quicksum(c_pen * eps_n[i, t, s] for i in I for t in T) -
quicksum(rho_h * h_se[i, t, s] for i in I for t in T) -
quicksum(rho_o * o[i, t, s] for i in I for t in T)
) for s in S)
neg_psi = quicksum(-psi[i] for i in I)
m.setObjective(Capex fixedOM OandM, GRB.MINIMIZE)
m.setObjectiveN(neg_psi, index=1, priority=1, weight=1)
# Constraints
m.addConstrs(
(epsilon_r[i, t, s] epsilon_h[i, t, s] epsilon_dis[i, t, s]
epsilon_n[i, t, s] - epsilon_cha[i, t, s] - epsilon_e2h[i, t, s] >= chi[i, t, s] for i in I for t in T for s in S),
name="energy_balance_constraint"
)
m.addConstrs(
(theta_h[i, t, s] ==
theta_h[i, t-1, s]
quicksum(h_tr[j, i, t, s] - h_tr[i, j, t, s] for j in I if j != i)
epsilon_e2h[i, t, s] / lambda_e2h -
h_se[i, t, s] -
epsilon_h[i, t, s] / lambda_h2e for i in I for t in T for s in S),
name='hydrogen_balance_constraint'
)
m.addConstrs(
(h_se[i, t, s] >= psi[i]*kappa[i, t, s] for i in I for t in T for s in S),name="hydrogen_sold_constraint"
)
利用氢能作为长期储能媒介,并通过优化布局提高氢能网络的利用效率
# Decision Variables
x = m.addVars(I, K, lb = 0, vtype=GRB.BINARY, name="x")
h_tr = m.addVars(I, I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="h_tr")
epsilon_r = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_r")
epsilon_h = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_h")
epsilon_dis = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_dis")
epsilon_n = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_n")
epsilon_cha = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_cha")
epsilon_e2h = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon_e2h")
theta_h = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="theta_h")
theta_b = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="theta_b")
h_se = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="h_se")
w = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="w")
o = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="o")
eps_n = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="eps_n")
epsilon = m.addVars(I, T, S, lb = 0, vtype=GRB.CONTINUOUS, name="epsilon")
theta_h = m.addVars(I, range(8761), S, lb = 0, vtype=GRB.CONTINUOUS, name="theta_h")
theta_b = m.addVars(I, range(8761), S, lb = 0, vtype=GRB.CONTINUOUS, name="theta_b")
psi = m.addVars(I, lb = 0, ub = 1, vtype=GRB.CONTINUOUS, name="psi")
# Objective Function
Capex = sum(x[i, k] * (c_ins[k] / sum(1 / (1 delta) ** tau for tau in range(1, lifetime 1))) for i in I for k in K)
fixedOM = quicksum(c_om[k] * x[i, k] for i in I for k in K)
OandM = quicksum(xi[s] * (
quicksum(c_tr * h_tr[i, j, t, s] * d[i, j] for i in I for j in I if j != i for t in T)
quicksum(c_w * w[i, t, s] for i in I for t in T)
quicksum(c_pen * eps_n[i, t, s] for i in I for t in T) -
quicksum(rho_h * h_se[i, t, s] for i in I for t in T) -
quicksum(rho_o * o[i, t, s] for i in I for t in T)
) for s in S)
neg_psi = quicksum(-psi[i] for i in I)
m.setObjective(Capex fixedOM OandM, GRB.MINIMIZE)
m.setObjectiveN(neg_psi, index=1, priority=1, weight=1)
# Constraints
m.addConstrs(
(epsilon_r[i, t, s] epsilon_h[i, t, s] epsilon_dis[i, t, s]
epsilon_n[i, t, s] - epsilon_cha[i, t, s] - epsilon_e2h[i, t, s] >= chi[i, t, s] for i in I for t in T for s in S),
name="energy_balance_constraint"
)
m.addConstrs(
(theta_h[i, t, s] ==
theta_h[i, t-1, s]
quicksum(h_tr[j, i, t, s] - h_tr[i, j, t, s] for j in I if j != i)
epsilon_e2h[i, t, s] / lambda_e2h -
h_se[i, t, s] -
epsilon_h[i, t, s] / lambda_h2e for i in I for t in T for s in S),
name='hydrogen_balance_constraint'
)
m.addConstrs(
(h_se[i, t, s] >= psi[i]*kappa[i, t, s] for i in I for t in T for s in S),name="hydrogen_sold_constraint"
)