-2

我正在用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")

谢谢,

马特

4

1 回答 1

0

您可能可以使用工厂函数(或方法,如果您想在类中使用它们)从不同的变量集构造对象:

例如(伪代码来说明这个想法)

from_chromosomes(chromosomes):
    parse_chromosomes
    return Individual(*args, **kwargs)

from_ancestors(parents):
    parse_parents_genes
    return Individual(*args, **kwargs)

(...)

这可以与使用默认值相结合。

于 2018-06-15T17:43:44.113 回答