基于增强蛇优化算法求解单目标优化问题附matlab代码

news2024/11/24 8:39:29

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

⛄ 内容介绍

近年来,在工程和科学领域引入了几种元启发式算法来解决现实生活中的优化问题。在这项研究中,提出了一种新的受自然启发的元启发式算法,称为蛇优化器 (SO),以解决模仿蛇特殊交配行为的各种优化任务。如果存在的食物量足够且温度低,每条蛇(雄性/雌性)都会争夺最佳伴侣。这项研究在数学上模拟和模拟了觅食和繁殖行为和模式,以提出一种简单有效的优化算法。为了验证所提出方法的有效性和优越性,SO 在 29 个无约束的进化计算大会 (CEC) 2017 基准函数和四个受约束的现实世界工程问题上进行了测试。将 SO 与其他 9 种著名的和新开发的算法进行比较,例如线性种群大小减少-差分进化的成功历史适应 (L-SHADE)、与 L-SHADE 结合的集成正弦曲线 (LSHADE-EpSin)、协方差矩阵适应进化策略 (CMAES)、土狼优化算法 (COA)、蛾火焰优化、哈里斯鹰优化器、热交换优化、蚱蜢优化算法和鲸鱼优化算法。实验结果和统计比较证明了 SO 在不同景观上的勘探开发平衡和收敛曲线速度的有效性和效率。

⛄ 部分代码

%_______________________________________________________________________________%

​our cost in a seperate file and load its handle to fobj 

% The initial parameters that you need are:

%__________________________________________________

% fobj = @YourCostFunction

% dim = number of your variables

% Max_iteration = maximum number of generations

% SearchAgents_no = number of search agents

% lb=[lb1;lb2;...;lbn] where lbn is the lower bound of variable n 

% ub=[ub1;ub2;...;ubn] where ubn is the upper bound of variable n

% If all the variables have equal lower bound you can just

% define lb and ub as two single number numbers

% To run ESO:  [Xfood, fval,Convergence_curve,Trajectories,fitness_history, position_history]=ESO(N,T,lb,ub,dim,fobj);

%__________________________________________________

clear all 

clc

close  all

N=30; % Number of search agents

Function_name='F4'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper)

T=200; % Maximum numbef of iterations

Load details of the selected benchmark function

[lb,ub,dim,fobj]=Get_Functions_details(Function_name);

  [Xfood, fval,Convergence_curve,Trajectories,fitness_history, position_history]=ESO(N,T,lb,ub,dim,fobj); %¿ªÊ¼ÓÅ»¯

  [Best_pos,Best_score,SO_curve]=SO(N,T,lb,ub,dim,fobj); 

 figure('Position',[39         479        1727         267])

color1 = [205 205 0];

color2 = [139 101 8];

color3 = [205 155 155];

color4 = [238 121 66];

%Draw search space

subplot(1,5,1);

func_plot(Function_name);

title('Parameter space')

xlabel('x_1');

ylabel('x_2');

zlabel([Function_name,'( x_1 , x_2 )'])

box on

axis tight

subplot(1,5,2);

semilogy(Convergence_curve,'Color','r','linewidth',1.5)

hold on

semilogy(SO_curve,'Color','b','linewidth',1.5)

title('Convergence curve')

xlabel('Iteration#');

ylabel('Best score obtained so far');

box on

legend('ESO','SO')

axis tight

subplot(1,5,3);

hold on

semilogy(Trajectories(1,:),'Color',color4/255,'linewidth',1.5);

title('Trajectory ')

xlabel('Iteration#')

box on

axis tight

subplot(1,5,4);

hold on

a=mean(fitness_history);

semilogy(a,'Color',color2/255,'linewidth',1.5);

title('Average Fitness ')

xlabel('Iteration#')

box on

axis tight

subplot(1,5,5);

hold on

for k1 = 1: size(position_history,1)

    for k2 = 1: size(position_history,2)

        plot(position_history(k1,k2,1),position_history(k1,k2,2),'.','markersize',1,'MarkerEdgeColor','k','markerfacecolor','k');

    end

end

plot(Xfood(1),Xfood(2),'.','markersize',10,'MarkerEdgeColor','r','markerfacecolor','r','linewidth',2);

title('Search history (x1 and x2 only)')

xlabel('x1')

ylabel('x2')

box on

axis tight

subplot(1,5,5);

hold on

func_plot1(Function_name)

⛄ 运行结果

⛄ 参考文献

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从源码分析vue3组件的生命周期

概览 借官网一张图充篇幅☺ 这张图展示了一个vue组件从开始渲染到卸载结束一整个生命周期经历的每个环节 但只罗列了选项式api生命周期钩子,没有将组合式api的生命周期钩子放进去 下面这个表格列出了所有选项式api生命周期钩子和组合式api生命周期钩子&#xff0c…

函数的节流和防抖?节流和防抖的区别及实现

一.防抖和节流的本质 本质上就是优化高频率执行代码的一种手段。 比如说:浏览器的scroll,keypress,mousemove,resize等事件在触发时,会不断的调用绑定在事件上的回调函数,会极大地浪费资源,降低前端的性能。 因此为了优化用户体…

【C++模板】非类型模板参数

目录什么是非类型模板参数?非类型的类模板参数非类型的函数模板参数非类型模板参数的局限性限制使用的场景支持使用的场景什么是非类型模板参数? 在函数模板和类模板中,模板参数并不仅仅可以当作类型,还可以当作普通值。当使用普通…

