例如,0 <= x <= 31,二进制形式31的长度是5,因为基数2中31 = 11111。 然而,如何处理,例如,0 <= x <= 25,如果我保持长度5,则可以生成如11110(30)的数字,其超过11001(25)。 我想知道是否有可以解决这个问题的映射。 非常感谢!
答案 0 :(得分:0)
如果我理解正确,那么您就会问如何处理不受限制的自动生成的解决方案。在这种情况下,您有几个选项,首先您可以简单地终止这些无效的解决方案并生成更多,直到一个符合您的约束。更好的选择是规范化指定范围内的所有值,例如0到31或0到64等。
我在本例的Evaluate Fitness函数中有一个这种规范化的例子。
http://johnnewcombe.net/blog/gaf-part-2/
该代码基于.Net的遗传算法框架,但该技术可应用于任何库或本土算法。