粒子群算法matlab程序
时间: 2023-08-28 14:17:54 浏览: 51
粒子群算法(Particle Swarm Optimization, PSO)是一种优化算法,用于求解最优化问题。下面是一个简单的粒子群算法的MATLAB程序示例:
```matlab
% 定义目标函数
function fitness = objective_function(x)
% 这里可以根据实际问题定义目标函数
fitness = x(1)^2 + x(2)^2;
end
% 粒子群算法函数
function [best_pos, best_val] = particle_swarm_optimization()
% 参数设置
num_particles = 50; % 粒子数量
num_dimensions = 2; % 解向量维度
max_iterations = 100; % 最大迭代次数
inertia_weight = 0.7; % 惯性权重
cognitive_weight = 1.4; % 认知权重
social_weight = 1.4; % 社会权重
search_range = [-10, 10]; % 解向量范围
% 初始化粒子位置和速度
positions = search_range(1) + (search_range(2) - search_range(1)) * rand(num_particles, num_dimensions);
velocities = zeros(num_particles, num_dimensions);
% 初始化最佳位置和最佳适应值
best_pos = positions;
best_val = zeros(num_particles, 1);
for i = 1:num_particles
best_val(i) = objective_function(best_pos(i, :));
end
% 迭代优化
for iter = 1:max_iterations
for i = 1:num_particles
% 更新速度
velocities(i, :) = inertia_weight * velocities(i, :) ...
+ cognitive_weight * rand(1, num_dimensions) .* (best_pos(i, :) - positions(i, :)) ...
+ social_weight * rand(1, num_dimensions) .* (best_pos(randi([1, num_particles]), :) - positions(i, :));
% 限制速