• 阿基米德优化算法AOA附Matlab代码


    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

    🍎个人主页:Matlab科研工作室

    🍊个人信条:格物致知。

    更多Matlab仿真内容点击👇

    智能优化算法  神经网络预测 雷达通信  无线传感器

    信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

    ⛄ 内容介绍

    受到阿基米德定理的启发,Hashim等[17]于2020年提出了阿基米德优化算法(ArchimedesOptimizationAlgorithm,AOA)。与其他基于种群的优化算法类似,AOA将流体中的物体视为种群,其中个体通过不断调节自身的密度和体积,从而使得整个种群达到平衡状态,此过程被视为AOA的寻优过程。相对于其他算法,阿基米德优化算法局部搜索能力极强,寻优精度高。

    阿基米德优化算法(AOA)是一种基于种群的优化算法,其设计灵感来自于阿基米德定理。该原理指出,当物体完全或部分浸入流体中时,液体给物体施加的浮力大小与排出

    液体的质量(体积)大小成正比。若物体受到的浮力等于排出液体质量时,则视该物体处于平衡状态。在AOA中,种群是浸透在液体中的物体,个体通过调整自身的密度(p)、体积(v)和加速度(a),使得自身达到平衡状态。根据浸透在液体中的物体是否发生碰撞,AOA将其分为全局探索和局部搜索阶段。若未发生碰撞,则算法进入全局

    探索阶段;否则进入局部开发阶段。设置迁移算子(TF),用于两个阶段的切换,其定义如下:其中,ttmax分别表示当前迭代次数和最大迭代次数。若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.

    ❤️ 关注我领取海量matlab电子书和数学建模资料

    ❤️部分理论引用网络文献,若有侵权联系博主删除

  • 相关阅读:
    basic_vsr 代码介绍
    离子液体[EMIm][PF6],[HMIm][PF6],[C14MIm][PF6]修饰纳米Fe3O4,TiO2和SiO2(离子液体修饰物)
    机器人制作开源方案 | 扫地机器人
    C#流程控制————分支结构
    JAVA经典面试题附答案(持续更新版)
    Go语言开发k8s-05-ConfigMap操作
    moviepy处理视频帧和遍历的方式处理视频帧速度对比。
    Redis内存淘汰策略
    vue+elementui 多级多选穿梭框(常用于省市区三级联动)
    使用ffmpeg和sdl播放视频实现时钟同步
  • 原文地址:https://blog.csdn.net/qq_59747472/article/details/127752447