1.程式功能描述
分別對比PSO,反向學習PSO,多策略改進反向學習PSO三種最佳化演算法.對比其最佳化收斂曲線。
2.測試軟體版本以及執行結果展示
MATLAB2022A版本執行
3.核心程式
for t=1:tmax t time(t) = t; w = 0.5; for i=1:Pop if t > 1 %N x(1,i) = x_(1,i); x_best(1,i) = x_best_(1,i); %I y(1,i) = y_(1,i); y_best(1,i) = y_best_(1,i); end %N %速度1設定 va(1,i) = w*va(1,i) + c1*rand(1)*(x_best(1,i)-x(1,i)) + c2*rand(1)*(Tx_best-x(1,i)); %更新 x(1,i) = x(1,i) + va(1,i); %變數1的限制 if x(1,i) >= max1 x(1,i) = max1; end if x(1,i) <= min1 x(1,i) = min1; end %I %速度2設定 vb(1,i) = w*vb(1,i) + c1*rand(1)*(y_best(1,i)-y(1,i)) + c2*rand(1)*(Ty_best-y(1,i)); %更新 y(1,i) = y(1,i) + vb(1,i); %變數2的限制 if y(1,i) >= max2 y(1,i) = max2; end if y(1,i) <= min2 y(1,i) = min2; end [BsJ,x(1,i),y(1,i)] = func_fitness(x(1,i),y(1,i)); if BsJ<BsJi(i) BsJi(i) = BsJ; x_best(1,i) = x(1,i); y_best(1,i) = y(1,i); end if BsJi(i)<minJi minJi = BsJi(i); Tx_best = x(1,i); Ty_best = y(1,i); end %反向 %反向學習 %N x_(1,i) = (max1+min1)-x(1,i); x_best_(1,i) = (max1+min1)-x_best(1,i); %I y_(1,i) = (max2+min2)-y(1,i); y_best_(1,i) = (max2+min2)-y_best(1,i); [BsJ,x(1,i),y(1,i)] = func_fitness(x_(1,i),y_(1,i)); if BsJ<BsJi(i) BsJi(i) = BsJ; x_best(1,i) = x_(1,i); y_best(1,i) = y_(1,i); end if BsJi(i)<minJi minJi = BsJi(i); Tx_best = x_(1,i); Ty_best = y_(1,i); end end Jibest(t) = minJi; end Tx_best Ty_best figure; plot(Jibest,'b','linewidth',1); xlabel('迭代次數'); ylabel('J'); grid on save R2.mat Jibest
4.本演算法原理
4.1 粒子群最佳化演算法 (PSO)
粒子群最佳化演算法模擬鳥群或魚群的社會行為,透過迭代搜尋最優解。在n維搜尋空間中,每一個粒子代表一個潛在解,並具有速度和位置屬性。在每次迭代過程中,粒子根據自身的歷史最優位置(個體極值pi)和全域性最優位置(全域性極值g)更新自己的速度和位置。
4.2 反向學習粒子群最佳化演算法 (OPSO)
反向學習PSO是在傳統PSO基礎上引入了反向學習機制,當搜尋過程陷入區域性最優時,透過回溯過去的最優解來調整粒子的速度和方向,從而增加跳出區域性最優的可能性。
改進要點: RL-PSO會在適當的時候啟用反向學習階段,此時速度更新會參考歷史最優位置而非當前最優位置,具體數學表示式因不同實現方式而異,但一般包含對過去優良解的記憶和利用。
4.3 多策略改進反向學習粒子群最佳化演算法 (MSO-PSO)
MSO-PSO融合了多種策略並結合反向學習的思想,進一步增強演算法的全域性搜尋能力和收斂速度。例如,可能結合自適應權重調整、動態鄰域搜尋、精英保留策略等。