目录
主要内容
该程序参考文献《含分布式光伏的配电网集群划分和集群电压协调控制》,基于社团检测算法,实现基于电气距离和区域电压调节能力的集群综合性能指标和网络划分方法,并在集群划分基础上,进一步研究群内自治优化和群间分布式协调的双层电压控制策略,利用其在不同时间尺度上的配合实现了配电网全局电压的快速优化控制。集群自治优化控制通过交替更新群内最优解和虚拟平衡节点电压实现群内电压的实时快速控制。长时间尺度的群间分布式协调控制基于交换方向乘子法,通过相邻集群的有限边界数据交换实现对分布式光伏输出功率的全局优化控制,程序通过matlab实现,注释清晰!
模型研究
1.节点电压灵敏度的计算
集群划分的最初目的是基于某一特征,将相似的个体划分至同一集群,将不同的个体的划分至不同集群。在该模型中集群划分的目标是电压控制,基于电压对功率变化的灵敏程度,使对互相灵敏度较高的划分至同一集群,将互相灵敏度较弱的分至不同集群,从而使得电压调节策略能够在集群内部有效实施,而对集群外部的影响较小。
在该程序中,采用节点电压对其余各节点注入功率变化的灵敏度来定义节点之间电气距离,具体节点电压灵敏度计算理论如下:
- 从而可以看出,可以利用牛拉法计算出的雅可比矩阵推导出有功/无功对电压的灵敏度。
2.Kmeans聚类划分
由于kmeans划分是根据距离进行划分,所以需要计算一个节点灵敏度矩阵的距离。
由于配电网有功无功对电压均存在影响,所以想要准确算节点的灵敏度矩阵,需要有功灵敏度、无功灵敏度相加得到。而后转化为Kmeans需要的电气距离来进行聚类划分。
3.集群K值
Kmeans集群K值依据手肘原则选择,根据结果挑选适合的集群数,K值选择的示意图如下:
部分代码
%对distanceij(i,:)从小到大排序,记下第M个距离,作为节点i的参数(用这个参数判断节点i是否适合作为集群中心)整体逻辑对应论文p26
sig=zeros(1,size(distanceij,1));%sig为1xN矩阵,N为节点数
for i=1:size(distanceij,1)
unsort=distanceij(i,:);%unsort存储未排序时候的距离
issort=sort(unsort);%issort存储排序后的距离
sig(1,i)=issort(1,M);%记录下每个节点第M个距离
end
%设定N的值
N=15;
sigissort=sort(sig);%根据每个节点的参数排序,参数越小,表示离更多节点越近,越容易成为集群中心
threshold=sigissort(1,N);%设置集群中心集合的门槛
%设置最多划分N个集群,再往上无意义
if k>N
k=N;
end
%选取高密度节点
highdensity=zeros(N,1);
m=1;
for i=1:size(sig,2)
if sig(1,i)<=threshold%把所有小于门槛值的都记录下来
highdensity(m,1)=i;
m=m+1;
end
end
centroid=zeros(k,size(data,2));
%第一个聚类中心
[~,center]=min(sig);%center为第一个聚类中心节点号
centroidi=zeros(k,1);
centroidi(1,1)=center;%记录每个集群中心
% 取剩余k-1个聚类中心,参考P26,步骤e)
for i=2:k
distancejcenter=zeros(i-1,size(highdensity,1));
for j=1:size(highdensity,1)
for m=1:i-1
distancejcenter(m,j)=distanceij(highdensity(j,1),centroidi(m,1)); %计算与现有所有集群中心的距离
end
end