Matlab群体智能优化算法之巨型睡莲优化算法(VAO)

Matlab群体智能优化算法之巨型睡莲优化算法(VAO)

摘要:介绍一种新型智能优化算法,巨型睡莲优化算法。其应用于24个基准测试函数,并与其他10个著名算法进行了比较。提出的算法在10个优化问题上进行了测试:最小生成树、枢纽位置分配、二次分配、聚类、特征选择、回归、经济调度、并行机器调度、颜色量化和图像分割,并与传统算法和生物启发算法进行了比较。总体而言,该算法在所有任务中的表现都令人满意。参考文献:Mousavi S M H. Victoria Amazonica Optimization (VAO): An Algorithm Inspired by the Giant Water Lily Plant[J]. arXiv preprint arXiv:2303.08070, 2023.

注:

  • 仅记录学习过程,如有侵权,联系删除
  • 本文所用墨滴模板为slandarer创作

灵感来源

维多利亚亚马逊植物,通常呗称为巨型睡莲,拥有世界上最大的浮动球形叶片,最大叶片直径为3米。它通过其刺的力量传播叶子,并在下面形成一个大阴影,杀死任何需要阳光的植物。这些水霸用他们强大的刺迫使每一个浮出水面,并增加他们的力量,从水面攫取更多空间。当它们蔓延到整个池塘或盆地时,最早胜场的叶子有更多的生长空间,每片叶子都获得独特的大小。它的花是变性的,当它们开花时,甲虫负责授粉过程,被雌花的气味吸引。进入花朵后,甲虫身上沾满了花粉,并将其转移到另一朵花上受精。甲虫离开后,花变成了雄花,颜色从白色变成粉红色。雄花死亡并沉入水中,释放出它的种子,帮助创造新的一代。

在作者提出的算法中,介绍了这种壮丽植物的数学生命周期,每片叶子和花朵都被当作一个实体。

巨型睡莲的生命周期

左:满池塘的睡莲  右:直径在10-100的

第二幅图,直径写10-100形象的比喻一下传播力,并不是直径100米。

VAO算法

VOA算法关注的是初始种群(叶子和花)的分布以及它们在表面上响应的传播力。该算法主要是一种基于蜂群局部搜索的元启发式算法,因此唯一的缺点是有可能陷入局部最优。

下面介绍一下算法中涉及的各个字母的含义

  • $\phi $ :直径
  • λ \lambda λ :优化任务,本质上就是让直径越来越大。睡莲通过用上升的力量和脊柱强行置换彼此所能获得的空间大小,从而增大其直径。这种竞争被成为内部竞争,用 λ \lambda λ表示。
  • $\omega :睡莲生长存在三个常见的困难。花内甲虫的死亡,甲虫不受粉或者授粉不当,以及温度降低。所有这些因素都有可能对这个过程不利,我们在这里把它们都成为 :睡莲生长存在三个常见的困难。花内甲虫的死亡,甲虫不受粉或者授粉不当,以及温度降低。所有这些因素都有可能对这个过程不利,我们在这里把它们都成为 :睡莲生长存在三个常见的困难。花内甲虫的死亡,甲虫不受粉或者授粉不当,以及温度降低。所有这些因素都有可能对这个过程不利,我们在这里把它们都成为\omega 。显然, 。显然, 。显然,\omega $的值越大,表明植物越弱。
  • ψ \psi ψ :害虫,如睡莲蚜虫,也可以通过吃植物的叶子和在叶子上制造洞来伤害植物。本文用 ψ \psi ψ来代表这种威胁值。 ψ \psi ψ的值越低,对植物生长和扩张越有利。
  • μ \mu μ:最后,当池塘里的甲虫用另一种睡莲给花授粉时,就会发生突变。这种现象被成为“杂交突变”,用 μ \mu μ表示。这种突变可以在正反两个方向上发生,每一代的比率为0.2%。
  • α \alpha α:最大和最强的叶子时最好的,用 α \alpha α表示。

