何 光, 李高西
(重慶工商大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,重慶 400067)
Clerc[1]在分析粒子群優(yōu)化(Particle Swarm Optimization,PSO)算法時(shí)提出粒子運(yùn)動(dòng)場(chǎng)中存在著吸引點(diǎn),而粒子在迭代過(guò)程中會(huì)聚集到該點(diǎn)。隨后Sun 等[2]在Clerc的研究基礎(chǔ)上,從量子力學(xué)的角度提出了量子粒子群優(yōu)化(Quantum-behaved Particle Swarm Optimization,QPSO)算法。由于粒子在量子空間中沒(méi)有特定的軌道,具有更高的隨機(jī)性,因而其智能性相比標(biāo)準(zhǔn)的PSO算法要高,收斂性能更好。盡管QPSO 算法在一定程度上提升了算法的性能,但是在實(shí)際計(jì)算時(shí),粒子的搜索只是在可行解的空間進(jìn)行,使得在算法迭代的后期依舊會(huì)出現(xiàn)群體的多樣性缺失等現(xiàn)象,因此算法仍有很大的改進(jìn)空間。
針對(duì)QPSO算法的不足,先后有學(xué)者提出了各種搜索策略和改進(jìn)方法,以增加粒子的探索能力,避免算法陷入局部最優(yōu)的困境。Mohadeseh等[3]提出了基于廣義局部搜索的QPSO算法,以增強(qiáng)粒子脫離局部最優(yōu)的能力。趙吉和程成[4]在演化搜索的基礎(chǔ)上改善了QPSO算法,提升了算法的收斂速度。章國(guó)勇等[5]在算法中考慮了精英學(xué)習(xí)策略,增強(qiáng)了粒子的全局搜索能力。周頔等[6]提出了協(xié)同QPSO算法,避免了算法的早熟。張?zhí)m[7-8]分別融合了差分進(jìn)化和黑洞搜索的優(yōu)點(diǎn),提出了改進(jìn)的QPSO算法,拓展了粒子的空間探索范圍。在算法的參數(shù)修正和豐富種群多樣性方面,也有一些學(xué)者提出了不錯(cuò)的改良性結(jié)果[9-14]。在已有研究的基礎(chǔ)上,準(zhǔn)備從兩個(gè)方面對(duì)QPSO算法進(jìn)行改進(jìn):第一,在粒子的歷史位置更新公式中,將粒子的歷史最優(yōu)和次優(yōu)位置綜合考慮,以擴(kuò)大粒子的搜索范圍,增加粒子的探索能力;第二,借助遺傳算法的交叉操作,提高種群的多樣性,避免算法進(jìn)入早熟。然后,將改進(jìn)后的QPSO算法應(yīng)用到證券投資組合問(wèn)題中。
標(biāo)準(zhǔn)的QPSO算法是在PSO算法的基礎(chǔ)上進(jìn)化而來(lái),借助了PSO算法的粒子速度公式:
vi(t+1)=wvi(t)+c1r1(pi(t)-xi(t))+
c2r2(pg(t)-xi(t))
(1)
其中,xi(t)和vi(t)分別表示第i個(gè)粒子的位置以及速度,第i個(gè)粒子的個(gè)體極值以及全局極值分別為pi(t)和pg(t)。w表示慣性權(quán)重,c1和c2表示加速因子,r1和r2表示0到1之間均勻分布的隨機(jī)數(shù)。在QPSO算法的更新公式中,沒(méi)有粒子的速度公式,而采用蒙特卡羅法模擬粒子的運(yùn)動(dòng)狀態(tài),進(jìn)行迭代。在迭代過(guò)程中,每個(gè)粒子會(huì)聚集到一個(gè)局部吸引點(diǎn)Pi(t),從而式(1)將轉(zhuǎn)化為吸引點(diǎn)的位置公式:
Pi(t+1)=φpi(t)+(1-φ)pg(t)
(2)
其中,φ=c1r1/(c1r1+c2r2)。粒子的位置更新公式如下:
xi(t+1)=Pi(t)±β|mi(t)-xi(t)|ln[ui(t)]-1
(3)
其中,β稱為收縮-擴(kuò)張系數(shù),用來(lái)調(diào)節(jié)粒子的速度。mi(t)表示粒子歷史最優(yōu)位置的平均值,稱為平均最好位置。ui(t)表示0~1之間均勻分布的隨機(jī)數(shù),當(dāng)ui(t)大于0.5時(shí),式(3)中取“+”,否則取“-”。
在更新粒子個(gè)體最優(yōu)位置時(shí),除了考慮它的歷史最好位置外,還將粒子的歷史次優(yōu)位置也包括進(jìn)去,這樣能夠增強(qiáng)粒子的搜索范圍,避免陷入局部最優(yōu)。另外,借鑒遺傳算法的交叉操作,對(duì)粒子的歷史最優(yōu)和次優(yōu)位置進(jìn)行交叉處理,用新的位置作為粒子當(dāng)前的最優(yōu)位置,用于迭代后期增強(qiáng)種群的多樣性,提高算法的收斂精度。
由于算法中選用了交叉操作,將改進(jìn)的算法記為CR-QPSO。CR-QPSO算法中,粒子的歷史最優(yōu)位置和次優(yōu)位置分別為p1i(t)和p2i(t),經(jīng)過(guò)交叉操作后得到的新位置仍記為pi(t)。收縮-擴(kuò)張系數(shù)選擇文獻(xiàn)[13]的線性遞減方法,如下:
其中,β1,β2為β的最小值和最大值,T為最大迭代次數(shù)。CR-QPSO算法的流程如下:
Step 1設(shè)定搜索維數(shù)D、種群規(guī)模N和最大迭代次數(shù)T,初始化種群中粒子的位置;
Step 2計(jì)算每個(gè)粒子的適應(yīng)度,以適應(yīng)度最優(yōu)的粒子位置作為種群的全局最優(yōu)位置pg(t);
Step 3根據(jù)式(2)計(jì)算局部吸引點(diǎn)Pi(t);
Step 4根據(jù)式(3)更新當(dāng)前粒子的位置;
Step 5通過(guò)粒子適應(yīng)度的比較,確定當(dāng)前粒子的歷史最優(yōu)位置p1i(t)和次優(yōu)位置p2i(t),運(yùn)用交叉操作,得到粒子的個(gè)體最優(yōu)位置pi(t);
Step 6當(dāng)粒子適應(yīng)度優(yōu)于種群最優(yōu)點(diǎn)的適應(yīng)度時(shí),則用當(dāng)前粒子的位置更新pg(t);
Step 7t=t+1,若滿足迭代終止條件,輸出最優(yōu)解,否則,轉(zhuǎn)入Step 2。
在性能測(cè)試中,將CR-QPSO算法與標(biāo)準(zhǔn)的QPOS算法、DE-QPSO算法[7]和BH-QPSO算法[8]進(jìn)行比較。基準(zhǔn)測(cè)試函數(shù)的計(jì)算結(jié)果來(lái)源于文獻(xiàn)[8],其中f1為高維單模函數(shù),f2-f5為高維多模函數(shù),f6為低維多模函數(shù)。
在所有的QPSO算法中,加速因子分別取1.5和2,粒子總數(shù)為10個(gè),搜索空間為20維,最大迭代次數(shù)為1 000次。在DE-QPSO算法中變異概率為0.5,交叉參數(shù)為0.9;在BH-QPSO算法中,黑洞理論閾值為0.8,黑洞半徑為0.8;每個(gè)實(shí)例取50次結(jié)果的平均值和標(biāo)準(zhǔn)差。
在表1中,展示了4種算法在不同測(cè)試函數(shù)下的計(jì)算結(jié)果。在Sphere函數(shù)和Griewank函數(shù)的測(cè)試中,BH-QPSO算法和DE-QPSO算法取得了較好的尋優(yōu)結(jié)果,相比而言CR-QPSO算法在最優(yōu)解均值和解的穩(wěn)定性方面則具有更好的表現(xiàn),能夠有效地跳出局部最優(yōu),探索到函數(shù)的全局最優(yōu)點(diǎn)。對(duì)于Rosenbrock函數(shù)而言,BH-QPSO算法在函數(shù)均值方面取得了最佳的表現(xiàn),然而穩(wěn)定性不夠理想;QPSO算法和DE-QPSO算法在求解過(guò)程中明顯偏離了有效的尋優(yōu)路徑,尋優(yōu)結(jié)果較差;CR-QPSO算法的綜合效果較好,最優(yōu)解的均值不如BH-QPSO算法,但是解的穩(wěn)定性方面有更好的表現(xiàn)。就Rastrigin函數(shù)而言,4種算法都無(wú)一例外地陷入了局部最優(yōu)的困境。其中BH-QPSO算法和DE-QPSO算法的改進(jìn)效果不如原始的QPSO算法,尋優(yōu)能力較弱;相比之下CR-QPSO算法具有較好的探索能力,經(jīng)過(guò)變異操作之后的粒子能夠比較有效地接近函數(shù)的全局最優(yōu)點(diǎn)。在其余兩個(gè)函數(shù)的測(cè)試中,CR-QPSO算法相比其他3種算法表現(xiàn)更突出,無(wú)論在函數(shù)的最優(yōu)值還是魯棒性上都取得了最理想的結(jié)果。
表1 4種算法的測(cè)試結(jié)果Table 1 Test results of four algorithms
總之,通過(guò)測(cè)試函數(shù)的檢驗(yàn)結(jié)果,CR-QPSO算法在其中5個(gè)函數(shù)的測(cè)試中均表現(xiàn)出最佳的尋優(yōu)能力,取得的最優(yōu)解擁有更好的魯棒性。
經(jīng)典的Markowitz均值-方差模型為一類多目標(biāo)優(yōu)化問(wèn)題,其有效前沿即多目標(biāo)優(yōu)化問(wèn)題的Pareto最優(yōu)解。這里將多目標(biāo)優(yōu)化問(wèn)題轉(zhuǎn)換為單目標(biāo)優(yōu)化問(wèn)題,并用改進(jìn)的量子粒子群算法進(jìn)行求解。在證券交易中,投資者和管理機(jī)構(gòu)往往基于各種考慮會(huì)對(duì)證券的交易數(shù)量作出限制,于是這里討論一類投資占比有上限的投資組合問(wèn)題。具體模型如下:
(1)
其中,R為資產(chǎn)的收益矩陣,X為投資組合的權(quán)重向量,∑表示各種資產(chǎn)間的協(xié)方差矩陣,ei表示資產(chǎn)的預(yù)期收益率,設(shè)定所有股票的投資比不能超過(guò)總資金的50%。
數(shù)值實(shí)驗(yàn)中,從深圳證券交易所選取了A股市場(chǎng)中的20只股票,收集了這些股票從2017年9月18日到2018年9月20日共計(jì)250個(gè)交易日的收盤價(jià)格。每只股票以日收益率的歷史平均值作為其預(yù)期收益率。在改進(jìn)的量子粒子群優(yōu)化算法CR-QPSO中,加速因子分別取1.5和2,粒子總數(shù)為40個(gè),搜索空間為20維,最大迭代次數(shù)為1 500次,求解結(jié)果取50次實(shí)驗(yàn)的平均值。
表2給出了在不同預(yù)期收益率下的模型。式(1)的最優(yōu)解,通過(guò)給定的ei(在最小與最大預(yù)期收益率之間均勻選取,由小到大逐漸增加)可以計(jì)算出相應(yīng)風(fēng)險(xiǎn)最小的組合。從表2中數(shù)據(jù)可知,隨著預(yù)期收益率的增大,投資組合的風(fēng)險(xiǎn)也在逐步變大。當(dāng)收益率從0.081 2增加到0.193 9時(shí),第1、第11、第17和第19這4只股票的投資占比逐漸減小;同時(shí)第4和第9這兩只股票的比例分別從2.01%和5.66%增加到3.98%和19.87%。
表2 不同預(yù)期收益率下的最優(yōu)投資組合Table 2 Optimal portfolios under different expected rate of return
進(jìn)一步,為了說(shuō)明改進(jìn)算法求解模型(1)的有效性,接下來(lái)將CR-QPSO與PSO、QPSO和GA等算法從最差值、最好值、均值和方差等4個(gè)方面進(jìn)行比較。在對(duì)比實(shí)驗(yàn)中,選取預(yù)期收益率為0.193 9,具體結(jié)果見表3。
表3 不同算法的優(yōu)化結(jié)果比較Table 3 Comparison of optimization results of different algorithms
由表3可知:改進(jìn)算法在4個(gè)指標(biāo)下均取得了比其余3種算法更好的結(jié)果,表明CR-QPSO算法具有更強(qiáng)的尋優(yōu)能力,獲得的最優(yōu)解更精確、更穩(wěn)定。
為了提高量子粒子群算法(QPSO)的粒子探索能力和算法的計(jì)算精度,在原始的QPSO算法的基礎(chǔ)上,對(duì)粒子的位置公式進(jìn)行了改良處理。在改進(jìn)算法中,一方面考慮了粒子的歷史最優(yōu)和次優(yōu)位置的共同影響,用以拓展粒子的搜索范圍;另一方面,采用了遺傳算法中的交叉操作,用以增加粒子的多樣性。通過(guò)與幾種已有算法的對(duì)比,改進(jìn)的量子粒子群算法(CR-QPSO)表現(xiàn)出更好的收斂性和魯棒性。隨后,將CR-QPSO算法應(yīng)用于尋找Markowitz均值-方差模型的資產(chǎn)最優(yōu)組合。借助證券市場(chǎng)中股票的歷史數(shù)據(jù),對(duì)一類具有投資數(shù)量限制的投資組合模型進(jìn)行了求解,計(jì)算結(jié)果表明改進(jìn)算法具有更好的性能。