论文部分内容阅读
果蝇优化算法(Fruit Fly Optimization Algorithm, FOA)是一种对果蝇在觅食过程中的行为进行仿真模拟从而总结得出的一种优化算法。FOA算法根据果蝇所在位置计算其相应的味道浓度判定值,然后将味道浓度判定值代入适应函数中求得每只果蝇各自的味道浓度值,取其中最大的味道浓度值作为当前最优值,通过不断迭代寻优,直到最优值收敛或者迭代次数结束为止。目前,FOA算法被广泛应用于各种不同的专业领域中,如科学研究、工业设计、数据挖掘和神经网络等。同时,FOA算法在模型系数微调、神经网络参数优化、资源分配、交通道路设计和财务模型预测等实际问题的应用实践中也取得了良好的效果。FOA算法的过程简单,稳定性高,并且有着极快的收敛速度。但是同时,FOA算法也存在一些局限性。首先,果蝇在觅食的过程中,位置移动的距离和方向是随机产生的,唯一的影响因素是一个固定的步长。但是固定的步长在一定程度上限制了算法的搜索能力,无法平衡算法的全局性能和局部性能。其次,在一些多维多峰的问题中,FOA算法很容易陷入某个波峰的局部最优解中无法跳出,从而大大降低了算法的性能。针对于FOA算法的这些局限性,本文做出了如下几项工作:1、提出了一种基于动态线性步长的双子群果蝇优化算法(LD-FOA)。 LD-FOA算法从两个方面对FOA算法进行了改进,首先,对于步长的设定,使用动态线性步长来控制搜索空间的大小,该步长由权重参数a和迭代次数决定,使得在寻优的前期阶段,算法的搜索范围较大,能够快速定位到最优值附近,而在寻优的后期阶段,算法的搜索范围较小,使得寻优过程能够快速收敛得到最终结果,这样平衡了算法的全局性能和局部性能。其次,对于易陷入局部最优的情况,采用的应对策略是使用双子群交替来进行寻优。利用两种步长变化趋势相反的子群来交替对每次迭代的最优位置进行寻优,使得那些暂时陷入局部最优情况的子群在下一轮迭代中替换为一个全局性能较强的子群来跳出。2、使用6个经典的Benchmark测试函数来检测LD-FOA算法的性能,最后将实验结果与PSO、DE、LGMS-FOA三个算法求解相同测试函数的结果进行对比,证明了在求解精度、收敛速度和稳定性上均优于其它三种算法。3、将改进的LD-FOA算法应用于求解两个NP-hard问题——0-1背包问题和旅行商问题(TSP)。首先,使用10个经典的0-1背包问题来测试LD-FOA算法的性能,由于这10个0-1背包问题的维度范围在10-100之间,因此能够较为全面地测试出LD-FOA算法在0-1背包问题应用中的性能。其次,对LD-FOA算法在旅行商问题中的应用进行了一个探索,并且在理论上分析了该应用的一些性能。最后对本文的研究工作做了一个总结,指出了工作中的优点和缺点。并且根据近年来一些研究学者对果蝇优化算法的研究和改进实例,本文整理出了关于FOA算法的几个值得深入研究的方向。