伪代码

V A O = ∑ i = 1 n ∑ j = 1 n ( x i j [ ∅ i j , λ i j ] + ψ + ω ) ∗ ( μ ) V A O=\sum_{i=1}^n \sum_{j=1}^n(x i j[\varnothing i j, \lambda \mathrm{ij}]+\psi+\omega) *(\mu) VAO=i=1nj=1n(xij[ij,λij]+ψ+ω)(μ)

在上述公式中,可以明确看出,直径,内部竞争,困难,威胁,突变五个参数的影响


产生种群,定义每个个体的直径,定义内部竞争,定义困难和威胁,二者随机范围都在[0.1,0.3],变异概率是一个0.2。
终止循环的条件是迭代次数。在每一次的迭代过程中,首先比较每个睡莲的直径或者内部竞争,一直更新最大的;其次,变异作用一下;再次;困难和威胁作用;从次,计算适应度值;最后排序并且找到最好的。

VAO流程图

  • 加粗字体:MATLAB
  • 斜体:MATLAB

评价和结果

测试函数三维图

本文不在此列出详细绘制这种三维图,网上这种代码很多,大家也可以参考原文,然后自己写代码。
可以在下述链接中找到这些函数的代码。
http://www.sfu.ca/~ssurjano/index.html

在作者提供的源代码中,和现在所看到的公式有所不一样。在位置更新上,所用公式并不是文中提到的公式。除此之外,他还有一个合并和排序更新,这个类似于反向学习的思路,假如原来有20个睡莲,在经过公式更新后,就会变成40个,然后对这40个进行排序,取前20个睡莲。他还有一个突变系数阻尼比,这个其实可以理解,不能一直在突变,突变的概率会越来越小的。这个系数给的是0.98,也就是0.2*0.98,依次类推。

在此给出更新公式:
KaTeX parse error: Expected 'EOF', got '_' at position 11: \text{new_̲x}=x_i+\psi * e…

仔细看看这个公式,核心部分在第二部分和第三部分,第二部分包含了困难威胁内部竞争三个参数。
其中, Δ = 0.05 ∗ ( V a r M a x − V a r M i n ) \Delta = 0.05 * (VarMax-VarMin) Δ=0.05(VarMaxVarMin);
μ = μ ∗ μ d a m p \mu = \mu*\mu_{damp} μ=μμdamp;
μ d a m p = 0.98 \mu_{damp} = 0.98 μdamp=0.98

基本测试函数的测试(此处只给一例,Ackley函数)

Ackley

Ackley函数,给了一个睡莲的分布图,和原文中的图9应该是对应的。

睡莲分布图

没看明白这个的意义。不如画一个三维的动态图,去看睡莲的走向。这个图,作者应该是想体现能找到最优的那个点吧。不是很理解。

鸢尾花分类测试

作者给出了十个测试问题的代码,感兴趣的可以自己试试。

再次提醒大家,所有的代码都是作者开源的。不要购买任何这种别人提出来的什么算法代码,这代码在mathworks上都是免费下载的。或者去github上下载。

十个测试问题

在这给出枢纽位置分配的测试结果。30个位置选5个枢纽

VAO

PSO

ICA

HS

FA

DE

最后画一个三线表,比较一下目标函数和运行时间。
你用什么算法,什么算法就能达到最好。上面的图是我在matlab2022a运行的。可能不同版本也会有差距。原文中,作者就在不同性能的电脑上进行测试了。

写在最后

到此结束,感兴趣的去mathworks上下载源代码,原文。
mathworks用QQ邮箱可以免费注册,无需科学上网。

Seyed Muhammad Hossein Mousavi (2023). Victoria Amazonica Optimization VAO Algorithm (https://github.com/SeyedMuhammadHosseinMousavi/Victoria-Amazonica-Optimization-VAO-Algorithm), GitHub. 检索来源 2023/3/29.

本文由mdnice多平台发布

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勉为其难免免

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值