现代社会涉及大量的人际交流,通信量在快速增加;社会中还涉及大量的竞争和合作。我们交流的目的有时候是为了合作,有时候则是为了竞争。我们有时候会说出真相因为希望其他人也能如实相告,但也经常为了趋利避害而撒谎。
可以在进化算法中模拟人际交流来研究交流的策略,或寻找优化问题的解。囚徒困境就是代理沟通的一个例子。
目录
文化算法中的信仰空间
人际关系、沟通、合作、欺骗和多目标问题与人类文化有很多共同点。人类学会了以近似最优的方式来关联和构建社会并发展文化。我们没有意识到所有的最优特征已经固有的存在于人类文化中,却在考虑这些特征是否能成为值得做的有趣的研究课题。
文化算法(cultural algorithm,CA)将优化问题的候选解看做个体,这与其他进化算法类似。文化算法还把指导个体进化的准则看成是它们的文化。文化算法对个体与其文化的相互影响建模以得到优化算法。将文化算法中虚拟社会的文化规范称作信仰空间。
在文化算法的每一代中,个体都会重组和变异。这种重组和变异都会受到信仰空间的限制。程序员在设计时可以给信仰空间一些约束,让它支持种群中受欢迎的特征,或者回避不良的特征。
文化算法可以实施双重继承:解的特征来自父代和子代,一代的信仰空间从前一代继承而来。进化仍然是在个体层面上,但受到信仰空间的约束。
在实施文化算法时,信仰空间可以是静态的,也可以是动态的。静态的信仰空间不随时间改变,而动态的信仰空间随时间的变化而变化,文化是可以进化的。在动态信仰空间的文化算法中,不仅种群从一代到下一代,信仰空间也会,信仰空间不仅会影响种群的变化,种群反过来也会影响信仰空间的变化。采用动态信仰空间的这个想法来自对人类社会的观察。文化的进化比生物层的进化快很多。因此,我们希望具有动态信仰空间的文化算法能够比无信仰空间的进化算法更快的找到最优解。
下述算法是对文化算法的基本概述,在初始化候选解的时候同时也初始化信仰空间B。B指导进化过程。算法经由评价每一个个体的费用来推进进化过程,在那之后利用个体来修改B,修改B的选项很多。
文化进化规划
信仰空间指明性能最好的候选解在搜索空间的什么地方。接下来介绍受文化算法影响的进化规划(CAEP)。用2n个参数对信仰空间B编码,这里n为优化问题的维数。区间指明主流文化相信的好解的第k维在搜索空间中的位置。在CAEP中:
其中i∈[1,N],k∈[1,n],其中N为种群规模,n是问题的维数。~N(0,1),
是变异方差。如果个体
的第k维在信仰空间中,它的变异版本
就是均值为
的一个随机变量。如果
在信仰空间之外,它的变异版本是以距
更近的
或
为均值的随机变量。
如下图所示,在信仰空间中,它就以标准的方式变异。当
在信仰空间之外,其变异版本的中心在信仰空间最近的那条边上。变异版本可以最终落在信仰空间之外,实际上,它至少有50%的机会处于
之外。
现讨论在CAEP中更新信仰空间的几种方式。可以利用最好的M个个体来更新信仰空间。首先找出最好的M个个体每一维的最小值和最大值:对于k∈[1,n],
其中个体的下标从最好到最差按升序排列,所以{:j∈[1,M]}包含在种群中最好的M个个体中。我们用最小域值和最大阈值影响从一代到下一代的信仰空间:对于k∈[1,n],
参数α∈[0,1]是信仰空间的惯性,它决定信仰空间从一代到下一代的停滞情况。如果α=1,信仰空间不会改变。如果α=0,信仰空间完全由当前种群决定,不会受到前一代信仰空间的影响。
自适应文化模型
自适应文化模型(ACM),以人类社会中个体之间相互影响的方式为基础。例如:
- 个体受到在地理上或关系上与他接近的个体的影响大于距它较远的个体的影响。
- 个体受到与它相似的个体的影响大于与它不同的个体的影响。
- 个题受到成功者的影响大于非成功者的影响。
通过布置优化问题候选解的网格可以模拟ACM。把候选解看成是种群中的个体。度量两个个体的接近程度至少有几种不同的方式。首先,若两个个体被安排在同一个网格中,它们就在地理上相邻。其次,根据它们在解的特征上的相似程度,度量个体在行为上的接近程度。
无论是在地理上或是在行为上,更接近的个体之间都更有可能交换信息,因此,从行为论的角度来看,它们有可能变得更为相似。个体交换信息时,适应性更强的个体更有可能与适应性差的个体分享信息,反之则不然。
只有在地理上相邻并相似才有可能分享信息。
下面算法是对ACM的基本概述。初始化种群,并未每个候选解在网格中安排一个具体的位置。在每次迭代中,随机选择一个个体和它的一个邻居。随机的决定这两个邻居是否分享信息,如果这两个邻居很相似分享信息的概率会更大。如果决定分享信息,则随机的用适应性较强个体的一个解的特征替换适应性较差的那一个解的特征。
总是将适应性更强的个体信息传送给适应性较差的个体。设可调参数p1∈[0.5,1]等于从较好个体分享到较差个体的概率,p1被称为选择压力。总是想让p1大于等于0.5,因为从直观上来说,信息分享的方向不应该从较差到较好。
可以用下面的代码段替换上述算法信息分享的过程。