细菌觅食算法MATLAB实现
优化BP神经网络的快速细菌觅食算法
广西科学院学报 2011,27(3):221~223Journal of Guangxi Academy of Sciences Vol.27,No.3 August 2011收稿日期:2010-11-30作者简介:麦雄发(1974-),男,副教授,主要从事智能计算及其应用的研究。
优化BP神经网络的快速细菌觅食算法BP Neural Network based on Fast Bacterial ForagingAlgorithm麦雄发1,李 玲2,胡宝清3MAI Xiong-fa1,LI Ling2,HU Bao-qing3(1.广西师范学院数学科学学院,广西南宁 530001;2.广西师范学院继续教育学院,广西南宁 530001;3.广西师范学院资源与环境科学学院,广西南宁 530001)(1.School of Mathematical Sciences,Guangxi Teachers Education University,Nanning,Guangxi,530001,China;2.School of Continuing Education,Guangxi Teachers EducationUniversity,Nanning,Guangxi,530001,China;3.Faculty of Resource and Environmental Sci-ences,Guangxi Teachers Education University,Nanning,Guangxi,530001,China)摘要:为了提高BP神经网络的全局收敛能力和预测精度,提出了混合PSO的快速细菌觅食算法优化BP神经网络(FBFABP)的方法,并以石漠化危险度预警为例进行验证。
结果表明,通过使用粒子移动和简化细菌趋化操作,提高了算法的收敛速度和搜索全局最优值的能力。
相对于其它神经网络训练算法,该方法具有较好的预测精度和泛化能力,具有一定的优势。
基于免疫算法的细菌觅食算法优化研究
基于免疫算法的细菌觅食算法优化研究马宁;廖慧惠【摘要】细菌觅食算法BFA(Bacterial Foraging Algorithm)作为一种理论新颖、搜索机制独特的新型算法,广泛应用于各种智能优化问题.但是细菌觅食算法经常出现的速度较慢、步长一致的缺陷,提出在BFA的趋向性操作环节中调节细菌游动的步长,将步长逐步减小,以提高收敛速度.引入免疫算法中的克隆选择思想对细菌觅食算法中的复制操作进行替代;并通过实例对优化后的算法进行验证,结果表明:优化后的算法更加精确,寻优能力更强,稳定性更佳.%BFA (Bacterial Foraging Algorithm) is a new algorithm with novel theory and unique search mechanism widely used to solve intelligent optimization problems, but with low speed and uniform step length.In this paper, the step length of bacterial swimming is adjusted in the directional operation of BFA and reduced gradually to improve the convergence speed and the idea of clonal selection in immune algorithm is introduced to replace the copy operation in bacterial foraging algorithm.Case verification results show that optimized algorithm is more accurate, more powerful and more stable.【期刊名称】《菏泽学院学报》【年(卷),期】2017(039)002【总页数】7页(P19-25)【关键词】细菌觅食算法;免疫算法;优化【作者】马宁;廖慧惠【作者单位】安徽广播电视大学,安徽合肥 230022;安徽工业经济职业技术学院,安徽合肥 230051【正文语种】中文【中图分类】Q93;TP18参考自然界生物群体行为,人们相继研究出多种群体智能优化算法.其中Kenned、Eberhart两位学者在20世纪90年代中期根据鸟群捕食行为研制出PSO算法,即粒子群优化算法[1],这一算法的应用范围极广,在各领域均发挥着重要作用[2~4],除了各项实践问题;Passino学者依据人体肠道内大肠杆菌吞噬食物的实际过程,构建出BFA算法,即细菌觅食算法[5],掀起了生物运算领域的研究热潮.从整体上来看,不同算法的特征各不相同,具有一定的优势和不足,BFA算法的收敛精度、搜索性能较差,但便于跳出局部极限的约束,收敛速度相对较快.很多学者开展了大量研究,一起提高BFA算法的性能,并整合了该算法和其他算法,这些整合算法主要包括分布估计算法、粒子群算法等.储颖学者[6] 就参考粒子群优化算法的信息共享机制,优化改进了细菌觅食算法的群体感应机制;DasguptaA学者[7]等将交叉、变异操作引入到原算法内,构建了混合细菌觅食算法;KimDH 学者[8]研究出GA-BFO算法;Biswas A学者[9]在细菌觅食算法的趋化算子中融入粒子群法,形成了新型算法,无需借助趋化操作;以Kim[10]为代表的学者们在BFO算法内融入变异算子及交叉算子,形成了GABFO算法;Luh学者[11]基于细菌进化的层面,构建了BEA算法(细菌进化算法);刘小龙[12]等多位学者在繁殖算子中融入分布估计算法思路,分布估计再生的半数细菌,这些细菌都具有良好的细菌能量,对细菌自适应迁移率进行了分析,指定随机迁移了能量不良的细菌,希望改善细菌寻优性能,若在低概率下迁移能量良好的细菌,从本质上迁移即为退化解的过程,降低了寻优专区恶性,切寻优速度大大降低;Biswas学者[13]讲粒子群法引入到细菌趋化算子内,确保细菌对全局极值的感知性,借助迭代公式来更新细菌位置,弱化了趋化算子的功能性,使时间复杂性增大;Dasgupta学者[13]等将变异和交叉算子都融合到细菌进化内,丰富了种群类型,然而也存在优良个体的缺失问题.鉴于以上情况,本文通过利用免疫算法中的克隆选择思想对筛选出来的最优细菌进行繁殖变异,随着克隆细菌群落的变异以及随机交叉,进而替换细菌群落中适应度最差个体,指引算法提升搜索的精准度,并且通过调节细菌游动的步长来提高细菌觅食优化算法的收敛速度,实例证明免疫算法可以使细菌群体的搜索精度以及适应度有效提高.基于BFO算法下,模型赢编码待优化问题,对其解在搜索空间内细菌的具体状态进行定义.在处理实际问题的过程中,可以划分为以下几步:形成初始解群体、对评价函数值进行运算、借助群体彼此影响、作用机制实施迭代优化,在这个过程中应对趋化、繁殖及迁移三大算子进行循环式的执行操作,从而得到最优解.在算法模型内,对细菌实现最有觅食的行为进行模拟可以形成趋化算子,体现为在游动、翻转作用下,细菌能够游动并集中到营养较为丰富的位置,进行有目标化的运动,探索出最优路径.在细菌觅食优化算法下,细菌在不同方向上的移动单位步长即为翻转,而游动为若翻转后细菌适应值有所改善,需要继续沿此方向进行移动,实现适应值的最优化.细菌单个完整生命周期就是算法定义趋化周期,若结束生命周期,细菌会在遵循生物生存法则进行淘汰式繁殖.执行细菌觅食优化算法的过程中,应注重低等生物自身的繁殖性能及其对环境的适应能力,Passino学者将非常规的觅食策略融入到该算法的执行中,认为细菌能量就是趋化时细菌的适应值的总和,半数细菌(能量较差)在单个生命周期中死亡,且半数细菌繁殖(能量良好)变为两个子细菌,则母代细菌生物特点会被子细菌所继承.趋化算子能够使子细菌局部搜索准确性得到明显改善,细菌快速收敛性借助繁殖算子能够大大增加.如果需要解决的NP问题相对繁琐和复杂,要想不出现局部极小的状况,使算法全局寻优性能增大,就要结合算法限定,在细菌结束繁殖操作后,在搜索空间随意位置,按照特定概率对其进行迁移.由此得知,细菌局部搜索性能在BFO算法下的实现,依靠的是趋化算子能够随机搜索领域,也能够结合适应度调控方向.因为没有发挥群体周边细菌信息运用机制应用的作用,所以使算法收敛速度降低,出现局部最优的状况.完成趋化周期后,结合细菌能量,算法能够执行繁殖操作,这就能够改善寻优准确性,然而由于算法具有局部最优的缺陷,所以也会出现一系列的不熟和早熟等现象.建立在免疫系统基础上的免疫算法处于一种学习算法,涵盖于人工免疫系统研究领域.20世纪70年代,Jerne学者[14]就构建出免疫系统模型和免疫系统数学框架,之后Pereslon对上述研究成果进行完善,提出独特型网络的概率描述法[15],并将该算法用于机器人运动路径规划领域内,并取得了明显的进步.免疫算法能够形成求解复杂系统优化问题法,与问题具体领域并没有较大的联系,在问题类型方面具有良好的鲁棒性,在不同学科中均发挥着极其重要的作用,包括控制工程领域、建筑结构设计领域及函数设计领域等.免疫算法原理相对繁琐,结合相关调查分析显示,免疫算法融合性较强[16],能够有效融合蚁群算法、鸟群算法和主流遗传算法等,然而当前很少有研究学者分析免疫算法同细菌觅食优化算法的整合.Mori学者[17]就针对免疫算法进行了研究,认为免疫算法对抗体剑亲和度的关注程度较低,只是分析抗原、抗体剑的亲和度,其借助良好的搜索性能,能够在网络安全[18]、路径规划[19~20]等方面发挥重要作用.本研究主要针对免疫算法的克隆选择卢纶,开展其同细菌觅食算的复制融合研究,希望能够改善算法的搜索精度和整体性能.基于免疫算法的细菌觅食优化算法的实现过程为:针对细菌种群开展趋化操作.1)形成单位向量Ψ(j),细菌进行翻转.2)对细菌的种群位置进行改善.细菌个体要结合灵敏度开展群游操作,若适应度增大到最大值,表示完成操作,则灵敏度表示成:公式内灵敏度算子是Ddlta,其数值同适应度函数变化范围有直接的联系.细菌群游式表示成:公式内趋化周期是j.3)细菌进行繁殖再生,结束趋化操作,依次按照克隆、变异、交叉和选择的顺序处理当前细菌群体.4)根据适应度加和对细菌排序,精英细菌就是待克隆群体,为Sr个细菌(适应度较强).细菌群个数的半数为精英细菌,Sr=S/2.5)克隆繁殖精英细菌,克隆群体表示为Sc,那么结合公式(3),对适应度进行标准化处理,结合公式(4)对精英细菌的数量进行运算,得出,克隆繁殖数Sc_size,细菌个体的适应度与克隆群体的数量成正比,度量细胞抗原和抗体的亲和度递增函数表示为β.参考公式(5)进行高频变异,变异概率为δ,细菌个体适应度与变异概率越大两者呈正比关系,而且适应度越强大表示搜索空间更加广阔.结合公式(7)进行随机交叉,克隆群体内随意对差异化的细菌个体进行选择,得到k1,k2,k3,k4,免疫细胞为Si个,按照公式(8)将其融入在克隆群体内,构建出Sn,即克隆繁殖细菌群.在Sn内对适应度最强的细菌个体进行挑选,数量为Sr个,将其替换板书细菌个体(适应度不强).6)执行细菌驱散操作,在增强算法全局搜索性能的过程中,要结合驱散概率,驱散适应度不强的细菌.迁移标准细菌模式算法时,算法能够对概率ped进行确定,在解空间内对细菌个体进行随意性的迁移,如果概率ped比随机数要大,那么需要求迁移该细菌,借助该方式来提升细菌跳出局部极值的概率.鉴于算法内细菌迁移的概率一致,很可能会迁移全局最优值周边或寻优能力相对较强的细菌,就等同于细菌丢失探寻最优解的可能,迁移就会转变为退化解的过程,根本起不到改善寻优精度和加快寻优速度的效果.改进细菌的迁移操作后,就不应驱散适应度相对较强的细菌,要结合概率来对细菌执行驱散操作,这样能够消除细菌在处于全局最优化附近而被驱散现象的发生,也能够使细菌群摆脱局部最优限制的约束.7)对循环结束进行判断,若达到结束条件就应结束循环,可以将结果进行输出.结合算法基本原理,对免疫优化下细菌觅食优化算法实现流程进行归纳,结果详见图1:在DASGUPTA文章中分析BFA算法的收敛性时[13],对细菌觅食算法进行模拟菌群中每个细菌个体相互发生的影响没有进行充分的考虑.由于文中提到的融合免疫算法结合并入,因此对于融合免疫算法的收敛性需要重新进行验证.按照学者李涛的研究[14]:抗体种群为Aο,抗体空间几何I*,V(A(k))通过计算得出最优解个数B*,进行简化,可得由此可以得到此算法进行收敛直到最优解集的概率为1.如果算法迭代数量达到一定上限时,就会进行一定的收敛.在融合免疫算法中的抗体种群用A0表示,如下: 其中,Ai(k)表示细菌i在第k次操作的时候所在的位置,而Ai(k)是由Ai(k-1)经过克隆、变异而得.马尔克失链可对这一过程进行描述.为了方便表述,标记:由贝叶斯条件概率公式有:由免疫算法的特征可知:则有又因为所以故而因为所以所以综上所述,GBFA以概率1收敛.选取Sphere函数f1=(x1)、Griewank函数f2=(x2)、Rastrigrin函数f3=(x3)作为测试函数:维数皆设置为20,引用传统BFA算法和本文的融合免疫算法进行计算.其中,S=40,最大的趋势化次数Nc=20,最大的繁殖次数Nre=4,最大的迁移次数将测试曲线绘制到图2~图4.从图2~图4,可以看出:图2中,对于Sphere函数的寻优曲线,GBFA仅需要12次迭代便可以寻找出最优值,而传统BFA需要22次迭代才可以寻找出最优值,迭代次数为GBFA的2.67倍;Griewank函数具有很强的震荡性质,一般无法找到它们的最优解.从图3可以看出,传统BFA无法找到Griewank函数的最优解,但GBFA搜索到的最优解为0,说明GBFA的搜索能力远大于传统BFA.图4中,对于Rastrigrin函数的寻优曲线,GBFA仅仅需要23次迭代便可以寻找出最优值,而传统BFA需要53次迭代才可以寻找出最优值,迭代次数为GBFA的2.30倍.简而言之,GBFA的搜索能力和搜索速度远大于传统BFA.GBFA和传统BFA收敛精度的比较见表1.通过表1,对于Sphere函数f1(x1)、Griewank函数f2(x2)、Rastrigrin函数f3=(x3),融合免疫算法的精度远大于传统BFA,寻优能力更强.并且,融合免疫算法的方差均小于传统BFA的方差,说明融合免疫算法的稳定性更好.本文针对BFA算法的三个操作环节(复制操作环节、趋向性操作环节和迁移操作环节),免疫算法克隆选择思想的相关思想,提出BFA的一种融合免疫算法.并利用Sphere函数f1(x1)、Griewank函数f2(x2)、Rastrigrin函数f3(x3)作为实例进行验证,发现融合免疫算法的搜索能力和搜索速度远大于传统BFA,寻优能力更强、稳定性更好.【相关文献】[1]黄少荣.粒子群优化算法综述[J].计算机工程与设计,2009(8):1977-1980.[2]付志军,冯丽,杜伟宁,等.离散粒子群优化算法在流水作业调度问题中的应用[J].吉林大学学报: 理学版,2014,52(3):561-564.[3]任贝,韩飞,吴坚.基于遗传算法的摄像机标定[J].吉林大学学报: 信息科学版,2013(4) : 432-436.[4]张杭悦,陈谋.基于混合优化鱼群算法的近空间飞行器控制分配[J].吉林大学学报: 信息科学版,2014(4):369-376. [5]周雅兰.细菌觅食优化算法的研究与应用[J].计算机工程与应用,2010,46(20):16-21. [6]储颖,糜华,纪震,等.基于粒子群优化的快速细菌群游算法[J].数据采集与处理,2010,25(4) : 442-448. [7]Dasgupta A, Dasgupta S, Das S, et al. A synergyof differential evolution andbacterial foraging optimization.for global optimization[J]. Neural Network Word,2007,17(6): 607-626.[8]Kim D H, Abraham A, Cho J H. A hybrid genetic algorithm and bacterial foraging approach[J]. Information Sciences, 2007, 177(18): 3918-3937.[9]Biswas A, Dasgupta S, Das S, et al. Synergy of PSO and bacterial foraging op-timization:A comparative study on numerical benchmarks[C]. Proc of the 2nd IntSymposium on Hybrid Artificial Intelligent Systems. Salamanca, 2007:255-263.[10]NAYAGAMA V L G,MURALIKRISHNAN S,SIVARAMAN G.Multi-criteria decision-making method based on interval-valued intuitionistic fuzzy sets[J].Expert Systems with Applications,2011,38(3) : 1464-1467. [11]NAYAGAMAVLG,SIVARAMAN G.Ranking of interval valuedintuitionistic fuzzy sets[J].Applied Soft Computing,2011,11(4) :3368-3372.[12]刘小龙,李荣钧,杨萍.基于高斯分布估计的细菌觅食优化算法[J].控制与决策,2011,26(8) : 1233-1238.[13]BISWASA,DASGUPTAS,DASS,etal.Synergy of PSO and bacterial foragingoptimization—A comparative study on numericalbenchmarks[EB /OL].[2010-05-10].http: //www.softcomputing.net/hais072.pdf.[14]Jerne.N.K. Towards a Network Theory of the Immune System. Annual Immunology, 1974,125C:373-389.[15]Perelson.A.S. Immune Network Theory. Immunological Review,1989,10:5-36.[16]莫宏伟.人工免疫系统原理与应用[M].哈尔滨: 哈尔滨工业大学出版社,2002.[17]MORI K,TSUKIYAMA M,FUKUDA T.Immune Algorithm with Searching Diversity and Its Application to Resource Allocation Problem[J].Transactions-Institute of Electrical Engineers of Japan,1993,113C(10) : 872-878.[18]刘丽峰,张树清,李新红.人工免疫算法路径规划在林火救援中的应用[J].吉林大学学报: 信息科学版,2012,30(4):433-440.[19]江超,王海燕,陈磊,等.基于生物免疫原理的新型无线传感器网络安全算法[J].吉林大学学报: 理学版,2013,50(6):1204-1208.[20]胡亮,王程明,赵阔,等.基于人工免疫模型的入侵检测系统中检测器生成算法的分析与改进[J].吉林大学学报:理学版,2010,48(1) : 67-72.。
细菌觅食机制粒子群优化算法
细菌觅食机制粒子群优化算法程军;吴燕子【摘要】针对基本粒子群优化算法易陷入局部极值的缺陷,提出了一种细菌觅食机制粒子群优化算法。
其基本思想是在粒子群优化算法中引入细菌觅食行为机制,提高PSO算法跳出局部极值的能力,借以改善PSO算法的寻优性能。
采用标准测试函数的实验结果表明,该算法在收敛速度和求解精度方面均有显著改进。
%A novel particle swarm optimization algorithm based on bacterial foraging mechanism ( PSOBF ) is proposed for conventional particle swarm optimization algorithms ( PSO) often trapped in local optima.The basic idea is to introduce the bacterial foraging mechanism into particle swarm optimization algorithm to improve the ability of PSO algorithm.The experimental results of six benchmark functions demonstrate the efficacy of the present algorithm.【期刊名称】《广州航海高等专科学校学报》【年(卷),期】2015(000)002【总页数】4页(P36-39)【关键词】粒子群优化算法;细菌觅食;机制【作者】程军;吴燕子【作者单位】广州航海学院港口与航运管理系,广东广州510725; 华南理工大学工商管理学院,广东广州510640;广州航海学院港口与航运管理系,广东广州510725【正文语种】中文【中图分类】TP18由Kennedy和Eberhart[1]在1995年提出的粒子群优化算法(Particle Swarm Optimization, PSO),对参数搜索空间没有如连续、可导及单峰等苛刻的要求,因此在众多经济管理、工程技术等实际问题中获得了成功的应用[2].针对PSO容易陷入早熟或不熟的缺陷,改进的途径主要表现在粒子群初始化、拓扑结构设计、参数选择、与其他智能算法混合等方面[3].近年来,将生物觅食机制融入PSO算法为改进PSO算法的性能提供了新途径.王联国等[4]将人工鱼群算法中的改进觅食算子引入基本PSO算法,提出了一种具有觅食算子的PSO算法,改善算法的全局优化能力及提高算法的收敛速度和计算精度;刘伟等[5]提出基于细菌觅食机制改进粒子群算法,采用PSO 算法完成整个空间的全局搜索,通过细菌觅食算法(BFOA) 中的趋向性运动算子完成局部搜索的功能.本文在现有研究的基础上根据细菌觅食行为规律,提出一种基于细菌觅食机制的粒子群优化算法PSOBF(particle swarm optimization based on bacterial foraging mechanism),我们将细菌觅食机制嵌入PSO,构造PSOBF算法模型,其主要思想是在粒子群优化算法中引入细菌觅食行为,提高PSO算法跳出局部极值的能力,借以改善PSO算法的寻优性能.标准测试函数的实验结果表明该算法收敛速度快,求解精度高.微生物领域针对大肠杆菌(E. Coli)的研究发现,细胞膜、细胞壁、细胞质和细胞核是大肠杆菌的基本组成部分,在大肠杆菌的周围分布着纤毛和鞭毛,纤毛是一种突起状的细胞,能通过运动为细菌传递信息,鞭毛是菌体上细长而且弯曲的丝状物,作为细菌的运动器官,其功能是帮助细胞进行移动[6].大肠杆菌在适宜的环境中生存和进化,其繁殖过程是在自身长到一定长度后,在身体的中部进行裂变一分为二,形成两段构成新的个体.大肠杆菌在觅食的过程中表现出一定的记忆能力,实现对所经过的环境状态的记忆,帮助其在觅食过程中往食物源方向靠近,并且避开有毒物质.在大肠杆菌趋向食物方向移动的过程中,会对每次经过的状态进行评价,提供相应的信息帮助其采取有效的措施进而改变下一步的状态[7].大肠杆菌的生存环境会因为各种因素的影响而改变,这些因素包括来自细菌自身的活动,如大肠杆菌消化食物导致其周围环境的改变,也包括来自外界环境的变化,如细菌生存环境温度的急剧上升可以导致该环境下细菌的死亡,水的冲刷作用将细菌从一个环境迁移到另外一个新的环境.进一步的研究发现,在细菌群落中存在一种能进行信息交流的群体感应机制,细菌通过自身产生的小信号分子进行群体通信,我们将这种物质称为“自我诱导物”.细菌根据自我诱导物数量的多少来判断细菌邻域的群体密度,采取相应的措施来调整其生理行为[8].细菌通过群体感应机制来判断邻域内的其他细菌数量,当细菌所处的环境中自我诱导物浓度较低时,细菌无法感应到其他细菌的存在;当一定数量的细菌聚集在某个区域,会导致自我诱导物浓度增加并达到一定的阈值,细菌会被该区域所吸引,这时的自我诱导物就成为一种吸引剂;当细菌数量在该区域继续增加时,自我诱导物质的浓度会进一步增强,当自我诱导物浓度增加到超过了某个阈值时,细菌会释放出另外一种用来阻止细菌过度聚集的自我诱导物,我们称之为排斥剂.细菌在觅食过程中,通过翻转(tumble)和游动(run)向营养丰富的区域靠近,而群体内存在细菌相互影响和作用的机制,借助趋化(chemotaxis)、繁殖(reproduction)和迁移(elimination-dispersal)等功能,实现最优化的觅食[9].在细菌的生命周期中,按照优胜劣汰、适者生存的自然法则进行繁殖,细菌作为低等生物,具有很强的环境适应能力和繁殖能力.Passino采用非常规的觅食策略构造了细菌觅食算法,将细菌能量定义为趋化过程中细菌适应度值的累加和,在生命周期内根据细菌能量的优劣来更新种群,具体做法是将能量较好的一半细菌进行繁殖一分为二,新的细菌继承了原始细菌的位置、移动步长和能量等生物特性,而将能量较差的一半细菌淘汰[10].PSO在拥有原理简单、容易操作等优点的同时,还存在一些无法克服的缺陷,比如进化过程中群体多样性的减少、缺乏有效的机制跳出局部极值导致算法“早熟”.鉴于细菌觅食过程中表现出的优良特性,我们将细菌觅食机制嵌入PSO,构造PSOBF算法模型,其主要思想是在粒子群优化算法中引入细菌觅食行为,提高PSO算法跳出局部极值的能力,借以改善PSO算法的寻优性能.PSOBF算法的主要步骤如下:步骤1:在初始化范围内对粒子群的位置和速度进行非对称初始化.步骤2:计算所有粒子的适应度值,将粒子的当前位置设置为个体历史最好位置,将所有粒子适应度值最优的位置作为全局最优.步骤3:判断迭代次数是否小于设定值,是则进入下一步,否则转入步骤8.步骤4:采用更新公式更新粒子的速度和位置.步骤5:重新计算粒子的适应度值,将结果与个体的历史最优值比较,如果更优,则将该粒子现在的位置作为新的个体最优值点.步骤6:将粒子的个体历史最优与群体最优值进行比较,若更优,则将其作为当前全局最优位置.步骤7:计算能量值,当其满足条件时发生繁殖,能量值较好的个体繁殖出个体,取代能量值较差的个体,转入步骤4.步骤8:输出结果.3.1 测试函数本文选取智能优化中6个常用的测试函数进行分析,详细描述见表1.其中,f1,f2是单峰函数,f3-f6属于多峰函数. 在表1中给出每个函数的表达式、搜索范围以及初始化范围.3.2 实验参数设置依然选择前述的f1~f6共6个标准测试函数进行仿真实验,每个标准测试函数的初始化参数设置见表1.将测试函数的维数设置为D=30,种群的粒子数量设置为n=80,采用非对称初始化将初始化的范围确定在搜索空间的一部分,对SPSO,PSOPB,PSOBF的速度上下限设置为Vmax=Ud,Vmin=Ld,参数设置依据文献[11]选取,ω=0.729,c1=c2=2.05,仿真实验的测试平台采用Windows 7系统,仿真软件matlab 7.0,实验设置的最大迭代次数为6 000次,每个实验独立运行50次.3.3 实验结果与分析将3种粒子群算法对6个测试函数分别独立运行50次,最大迭代次数为6 000,得到的实验结果如表2所示.表2中给出了各函数对每种算法独立测试50次结果的最佳值、最差值、平均值、标准差、计算所耗费时间5个指标衡量.从表2和计算过程可以看出:对于单峰函数f1,PSOBF比SPSO和PSOPB具有更快的收敛速度和更高的搜索精度,计算时间也比较节省;对于单峰函数f2,PSOBF和PSOPB在搜索后期的收敛速度要优于SPSO,PSOBF和PSOPB在寻优性能方面各有优劣,但总体相差不大;对于多峰函数f3,在搜索过程的早期PSOBF的收敛速度优于PSOPB,但在搜索后期PSOBF的收敛速度有所减缓;对于多峰函数f4,PSOBF的整体寻优性能略优于PSOPB;对于多峰函数f5,PSOBF的收敛速度优于SPSO,但比PSOPB的寻优性能略微逊色;对于多峰函数f6,PSOBF的收敛速度要明显优于PSOPB和SPSO.本文构建了一种基于细菌觅食机制的改进粒子群算法(PSOBF).该算法将细菌觅食机制嵌入PSO进而构造PSOBF算法模型,在粒子群优化算法中引入细菌觅食行为,利用细菌觅食过程中表现出的优良特性来提高PSO算法跳出局部极值的能力,以实现改善PSO算法的寻优性能.实验结果表明该方法在收敛性方面有显著改进.【相关文献】[1] KENNEDY J, EBERHART R C. Particle Swarm Optimization[C]//Proceedings of the IEEE International Conference on Neural Networks IV. Piscataway:IEEE, 1995: 1942-1948.[2] 谢晓锋, 张文俊, 杨之廉. 微粒群算法综述[J]. 控制与决策, 2003, 18(2): 129-133.[3] ANGELINE P J. Using selection to improve particle swarm optimization[C]//Proc of IEEE World Congress on Computational Intelligence. Anchorage:IEEE, 1998: 84-89.[4] 王联国, 洪毅, 赵付青. 基于觅食算子的粒子群优化算法[J]. 计算机应用与软件, 2009, 26(11): 112-115.[5] 刘伟, 陈舒, 王圣慧, 等. 基于细菌觅食机制改进粒子群算法的研究[J]. 系统仿真技术, 2012, 8(1): 23-26.[6] ALBERTS B, BRAY D, LEWIS J, et al. Watson. Molecular Biology of the Cell [M]. New York:Garland Publishing, 1989: 902-903.[7] BERG H. Motile behavior of bacteria [J]. Phys. Today,Jan, 2000(1): 24-29.[8] 李任峰,何启盖,周锐,等. 细菌鞭毛研究概况及进展[J]. 微生物学通报,2005,32(6):124-127.[9] 刘小龙,李荣钧,杨萍. 基于高斯分布估计的细菌觅食优化算法[J]. 控制与决策,2011,26(8):1233-1238.[10] PASSINO K M. Biomimicry of Bacterial Foraging for Distributed Optimization and Control [J]. IEEE Control Systems, 2002, 22(3): 52-67.[11] 常先英. 粒子群优化算法的改进及应用[D]. 广州:华南理工大学,2009.。
连续优化问题的细菌觅食改进算法
连续优化问题的细菌觅食改进算法戴秋萍;马良;郗莹【摘要】为更有效解决连续优化问题,提出了一种基于群体搜索的群智能优化算法——细菌觅食算法.该算法模拟了细菌觅食全过程,并对细菌个体的初始化、趋化操作中的搜索步长和搜索方向进行了改进.改进后的算法有效避免了算法陷入局部最优,而算法中采用的搜索步长,进一步提高了优化的收敛速度.经大量实验仿真表明,细菌觅食算法能够有效地求解连续优化问题.将仿真结果与其它算法对比,证明了细菌觅食算法的搜索质量优于其它算法.【期刊名称】《上海理工大学学报》【年(卷),期】2013(035)002【总页数】4页(P103-106)【关键词】连续优化问题;细菌觅食;局部优化【作者】戴秋萍;马良;郗莹【作者单位】上海理工大学管理学院,上海200093;上海理工大学管理学院,上海200093;上海理工大学管理学院,上海200093【正文语种】中文【中图分类】N945.15经典的优化算法在函数优化问题中,常常要求函数连续可微,因此在求解过程中需要借助一些基于梯度信息的数学技巧,并且在接近最优解时容易出现锯齿现象,造成收敛速度缓慢[1].20世纪50年代中期,人们从生物进化的机理中得到启发,创立了仿生学,并提出了许多解决复杂优化问题的智能方法,如神经网络、遗传算法[2]、进化策略、蚂蚁算法[3]等,这些方法在连续函数优化问题中取得了较好的结果.本文提出了一种新的智能优化算法——细菌觅食算法对连续函数优化问题进行求解.细菌觅食算法(bacterial foraging optimization,BFO)是由Passino[4]于2002年提出来的一种仿生随机搜索算法,该算法具有群体智能性,并可进行并行搜索.目前,BFO已被用于车间调度问题、自适应控制领域、噪声干扰下的谐波估计问题和PID(proportional integral derivative)控制器的设计等方面,并获得了较好的效果[5-6].本文对细菌觅食算法操作步骤进行了改进,有效地改善了该算法极易陷入局部最优的缺点,使其在解决复杂连续优化问题时,全局搜索能力大大增强.另外,通过大量仿真实验验证了该算法的有效性.细菌觅食算法是基于大肠杆菌在觅食过程中体现出来的智能行为的一种新型仿生优化算法,其具有群体智能性、并行性等特点.细菌觅食算法包括趋化操作(chemotaxis)、复制操作(reproduction)和迁徙(elimination and dispersal)操作.这3种操作方式是模仿细菌觅食的趋向行为、复制行为和迁移行为的抽象[7-8].a.趋化操作大肠杆菌在寻找食物源的过程中,其运动是通过表层的鞭毛实现的.当鞭毛全部逆时针摆动时,大肠杆菌将会向前行;当鞭毛全部顺时针摆动时,它会减速至停止.鞭毛的摆动对应着细菌个体对当前适应值的判断,并决定是否对其位置进行调整和确定调整的方向和力度.趋化操作模拟了大肠杆菌的这个运动过程,包括游动和翻转两个操作.设pi(j,k,l)表示细菌个体i的当前位置,j表示第j次趋化行为,k表示第k 次复制行为,l表示第l次迁徙行为.则其中,φ(j)表示游动的方向;C(i)表示前进步长.b.复制操作设群体规模为S,在完成设定次数的趋向操作之后,将群体中的个体按照其适应度值进行排序,将排在后面S/2的个体删除,剩下的个体进行自我复制,保证群体规模的稳定性.c.迁徙操作迁徙操作按照预先设定的一个概率发生,若某一个个体满足迁徙操作发生的条件,那么即将此个体删除,并生成一个新的个体代替.相当于将原来个体重新分配到一个新的位置,即以一定的概率将个体随机驱散到搜索空间.2.1 初始化操作改进在细菌觅食算法中,细菌种群的大小直接影响细菌寻求最优解的能力.种群数量越大,其初始覆盖区域越大,靠近最优解的概率就越大,能避免算法陷入局部极值,但同时增加了算法的计算量.因此,本文将初始化操作进行了改进.改进后,在细菌规模较小的情况下,能比较有效地改善初始化后细菌群体的覆盖范围(见图1、图2).确定群体规模S之后,将群体搜索的空间分成S个区域,每个细菌个体的初始位置为S个区域的中心点,随即细菌将在各自区域内搜索.由图1可知,细菌个体随机生成时,菌群可能在搜索空间内分布不均,在搜索最优解过程中,极有可能在限定的游动步长内无法找到最优解而陷入局部最优.2.2 趋化操作改进细菌觅食算法中,趋化操作是细菌觅食过程中最重要的一个步骤.基本细菌觅食算法在进行趋化操作时,细菌个体是根据历史信息按固定步长朝着食物源方向游动.在解决连续函数优化问题,尤其是多峰函数优化问题时,传统的操作方式易使得细菌个体错过最优解,本文对趋化搜索方式进行了改进.将细菌个体所在区域切分为n×n块,每个细菌在进行翻转操作时,仅在细菌周围的8个方向中随机选取,游动过程中每游动一次前进步长缩短为原来步长的0.8倍,C(i)=0.8C(i).当细菌个体游动次数并未达到设定游动次数时,细菌将再进行一次翻转操作.趋化操作步骤:a.确定细菌个体i,确定游动方向φ(j).b.细菌游动pi(j+1,k,l)=pi(j,k,l)+ C(i)φ(j).c.判断当前位置是否更优,是则个体i被新个体取代,继续步骤b,步长C(i)变为0.8C(i).d.判断是否达到设定游动次数,未达到转步骤a,达到游动次数细菌个体i趋化操作结束.2.3 复制操作改进细菌觅食过程中,一段时间后,细菌会根据个体位置的适应度值进行优劣排序.排在后面的S/2个细菌死亡,而排在前面的S/2个细菌进行自我复制,随即细菌往较小范围聚集.在求解多峰连续优化问题时,菌群极有可能跳过最优解而陷入局部最优.本算法将细菌个体首先随机与邻域周围的一个细菌进行交叉变异,变异后的细菌个体适应度值若优于原个体,原个体将被替代.通过一次改进后的复制操作后,整个菌群完成一次更新,菌群规模不变,每个细菌个体仅在各自区域及邻域内进行变异和适应度值比较,从而有效地防止了菌群向较小范围内聚集.改进后的复制操作不再只是觅食能力强的细菌个体单纯的自我繁殖过程,整个菌群群体都朝着更优的方向游动,提高了菌群整体的寻优能力.改进后复制操作过程如图3所示.前述细菌觅食算法采用Matlab 7予以实现,在PC系列机的Windows 7系统环境下运行通过.本文通过大量实例验证了此改进算法的有效性,下面给出4个算例及求解结果分析(见图4~7,图5~7见下页).算法相关参数设定:细菌规模为225,趋向操作数为10,复制操作数为4,迁徙操作数为2.算例1由函数示意图可知,该函数最优解处于中间区域,周围有很多局部极值围绕着最优解,用传统的细菌觅食算法陷入局部最优的可能性非常大.元胞蚁群算法、混沌算法均可得到最优解1,LINGO软件得到的最优解为0.646 848 8,Matlab优化工具得到的结果为0.990 3.算例2该问题的最优解被最差解包围,4个局部值点为(-5.12,5.12)、(-5.12,-5.12)、(5.12,5.12)、(5.12,-5.12),函数值均为2 748.78.运行改进后的细菌觅食算法求解该问题能够有效地获得最优解.算例3该函数在(1,1)处有最小值0,且在最优解附近存在病态,用常规方法容易陷入局部最优,难以搜索到最优解.算例4该算例可看出是典型的多峰函数,运用传统算法求解最优解相当困难.遗传算法目前所求最优解为38.827 533,运行LINGO软件与Matlab得到的解均小于38. 表1为该算法求解上述函数运行30次后的结果分析.其中平均偏差率为算法运行30次解的平均值与最优解的比值.首先对细菌初始化操作进行了改进,改变了传统的细菌觅食算法中的初始方式,使得菌群规模较小的情况下,能有较大的覆盖面.此外,本算法对细菌个体的搜索方式也进行了适当改进,增强了个体的局部搜索能力.为防止菌群在复制操作中过快地向小范围聚集而陷入局部最优,菌群进行变异性复制,不仅保证了菌群整体朝更优方向游动,同时大大提高了此算法的全局搜索能力.通过实验表明,改进后的细菌觅食算法在求解连续优化问题时,稳定性好,能够快速有效地找到最优解.通过与其它算法相比可得出以下结论:a.改进后的细菌觅食算法改进了传统细菌觅食算法的缺点,有效地改善了传统算法的收敛速度和全局寻优能力,所获最优解质量得到改善.b.改进后的细菌觅食算法能够有效解决连续优化问题,为连续优化问题提供一种新的解决方法.【相关文献】[1]马良,朱刚,宁爱兵.蚁群优化算法[M].北京:科学出版社,2008.[2]张惠珍,马良.基于变尺度混沌优化策略的混合遗传算法及在神经网络中的应用[J].上海理工大学学报,2007,29(3):215-219.[3]邱模杰,马良.约束平面选址问题的蚂蚁算法[J].上海理工大学学报,2000,22(9):61-62.[4] Passino K M.Biomimicry of bacterial foraging for distributed optimization and control[J].IEEE Control Systems Magazine,2002,22(3):52-67.[5]梁艳春,吴春国,时小虎,等.群体智能优化算法理论与应用[M].北京:科学出版社,2009.[6]张娜.细菌觅食优化算法求解车间调度问题的研究[D].吉林:吉林大学,2007.[7]胡海波,黄友锐.混合粒子群算法优化分数阶P/D控制参数研究[J].计算机应用,2009,29(9):2483 -2486.[8]李亚楠.菌群优化算法的研究[D].哈尔滨:哈尔滨工业大学,2009.。
基于改进的细菌觅食FCM聚类算法
基于改进的细菌觅食FCM聚类算法作者:滕建乐红兵来源:《电子技术与软件工程》2018年第17期摘要传统的模糊C均值聚类算法对初值敏感,容易陷入局部最优的问题,本文结合细菌觅食算法和粒子群算法的优点,将两种算法结合,将其应用与改进传统的模糊C均值聚类算法的改进,该改进方式既保留了粒子群算法的全局搜索能力也保留了细菌觅食算法的局部搜索能力,将细菌的趋化过程转换为粒子群算法中寻找最优解的过程,并保留了细菌觅食算法中的复制、迁徒,最后将算法的最后剩余的点作为模糊C均值聚类算法的起始点。
在UCI数据集的测试结果表明,该算法有效解决了初始值的敏感和局部最优的问题。
【关键词】细菌觅食 FCM粒子群随着数据挖掘技术引用的不断深入,聚类作为数据挖掘的重要分支其亦成为研究的重点。
1974年Dunn通过把模糊数学和传统的K-means聚类算法相结合,提出了模糊C均值聚类算法。
随后模糊C均值聚类得到了广泛的应用,但同时存在多个问题如聚类数目不能自动确定;对初始值敏感,容易陷入局部最优等问题等。
粒子群算法(PSO)是由Kennedy和Eberhart提出,通过模拟鸟群捕食行为来求问题的最优解的一种智能优化算法。
细菌觅食算法(BFO)由Passino模拟大肠杆菌在人体肠道中的觅食行文提出的一种智能优化算法。
但两种算法都有自己的优缺点,PSO算法在后期缺乏限制机制,容易陷入局部最优;BFO算法在趋化运动中具有随机性,收敛速度比较慢,没有考虑其他细菌的信息。
本文将两种算法结合解决了两个智能优化算法的缺陷,来改进模糊C均值算法的初始点。
1 算法概述1.1 模糊C均值算法模糊C均值算法,使用隶属度来改进C均值聚类算法。
设有集合x=(X1,X2,X3,X4...X n)分为C={c1,c2,c3,c4…,c k)聚类,每个样本点以一定的隶属度属于某一聚类,隶属度为uij(i=1,2,…"n;j=1,2,…k)模糊C均值算法通过不断的迭代,直达目标函数J (1)到预定的最小值。
细菌觅食优化算法的研究与应用
迁徙操作流程图
设 Nc、 复制和迁徙作的执行次 N re 、 N ed 分别是趋向性、
j、 k、 l 分别是对这 3 个操作的计数参数, k=0, 数, 初始时 j=0, l=0, 图 4 是 BFOA 的流程图。
4-5] 除了上述 3 个主要操作外, BFOA 还有群聚性的特点 [1, 。
每个细菌个体除按照自己的方式搜索食物外, 还收到种群中 其他个体发出的吸引力信号, 即个体会游向种群中心, 同时也 会收到附近个体发出的排斥力信号, 以保持个体与个体之间 的安全距离。因此 BFOA 中的每一个细菌个体寻找食物的决 策行为受两个因素的影响: 一是自身的信息, 即个体觅食的目 的, 目的是使个体在单位时间内获取的能量最大; 二是其他个
[1]
2 细菌觅食优化算法 2.1 BFOA 的基本原理与流程
细菌觅食优化算法是新兴的进化算法, 也是一种全局随 机搜索算法。该算法主要通过趋向性操作、 复制操作和迁徙 操作这三种操作迭代计算来求解问题, 下面介绍这三大操作
4-5] 及其流程[1, 。
(1) 趋向性操作 大肠杆菌在觅食过程中有两种基本运动: 游动和旋转。 这两种运动依靠细菌表面遍布的鞭毛以 100~200 r/s 的速度 同方向摆动来实现。当所有鞭毛逆时针转动时, 大肠杆菌以 10~20 μm/s 的平均速度向前游动, 游动的平均时间大约为 (0.86±1.18) s; 当所有鞭毛顺时针转动时, 大肠杆菌在原地旋 转, 并随机选择一个方向进行下一次的游动, 旋转的平均时间 大约是 (0.14±0.19) s。通常, 细菌在环境差的区域 (如: 有毒区 域) 会较频繁地旋转, 在环境好的区域 (如: 食物丰富的区域)
否
l<Ned? 是 k<Nre? 是 j<Nc? 是 趋向性操作 j=j+1
多目标细菌觅食优化算法
3! !.!3'##Z=E' 表示 '维的目标向量%$ c" 8# !8! !.!8/ # #
T=E/ 表示 / 维的决策向量!T表示 / 维的决策空间%%." $# $"
" .c#!!!.!N# 定义了 N个不等式约束%7O" $# c"" Oc#!!!.!
(# 定义了 (个等式约束' 在此模型的基础上!给出以下几个定
第 =& 卷第 $ 期 !"#. 年 $ 月)
计算机应用研究 @IIJB<19BA2 E;D;1K<0 AH[AUI59;KD
WAJ^=& YA^$ M5J:!"#.
多目标细菌觅食优化算法!
李)臖! 党建武! 王)篧! 包)敏
" 兰州交通大学 电子与信息工程学院$ 兰州 $=""$"#
摘)要 传统的细菌觅食优化算法仅针对单目标优化问题寻优$为进一步发掘细菌群体智能在多目标优化问题 中的寻优优势$提出了改进的多目标细菌觅食优化算法& 在个体间互不支配时给出归一化的择优策略!引入差 分思想完成复制操作$提高种群的多样性!采用栅格划分法进行迁徙操作$提高解集的分散性!同时使用外部集 存放当前找到的非支配解$并不断对外部集进行优化& 通过对多个标准函数进行测试并与其他几种算法的对比 结果表明$所提出的多目标细菌觅食优化算法在解的收敛性和分散性指标上都有一定提升$能够有效解决多目 标优化问题& 关键词 多目标优化问题! 细菌觅食优化算法! 归一化! 差分进化! 外部集! 栅格 中图分类号 >?="#:())文献标志码 @))文章编号 #""#%=('&"!"#.#"$%#''(%"& 8AB#":='(' C4:BDD2:#""#%=('&:!"#.:"$:"#$
模拟细菌算法实验报告
一、实验目的1. 了解模拟细菌算法的基本原理和操作步骤。
2. 通过实验,掌握模拟细菌算法在优化问题中的应用。
3. 分析模拟细菌算法的优缺点,为后续研究提供参考。
二、实验原理模拟细菌算法(Bacteria Foraging Algorithm,BFA)是一种基于自然界中细菌觅食行为的优化算法。
细菌在觅食过程中,会通过个体间的信息交流、群体协作和局部搜索来寻找食物资源。
模拟细菌算法借鉴了这一过程,通过个体间的信息传递、群体协作和局部搜索来优化问题。
三、实验材料1. 仿真平台:MATLAB2. 优化问题:求解函数 f(x) = (x-3)^2 + 4sin(2pix) 在区间 [0, 10] 上的最小值。
四、实验步骤1. 初始化参数:设置细菌数量、食物源数量、觅食半径、信息素挥发系数、信息素更新策略等参数。
2. 随机生成细菌和食物源的位置。
3. 银行家策略:选择食物源,为细菌提供信息素。
4. 随机游走:细菌在觅食半径内随机游走,寻找新的食物源。
5. 信息素更新:根据细菌的觅食行为,更新食物源周围的信息素浓度。
6. 迭代优化:重复步骤3-5,直至满足终止条件。
五、实验结果与分析1. 细菌算法在迭代过程中,不断更新食物源位置,优化问题的解逐渐收敛。
2. 通过调整参数,模拟细菌算法在求解优化问题时具有较好的收敛速度和精度。
3. 与其他优化算法(如遗传算法、粒子群算法等)相比,模拟细菌算法在求解复杂优化问题时,具有较高的鲁棒性和稳定性。
六、实验结论1. 模拟细菌算法是一种有效的优化算法,适用于求解复杂优化问题。
2. 通过调整算法参数,可以进一步提高算法的收敛速度和精度。
3. 模拟细菌算法在求解优化问题时,具有较高的鲁棒性和稳定性。
七、实验不足与展望1. 实验过程中,参数设置对算法性能影响较大,需要进一步研究参数调整策略。
2. 模拟细菌算法在处理大规模优化问题时,计算量较大,需要进一步优化算法。
3. 未来可以尝试将模拟细菌算法与其他优化算法相结合,提高算法的求解能力。
基于改进细菌觅食算法的测试用例生成方法
基于改进细菌觅食算法的测试用例生成方法王曙燕;王瑞;孙家泽【摘要】针对测试用例自动化生成技术中效率较低的问题,尝试引入新的细菌觅食算法,并结合测试用例生成问题提出了一种基于细菌觅食算法的改进算法(IM-BFOA).IM-BFOA首先采用Kent映射来增加细菌的初始种群和全局搜索的多样性,其次针对算法中趋化阶段的步长进行自适应设计,使其在细菌趋化过程中更加合理化,并通过实验仿真验证其合理性,最后根据被测程序构造适应度函数来加速测试数据的优化.实验结果表明,与遗传算法(GA)、粒子群优化(PSO)算法和标准细菌觅食优化算法(BFOA)相比,该算法在保证覆盖率的前提下,在迭代次数和运行时间方面都是较优的,可有效提高生成测试用例的效率.【期刊名称】《计算机应用》【年(卷),期】2019(039)003【总页数】6页(P845-850)【关键词】测试用例生成;细菌觅食算法;Kent映射;自适应步长;适应度函数【作者】王曙燕;王瑞;孙家泽【作者单位】西安邮电大学计算机学院,西安710121;西安邮电大学计算机学院,西安710121;西安邮电大学计算机学院,西安710121【正文语种】中文【中图分类】TP311.50 引言软件设计上的缺陷和代码错误严重影响了软件的可靠性和可用性,软件测试作为发现软件问题的一种方法受到了广泛关注[1]。
软件测试是软件开发整个流程中必不可少的一环,也是保障软件可靠性的重要手段。
软件测试可以检测软件中的bug,但软件测试耗时费力,它消耗了几乎50%的软件系统开发资源[2]。
其中,测试用例生成是关键性步骤,其生成的效率决定了软件测试的整体效率,对整个软件测试工程的发展具有重要的影响。
在测试用例生成的发展过程中,根据不同的测试准则和粒度,产生了很多研究方法,主要有:数据流准则法[3]、需求分析法[4]、基于搜索的优化方法等。
其中基于搜索的优化方法因其寻优能力较强而受到很多研究者的青睐,它的核心是启发式搜索算法,通过将寻找最优的测试用例问题转换为函数的最优化问题,结合生成测试用例的具体方法设计适应度函数,来实现测试用例的自动生成。
细菌觅食算法MATLAB实现
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%*********************细菌觅食算法********************** %%%%%%%%%%%%%%%%%%%-----BFA算法-----%%%%%%%%%%%%%%%%%%% clear;clc;%-----(1)初始化参数-----bounds = [-5.12 5.12;-5.12 5.12]; % 函数变量范围p = 2; % 搜索范围的维度s = 26; % 细菌的个数Nc = 50; % 趋化的次数Ns = 4; % 趋化操作中单向运动的最大步数C(:,1) = 0.001*ones(s,1); % 翻转选定方向后,单个细菌前进的步长Nre = 4; % 复制操作步骤数Ned = 2; % 驱散(迁移)操作数Sr = s/2; % 每代复制(分裂)数Ped = 0.25; % 细菌驱散(迁移)概率d_attract = 0.05; % 吸引剂的数量ommiga_attract = 0.05; % 吸引剂的释放速度h_repellant = 0.05; % 排斥剂的数量ommiga_repellant = 0.05;% 排斥剂的释放速度for i = 1:s % 产生初始细菌个体的位置P(1,i,1,1,1) = -5.12 + rand*10.24;P(2,i,1,1,1) = -5.12 + rand*10.24;end%------------------细菌趋药性算法循环开始---------------------%-----(2)驱散(迁移)操作开始-----for l = 1:Ned%-----(3)复制操作开始-----for k = 1:Nre%-----(4)趋化操作(翻转或游动)开始-----for j = 1:Nc%-----(4.1)对每一个细菌分别进行以下操作-----for i = 1:s%-----(4.2)计算函数J(i,j,k,l),表示第i个细菌在第l次驱散第k次%----------复制第j次趋化时的适应度值-----J(i,j,k,l) = Cost(P(:,i,j,k,l));%-----(4.3)修改函数,加上其它细菌对其的影响-----Jcc = sum(-d_attract*exp(-ommiga_attract*((P(1,i,j,k,l)-...P(1,1:26,j,k,l)).^2+(P(2,i,j,k,l)-P(2,1:26,j,k,l)).^2))) +...sum(h_repellant*exp(-ommiga_repellant*((P(1,i,j,k,l)-...P(1,1:26,j,k,l)).^2+(P(2,i,j,k,l)-P(2,1:26,j,k,l)).^2)));J(i,j,k,l) = J(i,j,k,l) + Jcc;%-----(4.4)保存细菌目前的适应度值,直到找到更好的适应度值取代之-----Jlast = J(i,j,k,l);%-----(4.5)翻转,产生一个随机向量C(i),代表翻转后细菌的方向----- Delta(:,i) = (2*round(rand(p,1))-1).*rand(p,1);% PHI表示翻转后选择的一个随机方向上前进PHI = Delta(:,i)/sqrt(Delta(:,i)'*Delta(:,i));%-----(4.6)移动,向着翻转后细菌的方向移动一个步长,并且改变细菌的位置-----P(:,i,j+1,k,l) = P(:,i,j,k,l) + C(i,k)*PHI;%-----(4.7)计算细菌当前位置的适应度值-----J(i,j+1,k,l) = Cost(P(:,i,j+1,k,l));%-----(4.8)游动-----m = 0; % 给游动长度计数器赋初始值while(m < Ns) % 未达到游动的最大长度,则循环m = m + 1;% 新位置的适应度值是否更好?如果更好,将新位置的适应度值% 存储为细菌i目前最好的适应度值if(J(i,j+1,k,l) <Jlast)Jlast = J(i,j+1,k,l); %保存更好的适应度值% 在该随机方向上继续游动步长单位,修改细菌位置P(:,i,j+1,k,l) = P(:,i,j+1,k,l) + C(i,k)*PHI;% 重新计算新位置上的适应度值J(i,j+1,k,l) = Cost(P(:,i,j+1,k,l));else% 否则,结束此次游动m = Ns;endendJ(i,j,k,l) = Jlast; % 更新趋化操作后的适应度值end % 如果i<N,进入下一个细菌的趋化,i=i+1%-----(5)如果j<Nc,此时细菌还处于活跃状态,进行下一次趋化,j=j+1----- Jlastx = P(1,:,j,k,l);y = P(2,:,j,k,l);clfplot(x,y,'h') % h表示以六角星绘图axis([-5 5 -5 5]); % 设置图的坐标图pause(.1) % 暂停0.1秒后继续end%----------------下面进行复制操作----------------%-----(6)复制-----%-----(6.1)根据所给的k和l的值,将每个细菌的适应度值按升序排序----- Jhealth = sum(J(:,:,k,l),2); % 给每个细菌设置健康函数值[Jhealth,sortind] = sort(Jhealth); % 按健康函数值升序排列函数P(:,:,1,k+1,l) = P(:,sortind,Nc+1,k,l);C(:,k+1) = C(sortind,k);%-----(6.2)将代价小的一半细菌分裂成两个,代价大的一半细菌死亡-----for i = 1:Sr% 健康值较差的Sr个细菌死去,Sr个细菌分裂成两个子细菌,保持个体总数的s一致性P(:,i+Sr,1,k+1,l) = P(:,i,1,k+1,l);C(i+Sr,k+1) = C(i,k+1);end%-----(7)如果k<Nre,转到(3),进行下一代细菌的趋化-----end%-----(8)趋散,对于每个细菌都以Ped的概率进行驱散,但是驱散的细菌群体的总数%--------保持不变,一个细菌被驱散后,将被随机重新放置到一个新的位置-----for m = 1:s% 产生随机数,如果既定概率大于该随机数,细菌i灭亡,随机产生新的细菌i if(Ped> rand)P(1,m,1,1,1) = -5.12 + rand*10.24;P(2,m,1,1,1) = -5.12 + rand*10.24;elseP(:,m,1,1,l+1) = P(:,m,1,Nre+1,l); % 未驱散的细菌endendend % 如果l<Ned,转到(2),否则结束%-------------------------报告----------------------reproduction = J(:,1:Nc,Nre,Ned);% 每个细菌最小的适应度值[Jlastreproduction,O] = min(reproduction,[],2);[BestY,I] = min(Jlastreproduction)Pbest = P(:,I,O(I,:),k,l)% 求解Shaffer's函数的最小值% Shaffer's函数表示如下:% f(x)=0.5+(sin(sqrt(x1^2+x2^2))^2-0.5)/(1.0+0.001(x1^2+x2^2))^2function cost = Cost(x)cost = 0.5 + (sin(sqrt(x(1)^2+x(2)^2))^2-0.5)/(1.0+0.001*(x(1)^2+x(2)^2))^2;% function fposition=Cost(x)%% x=fix(100*rand(2,1));% p=0;q=0;% for k=1:5% p=p+k*cos((k+1)*x(1)+k);% q=q+k*cos((k+1)*x(2)+k);% end%% fposition=p*q+(x(1)+1.42513)^2+(x(2)+.80032)^2;。
细菌觅食算法-python实现
121
tmpInd.chrom += self.params[4] * phi
122
for k in xrange(0, self.vardim):
123
if tmpInd.chrom[k] < self.bound[0, k]:
124
tmpInd.chrom[k] = self.bound[0, k]
tmpInd.chrom[k] = self.bound[0, k]
111
if tmpInd.chrom[k] > self.bound[1, k]:
112
tmpInd.chrom[k] = self.bound[1, k]
113
tmpInd.calcul
115
while m < self.params[3]:
6
7 '''
8 individual of baterial clony foraging algorithm
9 '''
10
11 def __init__(self, vardim, bound):
12
'''
13
vardim: dimension of variables
14
bound: boundaries of variables
手心微凉运行的时候注意是否有脚本文件和函数文件的区别不分多个函数文件的话将runga移动到最前面分多个函数文件的话需要从主函数处开始运行
细菌觅食算法 -python实现
BFOIndividual.py
1 import numpy as np
2 import ObjFunction
基本BFA算法(MATLAB)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %*********************细菌觅食算法********************** %%%%%%%%%%%%%%%%%%%-----BFA算法-----%%%%%%%%%%% clear;clc;%-----(1)初始化参数-----bounds = [-5.12 5.12;-5.12 5.12]; % 函数变量范围p = 2; % 搜索范围的维度s = 26; % 细菌的个数Nc = 50; % 趋化的次数Ns = 4; % 趋化操作中单向运动的最大步数C(:,1) = 0.001*ones(s,1); % 翻转选定方向后,单个细菌前进的步长Nre = 4; % 复制操作步骤数Ned = 2; % 驱散(迁移)操作数Sr = s/2; % 每代复制(分裂)数Ped = 0.25; % 细菌驱散(迁移)概率d_attract = 0.05; % 吸引剂的数量ommiga_attract = 0.05; % 吸引剂的释放速度h_repellant = 0.05; % 排斥剂的数量ommiga_repellant = 0.05;% 排斥剂的释放速度for i = 1:s % 产生初始细菌个体的位置P(1,i,1,1,1) = -5.12 + rand*10.24;P(2,i,1,1,1) = -5.12 + rand*10.24;end%------------------细菌趋药性算法循环开始---------------------%-----(2)驱散(迁移)操作开始-----for l = 1:Ned%-----(3)复制操作开始-----for k = 1:Nre%-----(4)趋化操作(翻转或游动)开始-----for j = 1:Nc%-----(4.1)对每一个细菌分别进行以下操作-----for i = 1:s%-----(4.2)计算函数J(i,j,k,l),表示第i个细菌在第l次驱散第k次%----------复制第j次趋化时的适应度值-----J(i,j,k,l) = Cost(P(:,i,j,k,l));%-----(4.3)修改函数,加上其它细菌对其的影响-----Jcc = sum(-d_attract*exp(-ommiga_attract*((P(1,i,j,k,l)-...P(1,1:26,j,k,l)).^2+(P(2,i,j,k,l)-P(2,1:26,j,k,l)).^2))) +...sum(h_repellant*exp(-ommiga_repellant*((P(1,i,j,k,l)-...P(1,1:26,j,k,l)).^2+(P(2,i,j,k,l)-P(2,1:26,j,k,l)).^2)));J(i,j,k,l) = J(i,j,k,l) + Jcc;%-----(4.4)保存细菌目前的适应度值,直到找到更好的适应度值取代之-----Jlast = J(i,j,k,l);%-----(4.5)翻转,产生一个随机向量C(i),代表翻转后细菌的方向-----Delta(:,i) = (2*round(rand(p,1))-1).*rand(p,1);% PHI表示翻转后选择的一个随机方向上前进PHI = Delta(:,i)/sqrt(Delta(:,i)'*Delta(:,i));%-----(4.6)移动,向着翻转后细菌的方向移动一个步长,并且改变细菌的位置-----P(:,i,j+1,k,l) = P(:,i,j,k,l) + C(i,k)*PHI;%-----(4.7)计算细菌当前位置的适应度值-----J(i,j+1,k,l) = Cost(P(:,i,j+1,k,l));%-----(4.8)游动-----m = 0; % 给游动长度计数器赋初始值while(m < Ns) % 未达到游动的最大长度,则循环m = m + 1;% 新位置的适应度值是否更好?如果更好,将新位置的适应度值% 存储为细菌i目前最好的适应度值if(J(i,j+1,k,l) <Jlast)Jlast = J(i,j+1,k,l); %保存更好的适应度值% 在该随机方向上继续游动步长单位,修改细菌位置P(:,i,j+1,k,l) = P(:,i,j+1,k,l) + C(i,k)*PHI;% 重新计算新位置上的适应度值J(i,j+1,k,l) = Cost(P(:,i,j+1,k,l));else% 否则,结束此次游动m = Ns;endendJ(i,j,k,l) = Jlast; % 更新趋化操作后的适应度值end % 如果i<N,进入下一个细菌的趋化,i=i+1%-----(5)如果j<Nc,此时细菌还处于活跃状态,进行下一次趋化,j=j+1----- Jlastx = P(1,:,j,k,l);y = P(2,:,j,k,l);clfplot(x,y,'h') % h表示以六角星绘图axis([-5 5 -5 5]); % 设置图的坐标图pause(.1) % 暂停0.1秒后继续end%----------------下面进行复制操作----------------%-----(6)复制-----%-----(6.1)根据所给的k和l的值,将每个细菌的适应度值按升序排序----- Jhealth = sum(J(:,:,k,l),2); % 给每个细菌设置健康函数值[Jhealth,sortind] = sort(Jhealth); % 按健康函数值升序排列函数P(:,:,1,k+1,l) = P(:,sortind,Nc+1,k,l);C(:,k+1) = C(sortind,k);%-----(6.2)将代价小的一半细菌分裂成两个,代价大的一半细菌死亡----- for i = 1:Sr% 健康值较差的Sr个细菌死去,Sr个细菌分裂成两个子细菌,保持个体总数的s一致性P(:,i+Sr,1,k+1,l) = P(:,i,1,k+1,l);C(i+Sr,k+1) = C(i,k+1);end%-----(7)如果k<Nre,转到(3),进行下一代细菌的趋化-----end%-----(8)趋散,对于每个细菌都以Ped的概率进行驱散,但是驱散的细菌群体的总数%--------保持不变,一个细菌被驱散后,将被随机重新放置到一个新的位置----- for m = 1:s% 产生随机数,如果既定概率大于该随机数,细菌i灭亡,随机产生新的细菌iif(Ped> rand)P(1,m,1,1,1) = -5.12 + rand*10.24;P(2,m,1,1,1) = -5.12 + rand*10.24;elseP(:,m,1,1,l+1) = P(:,m,1,Nre+1,l); % 未驱散的细菌endendend % 如果l<Ned,转到(2),否则结束%-------------------------报告----------------------reproduction = J(:,1:Nc,Nre,Ned);% 每个细菌最小的适应度值[Jlastreproduction,O] = min(reproduction,[],2);[BestY,I] = min(Jlastreproduction)Pbest = P(:,I,O(I,:),k,l)% 适应度函数% 求解Shaffer's函数的最小值% Shaffer's函数表示如下:function cost = Cost(x)cost = 0.5 + (sin(sqrt(x(1)^2+x(2)^2))^2-0.5)/(1.0+0.001*(x(1)^2+x(2)^2))^2;。
基于改进细菌觅食优化的彩超图像增强算法
forapine optimization. After the saitanty population point sd is selectee accoraine to the aCom gooP point
theea , the tmo mjusmCe fpctoain the incompletc Beta
will be optimize tin the optiml pdamema aa
deieamnced2Fncaeo ieeeceacoedbaneeiceeoompocecinencieeaaiedwnieeueoompoceciacdeaiuaainocoompo-
nent to foa impavee HSV imape. TUc tansfe O bach to RGB color space to eet the eqUanceq color ultrasound
nmaee2Teedaiancienepapeaoomeeoaom ieednaecoeinoaoom ooooeoaDoppeeaueiaaeoucdncaeoepniae2AoieaMAT-
LAB simulation test, it is pavei that comparei with MEME anC cccCoo optimizatiou aleorithm , the pean sipnat io-comeeaaimo ( PSNR) ooieepaopoeedaeeoamiem memmpaoeedbo4229deombeeeocaeeaaee acdeaeaeoodeub-
Abstract: Dre ta the limitatiou of colon Doppler ultrasoundimaning equipmeet, colon Doppler ultrasound imagei
细菌觅食优化算法的研究与改进
细菌觅食优化算法的研究与改进细菌觅食优化算法的研究与改进随着计算机科学和生物学的不断发展,人们开始探索将生物现象与计算机算法相结合,以寻找新的问题解决方法。
在这个过程中,细菌觅食优化算法应运而生。
细菌觅食优化算法模拟了细菌在寻找食物的过程,通过模仿细菌的行为,通过进化算法来优化问题的解决方案。
本文将探索细菌觅食优化算法的研究与改进,以及其在实际问题中的应用。
一、细菌觅食优化算法的基本原理细菌觅食优化算法灵感来源于真实世界中细菌的群体觅食行为。
细菌觅食过程主要包括趋化运动、荧光成像和滞留趋化三个阶段。
在趋化运动阶段,细菌通过运动来寻找食物。
荧光成像阶段主要是细菌根据环境中剩余食物的浓度情况进行判断,以便向食物浓度高的区域聚集。
在滞留趋化阶段,细菌会在食物附近停留,直到找到食物。
细菌觅食优化算法主要包括三个步骤:初始化种群、选择操作和更新种群。
首先,根据问题的维度和范围,初始化一定数量的细菌个体。
每个细菌个体都有一个状态向量和一个适应度值。
然后,根据每个细菌的适应度值,选择一定数量的细菌进行进化。
进化的过程包括变异和交叉操作,以获得新的细菌个体。
最后,根据进化后的细菌个体来更新种群,并继续下一轮的进化。
通过多轮的进化,细菌个体的适应度值逐渐提高,找到最优解的几率也会增加。
二、细菌觅食优化算法的改进方向尽管细菌觅食优化算法在一些问题上取得了不错的结果,但在一些复杂问题上仍然存在一些局限性。
为了进一步提高算法的性能,需要对算法进行改进。
以下是几个改进方向:1. 改进选择操作目前细菌觅食优化算法中的选择操作通常是基于轮盘赌选择,即根据细菌的适应度值来进行选择。
但这种方法可能导致一些细菌个体被选择过多或过少,从而影响算法的进化效果。
因此,可以考虑引入其他选择操作,如锦标赛选择、随机选择等,通过不同的选择策略来增加算法的多样性。
2. 引入多种变异操作目前细菌觅食优化算法的变异操作通常是随机生成一个新的状态向量。
细菌群体算法实验报告
一、实验目的1. 理解细菌群体算法的基本原理和流程;2. 掌握细菌群体算法在优化问题中的应用;3. 通过实验验证细菌群体算法的有效性和优越性。
二、实验原理细菌群体算法(Bacterial Foraging Algorithm,BFA)是一种模拟细菌觅食行为的智能优化算法。
该算法通过模拟细菌觅食过程中的随机游走、聚集、分裂和休眠等行为,实现优化问题的求解。
细菌群体算法的主要步骤如下:1. 初始化:设定细菌群体规模、细菌移动参数、聚集参数等;2. 随机游走:细菌在搜索空间内进行随机游走,寻找食物源;3. 聚集:当细菌遇到食物源时,会聚集在该位置进行觅食;4. 分裂:细菌在觅食过程中,会产生新的细菌,继续搜索;5. 休眠:当细菌搜索到一定次数后,进入休眠状态,等待下一次搜索;6. 评估:根据目标函数对细菌的搜索结果进行评估;7. 更新:根据评估结果,更新细菌的位置和状态;8. 循环执行步骤2-7,直至满足终止条件。
三、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 软件包:NumPy、SciPy、Matplotlib四、实验步骤1. 导入所需库文件,定义细菌群体算法类;2. 设置实验参数,包括细菌群体规模、移动参数、聚集参数等;3. 实现细菌的随机游走、聚集、分裂和休眠等行为;4. 设计目标函数,用于评估细菌的搜索结果;5. 运行实验,记录实验结果;6. 分析实验结果,比较不同参数对算法性能的影响。
五、实验结果与分析1. 实验结果(1)目标函数值变化曲线(2)细菌分布图2. 结果分析(1)细菌群体算法在优化问题中具有较高的收敛速度和求解精度;(2)细菌群体规模对算法性能有一定影响,适当增加细菌群体规模可以提高算法的搜索效率;(3)移动参数和聚集参数对算法性能有显著影响,优化这两个参数可以提高算法的收敛速度和求解精度。
六、实验结论通过本次实验,我们成功实现了细菌群体算法的编程与实现,并验证了其在优化问题中的应用。
第25章 基于细菌觅食算法的函数优化分析
法的趋向性操作就是对这两种基本动作的模拟。通常,细菌会在食物丰盛或环境的
酸碱性适中的区域中较多地游动,而在食物缺乏或环境的酸碱性偏高的区域则会较 多地旋转,即原地不动。
i
j 1, k , l j, k , l C i
i
S i 1
i T i i
第二十五章
MATLAB优化算法案例分析与应用
第25章 基于细菌觅食算法的函数优化分析
第二十五章
MATLAB优化算法案例分析与应用
实际生活需求促进了最优化方法的发展。近半个多世纪以来,由于传 统优化方法的不足,一些具有全局优化性能且通用性强的进化算法,因 其高效的优化性能、无需问题精确描述信息等优点,受到各领域广泛的 关注和应用。其中产生最早也最具代表性的进化算法是20世纪70年代源 于达尔文自然选择学说和孟德尔遗传变异理论的遗传算法(Genetic Algorithm,GA)。而近年来,人们模拟自然界生物群体行为产生出一系 列群体智能优化算法,如Dorigo等通过模拟蚂蚁的寻径行为于1991年提 出了蚁群优化算法(Ant Colony Optimization,ACO);Eberhart和 Kennedy通过模拟鸟群捕食行为于1995年提出了粒子群优化算法( Particle Swarm Optimization,PSO)。这些算法被广泛应用于工程领域 并取得了显著的成果。随着群体智能优化算法的蓬勃发展,Passino于 2002年提出了模拟人类大肠杆菌觅食行为的细菌觅食优化算法( Bacteria Foraging Optimization Algorithm,BFOA),为仿生进化算法 家族增添了新成员。本章将着重向广大编程爱好者介绍最基本的细菌觅 食算法,各编程科研人员可以基于本章算法加以改进并应用到实际案例 中。
群体智能优化算法-细菌觅食算法
第十四章 细菌觅食优化算法14.1 介绍Passino 等人[1]于2002年通过模拟人体内大肠杆菌的觅食行为,提出了一种新型智能优化算法:细菌觅食优化算法(Bacterial Foraging Optimization Algorithm ,BFOA)。
细菌觅食优化算法通过细菌群体之间的竞争与协作实现优化,是一种基于细菌群体的搜索技术。
在群智能算法中,GA 、ACO 、PSO 、AFSA 都是基于高等生物作为启发对象,而BFOA 算法则是模拟微生物的行为而形成的一种较新的优化方法。
14.2 BFOA 的基本原理与流程BFOA 算法是一种全局随机搜索的算法,其具有简单、收敛速度快,并且在优化过程中无需优化对象的梯度信息的特点。
BFOA 模拟细菌群体的过程包括趋向性(Chemotaxis )、复制(Reproduction )、迁徙(Elimination-dispersal )三个步骤。
14.2.1 趋向性操作细菌向有利于自身环境的区域移动称为趋向运动,其中,一次趋向性操作包括翻转运动和游动运动。
细菌向任意方向移动单位步长称为旋转运动;细菌沿着上一步的运动放向移动单位步长称为游动运动。
通常,细菌在环境差的区域(如:有毒区域)会较频繁地旋转,在环境好的区域(如:食物丰富的区域)会较多地游动。
大肠杆菌的整个生命周期就是在游动和旋转这两种基本运动之间进行变换,游动和旋转的目的是寻找食物并避开有毒物质。
设细菌种群大小为S ,细菌所在的位置标示问题的一个候选解,细菌i 的信息用D维向量标示为12,,,i i i iD θθθθ⎡⎤=⎣⎦L ,i =1,2,...,S ,θi (j ,k ,l )表示细菌i 在第j 次趋向性操作、第k 次复制操作和第l 次迁徙操作后的位置。
细菌i 通过式(1)更新其每一步趋向性操作后的位置。
(1,,)(,,)()()i i j k l j k l C i j θθ+=+Φ(1)其中C(i )>0表示向前游动的步长,Φ(j )表示旋转后随机选择的单位方向向量。
基于细菌觅食与粒子群的改进混合算法
基于细菌觅食与粒子群的改进混合算法梁樱馨;田浩杉【摘要】针对粒子群优化算法(PSO)在优化过程中易陷入局部极值而产生“早熟”现象,文中提出一种基于细菌觅食与粒子群的改进混合算法.粒子群优化算法与细菌觅食优化算法的结合,增强了算法的全局搜索能力,使算法具有全局搜索能力强的优点.选用Matlab进行仿真实验,实验结果进一步显示了改进混合算法的优化能力优于基本PSO算法和基本BFO算法,收敛速度快,且具有较好的鲁棒性.【期刊名称】《电子科技》【年(卷),期】2017(030)004【总页数】4页(P79-82)【关键词】粒子群优化算法;细菌觅食优化算法;改进混合算法【作者】梁樱馨;田浩杉【作者单位】兰州交通大学电子与信息工程学院,甘肃兰州730070;兰州交通大学电子与信息工程学院,甘肃兰州730070【正文语种】中文【中图分类】TP301.6群体智能(Swarm Intelligence, SI)的概念最早由Beni、Hackwood和Wang在分子自动机系统中提出,通过揭示和模拟自然现象而产生的一系列群体智能优化算法,该算法在模式识别、图像处理、工程等众多领域得到广泛的应用[1]。
粒子群算法(Particle Swarm Optimization,PSO)是一种智能优化算法,最早由美国的Knnedy和Eberhart教授提出,其思想来源于人工生命和进化计算理论,是以模拟鸟群觅食行为为特征,以求解连续变量优化问题为背景的一种优化算法[2-3]。
自PSO算法提出以来,由于它的计算快速性和算法本身的易实现性,引起了国际上相关领域众多学者的广泛关注和研究,经过短短几年时间的发展,已广泛应用于函数优化、人工神经网络训练、模糊系统控制等许多领域。
然而,在应用过程中由于PSO算法种群多样性低,局部搜索能力差,搜索精度不够高,易陷入局部极值,造成收敛速度慢,计算复杂度高,最终解不精确的问题。
本文提出一种基于细菌觅食优化算法和PSO算法结合的混合算法。
一种优化的细菌觅食算法用以解决全局最优化问题
一种优化的细菌觅食算法用以解决全局最优化问题
任佳星;黄晋英
【期刊名称】《科技信息》
【年(卷),期】2012(000)002
【摘要】细菌觅食算法是一种新的智能计算方法,已经被用于解决最优化问题.本文将遗传算法中的交叉,变异操作引入到细菌觅食算法中,加速优化进程,并用于解决函数全局优化问题.先利用测试函数对算法的性能进行了研究,再将该算法对比遗传算法求解测试函数的全局最优值.仿真结果说明,优化后的细菌觅食算法非常有效,能很好解决全局优化问题.
【总页数】2页(P44-45)
【作者】任佳星;黄晋英
【作者单位】中北大学机械工程与自动化学院;中北大学机械工程与自动化学院【正文语种】中文
【相关文献】
1.基于正交试验的细菌觅食算法的全局最优化
2.基于Matlab的遗传算法解决多峰RBF神经网络模型全局最优化问题
3.求解全局最优化问题的一种修正打洞算法
4.全局最优化问题的一种确定性算法
5.基于全局学习自适应细菌觅食算法的光伏系统全局最大功率点跟踪方法
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%
%*********************细菌觅食算法********************** %%%%%%%%%%%%%%%%%%%-----BFA算法-----%%%%%%%%%%%%%%%%%%% clear;
clc;
%-----(1)初始化参数-----
bounds = [-5.12 5.12;-5.12 5.12]; % 函数变量范围
p = 2; % 搜索范围的维度
s = 26; % 细菌的个数
Nc = 50; % 趋化的次数
Ns = 4; % 趋化操作中单向运动的最大步数
C(:,1) = 0.001*ones(s,1); % 翻转选定方向后,单个细菌前进的步长
Nre = 4; % 复制操作步骤数
Ned = 2; % 驱散(迁移)操作数
Sr = s/2; % 每代复制(分裂)数
Ped = 0.25; % 细菌驱散(迁移)概率
d_attract = 0.05; % 吸引剂的数量
ommiga_attract = 0.05; % 吸引剂的释放速度
h_repellant = 0.05; % 排斥剂的数量
ommiga_repellant = 0.05;% 排斥剂的释放速度
for i = 1:s % 产生初始细菌个体的位置
P(1,i,1,1,1) = -5.12 + rand*10.24;
P(2,i,1,1,1) = -5.12 + rand*10.24;
end
%------------------细菌趋药性算法循环开始---------------------
%-----(2)驱散(迁移)操作开始-----
for l = 1:Ned
%-----(3)复制操作开始-----
for k = 1:Nre
%-----(4)趋化操作(翻转或游动)开始-----
for j = 1:Nc
%-----(4.1)对每一个细菌分别进行以下操作-----
for i = 1:s
%-----(4.2)计算函数J(i,j,k,l),表示第i个细菌在第l次驱散第k次
%----------复制第j次趋化时的适应度值-----
J(i,j,k,l) = Cost(P(:,i,j,k,l));
%-----(4.3)修改函数,加上其它细菌对其的影响-----
Jcc = sum(-d_attract*exp(-ommiga_attract*((P(1,i,j,k,l)-...
P(1,1:26,j,k,l)).^2+(P(2,i,j,k,l)-P(2,1:26,j,k,l)).^2))) +...
sum(h_repellant*exp(-ommiga_repellant*((P(1,i,j,k,l)-...
P(1,1:26,j,k,l)).^2+(P(2,i,j,k,l)-P(2,1:26,j,k,l)).^2)));
J(i,j,k,l) = J(i,j,k,l) + Jcc;
%-----(4.4)保存细菌目前的适应度值,直到找到更好的适应度值取代之
-----
Jlast = J(i,j,k,l);
%-----(4.5)翻转,产生一个随机向量C(i),代表翻转后细菌的方向----- Delta(:,i) = (2*round(rand(p,1))-1).*rand(p,1);
% PHI表示翻转后选择的一个随机方向上前进
PHI = Delta(:,i)/sqrt(Delta(:,i)'*Delta(:,i));
%-----(4.6)移动,向着翻转后细菌的方向移动一个步长,并且改变细菌的位置-----
P(:,i,j+1,k,l) = P(:,i,j,k,l) + C(i,k)*PHI;
%-----(4.7)计算细菌当前位置的适应度值-----
J(i,j+1,k,l) = Cost(P(:,i,j+1,k,l));
%-----(4.8)游动-----
m = 0; % 给游动长度计数器赋初始值
while(m < Ns) % 未达到游动的最大长度,则循环
m = m + 1;
% 新位置的适应度值是否更好?如果更好,将新位置的适应度值
% 存储为细菌i目前最好的适应度值
if(J(i,j+1,k,l) <Jlast)
Jlast = J(i,j+1,k,l); %保存更好的适应度值
% 在该随机方向上继续游动步长单位,修改细菌位置
P(:,i,j+1,k,l) = P(:,i,j+1,k,l) + C(i,k)*PHI;
% 重新计算新位置上的适应度值
J(i,j+1,k,l) = Cost(P(:,i,j+1,k,l));
else
% 否则,结束此次游动
m = Ns;
end
end
J(i,j,k,l) = Jlast; % 更新趋化操作后的适应度值
end % 如果i<N,进入下一个细菌的趋化,i=i+1
%-----(5)如果j<Nc,此时细菌还处于活跃状态,进行下一次趋化,j=j+1----- Jlast
x = P(1,:,j,k,l);
y = P(2,:,j,k,l);
clf
plot(x,y,'h') % h表示以六角星绘图
axis([-5 5 -5 5]); % 设置图的坐标图
pause(.1) % 暂停0.1秒后继续
end
%----------------下面进行复制操作----------------
%-----(6)复制-----
%-----(6.1)根据所给的k和l的值,将每个细菌的适应度值按升序排序----- Jhealth = sum(J(:,:,k,l),2); % 给每个细菌设置健康函数值
[Jhealth,sortind] = sort(Jhealth); % 按健康函数值升序排列函数
P(:,:,1,k+1,l) = P(:,sortind,Nc+1,k,l);
C(:,k+1) = C(sortind,k);
%-----(6.2)将代价小的一半细菌分裂成两个,代价大的一半细菌死亡-----
for i = 1:Sr
% 健康值较差的Sr个细菌死去,Sr个细菌分裂成两个子细菌,保持个体总数的s一致性
P(:,i+Sr,1,k+1,l) = P(:,i,1,k+1,l);
C(i+Sr,k+1) = C(i,k+1);
end
%-----(7)如果k<Nre,转到(3),进行下一代细菌的趋化-----
end
%-----(8)趋散,对于每个细菌都以Ped的概率进行驱散,但是驱散的细菌群体的总数%--------保持不变,一个细菌被驱散后,将被随机重新放置到一个新的位置-----
for m = 1:s
% 产生随机数,如果既定概率大于该随机数,细菌i灭亡,随机产生新的细菌i if(Ped> rand)
P(1,m,1,1,1) = -5.12 + rand*10.24;
P(2,m,1,1,1) = -5.12 + rand*10.24;
else
P(:,m,1,1,l+1) = P(:,m,1,Nre+1,l); % 未驱散的细菌
end
end
end % 如果l<Ned,转到(2),否则结束
%-------------------------报告----------------------
reproduction = J(:,1:Nc,Nre,Ned);
% 每个细菌最小的适应度值
[Jlastreproduction,O] = min(reproduction,[],2);
[BestY,I] = min(Jlastreproduction)
Pbest = P(:,I,O(I,:),k,l)
% 求解Shaffer's函数的最小值
% Shaffer's函数表示如下:
% f(x)=0.5+(sin(sqrt(x1^2+x2^2))^2-0.5)/(1.0+0.001(x1^2+x2^2))^2
function cost = Cost(x)
cost = 0.5 + (sin(sqrt(x(1)^2+x(2)^2))^2-0.5)/(1.0+0.001*(x(1)^2+x(2)^2))^2;
% function fposition=Cost(x)
%
% x=fix(100*rand(2,1));
% p=0;q=0;
% for k=1:5
% p=p+k*cos((k+1)*x(1)+k);
% q=q+k*cos((k+1)*x(2)+k);
% end
%
% fposition=p*q+(x(1)+1.42513)^2+(x(2)+.80032)^2;。