⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpsoh1.txt

📁 用matlab语言编的多维粒子群代吗
💻 TXT
字号:

function [PBEST,x] = cpsoh1(N)

global Swarm;
global B;
psoOptions = get_Options;
Obj = get_Obj(N);
f2eval = 'LJcluster';

    [Swarm, PBEST] =initiate(psoOptions,Obj);%初始化的作用是产生一个最优的背景向量b(j,z)
 for iter = 1 : psoOptions.Vars.Iterations

    for j = 1 : psoOptions.population
          for i = 1 : psoOptions.Vars.PopSize%粒子群有 10个
             
              fval1 = feval(f2eval, b(j,Swarm(j).individual(i).number));%feval 执行由串指定的函数 
              fval2 = feval(f2eval, b(j,Swarm(j).individual(i).best));
              fval3 = feval(f2eval, b(j,Swarm(j).P));
              if(fval1 < fval2)                    
                Swarm(j).individual(i).best = Swarm(j).individual(i).number;       
              end             
              if(fval2 < fval3)  
                Swarm(j).P = Swarm(j).individual(i).best; 
              end
              for d=1:Obj.Dim
                Swarm(j).individual(i).dim(d).speed = psoOptions.SParams.Chi*Swarm(j).individual(i).dim(d).speed + ... 
                psoOptions.SParams.c1 * rand * ( Swarm(j).individual(i).dim(d).best - Swarm(j).individual(i).dim(d).number ) + ...
                psoOptions.SParams.c2 * rand * ( Swarm(j).P(d) - Swarm(j).individual(i).dim(d).number ) ;                
                
                Swarm(j).individual(i).dim(d).speed = min(psoOptions.SParams.Vmax, Swarm(j).individual(i).dim(d).speed);
                Swarm(j).individual(i).dim(d).speed = max( - psoOptions.SParams.Vmax, Swarm(j).individual(i).dim(d).speed);
                
                Swarm(j).individual(i).dim(d).number = Swarm(j).individual(i).dim(d).number + Swarm(j).individual(i).dim(d).speed;
                Swarm(j).individual(i).dim(d).number = min(Obj.ub(d), Swarm(j).individual(i).dim(d).number);
                Swarm(j).individual(i).dim(d).number = max(Obj.lb(d), Swarm(j).individual(i).dim(d).number);         
               
             end            
              Swarm(j).individual(i).number=[Swarm(j).individual(i).dim.number];
              Swarm(j).individual(i).best=[Swarm(j).individual(i).dim.best];
            %  PBEST(j,d) = feval(f2eval,[Swarm(j).Dim(d).P(d)]);%M个N维的向量组成的值
            %   x(j,d)=[Swarm(j).Dim(d).P(d)];
           
          end
   
    
  % B=[Swarm.Dim.P];
    x=B;
 PBEST=feval('LJcluster', B);
end
 end
 clc 
    %PBEST(j,d) = feval(f2eval,[Swarm(j).Dim(d).P(d)]);%M个N维的向量组成的值
            %   x(j,d)=[Swarm(j).Dim(d).P(d)];
     %       for iter = 1 : psoOptions.Vars.Iterations               
     % for j = 1 : psoOptions.population
      %    for i = 1 : psoOptions.Vars.PopSize%粒子群有 10个
                         
           
          
       %   for d = 1 : Obj.Dim
        %           fval1 = feval(f2eval, b(j,[Swarm(j).individual(i).dim(d).number)]);%feval 执行由串指定的函数 
         %           fval2 = feval(f2eval, b(j,[Swarm(j).individual(i).dim(d).best)]);
         %           fval3 = feval(f2eval, b(j,Swarm(j).Dim(d).P));
         %        if(fval1 < fval2)                    
   %                  Swarm(j).individual(i).dim(d).best = Swarm(j).individual(i).dim(d).number;       
    %               end
     %            
      %           if(fval2 < fval3)  
       %              Swarm(j).Dim(d).P(d) = Swarm(j).individual(i).dim(d).best; 
        %         end
         %        Swarm(j).individual(i).dim(d).speed = psoOptions.SParams.Chi * ( Swarm(j).individual(i).dim(d).speed + ... 
         %        psoOptions.SParams.c1 * rand * ( Swarm(j).individual(i).dim(d).best - Swarm(j).individual(i).dim(d).number ) + ...
          %       psoOptions.SParams.c2 * rand * ( Swarm(j).Dim(d).P(d) - Swarm(j).individual(i).dim(d).number ) );                
                
          %       Swarm(j).individual(i).dim(d).speed = min(psoOptions.SParams.Vmax, Swarm(j).individual(i).dim(d).speed);
           %      Swarm(j).individual(i).dim(d).speed = max( - psoOptions.SParams.Vmax, Swarm(j).individual(i).dim(d).speed);
                
           %      Swarm(j).individual(i).dim(d).number = Swarm(j).individual(i).dim(d).number + Swarm(j).individual(i).dim(d).speed;
            %     Swarm(j).individual(i).dim(d).number = min(Obj.ub(d), Swarm(j).individual(i).dim(d).number);
             %    Swarm(j).individual(i).dim(d).number = max(Obj.lb(d), Swarm(j).individual(i).dim(d).number);         
       %    end            
        %         PBEST(j,d) = feval(f2eval,[Swarm(j).Dim(d).P(d)]);%M个N维的向量组成的值
         %        x(j,d)=[Swarm(j).Dim(d).P(d)];
       %  end
        
        %if( abs(PBEST-LJmin(N)) < psoOptions.Vars.ErrGoal )
         %   total = total + 1;
           % sum = sum + iter * psoOptions.Vars.PopSize * Obj.Dim;
           % break;
       % elseif( (opt-PBEST) > psoOptions.Vars.GoalInprove )
        %    fprintf(1,'\n%d %g\n',iter,PBEST);
         %   opt = PBEST;
          %  for i = 1 : 2 * psoOptions.Vars.PopSize
           %     j = round(rand*(Obj.Dim-1)+1);
            %    ENDX(j,psoOptions.Vars.PopSize);
            %end
        %else
         %   fprintf(1,'%d ',iter);
            %             [x,fval] = simplex(f2eval,[Swarm.P]);
            %             if(fval <= PBEST)
            %                 for j = 1 : Obj.Dim
            %                     Swarm(j).P = x(j);
            %                 end
            %                 PBEST = fval;
            %             end
          %  for i = 1 : 4 * psoOptions.Vars.PopSize
           %     j = round(rand*(Obj.Dim-1)+1);
            %    ENDX(j,psoOptions.Vars.PopSize);
           % end
       % end
    %end 
   % fprintf(fid,'\n%d\t%g\n',iter,PBEST); 
        
    %     fVal(runs,:) = PBEST;
%     History(runs,:) = iter;
%end
%fprintf(1,'Total number is %d\nSum is %d\nAverage is %.1f\n',total,sum,sum/total);
%fclose(fid);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -