当前位置: 首页 > news >正文

蛇优化算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 蛇优化算法
  • 算法流程图
  • 初始化
  • 进化操作
    • 搜索阶段(无食物)——全局搜索
    • 搜索阶段(有食物)——局部搜索
      • 战斗模式
      • 交配模式
  • 备注
  • 测试结果


蛇优化算法

蛇优化算法(SO)主要是来源于蛇的交配行为。通过当前环境的温度、食物判断个体的下一步行为。
(1)当前食物不足时,个体搜索食物。

(2)当食物充足(>0.25),温度低(<0.6)时,个体进行战斗模式/交配模式

(3)当食物充足(>0.25),温度高(>=0.6)时,个体靠近食物

算法流程图

在这里插入图片描述

初始化

该算法将群体分为2个数量相同的雄性和雌性群体。
eq:
Nm表示雄性个体的数目,Nf表示雌性个体的数目
在这里插入图片描述

进化操作

计算食物Q
在这里插入图片描述
计算温度
在这里插入图片描述

搜索阶段(无食物)——全局搜索

当无食物的时候**(Q<0.25),蛇随机选择**位置进行移动。

雄性个体的位置移动:
在这里插入图片描述
雌性个体的位置移动:

在这里插入图片描述
雄性、雌性发现个体的能力
在这里插入图片描述
在这里插入图片描述

搜索阶段(有食物)——局部搜索

**(1)**Q>=0.25,且Temp>0.6时
个体向食物(最好的个体)靠近。
雄性个体位置更新:
(2)Q>=0.25,Temp<0.6时,个体进入战斗或交配模式

战斗模式

雄性个体的位置更新
在这里插入图片描述
雌性个体的位置更新
在这里插入图片描述
雄性、雌性战斗力
在这里插入图片描述

在这里插入图片描述

交配模式

雄性个体的位置更新:
在这里插入图片描述
雌性个体的位置更新
在这里插入图片描述
雄性、雌性个体的交配能力
在这里插入图片描述

如果孵化出个体,替换雄和雌个体最差的个体
在这里插入图片描述

备注

在进行代码复现的时候,觉得在个体在搜索食物——全局搜索中,雌性个体的更新位置有些奇怪,
在这里插入图片描述
**雌性个体的更新位置和雄性不同,**这点不知道是什么意思。

测试结果

在代码复现解决F1~F11测试问题时,出现较多测试问题效果不佳的情况,希望大家能给点意见,比如:全局搜索时雌性个体的位置更新是如何的?

function my_fitness=my_function(X)% n = size(X,2); %计算x的维度
% f = 0;
% for i = 1:n
%     f = f+(X(i).^2).^2;
% end
% my_fitness = f;o=sum(X.^4);
my_fitness=o;%F1测试问题[-100,100] min=0
% o=sum(X.^2);
% my_fitness=o;%F2测试问题[-10,10] min=0;
% o=sum(abs(X))+prod(abs(X));
% my_fitness=o;%F3测试问题——结果极差 min=0
% dim=size(X,2);
% o=0;
% for i=1:dim
%     o=o+sum(X(1:i))^2;
% end
% my_fitness=o;%F4测试问题——结果极差[100,100] min=0
% o=max(abs(X));
% my_fitness=o;%F5测试问题[-30,30] min=0
% dim=size(X,2);
% my_fitness=sum(100*(X(2:dim)-(X(1:dim-1).^2)).^2+(X(1:dim-1)-1).^2);%F6测试问题[-100,100] min=0
% o=sum(abs((X+.5)).^2);
% my_fitness=o;%F7测试问题[-1.28,1.28]——测试结果不佳 min=0
% dim=size(X,2);
% o=sum([1:dim].*(X.^4))+rand;
% my_fitness=o;%F8测试问题(多峰)[-500,500]——测试结果不佳 min=-12569.5
% o=sum(-X.*sin(sqrt(abs(X))));
% my_fitness=o;%F9测试问题  [-5.12,5.12]——测试结果不佳  min=0
% dim=size(X,2);
% o=sum(X.^2-10*cos(2*pi.*X))+10*dim;
% my_fitness=o;%F10测试问题[-32,32]——测试结果不佳 min=0
% dim=size(X,2);
% o=-20*exp(-.2*sqrt(sum(X.^2)/dim))-exp(sum(cos(2*pi.*X))/dim)+20+exp(1);
% my_fitness=o;%F11测试问题[-600,600] min=0
% dim=size(X,2);
% o=sum(X.^2)/4000-prod(cos(X./sqrt([1:dim])))+1;
% my_fitness=o;end

