我在python中编写了一些遗传算法。目前我正在看一本有java代码的书,但最终我正在尝试编写自己的自适应遗传算法来优化神经网络参数和层,而我所有的神经网络代码都是使用keras的python ...所以我是只写我自己的python代码,相当于书籍java代码。
我遇到的问题是我当前设置它的方式是构造函数总是将对象初始化为第一个语句中的构造函数。
从我从其他类似的问题中看到的,你可以使用classmethods来做到这一点......你也可以使用... isinstanceOf方法调用...你可以用 init做一些事情方法* args和** kwargs ......而且我认为你可以用NoneType参数做些什么,这正是我想要做的......但是我一直在弄乱它并且似乎无法获得它可以在不添加额外的布尔参数的情况下工作。我不想这样做。
什么是人们解决多个构造函数问题的首选方法,你能按照我想要的方式去做吗?
我尝试使用多个构造函数的示例。
class Individual(object):
#Object Initialisation-->Generally called a constructor
#In python, a variable prefixed with _ is effectively private
def __init__(self, chromosome, chromosomeLength, bool1):
if(chromosomeLength is not None and bool1==False):
self.chromosomeLength = chromosomeLength
self.fitness = -100
self.chromosome = np.empty(chromosomeLength)
for gene in range(self.chromosomeLength):
if(0.5 < np.random.randint(2)):
#self.setGene(gene,1)
#cls.chromosome[gene] = 1
self.chromosome[gene] = 1
else:
#self.setGene(gene,0)
#cls.chromosome[gene] = 0
self.chromosome[gene] =0
elif(chromosome is not None and bool1 ==True):
self.chromosome = chromosome
self.fitness = -1
print ("All variable initialized")
谢谢,
马特
答案 0 :(得分:0)
您可以使用工厂函数(或方法,如果您希望在类中使用它们)从不同的变量集构造对象:
例如(伪代码来说明这个想法)
from_chromosomes(chromosomes):
parse_chromosomes
return Individual(*args, **kwargs)
from_ancestors(parents):
parse_parents_genes
return Individual(*args, **kwargs)
(...)
这可以与默认值的使用相结合。