gpt4 book ai didi

machine-learning - 遗传算法交叉

转载 作者:行者123 更新时间:2023-11-30 09:38:03 24 4
gpt4 key购买 nike

我有一个人口 X 的 GA。

在运行基因并获得每个基因的结果后,我对基因进行一些加权乘法(因此排名较好的基因得到的乘法最多)

我得到 x*2 或 x*2+(x*100/10) 基因。 10% 是随机的新基因,它可能会也可能不会触发,具体取决于突变率。

问题是,我不知道将人口再次减少到 X 的最佳方法是什么。

如果基因是一个列表,我应该只使用列表[::2](或从列表中获取每个偶数索引项)

杂交基因时的常见做法是什么?

编辑:

人口为 100 的 GA 示例;

  • 运行适应度函数中的 100 个基因并得到结果。当前人口:100
  • 添加 10% 新的随机基因。当前人口:110
  • 重复前 10% 的基因。当前人口:121
  • 去除 10% 最差的基因。当前人口:108
  • 组合所有可能的基因(不重复)。当前人口:5778
  • 从基因库中删除基因,直到种群数量 = 100。当前种群数量:100
  • 重启健身功能

我想知道的是:最后一步该怎么做?目前我有一个包含 5778 个项目的列表,我每“58”取一个或表示为 len(list)/startpopulation-1

或者我应该将“while True”与 random.delete 一起使用,直到 len(list) == 100?

新的随机基因应该在交叉之前还是之后添加?

有没有办法对评分从高到低的项目进行高斯乘法?

例如:评分最高的乘以 n,第二好的乘以 (n-1),第三好的乘以 (n-2) ...,最差的评分乘以 (n-n)。

最佳答案

我真的不知道你为什么要这样进行GA,你能给一些引用吗?

无论如何,这是我实现功能性 GA 方法的典型解决方案:

  1. 运行适应度函数中的 100 个基因并得到结果。

  2. 根据归一化适应度函数随机选择2个基因(考虑从每个基因中选择的概率池)和交叉。重复此步骤,直到获得 90 个新基因(本例为 45 次)。保存前 5 条,不做任何修改复制。基因总数:100。

  3. 对于 90 个新基因和新池中的 5 个重复基因,允许它们根据您的突变概率(通常为 1%)进行突变。基因总数:100。

  4. 重复 1) 到 3) 直到收敛,或者 X 次迭代。

注意:你总是希望保持最好的基因不变,这样你在每次迭代中总是能得到更好的解决方案。

祝你好运!

关于machine-learning - 遗传算法交叉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24356455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com