查看蓄电池的SOC
荷电状态(state of charge, SOC)定义为当前的蓄电池剩余容量与额定容量的百分比。
比如:假设蓄电池的额定容量为200kWh,初始状态为100kWh,初始SOC就是50%。第1个小时内蓄电池出力60kW,剩余100-60 = 40kWh,那么SOC就变为了20%。
第一个想法
- 当前能量 = 上个小时的能量 - 蓄电池出力
- SOC = 当前储能/额定容量
基于这个想法设计程序:
EBa1 = 100;
EBae = 200;
EBa = EBa1 * ones(1,T);
for i = 2:T
EBa(i) = EBa(i-1) - P(2,i-1);
end
SOC = EBa/EBae;
运行时报错:
错误使用 - (第 42 行)
Adding NaN to an SDPVAR makes no sense.出错 MG_2_0223 (第 43 行)
EBa(i) = EBa(i-1) - P(2,i-1);
第二个想法
于是就有了第二个想法:
- 每个时刻的SOC = 当前时刻的能量 / 额定容量
- 当前时刻的能量 = 初始容量 - 到当前时刻为止蓄电池的出力
基于第二个想法设计程序:
EBa1 = 20;
EBae = 200;
for i = 1:T
SOC(i) = (EBa1-sum(P(2,1:i)))/EBae;
end
其中,SOC(i)代表ih末蓄电池的SOC。
由此可以得到按照(一)中优化结果运行时,Ba的SOC变化情况:
可以发现,24h末SOC已经到了-5到-6之间,表明释放了5~6个电池的额定容量。这是因为不断地释放能量耗尽了蓄电池可以储存的能量。所以我们必须加上SOC限制。
给蓄电池加上SOC限制
有了上一步的基础,我们可以很容易地添加SOC的限制:
SOC上下限限制
SOC_min = 0.1;
SOC_max = 0.9;
for i = 1:T
Constraints = [Constraints; SOC_min <= SOC(i) <= SOC_max];
end
SOC末态限制
Constraints = [Constraints;SOC(T) >= EBa1/EBa2];
结果与分析
于是加入SOC限制之后,在新的优化结果以及Ba的SOC变化如下:
可以发现,SOC在规定的范围内(0.1~0.9)内变动,符合实际情况。随着SOC限制的加入,目标函数也从(一)中的-731.11变为了-458.35。这表明条件更严格的情况下最优结果的成本升高了。
还可以发现一个有趣的现象:当前得到的结果中G保持着最大出力,这并不奇怪,回顾(一)中的参数设置(线性简化):
KG = 0.3;
KBa = 0.2;
Kgrid = 0.5;
卖电的收益高于G发电的成本,高于Ba的消耗。 所以G和Ba会尽可能地发电/放电然后去卖电——除非冗余电量超过了传输功率上限,G才会减少发电——于是在Ba放电受到SOC限制后,G会尽可能地发电。
这也表明了我们的成本参数设置可能不符合实际。
注:参数更改
相比于(一)中有部分参数更改
PG_min = 0;PG_max = 50;
dPG_min = -40;dPG_max = 40;
PBa_min = -30;PBa_max = 100;
Pgrid_max = 160;Pgrid_min = -160;
数据来自:[1]王腾超. 含微电网的配电网日前能量优化[D].山东大学,2020.DOI:10.27272/d.cnki.gshdu.2020.006084.