布谷鸟算法

合集下载

二次分配问题的布谷鸟搜索算法

二次分配问题的布谷鸟搜索算法

二次分配问题的布谷鸟搜索算法布谷鸟搜索算法是一种用于解决二次分配问题的算法。

它是基于模拟退火方法的一种启发式算法,能够以一定的概率找到二次分配问题的最优解。

一、布谷鸟搜索算法的优势1、高效:在二次分配问题中,布谷鸟搜索算法可以快速地搜索最优解,从而大大节省时间;2、灵活:布谷鸟搜索算法不仅可以解决基本的二次分配问题,还可以应用于解决更高级的分配问题;3、容易理解:布谷鸟搜索算法是基于模拟退火原理的,且其搜索过程极其贴近真实的生活现象,这使得人们能够较易理解这种算法。

二、布谷鸟搜索算法的原理1、求解过程:布谷鸟搜索算法采用模拟退火的原理,即通过不断的变换搜索解空间,从而改变解的状态,最终得到最优解。

2、参数设定:布谷鸟搜索算法可以按照需求设定几个参数,如最高温度Tmax、最低温度Tmin、温度改变量α等,这些参数的设定会影响算法最终的搜索效果。

3、自适应参数更新:若算法迭代的过程中搜索的解仍然不能收敛到最优解,则可以通过自适应更新温度改变量α,以改善算法收敛效率。

三、应用实例布谷鸟搜索算法可以应用在各种复杂分配问题中,也可以用于解决其他各种目标函数求解问题。

例如:1、工厂调度问题:在安排工厂调度时,可以借助布谷鸟搜索算法来搜索各个工序之间的协调关系,从而最大化生产效率;2、仓库存储问题:仓库物流的存储问题属于复杂的分配问题,而布谷鸟搜索算法可以有效地解决空间利用率、费用和安全等多个目标的冲突;3、工作流优化问题:工作流分派的优化问题也是一种复杂的分配问题,布谷鸟搜索算法能够有效地解决这一问题。

四、布谷鸟搜索算法的缺点1、时间消耗大:布谷鸟搜索算法运作时所耗费的时间过多,如果问题规模太大,则就可能耗费较长的时间;2、问题复杂度限制:布谷鸟搜索算法有一定的解空间大小限制,它对于解空间量较大的问题就不是很适用;3、精度不够高:从精度上来说,布谷鸟搜索算法只能收敛到一个比较粗的解,无法达到更优的近似解。

总之,布谷鸟搜索算法是一种比较强大并好用的算法,它可以在较短的时间内,搜索出比较满意的二次分配问题的最优解,这带来了巨大的社会效益。

布谷鸟算法详细介绍

布谷鸟算法详细介绍
r是缩放因子,是(0,1)区间内的均匀分布随机数
g, j , g,k:表示g代的两个随机数
改进的CS算法—自适应步长的CS算法
在标准的布谷鸟优化算法中,利用莱维飞行随机产生步长,不利于计算。当 步长较小时,会降低搜索速度,但步长较大时,会降低搜索精度,因此提出 了自适应步长的布谷鸟搜索算法,该算法根据不同阶段的搜索结果,自适应 的调整步长的大小。引入公式:
CS算法—国内外研究进展
分类
学者
观点
步长
自适应
与其他算 法结合
Walton 等人
针对 Levy flights 随机游动中的 Levy 随机步长大小提出 一种改进版本以加强局部搜索
Tuba 等 人
针对偏好随机游动中的步长提出一种基于种群排序的改进版 本
Valian 等 提出了一种自适应步长和自适应发现概率的 CS 算法 人
3 与遗传算法和粒子群算法相比,参数更少,本质上只有 一个P。
布谷鸟位置更新公式:
xg1,i xg,i L( ) (i 1, 2, n)
(1)
பைடு நூலகம்
xg ,i : 表示第i个鸟巢在第g代的鸟巢位置 : 表示点对点乘法 : 表示步长控制量,通常取1
L( ) : 表示莱维随机搜索路径
CS算法—基本流程
步长公式:
0 (x g,i xbest )
(2)
人工萤火虫优 萤火虫通过通过荧光进行信息交流 化算法
布谷鸟算法 布谷鸟孵育行为
背景起源—布谷鸟的孵育寄生行为
某些种属的布谷鸟将自己的卵偷偷产入宿主巢穴,由于布谷鸟后代 的孵化时间比宿主的幼雏早,孵化的幼雏会本能地破坏同一巢穴中其他 的卵(推出巢穴),并发出比宿主幼雏更响亮的叫声。很多宿主通过后代 的叫声大小判断其健康程度, 而健康后代获得的食物较多, 进而拥有更 高的存活率。在某些情况下, 宿主也会发现巢穴中的陌生卵。这时, 宿 主将遗弃该巢穴, 并选择其他地方重新筑巢。在与宿主不断的生存竞争 中, 布谷鸟的卵和幼雏叫声均朝着模拟宿主的方向发展, 以对抗宿主不 断进化的分辨能力。

改进的布谷鸟算法,布谷鸟算法和粒子群算法

改进的布谷鸟算法,布谷鸟算法和粒子群算法

改进的布谷鸟算法,布谷鸟算法和粒子群算法改进的布谷鸟算法(Improved Cuckoo Search Algorithm)、布谷鸟算法(Cuckoo Search Algorithm)和粒子群算法(Particle Swarm Optimization)是现代优化算法中常用的三种启发式算法。

本文将逐步回答关于它们的定义、原理、应用和优化效果等问题。

一、布谷鸟算法的定义和原理1. 布谷鸟算法的定义布谷鸟算法是一种基于生物学启发的优化算法,模拟了鸟巢寄生行为。

它首先随机初始化一组“布谷鸟”个体,每个鸟个体对应一个解,之后它们根据适应度函数评估各自解的好坏程度。

较好的解将以概率性地替换较差的解,从而通过迭代搜索过程逐渐改进。

2. 布谷鸟算法的原理布谷鸟算法的原理主要包括布谷鸟的寄生行为、布谷鸟的拾取和布谷鸟的放置。

(1)布谷鸟的寄生行为:布谷鸟在随机选择巢穴进行寄生时,采用了Levy飞行策略,在搜索空间中执行长距离跳跃,以避免陷入局部最优解。

(2)布谷鸟的拾取:布谷鸟在拾取巢穴时,通过“拟合度”来表示适应度,较好的拟合度对应着较好的解。

拾取行为是布谷鸟算法的核心步骤,根据随机概率选择是否拾取巢穴。

(3)布谷鸟的放置:布谷鸟在放置巢穴时,采用了随机遗忘策略,即通过一定的概率丢弃部分已有解,从而引入新的解以增加搜索空间的多样性。

