灰狼算法代码matlab
时间: 2024-01-07 21:22:24 浏览: 140
改进灰狼优化算法matlab代码
5星 · 资源好评率100%
以下是在MATLAB中实现灰狼优化算法的示例代码:
```matlab
% 灰狼优化算法
function [bestSolution, bestFitness] = greyWolfOptimization(objFunc, numVars, lb, ub, maxIterations, numWolves)
% 初始化灰狼群体
wolves = rand(numWolves, numVars) .* (ub - lb) + lb;
% 初始化最佳解和最佳适应度
bestSolution = zeros(1, numVars);
bestFitness = inf;
% 迭代优化
for iter = 1:maxIterations
% 计算每只灰狼的适应度
fitness = arrayfun(objFunc, wolves);
% 更新最佳解和最佳适应度
[minFitness, minIndex] = min(fitness);
if minFitness < bestFitness
bestFitness = minFitness;
bestSolution = wolves(minIndex, :);
end
% 更新灰狼位置
a = 2 - iter * (2 / maxIterations); % 衰减系数
for i = 1:numWolves
for j = 1:numVars
r1 = rand(); % 随机数1
r2 = rand(); % 随机数2
% 更新位置
if r1 < 0.5
D = abs(r2 * bestSolution(j) - wolves(i, j));
wolves(i, j) = bestSolution(j) - a * D;
else
D1 = abs(r2 * bestSolution(j) - wolves(i, j));
D2 = abs(r2 * bestSolution(j) - wolves(i, j));
wolves(i, j) = bestSolution(j) + a * D1 - a * D2;
end
% 边界处理
wolves(i, j) = max(wolves(i, j), lb(j));
wolves(i, j) = min(wolves(i, j), ub(j));
end
end
end
end
```
使用上述代码,你可以定义自己的目标函数,并将其作为参数传递给`greyWolfOptimization`函数。该函数将返回最佳解和最佳适应度。
阅读全文