algorithm - 我如何在进化算法中表示百分比?

标签 algorithm genetic-algorithm evolutionary-algorithm

考虑到我有 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/

相关文章:

genetic-algorithm - 遗传算法与时间表的模拟退火

machine-learning - NEAT 和强化学习之间有什么关系?

.net - 用于 .NET 的良好遗传算法 (GA) 或粒子群优化 (PSO) 框架是什么?

algorithm - 操作系统中的饥饿算法

neural-network - 使用多种训练方法通过 Encog 训练 ANN

algorithm - 如何解决 Web 机器人应用程序中转发到同一页面的不同 URL

genetic-algorithm - 什么是ni方案?

math - 遗传算法的适应度函数和选择

基于二进制标准将项目分配给组的算法

java - 计算二叉搜索树中的节点数