300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【微电网优化】基于粒子群算法实现分布式电源的选址和定容附matlab代码

【微电网优化】基于粒子群算法实现分布式电源的选址和定容附matlab代码

时间:2022-12-21 12:10:52

相关推荐

【微电网优化】基于粒子群算法实现分布式电源的选址和定容附matlab代码

1 简介

2 部分代码

%% 粒子群算法function [Best_pos,Best_score,curve]=PSO(pop,Max_iter,lb,ub,dim,fobj,Vmax,Vmin)%% 参数设置w = 0.9;% 惯性因子c1 = 2; % 加速常数c2 = 2; % 加速常数Dim = dim; % 维数sizepop = pop; % 粒子群规模maxiter = Max_iter;% 最大迭代次数if(max(size(ub)) == 1)ub = ub.*ones(1,dim);lb = lb.*ones(1,dim);endfun = fobj; %适应度函数%% 粒子群初始化Range = ones(sizepop,1)*(ub-lb);pop = rand(sizepop,Dim).*Range + ones(sizepop,1)*lb; % 初始化粒子群V = rand(sizepop,Dim)*(Vmax-Vmin) + Vmin; % 初始化速度fitness = zeros(sizepop,1);for i=1:sizepopfitness(i,:) = fun(pop(i,:));% 粒子群的适应值end%% 个体极值和群体极值[bestf, bestindex]=min(fitness);zbest=pop(bestindex,:); % 全局最佳gbest=pop;% 个体最佳fitnessgbest=fitness; % 个体最佳适应值fitnesszbest=bestf;% 全局最佳适应值%% 迭代寻优iter = 0;while( (iter < maxiter ))for j=1:sizepop% 速度更新V(j,:) = w*V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));if V(j,:)>VmaxV(j,:)=Vmax;endif V(j,:)<VminV(j,:)=Vmin;end% 位置更新pop(j,:)=pop(j,:)+V(j,:);for k=1:Dimif pop(j,k)>ub(k)pop(j,k)=ub(k);endif pop(j,k)<lb(k)pop(j,k)=lb(k);endend% 适应值fitness(j,:) =fun(pop(j,:));% 个体最优更新if fitness(j) < fitnessgbest(j)gbest(j,:) = pop(j,:);fitnessgbest(j) = fitness(j);end% 群体最优更新if fitness(j) < fitnesszbestzbest = pop(j,:);fitnesszbest = fitness(j);endenditer = iter+1; % 迭代次数更新curve(iter) = fitnesszbest;end%% 绘图Best_pos = zbest;Best_score = fitnesszbest;end

3 仿真结果

4 参考文献

[1]陈眩姿. 基于粒子群算法的微电网分布式电源优化规划[J]. 电力电子, (3):6.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。