1

私は遺伝的アルゴリズムの問​​題に取り組んでいます。のリストを持つPopulation()クラスがあるとしIndividual()ます。各個人にはスコアが関連付けられています。母集団のスコアに基づいてこれらの個人を順序付け/ランク付けするための良い方法は何ですか?例として:

class Individual(object):
    rr = 100
    def __init__(self):
        self.score = random.randrange(self.rr)

class Population(object):
    def __init__(self, size):
        self.size = size
        self.population = [Individual() for _ in xrange(self.size)]

pop = Population(5)
for i in xrange(pop.size):
    print pop.population[i].score

これらの個人をスコアで並べ替えるPythonの方法はありますか?ありがとう!

4

3 に答える 3

3

確かに、メソッドのkeyパラメーターを使用します。.sort()

from operator import attrgetter
pop.population.sort(key=attrgetter('score'))

使用operator.attrgetter()するとこれが少し簡単になりますが、必須ではありません。

その他のヒントとコツについては、PythonwikiのSortingHowtoを参照してください。

于 2013-03-01T22:11:53.640 に答える
1
sorted_pop = sorted(pop.population, lambda x, y: cmp(x.score, y.score))
于 2013-03-01T22:13:29.267 に答える
0

ライブラリをインポートせずに:

pop.population.sort(key=lambda x: x.score)
于 2013-03-10T21:35:06.517 に答える