?? pso.txt
字號:
粒群優化算法 matlab程序(已通過)
%declare the parameters of the optimization
max_iterations = 1000;
no_of_particles = 50;
dimensions = 1;
delta_min = -0.003;
delta_max = 0.003;
c1 = 1.3;
c2 = 1.3;
%initialise the particles and teir velocity components
for count_x = 1:no_of_particles
for count_y = 1:dimensions
particle_position(count_x,count_y) = rand*10;
particle_velocity(count_x,count_y) = rand;
p_best(count_x,count_y) = particle_position(count_x,count_y);
end
end
%initialize the p_best_fitness array
for count = 1:no_of_particles
p_best_fitness(count) = -1000;
end
%particle_position
%particle_velocity
%main particle swrm routine
for count = 1:max_iterations
%find the fitness of each particle
%change fitness function as per equation requiresd and dimensions
for count_x = 1:no_of_particles
%x = particle_position(count_x,1);
%y = particle_position(count_x,2);
%z = particle_position(count_x,3);
%soln = x^2 - 3*y*x + z;
%x = particle_position(count_x);
%soln = x^2-2*x+1;
x = particle_position(count_x);
soln = x-7;
if soln~=0
current_fitness(count_x) = 1/abs(soln);
else
current_fitness =1000;
end
end
%decide on p_best etc for each particle
for count_x = 1:no_of_particles
if current_fitness(count_x) > p_best_fitness(count_x)
p_best_fitness(count_x) = current_fitness(count_x);
for count_y = 1:dimensions
p_best(count_x,count_y) = particle_position(count_x,count_y);
end
end
end
%decide on the global best among all the particles
[g_best_val,g_best_index] = max(current_fitness);
%g_best contains the position of teh global best
for count_y = 1:dimensions
g_best(count_y) = particle_position(g_best_index,count_y);
end
%update the position and velocity compponents
for count_x = 1:no_of_particles
for count_y = 1:dimensions
p_current(count_y) = particle_position(count_x,count_y);
end
for count_y = 1:dimensions
particle_velocity(count_y) = particle_velocity(count_y) + c1*rand*(p_best(count_y)-p_current(count_y)) + c2*rand*(g_best(count_y)-p_current(count_y));
particle_positon(count_x,count_y) = p_current(count_y) +particle_velocity(count_y);
end
end
end
g_best
current_fitness(g_best_index)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -