家人们,编程基础弱,没有算法基础,如何更好地学习智能优化算法。最近很艰难才能把一两个算法的源代码读懂个大概,需要进行什么实操吗,有什么推荐的学习路径吗。目前基于的编程语言是Matlab,之前也没有接触过,这个语言涵盖的知识很多,若要更好地掌握智能优化算法并将其应用到实际问题中去,Matlab需要掌握哪些重点知识。
先多看看多学习。找找b站视频看看。
学习智能优化算法是一个广阔且复杂的领域,以下是一些步骤和资源,可以帮助您入门并深入学习智能优化算法:
1. 基础知识:
- 学习数学基础,包括优化理论、概率统计、线性代数和微积分等。
- 了解机器学习、进化计算和元启发式算法等相关概念。
2. 算法了解:
- 阅读有关智能优化算法的教材、参考书籍或论文,例如遗传算法、粒子群优化、模拟退火等。
- 深入了解每个算法的原理、适用范围、参数设置和常见应用。
3. 编程实践:
- 使用编程语言(如Python)实现智能优化算法,并编写相应的优化问题求解代码。
- 尝试不同的算法变体和改进,以及在不同问题领域的应用。
4. 实验和评估:
- 在各种标准测试函数上进行实验,以评估和比较不同算法的性能。
- 分析算法的收敛性、收敛速度和解的质量等指标,并与其他算法进行对比。
5. 阅读研究论文和书籍:
- 阅读关于智能优化算法的最新研究论文,了解前沿的发展和应用。
- 学习其他学者的工作,并尝试理解他们的创新思想和技术。
6. 参加培训和课程:
- 参加相关的培训课程、研讨会或在线资源,以获得更系统的学习和指导。
- 探索机器学习和优化算法的在线课程和教育平台,例如Coursera、EdX等。
7. 实践项目:
- 参与开源项目或实际应用项目,将所学的智能优化算法用于实际问题求解。
- 通过项目实践来深入理解算法的应用、参数调整和性能优化等方面。
需要注意的是,学习智能优化算法需要时间和耐心。这个领域发展迅速,不断涌现出新的算法和技术。因此,持续学习和实践非常重要。同时,也可以参与相关的学术社区和论坛,与其他学者和从业者进行交流和讨论,提高自己的专业水平。
1.250+种优化算法及对比-Matlab版:https://www.cnblogs.com/huakaifugui/p/17471850.html
2.实现250+种优化算法对变分模态分解(VMD)参数的优化:https://www.cnblogs.com/huakaifugui/p/17471852.html
3.250+种优化算法实现电力系统最优潮流计算:https://www.cnblogs.com/huakaifugui/p/17471884.html
4.基于250多种优化算法实现三维无人机路径规划:https://www.cnblogs.com/huakaifugui/p/17471861.html
5.基于250多种优化算法实现机器人网格地图路径规划:https://www.cnblogs.com/huakaifugui/p/17471883.html
6.基于250多种优化算法实现图像多阈值分割:https://www.cnblogs.com/huakaifugui/p/17471864.html
7.基于250多种优化算法的图像分割:https://www.cnblogs.com/huakaifugui/p/17471869.html
8.基于250多种优化算法结合聚类的图像分割:https://www.cnblogs.com/huakaifugui/p/17471869.html
9.基于250多种优化算法实现无人机三维路径规划:https://www.cnblogs.com/huakaifugui/p/17471857.html
10.基于250+种优化算法的发电机经济负荷调度问题:https://mbd.pub/o/works/449892
11.基于250多种优化算法解决14种限制性工程设计问题:https://www.cnblogs.com/huakaifugui/p/17471867.html
开普勒优化算法(Kepler optimization algorithm,KOA)由Mohamed Abdel-Basset等人于2023年提出。
参考文献:
[1]Mohamed Abdel-Basset, Reda Mohamed, Shaimaa A. Abdel Azeem, Mohammed Jameel, Mohamed Abouhawwash, Kepler optimization algorithm: A new metaheuristic algorithm inspired by Kepler’s laws of planetary motion, Knowledge-Based Systems, 2023. DOI: https://doi.org/10.1016/j.knosys.2023.110454
单仓库多旅行商问题(Single-Depot Multiple Travelling Salesman Problem, SD-MTSP): 个推销员从同一座中心城市出发,访问其中一定数量的城市并且每座城市只能被某一个推销员访问一次,最后返回到中心城市,通常这种问题模型被称之为SD-MTSP。
多旅行商问题(Multiple Traveling Salesman Problem, MTSP):单仓库多旅行商问题及多仓库多旅行商问题(含动态视频)_IT猿手的博客-CSDN博客
本文选取国际通用的TSP实例库TSPLIB中的测试集bayg29作为测试例子,数据集可以自行修改。
close all
clear
clc
%数据集参考文献 REINELT G.TSPLIB-a traveling salesman problem[J].ORSA Journal on Computing,1991,3(4):267-384.
global data StartPoint Tnum
% 导入TSP数据集 bayg29
load('data.txt')
Tnum=4;%旅行商个数(可以自行更改)2-6
StartPoint=10; %选择起点城市(可以自行更改)
Dim=size(data,1)-1;%维度
lb=-10;%下界
ub=10;%上界
fobj=@Fun;%计算总距离
SearchAgents_no=100; % 种群大小(可以修改)
Max_iteration=2000; % 最大迭代次数(可以修改)
[fMin,bestX,curve]=KOA(SearchAgents_no,Max_iteration,lb,ub,Dim,fobj);
(1)3个旅行商
第1个旅行商的路径:10->20->18->17->22->11->14->15->19->4->10
第1个旅行商的总路径长度:1054.988152
第2个旅行商的路径:10->16->25->7->23->27->8->24->1->13->10
第2个旅行商的总路径长度:1301.691208
第3个旅行商的路径:10->21->28->6->12->9->5->26->3->29->2->10
第3个旅行商的总路径长度:1217.538500
所有旅行商的总路径长度:3574.217860
(2)4个旅行商
第1个旅行商的路径:10->21->26->29->3->9->5->2->10
第1个旅行商的总路径长度:1245.471798
第2个旅行商的路径:10->1->6->12->28->8->24->13->10
第2个旅行商的总路径长度:1057.638880
第3个旅行商的路径:10->16->27->23->7->25->19->4->10
第3个旅行商的总路径长度:1170.811684
第4个旅行商的路径:10->15->11->22->14->17->18->20->10
第4个旅行商的总路径长度:1000.299955
所有旅行商的总路径长度:4474.222317
文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进
CEC2005中的测试
本文KAU将介绍一个由Abualigah等人于2021年发表在Comput. Methods Appl. Mech. Eng.上的元启发式算法——算术优化算法(Arithmetic Optimization Algorithm,AOA)[1]
AOA算法的设计很有意思,其巧妙的利用了数学中的加减乘除,乘除运算具有分散度高的性质,用于全局搜索,加减则具有分散度较低的性质,应用于局部搜索。AOA具有无需调整参数、可移植性强、收敛速度快等优点,其性能较之蚁狮、樽海鞘、灰狼等同样具有很强的竞争力,目前已应用于模式识别、神经网络、任务调度等实际问题中。
图源文献[1]
本文将介绍AOA原理、改进及其利用,并在给出算法的MATLAB和Python实现。
00 目录
1 算术优化算法 (AOA)原理
2 代码目录
3 算法性能
4 源码获取
01 算术优化算法 (AOA)原理
图源文献[1]
AOA是基于种群的元启发式算法,由算术中的四则运算法则来实现全局寻优,通过数学优化器加速函数选择优化策略,其由勘探(乘除)和开发(加减)两个阶段进行参数的优化,具有结构简单,收敛快的特点。下面讲解AOA原理:
1.1 初始化
首先,个体的位置可视为搜索代理,其遵循随机初始化的方法:
其次,AOA开始迭代寻优前需要根据数学优化器加速函数(Math Optimizer Accelerated,MOA)选择搜索阶段(勘探或开发),MOA的计算如下:
定义一个随机数r1,当r1<MOA时,进入勘探阶段,否则进入开发阶段。C_Iter为当前迭代次数,M_Iter为最大迭代次数,Min和Max为加速函数的最小/大值。
另外,为探索解空间的不同区域,保证解的多样化,AOA更新公式中考虑了一个随机参数,即数学优化概率(Math Optimizer Probability,MOP),MOP的计算如下:
其中,α是敏感参数,定义了迭代过程中的开发精度,取5。
1.2 勘探阶段
乘法和除法运算符分散性高,因此AOA基于除法运算符和乘法运算符进行全局搜索,可以表示为:
其中,r2∈[0,1],μ=0.499,为搜索过程控制参数。
1.3 开发阶段
加法和减法运算符分散性低,因此AOA基于加法运算符和减法运算符进行局部开发,可以表示为:
其中,r3∈[0,1]。
图源文献[2]
1.4 算法流程
AOA的整个算法已介绍完毕,特点就是非常简单明了,易于移植与嵌入。
1.5 算法利用&改进
首先,AOA的算法框架简单明了,勘探与开发阶段清晰,非常便于嵌入修改或利用,其勘探阶段中的乘除算子以及开发阶段中的加减算子都可引入其他算法中。同时,其MOP也是个有趣的概念,其在AOA的勘探和开发阶段都使用到了,控制了算法开发精度,也可以加以利用。
其次,AOA的MOA呈现线性递增的趋势,由于其决定了勘探与开发阶段的选择,因此针对不同复杂度的问题,其形式可以进行改变;同样,其开发与勘探阶段的公式同样可以融入其他具有更强搜索能力的策略,比如融入具有强全局搜索能力的黄金正弦方法。最后,可以引入一些“变异”策略,以提高算法跳出局部最远的能力。
02 代码目录
(左Matlab,右Python)
代码包含MATLAB和Python,Python代码为KAU按照Matlab代码手搓而成。考虑到很多同学获取代码后,MATLAB代码部分有乱码(MATLAB版本问题),有几个方法:
①可以将MATLAB版本改为2020及以上;
②将m文件用记事本打开,再将记事本中的代码复制到Matlab;
代码都经过KAU重新注释,代码更清爽,可读性强。
03 算法性能
采用标准测试函数初步检验其寻优性能
在MATLAB中,进行标准函数的测试,执行程序结果如下:
在Python中,进行标准函数的测试,执行程序结果如下:
MATLAB和Python都进行了F13函数的测试,测试效果都不错,其收敛速度和精度很好。
04 源码获取
在公众号后台回复 AOA 即可
后续KAU将更新关于AOA的原创改进算法,感兴趣的话可以关注一波~ 新的文章将第一时间推送~
参考文献
[1]ABUALIGAH L, DIANAT A, MIRJALILI S, et al. The arithmetic optimization algorithm[J]. Computer Methods in Applied Mechanics and Engineering, 2021, 376: 113609.
[2]郑婷婷,刘升,叶旭.自适应t分布与动态边界策略改进的算术优化算法[J].计算机应用研究,2022,39(5):1410-1414.
另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。
如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(? _)?(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。