粒子群優化演算法 PSO 找最優解

2022-08-22 06:33:13 字數 2094 閱讀 3884

關於粒子群優化演算法(pso)的解釋: (等網上各種參考資料)

用pso找函式極值。

function [ f ] =fun( x, y )

%untitled2 此處顯示有關此函式的摘要

%此處顯示詳細說明

a = 50

;b = 50

;f = (x-a)^2 + (y-b)^2

;end

構造了乙個二元函式,很明顯,有極小值,在(50, 50)。

用五個粒子去找。每個點對應的函式輸出值即視為粒子的適應度。

1

clear all;

2clc;

3 %initialize

4 n = 5

;5 p = rand(5, 2) * 100

;6 p = cell(5, 1);7

for i = 1

: n8 p(i, 1) = ;

9end

10 v = rand(5, 2) * 0.5

;11 vmax = 0.5

;12 pbest =p;

13 gbest = cell(1

);14 fit_v = zeros(5, 1

);15 key = 1;16

for i = 1

: n17 fit_v(i, 1) = fun(p(1), p(2

));18

if( fit_v(i, 1) < fit_v(key, 1

) )19 key =i;

20end

21end

22 gbest(1) = pbest(key, 1

);23 %loop

24 t = 1;25

while(t < 300)26

for i = 1

: n27

for j = 1: 2

28 v(i, j) = v(i, j) + 2*rand()*(pbest(j)-p(j)) + 2*rand()*(gbest(j)-p(j));

29if( abs(v(i, j)) >vmax )

30 v(i, j) = abs(v(i, j)) / v(i, j) *vmax;

31end

32 p(j) = p(j) +v(i, j);

33end

34 fit_v_temp = fun(p(1), p(2

));35

if( fit_v_temp

36 fit_v(i, t+1) =fit_v_temp;

37 pbest(i, t+1) =p(i);

38else

39 fit_v(i, t+1) =fit_v(i, t);

40 pbest(i, t+1) =pbest(i, t);

41end

42end

43 t = t + 1

;44 key = 1;45

for i = 1

: n46

if( fit_v(i, t)

47 key =i;

48end

49end

50 gbest(t) =pbest(key, t);

51 end

執行結果:[50.0030796073836,50.0004541255463]

圖1 gbest軌跡(紅點表示最後收斂位置)

圖2 各個粒子的適應度曲線

可以發現在100次左右就基本收斂了。

粒子群優化演算法 PSO

粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引...

粒子群優化演算法 PSO

粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引...

粒子群優化演算法 PSO

粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引...