摘要
算術優化算法(Arithmetic Optimization Algorithm, AOA)是一種新穎的群體智能優化算法,靈感來源于加、減、乘、除四種基本算術運算。在優化過程中,AOA 通過乘除操作實現全局探索,通過加減操作強化局部開發,兼顧了算法的全局搜索能力和局部收斂速度。本文系統介紹了 AOA 的核心機制、數學建模,并提供完整的 MATLAB 代碼,包含詳細中文注釋,適合用于科學研究、函數測試與工程優化等場景。
一、算法原理詳解
1.1 AOA 設計思想
AOA 將群體智能算法的搜索過程類比為一組算術計算,個體的位置更新由四種算術行為控制:
- 加法 & 減法 → 小范圍微調 → 強化開發能力
- 乘法 & 除法 → 大范圍變動 → 增強探索能力
整個搜索行為在不同階段由控制因子逐步轉變為開發導向,提升全局收斂性能。
1.2 核心數學模型與公式
(1)加速函數 MOA(Modulation of Arithmetic)
用于動態調節算術行為執行概率。其數學形式為:
(2)概率比 MOP(Math Optimizer Probability)
用于控制乘除(探索)和加減(開發)的選擇:
α:指數控制因子,一般取值為 5
(3)位置更新策略
探索階段(乘除)公式:
開發階段(加減)公式:
二、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:NFfun(i) = F_obj(X(i,:));if Ffun(i) < Best_FFBest_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:Nfor j = 1:Dimr1 = rand();if size(LB,2) == 1% 所有變量統一上下界base = (UB - LB)*Mu + LB;if r1 < MOAif rand() > 0.5Xnew(i,j) = Best_P(j)/(MOP+eps) * base;elseXnew(i,j) = Best_P(j)*MOP * base;endelseif rand() > 0.5Xnew(i,j) = Best_P(j) - MOP * base;elseXnew(i,j) = Best_P(j) + MOP * base;endendelse% 每個變量單獨上下界base = (UB(j) - LB(j))*Mu + LB(j);if r1 < MOAif rand() > 0.5Xnew(i,j) = Best_P(j)/(MOP+eps) * base;elseXnew(i,j) = Best_P(j)*MOP * base;endelseif rand() > 0.5Xnew(i,j) = Best_P(j) - MOP * base;elseXnew(i,j) = Best_P(j) + MOP * base;endendendend% 邊界處理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_FFBest_FF = Ffun(i);Best_P = X(i,:);endend% 記錄收斂曲線Conv_curve(C_Iter) = Best_FF;
end
end%% 初始化函數
function X = initialization(N,Dim,UB,LB)
B_no = size(UB,2);
if B_no == 1X = rand(N,Dim).*(UB-LB)+LB;
elsefor i = 1:DimX(:,i) = rand(N,1).*(UB(i)-LB(i))+LB(i);end
end
end
三、總結
算術優化算法(AOA)以基本的加、減、乘、除行為為核心設計靈感,通過引入概率控制函數(MOP)與加速調節因子(MOA),實現了從全局搜索到局部收斂的自然過渡。相比傳統元啟發式方法,AOA 結構簡潔、易于實現且具有優越的全局優化能力,非常適合函數測試、工程建模和科學研究中的參數優化任務。本文詳細闡述了其工作機制、數學模型及 MATLAB 實現,適合用于學術論文實驗支撐、優化算法框架擴展等應用。