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

in genetic algorithm, How to deal with binary representation of constraints of functions?

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

如果我没理解错的话,你是在问如何处理超出你的限制的自动生成的解决方案。在这种情况下,您有多种选择,首先,您可以简单地杀死这些无效的解决方案并生成更多解决方案,直到一个符合您的约束。更好的选择是在指定范围内规范化所有值,例如0 到 31 或 0 到 64 等等

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

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

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