何 光, 盧小麗
(1.重慶工商大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,重慶 400067; 2.重慶工商大學(xué) 長(zhǎng)江上游經(jīng)濟(jì)研究中心,重慶 400067)
在量子粒子群優(yōu)化算法(QPSO)中,粒子的狀態(tài)只需由位置矢量來決定,相比粒子群優(yōu)化算法(PSO)形式更簡(jiǎn)單,計(jì)算速度更快,收斂性能更好。在處理復(fù)雜優(yōu)化問題時(shí),QPSO算法具有更快的收斂速度和更強(qiáng)的全局搜索性能,被廣泛應(yīng)用于非線性、不可微、非凸的優(yōu)化問題中[1-3]。然而在實(shí)際應(yīng)用中,特別是處理復(fù)雜的多模函數(shù)時(shí),QPSO算法容易出現(xiàn)早熟和收斂精度低的情況。于是,研究者針對(duì)QPSO算法在迭代后期陷入局部最優(yōu)的情況,提出了相應(yīng)的改進(jìn)手段。Sun 等[4]在分析QPSO算法收斂性時(shí),討論了迭代公式中參數(shù)的選擇,他們的工作提升了算法的全局搜索能力;Zhang[5]在研究中融合了混沌映射、高斯分布的變異算子以及動(dòng)態(tài)慣性權(quán)重調(diào)整等技巧,有效地改善了算法的多樣性,使得QPSO算法具有更強(qiáng)的搜索性能;為了提升算法的計(jì)算效率,Yang等[6]提供了一種精細(xì)解搜索方法用于克服原始QPSO算法在搜索過程中出現(xiàn)的缺陷。
雖然已有研究在克服早熟和提升算法全局搜索上有一定的改進(jìn),但是在算法的收斂速度和局部挖掘能力方面還有待增強(qiáng),對(duì)于算法整體性能的提升仍有很大的改進(jìn)空間。于是針對(duì)原始QPSO算法在處理復(fù)雜多模函數(shù)時(shí)容易出現(xiàn)早熟和收斂精度低的情況,本文將對(duì)算法作出進(jìn)一步的改良。在粒子的歷史最優(yōu)位置和全局最優(yōu)位置的確定上,借鑒遺傳算法中交叉算子的思想,并結(jié)合隨機(jī)擾動(dòng)操作,以增強(qiáng)算法在迭代后期的收斂性能,維持種群的多樣性;另外,對(duì)收縮-擴(kuò)張因子的結(jié)構(gòu)進(jìn)行非線性調(diào)整,以提高算法的全局收斂速度和精度。然后在仿真應(yīng)用上,將改進(jìn)后的算法用于求解一類具有最小最大風(fēng)險(xiǎn)的投資組合優(yōu)化模型。
在QPSO系統(tǒng)中,設(shè)種群規(guī)模為N,搜索維數(shù)為D,最大迭代次數(shù)為T。在迭代過程中,采用蒙特卡羅法模擬粒子的運(yùn)動(dòng)狀態(tài),每個(gè)粒子會(huì)聚集到一個(gè)局部吸引點(diǎn)Pi(t):
Pi(t+1)=φpi(t)+(1-φ)pg(t)
(1)
其中,φ=c1r1/(c1r1+c2r2),r1和r2表示0~1之間均勻分布的隨機(jī)數(shù),pi(t)表示在t次迭代時(shí)第i個(gè)粒子的歷史最優(yōu)位置,pg(t)為在t次迭代時(shí)群體最優(yōu)位置。粒子位置更新公式如下:
xi(t+1)=Pi(t)±β|m(t)-xi(t)|ln[ui(t)]-1
(2)
其中,β稱為收縮-擴(kuò)張因子,m(t)表示在t次迭代時(shí)所有粒子歷史最優(yōu)位置的平均值,ui(t)表示0~1之間均勻分布的隨機(jī)數(shù),當(dāng)ui(t)大于0.5時(shí),式(2)中取“+”,否則取“-”。
由于原始QPSO算法在迭代后期容易出現(xiàn)早熟和收斂精度低的困境,于是考慮對(duì)粒子歷史最優(yōu)位置和全局最優(yōu)位置的更新方式進(jìn)行改良。因?yàn)檫z傳算法中的交叉算子能夠有效地利用粒子的歷史信息,對(duì)表現(xiàn)較差的個(gè)體進(jìn)行淘汰、更新,從而增強(qiáng)算法的迭代效果。對(duì)于個(gè)體的歷史最優(yōu)位置,借鑒交叉算子思想,在迭代后期運(yùn)用隨機(jī)選擇的粒子進(jìn)行結(jié)合,產(chǎn)生新的個(gè)體,選擇更好地繼續(xù)迭代,具體公式如下:
cpi(t)=r·pi(t)+(1-r)pj(t)
(3)
其中,r表示0~1之間均勻分布的隨機(jī)數(shù),j表示1~N之間的隨機(jī)整數(shù)。
對(duì)于全局最優(yōu)位置的更新,將根據(jù)種群的多樣性表現(xiàn)來重新調(diào)整群體的最優(yōu)位置。多樣性指標(biāo)函數(shù)如下:
其中,|S|為粒子個(gè)數(shù),|A|為粒子搜索的最大距離。當(dāng)diversity(S)低于給定閾值時(shí),采用以下形式對(duì)當(dāng)前全局最優(yōu)位置進(jìn)行調(diào)整:
cpg(t)=r·pg(t)+(1-r)(pg(t)-pk(t))
(4)
其中,r表示0~1之間均勻分布的隨機(jī)數(shù),k表示1~N之間的隨機(jī)整數(shù)。
對(duì)于算法中的收縮-擴(kuò)張因子,考慮如下非線性結(jié)構(gòu):
(5)
這里β1=1,β2=0.5,T表示最大迭代次數(shù)。在迭代初期β有較大的取值,粒子在整個(gè)目標(biāo)空間中運(yùn)動(dòng),搜索范圍較廣。當(dāng)β取得最小值時(shí),粒子的局部探索能力逐漸增強(qiáng),能夠有效提高算法的搜索速度。在迭代后期,β從最小值變化到β2,粒子聚集到局部吸引點(diǎn)附近,在全局最優(yōu)解周圍進(jìn)行探索,從而提升了算法的精確度。
改進(jìn)后的算法簡(jiǎn)記為MQPSO,其算法流程如下:
Step1 設(shè)定種群規(guī)模N、搜索維數(shù)D和最大迭代次數(shù)T,并初始化種群中粒子的位置;
Step2 計(jì)算每個(gè)粒子的適應(yīng)度,以適應(yīng)度最優(yōu)的粒子位置作為種群的全局最優(yōu)位置pg(t);
Step3 根據(jù)式(1)計(jì)算局部吸引點(diǎn)Pi(t);
Step4 根據(jù)式(5)計(jì)算收縮-擴(kuò)張因子,通過式(2)更新當(dāng)前粒子的位置;
Step5 當(dāng)t>0.8×T時(shí),利用式(3)得到新個(gè)體位置cpi(t),將其與pi(t)的適應(yīng)度比較,保留更優(yōu)的作為粒子的歷史最優(yōu)位置;
Step6 運(yùn)用比較原則得到粒子的歷史最優(yōu)位置;
Step7 當(dāng)diversity(S)<0.001時(shí),利用式(4)得到新的全局最優(yōu)位置cpg(t),將其與pg(t)的適應(yīng)度比較,保留更優(yōu)的作為全局最優(yōu)位置;
Step8 運(yùn)用比較原則得到全局最優(yōu)位置;
Step9t=t+1,若滿足迭代終止條件,輸出最優(yōu)解,否則,轉(zhuǎn)入Step 2。
將FIPS算法[7]、CLPSO算法[8]、DNLPSO算法[9]、HPSO算法[10]與MQPSO算法進(jìn)行性能對(duì)比分析。基準(zhǔn)測(cè)試函數(shù)中,函數(shù)f1-Shpere,f2-Schwefel 2.22以及f3-Schwefel 1.2為高維單模,函數(shù)f4-Rastrigin,f5-Noncontinuous Rastrigin,f6-Rosenbrock,f7-Griewank以及f8-Ackley為高維多模。參數(shù)設(shè)定方面,算法FIPS,CLPSO,DNLPSO以及HPSO均采用相關(guān)文獻(xiàn)中的設(shè)置。5種算法的粒子總數(shù)均為50個(gè),搜索空間均為30維,最大迭代次數(shù)均為1 000次。每個(gè)測(cè)試函數(shù)獨(dú)立運(yùn)行50次,其結(jié)果取平均值、標(biāo)準(zhǔn)差以及最好值。通過表1中展示的測(cè)試結(jié)果,可見MQPSO算法幾乎在所有函數(shù)測(cè)試中都取得了最好的均值和最小的標(biāo)準(zhǔn)差。
表1 5種算法的測(cè)試結(jié)果
在單模函數(shù)f1—f3上,由于MQPSO算法在進(jìn)化過程中考慮了非線性收縮擴(kuò)張因子,使得算法在收斂精度上有了更好的改善,表現(xiàn)為在f1和f2兩個(gè)函數(shù)上取得了理論最優(yōu)值,同時(shí),在f3的測(cè)試上也比其他4個(gè)算法獲得了更好的收斂結(jié)果。f4—f8等5個(gè)多模函數(shù)主要用于測(cè)試算法在克服早熟現(xiàn)象方面的表現(xiàn)能力。從f4—f63個(gè)函數(shù)的測(cè)試結(jié)果上看,各個(gè)算法都無一例外地陷入了局部最優(yōu),其中MQPSO與HPSO兩種算法表現(xiàn)得相對(duì)較好;在函數(shù)f7上,MQPSO與HPSO的算法優(yōu)勢(shì)更明顯,其中MQPSO算法在迭代后期運(yùn)用了隨機(jī)擾動(dòng)機(jī)制,使得算法在多峰函數(shù)的尋優(yōu)方面表現(xiàn)得更有特色,甚至有機(jī)會(huì)找到全局最優(yōu)點(diǎn);而在f8的測(cè)試結(jié)果上,可以明顯感覺到MQPSO算法在對(duì)抗早熟問題時(shí)的優(yōu)勢(shì),其他4種算法均不能完全擺脫局部最優(yōu)的困境,而MQPSO算法則在每次運(yùn)行中都取得了理論最優(yōu)值,表現(xiàn)優(yōu)異。
從8個(gè)測(cè)試函數(shù)的整體結(jié)果來看,MQPSO算法相比其他4種算法無論在收斂精度上,還是在尋優(yōu)結(jié)果的穩(wěn)定性方面均占有明顯優(yōu)勢(shì)。接下來,借助中國(guó)證券市場(chǎng)的真實(shí)數(shù)據(jù)對(duì)MQPSO算法的實(shí)際應(yīng)用效果進(jìn)行檢驗(yàn)。
運(yùn)用均值-方差模型來分析證券投資組合選擇時(shí),除了股票的歷史收益率外,還需要分析各只股票之間的相關(guān)性,計(jì)算相應(yīng)的協(xié)方差矩陣。隨著組合規(guī)模的擴(kuò)大,對(duì)矩陣計(jì)算的要求也相應(yīng)增加,從而會(huì)提高模型的計(jì)算復(fù)雜度。于是在仿真環(huán)節(jié)中,借鑒Teo模型[11]的風(fēng)險(xiǎn)度量方式,并結(jié)合實(shí)際的一些約束條件,建立了如下模型:
Li≤xi≤Ui
(1)
其中,Rit為第i只股票在t時(shí)刻的收益率,E(Rit)表示Rit的期望,T0表示每只股票的觀測(cè)時(shí)限,ri為第i只股票的預(yù)期收益率,μ表示投資組合的預(yù)期收益率,Li和Ui分別表示第i只股票投資占比的下限和上限。
根據(jù)滬深證券市場(chǎng)中的行業(yè)板3塊,選擇了信息技術(shù)和通信設(shè)備制造領(lǐng)域15家上市公司,包括中國(guó)聯(lián)通(600050)、中國(guó)衛(wèi)通(601698)、深信服(300454)等10家在內(nèi)的信息技術(shù)類企業(yè)以及 兆易創(chuàng)新(603986)、士蘭微(600460)、工業(yè)富聯(lián)(601138)等5家通信設(shè)備制造公司。在仿真實(shí)驗(yàn)中,收集了這15家上市公司的股票在241個(gè)交易日內(nèi)的歷史收盤價(jià)格。MQPSO算法的參數(shù)設(shè)定與前面性能測(cè)試中一致,在求解時(shí)選擇粒子總數(shù)為50個(gè),搜索空間為15維,最大迭代次數(shù)為1 000次,獨(dú)立運(yùn)行取30次后取最優(yōu)解的均值。實(shí)驗(yàn)中不允許股票賣空,Li和Ui分別取0和0.5,T0取30。
通過表2的結(jié)果,可見在不同的預(yù)期收益率下利用MQPSO算法得到了投資組合的最優(yōu)解,15只股票的投資占比能夠清晰地展現(xiàn)出來,投資者可以根據(jù)相應(yīng)的股票投資份額進(jìn)行及時(shí)地投資調(diào)整。隨著預(yù)期收益率的增大,投資組合的風(fēng)險(xiǎn)值也隨之增加,意味著追求更高回報(bào)率的同時(shí),需要承擔(dān)更多的投資風(fēng)險(xiǎn)。
表2 不同預(yù)期收益率下的最優(yōu)投資組合
為進(jìn)一步凸顯MQPSO算法在求解投資組合模型I時(shí)的優(yōu)勢(shì),考慮比較4種具有代表性的群智能優(yōu)化算法:粒子群優(yōu)化算法(PSO)、量子粒子群優(yōu)化算法(QPSO) 、布谷鳥搜索(CS)和蝙蝠算法(BA)。對(duì)比實(shí)驗(yàn)中,預(yù)期收益率取10%,各種算法的種群規(guī)模均為50,搜索空間均為15維,最大迭代次數(shù)均取1 000次,每個(gè)算法分別獨(dú)立運(yùn)行30次,統(tǒng)計(jì)相應(yīng)的均值、標(biāo)準(zhǔn)差、最好值和最差值,具體結(jié)果見表3。
表3 不同算法的優(yōu)化結(jié)果比較
根據(jù)表3中顯示的計(jì)算結(jié)果,可見CS和BA兩種算法在仿真實(shí)驗(yàn)中的表現(xiàn)相對(duì)其他3種粒子群類算法要差些,同時(shí)QPSO算法又優(yōu)于PSO算法。MQPSO算法無論在均值、標(biāo)準(zhǔn)差,還是在最好值和最差值上,都表現(xiàn)得更為出色,在尋優(yōu)結(jié)果的精度和穩(wěn)定性方面比其余4種算法都更有優(yōu)勢(shì)。
為挖掘QPSO算法的全局搜索和局部探索能力,增強(qiáng)算法的整體性能,本文提出了一種改進(jìn)的QPSO算法(MQPSO)。在改進(jìn)算法中,首先借鑒遺傳算法中交叉算子的思想,并結(jié)合隨機(jī)擾動(dòng)操作,對(duì)單個(gè)粒子的歷史最優(yōu)位置和全局最優(yōu)位置進(jìn)行重新設(shè)定,以增強(qiáng)算法在迭代后期的收斂性能,同時(shí)維持種群的多樣性;其次,對(duì)算法中的重要參數(shù)收縮-擴(kuò)張因子,進(jìn)行非線性結(jié)構(gòu)調(diào)整,以提高算法的全局收斂速度和精度;隨后,通過8個(gè)測(cè)試函數(shù),將MQPSO算法與4個(gè)現(xiàn)有的改進(jìn)算法進(jìn)行對(duì)比,分析結(jié)果顯示無論在計(jì)算精度還是在穩(wěn)定性方面,MQPSO算法表現(xiàn)更好;最后,在仿真應(yīng)用上,根據(jù)中國(guó)證券市場(chǎng)中15只股票的歷史數(shù)據(jù),分別運(yùn)用粒子群優(yōu)化算法、量子粒子群優(yōu)化算法、布谷鳥搜索、蝙蝠算法和MQPSO算法對(duì)一類具有最小最大風(fēng)險(xiǎn)的投資組合優(yōu)化模型進(jìn)行數(shù)值求解,結(jié)果表明MQPSO算法在風(fēng)險(xiǎn)控制和穩(wěn)定性上均優(yōu)于其他4種群智能算法。