【单目标优化算法】海鸥优化算法(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。


座右铭:行百里者,半于九十。

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥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.

🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值