原始PSO框架的局限性:原始PSO算法容易出現(xiàn)早熟收斂、初始階段多樣性不足、容易陷入局部最優(yōu)等問題,這些缺點(diǎn)限制了其有效性,特別是應(yīng)用于像兩階段NFCTP這樣的復(fù)雜、大規(guī)模優(yōu)化問題時。
1.粒子群優(yōu)化
粒子群優(yōu)化(PSO)[30] 是一種廣泛認(rèn)可的進(jìn)化算法,用于解決各種工程和現(xiàn)實(shí)生活中的優(yōu)化問題。受鳥類和魚類的社會行為啟發(fā),特別是鳥類的群體行為和魚類的集群現(xiàn)象,Kennedy 和 Eberhart 引入了粒子群優(yōu)化。在PSO中,每個個體(代表一只鳥或一條魚)的速度和位置根據(jù)全局最佳位置()和個體的個人最佳位置()進(jìn)行更新,如下所示:
其中??和??分別表示第??個個體在第??個搜索空間中的速度和位置。參數(shù)?、?和??在影響PSO的性能方面起著至關(guān)重要的作用,只有通過仔細(xì)調(diào)整才能獲得最佳結(jié)果。文獻(xiàn)[18]、[66]、[67]、[68]中的許多研究集中在通過各種機(jī)制微調(diào)這些控制參數(shù)來增強(qiáng)PSO性能。以下小節(jié)探討了有效調(diào)整這些參數(shù)的最新機(jī)制和進(jìn)展。PSO的工作過程在算法1中詳細(xì)說明。
2. 混沌理論與混沌映射
混沌理論研究混沌系統(tǒng)的動力學(xué),其特征是非線性和對初始條件的極端敏感性。即使在這些條件下的微小變化也可能導(dǎo)致系統(tǒng)結(jié)果的顯著變化。盡管看起來是隨機(jī)的,混沌系統(tǒng)可以在不依賴隨機(jī)性的情況下表現(xiàn)出不規(guī)則的行為,因為確定性系統(tǒng)也可以表現(xiàn)出混沌行為。最近,這些獨(dú)特的特性被用來增強(qiáng)元啟發(fā)式算法的性能。
此外,混沌映射具有遍歷性、非線性和發(fā)散性特性,類似于非線性動態(tài)系統(tǒng)中常見的隨機(jī)過程。這些映射高度敏感,嚴(yán)重依賴于它們的初始化條件和參數(shù)[70]?;煦缬成涞臄?shù)學(xué)表示通常在公式(4.2)中表達(dá),其中??表示一個混沌序列,該序列結(jié)合了從0到1或-1到1的隨機(jī)數(shù)。
或
由于它們的高敏感性,混沌映射的初始參數(shù)值顯著影響它們的行為。即使這些參數(shù)的微小變化也可能導(dǎo)致劇烈的輸出變化,這可能并不總是理想的。因此,為混沌映射選擇合適的初始值[71]是至關(guān)重要的,需要仔細(xì)考慮。
此外,混沌映射在增強(qiáng)元啟發(fā)式優(yōu)化能力方面提供了幾個優(yōu)勢[72],[73],如下所述:
(i) 這些映射的混沌特性增強(qiáng)了搜索算法的探索和開發(fā)能力。
(ii) 它們向算法引入了增加的隨機(jī)性,可能改善全局性能。
(iii) 混沌映射有助于防止算法收斂到局部最優(yōu)解。
(iv) 它們增加了初始種群的多樣性,提高了全局搜索精度和收斂速度。
(v) 混沌映射具有簡單的公式,與元啟發(fā)式算法一起實(shí)現(xiàn)時不增加額外的計算成本,從而保持一致的時間和空間復(fù)雜度水平。
表列出了用于CEPSO的十個選定的混沌映射,在區(qū)間(0, 1)或(-1, 1)內(nèi)生成混沌數(shù)。這些混沌映射的圖形所示。
對應(yīng)代碼:
function?O=chaos(index,curr_iter,max_iter,Value)
x(1)=0.7;
switch?index
? ??%Chebyshev map
? ??case1
? ? ? ??fori=1:max_iter
? ? ? ? ? ? x(i+1)=cos(i*acos(x(i)));
? ? ? ? ? ? y(i)=((x(i)+1)*Value)/2;
? ? ? ??end
? ??case2
? ? ? ??%Circle map
? ? ? ? a=0.5;
? ? ? ? b=0.2;
? ? ? ??fori=1:max_iter
? ? ? ? ? ? x(i+1)=mod(x(i)+b-(a/(2*pi))*sin(2*pi*x(i)),1);
? ? ? ? ? ? y(i)=x(i)*Value;
? ? ? ??end
? ??case3
? ? ? ??%yauss/mouse map
? ? ? ??fori=1:max_iter
? ? ? ? ? ??if?x(i)==0
? ? ? ? ? ? ? ? x(i+1)=0;
? ? ? ? ? ??else
? ? ? ? ? ? ? ? x(i+1)=mod(1/x(i),1);
? ? ? ? ? ??end
? ? ? ? ? ? y(i)=x(i)*Value;
? ? ? ??end
? ??case4
? ? ? ??%Iterative map
? ? ? ? a=0.7;
? ? ? ??fori=1:max_iter
? ? ? ? ? ? x(i+1)=sin((a*pi)/x(i));
? ? ? ? ? ? y(i)=((x(i)+1)*Value)/2;
? ? ? ??end
? ??case5
? ? ? ??%Loyistic map
? ? ? ? a=4;
? ? ? ??fori=1:max_iter
? ? ? ? ? ? x(i+1)=a*x(i)*(1-x(i));
? ? ? ? ? ? y(i)=x(i)*Value;
? ? ? ??end
? ??case6
? ? ? ??%Piecewise map
? ? ? ? P=0.4;
? ? ? ??fori=1:max_iter
? ? ? ? ? ??if?x(i)>=0?&& x(i)<P
? ? ? ? ? ? ? ? x(i+1)=x(i)/P;
? ? ? ? ? ??end
? ? ? ? ? ??if?x(i)>=P && x(i)<0.5
? ? ? ? ? ? ? ? x(i+1)=(x(i)-P)/(0.5-P);
? ? ? ? ? ??end
? ? ? ? ? ??if?x(i)>=0.5?&& x(i)<1-P
? ? ? ? ? ? ? ? x(i+1)=(1-P-x(i))/(0.5-P);
? ? ? ? ? ??end
? ? ? ? ? ??if?x(i)>=1-P && x(i)<1
? ? ? ? ? ? ? ? x(i+1)=(1-x(i))/P;
? ? ? ? ? ??end
? ? ? ? ? ? y(i)=x(i)*Value;
? ? ? ??end
? ? ? ??
? ??case7
? ? ? ??%Sine map
? ? ? ??fori=1:max_iter
? ? ? ? ? ? x(i+1) =?sin(pi*x(i));
? ? ? ? ? ? y(i)=(x(i))*Value;
? ? ? ??end
? ??case8
? ? ? ??%Sinyer map
? ? ? ? u=1.07;
? ? ? ??fori=1:max_iter
? ? ? ? ? ? x(i+1) = u*(7.86*x(i)-23.31*(x(i)^2)+28.75*(x(i)^3)-13.302875*(x(i)^4));
? ? ? ? ? ? y(i)=(x(i))*Value;
? ? ? ??end
? ??case9
? ? ? ??%Sinusoidal map
? ? ? ??fori=1:max_iter
? ? ? ? ? ? x(i+1) =?2.3*x(i)^2*sin(pi*x(i));
? ? ? ? ? ? y(i)=(x(i))*Value;
? ? ? ??end
? ? ? ??
? ??case10
? ? ? ??%Tent map
? ? ? ? x(1)=0.6;
? ? ? ??fori=1:max_iter
? ? ? ? ? ??if?x(i)<0.7
? ? ? ? ? ? ? ? x(i+1)=x(i)/0.7;
? ? ? ? ? ??end
? ? ? ? ? ??if?x(i)>=0.7
? ? ? ? ? ? ? ? x(i+1)=(10/3)*(1-x(i));
? ? ? ? ? ??end
? ? ? ? ? ? y(i)=(x(i))*Value;
? ? ? ??end
? ? ? ??
end
O=y(curr_iter);
- 提出的可行性恢復(fù)PSO和混沌映射
在本節(jié)中,我們?nèi)嬗懻摿藶榻鉀Q兩階段NFCTP而提出的CEPSO的操作程序,這是對原始PSO的修改。為此,在原始PSO中實(shí)施了各種關(guān)鍵修改,以增強(qiáng)其在解決兩階段NFCTP中的有效性,例如:
(i) 建議一種新的初始化程序來解決兩階段NFCTP。這是必要的,因為隨機(jī)生成的解決方案可能需要更多的可行性。
(ii) 將十個混沌映射引入原始PSO的加速系數(shù)中。這種結(jié)合在每次迭代中引入了粒子運(yùn)動的隨機(jī)擾動。利用這些參數(shù),CEPSO的動態(tài)特性比傳統(tǒng)的PSO變得更加復(fù)雜。
(iii) 提出了修復(fù)負(fù)值和分?jǐn)?shù)值的創(chuàng)新機(jī)制,以糾正負(fù)值和分?jǐn)?shù)解,確保整體可行性。這些機(jī)制在優(yōu)化過程中維護(hù)解決方案的完整性方面起著至關(guān)重要的作用。
3 初始化程序
如我們所知,PSO在搜索空間的邊界內(nèi)隨機(jī)初始化整個種群。然而,這種方法可能不適合兩階段NFCTP,因為隨機(jī)初始化的種群可能不滿足供需約束。為了解決這個問題,我們從我們之前關(guān)于單階段運(yùn)輸問題的工作[57]中汲取靈感,并在本文中提出了一種新的兩階段運(yùn)輸初始化程序。詳細(xì)的初始化程序在算法2和圖3中解釋,這滿足了兩階段NFCTP的要求。
簡而言之,我們首先生成一個由子矩陣?、(對角矩陣)和?、(反對角矩陣)組成的塊矩陣?。在??中,對角矩陣??和??是隨機(jī)生成的,而反對角矩陣??和??是兩個零矩陣。同樣,我們用四個零子矩陣(、、?和?)初始化一個塊矩陣?。然后,我們通過選擇??的最大元素及其位置并更新??的相應(yīng)元素來處理??和?。我們對??和??遵循相同的程序。這個過程產(chǎn)生了滿足兩階段NFCTP約束的初始種群。
位置更新過程:在PSO框架的速度更新方程(公式(4.1))中,慣性權(quán)重()和加速系數(shù)(?和?)是引導(dǎo)PSO粒子朝向最優(yōu)解的基本因素。在本研究中,這些關(guān)鍵PSO參數(shù)通過以下兩個步驟進(jìn)行修改:
步驟1:我們從[48]中汲取靈感,提出這些參數(shù)的非線性定義,這些參數(shù)根據(jù)迭代次數(shù)動態(tài)調(diào)整。這些新參數(shù)定義的數(shù)學(xué)表達(dá)式如下所示。
其中變量?、、?和??分別表示加速度和慣性權(quán)重的最大值和最小值,而??和??分別表示當(dāng)前迭代次數(shù)和最大迭代次數(shù)。對于所提出的算法,我們選擇了?(不同??和??值的實(shí)驗結(jié)果在第6.1.2節(jié)中討論)。慣性權(quán)重的影響:?和??的結(jié)構(gòu)旨在確保速度更新方程中??組件的存在不會阻礙算法的探索能力。?和??之間的相互作用互補(bǔ):隨著一個增加,另一個減少,促進(jìn)初始迭代中的探索和后期迭代中的開發(fā)。此外,慣性權(quán)重在迭代中是一個遞減函數(shù),有助于在整個搜索過程中保持適當(dāng)?shù)奶剿骱烷_發(fā)平衡。
步驟2:在此步驟中,通過將混沌映射引入加速系數(shù)來進(jìn)一步增強(qiáng)所提出算法的優(yōu)化能力。這種結(jié)合為算法增加了曲折性。為了將混沌映射整合到加速系數(shù)中,評估了??在區(qū)間??和??內(nèi)的歸一化值,如下所示:
其中??表示混沌映射的數(shù)量,?表示每次迭代的歸一化值。?按公式(5.3)成比例遞減:
其中??和??是??的范圍。我們在所提出的算法中將??設(shè)置為 1,?設(shè)置為 -10。自適應(yīng)區(qū)間由??表示,范圍??如公式(5.2)所示,映射到??內(nèi),每次迭代。
接下來,我們將歸一化值??與所提出的加速系數(shù)(?和?)結(jié)合,以獲得新的混沌加速系數(shù)(?和?),如下所示:
圖1和圖2詳細(xì)說明了將混沌映射整合到加速系數(shù)中的過程。這些圖展示了混沌映射的歸一化(如公式(5.2)所定義),然后與加速系數(shù)結(jié)合。
圖1 自適應(yīng)歸一化過程
圖2 混沌嵌入加速度系數(shù)
在將混沌映射整合到加速系數(shù)后,所提出的CEPSO中每個粒子的更新速度和位置方程如下:
其中??和??表示從公式(5.4)和??計算出的混沌嵌入的加速度系數(shù),?表示如公式(5.1)所定義的線性遞減慣性權(quán)重。