相关文章:

蛇优化算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 蛇优化算法算法流程图初始化进化操作搜索阶段&#xff08;无食物&#xff09;——全局搜索搜索阶段&#xff08;有食物&#xff09;——局部搜索战斗模式交配模式 备…...

循环神经网络(RNN)简单介绍—包括TF和PyTorch源码,并给出详细注释

文章目录 循环神经网络&#xff08;RNN&#xff09;入门教程1. 循环神经网络的原理2. 循环神经网络的应用3. 使用keras框架实现循环神经网络3.1导入对应的库及加载数据集3.2.数据预处理3.3定义RNN模型3.4训练模型3.5测试模型 4.使用PyTorch框架实现上述功能—注释详细5.结论 循…...

Struts2 快速入门

Struts2 是一个基于 MVC 设计模式的 Java Web 应用程序框架&#xff0c;它可以帮助我们更加有效地开发 Web 应用程序。Struts2 采用了前端控制器模式&#xff0c;通过核心控制器 DispatchServlet 将所有请求进行集中处理&#xff0c;然后将请求分发到指定的 Action 中&#xff…...

关于PullToRefreshView下拉刷新失效问题

一、问题原因 昨天&#xff0c;突然一个问题丢在了我的头上&#xff0c;用户反馈说某某界面下拉刷新不好使啊&#xff0c;怎么回事。二话不说直接运行项目&#xff0c;经过测试&#xff0c;发现果然不好使。一看代码提交日期好家伙2020年&#xff0c;百思不得其解&#xff0c;…...

JAVA开发中的六大原则

JAVA开发中的六大原则&#xff0c;也被称为SOLID原则&#xff0c;是软件开发中常用的一组设计原则。这些原则提供了实现高质量、易于维护和可扩展软件的基本策略。 以下是JAVA开发中的六大原则以及它们的详细说明&#xff1a; 单一职责原则&#xff08;Single Responsibility…...

Matplotlib 安装

Matplotlib 安装 本章节&#xff0c;我们使用 pip 工具来安装 Matplotlib 库&#xff0c;如果还未安装该工具&#xff0c;可以参考python 怎么使用pip进行包管理。 安装 matplotlib 库&#xff1a; pip install matplotlib 安装完成后&#xff0c;我们就可以通过 import 来…...

CF - Li Hua and Pattern

题意&#xff1a;给出了矩阵&#xff0c;里面每个位置分为蓝色或红色&#xff08;数据上用1和0体现了&#xff09;&#xff0c;给出了一个操作次数&#xff0c;每次可以改变一个坐标的颜色&#xff0c;问能否通过操作使得图像旋转180度后不变。 解&#xff1a;很容易想到&…...

重磅!阿里云云原生合作伙伴计划全新升级:加码核心权益,与伙伴共赢新未来

在今天的 2023 阿里云合作伙伴大会上&#xff0c;阿里云智能云原生应用平台运营&生态业务负责人王荣刚宣布&#xff1a; “阿里云云原生合作伙伴计划”全新升级。他表示&#xff1a; 云原生致力于帮助企业客户最大限度的减轻运维工作&#xff0c;更好的实现敏捷创新&#x…...

OSCP-Escape(gif绕过)

目录 扫描 WEB 扫描 sudo nmap 192.168.233.113 -p- -sS -sVPORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) 8080/tcp open http Apache…...

iMazing2023最新免费版iOS设备管理软件

iMazing是一款功能强大的iOS设备管理软件&#xff0c;它可以帮助用户备份和管理他们的iPhone、iPad或iPod Touch上的数据。除此之外&#xff0c;它还可以将备份数据转移到新的设备中、管理应用程序、导入和导出媒体文件等。本文将详细介绍iMazing的功能和安全性&#xff0c;并教…...

Git上传文件代码到GitHub

