计算机测量与控制.2005.13(3)ComputerMeasurementControl·270·:1671-4598(2005)03-0270-03:TP301.6文献标识码:A连续函数优化的一种新方法-蚁群算法潘丰,李海波(江南大学通信与控制工程学院,江苏无锡214036)摘要:针对连续函数优化问题,给出了一种基于蚂蚁群体智能搜索的随机搜索算法,对目标函数没有可微的要求,可有效克服经典算法易于陷入局部最优解的常见弊病。对基本的蚁群算法做了一定的改进,通过几个函数寻优的结果表明,算法具有良好的效果。同时,运用遗传算法对蚁群算法中的一些重要参数进行了寻优,提高了蚁群算法的收敛速度。关键词:全局优化;蚁群算法;遗传算法NewMethodofContinuousFunctionOptimization-AntColonyAlgorithmPanFeng,LiHaibo(SchoolofCommunicationandControlEngineering,SouthernYangtzeUniversity,Wuxi214036,China)Abstract:Tosolvecontinuousfunctionoptimizationproblems,anewstochasticsearchalgorithmbasedonantswarmintelligenceisin2troduced.Thisalgorithmneedn’tcontinuousevaluationofderivativesfortheobjectfunctionanditcanconquertheshortcomingswhichclas2sicalgorithmsareapttofallintothelocaloptimum.Atthesametime,inordertoreducethenumberoffunctionevaluationsrequiredforconvergence,thebasicCACOalgorithmisimproved.Theimprovedalgorithmhasbeentestedforvarietyofdifferentbenchmarktestfunc2tions,anditcanhandletheseoptimizationproblemsverywell.Furthermore,geneticalgorithmisillustratedtooptimizetheparametersre2latedtotheantcolonyalgorithm,sothattheconvergencespeedoftheantcolonyalgorithmisimproved.Keywords:globaloptimization;antcolonyalgorithm;geneticalgorithm于全局搜索,L个蚂蚁用作局部搜索(A=G+L)。通过局部和全局搜索来更新这些解区域。全局和局部蚂蚁数的比例如何分配,这是CACO中的一个重要参数。可以根据具体问题变化。由于目的是为了解决连续函数优化问题,因此采用基于实数编码的方式来进行。111局部搜索首先我们设置这R个初始解对应的信息值为1。蚂蚁根据概率P来选择下一步的移动目标。这L个蚂蚁分别从R个初始解中选择L个区域来进行局部搜索。选择区域i的概率可按0引言蚁群算法是最近几年才提出的一种新型的模拟进化算法,(2000年把蚁群算法扩展到了求解连续函数的优化问题[1]。他们引用两层搜索:全局和局部搜索。由于这种算法是基于十进制编码的,所以我们简称为CACO(tencodedantcolonyalgo2rithm)。在CACO算法中,使用的是人工蚁。它与实际蚂蚁在某些特性方面存在着共同点,但也存在着一些差异。具体表现在以下几个方面:(1)这些蚂蚁不完全瞎;(2)它们有记忆;(3)它们生活的环境、时间是离散的。而其分布式协作搜索行为以及正反馈机理与实际蚂蚁相同。CACO算法最主要的特征在于这些人工蚁选择下一步将要移向的点是根据一个与信息素成比例的概率来进行选择的。为了进一步改善CACO的性能,对基本的CACO做了进一步修改。通过运用改进的CACO算法对几种连续函数寻优,并与GA进行比较,效果良好。同时,由于在蚁群算法中存在着许多重要参数,这些参数设置的好坏直接影响着算法的寻优速度。为此,运用遗传算法对这些参数进行了优化组合。1基本的CACO算法式(1)来计算τi(t)Pi(t)(1)=∑τ()tkk(t)表示t时刻k区域的信息i为对应的区域索引,τk其中:值(trailvalue)。k代表下一步蚂蚁可选的所有区域。当选择好移动目标后,蚂蚁在对应的目标值上移动一小段距离。具体的移动方式为:(1)(2)设age=0如果fitness(n-1)>fitness(n-2)则第n次蚂蚁移动的方向与n-1次移动的方向相同;否则,按照随机方向进行移动。(3)如果fitness(n)>fitness(n-1),则用对应的点替换n-1次的点。(4)相应的点的信息值要进行更新。其信息值的更新可以与适配值的变化量成比例更新。(5)如果上述搜索过程适配值fitness没有得到改善,则缩小步长,对应的age加1,重复(2)~(4)直到age大于某一特定的值。步长LSS与age的大小成线性关系,LSS(n)=c(n)-m(n)·age(n)。其中c(n)、m(n)为用户自定义的常数。age=0为了把蚁群算法用于求解连续函数优化问题,首先要在函数的解...