1、基于优化问题的多目标布谷鸟搜索算法关键字:布谷鸟搜索、元启发式算法、多目标、最优化摘要:在工程设计方面,很多问题都是典型的多目标问题,而且,都是复杂的非线性问题。现在我们研究的优化算法就是为了解决多目标化的问题,使得与单一目标问题的解决有明显的区别,计算结果和函数值有可能会增加多目标问题的特性。此时,元启发式算法开始显示出自己在解决多目标优化问题中的优越性。在本篇文章中,我们构造了一个新的用于解决多目标优化问题的算法布谷鸟搜索算法。我们通过一系列的多目标检验函数对其的有效性已经做出来检验,发现它可以应用于解决结构设计等问题中去,例如:光路设计、制动器设计等。另外,我么还对该算法的主要特性和应用
2、做了相关的分析。1.简介在设计问题中经常会考虑到很多多重的复杂问题,而且这些问题往往都具有很高的非线性性。在实际中,不同的目标之间往往会有分歧和冲突,有时候,实际的最优化解决方案往往不存在,而一些折中的和近似的方案往往也可以使用。除了这些挑战性和复杂性以外,设计问题还会受到不同设计目标的约束,而且还会被设计代码、设计标准、材料适应性、和可用资源的选择,以及设计花费等所限制,甚至是关于单一目标的全局最优问题也是如此,如果设计函数有着高度的非线性性,那么全局最优解是很难达到的,而且,很多现实世界中的问题经常是 NP-hard 的,这就意味着没有一个行之有效的算法可以解决我们提出的问题,因此,对于一
3、个已经提出的问题,启发式算法和科学技术与具体的学科交叉知识经常被用于其中,用来作为解决问题的向导。另一方面,元启发算法在解决此类优化问题方面是非常有效的,而且已经在很多刊物和书籍中得以运用,与单一目标的优化问题相反的是,多目标优化问题具有典型的复杂性和困难性,在单一目标的优化问题中我们必须去找出一个最优化的解决方法,此方法在问题的解决中存在着一个单一的点,并且在此问题中不包括那些多重的、平均优化的点,对于一个多目标的优化问题,存在着名为 Pareto-front 的多重的复杂的优化问题,为了了解我们所不熟悉的 Pareto-front 问题,我们需要收集并整理很多不同的方法,从而,此计算结果将
4、会随着近似解的变化、问题的复杂度和解决方法的多样性而有所变化甚至增加。在理论上,此类解决方法应包括问题并且应相对的有一致无分歧的分布情况,然而,还没有科学的方法可以证明这种解决方法可以在实际中得以应用。从问题的出发点我们可以得知,算法可以在单一目标优化问题中运行的很好,但是却不能在多目标的优化问题中直接的运用,除非是在特殊的环境与条件下才可以应用。例如,使用一些有利的求和方法将多目标问题归结到单一目标问题中去,在优化的过程中,我们需要大量的修改工作,除此之外,更困难的更具挑战性的是,怎样总结这些方法,使其有着足够的多样性,这样的话,这种新的解决方法就可以成为有效利用搜索空间的实例。而且,在真实
5、的生活中,优化问题往往包含了一些不确定性和干扰性,例如,材料的适应性对于一个产品的设计往往有着很重要的影响,一个优化的设计问题应该足够的完美使得对于设计者和决策者可以对很多不同种的东西提供一些更好的选择。尽管存在着这些挑战性,多目标优化问题仍存在着许多有效的算法使其在很多问题中有着成功的应用,此外元启发算法开始作为解决多目标优化问题的主角出现在大众面前,优化算法设计者以及科学家们经常模拟自然界中一些成功的范例来解决问题,例如,生物系统,很多新的算法也都开始出现并且在问题的解决中也有着很重要的应用。目前,有一种新的由杨新社教授和 Suach Deb 教授在 2009年提出的元启发算法,名为布谷鸟
6、算法,对于此种算法,在最初的研究中就可以看出,其具有很高的前瞻性,比现有的 PSO算法有着更好的性能,在本篇论文中我们将会对 CS 作以延伸,以便其可以解决多目标优化问题,而且可以建立一个基于多目标的布谷鸟搜索算法。第一步我们将通过建立一个多目标的检验函数来使问题具体化,然后我们会将其应用到工程优化问题中,包括双目标的光路设计和制动器设计。同时,我们也将讨论被提出的算法中其独有的特性,并且对文章做以进一步的研究。2.多目标的布谷鸟搜索 为了对 CS 算法做以延伸来解决多目标的问题,我们在此先对布谷鸟有趣的繁殖行为规律做以简要的回顾,然后,我们将会对此算法的基本观点和步骤以及实际的算法过程作以概
7、述。2.1 布谷鸟的繁殖行为布谷鸟是一种有趣的鸟,它的有趣不仅是因为它动听的歌声,还因为其具有侵略性的繁殖策略。像美洲黑杜鹃这一种鸟类,它们会将自己的卵产在公共的巢穴中,并且,它们会将其他鸟类的蛋移出巢外以提高自己的蛋被孵化的几率,大多数鸟类通过产卵于其他寄主的巢中这种寄生性规律来完成自己孵化的任务,目前,存在着三种最基本的寄生性行为:种内产卵寄生性、合作式寄生性、巢穴接管。一些寄主可以直接发现这些入侵者,并与入侵的鸟类发生冲突,如果寄主发现其巢中的蛋不是自己的,它们便会扔掉这些蛋或者直接遗弃这个巢穴,在别处重新建立一个新的巢穴。一些像 the New World brood parasiti
8、c Tapera 也通过类似的途径进行繁殖,这些雌性寄生性布谷鸟经常在颜色和新寄生的选择模式方法上有着特殊的一面。这些就降低了它们的蛋被遗弃的概率,从而提高了它们的繁殖率。2.2 levy 飞行的有效性在自然界中,动物存在着随机的或者类似随机的觅食行为,一般,动物的这种觅食行为的路径为一个有效的随机游走过程,因为下一次的出发路径是建立在当前的位置和去下一个位置的可能性上的,它们方向的选择是建立在对于可被算术的模型化的可能性的基础上的,例如,一系列的研究已经可以表明很多动物和昆虫的飞行行为有着典型的 levy 飞行的特征。近期由 Reynolds 和 Frye 提出的一项研究表明,普通果蝇和黑腹
9、果蝇的活动路径为一个直线型的飞行路线,并且在这一个路线中有很多 的转角,成了一个间歇性的 levy 飞行模型,甚90至这种飞行与 levy 飞行有着一定的关系,随后,这一种行为已经被应用于优化问题和发现最优解的研究当中,初期的结果表明,这种行为有着很好的前景。大体上说,levy 飞行是一个随机的游走策略,它的步长可以由 levy 分布所决定,一般是根据一个简单有效的式子来决定的,即:0)(12exp),( 23ssL 0,sif(1)在这里, 是一个最小的步长, 为一个控制参数,显然,当 时,我们可得:s231),(ssL(2)可以看出,这是 levy 飞行的一个特殊情况。一般,levy 分布
10、可以通过一系列的傅里叶函数来定义,即20,|exp)(kkF(3)这里, 是一个控制参数,由于它没有解析结构,所以它的反常积分不易得出,但是不排除一些特殊情况。当 时,我们有2)(2kF(4)它的反常积分可以相应的转化为一个高斯分布,另一个特殊情况为当 ,此时,我们有:1|exp)(kkF(5)此时,可转化为一个柯西分布:22)(1),(xxp(6)这里 是一个局部参数, 控制整个分布的规模。对于一般的情况,相应的反常积分为:dkkssL)|exp()co1)(0(7)此式只有当 s 最大时才可以被估计,即有:ssL,|)2in()(1(8)这里的 是一个伽马函数)(zdtezz10)((9)
11、当其中的 z=n ,为整数时,我们有 )!1(n当图 2 表明他们在 100 步之内的飞行路线时,图 1 则表示他们飞行 100 个步长所遵循的 levy 分布图。这一情况指出 levy飞行比布朗随机游动在发现事物方面的能力要有效的多,以内其有着较大的搜索范围。对于他的有效性,又很多原因可以作为解释,其中一种是由于 levy 的方差比布朗运动的线性关系有着更快的增长率。,21,)(32t(10)2.3 多布标布谷鸟搜索算法在最初由杨新社教授和 Deb 教授提出的单一目标的布谷鸟优化算法中使用了三条基本的准则:(1)每一只布谷鸟一次只产一个蛋,然后会将你这一只蛋丢到随机选择的一个巢穴中。(2)在
12、一个最佳的巢中,有着质量最优的蛋,这会使下一代更好的繁殖下去。(3)可供选择的寄主巢穴的数量是有限的,而且寄主也会发现异种蛋,这样的几率为 ,也会扔掉这些异种的蛋,或者1,0ap直接丢弃自己原本的巢穴而去建一个新的巢。对于 k 个不同目标的多目标优化问题,我们可以将以上规则做以修改,使得此规则可以同时用于多目标的需要。(1)每一个布谷鸟一次只产一个蛋,然后将这些蛋放入随机选择的巢中,第 k 个蛋代表第 k 个目标。(2)每一个巢中的蛋都会以 的几率被遗弃,同样一个有 k 个ap蛋的巢也会根据蛋的相似性和区别以 的几率被重建。有时,a随机的混合也会用于其中。简单的说,这个最后的假设可以近似的看成
13、一个分数 ,ap而且这 n 个巢也会被新的巢所取代,对于目标的最大化,一个解决方法的适应性和可行性可以简单地归结为一些目标函数的求解问题,而且不受限制的方法也应该被广泛的发现。用数学的语言来说,第一条规则可以修改为一个随机过程,这样的话,一个新的算法策略就可以随机的由随机游走或者levy 飞行来总结得出。同时,有局限性的数字序列可以由算法决定,也可以想象为一个交叉的过程,对于每一个巢,可以有k 种如(11)式的解决方法,本质上说,第二条规则则可以被修改为精英策略,这样最佳的解决策略就可以用于下一代中,而且,这样的选择也可以帮助我们确认此算法过程的正确性。除此之外,第三条规则可以被类似的考虑为变异,这样最差的解决方法就可以以一定几率被丢弃,新的解决策略就可以根据解决策略之间的相似性被我们发现。这样也就可以将 levy 飞行与不同结果的解决策略相结合,从而使得这样的变异变得向量化。这种独特的结合过程可以很好的确认算法的有效性。基于这三种规则,多目标布谷鸟搜索算法的基本步骤可以总结为如表 3 的一系列伪代码,