删除线上git:删除GitHub仓库里的文件夹_阿巴资源站的博客-CSDN博客 1. 创建空文件夹 2. cd 到本文件夹 3. git init &#xff0c;初始化&#xff0c;在本地创建一个Git仓库 4. 同时按住“ Command Shift . ”三个按键&#xff0c;即可查看当下文件夹中的隐藏文件 5. 克隆…...

JavaScript概述二(Date+正则表达式+Math+函数+面向对象)

1.Date 1.1 new一个Date对象表示当前系统时间 var nownew Date(); console.log(now);1.2 根据传入的时间格式表示时间 var date1new Date(2023-4-20 00:16:40); console.log(date1); 1.3 传入时间毫秒数&#xff0c;返回从1900年1月1日8时&#xff08;东八区&#xff09;X分X…...

一个朋友弄来的,太牛了,特别是后面内容,不看不知道,一看吓一跳,电话,热线

一个朋友弄来的&#xff0c;太牛了&#xff0c;特别是后面内容&#xff0c;不看不知道&#xff0c;一看吓一跳&#xff0c;我也收藏一下&#xff1a; 工商银行 95588 建设银行 95533 农业银行 95599 中国银行 95566 交通银行 95559 浦发银行 95528 民生银行 95568 兴业银行 955…...

VGA协议实践

文章目录 前言一、VGA接口定义与传输原理1、VGA接口定义2、传输原理3、不同分辨率对应不同参数 二、Verilog编程1、VGA显示彩色条纹2、VGA显示字符3、输出一幅彩色图像4、Quartus操作1、添加PLL核2、添加ROM核 三、全部代码四、总结五、参考资料 前言 VGA的全称是Video Graphi…...

毕业5年的同学突然告诉我,他已经是年薪30W的自动化测试工程师....

作为一名程序员&#xff0c;都会对自己未来的职业发展而焦虑。一方面是因为IT作为知识密集型的行业&#xff0c;知识体系复杂且知识更新速度非常快&#xff0c;“一日不学就会落后”。 另外一方面&#xff0c;IT又是劳动密集型的行业&#xff0c;不仅业人员多&#xff0c;而且个…...

操作系统原理 —— 进程有哪几种状态?状态之间如何切换?(七)

进程的五种状态 首先我们一起来看一下进程在哪些情况下&#xff0c;会有不同的状态表示。 创建态、就绪态 当我们刚开始运行程序的时候&#xff0c;操作系统把可执行文件加载到内存的时候&#xff0c;进程正在被创建的时候&#xff0c;它的状态是创建态&#xff0c;在这个阶…...

可算是熬出头了,测试4年,费时8个月,入职阿里,涨薪14K

前言 你的努力&#xff0c;终将成就无可替代的自己。 本科毕业后就一直从事测试的工作&#xff0c;和多数人一样&#xff0c;最开始从事点点点的工作&#xff0c;看着自己的同学一步一步往上走&#xff0c;自己还是在原地踏步&#xff0c;说实话这不是自己想要的状态。 一年半…...

5款十分小众的软件,知道的人不多但却很好用

今天推荐5款十分小众的软件&#xff0c;知道的人不多&#xff0c;但是每个都是非常非常好用的&#xff0c;有兴趣的小伙伴可以自行搜索下载。 1.视频直播录制——OBS Studio OBS Studio可以让你轻松地录制和直播你的屏幕、摄像头、游戏等内容。你可以使用OBS Studio来创建多种…...

Linux驱动开发:uboot启动流程详解

前言&#xff1a;uboot作为Linux驱动开发的 “三巨头” 之一&#xff0c;绝对是一座绕不开的大山。当然&#xff0c;即使不去细致了解uboot启动流程依旧不影响开发者对uboot的简单移植。但秉持着知其然知其所以然的学习态度&#xff0c;作者将给读者朋友细致化的过一遍uboot启动…...

分治与减治算法实验: 排序中减治法的程序设计

目录 前言 实验内容 实验目的 实验分析 实验过程 流程演示 写出伪代码 实验代码 代码详解 运行结果 总结 前言 本文介绍了算法实验排序中减治法的程序设计。减治法是一种常用的算法设计技术&#xff0c;它通过减少问题的规模来求解问题。减治法可以应用于排序问题&…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...