?? 用于一維搜索的pso算法.txt
字號:
這是用來代替最速下降法中的黃金分割法的
雖然耗時較黃金分割法長,但是效果不是黃金分割法所能比較的
畢竟PSO做一維搜索還是比較強悍的
function [afa] = pso1(fun,x0,d,a,b)
% 用于優化中的一維尋優PSO算法.
% 輸入:
% fun - 待優化函數句柄.
% x0 - 當前待求最優步長點.
% d - 當前搜索方向.
% a - 步長下限,應為0.
% b - 步長上限,通常為1.
% 輸出:
% afa - 搜索到的最優步長.
particles = rand(10,1)*(b-a) + a;
velocity = rand(10,1);
fitness = zeros(10,1);
for i = 1:10
fitness(i) = feval(fun,x0+particles(i)*d);
end
localP = particles;
localF = fitness;
[f,best] = min(fitness);
w = 0.5;
for i = 1:20
velocity = w*velocity + 1.5*rand*(localP-particles) + ...
1.5*rand*(localP(best)-particles);
particles = particles + velocity;
for j = 1:10
if particles(j)>b
particles(j) = b;
elseif particles(j)<a
particles(j) = a;
end
fitness(j) = feval(fun,x0+particles(j)*d);
if fitness(j) < localF(j)
localF(j) = fitness(j);
localP(j) = particles(j);
end
end
[f,best] = min(fitness);
end
afa = particles(best);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -