23年中科院1区算法|开普勒优化算法原理及其利用(Matlab/Python)

CEC2017中的测试

在这里插入图片描述

本文作者将介绍一个2023年发表在中科院1区期刊《Knowledge -Based Systems》上的优化算法——开普勒优化算法(Kepler optimization algorithm,KOA)[1]

在这里插入图片描述

算法性能上,与鹈鹕、黏菌、灰狼和鲸鱼等一众优化算法在CEC2014、CEC2017、CEC2020和CEC2022上进行了测试,均显示出其惊艳的性能。因此,感兴趣的各位就和作者一起学习一下该算法的巧妙之处吧,并且,在文章的最后也给出了算法的MATLAB和Python实现。将这样性能较好的新算法应用于一些工程问题也能够在一定程度上提升文章的创新性。

在这里插入图片描述

00 目录

1 开普勒优化算法(KOA)原理

2 代码目录

3 算法性能

4 源码获取

01 开普勒优化算法(KOA)原理

在这里插入图片描述

图源文献[1]

KOA为基于物理的优化器(意味着公式会比较多…作者这里就列出核心公式来帮助大家理解),是受开普勒行星运动定律启发的新型优化算法。太阳(最优解)和在椭圆轨道上绕它旋转的行星(候选解)构成了搜索空间,在不同的时间,行星将处于轨道中的不同位置,这种策略有效的执行了勘探与开发(如下)。太阳与行星的吸引力、旋转速度等因素也共同决定了行星与太阳的接近程度。为适配该算法,术语“时间”将更适合迭代一词。

在这里插入图片描述

图源文献[1]

1.1 初始化

KOA的种群初始化与其他算法相同,每个行星将放置在轨道上的随机位置,算式为xi=lb+rand*(ub-lb)。除此之外,KOA还有两个新的参数需要初始化,即轨道偏心率e和轨道周期T,其计算:

在这里插入图片描述

其中,rand为随机值,r为正态分布的随机数。ei与后文中的引力有关,能够赋予KOA一定随机性。而T与椭圆轨道半长轴长度有关,而半长轴长度将随着时间逐渐减小,对应的解也将向可能找到全局最优解的有希望区域移动。

1.2 天体速度

天体的速度受太阳的引力影响,当一颗行星靠近太阳时,它的速度会增加,当它移得更远时,它的速度会降低。如果行星靠近太阳,那么太阳的引力就会相当强,行星就会试图增加自己的速度,以避免被拉向太阳。然而,如果一个物体远离太阳,那么它的速度就会减慢,因为太阳的引力很弱。其关系可由下列方程表示:

在这里插入图片描述

其中具体参数的意义这里不作详解,但可以看到这个公式根据与最优解的距离进行了勘探与开发之间的转换。

1.3 跳出局部最优

在太阳系中,大多数天体都是逆时针绕太阳旋转,它们都绕着自己的轴旋转;然而,也有一些天体是顺时针绕太阳旋转。该算法利用这种行为来逃避局部最优区域,即通过使用标志F(即1.2中的F),改变搜索方向,使代理能够准确地扫描搜索空间。

1.4 更新天体位置

天体在各自的椭圆轨道上围绕太阳旋转。在旋转过程中,物体在一定时间内向太阳靠近,然后远离太阳。KOA通过两个主要阶段模拟这种行为:探索和开发阶段。KOA探索远离太阳的行星以寻找新的解决方案,同时更准确地使用靠近太阳的解决方案,因为它在最佳解决方案附近寻找新的地方。图4显示了太阳周围的勘探和开发区域。

在这里插入图片描述

图源文献[1]

行星的位置使用下式更新:
在这里插入图片描述

当行星远离太阳时,行星的速度将代表KOA的探索算子。然而,这个速度受到太阳引力的影响,这有助于当前行星略微利用最佳解附近的区域。与此同时,当行星接近太阳时,它的速度急剧增加,使其能够逃脱太阳的引力。在这种情况下,如果迄今为止最好的解(称为太阳)是局部最小值,则速度表示局部最优避免,并且太阳的引力表示利用算子以帮助KOA攻击迄今为止最好的解以找到更好的解。

其中,太阳通过引力控制行星以椭圆的形式绕着其运动,遵循万有引力定律,其定义式:

在这里插入图片描述

1.5 更新与太阳的距离

为进一步改善行星的探索与开发,算法模仿了太阳与行星之间的距离的典型行为,当行星靠近太阳时,KOA将专注于优化开发算子;当远离太阳时,KOA将优化探索算子。而规则的转换将取决于调节参数h,其随时间逐渐变化。h如下:

在这里插入图片描述

图源文献[1]

当h被设置为一个高值时,重点放在探索算子上,导致行星和太阳之间间隔扩大。相反,当h假设一个低的值,倾向于开发,使得能够在迄今为止获得的最佳解附近进行集中探索。

该原理的数学模型描述如下:

在这里插入图片描述

1.6 精英保留

该步骤相当于贪婪策略,若位置更新后适应度更佳则保留。
在这里插入图片描述

1.7 算法流程
在这里插入图片描述

1.8 算法利用

其实在15年和22年都有文献将开普勒混合于优化算法中来提升性能,但这些算法运用的只是开普勒第一定律,形式如下:

其简化程度高,是通过将太阳位置乘均匀分布的伪随机数或通过在太阳位置和行星之间添加距离分量来集中搜索。而在KOA中是一个完整的优化框架,能够更有效的利用和探索空间。其天体位置更新中,既有能够跳出局部最优的策略,也能够进行勘探与开发之间的有效转换,可以将其考虑引入其他算法提升性能。在这里插入图片描述

02 代码目录

在这里插入图片描述

代码包含MATLAB和Python以及KOA算法源文献,考虑到很多同学获取代码后,MATLAB代码部分有乱码(MATLAB版本问题),可以将MATLAB版本改为2020及以上,或使用乱码解决文件夹中的txt文件即可。

代码都经过作者重新注释,代码更清爽,可读性强。

部分代码:(MATLAB与Python)

在这里插入图片描述

03 算法性能

采用标准测试函数初步检验其寻优性能

在MATLAB中,进行CEC2017函数的测试,执行程序结果如下:

在这里插入图片描述

在Python中,进行CEC2005函数的测试,执行程序结果如下:

在这里插入图片描述

04 源码获取

在GZH(KAU的云实验台)后台回复 KOA 即可

参考文献

[1] Abdel-Basset, M. et al. Kepler optimization algorithm: A new metaheuristic algorithm inspired by Kepler’s laws of planetary motion. Knowl. Based Syst. 268, 110454 (2023).

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交换机02_共享式交换式

1、共享式网络 早期的以太网是共享式网络,它是由集线器(HUB)相连,由一个HUB相连了两台主机,形成一个冲突域也称广播域。 (1)相关名词解释 集线器 HUB中心的意思,集线器就是对接收…

Python入门学习篇(十七)——封装、继承、多态

1 封装 1.1 理解 属性和方法书写到类里面的操作即为封装 封装可以理解成私有化属性和私有化方法1.2 示例代码 class Person():p_num 0 # 用于统计数量def __init__(self, name, age, sex, job):# __name为私有化属性self.__name nameself.age ageself.sex sexself.job …

【Mybatis】深入学习MyBatis:高级特性与Spring整合

🍎个人博客:个人主页 🏆个人专栏: Mybatis ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 高级特性 1 一级缓存和二级缓存 一级缓存 二级缓存 2 延迟加载 5 整合Spring 1 MyBatis-Spring模块 2 事务管理 结…

burpsuite模块介绍之extender(扩展)

extender Burp提供了对第三方拓展插件的支持,使用户能够编写自定义插件或从插件商店中安装拓展插件。这些Burp扩展程序可以以多种方式定制Burp的行为,包括修改HTTP请求和响应、自定义UI、添加自定义扫描程序检查以及访问关键的运行时信息,如代理历史记录、目标站点地图和扫…

线程的深入学习(二)

前言 上一篇讲了线程池的相关知识,这篇文章主要讲解一个 1.并发工具类如CountDownLatch、CyclicBarrier等。 2.线程安全和并发集合: 3.学习如何使用Java提供的线程安全的集合类,如ConcurrentHashMap、CopyOnWriteArrayList等。 并发工具类 …

QT、C++实验室管理系统

一、需求介绍: 题目:基于Qt的实验室管理系统的设计 项目命名以LabSystem姓名拼音首字母(例如: LabSystemwXC) 功能要求: 一,基本必要功能: 1,使用QSQLITE数据库完成数据库的设计。 2,注册功能:包含学生注册&#xff0…

计算机网络实验(四):交换机VLAN配置练习

一、实验项目名称:交换机VLAN配置练习 二、实验原理: 1. 交换机基本配置 (1)管理方式: 带内管理:通过网络接口进行管理。 带外管理:通过Console口进行近距离配置。 (2&#xf…

Java 第19章 IO流 课堂练习+本章作业

文章目录 Buffered流拷贝二进制文件创建文件写入文本读取文本文件存读Properties文件 Buffered流拷贝二进制文件 package com.hspedu.chapter19.outputStream;import java.io.*;public class BufferedCopy02 {public static void main(String[] args) {String srcFilePath &q…

书生·浦语大模型全链路开源开放体系

书生浦语大模型全链路开源开放体系 大模型成为热门关键词书生浦语大模型开源历程书生浦语20B开源大模型性能从模型到应用书生浦语全链路开源开放体系数据预训练微调评测部署智能体 大模型成为热门关键词 大模型成为发展通用人工智能的重要途径 书生浦语大模型开源历程 书生浦语…

案例088:基于微信小程序的校车购票平台设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

YOLOv8改进 | 主干篇 | EfficientNetV1均衡缩放网络改进特征提取层

一、本文介绍 这次给大家带来的改进机制是EfficientNetV1主干,用其替换我们YOLOv8的特征提取网络,其主要思想是通过均衡地缩放网络的深度、宽度和分辨率,以提高卷积神经网络的性能。这种方法采用了一个简单但有效的复合系数,统一调整所有维度。经过我的实验该主干网络确实…

如何使用内网穿透工具实现远程SSH访问Deepin系统

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统,专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…