[matlab] 3.粒子群最佳化演算法

來源:互聯網
上載者:User

標籤:pmi   alt   out   info   image   rsize   png   dex   次數   

粒子群最佳化(PSO, particle swarm optimization)演算法是計算智能領域,除了蟻群演算法,魚群演算法之外的一種群體智能的最佳化演算法,該演算法最早由Kennedy和Eberhart在1995年提出的,該演算法源自對鳥類捕食問題的研究。

執行個體分析1:

根據PSO演算法思路求y最大值 ,其中x取值區間為[-5,5]

matlab代碼如下:

%% I. 清空環境clcclear all%% II. 繪製目標函數曲線圖x = -5:0.01:5;y = 2.1*(1-x+5*x.^3).*exp(-x.^2/2)-x.^2;figureplot(x, y)hold on%% III. 參數初始化 這裡預設慣性因子為1c1 = 1.49445;   %加速常數 取Eberhart的參考值c2 = 1.49445;   %加速常數 取Eberhart的參考值maxgen = 30;   % 進化次數  sizepop = 100;   %種群規模Vmax = 0.5;  %速度步長上限Vmin = -0.5; %速度步長下限popmax = 5; % x的上限popmin = -5; % x的下限%% IV. 產生初始粒子和速度for i = 1:sizepop    % 隨機產生一個種群    pop(i,:) = -10*rands(1)+5;    %產生[-5,5]的初始種群    V(i,:) = 0.5 * rands(1);  %初始化[-0.5,0.5]速度    % 利用fun.m子函數,計算適應度並儲存到fitness(i)中    fitness(i) = fun(pop(i,:));   end%% V. 個體極值和群體極值[bestfitness, bestindex] = max(fitness);zbest = pop(bestindex,:);   %全域最佳gbest = pop;    %個體最佳fitnessgbest = fitness;   %個體最佳適應度值fitnesszbest = bestfitness;   %全域最佳適應度值%% VI. 迭代尋優for i = 1:maxgen        for j = 1:sizepop        % 速度更新        V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));        V(j,V(j,:)>Vmax) = Vmax;        V(j,V(j,:)<Vmin) = Vmin;                % 種群更新        pop(j,:) = pop(j,:) + V(j,:);        pop(j,pop(j,:)>popmax) = popmax;        pop(j,pop(j,:)<popmin) = popmin;                % 適應度值更新        fitness(j) = fun(pop(j,:));     end        for j = 1:sizepop            % 個體最優更新        if fitness(j) > fitnessgbest(j)            gbest(j,:) = pop(j,:);            fitnessgbest(j) = fitness(j);        end                % 群體最優更新        if fitness(j) > fitnesszbest            zbest = pop(j,:);            fitnesszbest = fitness(j);        end    end     yy(i) = fitnesszbest;          end%% VII. 輸出結果並繪圖[fitnesszbest zbest];plot(zbest, fitnesszbest,‘r.‘,‘MarkerSize‘,10)plot(zbest, fitnesszbest,‘ro‘,‘MarkerSize‘,16)x_text=[‘x=‘,num2str(zbest)]; % x橫座標轉換為字串y_text=[‘y=‘,num2str(fitnesszbest)];  % y橫座標轉換為字串max_text=char(‘全域最優‘,x_text,y_text);  % 產生標誌最大值點的字串text(zbest+0.3, fitnesszbest-1.4,max_text) %圖上繪出全域最優的資料值figureplot(yy)title(‘最優個體適應度‘,‘fontsize‘,12);xlabel(‘進化代數‘,‘fontsize‘,12);ylabel(‘適應度‘,‘fontsize‘,12);
main.m
function y = fun(x)% 函數用於計算粒子適應度值%x           input           輸入粒子 %y           output          粒子適應度值 y = 2.1*(1-x+5*x.^3).*exp(-x.^2/2)-x.^2;
fun.m

 

[matlab] 3.粒子群最佳化演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.