二、粒子群算法的定义和原理1. 粒子群算法的定义粒子群算法是一种模拟鸟群行为的启发式优化算法,模拟了鸟群中个体间的信息共享和合作搜索过程。

每个粒子代表一个解,群体中所有粒子共同协作寻找最优解。

2. 粒子群算法的原理粒子群算法的原理主要包括粒子的更新和群体中最优解的更新两个主要步骤。

(1)粒子的更新:每个粒子通过学习自身的历史最优解和群体全局最优解,以确定自身下一步的移动方向和速度。

这一过程利用了惯性、个体认知和社会认知三个因素。

(2)群体中最优解的更新:每个粒子将自身的历史最优解与群体中当前的最优解进行比较,并更新全局最优解。

布谷鸟算法

布谷鸟算法

布谷鸟算法1、概述布谷鸟搜索算法[CuckooSearch(CS)],也叫杜鹃搜索,是由剑桥大学Xin-SheYang(杨新社)教授和S.Deb于2009年提出的一种新兴启发算法CS算法通过模拟某些种属布谷鸟(CuckooSpecies)的寄生育雏(BroodParasitism)来有效地求解最优化问题的算法.同时,CS也采用相关的Levy飞行搜索机制。

2、优点全局搜索能力强、选用参数少、搜索路径优、多目标问题求解能力强,以及很好的通用性、鲁棒性等特点,同时其特有的莱维特性能够有效地扩大搜索范围,是一种高效的全局随机搜索算法.并且实例测试结果证明了它比遗传算法、粒子群算法、萤火虫算法具有更高寻优性能。

布谷鸟搜索算法凭借参数少,算法简单,易于实现的特点被广泛应用在各个领域,是群体智能算法中的一个新亮点3、应用领域布谷鸟算法自提出之后引起了许多学者的关注,并在许多项目调度、工程优化问题、求解置换流水车间调度和计算智能方面得到了应用。

在工程设计领域,布谷鸟算法对于一系列连续优化问题如弹簧设计和焊接梁设计等问题有着优于其他算法的性能。

Vazquez利用布谷鸟算法训练脉冲神经网络模型,Chifu等人利用布谷鸟算法优化语义Web服务组合流程, Bhargava等人在求解复杂相平衡问题中,用布谷鸟算法获得了可靠的热力学计算。

在组合优化问题方面,Tein和Ramli针对护士调度问题提出了离散化的布谷鸟算法,布谷鸟算法还成功的应用于软件测试中数据生成程序问题独立路径的产生。

Speed修改了CS并成功应用于处理大规模问题。

Moravej和Akhlaghi用CS研究了分布式网络中的DG分配问题。

对于多目标问题的研究,Deb针对工程应用提出了多目标CS算法,Simon等人则利用CS算法针对多目标调度问题取得了很好的效果。

综上所述,虽然布谷鸟算法于2009年才刚刚提出,但己经被成功应用到各个领域的优化问题中,布谷鸟算法可以求解大部分优化问题,或者是可以转化为优化问题进行求解的问题。

布谷鸟算法基本原理

布谷鸟算法基本原理

布谷鸟算法基本原理1. 前言布谷鸟算法是一种基于鸟类种群行为的启发式优化算法,它模拟了布谷鸟群体在寻找食物的行为过程。

该算法在解决优化问题方面表现出了很高的效果,因此受到了广泛关注。

本文将详细介绍布谷鸟算法的基本原理及其在优化问题中的应用。

2. 布谷鸟算法基本原理2.1 随机漫步布谷鸟群体中的每只个体都会进行随机漫步,以寻找食物。

这个过程中,每只个体都会根据当前位置和周围信息进行移动决策。

移动方向和距离都是随机生成的,以模拟现实中布谷鸟能够自由地在飞行中改变方向。

2.2 声音吸引当一只布谷鸟能够找到食物时,它会发出声音以吸引其他周围的个体。

这种声音可以被其他个体接收到,并据此调整自己的移动方向和距离。

这一过程模拟能够有效地传递信息,并将整个群体引导到更好的解决方案附近。

2.3 布谷鸟的巢穴选择布谷鸟群体中的个体会选择一个巢穴作为自己的家,用于存放食物和繁殖。

个体在选择巢穴时,会考虑到自身和周围个体的食物储备情况、竞争关系以及巢穴的位置等因素。

这样,群体中的布谷鸟会趋向于选择食物储备充足、竞争较小且位置合适的巢穴。

3. 布谷鸟算法在优化问题中的应用3.1 布谷鸟算法在函数优化中的应用布谷鸟算法可以用于求解函数优化问题,通过模拟布谷鸟能够自由地改变位置和移动方向这一特点,可以在搜索空间中寻找到全局最优解。

通过随机漫步和声音吸引等机制,布谷鸟能够快速收敛到最优解附近,并以较高概率找到全局最优解。

3.2 布谷鸟能量模型及其应用布谷鳥算法引入了能量概念,在搜索过程中通过能量模型来评估每个解决方案。

能量模型可以帮助算法更好地探索搜索空间,并避免陷入局部最优解。

通过调整能量模型的参数,可以平衡搜索的广度和深度,提高算法的搜索效率。

3.3 布谷鸟算法在组合优化中的应用布谷鸟算法也可以用于解决组合优化问题,如旅行商问题、背包问题等。

通过将问题转化为布谷鸟群体在搜索空间中寻找最优解的过程,可以有效地求解组合优化问题。

布谷鸟算法开题报告

布谷鸟算法开题报告

xxx大学毕业论文开题报告题目布谷鸟算法的研究系部计算机科学学院专业计算机科学与技术学生姓名学号指导教师职称毕设地点xxx大学计算机科学学院计算机科学与技术专业本科毕业论文(设计)开题报告X i(t)表示第i个鸟窝在第t代的鸟窝位置,⊕为点对点乘法,α表示步长控制量,L(λ)为 Levy 随机搜索路径,并且 L ~ u = t-λ,(1 <λ ≤ 3)。

通过位置更新后,用随机数 r∈[0,1]与 p a 对比,若r > p a ,则对 Xi(t +1)进行随机改变,反之不变。

最后保留测试值较好的一组鸟窝位置Yi(t +1),此时仍把Yi(t +1)记为Xi(t +1)。

