当前位置: 首页 > article >正文

群体智能优化算法-算术优化算法(Arithmetic Optimization Algorithm, AOA,含Matlab源代码)

摘要

算术优化算法(Arithmetic Optimization Algorithm, AOA)是一种新颖的群体智能优化算法,灵感来源于加、减、乘、除四种基本算术运算。在优化过程中,AOA 通过乘除操作实现全局探索,通过加减操作强化局部开发,兼顾了算法的全局搜索能力和局部收敛速度。本文系统介绍了 AOA 的核心机制、数学建模,并提供完整的 MATLAB 代码,包含详细中文注释,适合用于科学研究、函数测试与工程优化等场景。

一、算法原理详解

1.1 AOA 设计思想

AOA 将群体智能算法的搜索过程类比为一组算术计算,个体的位置更新由四种算术行为控制:

  • 加法 & 减法 → 小范围微调 → 强化开发能力
  • 乘法 & 除法 → 大范围变动 → 增强探索能力

整个搜索行为在不同阶段由控制因子逐步转变为开发导向,提升全局收敛性能。

1.2 核心数学模型与公式

(1)加速函数 MOA(Modulation of Arithmetic)

用于动态调节算术行为执行概率。其数学形式为:

MOA = MOA_{\text{min}} + \frac{C_{\text{Iter}}}{M_{\text{Iter}}} \cdot (MOA_{\text{max}} - MOA_{\text{min}})

(2)概率比 MOP(Math Optimizer Probability)

用于控制乘除(探索)和加减(开发)的选择:

MOP = 1 - \left( \frac{C_{\text{Iter}}^{1/\alpha}}{M_{\text{Iter}}^{1/\alpha}} \right)

α:指数控制因子,一般取值为 5

(3)位置更新策略

探索阶段(乘除)公式:

X_{i,j}^{t+1} = \begin{cases} \frac{Best_j}{MOP + \varepsilon} \cdot \left( (UB - LB) \cdot \mu + LB \right), & \text{if } r_2 > 0.5 \\ Best_j \cdot MOP \cdot \left( (UB - LB) \cdot \mu + LB \right), & \text{otherwise} \end{cases}

开发阶段(加减)公式:

X_{i,j}^{t+1} = \begin{cases} Best_j - MOP \cdot ((UB - LB) \cdot \mu + LB), & \text{if } r_3 > 0.5 \\ Best_j + MOP \cdot ((UB - LB) \cdot \mu + LB), & \text{otherwise} \end{cases}

二、AOA 完整 MATLAB 实现

function [Best_FF,Best_P,Conv_curve]=AOA(N,M_Iter,LB,UB,Dim,F_obj)
% 算术优化算法 AOA 实现
% N         :种群大小
% M_Iter    :最大迭代次数
% LB, UB    :变量上下界
% Dim       :问题维度
% F_obj     :目标函数句柄

% 初始化最优解记录
Best_P = zeros(1,Dim);
Best_FF = inf;
Conv_curve = zeros(1,M_Iter); % 收敛曲线记录

% 初始化种群
X = initialization(N,Dim,UB,LB);
Xnew = X;

Ffun = zeros(1,N);      % 当前适应度值
Ffun_new = zeros(1,N);  % 更新适应度值

% 参数设定
MOP_Max = 1;
MOP_Min = 0.2;
Alpha = 5;      % 控制 MOP 的下降曲率
Mu = 0.499;     % 缩放系数

% 初始适应度评估
for i = 1:N
    Ffun(i) = F_obj(X(i,:));
    if Ffun(i) < Best_FF
        Best_FF = Ffun(i);
        Best_P = X(i,:);
    end
end

