私は真の価値のある遺伝的アルゴリズムを実装するためにpyevolveを使用しようとしています。 (実施例ドキュメントはここで与えられる:http://pyevolve.sourceforge.net/examples.html#example-2-real-numbers-gaussian-mutator)Pyevolveを使用して、実数値染色体内の異なるパラメータ範囲を設定する方法は?
次のようにパラメータ(この例では20)の範囲がsetParams
を使用して設定することができる。
# Genome instance genome = G1DList.G1DList(20) genome.setParams(rangemin=-6.0, rangemax=6.0)
しかし、同じ範囲が全てに適用されます20.私はパラメータの範囲を変えたいと思っています。私がそれをやろうとしたのは、Initializatorsファイルを変更することでした。
ファイル内の元の関連するセクションがある:
def G1DListInitializatorReal(genome, **args):
""" Real initialization function of G1DList
This initializator accepts the *rangemin* and *rangemax* genome parameters.
"""
genome.clearList()
for i in xrange(genome.listSize):
randomReal = rand_uniform(genome.getParam("rangein", 0),
genome.getParam("rangemax", 100))
genome.append(randomReal)
私の修飾は(最初の15は1つの範囲を有し、最後の5は、別の範囲を持っていると仮定して)これです:
def G1DListInitializatorReal(genome, **args):
genome.clearList()
for i in xrange(0,15):
print i
randomReal = rand_uniform(genome.getParam("rangein_1", 0),
genome.getParam("rangemax_1", 100))
genome.append(randomReal)
for j in xrange(15,20):
print j
randomReal2 = rand_uniform(genome.getParam("rangein_2", 0),
genome.getParam("rangemax_2", 100))
genome.append(randomReal2)
Iインデックスiとjの印刷を追加して、これが呼び出されていることを確認します。私は変更されたInitializators
ファイルを自分のコードと同じフォルダに入れましたが、実行すると元のものが他の場所から呼び出されます。私はpyevolveで行う必要があるより多くの変更が欠けているように感じる、または私はInitializators
を正しく呼んでいない、または...私は知らない。
pyevolveの染色体パラメーターの範囲を変更するにはどうすればよいですか?
ありがとうございます。
そこに誰もが知っていますか? – user3625380