智能优化算法:吉萨金子塔建造优化算法-附代码
智能优化算法:吉萨金子塔建造优化算法
文章目录
- 智能优化算法:吉萨金子塔建造优化算法
- 1.算法原理
- 2.算法结果
- 3.参考文献
- 4.Matlab代码
摘要:吉萨金子塔建造优化算法(Giza Pyramids Construction,GPC)是于2020年提出的一种,新型智能优化算法,其仿照金字塔建造的过程,具有寻优能力强,精度高的特点。
1.算法原理
(1)计算斜坡石块位移。
在这里,我们需要一个恒定加速度下的时间无关的运动方程,可以用下面的方程来计算斜坡上石块的位移,
d=v022g(sin(θ)+ukcos(θ))(1)d=\frac{v_0^2}{2g(sin(\theta)+u_kcos(\theta))}\tag{1} d=2g(sin(θ)+ukcos(θ))v02(1)
其中ddd是位移的值。ggg是重力加速度取值9.8。θ\thetaθ为斜坡角度。v0v_0v0为石块的初始速度,算法中每次迭代由一个均匀分布的随机数确定。在这种安排下,如果工人对石块施加力,石块就开始以初始速度移动。根据物理科学,摩擦力使石块在一段时间后停止。于是工人再次对石块施加另一个力,使石块以初始速度再次移动。在算法的每一次迭代中,初始速度被认为是一个随机数,因为每次工人试图移动石块时,施加的力根据工人消耗的功率而变化。v0v_0v0可由式(2)计算。
v0=rand(0,1)(2)v_0=rand(0,1) \tag{2} v0=rand(0,1)(2)
实际上,rand(0,1)rand(0,1)rand(0,1)是一个介于0和1之间的随机数,即0<v0=rand(0,1)<10<v0=rand(0, 1)<10<v0=rand(0,1)<1,同时,uku_kuk是石砌块之间的动态摩擦系数和斜坡和算法是由均匀分布的随机数。由式(3)计算。
uk=rand[ukmin,ukmax](3)u_k=rand[u_{kmin},u_{kmax}]\tag{3} uk=rand[ukmin,ukmax](3)
该算法预先确定最小uku_kuk和最大uku_kuk,然后在每次迭代中假设这两个值之间的一个随机数。磨擦量随机性的原因是坡道表面没有抛光,由于某些部位可能不均匀,磨擦量可能增加或减少。
该算法的基本思想是推动石块的工人不断地移动或摇动,以获得对石块的最佳支配和最佳控制。这些冲击使工人进行非重复性的动作,以更好地推动石块。
如前所述,公式(1)决定了相对于之前位置的石块位移量。用这个等式来确定工人的新位置,变动不大。对于工人来说,摩擦是不考虑的。因此,工人推石块的新位置可由式(4)求得。
x=v022gsin(θ)(4)x=\frac{v_0^2}{2gsin(\theta)}\tag{4} x=2gsin(θ)v02(4)
在这个方程中,xxx是工人的移动量。工人随着石块向上移动,同时对石块施加力。这里的目标是让工人们用他们的小动作更好地控制岩块。但是工人也有初始速度。所以对于工人来说,摩擦力是不考虑的。
这是算法的规则之一。通过公式(3)和(4)计算出石块位置和工人运动的变化,由这两个公式的结果得到一个新的位置见式(5)。
pi=(pi+d)∗xξi(5)p_i=(p_i+d)*x\xi_i\tag{5} pi=(pi+d)∗xξi(5)
其中,pip_ipi为当前位置,ddd为石块的位移值, xxx为工人的移动量,ξi\xi_iξi为符合均匀分布、正态分布或Lévy分布的随机向量。这样,将石块的位移与之前的位置相加,再乘以工人的位移量,就得到了新的位置。
有时,在建造金字塔的过程中,工人失去了他的能力或权力,结果,他被另一个人取代。这种替换是为了平衡力量。这样,工人们就可以根据自己的力量和能力自行搬运合适的石块。所以一个工人在他自己的位置上没有效率,也许在其他位置上,效率会来的。这个替换操作在算法中以50%的概率执行(默认情况下)。
因此,在每次迭代中,一个工人被另一个工人替换的概率是50%。替换操作的使用非常类似于统一交叉操作。
假设,如果问题的主要解决方案是ϕ=(ψ1,ψ2,...,ψn)\phi = (\psi_1,\psi_2,...,\psi_n)ϕ=(ψ1,ψ2,...,ψn),和由式(5)生成的解决方案Φ=(Φ1,Φ2,...,Φn)\Phi = (\Phi_1,\Phi_2,...,\Phi_n)Φ=(Φ1,Φ2,...,Φn)有百分之一百五十的概率,将取代一些的主要解决方案与生成的解决方案。产生的新解为Z=(ξ1,ξ2,...,ξn)Z=(\xi _1,\xi _2,...,\xi_n)Z=(ξ1,ξ2,...,ξn)。因此,由式(6)用于替换乘上这个值就决定了下一次迭代时工作人员在石块周围的位置。
ξk={Φk,ifrand≤0.5ψk,else(6)\xi_k=\begin{cases} \Phi_k,if\,rand\leq0.5\\ \psi_k,else \end{cases}\tag{6} ξk={Φk,ifrand≤0.5ψk,else(6)
算法步骤如下:
步骤1:初始化种群,并评估适应度函数值确定最优工人或石块位置。
步骤2:根据式(1)更新石块移动量。
步骤3:根据式(4)更新工人的移动量。
步骤4:根据式(5)更新种群位置。
步骤5:根据式(6)评估替代工人的可能性。
步骤6:重新评估适应度函数值,并更新最优解位置和最优解。
步骤6:判断是否满足迭代条件,如是满足则输出最优结果否则返回步骤2重新迭代更新计算。
2.算法结果
3.参考文献
[1]Sasan Harifi et al., A Giza Pyramids Construction: an ancient‑inspired metaheuristic algorithm for optimization [J]. Evolutionary Intelligence. 2020.
4.Matlab代码
智能优化算法:吉萨金子塔建造优化算法-附代码相关推荐
- 【优化求解】基于吉萨金子塔建造优化算法 GPC求解最优目标matlab代码
1 简介 吉萨金子塔建造优化算法(Giza Pyramids Construction,GPC)是于2020年提出的一种,新型智能优化算法,其仿照金字塔建造的过程,具有寻优能力强,精度高的特点. No ...
- 基于头脑风暴优化的BP神经网络(预测应用) - 附代码
基于头脑风暴优化的BP神经网络(预测应用) - 附代码 文章目录 基于头脑风暴优化的BP神经网络(预测应用) - 附代码 1.数据介绍 3.BSO优化BP神经网络 3.1 BP神经网络参数设置 3.2 ...
- 基于布谷鸟优化的BP神经网络(预测应用) - 附代码
基于布谷鸟优化的BP神经网络(预测应用) - 附代码 文章目录 基于布谷鸟优化的BP神经网络(预测应用) - 附代码 1.数据介绍 3.CS优化BP神经网络 3.1 BP神经网络参数设置 3.2 布谷 ...
- 基于鸟群优化的BP神经网络(预测应用) - 附代码
基于鸟群优化的BP神经网络(预测应用) - 附代码 文章目录 基于鸟群优化的BP神经网络(预测应用) - 附代码 1.数据介绍 3.BSA优化BP神经网络 3.1 BP神经网络参数设置 3.2 鸟群算 ...
- 基于蝗虫(蚱蜢)优化算法优化的支持向量机分类模型及其MATLAB实现-附代码
基于蝗虫(蚱蜢)优化算法GOA优化的支持向量机分类模型SVM及其MATLAB实现-附代码 文章目录 基于蝗虫(蚱蜢)优化算法GOA优化的支持向量机分类模型SVM及其MATLAB实现-附代码 1. 模型 ...
- 基于蜜蜂优化算法优化的卷积神经网络(CNN)图像分类——附代码
目录 摘要: 1.蜜蜂优化算法: 2. 卷积神经网络(CNN) 输入层 隐含层 输出层 3. 本文Matlab代码: 摘要: 本文通过蜜蜂优化算法,优化了卷积神经网络(CNN)中的超参数,主要是网 ...
- 基于果蝇优化的BP神经网络(预测应用) - 附代码
基于果蝇优化的BP神经网络(预测应用) 文章目录 基于果蝇优化的BP神经网络(预测应用) 1.数据介绍 3.FOA优化BP神经网络 3.1 BP神经网络参数设置 3.2 果蝇算法应用 4.测试结果: ...
- 基于粒子群优化的灰色预测方法(Matlab)——附代码
目录 摘要: 研究背景: GM(1,1)模型 基于PSO的灰色预测算法 运行结果: 本文Matlab代码分享 摘要: 本文对灰色预测算法进行了研究.在GM(1,1)模型中,发展系数a和灰色作用量u是两 ...
- 送你一份使用k近邻算法实现回归的实用指南(附代码、链接)
作者:AISHWARYA SINGH, AUGUST 22, 2018 翻译:赵雪尧 校对:张玲 本文约4200字,建议阅读10分钟. 本文解释了在k近邻算法工作原理的基础上,简单介绍三种计算点距离方 ...
- PID算法实现及参数整定图解(附代码)
一. PID含义 PID是英文单词比例(Proportion),积分(Integral),微分(Differential coefficient)的缩写.PID调节实际上是由比例.积分.微分三种调节方 ...
最新文章
- RibbitMQ 大数据分布式下的消息队列思
- python日历提醒_Python之时间:calender模块(日历)
- frame 2 opencv mat
- NoSQL生态系统——一致性RWN协议,向量时钟,gossip协议监测故障
- [转]SpringMVC+Hibernate+Spring 简单的一个整合实例
- 机器学习算法太厉害,导致人类也通不过谷歌验证码
- codeforces 966c//Big Secret// Codeforces Round #477 (Div. 1)
- redis一般用来干嘛_谈谈redis的热key问题如何解决
- iOS中的谓词(NSPredicate)使用
- 暑期读书月开幕式暨天一寻宝活动
- openwrt 遇到问题三 高通9531编译过程
- ug无限的服务器名称,ug无效的服务器名称
- c51单片机外部中断汇编语言,51单片机汇编语言外部中断笔记
- HTML中怎么将播放器隐藏显示,HTML不显示播放器代码
- iReport编辑报表,以及打印PDF
- CA证书出错,请登录微信支付商户平台下载证书
- 面试系列——爱奇艺Andromeda 跨进程通信组件分析
- 搞懂redux一篇就够了
- \U672a\U77e5\U9519\U8bef 字符还原
- 启动VMware虚拟机显示:物理内存不足无法使用
热门文章
- 06. Explicitly disallow the use of compiler-generated functions you do not want
- -bash: mysql: command not found
- (day 25 - 广度优先搜索 )剑指 Offer 32 - II. 从上到下打印二叉树 II
- java抽象类泛型_java-使用泛型定义抽象方法
- java super.getclass_详解java中this.getClass()和super.getClass()的实例
- Javascript:ES6中新增class类中静态方法如何在类内部被调用
- PS使用:windows解决Adobe Photoshop 2020(PS2020)闪退
- Javascript特效:简易留言板
- 爬虫:使用Chrome谷歌浏览器自动获取xpath爬取内容为空
- 最快的摘要HASH算法测试