我必须解决这个问题:找到0到255之间的所有数字,这些数字具有相同数量的0和1的二进制表示。例如,240是11110000,153是10011001.我需要使用遗传算法。
我有一个8位[0,0,0,0,0,0,0,0]的集合中的编码和质量函数(X中的1的数量类似于0的数量)。
我的问题是,我应该将哪些功能用作遗传算子?我一直在考虑这个,但我找不到适合这个问题的功能。
另一件事:这还不够,还是我还需要更多东西?
我的目标是针对我的问题吗?或者我必须更改我定义的其他功能?
谢谢你的时间!
答案 0 :(得分:0)
如果通过遗传算子你的意思是交叉功能,我认为从一开始就没有错 非常基本的交叉。
首先,请两个父母:
parent1 = [0 0 0 1 1 1 1 1]
parent2 = [1 1 1 0 0 0 0 0]
然后得到一个随机的切点,比如说3.此时切断父母:
parent1 = [0 0 0] [1 1 1 1 1]
parent2 = [1 1 1] [0 0 0 0 0]
现在重新组合两个父母以获得两个新孩子。 parent1的第一部分与last parent2的一部分(依此类推......):
child1 = [0 0 0 0 0 0 0 0]
child2 = [1 1 1 1 1 1 1 1]