近年來,現實世界的優化問題變得越來越復雜,挑戰了傳統確定性方法的有效性。本文介紹了基于狀態的優化(SBO),這是一種受人類對地位提升的渴望啟發的高效算法。通過模擬個人如何接近、學習或從高地位人物那里獲得資源,SBO將這些社會模式轉化為一種強大的方法,以挑戰優化任務。2025年在線發表在JCR 1區,中科院2區 SCI計算機類期刊 Neurocomputing 。
3. 提出的基于地位的優化
本文重點介紹了SBO算法的暴露,詳細說明了其數學建模和計算復雜性。
3.1. SBO靈感
SBO算法模擬了人類攀登社會階梯的基本驅動力——一種植根于我們自我提升需求的行為[43]。這種雄心壯志反映了優化的核心目標:迭代改進。像人們通過與成功的同伴聯系獲得優勢一樣[44],SBO代理從表現良好的解決方案中學習以提高搜索效率。
認知科學和行為經濟學的研究證實,從高地位個體中學習可以提高復雜場景中的問題解決能力。SBO將此轉化為計算術語,創建了一種集體智能,其中:
- 代理共享知識(類似于人類網絡)
- 多樣化策略自然出現
- 系統平衡探索和開發
簡而言之,我們可以這樣說SBO的工作方式:
-
精英參與(探索):
- 代理跟隨表現最好的個體以發現有前景的區域
- 類似于在社會等級中尋找導師
-
資源階段(開發)
- 采集:從精英中收集信息
- 評估:像專業人士一樣改進解決方案以提高技能
幾種受人類地位驅動的社會行為和教育互動啟發的優化算法已經成功解決了復雜問題。基于人類行為的優化(HBBO)算法[45]模擬了合作、競爭、模仿和社會學習的集體人類行為。HBBO通過模仿、創新和協作等機制平衡社會學習與個體創造力,使其適用于動態或多目標問題。
同樣,教育競爭優化器(ECO)[46]模擬了競爭學習環境,其中解決方案競爭并從表現最好的個體中學習,由最佳解決方案指導,類似于教師。這種方法促進了快速收斂和適應性,在受限優化場景中展示了其效率,例如學術性能建模和博弈論。
通過正式化地位尋求行為,SBO優于前身:
- 平衡全局/局部搜索
- 減少手動參數調整
- 擴展到高維問題
3.2. SBO的數學建模
從人類地位尋求行為中汲取靈感,SBO算法將優化框架為個人和社會發展過程。它首先生成兩個不同的代理種群——代表來自不同社會背景的個體——然后通過模擬社會精英指導的過程來發展他們。
關鍵階段如下:
- 精英追求:代理識別并轉向表現良好的解決方案(“導師”)
- 資源采集:他們獲得有價值的信息(社會資本)
- 策略整合:代理批判性地評估并僅采用最有益的改進
這反映了人們如何:
- 通過向成功的同伴學習在社會上進步
- 選擇性地采用增強他們地位的行為
- 通過積累優勢系統地攀登等級
算法通過整合這些改進來提供最優解——數學上表示地位成就的頂峰。(后續部分將詳細介紹完整的數學細節。)
3.2.1. 初始化
初始化階段為SBO算法奠定了基礎,通過生成兩個種群 X 1 X^1 X1和 X 2 X^2 X2。在此模型中,每個索引 i i i對應一個獨特的家庭,其中 X 1 X^1 X1和 X 2 X^2 X2中的相同索引的個體代表具有不同知識水平和社會地位的家庭成員。這種雙種群設計確保每個家庭至少由兩個個體表示,從而捕獲家族內多樣性并使算法迭代時精英成員動態更新。
[ x 1 x 2 ? x N ] N × D = [ x 1 , 1 x 1 , j ? x 1 , N x i , 1 x i , j ? x i , D x N , 1 x N , j ? x N , D ] N × D (1) \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_N \end{bmatrix}_{N \times D} = \begin{bmatrix} x_{1,1} & x_{1,j} & \cdots & x_{1,N} \\ x_{i,1} & x_{i,j} & \cdots & x_{i,D} \\ x_{N,1} & x_{N,j} & \cdots & x_{N,D} \end{bmatrix}_{N \times D} \tag{1} ?x1?x2??xN?? ?N×D?= ?x1,1?xi,1?xN,1??x1,j?xi,j?xN,j??????x1,N?xi,D?xN,D?? ?N×D?(1)
每個個體的狀態由公式(2)定義:
x i , j = U ( b j , u b ) (2) x_{i,j} = U(b_j, \quad u_b) \tag{2} xi,j?=U(bj?,ub?)(2)
其中 x i , j x_{i,j} xi,j?是第 i i i個個體的第 j j j個決策變量, D D D是決策變量的數量, b j b_j bj?和 u b u_b ub?分別是下界和上界。這種統一初始化在 N × D N \times D N×D矩陣中為兩個種群建立了問題的多維特性,并確保了多樣化的起點。
在初始化之后,選擇過程為每個家庭的精英種群 X ? X^* X?識別精英成員。具體來說,對于第 i i i個家庭:
x i e = { x i 1 if? f o b j ( x i 1 ) < f o b j ( x i 2 ) x i 2 otherwise (3) x_i^e = \begin{cases} x_i^1 & \text{if } fobj(x_i^1) < fobj(x_i^2) \\ x_i^2 & \text{otherwise} \end{cases} \tag{3} xie?={xi1?xi2??if?fobj(xi1?)<fobj(xi2?)otherwise?(3)
其中 f o b j ( ? ) fobj(\cdot) fobj(?)是目標函數。
x i new = { x i + K f [ ( x i ? 1 ? x i + 1 ) + ( x r ? x i ) ] if? f ( x i ) > f ( x r ) x i otherwise (4) x_i^{\text{new}} = \begin{cases} x_i + K_f \left[ (x_{i-1} - x_{i+1}) + (x_r - x_i) \right] & \text{if } f(x_i) > f(x_r) \\ x_i & \text{otherwise} \end{cases} \tag{4} xinew?={xi?+Kf?[(xi?1??xi+1?)+(xr??xi?)]xi??if?f(xi?)>f(xr?)otherwise?(4)
這種雙種群方法不僅僅是在每個組中找到表現最好的個體——它反映了現實世界的社交流動性,其中進步取決于個人優點和戰略聯系。普通個體 x i x_i xi?與其精英對應物 x i e x_i^e xie?之間的互動模擬了現實世界中的地位導向社交網絡,說明了精英如何促進進步和在家庭內部及跨家庭單位的知識共享。
3.2.2. 精英參與
在精英參與階段,SBO算法復制了人類社會結構的復雜動態,以增強對最優解的搜索。此階段模擬了尋求高地位導師指導的個體——算法中的精英代理——以加快他們的進步。與孤立的家庭框架不同,這種進展通過建立不同社會單位之間的聯系,創建了更具適應性和魯棒性的搜索空間。
為了模擬這種行為,SBO算法使用輪盤賭選擇方法[47]從種群中選擇個體。此子集代表種群中不同家庭中最成功的成員。這種子集選擇過程確保個體不僅僅依賴于單一的主導同伴,而是考慮多個有影響力的代理,反映了人類網絡不可預測但戰略性的本質。
選定的個體,表示為 x i e x_i^e xie?,以及種群中的最佳個體 x a x_a xa?,共同定義了一個高地位圈——一個在解決方案空間中具有象征意義但計算上重要的區域,代理旨在融入其中。這種動態表示的社會流動性確保個體系統地過渡到搜索空間中更有希望的區域。
為了數學上闡明這種行為,公式(4)和圖2描述了個體 x i x_i xi?在高地位圈內的生成。這個高地位圈代表了一個自適應區域,其中個體導航到更好的解決方案,平衡了結構化進展和探索性隨機性。個體的運動由以下公式控制:
x i = { ( 1 ? w 1 ? w 2 ) × x i + w 1 × x a + w 2 × z b if?rand < w 3 w 4 × ( ( 1 ? w 1 ? w 2 ) × x i + w 1 × x a e + w 2 × z b ) otherwise (4) x_i = \begin{cases} (1 - w_1 - w_2) \times x_i + w_1 \times x_a + w_2 \times z_b & \text{if } \text{rand} < w_3 \\ w_4 \times ((1 - w_1 - w_2) \times x_i + w_1 \times x_a^e + w_2 \times z_b) & \text{otherwise} \end{cases} \tag{4} xi?={(1?w1??w2?)×xi?+w1?×xa?+w2?×zb?w4?×((1?w1??w2?)×xi?+w1?×xae?+w2?×zb?)?if?rand<w3?otherwise?(4)
其中 x i x_i xi?表示種群中的第 i i i個個體, x a e x_a^e xae?表示通過 X e X^e Xe種群的輪盤賭方法選擇的下一個時間步的精英個體, z b z_b zb?是迄今為止找到的最佳個體。公式(4)中的運動策略確保個體受到其自身位置、表現良好的同伴和最佳已知解決方案的影響。
x i , j e = x i , j e , if? m j = 1 (5) x_{i,j}^e = x_{i,j}^e, \quad \text{if } m_j = 1 \tag{5} xi,je?=xi,je?,if?mj?=1(5)
其中行向量 m m m最初為零,并在社交互動之前更新為:
m ( ( 1 : c e i l ( rand × D ) ) ) = 1 (6) m((1:ceil(\text{rand} \times D))) = 1 \tag{6} m((1:ceil(rand×D)))=1(6)
其中 u = randperm ( D ) u = \text{randperm}(D) u=randperm(D)提供對決策變量索引的隨機排列。
如圖3所示,此階段將種群引導至解決方案空間中更有希望的區域,以最大化探索。
圖3(a):成功個體通過使用高地位代理的資源來改進其位置。
圖3(b):掙扎的個體通過使用資源來自我改進。
圖2. SBO的精英參與階段。
參數 w 1 w_1 w1?和 w 2 w_2 w2?使用 randn \text{randn} randn生成,提供正態分布的隨機性以加權 x i x_i xi?、 x a e x_a^e xae?和 z b z_b zb?的貢獻。這些值引入了隨機性,同時確保運動保持在邏輯范圍內,促進了受控且多樣化的搜索。
相比之下, w 3 w_3 w3?和 w 4 w_4 w4?是設計參數,動態調整高地位圈對探索和開發的影響。 w 3 w_3 w3?的計算如下:
w 3 = tanh ? ( ( MaxFEs ? randn × FEs i ) FEs MaxFEs ) (7) w_3 = \tanh \left( \left( \frac{\sqrt{\text{MaxFEs} - \text{randn} \times \text{FEs}}}{i} \right)^{\frac{\text{FEs}}{\text{MaxFEs}}} \right) \tag{7} w3?=tanh ?(iMaxFEs?randn×FEs??)MaxFEsFEs? ?(7)
其中 MaxFEs \text{MaxFEs} MaxFEs表示函數評估的最大數量, FEs \text{FEs} FEs是當前評估數量, i i i是個體的索引。這種公式允許 w 3 w_3 w3?根據優化進展進行調整,決定是否應用標準更新規則或更隨機的搜索模式。
如果 rand ≥ w 3 \text{rand} \geq w_3 rand≥w3?,則使用公式(4)中的第二個公式,其中 w 2 w_2 w2?作為縮放因子,生成在 [ ? w 3 , w 3 ] [-w_3, w_3] [?w3?,w3?]之間的均勻分布隨機數。這種機制增加了探索多樣性,通過啟用步進大小調整,特別是在逃避局部最優時。
w 4 = uni_frmd ( ? w 3 , w 3 ) (8) w_4 = \text{uni\_frmd}(-w_3, \quad w_3) \tag{8} w4?=uni_frmd(?w3?,w3?)(8)
通過整合這些組件,SBO算法模擬了現實世界的決策——個體在戰略性地探索非常規路徑以優化結果的同時,追求成功的同伴。公式(4)中的戰略計算了高地位圈內的最佳位置,反映了個體如何獲得有影響力的網絡以獲得更好的前景。通過進化計算,代理逐漸改進,向搜索空間中更有希望的區域移動。
相比之下,第二個公式引入了一個隨機縮放因子,范圍從 [ ? w 3 , w 3 ] [-w_3, w_3] [?w3?,w3?],允許算法探索超出直接有希望區域的區域。這種特征防止了過早收斂,同時使SBO能夠發現未探索區域中潛在優越的解決方案。這種平衡反映了人類決策。人們有時會偏離既定路徑,無論是通過職業變化還是創新冒險,以找到傳統方法錯過的機會。
通過結合結構化學習和探索靈活性,SBO在探索和開發之間實現了最佳平衡。這使算法能夠有效地適應復雜的優化景觀。由此產生的方法是提高解決方案質量,同時在多樣化問題中保持魯棒性,證明了SBO在高性能計算中的能力。
3.2.3. 資源采集
資源采集階段對于從探索過渡到開發至關重要,通過獲取和利用有價值的見解——類似于人類網絡中的社會資本。在此階段,在 X X X種群中的所有個體中創建一個標志向量,最初設置為1以表示初步的地位相關成功。此標志在資源評估階段更新,作為個體地位改進的動態指標。
資源采集機制根據地位相關成功而變化。對于社會上成功的個體,資源通過從同一家庭單元中的精英個體和種群中的整體最佳個體平均輸入來選擇性地獲取。這種資源更新如下:
x i , j e = x i , j e + x a , j e + x b , j e 2 (9) x_{i,j}^e = x_{i,j}^e + \frac{x_{a,j}^e + x_{b,j}^e}{2} \tag{9} xi,je?=xi,je?+2xa,je?+xb,je??(9)
其中 i , j = randi ( D ) i,j = \text{randi}(D) i,j=randi(D)對于 i , d = 1 , 2 , 3 , . . . , D i,d = 1,2,3,...,D i,d=1,2,3,...,D,反映了家庭和外部精英影響的融合。
x i , j e = x i , j e , if? m j = 1 (10) x_{i,j}^e = x_{i,j}^e, \quad \text{if } m_j = 1 \tag{10} xi,je?=xi,je?,if?mj?=1(10)
其中行向量 m m m最初為零,并在社交互動之前更新為:
m ( ( 1 : c e i l ( rand × D ) ) ) = 1 (11) m((1:ceil(\text{rand} \times D))) = 1 \tag{11} m((1:ceil(rand×D)))=1(11)
其中 u = randperm ( D ) u = \text{randperm}(D) u=randperm(D)提供對決策變量索引的隨機排列。
如圖3所示,此階段將種群引導至解決方案空間中更有希望的區域,以最大化探索。
圖3(a):成功個體通過使用高地位代理的資源來改進其位置。
圖3(b):掙扎的個體通過使用資源來自我改進。
3.2.4. 資源評估
在資源評估階段,算法評估所獲得的資源是否增強了個體的適應度。使用之前建立的標志向量,它跟蹤進展:
- 1 = 適應度改進(成功)
- 0 = 無改進(失敗)
實際上,如果更新后的個體 x i e x_i^e xie?的目標函數值優于原始 x i x_i xi?,則保留新狀態:
x i = x i e if? f o b j ( x i e ) < f o b j ( x i ) (10) x_i = x_i^e \quad \text{if } fobj(x_i^e) < fobj(x_i) \tag{10} xi?=xie?if?fobj(xie?)<fobj(xi?)(10)
同時,標志向量刷新如下:
flag i = { 1 if? f o b j ( x i e ) < f o b j ( x i ) 0 otherwise (11) \text{flag}_i = \begin{cases} 1 & \text{if } fobj(x_i^e) < fobj(x_i) \\ 0 & \text{otherwise} \end{cases} \tag{11} flagi?={10?if?fobj(xie?)<fobj(xi?)otherwise?(11)
表現無改進的個體保持當前位置,而成功的個體則轉移到更優越的位置。這種選擇性過程反映了現實世界的社交進步,其中只有有價值的資源,那些明顯提高代理地位的資源,才會被保留。這種改進逐步引導搜索朝著最優解的方向發展。
3.2.5. 整合
當滿足終止標準時,整合階段激活,無論是在達到最大函數評估次數或實現足夠優化的解決方案(通過增強指標驗證)。在此之前,算法通過其核心階段反復循環:
- 精英參與
- 資源采集
- 資源評估
每個階段模擬地位驅動的互動,逐步改進解決方案。
實現細節:
- 算法1提供了偽代碼。
- 圖4顯示了工作流程。
圖4顯示了SBO的工作流程。
在整合期間,算法:
- 編譯并評估結果是否符合目標
- 生成一個體現基于地位的啟發式的最終解決方案
- 確保高效的資源使用和詳細的文檔記錄用于分析/應用
3.3 完整代碼
% 📜 Status-based Optimization (SBO) source codes (version 1.0)
% 🌐 Website and codes of SBO: The Status-based Optimization: Algorithm and comprehensive performance analysis:% 🔗 https://aliasgharheidari.com/SBO.html% 👥 Jian Wang, Yi Chen, Ali Asghar Heidari, Zongda Wu, Huiling Chen% 📅 Last update: 06 10 2025% 📧 E-Mail: jona.wzu@gmail.com, aliasghar68@gmail.com, chenhuiling.jlu@gmail.com% 📜 After use of code, please users cite the main paper on SBO:
% The Status-based Optimization: Algorithm and comprehensive performance analysis
% Jian Wang, Yi Chen, Ali Asghar Heidari, Zongda Wu, Huiling Chen
% Neurocomputing, 2025%----------------------------------------------------------------------------------------------------------------------------------------------------%
% 📊 You can use and compare with other optimization methods developed recently:
% - (SBO) 2025: 🔗 https://aliasgharheidari.com/SBO.html
% - (ESC) 2024: 🔗 https://aliasgharheidari.com/ESC.html
% - (MGO) 2024: 🔗 https://aliasgharheidari.com/MGO.html
% - (PLO) 2024: 🔗 https://aliasgharheidari.com/PLO.html
% - (FATA) 2024: 🔗 https://aliasgharheidari.com/FATA.html
% - (ECO) 2024: 🔗 https://aliasgharheidari.com/ECO.html
% - (AO) 2024: 🔗 https://aliasgharheidari.com/AO.html
% - (PO) 2024: 🔗 https://aliasgharheidari.com/PO.html
% - (RIME) 2023: 🔗 https://aliasgharheidari.com/RIME.html
% - (INFO) 2022: 🔗 https://aliasgharheidari.com/INFO.html
% - (RUN) 2021: 🔗 https://aliasgharheidari.com/RUN.html
% - (HGS) 2021: 🔗 https://aliasgharheidari.com/HGS.html
% - (SMA) 2020: 🔗 https://aliasgharheidari.com/SMA.html
% - (HHO) 2019: 🔗 https://aliasgharheidari.com/HHO.html
%----------------------------------------------------------------------------------------------------------------------------------------------------%function [bestFitness, best_pos, Convergence_curve] = SBO(N, MaxFEs, lb, ub, dim, fobj)%% INITIALIZATIONFEs = 0;bestFitness = inf; % Change to -inf for maximization problemsbest_pos = zeros(1, dim);Convergence_curve = [];iter = 1;% Initialize populationscurrent_X = initialization(N, dim, ub, lb);localElite_X = initialization(N, dim, ub, lb);% Initialize fitness valuescurrent_Fitness = inf * ones(N, 1);localElite_Fitness = inf * ones(N, 1);% Calculate initial fitness and determine initial best solutions (local and global)for i = 1:Ncurrent_Fitness(i, 1) = fobj(current_X(i, :));FEs = FEs + 1;temp_localElite_Fitness = fobj(localElite_X(i ,:));FEs = FEs + 1;% Determine the initial local eliteif current_Fitness(i, 1) < temp_localElite_FitnesslocalElite_X(i, :) = current_X(i, :);localElite_Fitness(i, 1) = current_Fitness(i, 1);elselocalElite_Fitness(i, 1) = temp_localElite_Fitness;end% Update the initial global bestif localElite_Fitness(i, 1) < bestFitnessbestFitness = localElite_Fitness(i, 1);best_pos = localElite_X(i, :);endend%% Sort the local elite fitness for the first Roulette Wheel Selection[sorted_localElite_Fitness, ~] = sort(localElite_Fitness);%% Social success flag and social fitness initializationflag = ones(N, 1);social_Fitness = inf * ones(N, 1);%% MAIN LOOPwhile FEs < MaxFEs%% Select an individual from the localElite population based on Roulette selectionRoulette_index = RouletteWheelSelection(1./(sorted_localElite_Fitness + eps));if Roulette_index == -1 Roulette_index = 1; % Default to the best if selection failsend%% Update the current populationfor i = 1:Nw1 = randn;w2 = randn;w3 = tanh((sqrt(abs(MaxFEs - randn * FEs))/i)^(FEs/MaxFEs));w4 = unifrnd(-w3, w3);if rand < w3for j = 1:dimcurrent_X(i, j) = (1 - w1 - w2) * current_X(i, j) + w1 * localElite_X(Roulette_index, j) + w2 * best_pos(j);endelsefor j = 1:dimcurrent_X(i, j) = w4 * ((1 - w1 - w2) * current_X(i, j) + w1 * localElite_X(Roulette_index, j) + w2 * best_pos(j));endendend%% Boundary controlcurrent_X = BoundaryControl(current_X, lb, ub);%% Upward social strategysocial_X = current_X;% One-dimension source exchange for socially successful individualsfor i = 1:Nif flag(i) == 1social_X1_val = localElite_X(i, randi(dim));social_X2_val = best_pos(randi(dim));social_X(i, randi(dim)) = (social_X1_val + social_X2_val) / 2;endend% Multi-dimension source exchange for socially failed individualsm = zeros(1, dim);u = randperm(dim);m(u(1:ceil(rand * dim))) = 1;for i = 1:Nif flag(i) == 0for j = 1:dimif m(j)social_X(i, j) = localElite_X(i, j);endendendend%% Greedy selection and current population updatefor i = 1:N% Evaluate new and social positionsif FEs < MaxFEscurrent_Fitness(i, 1) = fobj(current_X(i, :));FEs = FEs + 1;endif FEs < MaxFEssocial_Fitness(i, 1) = fobj(social_X(i, :));FEs = FEs + 1;end% Greedy selectionif social_Fitness(i, 1) < current_Fitness(i, 1)% Social success: update position and set flagflag(i, 1) = 1;current_X(i, :) = social_X(i, :);current_Fitness(i, 1) = social_Fitness(i, 1);else% Social fail: keep current position and set flagflag(i, 1) = 0;endend%% Update local elite populationfor i = 1:Nif current_Fitness(i, 1) < localElite_Fitness(i, 1)localElite_Fitness(i, 1) = current_Fitness(i, 1);localElite_X(i, :) = current_X(i, :);endend%% Sort local elite fitness and update the global best position[sorted_localElite_Fitness, idx] = sort(localElite_Fitness);if sorted_localElite_Fitness(1) < bestFitnessbestFitness = sorted_localElite_Fitness(1);best_pos = localElite_X(idx(1), :);end%% Record the best fitness for the convergence curveConvergence_curve(iter) = bestFitness;iter = iter + 1;end
end %% Helper Functions% Enforce boundary constraints on agent positions
function X = BoundaryControl(X, low, up)[N, dim] = size(X);if isscalar(low)low = repmat(low, 1, dim);endif isscalar(up)up = repmat(up, 1, dim);endfor i = 1:Nfor j = 1:dim k = rand < rand; % 50% chance for either clipping or re-initializingif X(i,j) < low(j) if kX(i,j) = low(j); % Clipping to the boundaryelseX(i,j) = rand * (up(j) - low(j)) + low(j); % Re-initializingend end if X(i,j) > up(j) if kX(i,j) = up(j); % Clipping to the boundaryelseX(i,j) = rand * (up(j) - low(j)) + low(j); % Re-initializingend endendend
end% Roulette wheel selection mechanism
function choice = RouletteWheelSelection(weights)% Normalize weights to handle negative values if any, although 1/fitness should be positiveif any(weights<0)weights = weights + min(weights);endaccumulation = cumsum(weights);if accumulation(end) == 0choice = -1;return;endp = rand() * accumulation(end);chosen_index = -1;for index = 1:length(accumulation)if (accumulation(index) > p)chosen_index = index;break;endendchoice = chosen_index;
end
Jian Wang, Yi Chen, Chenglang Lu, Ali Asghar Heidari, Zongda Wu, Huiling Chen,The Status-based Optimization: Algorithm and comprehensive performance analysis,Neurocomputing,2025,130603,https://doi.org/10.1016/j.neucom.2025.130603.