本帖最后由 scylle718 于 2017-4-25 00:43 编辑

function PSOstandard_benchmarks_Test

clear all;

close all;

c1=1.49445;c2=1.49445;%

global dimension  Size

dimension=40;Size=40;

%种群维数 dimension、规模 Size

Tmax=1000;%%最大迭代次数 Tmax

%%选择不同测试函数的速度和位置限制范围%%

F_n=1;

switch F_n

case 1   %%  f1_Sphere                    %%

Vmax(1:dimension)= 30;  Vmin(1:dimension)=-30;

Xmax(1:dimension)= 30;  Xmin(1:dimension)=-30;

end

%%三维显示粒子群运动变化%%

global Swarmscope;

Swarmscope = plot(0,0, '.');

axis([Xmin(1) Xmax(1) Xmin(2) Xmax(2) Xmin(3) Xmax(3)]);   %初始轴的范围的设置

%  axis square;

grid on;

set(Swarmscope,'EraseMode','xor','MarkerSize',12); %设置用来显示粒子.

%%initial Position Velocity%%

Position=zeros(dimension,Size);%以后位置Position统一为此种记法:行 dimension;列 Size;

Velocity=zeros(dimension,Size);%每个粒子的位置、速度对应于一列。

[Position,Velocity]=initial_Position_Velocity(dimension,Size,Xmax,Xmin,Vmax,Vmin);

%%个体最优 P_p 和全局最优 globe 初始赋值%%

P_p=Position;globe=zeros(dimension,1);

%%评价每个粒子适应值,寻找出 globle%%

for j=1:Size

Pos=Position(:,j);

fz(j)=Fitness_Function(Pos,F_n);

end

[P_g,I]=min(fz);%P_g  1*1 ?

globe=Position(:,I);

%%打散参数设置%%

N_dismiss=51;%太小,不利于初始寻优

N_dismissed=0;%记录被打散的次数

deltaP_gg=0.001%种群过分收敛衡量标准值(适应度变化率)

%  reset = 1;  %设置reset = 1时指示粒子群过分收敛时将被打散,如果reset=0则不打散

reset_dismiss = 0;

%%迭代开始%%

for itrtn=1:Tmax

time(itrtn)=itrtn;

%%过于集中时打散%%

if reset_dismiss==1

bit=1;

if itrtn>N_dismiss

bit=bit&((P_gg(itrtn-1)-P_gg(itrtn-N_dismiss))/P_gg(itrtn-1)< deltaP_gg);

if bit==1

[Position,Velocity]=initial_Position_Velocity(dimension,Size,Xmax,Xmin,Vmax,Vmin);%重新初始化位置和速度

N_dismissed=N_dismissed+1;

N_dismissed

warning('粒子过分集中!重新初始化……');      %   给出信息

itrtn

end

end

end

Weight=0.4+0.5*(Tmax-itrtn)/Tmax;

%        Weight=1;

r1=rand(1);r2=rand(1);

for i=1:Size

Velocity(:,i)=Weight*Velocity(:,i)+c1*r1*(P_p(:,i)-Position(:,i))+c2*r2*(globe-Position(:,i));%速度更新

end

%%速度限制%%

for i=1:Size

%%引入速度边界变异%%

%         Vout_max=max(Velocity(:,i));

%         Vout_min=min(Velocity(:,i));

%         if Vout_max

jj=1;

K=ones(dimension,1);

for row=1:dimension

if Velocity(row,i)>Vmax(row)

K(jj)=Vmax(row)/Velocity(row,i);

jj=jj+1;

elseif Velocity(row,i)

K(jj)=Vmin(row)/Velocity(row,i);

jj=jj+1;

else

end

end

Kmin=min(K);

for row=1:dimension

if Velocity(row,i)>Vmax(row)

Velocity(row,i)=Velocity(row,i)*Kmin;

elseif Velocity(row,i)

Velocity(row,i)=Velocity(row,i)*Kmin;

else

end

end

end

%      K

Position=Position+Velocity;%位置更新

%%位置限制%%

for i=1:Size

