💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥
🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳ 座右铭:行百里者,半于九十。
📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现
💥1 概述
能源管理系统(EMS)有助于优化微电网中分布式能源(DER)的使用,特别是在涉及可变定价和发电时。本文使用预测定价和负荷条件来优化存储/销售来自电网规模电池系统的能量。演示了两种方法:启发式状态机策略和基于线性程序的优化方法。
![](https://i-blog.csdnimg.cn/blog_migrate/17a269d904999bd0b94a8d4417491668.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d606480b729b3f2a7700debd087dfa91.png)
![](https://i-blog.csdnimg.cn/blog_migrate/35452f762812c6490d59eabdef8e1e75.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ae7e1fa2a1fa5bab2a221f04c27918c2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cc66a68ca4918c630e4af2d351136193.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bb771c1157b7959f6e6bec1f46a44a46.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3bbf1faf0ffe235ed9344a89164d8293.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d3611352c7169958f9a831dd6ab7c9cb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/15336db013ec2146fdbd187ef5996a8a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/331dba4570a12ca99bfe210fc294e471.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3f68693f7f55573dac90f899cbfbe948.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7afe90d68c9054548e254f366b0c5128.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3d623e83d343baebecbc303e5a91248e.png)
📚2 运行结果
![](https://i-blog.csdnimg.cn/blog_migrate/291b1a0781b5eeef215f4407aaa60806.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d978e3167960bd58f5e08d493c6b8cf0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c084274146e31294e00b28e7882c56e5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/629b7ec347cf80c59daf4c05ee895273.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8f3924d6d83d0f84f1ebedf066f9a488.png)
![](https://i-blog.csdnimg.cn/blog_migrate/42bb4afd40163dd6d7d53a2579119cce.png)
for i = 1:numSim
if i <= numOffset*numel(pvDataSet)
heuristicCost(end+1) = out(i).logsout{1}.Values.Data(end);
else
optCost(end+1)= out(i).logsout{1}.Values.Data(end);
end
end
histogram(heuristicCost); hold on;
histogram(optCost);
legend('Heuristic','Optimization');
xlabel('Cost per Day ($)'); hold off;
![](https://i-blog.csdnimg.cn/blog_migrate/b94f2cacb8d2f11ed1db75b338a3d7cf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6eb9595009e36a9e25947db503afa2c3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8fbf11793643742167897f80ce611934.png)
部分代码:
function [Pgrid,Pbatt,Ebatt] = battSolarOptimize(N,dt,Ppv,Pload,Einit,Cost,FinalWeight,batteryMinMax)
% Minimize the cost of power from the grid while meeting load with power
% from PV, battery and grid
prob = optimproblem;
% Decision variables
PgridV = optimvar('PgridV',N);
PbattV = optimvar('PbattV',N,'LowerBound',batteryMinMax.Pmin,'UpperBound',batteryMinMax.Pmax);
EbattV = optimvar('EbattV',N,'LowerBound',batteryMinMax.Emin,'UpperBound',batteryMinMax.Emax);
% Minimize cost of electricity from the grid
prob.ObjectiveSense = 'minimize';
prob.Objective = dt*Cost'*PgridV - FinalWeight*EbattV(N);
% Power input/output to battery
prob.Constraints.energyBalance = optimconstr(N);
prob.Constraints.energyBalance(1) = EbattV(1) == Einit;
prob.Constraints.energyBalance(2:N) = EbattV(2:N) == EbattV(1:N-1) - PbattV(1:N-1)*dt;
% Satisfy power load with power from PV, grid and battery
prob.Constraints.loadBalance = Ppv + PgridV + PbattV == Pload;
% Solve the linear program
options = optimoptions(prob.optimoptions,'Display','none');
[values,~,exitflag] = solve(prob,'Options',options);
% Parse optmization results
if exitflag <= 0
Pgrid = zeros(N,1);
Pbatt = zeros(N,1);
Ebatt = zeros(N,1);
else
Pgrid = values.PgridV;
Pbatt = values.PbattV;
Ebatt = values.EbattV;
end
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Jonathan LeSage (2023). Microgrid Energy Management System (EMS) using Optimization.