% 主迭代过程
for C_Iter = 1:M_Iter
    % 更新加速函数和概率因子
    MOP = 1 - ((C_Iter)^(1/Alpha) / (M_Iter)^(1/Alpha));
    MOA = MOP_Min + C_Iter*((MOP_Max - MOP_Min)/M_Iter);

    for i = 1:N
        for j = 1:Dim
            r1 = rand();
            if size(LB,2) == 1
                % 所有变量统一上下界
                base = (UB - LB)*Mu + LB;
                if r1 < MOA
                    if rand() > 0.5
                        Xnew(i,j) = Best_P(j)/(MOP+eps) * base;
                    else
                        Xnew(i,j) = Best_P(j)*MOP * base;
                    end
                else
                    if rand() > 0.5
                        Xnew(i,j) = Best_P(j) - MOP * base;
                    else
                        Xnew(i,j) = Best_P(j) + MOP * base;
                    end
                end
            else
                % 每个变量单独上下界
                base = (UB(j) - LB(j))*Mu + LB(j);
                if r1 < MOA
                    if rand() > 0.5
                        Xnew(i,j) = Best_P(j)/(MOP+eps) * base;
                    else
                        Xnew(i,j) = Best_P(j)*MOP * base;
                    end
                else
                    if rand() > 0.5
                        Xnew(i,j) = Best_P(j) - MOP * base;
                    else
                        Xnew(i,j) = Best_P(j) + MOP * base;
                    end
                end
            end
        end

        % 边界处理
        Xnew(i,:) = min(max(Xnew(i,:), LB), UB);

        % 适应度评估并更新个体
        Ffun_new(i) = F_obj(Xnew(i,:));
        if Ffun_new(i) < Ffun(i)
            X(i,:) = Xnew(i,:);
            Ffun(i) = Ffun_new(i);
        end

        % 更新全局最优
        if Ffun(i) < Best_FF
            Best_FF = Ffun(i);
            Best_P = X(i,:);
        end
    end

    % 记录收敛曲线
    Conv_curve(C_Iter) = Best_FF;
end
end

%% 初始化函数
function X = initialization(N,Dim,UB,LB)
B_no = size(UB,2);
if B_no == 1
    X = rand(N,Dim).*(UB-LB)+LB;
else
    for i = 1:Dim
        X(:,i) = rand(N,1).*(UB(i)-LB(i))+LB(i);
    end
end
end

三、总结

算术优化算法(AOA)以基本的加、减、乘、除行为为核心设计灵感,通过引入概率控制函数(MOP)与加速调节因子(MOA),实现了从全局搜索到局部收敛的自然过渡。相比传统元启发式方法,AOA 结构简洁、易于实现且具有优越的全局优化能力,非常适合函数测试、工程建模和科学研究中的参数优化任务。本文详细阐述了其工作机制、数学模型及 MATLAB 实现,适合用于学术论文实验支撑、优化算法框架扩展等应用。


http://www.kler.cn/a/614377.html

相关文章:

  • EXCEL报错:无法共享此工作薄,因表包含excel表或xml映射的解决方法
  • JavaScript使用
  • 萝卜快跑“出海”中东,助力阿布扎比打造超大规模无人车队
  • Unity编辑器功能及拓展(2) —Gizmos编辑器绘制功能
  • Java 集合中ArrayList与LinkedList的性能比较
  • Windows 下 Rust 快速安装指南
  • macOS (M1 Pro) 上 Docker Desktop 安装失败问题及其解决方案
  • Linux内核同步机制:解锁并发编程的奥秘
  • OMNIWeb 数据介绍
  • 使用独立服务器的最佳方式指南
  • JAVA反序列化深入学习(八):CommonsCollections6
  • 嵌入式系统安全架构白皮书
  • 虚拟电商-话费充值业务(二)话费充值对接供应商模块开发
  • 如何在ms-swift 微调训练deepseekvl2时使用sageattention
  • Solidity 番外篇 | 最新 EIP 动态、Solidity 版本变化、Web3 职业路径全览
  • 火语言RPA--生成随机/格式化字符串或数字
  • ros2--功能包
  • QT图片轮播器实现方法二(QT实操2)
  • Linux-Centos离线环境安装python3
  • DHCP报文的详细流程