使用列表位置中的项目进行计算(遗传算法适应度)

时间:2017-11-21 12:11:05

标签: python python-3.x list probability genetic-algorithm

var formData = JSON.parse(JSON.stringify($('#frm').serializeArray()));

我正在尝试根据比例适应度值返回一个列表,在以下逻辑中:population = [[[0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1], [1], [0]], [[0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1], [3], [1]], [[0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0], [4], [2]], [[1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0], [3], [3]]] def ProbabilityList2(population): fitness = [chromosome[1] for chromosome in population] total_weight=sum(fitness) relative_fitness= [(chromosome[1]+1)/total_weight for chromosome in population] return (relative_fitness) 。我想要做的就是为列表中的所有项目(个体)生成基于此操作的概率列表,但是我收到错误:

[[chromosome],[fitness],[counter]]

我在使用字典之前解决了这个问题,但是在程序的循环中我得到了重复的条目并且选择函数崩溃了,因为人口中的个体数量和概率(按位置索引)是不均匀的。关于如何以这种格式计算它的任何想法?

3 个答案:

答案 0 :(得分:3)

chromosome[1]是一个列表。您可以使用chromosome[1][0]访问它,或者只将其存储在列表之外。 `

答案 1 :(得分:2)

假设def ProbabilityList2(population): fitness = [ chromosome[1] for chromosome in population ] total_weight=0 for i in range(len(fitness)): total_weight+=sum(fitness[i]) 列表是来自人口的健康列表。因此,为了获得适应度的总和,您可以通过循环遍历范围来获得其中的子列表总和。

[[1], [3], [4], [3]] # fitness list
11                   # sum

这将为您提供以下健身列表和总和

field = 'name';
query[field] = { '$regex': new RegExp('^' + req.body[field] + '$', "i"), '$options': 'i' };

答案 2 :(得分:1)

尝试此功能:

def probabilityList2(population):    
    fitness = [chromosome[1][0] for chromosome in population]
    total_weight=sum(fitness)
    relative_fitness= [((chromosome[1][0])+1)/total_weight for chromosome in population]
    return relative_fitness


probabilityList2(population)