Numpy解决找出二维随机矩阵中每行数据中最接近某个数字的数字

解决思路: 利用np.random.rand()函数生成随机的矩阵。abs函数实现对矩阵中每一个元素和指定元素相减np.argsort()函数实现找到排序后新元素在原来矩阵中的下标利用mask函数提取矩阵中第一列的元素最后利用for循环遍历所有的二维坐标,找到矩阵中每行中满…

微信小程序-读取数据

在开发微信小程序的时候,我们经常都会用到一些配置数据,或者当做“单向数据库(只读)”使用。 我们新建一个新的项目工程,JS版本就可以。 免于麻烦,我们新建一个page(showdata)来显示数据。 为了方便管理,我们在项目工程新建一个目录(data),用于存数据。另外我们再新…

面向对象-05-06-构造方法,标准的 javabean 类

实例化的本质就是调用构造方法 package com.luo.demo01;public class StudenTest {public static void main(String[] args) {// 创建对象// 本质:调用构造器Student s new Student();Student student new Student("luo",18);System.out.println(studen…

Git系列,自定义 git 命令,用 shell 脚本帮助你更好的实现 git 版本控制

一、问题引出 在实际的生产当中,无论是 git、小乌龟 git 、idea git 插件,都满足不了我们生产中遇到的一些常见的问题,例如: 工作任务重的时候,手头上可能有若干个分支,每个分支对应着不同的业务&#xf…

Mysql面试题汇总

Mysql面试题 文章目录Mysql面试题一 Mysql索引001 Mysql如何实现的索引机制?002 InnoDB索引与MyISAM索引实现的区别是什么?003 一个表中如果没有创建索引,那么还会创建B树吗?004 说一下B树索引实现原理(数据结构&#…

妙啊,Python 管道 Pipe 编写代码如此优雅

大家好,今天这篇文章我将详细讲解 Pipe 如何让你的代码更加简洁的方法,喜欢本文点赞支持,欢迎收藏学习,文末提供技术交流群,欢迎畅聊! 我们知道 map 和 filter 是两种有效的 Python 方法来处理可迭代对象。…

如何基于YAML设计接口自动化测试框架?看完秒会!

在设计自动化测试框架的时候,我们会经常将测试数据保存在外部的文件(如Excel、YAML、CSV)或者数据库中,实现脚本与数据解耦,方便后期维护。目前非常多的自动化测试框架采用通过Excel或者YAML文件直接编写测试用例&…

[附源码]计算机毕业设计springboot招聘系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

电子学会2021年6月青少年软件编程(图形化)等级考试试卷(四级)答案解析

青少年软件编程(图形化)等级考试试卷(四级) 分数:100.00 题数:24 一、单选题(共10题,每题3分,共30分) 1. 执行下列程序,输出的结果为…

bert 环境搭建之PytorchTransformer 安装

这两天跑以前的bert项目发现突然跑不了,报错信息如下: Step1 transformer 安装 RuntimeError: Failed to import transformers.models.bert.modeling_bert because of the following error (look up to see its traceback): module signal has no att…

IOT物联网系统架构

主要由 IotCloodServer物网联服务平台, IotAdminWeb物联网管理平台, IotDataProcessing物联网数据平台, IotDeviceGateway物联网边缘网关, IotDeviceToolHepler物联网边缘网关 控制 设备的工具类, IotApp物联网应…

SpringBoot_整合Mybatis

一 导入依赖 <!--整合mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></dependency><dependency><group…

ubuntu20.04屏幕亮度无法调节的解决方法->安装 brightness-controller-simple 软件

文章目录一、问题描述二、解决方法参考链接一、问题描述 安装ubunt20.04.5 之后&#xff0c;调节Ubuntu上方的亮度控制条、按快捷键(FnF5、FnF6) 都不能实现调节亮度的功能。 二、解决方法 安装 brightness-controller-simple 软件&#xff0c;利用软件调节亮度。 sudo add…

论文投稿指南——中文核心期刊推荐(计算机技术2)

>>>深度学习Tricks&#xff0c;第一时间送达<<< 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊。下面&#xff0c;简单介绍下什么是中文核心期刊要目总览&#xff1a; 《中文核心期刊要目总…

Web安全专业学习路线

最专业、全面的网络安全学习路线来咯~&#xff08;虽然是网络安全学习路线&#xff0c;但重心还是在Web安全上&#xff09; 展示学习路线之前&#xff0c;建议大家先了解一下这几个问题&#xff0c;既是认清形势&#xff0c;也是认清自我&#xff1a; 为什么要学网络安全&…

期末测试——JavaScript方式练习题

练习目标&#xff1a; 技术简介&#xff1a; js外部引入顺序结构jQuery Dom操作JavaScrip循环技巧JavaScrip数据操作资源地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1VZMGTKj3Aq9Zn6mtee0egw 提取码&#xff1a;1111 关键字&#xff1a; 1、append()&#x…

高分辨率遥感卫星影像在交通方面的应用及高分二号影像获取

高分辨率遥感影像在城市交通领域具有广泛的应用前景&#xff1a;如遥感交通调查、遥感影像地图与电子地图制作、道路工程地质遥感解译、交通安全与知道抗灾救灾、交通事故现场快速勘察、交通需求预测、车辆与车牌视频识别等等。高分辨率影像比如高分二号卫星、高分一号卫星&…