粒子群演算法應用 求解多峰函式

2021-10-02 18:12:15 字數 3459 閱讀 6462

一、問題概述

粒子群演算法求解多峰函式:

函式表示式:

z=((

1*cos((1

+1).

*x+1))

+(2*cos((2

+1).

*x+2))

+(3*cos((3

+1).

*x+3))

+...

(4*cos((4

+1).

*x+4))

+(5*cos((5

+1).

*x+5))

).*(

(1*cos((1

+1).

*y+1))

+...

(2*cos((2

+1).

*y+2))

+(3*cos((3

+1).

*y+3))

+(4*cos((4

+1).

*y+4))

+(5*cos((5

+1).

*y+5))

);

函式影象:

二、問題解決

有個問題需要提前宣告一下,也是困擾我好久的:

我嘗試採用達到某一精度就停止迭代,但每次只進行了幾次迭代就結束了,當然,結果肯定不是最優的。後來採用規定迭代次數的方法終止迴圈,並畫出了迭代次數和適應度值的曲線,才發現每迭代幾次就會出現一段滯留。我曾經懷疑是不是程式寫錯了,後來發現這種情況是確實存在的。所以下次再有迭代幾次就停止的情況,就把迭代次數設的大一點,強制迭代,或許會有新的發現。

clc,clear,close all%%

1.初始化引數

parametern=2;

%自變數個數

xa=-10;

%第乙個自變數下界

xb=10

;%第乙個自變數上界

ya=-10;

%第二個自變數下界

yb=10

;%第二個自變數上界

n=10

;%初始群體粒子數,一般取20

-60,複雜問題取100

-200

vmin=-2

;%最小速度。一般為每一維度變數變化範圍的10%-

30%。

vmax=2;

%最大速度

c1=1.4

;%認知常數,一般c1=c2=

2,取0

-4之間。

c2=1.4

;%認知常數

iter

=200

;%迭代次數

gbesty=

;%存放每一次迭代的全域性最優解%%

1.初始化速度和位置資訊

v=rand(n,parametern)

;pos=

[xa+

(xb-xa)

*rand(n,

1) ya+

(yb-ya)

*rand(n,1)

];%%

2.計算適應度值

fx=objectfun(pos(:,

1),pos(:,

2));

%尋找初始極值

[best_f, best_index]

=min

(fx)

;gbestpos = pos(best_index,:)

;%全域性最優解的座標

gbest = best_f;

%全域性最優解

pbestpos = pos;

%個體極值的座標

pbest = fx;

%個體極值

gbesty=

[gbesty gbest]

;%存放每一次迭代的全域性最優解

for count=1:

iter%%

3.更新速度和位置資訊

for i=1:n

%速度更新公式

v(i,:)

=v(i,:)

+c1*rand*

(pbest(i,:)

-pos(1,

:))+c2*rand*

(gbest-pos(1,

:));

v(i,v(i,:)

>vmax)

= vmax;

%速度超出範圍,定為邊界值

v(i,v(i,:)

= vmin;

%位置更新公式

pos(i,:)

=pos(i,:)

+0.5

*v(i,:)

; pos(i,pos(i,1)

>xb)

= xb;

pos(i,pos(i,1)

= xa;

pos(i,pos(i,2)

>yb)

= yb;

pos(i,pos(i,2)

= ya;

end%%4

.更新個體、群體極值

%計算適應度值

fx=objectfun(pos(:,

1),pos(:,

2));

%計算全域性最優解

[best_f, best_index]

=min

(fx)

;if best_f

gbestpos = pos(best_index,:)

;%群體極值位置

gbest = best_f;

%群體極值適應度值

endgbesty=

[gbesty gbest]

;%計算個體極值

for i=1:n

if fx(i)

pbestpos(i,:)

= pos(i,:)

; pbest(i)

= fx(i)

; end

endend%

%disp(

'最小值:'

)gbesty(end)

disp(

'最小值位置:'

)gbestpos

plot(1:

iter

,gbesty(1:

(end-1)

))title(

'適應度值變化曲線');

xlabel(

'進化代數');

ylabel(

'適應度值'

這是寫文章寫的最難受的一回了。明天就是美賽了,還有好多想實現的沒實現,只能草草收尾。希望接下來幾天不要太痛苦,大家都取得好成績呀。

最最想實現的是在函式影象的基礎上,動態顯示每一次全域性最優解的位置變化

粒子群演算法求解多物流中心選址問題(p 中值問題)

粒子群演算法 結果展示 店鋪位址 歡迎加入群智慧型討論群 p 中值問題模型是指在給定m個備選物流中心位置中,選取p個位置,並為每個需求點指定相應的物流中心,使得各個物流中心到需求點的運輸費用之和最低 如圖所示 各需求區域和備選物流中心均當作幾何上的點看待,各需求點的需求量和位置以及備選物流中心的位置...

原 粒子群演算法 PSO 的簡單應用

目錄 1.3 流程圖 2.簡單的pso例子 python 實現 參考資料 之前寫到優化的基本思想,裡面提到了智慧型演算法。目前有些學者對這些演算法並不認可,但是實際使用中,在維度比較低的情況下,群智慧型演算法確實能以很高的找到近似解。這篇以我最熟悉的pso開始,以demo的方式來 群智慧型演算法的使...

粒子群優化演算法求函式最小值

1.演算法簡介 粒子群演算法 簡稱pso 是一種有效的全域性尋優演算法,最早由美國的kennedy和eberhart於1995年提出。基於群體智慧型理論的優化演算法,通過個體之間的協作和資訊共享來尋找最優解,具有 自我 學習提高和向 他人 學習的優點,被廣泛應用於函式優化 資料探勘 神經網路訓練等領...