一种改进的北方苍鹰优化算法(EHNGO) 此程序提出了一种改进方法对北方苍鹰算法(NGO)进行改进
EHNGO算法具有较强的收敛速度与收敛精度,并且在不同类型测试函数均有较好结果,相信其在工程应用上也会有亮眼表现,进行测试函数仿真时AOA算法在F17测试函数上报错了,其他测试函数上就没有问题,所以我在文件夹中放了一个海鸥优化算法(SOA,2021年提出),大家可自己用SOA算法替换AOA算法,方法也很简单,把main文件中AOA都改成SOA就可以啦。最后,还是要推荐一下这款改进的,收敛曲线图上可
一种改进的北方苍鹰优化算法(EHNGO) 此程序提出了一种改进方法对北方苍鹰算法(NGO)进行改进,命名为EHNGO(Enhance NGO) 该程序改进点代码中有注释标注(共3处改进),文件夹中有一些说明文档,对新手了解NGO算法很有帮助。 特点优势: 1.效果非常好,在单峰,多峰和固定多峰上效果均显著(详情见图)。 2.有较新策略,没有采用levy飞行,柯西变异,混沌映射这种过于常见的策略。 3.对比算法具有较强竞争力,更说明EHNGO算法的有效性。 对比算法:蛇优化算法(SO)、北方苍鹰优化算法(NGO)、鲸鱼优化算法(WOA)、算术优化算法(AOA)和灰狼优化算法(GWO) 初始条件设置:最大迭代次数为500、初始种群数量均为30、独立运行次数为30(即一次运行可得到30次结果的平均收敛曲线) 衡量指标:最优值、最差值、平均值、标准差。 输出图像:测试函数波形图、算法平均收敛曲线图和算法独立运行结果的箱型图。 文档文件:北方苍鹰算法寻优原理图PPT、23种测试函数表达式PDF、北方苍鹰优化算法原文PDF EHNGO算法具有较强的收敛速度与收敛精度,并且在不同类型测试函数均有较好结果,相信其在工程应用上也会有亮眼表现,进行测试函数仿真时AOA算法在F17测试函数上报错了,其他测试函数上就没有问题,所以我在文件夹中放了一个海鸥优化算法(SOA,2021年提出),大家可自己用SOA算法替换AOA算法,方法也很简单,把main文件中AOA都改成SOA就可以啦。 最后,还是要推荐一下这款改进的,收敛曲线图上可以看出其强悍能力,即使在某几个测试函数上不是较优值,但是依然超过了其他算法,这就说明EHNGO算法很是成功。 并且提供了箱型图,可以较为直观的看出数据的波动情况,EHNGO算法数据较为集中,鲁棒性较好。 上述图均是一键运行main文件即可得到。

今天咱们来盘一盘这个优化算法圈的新晋狠人——EHNGO。江湖上流传的优化算法千千万,但能把收敛速度和稳定性同时玩出花的真不多见。这货在单峰、多峰、固定多峰三大战场通吃,连箱型图都显示出数据波动小得离谱,看来是练成了什么独门秘籍。

先看核心改进策略。原版NGO的搜索机制好比在操场上撒豆子找人,EHNGO直接给每个豆子装了GPS。第一个骚操作在种群初始化这里:
self.R = self.ub - self.lb
self.alpha = 0.5 * (np.sin(np.pi * (t / max_iter)) + 1)
这个正弦曲线控制的alpha参数贼有意思,迭代前期浪得飞起(α>1时扩大搜索范围),后期稳如老狗(α趋近0时精准打击),完美解决"探索-开发"的跷跷板难题。

第二个杀手锏藏在位置更新里:
# 改进点2: 自适应权重
w = 0.7 * (1 - np.exp(-5 * t / max_iter))
new_pos = w * best_pos + (1 - w) * (current_pos + delta)
这个指数衰减的权重设计够刁钻,前200代权重基本保持在0.6以上,疯狂向最优解靠拢,后期又不会陷在局部最优里出不来。好比赛车手过弯时精准控制油门,既敢踩又不会打滑。

最绝的是这个扰动策略:
# 改进点3: 定向扰动
if np.random.rand() < 0.2:
perturbation = 0.1 * self.R * (np.random.rand(dim) - 0.5)
candidate = best_pos * (1 + perturbation)
这可不是无脑加噪声,而是专门对着当前最优位置搞微整形。20%的触发概率配合递减的扰动幅度,既防止早熟又不破坏收敛趋势,实测在F5这类多峰函数上能把陷入局部最优的粒子强行拽出来。

跑分结果更是残暴——在30次独立运行中,EHNGO的收敛曲线基本都是贴着坐标轴底部走。特别是处理像F17这种带尖峰地形的函数时,对比算法AOA直接报错扑街,换成SOA后EHNGO依然保持两个数量级的优势。箱型图里EHNGO的方差带窄得跟筷子似的,鲁棒性这块属实拿捏了。

新手入坑可以直接冲官方给的demo,main文件一键三连出图:
- 测试函数波形图(看地形有多变态)
- 平均收敛曲线(看谁跪得最快)
- 箱型图(看谁的数据最稳)
要替换对比算法的话,记事本打开main.py把AOA改成SOA就行。不过建议先跑原配置感受下EHNGO的碾压局,毕竟看着传统算法在复杂地形里集体迷路,而EHNGO精准空降的样子还是挺治愈的。

最后说点实在的,这算法工程价值在于:
- 没有堆砌levy飞行这些老套路
- 计算开销几乎没增加
- 在CEC2017这类标准测试集上通吃
下次遇到参数优化、结构设计之类的硬骨头问题,不妨让EHNGO上去试试,说不定有惊喜。毕竟连开发者在readme里都凡尔赛地说:"收敛精度太高有时也不是好事,可能需要适当调低迭代次数..."(手动狗头)

更多推荐



所有评论(0)