私は、遺伝的アルゴリズムに取り組んでいます、と私は動作するコードを発見し、そして今私は理解しようとしていますが、私はこのreturn文を見た:この返信文は何を意味しますか? Pythonの
return sum(1 for expected, actual in zip(target, guess)
if expected == actual)
それは何をしますか?ここで
は完全なコードです:
main.py:
from population import *
while True:
child = mutate(bestParent)
childFitness = get_fitness(child)
if bestFitness >= childFitness:
continue
print(child)
if childFitness >= len(bestParent):
break
bestFitness = childFitness
bestParent = child
population.py:
import random
geneSet = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!.,[email protected]#$%^&*():'[]\""
target = input()
def generate_parent(length):
genes = []
while len(genes) < length:
sampleSize = min(length - len(genes), len(geneSet))
genes.extend(random.sample(geneSet, sampleSize))
parent = ""
for i in genes:
parent += i
return parent
def get_fitness(guess):
return sum(1 for expected, actual in zip(target, guess)
if expected == actual)
def mutate(parent):
index = random.randrange(0, len(parent))
childGenes = list(parent)
newGene, alternate = random.sample(geneSet, 2)
childGenes[index] = alternate \
if newGene == childGenes[index] \
else newGene
child = ""
for i in childGenes:
child += i
return child
def display(guess):
timeDiff = datetime.datetime.now() - startTime
fitness = get_fitness(guess)
print(str(guess) + "\t" + str(fitness) + "\t" + str(timeDiff))
random.seed()
bestParent = generate_parent(len(target))
bestFitness = get_fitness(bestParent)
print(bestParent)
これは作業遺伝的アルゴリズムの完全なコードです。私はそれを私のためにより読みやすくするためにいくつかの部分を修正しました。
return文は、get_fitness関数のpopulation.pyファイルにあります。
[「リストの理解」とはどういう意味ですか?どのように動作し、どのように使用できますか?](https://stackoverflow.com/q/34835951/2301450) – vaultah
これはリストの理解と呼ばれています。それはあなたがもっとコードを投稿した場合に役立つでしょう –
@vaultahそれは_generator式です。リストの理解ではありません。それにもかかわらず、あなたが提供したリンクは一般的には理解のための説明を提供するので、重複して閉じるよう投票します。 –