考虑到我有 4 条染色体(gi,i=1 到 4})代表不同事物的 4 个百分比,因此 4 个百分比的总和等于 100。我如何有效地表示这个?
我知道这是可能的:g1/(g1+g2+g3+g4)。但是,这效率不高。考虑在这两种情况下所有 gi=0.2 或所有 gi=0.1 将代表 25%。可以生成许多不同基因呈现相同百分比的情况。有没有其他有效的方法,其中一组独特的基因组合呈现出一组独特的百分比。
提前致谢。
最佳答案
我认为您混淆了基因和染色体。染色体编码了您问题的候选解决方案。基因是染色体的一部分。
在这种情况下,为什么要对染色体 进行限制?听起来您希望它出现在染色体的基因上。
为了做到这一点,你可以做很多事情:让每个基因在 [0, 100]
中编码一个整数。 .如果基因不添加到100
最后,惩罚那些染色体的适应度。
另一种可能使交叉运算符更自然地应用的方法是让每个基因存储 100 位。如果x
位已设置,这意味着该基因将编码 x%
.
另一种方法是让整个染色体编码 100
设置位。然后每个基因将持有一个值 x
,代表一个区间。两个 split 点之间的设置位数是与该基因相关的百分比。例如:
1 2 3 4 5 6 7 8 ... 100
1 1 1 1 1 1 1 1 ... 1
| | | | |
g1 g2 g3 g4
这可以通过生成 5 个随机数来完成 <= 100
,对它们进行排序并计算它们之间的差异。
关于algorithm - 我如何在进化算法中表示百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28625081/