for row=1:dimension

if Position(row,i)>Xmax(row)

Position(row,i)=Xmax(row);

elseif Position(row,i)

Position(row,i)=Xmin(row);

else

end

end

end

%%重新评价每个粒子适应值,更新个体最优 P_p 和全局最优 globe%%

for j=1:Size

xx=Position(:,j)';

fz1(j)=Fitness_Function(xx,F_n);

if fz1(j)

P_p(:,j)=Position(:,j);

fz(j)=fz1(j);

end

% [P_g1,I]=min(fz1);%%%有改动

if fz1(j)

P_g=fz1(j);

%      globe=Position(:,I);

end

end

[P_g1 I]=min(fz);

P_gg(itrtn)=P_g1;

globe=P_p(:,I);

%     globe=Position(:,I);

%     itrtn

%     globe

%% draw 粒子群运动变化图%%

XX=Position(1,:);YY=Position(2,:);ZZ=Position(3,:);

if dimension>= 3

set(Swarmscope,'XData',XX,'YData', YY, 'ZData', ZZ);

elseif dimension== 2

set(Swarmscope,'XData',XX,'YData',YY );%设置

end

xlabel('粒子第一维');

ylabel('粒子第二维');

zlabel('粒子第三维');

drawnow;

end

%%画‘评价值’变化曲线%%

figure(1);

BestFitness_plot(time,P_gg);

%%画系统阶跃响应变化曲线%%

% figure(2);

% Step_2PID(globe)

function   BestFitness_plot(time,P_gg)

plot(time,P_gg);

xlabel('迭代的次数');ylabel('适应度值P_g');

function [Position,Velocity]=initial_Position_Velocity(dimension,Size,Xmax,Xmin,Vmax,Vmin)

for i=1:dimension

Position(i,:)=Xmin(i)+(Xmax(i)-Xmin(i))*rand(1,Size);

Velocity(i,:)=Vmin(i)+(Vmax(i)-Vmin(i))*rand(1,Size);

end

function Fitness=Fitness_Function(X,F_n)

global dimension  Size

% F_n 标准测试函数选择,其中:

% n=1: f1_Sphere        测试

% n=2: f2_Quadric       测试

% n=3: f3_Ackley        测试

% n=4: f4_Griewank      测试

% n=5: f5_Rastrigin     测试

% n=6: f6_Rosenbrock    测试

% n=7: f7_Schaffer's f6 测试  注:此函数只接受两个变量,故dimension=2。

switch F_n

case 1

%%  f1_Sphere        %%

Func_Rastrigin=X(:)'*X(:);

Fitness=Func_Rastrigin;

end

