国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

粒子群優(yōu)化算法(PSO)附代碼

這篇具有很好參考價值的文章主要介紹了粒子群優(yōu)化算法(PSO)附代碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 算法介紹

粒子群優(yōu)化算法(Particle Swarm Optimization,PSO)是一種經(jīng)典的群智能算法,該算法靈感源自于鳥類飛行和覓食的社會活動,鳥群通過個體之間的信息交互來尋找全局最優(yōu)點。PSO算法具有原理簡單、較少的參數(shù)設置和容易實現(xiàn)等優(yōu)點,因此近年來受到學者們的廣泛關(guān)注和研究。

粒子群算法模擬鳥群的捕食過程,將待優(yōu)化問題看作是捕食的鳥群,解空間看作是鳥群的飛行空間,空間的每只鳥的位置即是粒子群算法在解空間的一個粒子,也就是待優(yōu)化問題的一個解。

粒子群算法有以下幾點假設:

  1. 粒子被假定為沒有體積沒有質(zhì)量,本身的屬性只有速度和位置。

  2. 每個粒子在解空間中運動,它通過速度改變其方向和位置。

  3. 通常粒子將追蹤當前的最優(yōu)粒子以經(jīng)過最少代數(shù)的搜索到最優(yōu)解。

在算法的進化過程中,粒子一直都跟蹤兩個極值:一個是到個體歷史最優(yōu)位置,一個是種群歷史最優(yōu)位置。

2 算法模型

粒子群算法的核心思想是利用群體中的個體對信息的共享,從而使整個群體的運動在問題求解空間中產(chǎn)生從無序到有序的演化過程,從而獲得問題的最優(yōu)解。

粒子群優(yōu)化算法(PSO)附代碼
粒子群算法的個體位置變化按兩個基本公式:

v i d t + 1 = ω v i d t + c 1 r 1 ( p i d t ? x i d t ) + c 2 r 2 ( p g d t ? x i d t ) x i d t + 1 = x i d t + v i d t + 1 \begin{aligned} v_{i d}^{t+1} &=\omega v_{i d}^{t}+c_{1} r_{1}\left(p_{i d}^{t}-x_{i d}^{t}\right)+c_{2} r_{2}\left(p_{g d}^{t}-x_{i d}^{t}\right) \\ x_{i d}^{t+1} &=x_{i d}^{t}+v_{i d}^{t+1} \end{aligned} vidt+1?xidt+1??=ωvidt?+c1?r1?(pidt??xidt?)+c2?r2?(pgdt??xidt?)=xidt?+vidt+1??

式中,r1和r2是介于(0,1)之間的隨機數(shù),c1和c2代表學習因子,取值一般為c1=c2=2。

根據(jù)速度更新公式可知,粒子的速度由三個部分構(gòu)成:第一部分是對粒子之前速度的繼承,體現(xiàn)了粒子運動的慣性;第二部分是自我認知,表示粒子自身之前的飛行經(jīng)驗對之后飛行方向的影響;第三部分是社會認知,表示種群中所有粒子的飛行經(jīng)驗對每個粒子之后飛行方向的影響。

3 實現(xiàn)步驟

Step1:初始化種群:包括搜索空間的上限和下限,兩個學習因子c1,c2,算法的最大迭代次數(shù)T,每個粒子速度的上限和下限。隨機初始化種群中每個粒子的位置和速度.

Step2:根據(jù)適應度函數(shù)計算每個粒子的適應值fitness,保存每個粒子的最優(yōu)位置,保存?zhèn)€體最佳適應度值和群體迄今的最好位置.

Step3:根據(jù)速度、位置更新公式來更新速度和位置.

Step4:計算更新后每個粒子的適應度值,將每個粒子的最佳適應度值與其歷史最優(yōu)位置時的適應度值比較,如果較好,則將其當前的位置作為該粒子的最優(yōu)位置.

Step5:對每個粒子,將它的最優(yōu)位置對應的適應度值與種群最佳適應度值對比,如果更優(yōu),則更新種群最優(yōu)位置和最佳適應度值.

Step6:判斷搜索到的結(jié)果是否滿足停止條件(達到最大迭代次數(shù)或滿足精度要求),若滿足停止條件則輸出最優(yōu)值,否則轉(zhuǎn)到Step3繼續(xù)運行直到滿足條件為止.

