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

news/2024/11/16 23:35:34/
💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


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


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

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥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代码实现


http://www.ppmy.cn/news/60652.html

相关文章

数据埋点2

文章目录 1 数据埋点流程2 六个步骤实现数据埋点设计2.1 确认事件与变量2.2 明确事件的触发时机2.3 明确事件的上报机制2.4 设计数据表结构2.5 统一字段命名规范2.6 明确优先级 3 以电商购物成交转化为例实现数据埋点设计 作为数据分析师的你&#xff0c;是否和我一样经常会被业…

OI 数论模板总结

1.欧几里得算法 可以通过欧几里得算法求出最大公因子。 int gcd(int x, int y) //欧几里得算法 { return y0 ? x : gcd(y, x%y); }2.扩展欧几里得 可以通过扩展欧几里得求出 a x b y d axbyd axbyd 不定方程的一组整数解。&#xff08; a , b , d a, b, d a,b,d为正整…

【热门框架】Mybatis-Plus入门介绍看这一篇文章就足够了

MyBatis-Plus 是在 MyBatis 的基础上进行了封装&#xff0c;提供了更加便捷的开发方式&#xff0c;具有简化开发、提高效率等优点。以下是 MyBatis-Plus 的一些特点和用法&#xff1a; 通用 CRUD 操作&#xff1a;MyBatis-Plus 提供了通用的 CRUD 接口&#xff0c;可以直接调用…

TinyJAMBU的制动原理——一种轻量化的认证密码

关于TinyJAMBU的定义和介绍在另一篇博文已经介绍过了&#xff0c;这里只对其动作原理进行描述和说明。 对应的博文链接如下&#xff1a;TinyJAMBU&#xff1a;一种轻量化密码介绍 首先&#xff0c;该密码是一个流密码体系的块密码框架。其加密模式整体上来看是块密码&#xff0…

Python 扩展教程(1): 调用百度AI

关于AI 自有计算机以来&#xff0c;人们就想让计算机具有人的感知、意识、概念、思维、行为&#xff0c;代替人的工作。AI (Artificial Interligence)是计算机科学的一个分支&#xff0c;专注研究、开发、模拟、扩展人的智能的理论、方法、技术及应用。 从研究领域和方法上&…

当音乐遇上Python:用Pydub自动分割音频

&#x1f3b5; &#x1f3b5; &#x1f3b5; 当音乐遇上Python&#xff1a;用Pydub自动分割音频 随着短视频应用的普及&#xff0c;越来越多人开始了解并尝试制作自己的短视频作品。而在制作短视频时&#xff0c;背景音乐的选择和使用也是非常重要的一步。很多人喜欢选择一首长…

JAVA编程语言中的关键字有哪些?

JAVA编程语言中有关键字&#xff0c;它们在编程中有着特定的含义和用途。下面是这些关键字的详细介绍&#xff1a; abstract: 抽象类或抽象方法的修饰符&#xff0c;用于表示方法或类是抽象的&#xff0c;不能被直接实例化。 assert: 断言关键字&#xff0c;用于在代码中进行条…

node笔记_http服务搭建(渲染html、json)

文章目录 ⭐前言⭐初始化项目调整npm 的script运行入口搭建hello world的http服务npm run dev执行主函数的http服务 ⭐http返回类型html模板文件返回安装express渲染html的字符串 渲染html文件 sendFile渲染json返回数据类型 res.json ⭐结束 ⭐前言 大家好&#xff0c;我是ym…