Matlab|计及源-荷双重不确定性的虚拟电厂/微网日前随机优化调度

本文主要是介绍Matlab|计及源-荷双重不确定性的虚拟电厂/微网日前随机优化调度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

主要内容   

1.1 场景生成及缩减

1.2 随机优化调度

程序结果:


主要内容   

程序主要做的是一个虚拟电厂或者微网单元的日前优化调度模型,考虑了光伏出力和负荷功率的双重不确定性,采用随机规划法处理不确定性变量,构建了虚拟电厂随机优化调度模型。具体来看,首先是基于蒙特卡洛算法,对预测的光伏以及负荷曲线进行场景生成,然后基于快概率距离快速消除法进行削减,直至削减至5个场景,然后采用随机调度的方法,对多场景下的虚拟电厂调度策略进行优化调度。

程序中燃气轮机、储能部分模型以及随机优化算法也是和下述文档一致。

1.1 场景生成及缩减

clc
clear
close all
​
%% 光伏场景生成以及削减
%生成负荷场景并削减%
%负荷出力预测均值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
​
figure(1)
[ss,gg]=meshgrid(1:200,1:24 );
plot3(ss,gg,Ws,'-');
grid
xlabel('场景');
ylabel('时刻');
zlabel('负荷功率');
title('负荷场景生成图');
% legend('负荷曲线1','负荷曲线2 ','负荷曲线3 ','负荷曲线4 ')
​
​
Ws_d=Ws; %定义削减后的场景
%场景削减
pi=1/m*ones(m,1); %蒙特卡罗生成的场景为等概率场景,建立每个场景的概率向量
%计算负荷场景Ws中每对场景的几何距离x
x=zeros(m,m); 
for i=1:mfor j=1:mx(i,j)=sum(abs(Ws(i,:)-Ws(j,:)));end
end
​
%计算每个场景与剩余场景的概率距离之和y
y=zeros(m,1);
for i=1:m
y(i)=1/m*sum(x(i,:));
end
k=length(y);
​
%不断削减场景,直到剩余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
​
figure(2)
[ss,gg]=meshgrid(1:5,1:24 );
plot3(ss,gg,Ws_d,'-');
grid
xlabel('场景');
ylabel('时刻');
zlabel('风机出力值');
title('场景削减图');

得到场景生成和缩减结果:

1.2 随机优化调度

模型中最核心的是随机优化模型的构建和处理,采用非预期运行约束处理随机优化问题,其中传统机组随机优化模型如下:

非预期约束是如何处理随机优化问题的呢?国内一些文献也是采用该类方法,如下所示,非预期约束也就是为了限定在风电、光伏以及其他因素存在的情况下,有且只有一种状态是被用在日前调度模型里的。

