《Java遗传算法编程》—— 1.9 基因表示

    xiaoxiao2024-02-21  147

    本节书摘来异步社区《Java遗传算法编程》一书中的第1章,第1.9节,作者: 【英】Lee Jacobson(雅各布森) , 【美】Burak Kanber(坎贝尔),更多章节内容可以访问云栖社区“异步社区”公众号查看。

    1.9 基因表示

    除了这些参数,影响遗传算法表现的另一个因素是所用的基因表示。这是遗传信息在染色体内的编码方式。更好的表示会让解的编码方式既表现力强,又容易进化。Holland(1975)的遗传算法是基于二进制基因表示。他建议染色体用含有0和1的序列。这种二进制表示可能是目前最简单的编码,但对于很多问题表现力不是很够,不是合适的首选。请考虑一个例子,用二进制表示来编码一个整数,它将被优化,用于某函数。在这个例子中,“000”代表0,而“111”代表7,就像通常二进制一样。如果染色体的第一个基因变异(一位从0翻转到1,或从1到0),它的编码值将改变4(“111”= 7,“011”= 3)。但如果染色体的最后一个基因变异,编码值将改变1(“111”= 7,“110”= 6)。在这里,根据正在作用于染色体的是哪个基因,变异算子对候选解有不同的效果。这种差异是不理想的,因为它会降低算法的表现和可预见性。对于这个例子,如果采用带有互补变异算子的整数,该算子对基因值的改变较小,就会更好。

    除了可以使用简单的二进制表示和整数,遗传算法还可以使用浮点数、基于树的表示、对象和遗传编码所需的任何其他数据结构。如果要建立一个有效的遗传算法,选择正确的表示是关键。

    相关资源:java 遗传算法 编程
    最新回复(0)