1

私は pyevolve を使用しています。母集団全体に基づくフィットネス スコアを提供したいと考えています。それにもかかわらず、評価関数では、次のように 1 つの個人に対して定義する必要があります。

 def eval_func(ind):
     score = 0.0
     for x in xrange(0,len(ind)):
     if ind[x] <= 0.0: score += 0.1
     return score

しかし、人口全体に対して一度に関数を定義したいと思います。

 def eval_func_total_population(population):
     # evaluation score depends on whole population
     pop_sort = sorted(population)
     for ind in population:
         ind.score = pop_sort.index(ind)
     return

評価関数は GSimpleGA.evolve および GSimpleGA.step 関数で評価されるため、次のような独自の評価関数を使用して新しい GSimpleGA クラスを作成するオプションがあると考えました。

 class My_GSimpleGA(GSimpleGA.GSimpleGA): 
    def __init__(self,genome):
        GSimpleGA.GSimpleGA.__init__(self,genome)

    def evolve(self, freq_stats=0):
        (...)
        # change this line:
        self.internalPop.evaluate()
        # to this line:
        eval_func_total_population(self.internalPop)

これは実際に機能しているように見えますが、より簡単なオプションが可能かどうか疑問に思っています。

4

0 に答える 0