九大智慧型優化演算法複習(1) 粒子群演算法

2021-09-28 17:47:47 字數 1907 閱讀 8228

構建粒子群模型:

演算法要點:

matlab實現粒子群演算法:

function res = pso(n,d,t,xmax, xmin, vmax, vmin)

close all;

clc;

%c1 = 1.5;

c2 = 1.5;

w = 0.8;

%% 初始化種群位置以及速度 %%

x = rand(n,d)*(xmax-xmax)+xmin;

v = rand(n,d)*(vmax-vmin)+vmin;

%% 初始化區域性最優 %%

p = x;

pbest = ones(n,1);

for i = 1:n

pbest(i) = func1(x(i,:));

end%% 初始化全域性最優 %%

g = ones(1,d);

gbest = inf;

for i = 1:n

if (pbest(i) < gbest)

gbest = pbest(i);

g = p(i,:);

endendgb = ones(1,t); %歷代的最優值

%% 迭代 %%

for i = 1:t

%% 更新區域性最優 %%

for j = 1:n

if (func1(x(j,:)) < pbest(j))

p(j,:) = x(j,:);

pbest(j) = func1(x(j,:));

end%% 更新全域性最優 %%

if (pbest(j) < gbest)

g = p(j,:);

gbest = pbest(j);

endv(j,:) = w*v(j,:)+c1*rand*(p(j,:)-x(j,:))+c2*rand*(g-x(j,:));

x(j,:) = x(j,:)+v(j,:);

%% 邊界處理 %%

for k = 1:d

if (x(j,k) > xmax | x(j,k) < xmin)

x(j,k) = rand*(xmax-xmin)+xmin;

endif (v(j,k) > vmax | v(j,k) < vmin)

v(j,k) = rand*(vmax-vmin)+vmin;

endend

endgb(i) = gbest;

endbestx = g

res = func1(bestx);

figure;

plot(gb);

xlabel('迭代次數');

ylabel('適應度值');

title('適應度進化曲線');

適應度函式實現:

function res = func1(x)

[m,n] = size(x);

res=0;

for i = 1:2:n

res=res+x(i)*x(i);

endfor i = 2:2:n

res=res-x(i)*x(i);

end

測試效果:res = pso(500, 10, 1000, 20, -20, 10, -10)

結果和實際相差很小,說明**實現基本沒問題。此函式精確結果是-2000,程式解最優解已然很接近這一實際解。誤差僅僅為0.0175

智慧型優化演算法

智慧型優化演算法分類總結 蟻群演算法,1991 年 粒子群演算法,1994年 細菌覓食優化演算法,bacterial foraging optimization algorithm,2002年 混合蛙跳演算法,shuffled frog leaping algorithm,2003年 人工蜂群演算法...

五大智慧型手機作業系統大PK

引 智慧型手機 中的 智慧型 其實指的是手機上所執行的那些軟體。那麼,到底是哪種手機作業系統能夠真正集最強悍的效能 最好的易用性以及最好的發展潛力於一身呢?是iphone android blackberry windows mobile,還是symbian?你到底該選誰呢?還記得手機只能用來打 是...

九大商業智慧型分析平台

隨著大資料時代的來臨,商業智慧型這個詞在國外企業界出現,其代表為提高企業運營效能而採用的一系列方法 技術和軟體。它把先進的資訊科技應用到整個企業,不僅為企業提供資訊獲取能力,而且通過對資訊的開發,將其轉變為企業的競爭優勢,也有人稱之為混沌世界中的智慧型。因此,越來越多的企業提出他們對bi的需求,把b...