【物理应用】基于matlab粒子群配电网重构【含Matlab源码 764期】
2021/4/13 1:25:51
本文主要是介绍【物理应用】基于matlab粒子群配电网重构【含Matlab源码 764期】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、简介
基于matlab粒子群配电网重构
二、源代码
%主函数 clear clc warning off N=10;%节点总数(包括电源节点) R=16;%支路总数 sizepop=10;%粒子群种群规模 maxgen=200;%算法最大迭代次数 pop=pop_initial(sizepop,N,R);%种群初始化 Vmax=4;Vmin=-Vmax;%粒子速度的上限与下限 Sigmoid=@(x) 1./(1+exp(-x)); Utility=FAPSO_LDNP(N,pop,Vmax,Vmin,maxgen,sizepop);%调用FAPSO算法求解LDNP问题 %结果显示 figure(4) plot(Utility) grid on xlabel('迭代次数','fontsize',12) ylabel('投资效益比','fontsize',12) title('FAPSO迭代收敛图','fontsize',12) function Utility=FAPSO_LDNP(D,pop,Vmax,Vmin,maxgen,popsize) vmax=Vmax/4; vmin=-Vmin/-4; popmax=5; popmin=-5; c1=2; c2=2; w=0.8;%固定惯性权重 wmin=0.4; k1=1.5;%惯性权重调整参数 k2=0.3; % 产生初始粒子和速度 for i=1:popsize %随机产生一个种群 pop0(i,:)=5*rands(1,D); %初始种群 V(i,:)=rands(1,D); %初始化速度 %计算适应度 fitness(i)=fun_LDNP(pop0(i,:)); %染色体的适应度 end % 个体极值和群体极值 [bestfitness,bestindex]=max(fitness); zbest=pop0(bestindex,:); %全局最佳 gbest=pop0; %个体最佳 fitnessgbest=fitness; %个体最佳适应度值 fitnesszbest=bestfitness; %全局最佳适应度值 %加FA改进 分组 Fav=sum(fitness)/popsize;%F_{av} C_index=find(fitness>=Fav);%C组,第三组,适应值最差的一组 地址变量 lc=length(C_index); b_index=find(fitness<Fav);%准B组,其中一部分更优的粒子将会被分到A组,剩下的才是真正的B组 lb=length(b_index); Fav_=0; for i=1:lb Fav_=Fav_+fitness(b_index(i)); end Fav_=Fav_/lb;%F_{av}^' A_index=find(fitness<Fav_);%A组 la=length(A_index); B_index=find(fitness>=Fav_&fitness<Fav);%B组 lb=length(B_index); %算权重 W=zeros(popsize,1);%开辟惯性权重存储空间 for i=1:popsize if sum(i==A_index) W(i)=w-(w-wmin)*abs(fitness(i)-Fav_)/(fitnesszbest-Fav_); elseif sum(i==B_index) W(i)=w; elseif sum(i==C_index) W(i)=1.5-1/(1+k1*exp(-k2*abs(fitnesszbest-Fav_))); end end for i=1:10 [~,~,~]=jiedian(pop(:,:,i)); end % 迭代寻优 for i=1:maxgen for j=1:popsize %速度更新 V(j,:) = W(j)*V(j,:) + c1*rand*(gbest(j,:) - pop0(j,:)) + c2*rand*(zbest - pop0(j,:)); V(j,V(j,:)>vmax)=vmax; V(j,V(j,:)<vmin)=vmin; %种群更新 pop0(j,:)=pop0(j,:)+0.1*V(j,:); pop0(j,pop0(j,:)>popmax)=popmax; pop0(j,pop0(j,:)<popmin)=popmin; %适应度值 fitness(j)=fun_LDNP(pop0(j,:)); end for j=1:popsize %个体最优更新 if fitness(j) > fitnessgbest(j) gbest(j,:) = pop0(j,:); fitnessgbest(j) = fitness(j); end %群体最优更新 if fitness(j) > fitnesszbest zbest = pop0(j,:); fitnesszbest = fitness(j); end end yy(i)=fitnesszbest; %惯性权重更新 %加FA改进 分组 Fav=sum(fitness)/popsize;%F_{av} C_index=find(fitness>=Fav);%C组,第三组,适应值最差的一组 地址变量 lc=length(C_index); b_index=find(fitness<Fav);%准B组,其中一部分更优的粒子将会被分到A组,剩下的才是真正的B组 lb=length(b_index); Fav_=0; for ii=1:lb Fav_=Fav_+fitness(b_index(ii)); end Fav_=Fav_/lb;%F_{av}^' A_index=find(fitness<Fav_);%A组 la=length(A_index); B_index=find(fitness>=Fav_&fitness<Fav);%B组 lb=length(B_index); %算权重 W=zeros(popsize,1);%开辟惯性权重存储空间 for ii=1:popsize if sum(ii==A_index) W(ii)=w-(w-wmin)*abs(fitness(ii)-Fav_)/(fitnesszbest-Fav_); elseif sum(ii==B_index) W(ii)=w; elseif sum(ii==C_index) W(ii)=1.5-1/(1+k1*exp(-k2*abs(fitnesszbest-Fav_))); end end end
三、运行结果
四、备注
完整代码或者代写添加QQ 1564658423
这篇关于【物理应用】基于matlab粒子群配电网重构【含Matlab源码 764期】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南