我需要我的项目帮助。以下是示例数据。
populations = [[1 1]
[1 1]
[1 0]
[1 1]]
score = [0, 4, 0, 6]
avail_res = [4, 4]
代码看起来像这样:
chromosome = []
for num in score:
if num <= avail_res[0] and num != 0:
chromosome = populations[score.index(num)]
print(chromosome)
if len(chromosome) > 1:
k = random.choice(chromosome)
chromosome_best = [k[1]]
print(chromosome_best)
else:
chromosome_best = [chromosome]
print(chromosome_best)
目的是在所选染色体中找到最佳染色体。对于上面的示例,由于只有4
(得分索引1)满足代码中的条件,因此应从总体中得出chromosome best = [1 1]
。如果满足条件的得分超过一个,则代码应随机选择best_chromosome。例如,score = [4, 2, 2, 6]
。我的得分中有三个元素满足条件(4、2、2)。现在,在选择总体中的best_chromosome时,代码可以选择更高的一个,即4,并给出相应的总体值。
问题是,每当我尝试运行代码时,对于所选的chromosome_best = [1 0]
(仅作为示例),我得到的长度是2
,它对应于1和0。但是我的意图仅仅是如果染色体是length = 1 for [1 0]
,则为3
和[1 0] [1 1] [1 0]
。这样,我可以使用上面的代码并随机选择。
任何帮助/建议将不胜感激!谢谢!
[我建议将chromosome
设为列表列表,并可能将其重命名为chromosomes
以使其清楚。
代替chromosome = populations[score.index(num)]
,使用chromosomes.append(populations[score.index(num)])
。
这是完整的代码片段:
chromosomes = []
for num in score:
if num <= avail_res[0] and num != 0:
chromosomes.append(populations[score.index(num)])
print(chromosomes)
if len(chromosomes) > 1:
k = random.choice(chromosomes)
chromosome_best = k[1]
print(chromosome_best)
else:
chromosome_best = chromosomes
print(chromosome_best)