河马优化算法(Hippopotamus optimization algorithm,HO)是2024年提出的一种新型启发式算法,目前还是一种很新的算法,很少有人引用,所以有很大的改进空间,使用一些改进策略再结合其他研究领域,比如故障诊断、时序预测等方向,也是一个不错的创新点。
目录
算法简述
HO是从河马生活中观察到的三种突出的行为模式中获得的灵感。河马群由几只雌性河马、河马幼崽、多只成年雄性河马和一只占统治地位的雄性河马(兽群的领袖)组成。由于它们天生的好奇心,幼河马和幼河马经常表现出离开群体的倾向。因此,它们可能会被孤立,成为捕食者的目标。河马的第二种行为模式本质上是防御性的,当它们受到捕食者的攻击或其他生物侵入它们的领地时,就会被触发。河马表现出一种防御反应,它们将自己旋转向捕食者,并利用它们强大的下颚和发声来阻止和击退攻击者。狮子和斑点鬣狗等捕食者意识到这一现象,并积极寻求避免直接接触河马强大的下颚,作为一种预防措施,防止潜在的伤害。最后一种行为模式包含了河马的本能反应,即逃离捕食者并积极寻求与潜在危险区域保持距离。在这种情况下,河马努力向最近的水域航行,比如河流或池塘,就像狮子和斑点鬣狗经常表现出对进入水生环境的厌恶一样。下图为HO的伪代码和流程图。
获取代码
完整Python代码:请私信
def main():
Fun_name = 'F1' # 目标函数
SearchAgents = 30 # 种群数量
Max_iterations = 500 # 迭代次数
lowerbound, upperbound, dimension, fitness = fun_info(Fun_name)
# 调用HO
Best_score, Best_pos, HO_curve = HO(SearchAgents, Max_iterations, lowerbound, upperbound, dimension, fitness)
print(f'The best solution obtained by HO for {Fun_name} is : {Best_pos}')
print(f'The best optimal value of the objective function found by HO for {Fun_name} is : {Best_score}')
plt.figure()
plt.plot(HO_curve, color='red', linewidth=2)
plt.xlabel('Iteration')
plt.ylabel('Fitness')
plt.box(True)
plt.legend(['HO'])
plt.show()
if __name__ == "__main__":
main()
Matlab (点击蓝色字体即可跳转链接)
clc
clear
close all
Fun_name='F1'; % number of test functions: 'F1' to 'F23'
SearchAgents=30; % number of Hippopotamus (population members)
Max_iterations=500; % maximum number of iteration
[lowerbound,upperbound,dimension,fitness]=fun_info(Fun_name); % Object function
[Best_score,Best_pos,HO_curve]=HO(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness);
display(['The best solution obtained by HO for ' [num2str(Fun_name)],' is : ', num2str(Best_pos)]);
display(['The best optimal value of the objective funciton found by HO for ' [num2str(Fun_name)],' is : ', num2str(Best_score)]);
figure=gcf;
semilogy(HO_curve,'Color','#b28d90','LineWidth',2)
xlabel('Iteration');
ylabel('Best score obtained so far');
box on
set(findall(figure,'-property','FontName'),'FontName','Times New Roman')
legend('HO')
参考文献
Amiri, M.H., Mehrabi Hashjin, N., Montazeri, M. et al. Hippopotamus optimization algorithm: a novel nature-inspired optimization algorithm. Sci Rep 14, 5032 (2024). https://doi.org/10.1038/s41598-024-54910-3