群智能优化算法是一类模拟自然界中群体行为的优化算法。通过模仿群体生物(如鸟群、鱼群、蚁群等)的协作和群体智能,群智能优化算法能够有效地搜索和优化问题解空间,主要包括粒子群优化算法(PSO)、蚁群优化算法(ACO)、蝙蝠算法(BA)、鲸鱼优化算法(WOA)、灰狼优化算法(GWO)等,群智能优化算法广泛应用于各类复杂优化问题,包括机器学习、路径规划、函数优化等。
1.粒子群优化算法(PSO,Particle Swarm Optimization)
灵感来源:粒子群优化算法受到鸟群觅食行为的启发。每个粒子代表解空间中的一个候选解,粒子通过局部最佳解和全局最佳解的引导,更新自己的位置。
基本原理:
- 每个粒子有一个位置和速度,表示解空间中的一个点。
- 粒子根据自己的历史最佳位置和全局最佳位置来调整速度和位置。
- 算法通过迭代不断逼近全局最优解。
更新公式:
其中,w
是惯性权重,c1
和 c2
是加速常数,r1
和 r2
是随机数,pbest_i
是粒子的历史最佳位置,gbest
是全局最佳位置。
function pso()
% 参数设置
n = 30; % 粒子数量
dim = 2; % 问题维度
max_iter = 100; % 最大迭代次数
w = 0.7; % 惯性权重
c1 = 1.5; % 个体学习因子
c2 = 1.5; % 群体学习因子
lb = -10; % 下界
ub = 10; % 上界
% 初始化粒子位置和速度
x = lb + (ub - lb) * rand(n, dim);
v = zeros(n, dim);
pbest = x; % 个体最优位置
gbest = x(1, :); % 全局最优位置
% 迭代优化
for iter = 1:max_iter
for i = 1:n
% 更新速度
v(i, :) = w * v(i, :) + c1 * rand(1, dim) .* (pbest(i, :) - x(i, :)) ...
+ c2 * rand(1, dim) .* (gbest - x(i, :));
% 更新位置
x(i, :) = x(i, :) + v(i, :);
% 边界处理
x(i, :) = max(min(x(i, :), ub), lb);
% 更新个体最优
if fitness(x(i, :)) < fitness(pbest(i, :))
pbest(i, :) = x(i, :);
end
% 更新全局最优
if fitness(pbest(i, :)) < fitness(gbest)
gbest = pbest(i, :);
end
end
% 显示当前最优值
fprintf('Iteration %d, Best Fitness: %f\n', iter, fitness(gbest));
end
disp('Global Best Solution:');
disp(gbest);
end
% 目标函数(以Rastrigin函数为例)
function y = fitness(x)
y = sum(x.^2 - 10 * cos(2 * pi * x) + 10);
end
2.蚁群优化算法(ACO,Ant Colony Optimization)
灵感来源:蚁群通过信息素的传递来寻找最短路径。蚂蚁在找到食物的过程中,沿途留下信息素,其他蚂蚁会偏向信息素较浓的路径,逐步寻找最优路径。
基本原理:
- 每个蚂蚁代表一个解,蚂蚁根据信息素的浓度选择路径。
- 蚂蚁根据路径的质量(比如距离或代价)更新信息素ÿ