多种群粒子群 MATLAB,多种群粒子群算法怎么编码啊,楼主小白求大神指导相关推荐

  1. 回归预测 | MATLAB实现PSO-LSSVM粒子群算法优化最小二乘支持向量机多输入单输出

    回归预测 | MATLAB实现PSO-LSSVM粒子群算法优化最小二乘支持向量机多输入单输出 目录 回归预测 | MATLAB实现PSO-LSSVM粒子群算法优化最小二乘支持向量机多输入单输出 预测效 ...

  2. 回归预测 | MATLAB实现PSO-GCNN粒子群算法优化分组卷积神经网络的数据多输入单输出回归预测

    回归预测 | MATLAB实现PSO-GCNN粒子群算法优化分组卷积神经网络的数据多输入单输出回归预测 目录 回归预测 | MATLAB实现PSO-GCNN粒子群算法优化分组卷积神经网络的数据多输入单 ...

  3. 混合储能系统容量优化MATLAB程序基于粒子群算法

    混合储能系统容量优化MATLAB程序基于粒子群算法 (1)该程序为基于粒子群算法的混合储能系统容量优化程序,中文核心期刊论文源程序,配有该论文,再给一篇类似的参考论文. (2)该程序中混合储能系统为蓄 ...

  4. Matlab基于动态粒子群算法的动态环境寻优算法 基本粒子群算法首先是在解空间中随机初始化所有粒子

    Matlab基于动态粒子群算法的动态环境寻优算法 基本粒子群算法首先是在解空间中随机初始化所有粒子,每个粒子位置即代表问题的一个潜在解,在搜索过程中,采用适应度函数对每个粒子位置进行评价,适应度值好的 ...

  5. 含抽水蓄能电站系统的调峰经济调度研究matlab程序(粒子群算法)

    含抽水蓄能电站系统的调峰经济调度研究matlab程序(粒子群算法) 参考文献:抽水蓄能电站的最佳调度方案研究 调峰电源的优化调度是促进电力系统安全稳定运行,实现可靠供电的要措施.因为目前我国的调峰电源 ...

  6. 电力系统无功优化MATLAB程序基于粒子群算法IEEE30配电网

    电力系统无功优化MATLAB程序基于粒子群算法IEEE30配电网 (1)该程序为基于粒子群算法的配电网无功优化程序,可达到有效降低网损的目的. (2)程序以IEEE-30节点为算例.以网损最小为目标函 ...

  7. 含分布式电源的配电网日前两阶段调度模型matlab程序(粒子群算法)

    含分布式电源的配电网日前两阶段调度模型matlab程序(粒子群算法) 参考文献:含分布式电源的配电网日前两阶段优化调度模型 摘要:在电力市场环境下,供电公司通过对接入配电网的分布式电源(distrib ...

  8. 【MATLAB】混合粒子群算法原理、代码及详解

    目录 1.算法 1.1.原理 1.2.性能比较 1.3.步骤 2.代码 2.1.源码及注释 2.2.执行与效果 1.算法 1.1.原理 \qquad建议没接触过粒子群算法的朋友先看较为基础的全局粒子群 ...

  9. MATLAB优化工具箱 粒子群算法 particleswarm优化包

    记录几篇对我应用MATLAB粒子群particleswarm优化包很有帮助的文档. [1] <Tune Particle Swarm Optimization Process>matlab ...

  10. 混合储能系统容量优化matlab,采用粒子群算法编制风光互补发电储能系统的容量优化程序,程序采用超级电容和蓄电池的方案

    混合储能系统容量优化matlab 采用粒子群算法编制风光互补发电储能系统的容量优化程序,程序采用超级电容和蓄电池的方案,得到最佳蓄电池和超级电容个数.

最新文章

  1. MMA冠军Rory MacDonald:比特币现金(BCH)是真正的比特币
  2. jQuery的end()方法使用详解
  3. C中常用字符串处理函数
  4. Java通过JNI调用C++的DLL库
  5. 深度学习2.0-13.神经网络与全连接层之张量实战
  6. Java练习 SDUT-1294_选票统计
  7. java编写猜数字游戏_java编写猜数字游戏
  8. 思科CDP/LLDP协议
  9. Spiceworks数据统计:Win10发布半年使用情况
  10. 磁带机技术的应用解析
  11. 生成验证码 大写、小写字母,数字 java
  12. 麻省理工学院:科技宠儿的摇篮
  13. 前沿研究丨李德毅院士:基于驾驶脑的智能驾驶车辆硬件平台架构
  14. influx配置文件详解
  15. 软件测试自动化验证码,自动化测试如何解决验证码的问题
  16. BTC100白新学堂——货币流通的双重巧合
  17. 小白学习图像处理3——图像旋转原理
  18. 循证护理教育中的移动辅助同伴评估方法
  19. JS 内存泄漏的几种情况以及解决方案
  20. 怎么将txt转为html

热门文章

  1. exchange 2010部署之一
  2. STM32F103无源蜂鸣器驱动程序
  3. 在vs2013下利用vb.net简单使用WebService实例
  4. 74cms php在那个文件夹里面,74cms骑士人才网站系统 v5.0/v5.1后台目录地址修改教程...
  5. 关于ExtJS错误“例外被抛出且未被接住”
  6. Hbase下载、安装流程
  7. win10 专业版安装系统
  8. PyQt4安装使用以及pycharm环境配置
  9. python 安装PyQt4
  10. Rainmeter个人使用的插件