文章目录
- 【`获取资源`请见文章第5节:资源获取】
- 1. 原始HMO算法
- 2. 改进HMO算法
- 2.1 改进的距离减小因子
- 2.2 黄金正弦策略扰动
- 3. 部分代码展示
- 4. 仿真结果展示
- 5. 资源获取说明
【获取资源
请见文章第5节:资源获取】
1. 原始HMO算法
同核分子优化算法(Homonuclear Molecules Optimization,HMO)是一种新的元启发式算法,用于优化复杂和非线性问题。根据玻尔原子模型和同核分子的结构,HMO的灵感来自于原子周围电子的排列。该算法基于在给定量子数的搜索空间中创建一组原子的初始种群以及与每个原子(搜索代理)相关联的电子。在每次迭代中,选择每个原子的最佳电子作为原子核的新位置,多个原子向具有最佳解的原子移动,形成同核分子。总体而言,HMO优于一些常见的经典算法,比如GA和PSO,可以与新的高效算法(如EO)竞争。HMO算法于2022年发表。
2. 改进HMO算法
2.1 改进的距离减小因子
首先设计一个其他原子核与最佳原子核距离参数
d
t
d_{t}
dt,数学模型为:
γ
1
γ_{1}
γ1即为改进后的距离减小因子
2.2 黄金正弦策略扰动
黄金正弦算法通过组合正弦函数和黄金比例的方法进行迭代搜索,以接近最优解。黄金正弦作用时,搜索空间逐渐变窄,并在可能达到最优解的区域进行搜索,以提高收敛效率。黄金正弦的参考公式如下:
3. 部分代码展示
%% 清空环境变量
clear;clc;close all
SearchAgents_no=30; % 种群数量
Function_name='F1'; % 标准测试函数编号(F1~F23)
Max_iteration=500; % 最大迭代次数
% 获取目标函数对应参数
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
% 寻优
[Best_score_HMO,Best_pos_HMO,cg_curve_HMO]=HMO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
[Best_score_IHMO,Best_pos_IHMO,cg_curve_IHMO]=IHMO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
figure('Position',[500 500 660 290])
% 绘制搜索空间
subplot(1,2,1);
func_plot(Function_name);
title('Test function')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
grid off
% 绘制收敛曲线
subplot(1,2,2);
semilogy(cg_curve_HMO,'LineWidth',2,'Color','b')
hold on
semilogy(cg_curve_IHMO,'LineWidth',2,'Color','r')
title('Convergence curve')
xlabel('Iteration');
ylabel('Best score obtained so far');
axis tight
grid off
box on
legend('HMO','IHMO')
display(['The best optimal value of the objective funciton found by HMO is : ', num2str(Best_score_HMO)]);
display(['The best optimal value of the objective funciton found by IHMO is : ', num2str(Best_score_IHMO)]);
4. 仿真结果展示
5. 资源获取说明
可以获取完整代码资源。👇👇👇👀 名片