✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
受到阿基米德定理的启发,Hashim等[17]于2020年提出了阿基米德优化算法(ArchimedesOptimizationAlgorithm,AOA)。与其他基于种群的优化算法类似,AOA将流体中的物体视为种群,其中个体通过不断调节自身的密度和体积,从而使得整个种群达到平衡状态,此过程被视为AOA的寻优过程。相对于其他算法,阿基米德优化算法局部搜索能力极强,寻优精度高。
阿基米德优化算法(AOA)是一种基于种群的优化算法,其设计灵感来自于阿基米德定理。该原理指出,当物体完全或部分浸入流体中时,液体给物体施加的浮力大小与排出
液体的质量(体积)大小成正比。若物体受到的浮力等于排出液体质量时,则视该物体处于平衡状态。在AOA中,种群是浸透在液体中的物体,个体通过调整自身的密度(p)、体积(v)和加速度(a),使得自身达到平衡状态。根据浸透在液体中的物体是否发生碰撞,AOA将其分为全局探索和局部搜索阶段。若未发生碰撞,则算法进入全局
探索阶段;否则进入局部开发阶段。设置迁移算子(TF),用于两个阶段的切换,其定义如下:其中,t和tmax分别表示当前迭代次数和最大迭代次数。若TF≤0.5,AOA则进入全局探索阶段;否则进入局部开发阶段。
在初始化阶段,AOA会随机初始化每个对象的体积(vol)、密度(den)、加速度(acc)。在此过程中,AOA将评估初始种群,选取当前最优个体(xbest)、最优个体的密度(denbest)、体积(volbest)、加速度(accbest),用于其他个体密度、体积和加速度的更新。
⛄ 部分代码
clear all
clc
Solution_no=20; %Number of search solutions
F_name='F2'; %Name of the test function F1-f23
M_Iter=500; %Maximum number of iterations
[LB,UB,Dim,F_obj]=Get_F(F_name); %Give details of the underlying benchmark function
[Best_FF,Best_P,Conv_curve]=AOA(Solution_no,M_Iter,LB,UB,Dim,F_obj); % Call the AOA
figure('Position',[454 445 694 297]);
subplot(1,2,1);
func_plot(F_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([F_name,'( x_1 , x_2 )'])
subplot(1,2,2);
semilogy(Conv_curve,'Color','r','LineWidth',2)
title('Convergence curve')
xlabel('Iteration#');
ylabel('Best fitness function');
axis tight
legend('AOA')
display(['The best-obtained solution by Math Optimizer is : ', num2str(Best_P)]);
display(['The best optimal value of the objective funciton found by Math Optimizer is : ', num2str(Best_FF)]);
⛄ 运行结果
⛄ 参考文献
[1]罗仕杭, 何庆. 多策略协同改进的阿基米德优化算法及其应用[J]. 计算机应用研究, 2022, 39(5):9.