目录
1 主要内容
2 部分代码
3 部分程序结果
4 下载链接
1 主要内容
该程序复现文章《基于改进遗传算法的配电网故障定位》,将改进的遗传算法应用于配电网故障定位中, 并引入分级处理思想, 利用配电网呈辐射状的特点, 首先把整个配电网划分为主干支路和若干独立区域, 再利用该算法分别对各独立区域进行故障定位, 然后进行全局寻优, 这样能大大减少可行解的维数, 提高定位速度。使用该定位方法对一具有 20个节点的配电网系统进行故障定位的仿真实验, 它使可行解个数由 220 个减少到 144 个。结果表明, 该定位方法不仅定位准确, 而且定位速度快, 对复杂配电网的故障定位尤为有效。
- 模型
该模型采用如下的算例模型进行计算,采用分级处理思想:各独立区域内只有一个电流注入点与区域外的其他节点直接相连, 各独立区域相互独立, 无交叉项。分区时,应首先确定一主干支路,然后把主干支 路的每一分支支路及其末梢部分分别划分为一个独立区域。如果某一独立区域的节点数比较多, 则还可将该独立区域再次划分为几个次级独立区域 , 在进行故障定位时 ,按照各独立区域的级别从低到高 逐次应用遗传算法进行求解。
2 部分代码
for i = 1:2:N-1 %这里设置成奇数的递进格式,方便两行互换if(rand1)指的是第一行POP.NEWchrom1(i,:) = [POP.chrom1(i,1:cpoint),POP.chrom1(i+1,cpoint+1:chromlength)]; POP.NEWchrom1(i+1,:) = [POP.chrom1(i+1,1:cpoint),POP.chrom1(i,cpoint+1:chromlength)]; elsePOP.NEWchrom1(i,:) = POP.chrom1(i,:); %如果rand大于变异概率,基因不变POP.NEWchrom1(i+1,:) = POP.chrom1(i+1,:);end end %% 根据交叉互换的结果 更新种群的基因 POP.chrom1=POP.NEWchrom1; %% 基因变异并更新种群 for i=1:N %i指的是行数,j1和j2指的是列数for j1=1:chromlength %染色体1的变异设置if(randendend end%% 性状的表达与选择% 将基因(二进制编码)转化为自变量的取值(10进制的数)% for i=1:N %limit矩阵在之前的定义当中,全都是1的话,分子之和为2^chromlength(1),所以在乘法之前在1左右 % POP.x1(i)=(binary2decimal(POP.chrom1(i,:)))/(2^chromlength(1)-1)*(limit(1,2)-limit(1,1)); % end %% 根据自变量的取值代入得到函数的输出 for i=1:NPOP.y(i)=f1(POP.chrom1(i,:)); %代入函数计算 end %% 将输出的结果单位化,转化为0-1之间的数值长度(相当于轮盘赌的各个区域的面积) a=max(POP.y); %找出函数值里面的最小值,其实后续会直接淘汰的 b=N*a-sum(POP.y); for i=1:N %给一个圆盘分N块区域,累加的和为1POP.adapt(i)=(a-POP.y(i))/b; end %% 数值长度转换为0-1之间的区间的节点(相当于把面积转化为了轮盘赌上各个区域的边界线) POP.NWEadapt(1)=POP.adapt(1); %第一个点