• 大小: 0M
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签: 其他  

资源简介

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

评论

共有 条评论