genetic-algorithm - 这个算法如何对应轮盘赌的选择?
问题描述
我正在尝试实现轮盘赌选择。我已经理解了这个算法:
- 计算种群中所有染色体适应度的总和 S
- 从区间 (0,S) 生成一个随机数 r
- 从 0 到 S 循环遍历种群和适应度,这是部分和,称为 P。
- 当P > S:停止并返回对应的染色体。
我不明白这与这样做有何对应:轮盘赌选择算法 (44 票的答案)。这对我来说很有意义,但不是上面的那个。
解决方案
以下是使用 sum 完成的
def choose_parent_using_RWS(genes, S, points):
P = randint(0, int(S))
for x in genes:
P += evaluate(x, points)
if P > S:
return x
return genes[-1]
以下是通过在 0 和 1 之间进行归一化来完成的
def choose_parent_using_RWS(genes, S, points):
P = randint(0, int(S))/S
for x in genes:
P += evaluate(x, points)/S
if P > S/S:
return x
return genes[-1]
推荐阅读
- node.js - Express-session 没有设置cookie?
- javascript - Python请求有效,ajax无效
- xml - 应用程序脚本 xml 导入不适用于网站
- reactjs - 如何根据反应中的另一种输入表单自动更新一个输入表单?
- node.js - 邮递员中的 POST s3 预签名 url 调用返回 SignatureDoesNotMatch
- r - R中的数据框操作:在数字和字母之间以单个顺序分隔多个项目
- python - 动态改变python导入优先级
- reactjs - 通过 Azure Function 和 auth0 进行存储帐户应用程序身份验证
- ios - 如何在导航栏中获取大标题的前导空间?
- javascript - 将数据附加到 AsyncStorage