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

📄 psoqiaoshikkd.m

📁 粒子群算法用于桥式系统的可靠性优化。算法简单可靠方便。
💻 M
字号:
clear;clc;
popsize=20;num=5;
bujian=zeros(popsize,num+3);                            %第num+3列放系统可靠度,系统费用,适应值
newbujian=zeros(popsize,num+3);    
vol=zeros(popsize,num); 
c1=1.4962;c2=1.4962;
maxgen=100;k=1;

for i=1:popsize,
    for j=1:num,
            bujian(i,j)=rand;newbujian(i,j)=rand;
    end
    newbujian(i,:)=PSOjisuankekaodunewmodify(newbujian(i,:));
end
bestbujian=newbujian(1,:);
%%%%%%%%%%%%开始主循环%%%%%%%%%%%%
while(k<=maxgen) 
         for i=1:popsize,
                     bujian(i,:)=PSOjisuankekaodunewmodify(bujian(i,:));
         end
       %计算个体极值与全局极值
        for i=1:popsize,                                                        
                if bujian(i,num+3)>newbujian(i,num+3)  newbujian(i,:)=bujian(i,:);  end
                if newbujian(i,num+3)>bestbujian(num+3)  bestbujian=newbujian(i,:);  end
        end
       track(k,1)=k;
       track(k,2)=bestbujian(num+2);
       
       track(k,3)=min(bujian(:,num+1));
       track(k,4)=max(bujian(:,num+1));
       track(k,5)=mean(bujian(:,num+1));

      %更新位置与速度
       quanzhong=0.9-0.5*k/maxgen;
        for i=1:popsize,
                    for j=1:num,
                            vol(i,j)=quanzhong*vol(i,j)+c1*rand*(newbujian(i,j)-bujian(i,j))+c2*rand*(bestbujian(j)-bujian(i,j));      %更新速度       
                            bujian(i,j)=bujian(i,j)+vol(i,j);                           %更新位置
                             if(bujian(i,j)<0)   bujian(i,j)=0;   end
                             if(bujian(i,j)>1) bujian(i,j)=1; end
                    end
        end
        k=k+1;
end
%%%%%%%%%%%%结束主循环%%%%%%%%%%%%
bestbujian,
% plot(track(:,1),track(:,2),'b-+',track(:,1),track(:,3),'r-x',track(:,1),track(:,4),'m-*');
% t=max(track(:,2));
% plot(track(:,1),track(:,2),'r');hold on
plot(track(:,1),track(:,5));
% axis([1,maxgen,80,t+1]);
xlabel('Generation');ylabel('Fitness)');

⌨️ 快捷键说明

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