第15章 头脑风暴优化算法
头脑风暴方式是通过不同背景的人彼此合作,激发更多的人提出更多想法的解决问题的方法。头脑风暴法较之于个体之和,群体参与能够达到更高的创造性协同水平,通常能够产生意想不到的智能。这种模拟头脑风暴法创造性解决问题思想的脑风暴优化算法,每一个个体都代表一个潜在的问题的解,通过个体的演化和融合进行个体的更新,这一过程与人类头脑风暴的过程相似。该算法具有优化过程非常简单的特点。本章简要介绍头脑风暴优化算法的基本思想、算法的描述和实现步骤等。
15.1 头脑风暴优化算法的提出
头脑风暴优化(Brain Storm Optimization,BSO)算法是2011年由史玉回教授基于人类创造性解决问题的头脑风暴方式而提出的一种优化算法[53]。在头脑风暴优化算法中,每个想法都代表问题的一个可行解。头脑风暴优化算法首先需要产生一定数量的可行解,其次分类,找出每类最优的个体作为类中心,再在一定规则下更新类中心和个体,直到得到问题的最优解,达到停止条件停止迭代。这一寻优过程与人类头脑风暴过程相似,所以称为脑风暴优化算法。该算法具有优化过程非常简单的特点。
15.2 头脑风暴优化算法的基本思想
头脑风暴(Brain-Storming)最早是精神病理学上的用语,指精神病患者的精神错乱状态,而现在则成为无限制的自由联想和讨论的代名词,其目的是产生新观念或激发创新设想。
头脑风暴法是由美国创造学家A. F.奥斯本于1939年首次提出、于1953年正式发表的一种激发性思维的方法。此方法经各国创造学研究者的实践和发展,已经形成了一个发明技法群,在管理上发展形成了一系列改善群体决策的方法。
头脑风暴在现代管理学上是一种集体研讨行为,它是一种常见的创造能力集体训练方法。头脑风暴是一种激发更多的人提出更多想法的解决问题的方法,最初主要用于广告设计,后来逐渐用于管理和其他方面。头脑风暴法主要通过会议的形式聚集具有不同背景的一群人或小组,围绕一个特定的兴趣或领域,进行创新或改善,产生新点子,提出新办法。让参会者围绕设定的话题敞开思想,畅所欲言,从而产生尽可能多的观点。然后通过交流思想,使各种设想在相互碰撞中激起脑海的创造性风暴,最后形成解决问题的最佳方案。头脑风暴的效用在于,较之于个体之和,群体参与能够达到更高的创造性协同水平。如图15.1所示是一群人集体研讨展示头脑风暴示意图。
为了尽可能地避免头脑风暴组内成员之间的社交障碍,提高整体的创造性,激发产生更多的方案,头脑风暴法在实行的过程中要遵守如下4条基本准则。
图15.1 头脑风暴法示意图
(1)任何想法都是有意义的,无论好坏,所有想法被提出来以后,直到一轮头脑风暴过程结束前,不会对其做出判断进行取舍。
(2)头脑风暴小组成员要毫无保留,头脑中产生的任何想法都值得分享和研究。
(3)很多新想法的产生,都是通过以现有想法为线索来联想产生的。
(4)需要产生尽可能多的新想法,然后从大量想法中进行挑选,获得优秀的解决方案。
这4条基本准则是为了保障头脑风暴小组中,每一个成员都可以充分发挥才智,提出尽可能多而且丰富的方案,进而由量变获得质变,得到较好的解决方案。
头脑风暴为什么能激发创新思维?根据奥斯本及其他研究者的观点,头脑风暴法的激发机理主要基于以下几点。
第一,联想反应。联想是产生新观念的基本过程。在集体讨论问题的过程中,每提出一个新的观念,都能引发他人的联想。相继产生一连串的新观念,产生连锁反应,形成新观念堆,为创造性地解决问题提供了更多的可能性。
第二,热情感染。在不受任何限制的情况下,集体讨论问题能激发人的热情。人人自由发言、相互影响、相互感染,能形成热潮,突破固有观念的束缚,最大限度地发挥创造性的思维能力。
第三,竞争意识。在有竞争意识的情况下,人人争先恐后,竞相发言,不断地开动思维机器,力求有独到见解,新奇观念。由心理学的原理可知,人类有争强好胜心理,在有竞争意识的情况下,人的心理活动效率可增加50%或更多。
第四,个人欲望。在集体讨论解决问题的过程中,个人的欲望自由,不受任何干扰和控制,是非常重要的。头脑风暴法有一条原则,不得批评仓促的发言,甚至不允许有任何怀疑的表情、动作、神色。这就能使每个人畅所欲言,提出大量的新观念。
头脑风暴的方式就是通过不同背景的人彼此合作,通常能够产生意想不到的智能。基于这种创造性解决问题的思想提出的头脑风暴优化算法中,每一个个体都代表一个潜在的问题的解,通过个体的演化和融合进行个体的不断更新,这一寻优过程直到得到问题的最优解。
15.3 头脑风暴过程的描述
现实社会中有很多问题,一个人费尽心力不一定能够解决,但如果召集一群来自不同背景的人进行头脑风暴,却可以大大提高问题成功解决的可能性。通过不同背景的人彼此合作,通常能够产生意想不到的智能。头脑风暴过程可以概括为如下几个步骤。
(1)聚集一群具有不同背景的人。
(2)按照一定原则为待解决问题提出大量的解决方案。
(3)选出几个人作为领袖,由他们在众多的解决方案中选择若干个优秀的方案。
(4)将现有方案作为线索,产生更多的方案,这里需要注意,要对步骤(3)中选出的优秀方案予以侧重,因为它们更为优秀,具有更大可能性成为问题最终的解决方案。
(5)像步骤(3)一样,由领袖在所有的现有方案中再次选出若干个优秀的方案。
(6)对问题再次进行观察和分析,再按照一定原则随机产生更多的解决方案。
(7)由领袖在所有的现有方案中再次选出若干个优秀的方案。
(8)对现有方案进行总结归纳甚至融合,产生并决定问题的最优解决方案。
15.4 头脑风暴优化算法的描述及实现步骤
在头脑风暴优化算法中,每个想法都代表问题的一个可行解。头脑风暴优化算法首先需要产生一定数量的可行解;其次分类,找出每类最优的个体作为类中心;最后在一定的规则下更新类中心和个体,达到停止条件停止迭代。
用头脑风暴优化算法寻找v-SVR的最佳参数(C,σ,v)的具体步骤如下。
(1)在可行解空间中,随机产生n个(种群规模)个体(可行解)。
(2)计算这n个个体的适应度值(适应度函数为交叉验证下的均方误差)。
(3)用k-means聚类方法将n个个体分成m(预先设定的常数)类。
(4)根据个体的适应度值将每一类中的个体进行排序,把每类中取得最优适应度值的个体作为这个类别中的类中心。
(5)以一定概率pa进行类中心的更新,随机选中一个中心,随机产生一个0~1的数r1,若r1<pa,则随机产生一个个体替换随机选中的类中心。
(6)进行个体的更新。个体的更新主要有以下4种方式。
①随机选中的一个类的类中心加一个随机扰动产生新个体。
②在随机选中的类上随机选择一个个体,个体加一个随机扰动产生一个新的个体。
③随机选中的两个类的类中心,先进行融合,再在融合的基础上加一个随机扰动产生一个新个体。
④在随机选中的两个类上分别随机选择一个个体,先进行融合,再在融合的基础上加一个随机扰动产生新个体。
设pb是调节上述前两种方式更新个体的概率,随机产生一个0~1的数r2,若r2<pb,则进行个体更新。随机产生一个0~1的数r3,pm代表第m类个体被选中的概率,又有r3<pm,r3<pc按上述方式①更新个体;若r3≥pc,则按方式②更新个体;若r2≥pb,则再随机产生一个0~1的数r4;若r4<pd,则按方式③更新个体;若r4≥pd按方式④更新个体。
(7)比较新产生的个体与原个体的适应度函数值,若新个体较优,则替换原个体。
(8)比较m类别中的个体,找出其中适应度函数值最优的个体。
(9)个体逐一进行更新,若达到迭代停止的条件,则停止迭代,否则,返回步骤(3)。
在上述步骤中,每一类的小群体被选中的概率与群体中个体的数量成正比,随机扰动可以用下式表示,即
ξ=logsig((0.5·Nmax_gen-Ncur_gen)/k)·rand()(15.2)
其中,为新个体的第d维值;为被选中个体的第d维值;ξ为一个调节随机扰动的参数;N(μ,σ)是均值为μ、方差为σ的正态分布;logsig是一个对数型变换函数,logsig(x)=1/(1+exp(-x));Nmax_gen为最大迭代次数;Ncur_gen为目前迭代次数;k为一个调节logsig坡度的参数,rand()代表0~1的一个随机数。
两个个体融合过程可以用下式表示
其中,为两个个体和融合产生的新个体的d维取值;v是一个0~1的随机数。
头脑风暴算法的流程如图15.2所示。
图15.2 头脑风暴算法的流程图
15.5 基于讨论机制的头脑风暴优化算法
文献[55]对基本的头脑风暴优化算法个体更新过程的分析,发现4种更新方式具有不同的效果,提出将原BSO算法的讨论过程分为组内讨论和组间讨论,分别控制局部搜索和全局搜索。设计组内某一个体的演化或者组内两个个体融合产生新个体的操作,分别称为演化方式1和方式2;设计不同组间的个体进行融合或者随机产生新个体的操作,分别称为演化方式3和方式4。组内讨论次数设为单调递增函数(见式(15.4));组间讨论次数设为单调递减函数(见式(15.5))。在搜索开始阶段,加强广泛搜索,充分发现潜在的全局最优;在搜索后期,着重细致搜索,加速收敛。
Nt-in=Nm-t(Nc-i/Nm-i)(15.4)
Nt-ex=Nm-t(1-Nc-i/Nm-i)(15.5)
其中,Nt-in为当前组内讨论次数上限;Nt-ex为当前组间讨论次数上限;Nc-i为当前产生第几代个体;Nm-i为最多产生的个体代数;Nm-t为组内讨论和组间讨论次数上限的最大值。
基于讨论机制的头脑风暴优化(DMBSO)算法流程图如图15.3所示。图中pDis为类中心个体被随机产生的个体替换的概率。组间和组内讨论的伪码实现详见文献[55]。
图15.3 基于讨论机制的头脑风暴优化算法流程图
在算法实现过程中涉及两个个体的融合,融合过程按下式进行:
Inew=vI1+(1-v)I2(15.6)
其中,Inew为两个个体融合产生的子代个体;I1和I2为接受融合操作的两个个体;v为一个0~1的随机数,调节两个个体的权重。在新个体产生过程中要加上随机扰动的方式为
其中,为选中个体在d维的值;为新产生个体在d维上的值;n(μ,σ)为高斯随机函数,均值为μ、方差为σ;ξ为步长,调节随机扰动的取值范围。ξ取值按下式计算得到:
ξ=logsig((0.5Nm-t-Nc-i)/k)×rand()(15.8)
其中,logsig()为一个对数S变换函数;k控制logsig()的坡度;rand()产生一个0~1的随机数。