2.GCS 算法在CS算法的第t次迭代后得到了一组较优越的鸟窝位置(t)i2,GCS 算法是:不让 x (i t)直接进在 CS 算法的第 t 次迭代后得到了一组较优的鸟窝i2,入下一次迭代,而是继续进行高斯扰动, x i 得到进一步搜索.首先记 x i , = 1,…n 组成的矩阵为: p t使T= [ 1 t),2 t), x (n t)], x (i t)为 d 维向量, p t 为d × n 阶矩阵,x ( x (…,GCS 算法的具体操作是给 p t 加高斯扰动,设则即p' t = p t + a ε.1) a其中ε是与 p t 同阶的随机矩阵, ij ~ N( 0,,为常数,表示点对点乘法,ε由于ε的随机取值范围较大,容易带动鸟窝位置的活动范围偏离过大,所以,本文取 a = 1 /3 来控制ε的搜索范围,从而适度地增大鸟窝位置的变化活力,得到合理 p' t ,再与 p t 的中的每个鸟窝对比,保留测试值较好的鸟窝位置,从而得到x ( t) x ( t)…,( t) T此时为便于进入下一次迭代,仍将 p" t 记为 p t = [ 1 ,2 , x n ].更好的一组鸟窝位置 p" t ,2x5]例如,对给定的函数f(x)=x2,x∈[-5,5],随机取5个鸟窝进行搜索,为直观地看出轨迹图,维数取为1维,精度最优值达到10-7。

采用搜索趋化策略的布谷鸟全局优化算法

采用搜索趋化策略的布谷鸟全局优化算法

采用搜索趋化策略的布谷鸟全局优化算法马卫;孙正兴【摘要】布谷鸟搜索算法是一种基于莱维飞行搜索策略的新型智能优化算法.单一的莱维飞行随机搜索更新策略存在全局搜索性能不足和寻优精度不高等缺陷.为了解决这一问题,本文提出了一种改进的布谷鸟全局优化算法.该算法的主要特点在于以下三个方面:首先,采用全局探测和模式移动交替进行的模式搜索趋化策略,实现了布谷鸟莱维飞行的全局探测与模式搜索的局部优化的有机结合,从而避免盲目搜索,加强算法的局部开采能力;其次,采取自适应竞争机制动态选择最优解数量,实现了迭代过程搜索速度和解的多样性间的有效平衡;最后,采用优势集搜索机制,实现了最优解的有效合作分享,强化了优势经验的学习.对52个典型测试函数实验结果表明,本文算法不仅寻优精度和寻优率显著提高,鲁棒性强,且适合于多峰及复杂高维空间全局优化问题.本文算法与最新提出的改进的布谷鸟优化算法以及其它智能优化策略相比,其全局搜索性能与寻优精度更具优势,效果更好.【期刊名称】《电子学报》【年(卷),期】2015(043)012【总页数】11页(P2429-2439)【关键词】布谷鸟算法;趋化搜索;Hooke-Jeeves模式搜索;合作分享;自适应竞争;全局优化【作者】马卫;孙正兴【作者单位】南京大学计算机软件新技术国家重点实验室,江苏南京210093;南京旅游职业学院酒店管理学院,江苏南京211100;南京大学计算机软件新技术国家重点实验室,江苏南京210093【正文语种】中文【中图分类】TP18在日常生产生活中的诸多问题都可归结为全局最优化问题,采用传统的方法来解决此类问题效果不太理想,因此许多学者从模拟生物生活的习性角度出发解决此类问题,并受到了较好的效果.其中,布谷鸟搜索算法(Cuckoo Search,CS)则是近年来提出的一种新颖的元启发式全局优化方法[1].该方法模拟布谷鸟的寻窝产卵行为而设计出的一种基于莱维飞行(Lévy flights)机制的全空间的搜索策略.在求解全局优化问题中表现出较好地性能.该算法具有选用参数少,全局搜索能力强,计算速度快和易于实现等优点,与粒子群优化算法和差分演化算法相比具有一定的竞争力[2].并在工程设计[3,4]、神经网络训练[5]、结构优化[6]、多目标优化[7]以及全局最优化[8~17]等领域取得了应用.然而,CS算法作为一种新的全局优化方法,搜索性能还有待提高.为此一些学者对该算法的全局寻优性能进行了改进,如Valian等学者提出利用参数自适应机制改进搜索步长与发现概率的ICS(Improved Cuckoo Search algorithm)算法[8],从而提高了函数优化质量.此外,还有一些学者提出改进搜索机制中的步长[9,10]、动态自适应[11,12]、逐维改进机制[13]以及合作协同进化策略[14]等.这类改进算法在一定程度上提高了算法的搜索性能,取得了很好的寻优效果.然而单一的搜索策略在解决复杂的多维空间优化问题时,往往难以兼顾全局搜索与局部寻优的能力.另外,一些学者提出了与其他算法的杂交混合[15~18]的策略,如文献[16]提出了一种CSPSO(Cuckoo Search algorithm and Particle Swarm Optimizationalgorithm)算法,利用PSO算法与CS莱维飞行策略杂交混合,达到一定的搜索性能.文献[17,18]提出了OLCS(Orthogonal Learning Cuckoo Search algorithm)算法,在莱维飞行随机游动之后结合正交学习机制进行搜索从而增强了算法策略的寻优性能.这类算法加强了算法的搜索机制,可以取得更好的效果,但会增加算法的复杂性,并且在解决复杂问题及高维空间优化时,适应能力与鲁棒性不够,使得搜索效果不够理想等.其原因是目前的进化算法面对欺骗问题、多峰问题和孤立点等因素导致全局优化困难[19].因此,有必要继续探索新的改进方法与求解策略.虽然CS算法全局探测能力优异,但是其局部搜索性能相对不足,特别是多模复杂函数的全局寻优时存在收敛速度慢、求解精度不高等问题,为了克服CS算法的缺点,提高其搜索性能,本文提出了一种基于模式搜索策略的布谷鸟搜索算法(strategy-Pattern Search based Cuckoo Search,PSCS).该算法基于模式搜索具有高效的局部趋化能力这一特点,在CS算法的框架下,嵌入模式搜索机制加强局部求解能力,利用CS算法较强地莱维飞行全局搜索能力和模式搜索的局部寻优性能,两者互为补充,兼顾均衡,从而避免搜索过程陷入局部最优.标准CS算法是模拟布谷鸟寻窝产卵的特点形成理论,从而设计出基于莱维飞行搜索机制的随机优化算法,该算法及其参数见文献[1].在莱维飞行随机游动搜索策略中,布谷鸟i根据式(1)进行寻窝搜索路径和位置的更新,并通过新的搜索位置生成适应度值Fi:在偏好随机游动搜索策略中,算法以混合变异和交叉操作的方式重新生成若干个新解,如式(2)所示:在CS算法中,莱维飞行搜索机制利用随机游动进行全局探测,根据偏好随机游动搜索策略指导局部寻优.复杂的全局优化问题由于多极值且变量间相互独立等特点,需要算法尽可能搜索到全局较好解的分布范围,扩大精细搜索力度.而基本的CS算法全局优化却存在以下局限性:(1)在迭代过程中,布谷鸟在当前位置的基础上以随机游动方式产生新的位置,单一的随机游动策略的搜索方式在搜索过程中具有很强的盲目性,导致难以快速地搜索到全局最优值,开发性能不足,搜索精度不高;(2)搜索到的位置评价后算法总是以贪婪方式选择较好的解,保存全局最优位置,而全局优化问题多极值使得布谷鸟易陷入对先前环境的局部寻优,导致早熟收敛;(3)CS算法是以概率Pa放弃部分解而采用偏好随机游动方式重新生成新解来增加搜索位置的多样性,却忽视了学习与继承种群内优势群体的优良经验,增加了搜索空间的计算量与时间复杂度.基于莱维飞行的随机游动和偏好随机游动是CS算法中两个重要的搜索策略,由于莱维飞行其自身的特性使得搜索性能具有较好的随机性与全局探测能力,但是面对复杂的全局优化问题的求解时,其局限性就显露出来.针对上述3点不足,本文分别提出模式搜索趋化策略、自适应竞争排名机制与合作分享策略来弥补该算法在复杂的全局优化问题中的局限性.以期达到全局搜索和局部开发的平衡,使得算法的搜索性能更加优越.基于模式搜索局部趋化的布谷鸟算法的策略是以CS算法为基本框架,将模式搜索方法作为一种局部趋化搜索算子,嵌入到CS算法中,以加强求解精度.模式搜索(Pattern Search,PS)也叫Hooke-Jeeves算法[20],是由Hooke和Jeeves提出的一种基于坐标搜索法改进的搜索方法.该方法的原理是若要寻找搜索区域的最低点,可以先确定一条通往区域中心的山谷,然后沿着该山谷线方向前进搜索.探测移动(exploratory move)和模式移动(pattern move)是这种趋化策略的两个重要步骤,在迭代过程中交替进行,最终到达理想的求解精度.其中,探测移动的目的是探寻有利的趋化方向,而模式移动则沿着有利的方向快速搜索.其计算步骤如算法1所示.给定趋化策略的起始位置x1,步长δ,分别设置加速、减速因子α,β,步长计算精度ε,k和j为1;确定初始位置y1=xk;While (δ≤ε && j≤D)采用探测移动:从参考点出发,依次沿坐标轴方向dj(j=1,2,…,D)进行2个方向的探测;沿正轴方向:若目标函数值f(yj+δdj)<f(yj),设置yj+1=yj+δdj,否则沿负轴方向探测; 沿负轴方向:若目标函数值f(yj-δdj)<f(yj),设置yj+1=yj-δdj,否则沿正轴方向探测; 得到新的位置yj+1,设置xk+1=yj+1;进行模式移动:沿着理想的目标函数值下降方向进行加速搜索;若f(xk+1)<f(xk),设置y1=xk+1+α(xk+1-xk),k=k+1;否则,缩短轴向移动步长δ=δβ;保留最好解;End whilePS趋化策略的本质是通过不断地成功的迭代,实现搜索步长的模式改进,从而加速算法的收敛.通过对当前搜索位置的探测与模式移动,达到趋化于更优值的直接搜索.在迭代过程中若找到相对于当前位置的更优点,则步长递增,并从该点位置进行下一次迭代;否则步长递减,继续搜索于当前位置.以图1为例,若xk迭代成功,则下次迭代从待定位置x′=xk+α(xk-xk-1)开始探测,其中xk-xk-1为模式步长,沿着模式步长方向搜寻优于位置xk更好的解.无论是否存在f(x′)≤f(xk),都将以x′为基准位置进行坐标搜索.若x′坐标搜索成功,则令xk+1=x′,并从xk+1位置开始新的迭代搜索;否则,坐标搜索在xk展开.若在位置xk坐标搜索失败,则新一轮的坐标搜索步长减半在xk-1处展开.若在xk-1搜索仍然失败,回溯并重复上述过程.模式搜索趋化策略是在算法的迭代过程中,如果满足mod(gen,T)的整除条件,gen表示当前迭代次数,T=2*D为与维数相关的模式搜索参数.这样在搜索的过程中,先由CS算法执行全局搜索得到新的群体,采用自适应竞争排名构建优势巢穴集,如果满足模式搜索条件,根据合作分享策略利用优势巢穴集生成新的模式搜索起始位置.从而利用PS搜索策略对该位置进行局部趋化,并评价优化后的结果,加强求解精度.为了有效求解复杂多极值全局优化问题,避免算法陷入局部最优,本文提出了一种自适应竞争排名构建方法,该方法根据适应度值进行自适应竞争排名,排在前面的构成优势巢穴集.该方法可使迭代初期强化竞争,减少排名数量,加快搜索;而迭代后期放宽名次数量,优势巢穴集扩大,便于合作分享信息,避免早熟.构建优势巢穴集N的具体实施方法如下:根据排名机制保存多个优质巢穴,这些巢穴对应多个全局最好位置解,用这些解来指导模式搜索及位置更新,然后从更新后的n个巢穴中选取排名前R的优势巢穴进行保存.R的定义如式(3)所示:通过这种自适应竞争排名机制构建优势巢穴集,使得迭代初期优势巢穴集较小,有利于快速搜索到全局较优解并能增强模式搜索的局部趋化能力,加速算法收敛.迭代中后期,该策略利用自适应排名机制的巢穴集,扩大了搜索范围,抑制过快早熟,从而使得算法不易陷入局部最优,保持了种群的多样性.基本的CS算法中采用的是偏好随机游动搜索策略,该策略存在启发信息不足,搜索慢的问题,为此,本文提出了一种合作分享策略.该策略利用合作分享优势集搜索机制,代替混合变异和交叉操作方式生成若干新解,有利于强化优势经验的学习.具体实施方法为:布谷鸟在位置更新时,随机选择优势巢穴集中的一个优势巢穴位置供当前模式搜索信息分享,该优势巢穴作为新的局部搜索的起始位置,指导模式搜索趋化寻优,从而避免过早收敛,防止陷入局部最优.合作分享策略引入线性惯性权重,以加强全局指导能力.利用合作分享策略选择模式搜索的起始位置,其分享策略如式(4)所示:对于全局优化问题其目标函数值无限接近0时,对应的适应度值也非常小,当适应度值小于一定数量级时,很难区分适应度值的大小,为了解决这一问题,算法在实施过程中直接采用目标函数值来代替适应度值.PSCS算法步骤算法2所示.初始化n个布谷鸟巢穴Xi(i=1,2,…,n),迭代次数gen初始值设为1;计算各个巢穴位置Xi=(xi1,xi2,…,xiD)T的适应度值Fi=f(Xi);While (nFE<maxNFES)或(满足求解精度条件)(全局探测阶段)采用莱维飞行随机游动机制产生新的巢穴位置Xi;评价新的巢穴位置Xi的适应度值f(Xi);随机选择一个候选巢穴位置Xj;If(f(Xi)<f(Xj))用新的巢穴位置Xi替代候选巢穴Xj;End if按一定发现概率Pa丢弃差的巢穴;(局部开发阶段)自适应竞争排名构建机制:利用式(3)选取排名前R的优势巢穴进行保存为N;合作分享策略:利用式(4)产生新的巢穴位置Vk替代丢弃位置并保留最好解;If (mod(gen,T)==0)模式搜索趋化策略:将巢穴位置Vk作为模式搜索的起始位置进行局部趋化于;用新的巢穴位置替代候选巢穴Xi;End ifgen=gen+1并保存最好解;End ifEnd while (nFE==maxNFES)对这类优化算法的测评,有一些经典的测试函数.为了全面验证本文提出的PSCS 算法的有效性和先进性,共选用了52个具有代表性的且为不同类型的典型测试函数对算法进行全面测试.测试函数主要分为三类.第一类是典型常用的16个高维测试函数[21],Ackley(AC)、Griewank(GR)、Penalized1(P1)、Penalized2(P2)、Quartic Noise(QN)、Rastrigin(RA)、NC-Rastrigin(NR)、Rosenbrock(RO)、Schwefel1.2(S12)、Sphere Model(SM)、Step(ST)、Schwefel2.21(S21)、Schwefel2.22(S22)、Schwefel2.26(S26)、Weierstrass(WE)和Zakharov(ZA).所有函数的理论最优值都为0.其中,对S26函数进行修正为求解全局最小值.这些测试函数固定维度为30,求解困难,对于算法的全局优化性能要求较高.以全局优化复杂单模态的高维RO香蕉型函数问题为例,其内部是一个长而狭窄、形如抛物线的平坦山谷地带,变量间相互关联,很难收敛于全局最优.目前已有的算法迭代后期基本停止进化,求解精度不高.第二类选用了26个固定维数的测试函数[21],BOhachevsky1(BO1)、BOhachevsky2(BO2)、BRanin(BR)、EaSom(ES)、GoldsteinPrice(GP)、Shekel′s Foxholes(SF)、SixhumpcamelBack(SB)、SHubert(SH)、SChaffer(SC)、Hartman3(H3,4)、Helical Valley(HV)、COlville(CO)、KOwalik(KO)、PErm(PE)、Power Sum(PS)、Shekel5(S4,5)、Shekel7(S4,7)、Shekel10(S4,10)、Hartman6(H6,4)、MIchalewicz(MI)、WhItley(WI)、Fletcher Powell(FP)、Modified Langerman(ML)、Modified Shekel′s Foxholes(MS)、POwell(PO)、Expansion F10(EF).其维数为指定的固定值,从2维至25维不等,部分函数搜索难度极高,如FP,S4,10和ML等复杂多模态函数.这些函数表现为非对称,局部最优解随机分布,选择这些复杂的函数可以更好地测试本文算法的通用性.第三类为具有扰动的测试函数,以进一步验证PSCS算法求解连续全局优化问题的适应性与鲁棒性.选用了文献[12]中的前10个复杂变换后的测试函数F1~F10以便于与近年来新提出的CS改进算法进行比较.这些复杂的测试函数中包括变换和旋转的单峰和多峰函数,且变量间存在相互独立与相互关联的特征;所以,这些函数在算法的求解过程中难度较高.本文采用上述测试函数对PSCS算法进行了测试,并与传统的CS算法、近年来提出的改进的CS算法以及其他智能优化算法进行了实验比较.实验设备为一般笔记本电脑,CPU为Intel(R) Core(TM) 2 Duo CPU T6500 2.10GHz,4GB内存,实验仿真软件是Matlab 7.0.为了更好地评估算法的性能,本文采用如下评价准则.(1)适应度值误差Error.如式(6)所示:(2)函数成功运行评价次数NFEs.当算法在每次运行时,在当前函数评价次数没有达到最大评价次数且最优解的适应度值误差达到指定的求解精度(小于一定阈值)时的函数评价次数.实验中,本文算法将最大评价次数分别设置为100000和300000,根据式(7)定义的误差容许范围,测试结果是否成功.(3)函数寻优成功率SR.算法独立运行30次,达到误差阈值精度累计成功的实验次数与总实验运行30次的比值.(4)算法收敛加速率AR.为了测试算法的收敛速度,本文使用加速率来比较本文算法与CS算法的收敛速度,其公式定义如式(8)所示.其中NFECS和NFEPSCS分别表示算法CS和PSCS关于函数的成功评价次数.(5)算法的复杂性AC.为定量评价算法的复杂性,采用式(9)度量算法的复杂性[22] 本文算法中基本的参数设置与CS算法设置相同,为了便于算法的比较,种群规模数定为30,固定维数为30,发现概率Pa=0.25.实验数据是在指定最大评价次数独立运行30次的情况下,取平均值Mean,最好值Best,最坏值Worst,标准方差SD(Standard Deviation)以及平均成功评价次数NFEs.其中,平均成功评价次数是在30次独立运行下其收敛精度误差值小于指定阈值的平均成功评价次数.Rmax和Rmin分别取0.5和0.05.wmin和wmax分别设置为1和0.2.模式搜索中的δ=0.2,α=为了测试模式搜索最大迭代次数nPS值的不同选择对算法的影响,防止局部信息权重过高,可能会使算法搜索陷入局部最优解.本文选用了16个高维复杂测试函数来评测模式搜索次数对算法性能的影响,其中包括8个单模和8个多模复杂函数.16个测试函数全局最优值都为0,30维最大评价次数为100000情况下的测试结果如图2所示.测试方法是固定其余的参数的情况下,变化模式搜索nPS的范围取值为[20,400].从图2(a)的实验结果来看,除了单模函数QN外,nPS参数设置不同会对单模函数的收敛效果产生了明显的影响,随着nPS设置数值的增大,实验效果会趋于更优.而对于图2(c)关于8个多模函数的测试结果来看则不同,当nPS数值达到100次后,取得了较好的求解值,随后,收敛效果趋于稳定.另外,图2(b)、(d)实验的成功评价次数也进一步验证上述结论.所以,综上所述,为了达到PSCS算法全局搜索与局部趋化能力的平衡,nPS设置值控制在[100,200]之间为宜,在150附近取值对算法的整体性能相对较好.所以,实验中nPS取为150,有利于提高算法对不同类型函数优化的求解精度.表1和表2为本文PSCS算法与标准CS算法优化52个函数的适应值平均误差与标准差的实验结果.最大函数评价次数maxNFES=100000,其中,“≈”表示CS 算法与PSCS算法的平均误差在0.05水平下的双侧t-检验是不显著的;“☆”和“◎”表示标准CS算法与PSCS算法的平均误差在0.05水平下的双侧t-检验是显著的,“☆”表示CS算法求解质量比PSCS算法差,而“◎”则代表求解精度比PSCS算法好.表中最好的实验结果为加粗显示.Sy(Symbol)表示函数简称.从表1中可以看出,对于固定低维的函数而言,除了ES、H3,4、S4,5、S4,7和S4,10这5个函数虽然CS算法比PSCS算法评价次数略少,但是PSCS在保证求解精度的前提下,对于H3,4、S4,5、S4,7和S4,10这4个函数的求解标准偏差SD却更小,说明PSCS算法性能有较强的健壮性.然而,其他优化函数PSCS算法不仅表现出寻优精度显著提高,而且平均成功评价次数也明显减少,PSCS算法的成功率从CS算法的0.55提高到0.65,平均加速率AR为15.93.整体上,显示出PSCS算法较好的寻优性能与求解速度.对于高维复杂函数的全局寻优,PSCS算法比标准CS算法更加优越,从表2中明显看出,PSCS算法有6个函数(GR、SM、ST、S22、S26和F1)直接搜索到全局最优值,在相同条件下PSCS算法测试的平均误差都优于CS算法.根据平均误差在0.05水平下的双侧t-检验结果显示,在26个标准测试函数中PSCS算法有20个测试函数优于CS算法.显示出其优越的搜索性能.对于复杂变换旋转的F1~F10中的单峰函数而言,PSCS算法在F1~F5函数上的平均误差都明显优于CS算法,其中F1函数,本文算法在有限的评价次数内直接搜索到全局最优值,显示出其优越的性能;对于F1~F10中的多峰函数而言,除了在F8函数上,PSCS算法的平均误差近似且略优于CS算法,搜索精度优势不够明显外,但在F6~F7和F9~F10函数上的平均误差都明显优于CS算法.不管对于具有变换特点的函数、还是变换且旋转的函数而言,PSCS算法都显示出其优越的全局寻优能力,尤其对于F1、F2、F6和F7函数的测试,本文算法相比于CS 算法的求解精度大幅提高.表3和表4为本文进一步测试PSCS算法和CS算法在评价次数为300000的情况下,平均误差、平均成功评价次数等结果.从结果上来看,表4中的平均寻优率SR 从0.51提高到0.98,说明随着评价次数的提高,PSCS算法性能更具优势.进一步验证了PSCS算法不仅寻优率高,求解速度也相比CS算法显著提高的上述结论.另外,图3为CS和PSCS算法关于不同测试问题在最大评价次数为300000次的情况下函数评价次数百分比堆积柱形图,图中CS算法若评价次数达到最高评价次数仍未能成功评价,则以最高评价次数绘图.图中结果有效地说明本文PSCS算法相比传统CS算法寻优率高,评价次数少.为分析PSCS算法与其他改进CS算法的性能差异,表5列出本文PSCS算法与ICS算法[8]、CSPSO算法[16]和OLCS算法[17,18]在D=30维空间上的性能比较结果.分析表5可知,针对单峰函数,各算法的性能各异.在F1函数上,PSCS算法和ICS算法性能相当,都能收敛到全局最好解,但明显优于CSPSO算法和OLCS算法的全局搜索性能;在F2和F4函数实验上,CSPSO算法性能最优,其次是PSCS算法.而在F3和F5函数上,PSCS算法的性能最优.针对复杂多峰函数而言,除了F10函数上,本文算法性能弱于ICS算法,其余F6~F9函数PSCS算法的性能都是最优,尤其F7和F9函数,本文算法求解精度提高显著.根据表5中针对平均误差检验统计结果,10个复杂函数测试中PSCS算法有7个函数达到了最优,另外3个函数的测试结果也具有很好的竞争优势.另外,表6和图4为PSCS算法与其他改进的CS的平均函数成功评价次数的实验比对,进一步说明了本文策略的优越性.总体看来,PSCS算法明显优于其它改进的CS算法.在表7中,本文还将PSCS算法与近年来发表的其他智能优化算法[23](OEA,HPSO-TVAC,CLPSO,APSO)进行了比较,实验数据来自文献[23].表7中OEA 算法的评价次数为3.0*105,其他算法的评价次数均为2.0*105.从表7可以看出,本文算法对于SM,GR,S22以及ST函数都能搜索到全局最优值,与OEA,HPSO-TVAC,CLPSO和APSO算法相比求解精度更高,搜索能力更强.在表8中,本文算法LFABC与其他改进的差分进化算法[23](SaDE,jDE,JADE)进行了比较.算法中的实验参数同文献[23],实验比较的结果如表8所示.从表中的实验结果来看,对于大都数实验函数PSCS算法相比于改进的DE算法都有更好的搜索性能.在智能算法全局优化过程中,计算量主要集中在目标函数的评估阶段,其复杂性往往表现为对目标函数的评价次数.如果最大迭代次数为M,标准的CS算法和PSCS 算法的时间复杂度分别为O(M*N)和O(M*(N+nPS)).如果固定最大迭代次数进行评测,PSCS算法函数评价次数与CS算法的评价次数近似相等.如果设置相同的最大评价次数,PSCS算法与CS算法的复杂度O(maxNFES)即相同.所以,可以看出本文的实验结果是基于各算法相同的时间复杂度的前提下测得,与标准CS算法及改进的CS算法相比并未增加时间复杂度,体现出实验的公平性.为了更好地定量评价算法的复杂性,本文采用式(9)度量算法的复杂性.表9为CS 算法和PSCS算法在不同搜索空间上的计算复杂性.从表9可知,PSCS算法的计算复杂度并未提高,主要由于PSCS 算法利用自适应竞争排名构建机制与合作分享策略指导模式搜索的局部趋化,提高了算法的搜索性能.同时模式搜索的最大迭代次数150并未消耗太多的评价时间,由于竞争排名与合作机制对局部趋化的指导作用提高了求解精度反而使得总的评价次数减少.此外,我们进一步发现,随着维数增加,算法的时间消耗将逐步弱化,以致PSCS算法的复杂度与CS算法的复杂度差距缩小,并在维数增大到50的情况下PSCS的复杂度0.10优于CS算法的复杂度值0.27,这也再一次验证了本文算法有较强的高维收敛速度与全局搜索性能的结论.综合平均误差、平均函数评价次数、寻优率与加速率等的比较结果,PSCS算法整体性能优异.以复杂高维的香蕉型RO函数求解问题为例,目前已有的算法迭代后期基本停止进化,而本文算法表现出较好的全局搜索性能,其原因为算法在全局寻优中有效地结合了模式搜索的局部趋化提供了全局寻优的有效信息,使得算法能有效地辨识搜索方向,从而达到了很好的全局探测能力与较高的寻优精度.PSCS算法对于复杂变换的F1和F9函数的优化,都能搜索到全局最优值,取得了很好的搜索性能.虽然两个函数变量间相互独立,复杂多变,但PSCS算法结合优。

布谷鸟搜索算法简介

布谷鸟搜索算法简介

布谷鸟搜索算法维基百科,自由的百科全书布谷鸟搜索(Cuckoo Search,缩写 CS),也叫杜鹃搜索,是由剑桥大学杨新社(音译自:Xin-She Yang)教授和S.戴布(S.Deb)于2009年提出的一种新兴启发算法[1]。

CS算法是通过模拟某些种属布谷鸟的寄生育雏(Brood Parasitism),来有效地求解最优化问题的算法。

同时,CS也采用相关的Levy飞行搜索机制。

研究表明,布谷鸟搜索比其他群体优化算法更有效。

布谷鸟搜索布谷鸟搜索(CS)使用蛋巢代表解。

最简单情况是,每巢有一个蛋,布谷鸟的蛋代表了一种新的解。

其目的是使用新的和潜在的更好的解,以取代不那么好的解。

该算法基于三个理想化的规则:∙每个杜鹃下一个蛋,堆放在一个随机选择的巢中;∙最好的高品质蛋巢将转到下一代;∙巢的数量是固定的,布谷鸟的蛋被发现的概率为。

实际应用布谷鸟搜索到工程优化问题中的应用已经表现出其高优效率,经过几年的发展,为了进一步提高算法的性能,CS算法的很多变体与改进逐步涌现。

瓦尔顿(Walton)等提出了修正布谷鸟搜索(Modified Cuckoo Search,缩写 MCS);伐立安(Valian)等提出了一种可变参数的改进CS算法,提高了收敛速度,并将改进算法应用于前馈神经网络训练中;马里切尔凡姆(Marichelvam)将一种混合CS算法应用于流水车间调度问题求解中;钱德拉塞卡兰(Chandrasekaran)等将集成了模糊系统的混合CS算法应用于机组组合问题。

杨(Yang)和戴布(Deb)提出多目标布谷鸟搜索(Multiobjective Cuckoo Search,缩写 MOCS),应用到工程优化并取得很好的效果;詹(Zhang)等通过对种群分组,并根据搜索的不同阶段对搜索步长进行预先设置,提出了修正调适布谷鸟搜索(Modified Adaptive Cuckoo Search,缩写 MACS),提高了CS的性能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

今天我要讲的内容是布谷鸟算法,英文叫做Cuckoo search (CS algorithm)。

首先还是同样,介绍一下这个算法的英文含义,Cuckoo是布谷鸟的意思,啥是布谷鸟呢,是一种叫做布谷的鸟,o(∩_∩)o ,这种鸟她妈很懒,自己生蛋自己不养,一般把它的宝宝扔到别的种类鸟的鸟巢去。

但是呢,当孵化后,遇到聪明的鸟妈妈,一看就知道不是亲生的,直接就被鸟妈妈给杀了。

于是这群布谷鸟宝宝为了保命,它们就模仿别的种类的鸟叫,让智商或者情商极低的鸟妈妈误认为是自己的亲宝宝,这样它就活下来了。

Search指的是搜索,这搜索可不是谷歌一下,你就知道。

而是搜索最优值,举个简单的例子,y=(x-0.5)^2+1,它的最小值是1,位置是(0.5,1),我们要搜索的就是这个位置。

现在我们应该清楚它是干嘛的了吧,它就是为了寻找最小值而产生的一种算法,有些好装X的人会说,你傻X啊,最小值不是-2a/b吗,用你找啊? 说的不错,确实是,但是要是我们的函数变成y=sin(x^3+x^2)+e^cos(x^3)+log(tan(x) +10,你怎么办吶?你解不了,就算你求导数,但是你知道怎么解导数等于0吗?所以我们就得引入先进的东西来求最小值。

为了使大家容易理解,我还是用y=(x-0.5)^2+1来举例子,例如我们有4个布谷鸟蛋(也就是4个x坐标),鸟妈妈发现不是自己的宝宝的概率是0.25,我们x的取值范围是[0,1]之间,于是我们就可以开始计算了。

目标:求x在[0,1]之内的函数y=(x-0.5)^2+1最小值(1)初始化x的位置,随机生成4个x坐标,x1=0.4,x2=0.6,x3=0.8,x4 =0.3 ——> X=[0.4, 0.6 ,0.8, 0.3](2)求出y1~y4,把x1~x4带入函数,求得Y=[1,31, 1.46, 1.69, 1.265],并选取当前最小值ymin= y4=1.265(3)开始定出一个y的最大值为Y_global=INF(无穷大),然后与ymin比较,把Y中最小的位置和值保留,例如Y_global=INF>ymin=1.265,所以令Y _global=1.265(4)记录Y_global的位置,(0.3,1.265)。

(5)按概率0.25,随机地把X中的值过塞子,选出被发现的蛋。

例如第二个蛋被发现x2=0.6,那么他就要随机地变换位子,生成一个随机数,例如0.02,然后把x2=x2+0.02=0.62,之后求出y2=1.4794。

那么X就变为了X=[0.4, 0.6 2 ,0.8, 0.3],Y=[1,31, 1.4794, 1.69, 1.265]。

(6)进行莱维飞行,这名字听起来挺高大上,说白了,就是把X的位置给随机地改变了。

怎么变?有一个公式x=x+alpha*L。

L=S*(X-Y_global)*rand3S=[rand1*sigma/|rand2|]^(1/beta)sigma=0.6966beta=1.5alpha=0.01rand1~rand3为正态分布的随机数然后我们把X=[0.4, 0.6 ,0.8, 0.3]中的x1带入公式,首先随机生成rand1=-1. 2371,rand2=-2.1935,rand3=-0.3209,接下来带入公式中,获得x1=0.39 85之后同理计算:x2=0.6172x3=0.7889x4=0.3030(7)更新矩阵X,X=[0.3985, 0.6172, 0.7889, 0.3030](8)计算Y=[1.3092, 1.4766, 1.6751, 1.2661],并选取当前最小值ymin= y4=1.2661,然后与ymin比较,把Y中最小的位置和值保留,例如Y_global =1.265<ymin=1.2661,所以令Y_global=1.265(9)返回步骤(5)用更新的X去循环执行,经过多次计算即可获得y的最优值和的最值位置(x,y)1.% -----------------------------------------------------------------2.% Cuckoo Search (CS) algorithm by Xin-She Yang and Suash Deb %3.% Programmed by Xin-She Yang at Cambridge University %4.% Programming dates: Nov 2008 to June 2009 %5.% Last revised: Dec 2009 (simplified version for demo only) %6.% -----------------------------------------------------------------7.% Papers -- Citation Details:8.% 1) X.-S. Yang, S. Deb, Cuckoo search via Levy flights,9.% in: Proc. of World Congress on Nature & Biologically Inspired10.% Computing (NaBIC 2009), December 2009, India,11.% IEEE Publications, USA, pp. 210-214 (2009).12.% /PS_cache/arxiv/pdf/1003/1003.1594v1.pdf13.% 2) X.-S. Yang, S. Deb, Engineering optimization by cuckoo search,14.% Int. J. Mathematical Modelling and Numerical Optimisation,15.% Vol. 1, No. 4, 330-343 (2010).16.% /PS_cache/arxiv/pdf/1005/1005.2908v2.pdf17.% ----------------------------------------------------------------%18.% This demo program only implements a standard version of %19.% Cuckoo Search (CS), as the Levy flights and generation of %20.% new solutions may use slightly different methods. %21.% The pseudo code was given sequentially (select a cuckoo etc), %22.% but the implementation here uses Matlab's vector capability, %23.% which results in neater/better codes and shorter running time. %24.% This implementation is different and more efficient than the %25.% the demo code provided in the book by26.% "Yang X. S., Nature-Inspired Metaheuristic Algoirthms, %27.% 2nd Edition, Luniver Press, (2010). " %28.% --------------------------------------------------------------- %29.30.% =============================================================== %31.% Notes: %32.% Different implementations may lead to slightly different %33.% behavour and/or results, but there is nothing wrong with it, %34.% as this is the nature of random walks and all metaheuristics. %35.% -----------------------------------------------------------------36.37.% Additional Note: This version uses a fixed number of generation %38.% (not a given tolerance) because many readers asked me to add %39.% or implement this option. Thanks.%40.function [bestnest,fmin]=cuckoo_search_new(n)41.if nargin<1,42.% Number of nests (or different solutions)43.n=25;44.end45.46.% Discovery rate of alien eggs/solutions47.pa=0.25;48.49.%% Change this if you want to get better results50.N_IterTotal=1000;51.%% Simple bounds of the search domain52.% Lower bounds53.nd=15;54.Lb=-5*ones(1,nd);55.% Upper bounds56.Ub=5*ones(1,nd);57.58.% Random initial solutions59.for i=1:n,60.nest(i,:)=Lb+(Ub-Lb).*rand(size(Lb));61.end62.63.% Get the current best64.fitness=10^10*ones(n,1);65.[fmin,bestnest,nest,fitness]=get_best_nest(nest,nest,fitness);66.67.N_iter=0;68.%% Starting iterations69.for iter=1:N_IterTotal,70. % Generate new solutions (but keep the current best)71. new_nest=get_cuckoos(nest,bestnest,Lb,Ub);72. [fnew,best,nest,fitness]=get_best_nest(nest,new_nest,fitness);73. % Update the counter74. N_iter=N_iter+n;75. % Discovery and randomization76. new_nest=empty_nests(nest,Lb,Ub,pa) ;77.78. % Evaluate this set of solutions79. [fnew,best,nest,fitness]=get_best_nest(nest,new_nest,fitness);80. % Update the counter again81. N_iter=N_iter+n;82. % Find the best objective so far83. if fnew<fmin,84. fmin=fnew;85. bestnest=best;86. end87.end %% End of iterations88.89.%% Post-optimization processing90.%% Display all the nests91.disp(strcat('Total number of iterations=',num2str(N_iter)));92.fmin93.bestnest94.95.%% --------------- All subfunctions are list below ------------------96.%% Get cuckoos by ramdom walk97.function nest=get_cuckoos(nest,best,Lb,Ub)98.% Levy flights99.n=size(nest,1);100.% Levy exponent and coefficient101.% For details, see equation (2.21), Page 16 (chapter 2) of the book 102.% X. S. Yang, Nature-Inspired Metaheuristic Algorithms, 2nd Edition, Lunive r Press, (2010).103.beta=3/2;104.sigma=(gamma(1+beta)*sin(pi*beta/2)/(gamma((1+beta)/2)*beta*2^((beta-1)/2))) ^(1/beta);105.106.for j=1:n,107. s=nest(j,:);108. % This is a simple way of implementing Levy flights109. % For standard random walks, use step=1;110. %% Levy flights by Mantegna's algorithm111. u=randn(size(s))*sigma;112. v=randn(size(s));113. step=u./abs(v).^(1/beta);114.115. % In the next equation, the difference factor (s-best) means that 116. % when the solution is the best solution, it remains unchanged. 117. stepsize=0.01*step.*(s-best);118. % Here the factor 0.01 comes from the fact that L/100 should the typica l119. % step size of walks/flights where L is the typical lenghtscale; 120. % otherwise, Levy flights may become too aggresive/efficient,121. % which makes new solutions (even) jump out side of the design domain 122. % (and thus wasting evaluations).123. % Now the actual random walks or flights124. s=s+stepsize.*randn(size(s));125. % Apply simple bounds/limits126. nest(j,:)=simplebounds(s,Lb,Ub);127.end128.129.%% Find the current best nest130.function [fmin,best,nest,fitness]=get_best_nest(nest,newnest,fitness) 131.% Evaluating all new solutions132.for j=1:size(nest,1),133. fnew=fobj(newnest(j,:));134. if fnew<=fitness(j),135. fitness(j)=fnew;136. nest(j,:)=newnest(j,:);137. end138.end139.% Find the current best140.[fmin,K]=min(fitness) ;141.best=nest(K,:);142.143.%% Replace some nests by constructing new solutions/nests144.function new_nest=empty_nests(nest,Lb,Ub,pa)145.% A fraction of worse nests are discovered with a probability pa146.n=size(nest,1);147.% Discovered or not -- a status vector148.K=rand(size(nest))>pa;149.150.% In the real world, if a cuckoo's egg is very similar to a host's eggs, the n151.% this cuckoo's egg is less likely to be discovered, thus the fitness should152.% be related to the difference in solutions. Therefore, it is a good idea153.% to do a random walk in a biased way with some random step sizes. 154.%% New solution by biased/selective random walks155.stepsize=rand*(nest(randperm(n),:)-nest(randperm(n),:));156.new_nest=nest+stepsize.*K;157.for j=1:size(new_nest,1)158. s=new_nest(j,:);159. new_nest(j,:)=simplebounds(s,Lb,Ub);160.end161.162.% Application of simple constraints163.function s=simplebounds(s,Lb,Ub)164. % Apply the lower bound165. ns_tmp=s;166. I=ns_tmp<Lb;167. ns_tmp(I)=Lb(I);168.169. % Apply the upper bounds170. J=ns_tmp>Ub;171. ns_tmp(J)=Ub(J);172. % Update this new move173. s=ns_tmp;174.175.%% You can replace the following by your own functions 176.% A d-dimensional objective function177.function z=fobj(u)178.%% d-dimensional sphere function sum_j=1^d (u_j-1)^2. 179.% with a minimum at (1,1, ...., 1);180.z=sum((u-1).^2);。

相关文档
最新文档