NeurophはNEATの実装(https://sourceforge.net/projects/neuroph/files/NEAT-preview/)のプレビューをリリースしました。私はそれを使ってXORゲート(一般的な試み)を作成しようとしました。しかし何らかの理由で、動作しません。これは私が使用するコードです:Neuroph NEATプレビューXORトレーニングなし
まず、私はプロパティを作成:上
net.setInput(0, 0);
net.calculate();
fitness += (1 - net.getOutput().get(0)) * 4;
net.setInput(1, 0);
net.calculate();
fitness += net.getOutput().get(0) * 4;
ので:
SimpleNeatParameters params = new SimpleNeatParameters();
params.setFitnessFunction(new Fitness());
params.setPopulationSize(150);
params.setMaximumFitness(16);
params.setMaximumGenerations(100);
フィットネスは、このように獲得してどれだけのために二重の値を与えます。アイデアは、それが正しいとすれば、あなたは最大で4つまで与えられます。
次に入力遺伝子:
NeuronGene inputOne = new NeuronGene(NeuronType.INPUT, params);
NeuronGene inputTwo = new NeuronGene(NeuronType.INPUT, params);
NeuronGene output = new NeuronGene(NeuronType.OUTPUT, params);
その後は進化するためにそれを告げ:
Evolver e = Evolver.createNew(params, Arrays.asList(inputOne, inputTwo), Arrays.asList(output));
Organism best = e.evolve();
NeuralNetwork nn = params.getNeuralNetworkBuilder().createNeuralNetwork(best);
を次に、それを試してみて、私はこれらの結果を得た:だから何が
0, 0: 0.6129870845620041
1, 0: 0.6492975506882983
0, 1: 0.6527754436728792
1, 1: 0.6530807065677073
を起きているのでしょうか?私は人口の増加を試みました、ターミナルの世代は、何も動作しません。私は間違って何かしていますか?
悲しいことに、いずれも機能しませんでした。私はセレクターを試しました(人口の大きさはログに変化しませんでした)、私は結果を二乗して何も起こりませんでした。私もそれをリセットしようとしたが、それはどちらもうまくいかなかった。 .reset()がjavaドキュメントで行ったことを調べて、それが必要だったように見えました。 –
あなたは 'Fitness extends AbstractFitnessFunction'を持っていて、フィットネスを計算する関数は' evaluate(Organism o、NeuralNetwork nn) 'ですか? @ NathanWood – JeD
はい。確かに、私はいくつかのJava文書を掘り下げて、XorFitnessFunction、彼らが作ったテストを見つけました。私も同じ問題がありました。今度は、エラーがフィットネス機能からのものではないことがわかります。 –