摘自《交直流混合配电网多阶段随机优化调度模型_裴蕾》
%主要内容:考虑光伏、负荷的不确定性,实现虚拟电厂的随机优化
%模型中,考虑了燃气轮机、储能,光伏,负荷四种单元,并考虑可以并网
clc
clear
close all
ppv=[0,0,0,0,0,0,1.34060681352041,1.13391651200680,1.40252116109929,1.74124103883023,1.49174914115029,2.53240793479920,2.04065972732231,2.35828237099756,1.55809477900388,1.64805990357317,1.87064383698464,1.29603798576622,0,0,0,0,0,0;0,0,0,0,0,0,1.18358196815285,1.20530370391118,1.35854372362592,1.32447876876720,1.70829563301966,2.51396807020581,1.87219733041650,1.51045430771326,2.14995685962274,2.36901954872155,1.49939386631594,1.24439925735197,0,0,0,0,0,0;0,0,0,0,0,0,1.01175119002517,1.31035724158009,1.08516736148552,1.94136887715302,1.93148023426153,2.08839059797124,2.16179304729596,1.66329638481645,2.26989483226563,2.44265872929522,1.36505525184415,1.44002086391399,0,0,0,0,0,0;0,0,0,0,0,0,1.04539328775374,1.03998113428866,1.18246929195709,1.69424435782838,1.64461569874716,2.06924213909286,2.43963602014925,1.68729987832366,1.87805529528869,1.51992087170733,2.01158827571321,1.29724518700574,0,0,0,0,0,0;0,0,0,0,0,0,1.32311860610225,1.28695117820334,1.34520597073109,1.46724609252811,1.74247560818882,1.72276716702525,2.57775664860191,1.79578137388444,2.66126270645276,2.15099361545381,1.66252664174142,1.63885764533067,0,0,0,0,0,0];
pload=[[0.431807609584421,0.486148921643357,0.721272534818094,0.898346267079082,0.944425724763714,0.541378372225899,0.882373258746104,1.56831193839750,1.86281649971011,1.99584713547466,2.19733700575767,2.29773449997527,2.47099246563420,1.66872324677400,1.77591203172356,1.32477944622446,1.95414778150622,1.54974896023576,1.74359932022130,1.44846182755801,0.955252219886710,1.25160480095078,1.49222676285844,0.682744656361740;0.483635538027688,0.495506878187239,0.714763198577902,0.799435561018225,1.01952146263562,0.800604394686264,0.945961336073563,1.28885742430358,1.90848488028237,2.10268787259155,1.91839575715085,1.85220123265328,2.17764591245376,1.78073710542207,1.73239834633622,1.42351956423826,2.03383140201547,2.58777879153454,1.89810311996295,1.45544594829551,1.11733457030710,0.835193945440698,1.45888556170521,0.737906988149361;0.475566682884608,0.538938919866738,0.694384127185758,0.948064145000996,0.869283322295024,0.693421312226079,1.24531781162386,1.18155825364294,2.24893779918531,2.22929790054771,1.91247902153441,1.60109975699407,2.04025369591884,1.62927362526231,1.94798019608120,1.30811995960382,1.92258374438264,2.34731329057125,1.88682790373556,1.82091112812632,0.761274726486709,1.14465406229059,1.66887813069703,0.687295849991400;0.506197427493947,0.555237638826251,0.711932167351328,0.723600759144382,1.04613991322447,0.658159592550928,1.07636853878386,1.06165890483766,2.06902267439968,2.48488721178039,2.34092228143214,2.63450984929863,2.35352014698963,2.08958282274750,1.65408992214257,1.54410971082492,1.94697999777118,1.92406941886044,2.00023938323277,2.10124494602628,1.04036325929128,0.984006134878927,1.94126189741016,0.651136186886876;0.504831465058796,0.522880453611977,0.805416372257449,0.776866377863578,1.09776915278538,0.499517330314076,0.895214516450348,1.27340524098249,1.51733245769139,1.46096552221328,2.35562457523011,1.98343189442592,1.73365278725908,1.98502985411742,2.00458112949663,1.35148256752316,1.86202305372752,2.23007113968369,1.56324879332238,1.57649124469752,0.995615716738264,1.11287433329993,1.96306488103865,0.572126166745211]];
%% 定义变量
%%定义市场购电电价以及售电电价
xb=[630,630,630,630,630,630,1020,1020,1020,1520,1520,1520,1520,1520,1020,1020,1020,1520,1520,1520,1020,1020,630,630];
xs1=[100,100,100,100,100,100,380,380,380,800,800,800,800,800,380,380,380,800,800,800,380,380,100,100];
xs=1.05*xs1;
%% 定义燃气轮机参数
a=600;%固定开机费用
kcp=100;%分段线性化费用
sconv=100;%启停费用
gtmax=3.31;%出力上限
gtmin=1.3;%最小出力值
ramp=1.5;%爬坡率
%% 定义储能参数
gescmax=1;%充电功率上限
gesdmax=1;%放电功率上限
sessmax=4;%蓄电量上限
sessmin=0;%蓄电量最小值
uesc=0.95;%充电效率
uesd=0.95;%放电效率
kil=[500,700,800];%中断负荷补偿费用
%% 其他输入参数
pmgmax=20;%最大交易量
%负荷值
% pload=[1.5  1.8  2.3  2.8  3.2  2.1  3.3  4.2  5.9  6.8  7.5  7.2  7.1  6.5  5.9  4.8  5.6  6.8  6.8  6.2  3.3  3.6  5.4  2.4];
% %光伏出力
% ppv=[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];
​
%% 定义变量sdpvar/binvar
umob=binvar(1,24);%是否购电
umos=binvar(1,24);%是否售电
umospf=binvar(5,5,24)
umobpf=binvar(5,5,24)
pmgb=sdpvar(1,24);%市场购电量
pmgs=sdpvar(1,24);%市场售电量
pmgbpf=sdpvar(5,5,24);
pmgspf=sdpvar(5,5,24);
xconv=binvar(1,24);%燃气轮机工作状态变量
yconv=binvar(1,24);%燃气轮机启停状态变量
xconvpf=binvar(5,5,24);
yconvpf=binvar(5,5,24);
pmt=sdpvar(1,24);%燃气轮机出力
pmtpf=sdpvar(5,5,24);
gesc=sdpvar(1,24);%储能充电功率
gesd=sdpvar(1,24);%储能放电功率
sess=sdpvar(1,24);%蓄电池蓄电量
gescpf=sdpvar(5,5,24);
gesdpf=sdpvar(5,5,24);
sesspf=sdpvar(5,5,24);
​
%% 约束条件
C=[];%初始化约束
%% 燃气轮机出力约束
for p=1:5for f=1:5for t=1:24C=[C,xconvpf(p,f,t)*gtmin<=pmtpf(p,f,t)<=xconvpf(p,f,t)*gtmax ,%出力上下限约束];endend
end
% 
for p=1:5for f=1:5C=[C,pmtpf(p,f,1)<=ramp,%初始爬坡约束xconvpf(p,f,1)<=yconvpf(p,f,1),%初始启停约束]; end
end
​
% 
for p=1:5for f=1:5for t=2:24C=[C,-ramp<=pmtpf(p,f,t)-pmtpf(p,f,t-1)<=ramp,%爬坡率约束xconvpf(p,f,t)-xconvpf(p,f,t-1)<=yconvpf(p,f,t), %工作状态约束 ];  endend
end

程序结果:

这篇关于Matlab|计及源-荷双重不确定性的虚拟电厂/微网日前随机优化调度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/810964

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87