我想开发一个从人口中随机选择一块电路板的功能"但是我希望它偏向于适应值较低的电路板。
# population = [(fitness, board),...] # population is a heapq in my program
def random_selection(population):
random_index = randint(0, len(population) - 1)
return population[random_index][1]
例如,(1,板),(7,板)。我希望第一块板具有较高的被选择概率,因为它具有较低的值。
我该怎么做?我在考虑使用random()并创建接受概率阈值。
此外,是否可以跟踪到目前为止我选择的电路板?对于我的情况,heapq中的board是唯一的。
答案 0 :(得分:0)
如果您有权访问numpy
,则numpy.random.choice()
具有您想要的功能。
来自文档:
#Generate a non-uniform random sample from np.arange(5) of size 3:
>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0])
您只需要为人口中的每个元素构建权重p
,以定义选择1的可能性多于7。