Python 评价函数中的分数

Python 评价函数中的分数,python,algorithm,artificial-intelligence,genetic-algorithm,pyevolve,Python,Algorithm,Artificial Intelligence,Genetic Algorithm,Pyevolve,这是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.G

这是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,那么如何确定分数,或者什么是创建分数的最佳方法

谢谢

编辑:

这是sum的代码,但它没有给出正确/所需的输出。它将始终大于或小于所需答案

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()

请推荐一些更好的分数评估方法。

让评估功能对列表中的每个元素进行评估,并添加列表中每个元素的值。然后从得到的值中减去所需的值,并取结果的绝对值。最后,将其置于1/(值)这样的分数下,以返回最小数字的最高值

编辑:
您应该将代码更改为1/(1+值),这样,如果值为零,它将给出正确的1输出,而不是错误

它确实工作,但没有给出完美的输出…谢谢,它给出了什么输出?如果你实现了超人的建议,你是否也可以发布代码,以便其他人确定它是否正确?