Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的遗传算法:根据更高的适应度将生物体列表一分为二_Python_Algorithm_Sorting_Genetics - Fatal编程技术网

Python中的遗传算法:根据更高的适应度将生物体列表一分为二

Python中的遗传算法:根据更高的适应度将生物体列表一分为二,python,algorithm,sorting,genetics,Python,Algorithm,Sorting,Genetics,我需要根据健康状况对生物体列表进行排序。下面的代码根据用户输入生成一个随机列表——“生物体”。然而,有一个bug,列表只是有时排序。有了排序后的列表,我需要取一半。适应度值越高,每个有机体的总和就决定了哪个有机体处于上半部分 import random as randint pop_size = int(input('Enter a population size:')) length = int(input('Enter an organism length:'))

我需要根据健康状况对生物体列表进行排序。下面的代码根据用户输入生成一个随机列表——“生物体”。然而,有一个bug,列表只是有时排序。有了排序后的列表,我需要取一半。适应度值越高,每个有机体的总和就决定了哪个有机体处于上半部分

import random as randint

    pop_size = int(input('Enter a population size:'))
    length = int(input('Enter an organism length:'))

    orgs = []
    for i in range(pop_size):
        org = []
        for a in range(length):
            org.append(randint.randint(0,1))
        orgs.append(org)

    print sorted(orgs, key=sum)

非常感谢您的解释,我是一名初学者,正在努力提高

sorted
将提供按子列表总和升序排序的外部列表。您可能希望
排序(orgs,key=sum,reverse=True)
-这取决于您如何定义“上半部分”,我假设它是索引0。有时我仍然会得到一个排序为0 3 0或无序的输出。上半部分指的是最高适合度。好的,那么您是否将列表分配回一个变量(我假设您的实际代码中不只是有
print
)<代码>排序无法正常工作,因此您需要
orgs=sorted(orgs,key=sum,reverse=True)
。换句话说,除非这样做,否则排序永远不会起作用,并且任何已排序的子列表当前都是一致的。orgs=已排序(orgs,key=sum,reverse=True)这样的打印orgs?如果我输入4和2,则适合度仍然是1、1、0、1,您需要查看“列表切片”以获得列表的一半。PEP8是Python的格式指南,它特别建议关键字参数在
=
两边都没有空格。它不会改变功能。您的第一个调用端口应该调查您的排序问题。
sorted
将为您提供按子列表总和升序排序的外部列表。您可能希望
排序(orgs,key=sum,reverse=True)
-这取决于您如何定义“上半部分”,我假设它是索引0。有时我仍然会得到一个排序为0 3 0或无序的输出。上半部分指的是最高适合度。好的,那么您是否将列表分配回一个变量(我假设您的实际代码中不只是有
print
)<代码>排序无法正常工作,因此您需要
orgs=sorted(orgs,key=sum,reverse=True)
。换句话说,除非这样做,否则排序永远不会起作用,并且任何已排序的子列表当前都是一致的。orgs=已排序(orgs,key=sum,reverse=True)这样的打印orgs?如果我输入4和2,则适合度仍然是1、1、0、1,您需要查看“列表切片”以获得列表的一半。PEP8是Python的格式指南,它特别建议关键字参数在
=
两边都没有空格。它不会改变功能。您的第一个呼叫端口应该是调查您的排序问题。