资源简介
zw_lw5413-9700981-BPSO.zip

代码片段和文件信息
function [ Besfi Besi Bfi DIVS ] = BPSO( SizeGc1c2wdeviceprice )
% 基本粒子群优化算法(Particle Swarm Optimization)
% 输入参数
% c1 学习因子1
% c2 学习因子2
% w 惯性权重
% G 最大迭代次数
% Size 初始化群体个体数目
% 输出参数
% 输出参数
% Besfi 优化后最优个体适应度
% pg 最优个体
% Bfi 每次迭代中最优个体的适应度,1*n向量
% DIVS 种群多样性
%创建一个进度条以监视优化进度
% hWaitbar=waitbar(0‘开始优化计算...‘‘Name‘[num2str(Size) ‘-‘ num2str(G) ‘-‘ num2str(c1) ‘-‘ num2str(c2) ‘-‘ num2str(w)]);
% set(hWaitbar‘Windowstyle‘‘modal‘); %窗口锁定最前
% btnCancel = findall(hWaitbar‘style‘‘pushbutton‘); %查找“取消“按钮
% set(btnCancel‘string‘‘取消‘‘fontsize‘10); %设置“取消“按钮显示字符
%优化对象参数提取
[concodedevicenumcodesizes] = Getcontrolcode( device ); %提取未优化时的运行编码
% D:搜索空间维数(未知数个数)
D=size(concode2);
%搜索范围和个体移动速度限制
Maxx=ones(1D);
Minx=zeros(1D);
Maxv=ones(1D);
Minv=zeros(1D);
% Maxv=(Maxx-Minx)/4;
% Minv=-Maxv;
%------初始化种群的个体 (可以在这里限定位置和速度的范围)------------
for i=1:Size
for j=1:D
% x(ij)=rand*(Maxx(j)-Minx(j)+Minx(j)); %随机初始化位置
v(ij)=rand*(Maxv(j)-Minv(j))+Minv(j); %随机初始化速度
x(ij)=round(v(ij));
end
end
%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------
for i=1:Size
ps(i)=fun(deviceround(x(i:))devicenumcodesizesprice);
y(i:)=x(i:);
end
pg=round(x(1:)); %Pg为全局最优
Besfi=ps(1);
for i=2:Size
if ps(i) pg=round(x(i:));
Besfi=ps(i);
end
end
%------进入主要循环,按照公式依次迭代,直到满足精度要求------------
for k=1:G
time(k)=k;
% bf(t)=fitness(pgp);
%计算多样性
S=max(Maxx-Minx)/2;
for xj=1:1:D
avgxj(xj)=mean(x(:xj));
end
DIVS(k)=0;
for xi=1:1:Size
tmpd=0;
for xj=1:1:D
tmpd=tmpd+(x(xixj)-avgxj(xj))^2;
end
DIVS(k)=DIVS(k)+sqrt(tmpd);
end
DIVS(k)=DIVS(k)/(Size*S);
%DIVS(t)
for i=1:Size
randC1=rand(1D);
randC2=rand(1D);
%randC1=rand;
%randC2=rand;
%v(i:)=(0.9-0.5*t/MaxDT)*v(i:)+c1*randC1.*(y(i:)-x(i:))+c2*randC2.*(pg-x(i:));
%v(i:)=(0.9-0.5*t/MaxDT)*v(i:)+c1*randC1.*(y(i:)-x(i:))+c2*randC2.*(pg-x(i:));
v(i:)=w*v(i:)+c1*randC1.*(y(i:)-x(i:))+c2*randC2.*(pg-x(i:));
for dd=1:D
if v(idd)>Maxv(dd)
v(idd)=Maxv(dd);
end
if v(idd) v(idd)=Minv(dd);
end
end
x(i:)=round(v(i:));
% x(i:)=x(i:)+v(i:);
%
% for dd=1:D
% if x(idd)>Maxx(dd)
% x(idd)=Maxx(dd);
% end
% if x(idd) % x(idd)=Minx(dd);
% end
% end
%for dd=1:D
% if rand<0.01
% if rand<0.5
% x(idd)=x(idd)+rand*(Maxx(dd)-x(idd));
% else
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4020 2019-07-14 08:10 \lw5413-9700981-BPSO.m
文件 36 2019-07-14 08:10 \no.txt
相关资源
- PID_AutoTune_v0.rar
- vspd7.2.308.zip
- 价值2k的H漫画小说系统
- Pythonamp;课堂amp;笔记(高淇amp;400;集第
- ddos压力测试工具99657
- UML建模大全
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- FTP课程设计(服务端+客户端)
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- oracle数据迁移项目实施方案
- Web Api 通过文件流 文件到本地
- Visio图标-最新最全的网络通信图标库
- Spire API文档
- OpenGL参考手册
- Python中Numpy库最新教程
- SPD博士V5.3.exe
- 直流无刷电机方波驱动 stm32 例程代码
- layui后台管理模板
- 仿知乎界面小程序源代码
- 云平台-阿里云详细介绍
- photoshop经典1000例
- scratch垃圾分类源码(最终版本).sb
- IAR ARM 7.8破解
- TI CCS V5.4 安装步骤及破解文件
- 松下plc FP-XH的驱动
- 局域网硬件信息收集工具
- 加快Windows XP操作系统开机速度
评论
共有 条评论