💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥
🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳ 座右铭:行百里者,半于九十。
📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现
💥1 概述
编辑
海鸥优化算法是印度学者Gaurav Dhiman于2018年提出的一种受生物启发的智能优化算法,该算法的主要灵感来自于自然界中海鸥的迁徙和攻击行为,这些行为经过数学建模和实现,可以在给定搜索空间中进行探索和利用。
详细数学模型和讲解见参考文献。
📚2 运行结果
部分代码:
%% 海鸥算法子函数
function [Best_pos,Best_score,curve]=SOA(pop,Max_iter,lb,ub,dim,fobj)
fc = 2;%可调
if(max(size(ub)) == 1)
ub = ub.*ones(1,dim);
lb = lb.*ones(1,dim);
end
%种群初始化
X0=initialization(pop,dim,ub,lb);
X = X0;
%计算初始适应度值
fitness = zeros(1,pop);
for i = 1:pop
fitness(i) = fobj(X(i,:));
end
[fitness, index]= sort(fitness);%排序
GBestF = fitness(1);%全局最优适应度值
%按适应度排序,X(1,:)代表最优位置,X(end,:)代表最差位置
for i = 1:pop
X(i,:) = X0(index(i),:);
end
GBestX = X(1,:);%全局最优位置
curve=zeros(1,Max_iter);
X_new = X;
Ms = zeros(pop,dim);
Cs = zeros(pop,dim);
Ds = zeros(pop,dim);
for t = 1: Max_iter
Pbest = X(1,:);
for i = 1:pop
%% 计算Cs
A = fc - (t*(fc/Max_iter));
Cs(i,:) = X(i,:).*A;
%% 计算Ms
rd = rand();
B = 2*A^2*rd;
Ms(i,:) = B.*(Pbest - X(i,:));
%% 计算Ds
Ds(i,:) = abs(Cs(i,:) + Ms(i,:));
%% 局部搜索
u = 1; v = 1;
theta = rand();
r = u.*exp(theta*v);
x = r.*cos(theta.*2.*pi);
y = r.*sin(theta.*2.*pi);
z = r.*theta;
%% 位置更新
X_new(i,:) = x.*y.*z.*Ds(i,:) + Pbest;
end
%边界控制
for j = 1:pop
for a = 1: dim
if(X_new(j,a)>ub)
X_new(j,a) =ub(a);
end
if(X_new(j,a)<lb)
X_new(j,a) =lb(a);
end
end
end
%更新位置
for j=1:pop
fitness_new(j) = fobj(X_new(j,:));
end
for j = 1:pop
if(fitness_new(j) < GBestF)
GBestF = fitness_new(j);
GBestX = X_new(j,:);
end
end
X = X_new;
fitness = fitness_new;
%排序更新
[fitness, index]= sort(fitness);%排序
for j = 1:pop
X(j,:) = X(index(j),:);
end
curve(t) = GBestF;
end
Best_pos = GBestX;
Best_score = curve(end);
end
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]杨硕,叶鹏,刘俐利,王欢,孙峰.基于海鸥算法的综合能源系统优化规划研究[J].沈阳工程学院学报(自然科学版),2022,18(04):62-69.DOI:10.13888/j.cnki.jsie(ns).2022.04.012.
[2]李大华,聂前,田禾,付文成,杜洋.改进海鸥优化算法在光伏系统MPPT中的应用[J].电源技术,2022,46(05):556-559.