粒子群優(yōu)化算法(PSO)附代碼

4 MATLAB代碼實現(xiàn)PSO算法

優(yōu)化問題:求解函數(shù)最小值。

F = ∑ i = 1 D x i 2 F=\sum_{i=1}^{D} x_{i}^{2} F=i=1D?xi2?

4.1. main.m

復制以下代碼,粘貼到MATLAB,可直接運行出結(jié)果

% 主程序 PSO
clear
close all
clc
 
SearchAgents_no = 30 ; % 種群規(guī)模
dim = 10 ; % 粒子維度
Max_iter = 1000 ; % 迭代次數(shù)
ub = 5 ;
lb = -5 ;
c1 = 1.5 ; % 學習因子1
c2 = 1.5 ; % 學習因子2
w = 0.8 ; % 慣性權(quán)重
vmax = 3 ; % 最大飛行速度
pos = lb + rand(SearchAgents_no,dim).*(ub-lb) ; % 初始化粒子群的位置
v = - vmax +2*vmax* rand(SearchAgents_no,dim) ; % 初始化粒子群的速度
% 初始化每個歷史最優(yōu)粒子
pBest = pos ; 
pbestfit = zeros(SearchAgents_no,1);
for i = 1:SearchAgents_no
pbestfit(i) = sum(pos(i,:).^2) ; 
end
%初始化全局歷史最優(yōu)粒子
[gBestfit,index] = min(pbestfit) ;
gBest = pos(index,:) ;
Convergence_curve = zeros(Max_iter,1);
 
for t=1:Max_iter
    for i=1:SearchAgents_no
        % 更新個體的位置和速度
        v(i,:) = w*v(i,:)+c1*rand*(pBest(i,:)-pos(i,:))+c2*rand*(gBest-pos(i,:)) ;
        pos(i,:) = pos(i,:)+v(i,:) ;
        % 邊界處理
        v(i,:) = min(v(i,:), vmax);
        v(i,:) = max(v(i,:), -vmax);
        pos(i,:) =min(pos(i,:), ub);
        pos(i,:) =max(pos(i,:), lb);
        % 更新個體最優(yōu)
        f1 = sum(pos(i,:).^2);
        if f1<pbestfit(i)    
           pBest(i,:) = pos(i,:) ;
           pbestfit(i) = f1;
        end
        % 更新全局最優(yōu)
       if pbestfit(i) < gBestfit
            gBest = pBest(i,:) ;
            gBestfit = pbestfit(i) ;
       end
    end
    % 每代最優(yōu)解對應的目標函數(shù)值
    Convergence_curve(t) = gBestfit; 
    disp(['Iteration = ' num2str(t)  ', Evaluations = ' num2str(gBestfit)]);
end
 
figure('unit','normalize','Position',[0.3,0.35,0.4,0.35],'color',[1 1 1],'toolbar','none')
subplot(1,2,1);
x = -5:0.1:5;y=x;
L=length(x);
f=zeros(L,L);
for i=1:L
    for j=1:L
       f(i,j) = x(i)^2+y(j)^2;
    end
end
surfc(x,y,f,'LineStyle','none');
xlabel('x_1');
ylabel('x_2');
zlabel('F')
title('Objective space')
 
subplot(1,2,2);
semilogy(Convergence_curve,'Color','r','linewidth',1.5)
title('Convergence_curve')
xlabel('Iteration');
ylabel('Best score obtained so far');
 
axis tight
grid on
box on
legend('PSO')
display(['The best solution obtained by PSO is : ', num2str(gBest)]);
display(['The best optimal value of the objective funciton found by PSO is : ', num2str(gBestfit)]);
 
        
 
 
 

4.2. 運行結(jié)果

粒子群優(yōu)化算法(PSO)附代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-401788.html

The best solution obtained by PSO is : -5.9693e-08  4.4549e-07 -1.8445e-08 -1.4353e-07 -2.0883e-07  -2.622e-08   2.743e-08 -1.0503e-08 -7.5957e-08 -6.4972e-07
The best optimal value of the objective funciton found by PSO is : 6.9603e-13
>> 

到了這里,關(guān)于粒子群優(yōu)化算法(PSO)附代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包