Applied Energy+EI论文复现:计及源-荷不确定性的虚拟电厂/综合能源系统/微电网优化调度程序代码

程序参考文献:《Virtual power plant mid-term dispatch optimization》参考其燃气轮机、以及储能部分模型,另外随机优化算法和该文档一致;直流混合配电网多阶段随机优化调度模型主要参考其随机优化模型和相关数据。程序中算例丰富,注释清晰,干货满满,下面对文章和程序做简要介绍!

仿真平台:MATLAB+Yalmip+Cplex

程序主要做的是一个虚拟电厂OR微电网OR综合能源系统的日前优化调度模型(模型具有较强的适应性,仿真对象可以随意调换),考虑了光伏出力和负荷功率的双重不确定性,采用随机规划法处理不确定性变量。

优化调度结果:

部分程序:

%% 非预期运行约束,随机优化的核心
for p=1:5
    for f=1:5
        for t=1:24
            C=[C,
             umospf(p,f,t)==umos(t),
             umobpf(p,f,t)==umob(t),
             pmgbpf(p,f,t)==pmgb(t),
             pmgspf(p,f,t)==pmgs(t),
             xconvpf(p,f,t)==xconv(t),
             yconvpf(p,f,t)==yconv(t),
             pmtpf(p,f,t)==pmt(t),
             gescpf(p,f,t)==gesc(t),
             gesdpf(p,f,t)==gesd(t),
             sesspf(p,f,t)==sess(t),   
            
            ];
        
        end
    end
end
%% 计算随机调度燃气轮机运行的成本
for t=1:24
    f2(t)=0.2*sum(0.2*(a*xconvpf(1,:,t)+kcp*pmtpf(1,:,t)+yconvpf(1,:,t)*sconv))+...
       0.2*sum(0.2*(a*xconvpf(2,:,t)+kcp*pmtpf(2,:,t)+yconvpf(2,:,t)*sconv))+...
       0.2*sum((0.2*a*xconvpf(3,:,t)+kcp*pmtpf(3,:,t)+yconvpf(3,:,t)*sconv))+...
       0.2*sum(0.2*(a*xconvpf(4,:,t)+kcp*pmtpf(4,:,t)+yconvpf(4,:,t)*sconv))+...
       0.2*sum(0.2*(a*xconvpf(5,:,t)+kcp*pmtpf(5,:,t)+yconvpf(5,:,t)*sconv)),
end
%% %% 计算随机调度市场购售电的成本
for t=1:24
    f1(t)=0.04*sum((pmgbpf(1,:,t).*xb(t)-pmgspf(1,:,t).*xs(t)))+...
        0.04*sum((pmgbpf(2,:,t).*xb(t)-pmgspf(2,:,t).*xs(t)))+...
        0.04*sum((pmgbpf(3,:,t).*xb(t)-pmgspf(3,:,t).*xs(t)))+...
        0.04*sum((pmgbpf(4,:,t).*xb(t)-pmgspf(4,:,t).*xs(t)))+...
       0.04*sum((pmgbpf(5,:,t).*xb(t)-pmgspf(5,:,t).*xs(t))),   
end
%% 费用计算    
F21=sum(f2)%燃气轮机费用
F11=sum(f1);%购售电费用

F2=sum(a*xconv+kcp*pmt+yconv*sconv)%燃气轮机费用
F1=sum(pmgb.*xb-pmgs.*xs);%购售电费用
F=F21+F11
ops=sdpsettings('solver','cplex','verbose',2,'usex0',0);
ops.cplex.mip.tolerances.mipgap=1e-6;
result=optimize(C,F,ops);

if result.problem == 0 % problem =0 代表求解成功
else
    error('求解出错');
end

程序采用蒙特卡洛算法对预测的光伏以及负荷曲线进行场景生成,利用概率距离快速消除法进行削减,直至削减至5个场景,然后采用随机调度的方法,对多场景下的虚拟电厂调度策略进行优化,程序实现效果良好!

场景生成结果:

%% 光伏场景生成以及削减
%生成负荷场景并削减%
%负荷出力预测均值E
Ww=[0	0	0	0	0	0	3.8	3.9	4.5	5.2	6.5	7.3	7.4	7.2	7.4	6.5	5.5	4.8	0	0	0	0	0	0];
% Ww=[0,0,0,0,0,1,2.5,4,5,5.5,5.8,5.7,5.5,5.3,5.1,5,3.8,2.5,1.2,0,0,0,0,0];


W=0.3*Ww
%取标准差为负荷出力预测值E的5%-20%,这里x=E*10%
l=W*0.1;
Ws=[];
%生成一个负荷场景,E+x*randn(1,24),其中randn(1,24)为生成随机数的标准正态分布
m=200; %生成m个场景
for i=1:m
s=W+l.*randn(1,24);
Ws=[Ws;s];
end
%不断削减场景,直到剩余5个场景
while(k>5)
d=find(y==min(y)); %选定与剩余场景的概率距离之和最小的场景
x_2=x+100*eye(k); %构造新的x,以便找出风电场景Ws中与场景d几何距离最小的场景r
r=find(x_2(d,:)==min(x_2(d,:)));
pi(r)=pi(r)+pi(d); %将d场景的概率加到r场景上
%在负荷场景中删除d场景
pi(d)=[]; 
Ws_d(d,:)=[];
x(d,:)=[];
x(:,d)=[];
y(d)=[];
k=length(y);
end

以上就是本次介绍的主要内容,欢迎感兴趣的小伙伴关注并后台留言获取完整版代码,小编会继续推送更有质量的学习资料、文章和程序代码,为您的科研加油助力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值