万有引力搜索算法matlab代码
时间: 2023-09-17 11:07:13 浏览: 114
万有引力算法-MATLAB代码实现-参考文献.zip
这是一个简单的万有引力搜索算法的MATLAB代码示例:
```matlab
% 参数设置
n = 30; % 种群数量
G = 100; % 迭代次数
alpha = 20; % 引力系数
beta = 0.2; % 斥力系数
lb = -10; % 搜索空间下界
ub = 10; % 搜索空间上界
% 初始化种群位置和速度
X = rand(n, 2) * (ub - lb) + lb;
V = zeros(n, 2);
% 迭代搜索
for t = 1:G
% 计算适应度值
fitness = calculateFitness(X);
% 计算引力和斥力
F = calculateForce(X, fitness, alpha, beta);
% 更新速度和位置
V = V + F;
X = X + V;
% 边界处理
X(X < lb) = lb;
X(X > ub) = ub;
% 显示当前最优解
[~, idx] = min(fitness);
fprintf('Iteration %d: Best solution = %.4f\n', t, fitness(idx));
end
% 计算适应度值的函数
function fitness = calculateFitness(X)
fitness = sum(X.^2, 2);
end
% 计算引力和斥力的函数
function F = calculateForce(X, fitness, alpha, beta)
n = size(X, 1);
F = zeros(n, 2);
for i = 1:n
for j = 1:n
if i ~= j
dist = norm(X(i,:) - X(j,:));
F(i,:) = F(i,:) + alpha * (fitness(j) - fitness(i)) * (X(j,:) - X(i,:)) / dist^3;
F(i,:) = F(i,:) + beta * (X(i,:) - X(j,:)) / dist^5;
end
end
end
end
```
这段代码演示了万有引力搜索算法在二维搜索空间中的应用。其中,`calculateFitness`函数用于计算适应度值,`calculateForce`函数用于计算引力和斥力。在每次迭代中,根据引力和斥力更新种群的速度和位置,同时进行边界处理,最后输出当前最优解。你可以根据自己的需求进行调整和修改该代码。
阅读全文