【问题标题】:Python Genetic Algorithm "Natural" SelectionPython遗传算法“自然”选择
【发布时间】:2018-03-08 23:57:42
【问题描述】:

如何在趋向于较小数字的数组中执行选择(即删除元素)。

如果我有一个从最低到最高排序的适应度数组,我如何使用倾向于较小数字的随机数生成来随机删除这些元素。

pop_sorted_by_fitness = [1, 4, 10, 330]

我想随机删除其中一个较小的元素,大部分时间是 1,有时是 4,很少是 10,几乎从不 330。我怎样才能实现这种算法。

【问题讨论】:

  • 这就是它应该有利于“适者生存”的一点,但仍然使用 RNG 来选择数组索引。
  • 是的,抱歉,评论有点刻薄。尽管如此,搜索 Python biased random 会产生不少命中。
  • @Zavax:请查看我的编辑以获取更新的答案

标签: python


【解决方案1】:

如何利用指数分布对使用numpy.random.exponential的索引进行抽样

import numpy as np 

s = [1, 4, 10, 330] 
limit = len(s)
scale = 10**int(np.log10(limit))
index = int(np.random.exponential()*scale)%limit

测试一下

In [37]: sorted([int(np.random.exponential()*scale)%limit for _ in xrange(20)]) 
Out[37]: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 3, 3]

【讨论】:

    猜你喜欢
    • 2016-07-18
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2014-05-25
    • 2012-02-06
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多