我正在尝试做一个遗传算法,为了收集适应度函数的值,我做了一个类对,这样我就可以用lambda函数排序。课程很简单,就是这样:
class Par(object):
def __init__(self,cromosoma,valoracion):
self.cromosoma=cromosoma
self.valoracion=valoracion
def __str__(self):
return ("Cromosoma: {0}\nTiene valoracion: {1}".format(self.cromosoma,self.valoracion))
def __repr__(self):
return ("Cromosoma: {0}\nTiene valoracion: {1}".format(self.cromosoma,self.valoracion))
所以在我整理了染色体列表之后:
poblacionOrdenada=sorted(evaluacion, key=lambda par: par.valoracion, reverse=False)
我想选择50%的最佳,但我想要的功能只是染色体,而不是对对象。那么我怎么才能得到一个没有for的染色体列表呢?也许用另一个lambda函数?你知道吗
我不想使用for,因为我必须在不同的函数中选择几个时间。你知道吗
生成一个只包含
cromosoma
属性和列表理解的列表:一旦你有了这个列表,你就可以用它进行各种不同的函数调用。你知道吗
要从排序列表中选择前50%菌株的染色体:
编辑:(因为我缺乏领域知识)
如果最好的50%菌株在列表的末尾,则用
[:len(poblacionOrdenada)/2]
切换[len(poblacionOrdenada)/2:]
。你知道吗相关问题 更多 >
编程相关推荐