湯濤 王付宇



摘? 要:針對傳統方法求解投資問題難度大、不易實現等問題,通過分析基本螢火蟲算法缺點,設計了一種改進的自適應步長螢火蟲算法用于求解該問題.利用正切函數使步長自適應變化,為算法加入了慣性線性因子,利用種群最優個體重新定義位置更新公式;為了避免算法陷入局部最優,為算法設計了兩種變異操作;最后,將改進螢火蟲算法應用于投資組合問題中.計算結果表明:改進螢火蟲算法求解該問題具有明顯優勢.
關鍵詞:投資組合;螢火蟲算法;自適應步長;慣性因子;變異
中圖分類號:TP18∶F830.59? ? ? ? ? ?DOI:10.16375/j.cnki.cn45-1395/t.2021.01.018
0? ? 引言
上個世紀五十年代,Markowitz[1]提出了均值-方差投資組合問題模型,研究如何在模糊條件下進行投資決策,該理論在經濟領域中具有重要的地位.隨著社會的發展,經過眾多學者的不斷研究,均值-方差已越來越具有實用性[2].如劉冬華等[3]通過分析證券市場實際情況,在模型中加入了費用;Huang[4]為了準確描述投資組合問題,提出帶不確定參數的均值-方差投資組合決策模型,為決策者提供依據.
具有多約束的投資組合問題是一個組合優化問題,傳統求解方法難以很好地得到較優組合解.隨著智能優化算法的發展[5],為組合優化問題的解決提供了便捷,其中螢火蟲算法(firefly algorithm,FA)具有參數簡單、易操作等優點,被廣泛應用于各個領域[6-7].Yang[8]于2008年首次提出螢火蟲算法,螢火蟲算法原理是:模擬螢火蟲行為,通過個體熒光素吸引得到問題的最優解.但是螢火蟲算法也有易陷入局部最優等缺點,因此,有學者對其進行了研究[9-10].如張哲辰等[11]為避免算法陷入局部極值,將拓撲結構與交叉策略引入算法搜索機制中,提出了一種改進的螢火蟲算法;莫愿斌等[12]在螢火蟲移動過程中加入高斯變異策略,提高了算法的收斂能力,彌補了算法易陷入極值的缺點;李恒等[13]提出了一種改進的自適應步長螢火蟲,并應用于PID參數優化問題中,結果表明改進螢火蟲具有高精度.
本研究為了更好地求解投資組合問題,設計了一種改進的螢火蟲算法.為提高快速收斂能力,設計了自適應步長,重新定義了算法的搜索機制.由于算法易陷入局部極值[14],因此,為算法設計了兩種擾動方式.分別用改進螢火蟲算法、標準螢火蟲算法、文獻[13]中的算法求解投資組合問題,仿真對比結果表明,改進螢火蟲算法具有更高的精度與收斂速度.
1? ? 投資組合問題
如果某一個決策者決定利用現有的總金額S去投資幾種股票,設[xi(i=1, 2, …, n)]表示投資第[i]種股票的比例,其中無風險投資比例為[x0]. [ri]為[i]股票的收益,[pi]為[i]股票價格,[σ]表示股票間的方差-協方差矩陣,[ni]表示[i]股票的手數,100股為一手.
在實際生活中需要考慮費用,我國股票買入成本具體有稅收、委托金、傭金、過戶費,每筆委托費為5元.同文獻[1]一樣,以國債投資作為無風險投資方案,年利率r為3.85%,[μ0=0.1]%表示無風險方案成本系數,[R0]為投資者預期的收益率.
式(1)為目標函數,F為總投資風險;x為股票投資比例;式(2)為資金約束;式(3)為投資帶來的收益率不低于預期收益率;式(4)為投資比例與手數轉換關系;式(5)為委托金、傭金、過戶費之和;式(6)為傭金收費,具體為不超過成交金額的3% ,基本收費為5元;式(7)為過戶費用,按照成交股數的1%支付,起始費用1元;式(8)為包括無風險投資成本在內的總成本;式(9)為總投資比例之和為1.
2? ? 改進螢火蟲算法
2.1? ?標準螢火蟲局限性分析
螢火蟲算法之所以簡單易操作,是因為其搜索機制主要是依靠領域內最優個體進行指引尋優,一旦領域為空集,那么算法將會停滯,大大降低了算法效率.除此之外,算法位置更新公式過于簡單以及搜索步長的固定,無法使算法進行快速尋優,從而無法快速收斂于最優解附近.
2.2? ?步長改進
算法前期,需要較大步長搜索,盡可能遍歷大范圍的可行解;在算法后期,已慢慢收斂于最優解附近,此時需要較小步長來搜索.按照這個改進思路,可以發現在正切函數[tan(x)]中,自變量x為0.785時,函數值為1,且隨著自變量的減小而減小,減小速率也是逐漸變小,因此,將正切函數引入步長中,改進后的步長更新公式如下:
2.3? ?位置更新改進
標準螢火蟲搜索原理存在領域為空的缺陷,改進后的位置更新公式,引入了一個慣性線性因子,以種群最優個體替換領域內最優個體,以種群平均值作為擾動項,以一定概率去擾動當前解.
2.4? ?變異
為了使算法容易跳出局部極值,以一定概率對螢火蟲進行擾動.設p=0.2為算法變異概率,并且利用逆序與亮點交換為算法設計了兩種變異方式.如果[p>rand]則執行變異算子,rand為[0,1]的隨機數,假設螢火蟲是8個維度解,每次迭代時隨機生成兩個位置索引數,假設生成的兩個數為3和6,變異方式如圖1所示.
2.5? ?算法步驟
Step 1? 設置算法參數,如種群大小、最大慣性因子、最小慣性因子、步長固定參數[s0]、變異概率p等;
Step 2? 生成初始解,計算適應度值,本研究螢火蟲適應度值為投資的總風險;
Step 3? 開始迭代計算,按照式(10)、式(11)分別更新步長、慣性因子等參數;
Step 4? 搜索種群最優解,按照式(12)進行位置更新,判斷是否需要變異,若執行變異,則隨機選擇一個變異方式進行變異;
Step 5? 判斷算法是否結束,若結束,則輸出最優解,若不結束,則轉Step 3.
3? ? 實驗仿真
3.1? ? 實驗數據
為了進行仿真實驗以證明改進螢火蟲算法求解投資組合問題的有效性,選取了某個證券交易所的9支股票,股票價格和收益率的數據來自網站,如表1所示,股票間協方差數據如表2所示.
3.2? ?仿真結果對比
設定最大迭代次數[tmax]為130,種群規模為100,步長固定參數[s0]為0.2,最大慣性因子為0.7,最小慣性因子為0.3.仿真軟件使用Matlab R2014b來進行算法編程.計算機處理器參數為Intel(R)Core(TM)i7-1065G7@ 2.52 GHz雙核處理器,計算機操作系統為Windows 8 64位.本研究分別用改進螢火蟲算法、標準螢火蟲算法、文獻[13]算法來求解投資問題,仿真對比結果見表3.為了進一步形象直觀地證明改進算法的效果,分別以種群數50與100對3個算法的迭代收斂進行對比.種群大小為50時,3種算法迭代對比見圖2;種群大小為100時,3種算法迭代對比見圖3.
由表3以及圖2、圖3可得,改進后螢火蟲算法收斂效果要優于標準螢火蟲算法與文獻[13]中提出的改進螢火蟲算法.為了進一步比較改進螢火蟲算法與標準螢火蟲算法收斂速度的差別,以表3中的12運行次數的時間來計算平均時間,如表4所示.
由表4可以得出,本文改進螢火蟲算法運行時間比標準螢火蟲算法、文獻[13]所提算法運行時間短,因此,本文改進算法收斂速度略優于對比算法收斂速度.由表3可得最小風險為0.205 9,表5為求得的最小風險所對應的9支股票以及無風險投資比例.
4? ? 結論
本研究將正切函數引入螢火蟲步長更新中,將最優個體引入螢火蟲搜索機制中,為算法設計了兩種變異算子,設計了一種改進的螢火蟲算法,并將算法應用于投資組合問題中.由仿真實驗結果對比可知,無論是收斂效果還是收斂速度都較標準螢火蟲算法、文獻[13]中提出的改進算法有了提高,驗證了算法應用于投資組合問題的可行性,對于解決投資組合問題具有重大意義.
參考文獻
[1]? ? ?MARKOWITZ H. Portfolio selection[J].Journal of Finance,1952,7(1):77-91. DOI:10.1111/j.1540-6261.1952.tb01525.x.
[2]? ? ?王蘋.風險管理測度VaR和TCE的實證研究[J].青島科技大學學報(自然科學版),2005,26(4):373-376.
[3]? ? ?劉冬華,甘若迅,樊鎖海,等.基于捕食策略的粒子群算法求解投資組合問題[J].計算機工程與應用,2013,49(6):253-256,261.
[4]? ? ?HUANG X X.Mean-semivariance models for fuzzy portfolio selection[J].Journal of Computational and Applied Mathematics,2008,217(1):1-8.
[5]? ? ?覃柏英,秦文東,林賢坤.多種群實數編碼遺傳算法在多峰函數優化中的應用[J].廣西科技大學學報,2015,26(3):13-17,59.
[6]? ? ?段少楠,戴勝華.離散螢火蟲算法在高速列車運行調整中的應用[J].計算機工程與應用,2018,54(15):209-213.
[7]? ? ?莫愿斌,馬彥追,鄭巧燕,等.單純形法的改進螢火蟲算法及其在非線性方程組求解中的應用[J].智能系統學報,2014,9(6):747-755.
[8]? ? ?YANG X S. Nature-inspired metaheuristic algorithms[M].2nd ed. London:Luniver Press,2008.
[9]? ? ?任靜敏,潘大志.一種改進的模擬退火螢火蟲混合算法求解0/1背包問題[J].綿陽師范學院學報,2020,39(2):93-99.
[10]? ?卓宏明,陳倩清.螢火蟲算法參數分析與優化[J].信息技術與網絡安全,2019,38(11):60-66.
[11]? ?張哲辰,劉三陽.基于拓撲改進與交叉策略的螢火蟲算法[J].計算機工程與應用,2019,55(7):1-8.
[12]? ?莫愿斌,劉付永,張宇楠.帶高斯變異的人工螢火蟲優化算法[J].計算機應用研究,2013,30(1):121-123.
[13]? ?李恒,郭星,李煒.基于改進的螢火蟲算法的PID控制器參數尋優[J].計算機應用與軟件,2017,34(7):227-230.
[14]? ?王付宇,湯濤.改進萬有引力算法在流水作業排序中的應用[J].廣西科技大學學報,2020,31(2):80-85,117.