久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3007|回復: 1
打印 上一主題 下一主題
收起左側

粒子群算法CCPSO2

[復制鏈接]
跳轉到指定樓層
樓主
ID:375796 發表于 2018-7-20 13:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

%function [gbest,gbestfit,bestfit]=ccpso2(x,popsize,dim,maxiter,fitness)
%popsize 粒子群大小,即粒子個數
%dim  粒子維度(未分群之前的總維度)
%k 粒子群的分群的個數
%s 每個分群的變量數,s*k=dim
%x 保存粒子群的各個粒子的當前位置
%y 保存粒子群的各個粒子的當前局部粒子最優
%gbest 保存全局最優粒子位置
%cc 狀態參數,只能是整形數,c為0時,則說明粒子迭代后全局最優沒有更新;否則粒子迭代后全局最優更新
%bestfit 保存每次迭代的最優解
%fitness 適應度函數
%t 程序運行時間
%gbest 全局最優解,gbestfit 全局最優解適應度值
%py 通過lbest ring topology手段得到的粒子局部最優
%
t=cputime;

popsize=100;
dim=150;
maxiter=10000;

%x=10.24*rand(popsize,dim)-5.12; %Rastrigrin
x=rand(popsize,dim);%Rosenbrock

y=x;
bestfit=zeros(1,maxiter);
gbestfit=inf;
for i=1:popsize
    B=fitness(x(i,:));
    if B<gbestfit
        gbestfit=B;
        gbest=x(i,:);
    end
end
gbestfit0=gbestfit;
% gbest1;
%S=[1,2,6,5,10,20,25,50];  %
S=[2,3,5,6,10,15,30];
cc=0;
pyfit=zeros(1,popsize);
py=zeros(popsize,dim);
for u=1:maxiter
    if cc==0                                %如果上一次迭代全局最優沒有任何更新,則s值要更新
        s=S(round(6*rand)+1);
        k=dim/s;
    end
    cc=0;
    for j=1:k                              %分組,對于第j組執行
        p=(j-1)*s+1;
        q=j*s;                             
        for i=1:popsize                  
            gbest1=gbest;
            gbest1(p:q)=x(i,p:q);           %將全局最優的粒子的p到q個元素置換為分組的第i個粒子的p到q部分
            B=fitness(gbest1);              %計算置換后的粒子的適應度B
            gbest1(p:q)=y(i,p:q);           %將全局最優粒子的第p到q個元素置換為分組的第i個粒子的歷史最優的p到q部分
            C=fitness(gbest1);              %計算置換后的粒子適應度C
            if B<C                          
                y(i,p:q)=x(i,p:q);          %更新個體最優
%                 gbest1(p:q)=gbest(i,p:q);
                D=fitness(gbest);
                if C<D                      %更新全局最優
                    gbest(p:q)=y(i,(p:q));
                    cc=cc+1;                %如果最優有更新則改變cc
                end
            end
        end
        for i=1:popsize                     %將gbest1的p到q部分置換為第i個個體最優的p到q部分,記錄第i個置換結果的適應度記為pyfit(i)
            gbest1=gbest;
            gbest1(p:q)=y(i,p:q);
            pyfit(i)=fitness(gbest1);
        end
        for i=1:popsize
            if i==1                         %對于第一個粒子
                B=pyfit(popsize);           %將B定義為最后一個粒子的適應度
                b=popsize;
                D=pyfit(2);                 %將D定義為第二個粒子的適應度
                d=2;
            elseif i==popsize                %對于最后一個粒子
                B=pyfit(i-1);                %將B定義為前一個粒子的適應度
                b=i-1;
                D=pyfit(1);                   %將D定義為第一個粒子的適應度
                d=1;
            else                            %對于其他粒子
                B=pyfit(i-1);               %B為前一個粒子適應度
                b=i-1;
                D=pyfit(i+1);              %D為后一個粒子的適應度
                d=i+1;
            end
            C=pyfit(i);                    %C為該粒子的適應度
            c=i;
            if B<C&&B<D                   %求本地最優粒子
                py(i,p:q)=y(b,p:q);
            elseif C<B&&C<D
                py(i,p:q)=y(c,p:q);
            else
                py(i,p:q)=y(d,p:q);
            end
        end
    end
    for j=1:k                               %生成新粒子群
        p=(j-1)*s+1;
        q=j*s;
        for i=1:popsize
            if rand<=0.5
                x(i,p:q)=y(i,p:q)+(tan(pi*(rand-0.5)))*abs(y(i,p:q)-py(i,p:q));        %柯西分布更新規則
            else
                x(i,p:q)=py(i,p:q)+normrnd(0,1)*abs(y(i,p:q)-py(i,p:q));               %高斯分布更新規則
            end
        end
    end
    gbestfit=fitness(gbest);
    bestfit(u)=gbestfit;
end
bestfit=[gbestfit0,bestfit];
plot (bestfit,'-b');
title('D=150,Rosenbrock','fontsize',12);
xlabel('迭代次數','fontsize',12);ylabel('適應度','fontsize',12)
t=cputime-t;



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:405372 發表于 2019-7-14 09:45 | 只看該作者
樓主還有更多關于粒子群的資料嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色综合视频| 在线欧美视频 | xx视频在线观看 | 欧美午夜一区二区三区免费大片 | 五月激情综合网 | 国产精品久久久久久久久久久久久久 | 欧美一区二区三区大片 | 天天拍夜夜爽 | 久久久久久一区 | 国产 欧美 日韩 一区 | 亚洲男人天堂 | 福利视频日韩 | 欧美一区二区三区视频 | 国内在线视频 | 国产成人免费网站 | 欧美一区二区在线 | 久久久久国产精品午夜一区 | www.色婷婷| 日韩成人国产 | 国产亚洲成av人片在线观看桃 | 亚洲精品乱码久久久久久按摩观 | 欧美日韩国产一区二区三区 | 亚洲综合伊人 | 99国产精品久久久久久久 | 亚洲国产精品视频一区 | 激情五月婷婷 | 亚洲专区在线 | 欧美老少妇一级特黄一片 | 99视频在线播放 | 一级大黄色片 | 国产精品视频一区二区三区四区国 | 国产日屁| 亚洲女人天堂成人av在线 | 欧美亚洲国产一区二区三区 | 波多野结衣av中文字幕 | 综合精品在线 | 91精品国产91久久综合桃花 | 日韩视频 中文字幕 | 日韩精品二区 | 97caoporn国产免费人人 | 欧美成人在线网站 |