汤涛 王付宇
摘 要:针对传统方法求解投资问题难度大、不易实现等问题,通过分析基本萤火虫算法缺点,设计了一种改进的自适应步长萤火虫算法用于求解该问题.利用正切函数使步长自适应变化,为算法加入了惯性线性因子,利用种群最优个体重新定义位置更新公式;为了避免算法陷入局部最优,为算法设计了两种变异操作;最后,将改进萤火虫算法应用于投资组合问题中.计算结果表明:改进萤火虫算法求解该问题具有明显优势.
关键词:投资组合;萤火虫算法;自适应步长;惯性因子;变异
中图分类号: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.