在遗传算法中,如何处理函数约束的二进制表示?

时间:2016-01-08 20:38:48

标签: matlab genetic-algorithm genetic-programming

例如,0 <= x <= 31,二进制形式31的长度是5,因为基数2中31 = 11111。 然而,如何处理,例如,0 <= x <= 25,如果我保持长度5,则可以生成如11110(30)的数字,其超过11001(25)。 我想知道是否有可以解决这个问题的映射。 非常感谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您就会问如何处理不受限制的自动生成的解决方案。在这种情况下,您有几个选项,首先您可以简单地终止这些无效的解决方案并生成更多,直到一个符合您的约束。更好的选择是规范化指定范围内的所有值,例如0到31或0到64等。

我在本例的Evaluate Fitness函数中有一个这种规范化的例子。

http://johnnewcombe.net/blog/gaf-part-2/

该代码基于.Net的遗传算法框架,但该技术可应用于任何库或本土算法。