これは Python の pyevolve ライブラリの例です。
from pyevolve import G1DList
from pyevolve import GSimpleGA
import time
def eval_func(chromosome):
score = 0.0
for value in chromosome:
if value == 50:
score += 1
return score
genome = G1DList.G1DList(20)
genome.evaluator.set(eval_func)
ga = GSimpleGA.GSimpleGA(genome)
ga.evolve(freq_stats=10)
print ga.bestIndividual()
この例では、スコアが増加するたびに出力がより正確になるため、スコアは理にかなっています。
しかし、染色体要素の合計を200などの特定の値にしたい場合、スコアを決定する方法またはスコアを作成する最良の方法は何ですか.
ありがとう
編集:
これは合計のコードですが、正しい/望ましい出力が得られません。それは常に必要な答えよりも大きいか小さいかのどちらかです。
from pyevolve import G1DList
from pyevolve import GSimpleGA
import time
def eval_func(chromosome):
score = 0.0
sum_ = 0.0
for value in chromosome:
sum_ = sum_ + value
score_ = abs(200 - sum_)
score = float(1/score_)
return score
genome = G1DList.G1DList(20)
genome.evaluator.set(eval_func)
ga = GSimpleGA.GSimpleGA(genome)
ga.evolve(freq_stats=10)
print ga.bestIndividual()
より良いスコア評価方法を提案してください。