智能优化算法:水循环算法-附代码
智能优化算法:水循环算法-附代码
文章目录
- 智能优化算法:水循环算法-附代码
- 1.算法原理
- 2.算法结果
- 3.参考文献
- 4.Matlab代码
摘要:水 循 环 算 法 (water cycle alogrithm,WCA)是由Hadi Eskandar 等人受大自然水循环过程中溪流、江河、湖泊流向海洋的过程启发而提出的一种全局优化算法.目前WCA已在工程优化等领域得到应用.
1.算法原理
WCA 是一种生物启发的优化算法,它模拟自然界中的水循环过程,在种群中设定 3 类个体:海洋 Sea、河流River 及溪流 Stream. 海洋为当前种群的最优个体,河流为一定数量的仅次于海洋的个体,剩余较差的个体即为溪流.
算法开始之前需要生成大小为Npop∗DN_{pop}*DNpop∗D 的初始总群体,其中NpopN_{pop}Npop是种群的总数量,DDD是设计变量的个数,因此这个随机矩阵为 :
[SeaRiver1River2....StreamNsr+1StreamNsr+2...StreamNpop]=[x11x21...xD1x12x22...xD2............x1Npopx2Npop...xDNpop](1)\left[\begin{matrix} Sea\\ River_1\\ River_2\\ ....\\ Stream_{N_{sr}+1}\\ Stream_{N_{sr}+2}\\ ... Stream_{N_{pop}} \end{matrix}\right]=\left[\begin{matrix} x_1^1&x_2^1&...&x_D^1\\ x_1^2&x_2^2&...&x_D^2\\ ...&...&...&...&\\ x_1^{N_{pop}}&x_2^{N_{pop}}&...&x_D^{N_{pop}}\\ \end{matrix}\right] \tag{1} ⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡SeaRiver1River2....StreamNsr+1StreamNsr+2...StreamNpop⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎡x11x12...x1Npopx21x22...x2Npop............xD1xD2...xDNpop⎦⎥⎥⎤(1)
其中,NsrN_{sr}Nsr 是海洋 SeaSeaSea (数量为 1) 及河流 RiverRiverRiver 的数量之
和,这是在初始化的时候自行定义的,其余流入海洋和河流的溪流 StreamStreamStream 的数量为NstreamN_{stream}Nstream,其表达式为:
Nstream=Npop−Nsr(2)N_{stream}=N_{pop}-N_{sr}\tag{2} Nstream=Npop−Nsr(2)
紧接着,根据式(3)计算当前种群中流向海洋的溪流数量及流向对应河流的溪流数量:
Nsrn=round(∣Ctn∑s=1NCts∣Nstreams),n=1,2,...,Nsr(3)N_{sr_n}=round(|\frac{Ct_n}{\sum_{s=1}^NCt_s}|N_{streams}),n=1,2,...,N_{sr}\tag{3} Nsrn=round(∣∑s=1NCtsCtn∣Nstreams),n=1,2,...,Nsr(3)
完成上述过程后,即可进行汇流过程,汇流过程如图 1所示. 汇流过程中,溪流、河流和海洋的位置根据式(4)随机更新:
图1汇流过程
Nstreamt+1=Xstreamt+rand∗C∗(Xrivert−Xstreamt)Nstreamt+1=Xstreamt+rand∗C∗(Xseat−Xstreamt)Nrivert+1=Xrivert+rand∗C∗(Xseat−Xrivert)(4)N_{stream}^{t+1}=X_{stream}^t + rand*C*(X_{river}^t - X_{stream}^t)\\ N_{stream}^{t+1}=X_{stream}^t + rand*C*(X_{sea}^t - X_{stream}^t)\\ N_{river}^{t+1}=X_{river}^t + rand*C*(X_{sea}^t - X_{river}^t) \tag{4} Nstreamt+1=Xstreamt+rand∗C∗(Xrivert−Xstreamt)Nstreamt+1=Xstreamt+rand∗C∗(Xseat−Xstreamt)Nrivert+1=Xrivert+rand∗C∗(Xseat−Xrivert)(4)
其中,ttt 是迭代数;1≤C≤21\leq C\leq21≤C≤2 ,CCC 的最优值可以选为 2;randrandrand是 0 和 1 之间均匀分布的随机数;XstreamtX_{stream}^tXstreamt及Xstreamt+1X_{stream}^{t+1}Xstreamt+1分别表示第 ttt 次及第t+1t+1t+1 次迭代时溪流的位置;XrivertX_{river}^tXrivert及Xrivert+1X_{river}^{t+1}Xrivert+1 分别表示第 ttt 次及第 t+1t+1t+1 次迭代时河流的位置;XseatX_{sea}^tXseat及Xseat+1X_{sea}^{t+1}Xseat+1 分别表示第 ttt 次及第 t+1t+1t+1 次迭代时海洋的位置. 式(4)中分别为流向河流的溪流、流向海洋的溪流及流向海洋的河流的位置更新公式. 溪流在每次更新过后,计算出相应的适应度值,若该值优于与其相连的河流的适应度值,则将该溪流的位置与该河流的位置进行交换. 河流与海洋、溪流与海洋之间也有类似的交换. 在没有满足设定要求之前,海洋、河流和溪流的位置将根据相应的公式不断地更新.
所有的寻优算法都要考虑收敛过快而陷入局部最优的问题,水循环算法引入蒸发过程来避免该问题的发生. 在水循环过程中,那些流速过慢还有无法达到大海的溪流和河流最终都会蒸发,蒸发过程的出现会引来新的降水. 因此,必须检查河流及溪流是否足够靠近海洋,若距离较远则进行蒸发过程,蒸发过程的判断条件为
∣Xseat−Xrivert∣<dmax,t=1,2,...,Nsr−1(5)|X_{sea}^t - X_{river}^t|<d_{max},t=1,2,...,N_{sr}-1 \tag{5} ∣Xseat−Xrivert∣<dmax,t=1,2,...,Nsr−1(5)
其中,dmaxd_{max}dmax是接近零的小数. 蒸发过程结束后,应用降雨过程并在不同的位置形成新的溪流或河流(类似遗传算法的突变过程). 较大的可dmaxd_{max}dmax以防止额外搜索,但是会降低在海洋附近区域的搜索强度. 因此,dmaxd_{max}dmax的值应该自适应地降低:
dmaxt+1=dmaxt−dmaxttmax(6)d_{max}^{t+1}=d_{max}^t - \frac{d_{max}^t}{t_{max}}\tag{6} dmaxt+1=dmaxt−tmaxdmaxt(6)
其中,tmaxt_{max}tmax 为最大迭代数.
循环过程中的蒸发作用对河流和海洋的影响很小,所以在进行降雨过程之后影响的是溪流的位置. 降雨过程后溪流的新位置为 :
Xstreamnew=LB+rand∗(UB−LB)(7)X_{stream}^{new}=LB+rand*(UB-LB)\tag{7} Xstreamnew=LB+rand∗(UB−LB)(7)
其中,L B (lower bound)和 U B (upper bound)分别表示设计变量的下界和上界.
算法步骤:
(1) 初始化算法参数.
(2) 随机生成初始种群,形成初始溪流(雨滴)、河流和海洋.
(3)计算每个雨滴的适应度函数值.
(4) 利用式(3)确定雨滴流向河流和海洋的强度;利用式(4)更新溪流位置;更新河流位置.
(5) 若溪流给出的适应度值比其相连的河流好,则河流和溪流的位置对换;若河流给出的适应度值比其相连的海洋好,则海洋和河流的位置对换。
(6) 判断 是 否满 足 蒸 发 条件.若 满 足 蒸 发 条件,利用式(7)进入降水过程,形成新的降水。
(7) 利用式(6)减小dmaxd_{max}dmax值;判断算法是否满足终止条件,若满足,则转到 (8);否则,重复执行(3) - (6)
(8) 输出最优解。
2.算法结果
3.参考文献
[1] Eskandar H, Sadollah A, Bahreininejad A, et al. Water cycle algorithm - A novel metaheuristic optimization method for solving constrained engineering optimization problems[J]. Computers & Structures, 2012, 110: 151-166.
[2] 金爱娟,苏俊豪,李少龙.基于水循环算法的开关磁阻电机性能优化[J/OL].信息与控制:1-12[2020-09-12].https://doi.org/10.13976/j.cnki.xk.2020.2048.
4.Matlab代码
个人资料介绍
智能优化算法:水循环算法-附代码相关推荐
- 遗传算法_粒子群算法优化支持向量机分类预测-附代码
遗传算法/粒子群算法优化支持向量机分类预测-附代码 文章目录 遗传算法/粒子群算法优化支持向量机分类预测-附代码 1. 支持向量机简介与参数优化的原理 1.1 支持向量机SVM简介 1.2 优化参数的 ...
- 基于灰狼算法优化的lssvm回归预测-附代码
基于灰狼算法优化的lssvm回归预测 - 附代码 文章目录 基于灰狼算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于灰狼算法优化的LSSVM 4.测试结果 5.Mat ...
- 基于麻雀搜索算法优化的支持向量机回归预测-附代码
基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 文章目录 基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 1. 基于麻雀搜索算法优化的支持向量机预测简介 1.1 支持向量机 ...
- 基于强化学习的智能机器人路径规划算法研究(附代码)
目录 一.摘要 二.路径规划技术的研究进展 1.研究现状 2.算法分类 2.1 全局路径规划算法 2.2 局部路径规划算法 三.本文采用的路径规划算法--强化学习 1. 概念 2. 与其他机器学习方式 ...
- python排序算法——归并排序(附代码)
python排序算法 --归并排序 文章目录 python排序算法 --归并排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...
- python排序算法 ——冒泡排序(附代码)
python排序算法 --冒泡排序 文章目录 python排序算法 --冒泡排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...
- python有效边界_Markowitz有效边界和投资组合优化基于Python(附代码)
原标题:Markowitz有效边界和投资组合优化基于Python(附代码) 本期作者:Bernard Brenyah 本期翻译:Barry 未经授权,严禁转载 哈里马科维茨对金融和经济学的世界的贡献是 ...
- 智能优化算法——粒子群算法原理(附代码)
目录 基本概念 算法实现 粒子群算法的构成要素分析 C++程序测试Sphere函数 总结 visual studio2017c++源代码 源文件下载地址 基本概念 粒子群优化算法(particle s ...
- 群智能优化之果蝇算法
是的,今天要说的就是果蝇算法,"果蝇"就是你理解的那个果蝇,这是在2011年由Wen-Tsao Pan提出的有一种新型的群体智能优化算法. 1,引言: 演化式计算是一种共享名词,系 ...
- 独家 | 决策树VS随机森林——应该使用哪种算法?(附代码链接)
作者:Abhishek Sharma 翻译:陈超 校对:丁楠雅 本文长度为4600字,建议阅读20分钟 本文以银行贷款数据为案例,对是否批准顾客贷款申请的决策过程进行了算法构建,并对比了决策树与随机森 ...
最新文章
- OpenCV 仿射变换
- Gearman 异步处理委派任务
- 模板类的析构函数如何写_顶尖文案如何写?这6大模板、29个方法,奥美大咖都在用!|优惠最后1天...
- 用python计算ln函数_python-含参函数
- 邢台职业技术学院计算机专业分数线,邢台职业技术学院录取分数线2021是多少分(附历年录取分数线)...
- linux的cache过高的原因定位与解决echo 3 > /proc/sys/vm/drop_caches
- linux环境systwm.img解包,[教程] system.img解包打包的方法,方便菜鸟们制作直刷ROM...
- springmvc工作流程_springMVC工作原理及流程详细讲解
- 全链路压测原理篇(方案 概念 架构 实现)
- 使用PS蒙版功能去水印以及Word中的图片合并功能合并公司Logo图片
- 神舟K650D-G4D2安装ubuntu18.04出现的[Firmware Bug]
- 毕业生写论文必备!! 设置奇数偶数页眉不同,奇数页是对应本章章节名,偶数页为论文名
- 疫情已经结束,快递行业现状如何
- layui外部引入_layui use 定义js外部引用函数的方法
- android通用ui库设计规范,难查的ANDROID APPUI设计规范总览
- “马红名师+”习作专题送教送培第二站活动安排
- 各种交通工具旅游路线查询程序(C++)
- SSL/TLS深度解析--OpenSSL的基本使用
- ArcEngine简单教程——要素的属性查询、空间查询
- 移动开发UI设计尺寸规范
热门文章
- -bash: vi: command not found -bash: ls: command not found
- springmvc配置servlet
- 腐蚀单机服务器怎么不稳定,腐蚀有什么指令?基本指令及服务器指令汇总
- python用户输出怎么命名变量_python变量及用户交互,用户名格式化输出
- python实验总结心得体会_如何更有效地“肝”论文?这里有份最全工具总结
- 可变车道怎么走不违章_可变车道怕走错扣分罚款,学学老司机的办法,新手司机学会不吃亏...
- 论文笔记_SLAM_An Overview of SLAM_SPIE
- opencv图像分析与处理(4)- 频率域滤波的基础概念
- 机器学习笔记——感知机理解(自行取用,并不一定适合每个人)
- Mac Os的java开发环境以及MySql环境配置