⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 neuralchromosome.java

📁 VHDL制作的ann的code
💻 JAVA
字号:
/* * Encog Neural Network and Bot Library for Java v1.x * http://www.heatonresearch.com/encog/ * http://code.google.com/p/encog-java/ *  * Copyright 2008, Heaton Research Inc., and individual contributors. * See the copyright.txt in the distribution for a full listing of  * individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */package org.encog.neural.networks.training.genetic;import java.util.Arrays;import org.encog.matrix.MatrixCODEC;import org.encog.neural.networks.BasicNetwork;import org.encog.solve.genetic.Chromosome;/** * NeuralChromosome: Implements a chromosome that allows a feedforward neural * network to be trained using a genetic algorithm. The chromosome for a feed * forward neural network is the weight and threshold matrix. *  * This class is abstract. If you wish to train the neural network using * training sets, you should use the TrainingSetNeuralChromosome class. If you * wish to use a cost function to train the neural network, then implement a * subclass of this one that properly calculates the cost. *  * The generic type GA_TYPE specifies the GeneticAlgorithm derived class that * implements the genetic algorithm that this class is to be used with. */public abstract class NeuralChromosome		extends Chromosome<Double> {	/**	 * Zero.	 */	private static final Double ZERO = Double.valueOf(0);	/**	 * Mutation range.	 */	private static final double RANGE = 20.0;	/**	 * The network to train.	 */	private BasicNetwork network;	/**	 * @return the network	 */	public BasicNetwork getNetwork() {		return this.network;	}	/**	 * Init the genes array.	 * @param length The length to create.	 */	public void initGenes(final int length) {		final Double[] result = new Double[length];		Arrays.fill(result, ZERO);		setGenesDirect(result);	}	/**	 * Mutate this chromosome randomly.	 */	@Override	public void mutate() {		final int length = getGenes().length;		for (int i = 0; i < length; i++) {			double d = getGene(i);			final double ratio = (int) (RANGE * Math.random() - RANGE);			d *= ratio;			setGene(i, d);		}	}	/**	 * Set all genes.	 * 	 * @param list	 *            A list of genes.	 */	@Override	public void setGenes(final Double[] list) {		// copy the new genes		super.setGenes(list);		calculateCost();	}	/**	 * @param network	 *            the network to set	 */	public void setNetwork(final BasicNetwork network) {		this.network = network;	}	/**	 * Copy the network to the genes.	 */	public void updateGenes()  {		this.setGenes(MatrixCODEC.networkToArray(this.network));	}	/**	 * Copy the genes to the network.	 */	public void updateNetwork() {		MatrixCODEC.arrayToNetwork(getGenes(), this.network);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -