线性优化中的光伏生产过剩
PV overproduction in a linear optimization
我目前正在尝试优化电池存储。
对于光伏电力生产过剩的情况,我试图提出一个生产过剩的约束条件。
我第一次尝试了这个版本,但它不起作用:
def pv_overproduction(model, t):
if model.demand[t] <= model.pv[t]:
return model.excess_pv[t] == model.pv[t] - model.demand[t]
else:
model.excess_pv[t] == 0
model.pv_overproduction = Constraint(model.t, rule = pv_overproduction)
据我所知,这个不起作用,因为我不能在 if 语句中使用变量。但是我没有办法解决这个问题。
这是负载覆盖功能,为了减少光伏电力输入:
def load_coverage(model, t):
return (model.pv[t] - model.excess_pv[t]) + model.elec_grid[t] + model.discharge[t] == model.demand[t]
model.load_coverage = Constraint(model.t, rule = load_coverage)
这是我的第二次尝试,遗憾的是也没有成功。
def pv_overproduction(model, t):
return model.excess_pv[t] == model.pv[t] - model.demand[t]
model.pv_overproduction = Constraint(model.t, rule = pv_overproduction)
我的第二次尝试成功了,因为 model.excess_pv[t] 大多数时候都是负数,这通常是有道理的。但我也不需要负值,因为这显然意味着没有生产过剩...
如能解决上述问题,我们将不胜感激。
我认为您的第一次尝试非常接近。如果正确使用不等式约束,则不需要 if
语句...
捕获超额的约束:
excess >= supply - demand
只捕获非负数的多余部分:
excess >= 0 (or alternatively set the domain to non-negative reals, which is equivalent)
假设你的问题是最小化
,在你的 objective 中加入一个小的(或大的)惩罚
obj = ... + penalty * excess
插入几个测试值以确保您相信它! :)
我目前正在尝试优化电池存储。 对于光伏电力生产过剩的情况,我试图提出一个生产过剩的约束条件。
我第一次尝试了这个版本,但它不起作用:
def pv_overproduction(model, t):
if model.demand[t] <= model.pv[t]:
return model.excess_pv[t] == model.pv[t] - model.demand[t]
else:
model.excess_pv[t] == 0
model.pv_overproduction = Constraint(model.t, rule = pv_overproduction)
据我所知,这个不起作用,因为我不能在 if 语句中使用变量。但是我没有办法解决这个问题。
这是负载覆盖功能,为了减少光伏电力输入:
def load_coverage(model, t):
return (model.pv[t] - model.excess_pv[t]) + model.elec_grid[t] + model.discharge[t] == model.demand[t]
model.load_coverage = Constraint(model.t, rule = load_coverage)
这是我的第二次尝试,遗憾的是也没有成功。
def pv_overproduction(model, t):
return model.excess_pv[t] == model.pv[t] - model.demand[t]
model.pv_overproduction = Constraint(model.t, rule = pv_overproduction)
我的第二次尝试成功了,因为 model.excess_pv[t] 大多数时候都是负数,这通常是有道理的。但我也不需要负值,因为这显然意味着没有生产过剩...
如能解决上述问题,我们将不胜感激。
我认为您的第一次尝试非常接近。如果正确使用不等式约束,则不需要 if
语句...
捕获超额的约束:
excess >= supply - demand
只捕获非负数的多余部分:
excess >= 0 (or alternatively set the domain to non-negative reals, which is equivalent)
假设你的问题是最小化
,在你的 objective 中加入一个小的(或大的)惩罚obj = ... + penalty * excess
插入几个测试值以确保您相信它! :)