✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
We consider using a battery storage system simultaneously for peak shaving and frequency regulation through a joint optimization framework which captures battery degradation, operational constraints and uncertainties in customer load and regulation signals. Under this framework, using real data we show the electricity bill of users can be reduced by up to 15%. Furthermore, we demonstrate that the saving from joint optimization is often larger than the sum of the optimal savings when the battery is used for the two individual applications. A simple threshold real-time algorithm is proposed and achieves this super-linear gain. Compared to prior works that focused on using battery storage systems for single applications, our results suggest that batteries can achieve much larger economic benefits than previously thought if they jointly provide multiple services.
⛄ 部分代码
function [total, elec, peak, bat, reg, regc, regp] = ...
ps_only(fig_flag, lambda, battery, T, ts, tt, s)
cvx_begin quiet
variables b(T,1);
minimize (lambda.elec*ones(1,T)*(s-b)*ts + ...
lambda.peak*max(s-b) + lambda.battery*norm(b,1)*ts);
subject to
ones(1,T)*b == 0;
b >= -battery.power;
b <= battery.power;
tril(ones(T))*b*ts <= ones(T,1)*...
(battery.socini-battery.socmin)*battery.energy;
tril(ones(T))*b*ts >= ones(T,1)*...
(battery.socini-battery.socmax)*battery.energy;
cvx_end
% Bill
total = lambda.elec*ones(1,T)*(s-b)*ts + lambda.peak*max(s-b)...
+ lambda.battery*norm(b,1)*ts;
elec = lambda.elec*ones(1,T)*(s-b)*ts;
peak = lambda.peak*max(s-b);
bat = lambda.battery*norm(b,1)*ts;
reg = 0;
regc = 0;
regp = 0;
if fig_flag == 1
% SoC
SoC_3 = zeros(T,1);
SoC_3(1) = battery.socini;
for i = 2:T
SoC_3(i) = (battery.socini*battery.energy-sum(b(1:i-1))*ts)/battery.energy;
end
% figure
figure;
subplot(2,1,1)
hold all;
plot(tt,s,'-.b','LineWidth',2);
plot(tt,s-b,'--g','LineWidth',2);
hold off;
xlabel('time[s]');
ylabel('power[MW]');
grid on
legend('grid consumption','after shaving');
title(sprintf('Peak shaving only, shaved peak: %.2f', max(s)-max(s-b)));
subplot(2,1,2)
plot(tt,SoC_3,'b');
xlabel('time[s]');
ylabel('SoC[%]');
grid on
title('Battery only for peak shaving: SoC curve');
end
end
⛄ 运行结果
⛄ 参考文献
[1] Shi Y , Xu B , Wang D ,et al.Using Battery Storage for Peak Shaving and Frequency Regulation: Joint Optimization for Superlinear Gains[J].IEEE Transactions on Power Systems, 2017:1-1.DOI:10.1109/TPWRS.2017.2749512.