/*
 * Encog(tm) Core v3.4 - Java Version
 * http://www.heatonresearch.com/encog/
 * https://github.com/encog/encog-java-core
 
 * Copyright 2008-2016 Heaton Research, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *   
 * For more information on Heaton Research copyrights, licenses 
 * and trademarks visit:
 * http://www.heatonresearch.com/copyright
 */
package org.encog.ml.factory;

import org.encog.Encog;
import org.encog.EncogError;
import org.encog.ml.MLMethod;
import org.encog.ml.data.MLDataSet;
import org.encog.ml.train.MLTrain;
import org.encog.plugin.EncogPluginBase;
import org.encog.plugin.EncogPluginService1;

/**
 * This factory is used to create trainers for machine learning methods.
 *
 */
public class MLTrainFactory {
	
	/**
	 * K2 training for Bayesian.
	 */
	public static final String TYPE_NELDER_MEAD = "nm";
	
	/**
	 * K2 training for Bayesian.
	 */
	public static final String TYPE_BAYESIAN = "bayesian";
	
	/**
	 * String constant for RPROP training.
	 */
	public static final String TYPE_RPROP = "rprop";
	
	/**
	 * String constant for backprop training.
	 */
	public static final String TYPE_BACKPROP = "backprop";
	
	/**
	 * String constant for SCG training.
	 */
	public static final String TYPE_SCG = "scg";
	
	/**
	 * String constant for LMA training.
	 */
	public static final String TYPE_LMA = "lma";
	
	/**
	 * String constant for LMA training.
	 */
	public static final String TYPE_NEAT_GA = "neat-ga";
	
	/**
	 * String constant for LMA training.
	 */
	public static final String TYPE_EPL_GA = "epl-ga";
	
	/**
	 * String constant for SVM training.
	 */
	public static final String TYPE_SVM = "svm-train";
	
	/**
	 * String constant for SVM-Search training.
	 */
	public static final String TYPE_SVM_SEARCH = "svm-search";
	
	/**
	 * String constant for SOM-Neighborhood training.
	 */
	public static final String TYPE_SOM_NEIGHBORHOOD = "som-neighborhood";
	
	/**
	 * String constant for SOM-Cluster training.
	 */
	public static final String TYPE_SOM_CLUSTER = "som-cluster";

	/**
	 * Property for learning rate.
	 */
	public static final String PROPERTY_LEARNING_RATE = "LR";
	
	/**
	 * Property for momentum.
	 */
	public static final String PROPERTY_LEARNING_MOMENTUM = "MOM";
	
	/**
	 * Property for init update.
	 */
	public static final String PROPERTY_INITIAL_UPDATE = "INIT_UPDATE";
	
	/**
	 * Property for max step.
	 */
	public static final String PROPERTY_MAX_STEP = "MAX_STEP";
	
	/**
	 * Property for bayes reg.
	 */
	public static final String PROPERTY_BAYESIAN_REGULARIZATION = "BAYES_REG";
	
	/**
	 * Property for gamma.
	 */
	public static final String PROPERTY_GAMMA = "GAMMA";
	
	/**
	 * Property for constant.
	 */
	public static final String PROPERTY_C = "C";
	
	/**
	 * Property for neighborhood.
	 */
	public static final String PROPERTY_PROPERTY_NEIGHBORHOOD = "NEIGHBORHOOD";
	
	/**
	 * Property for iterations.
	 */
	public static final String PROPERTY_ITERATIONS = "ITERATIONS";
	
	/**
	 * Property for starting learning rate.
	 */
	public static final String PROPERTY_START_LEARNING_RATE = "START_LR";
	
	/**
	 * Property for ending learning rate.
	 */
	public static final String PROPERTY_END_LEARNING_RATE = "END_LR";
	
	/**
	 * Property for starting radius.
	 */
	public static final String PROPERTY_START_RADIUS = "START_RADIUS";
	
	/**
	 * Property for ending radius.
	 */
	public static final String PROPERTY_END_RADIUS = "END_RADIUS";
	
	/**
	 * Property for neighborhood.
	 */
	public static final String PROPERTY_NEIGHBORHOOD = "NEIGHBORHOOD";
	
	/**
	 * Property for rbf type.
	 */
	public static final String PROPERTY_RBF_TYPE = "RBF_TYPE";
	
	/**
	 * Property for dimensions.
	 */
	public static final String PROPERTY_DIMENSIONS = "DIM";

	/**
	 * The number of cycles.
	 */
	public static final String CYCLES = "cycles";

	/**
	 * The starting temperature.
	 */
	public static final String PROPERTY_TEMPERATURE_START = "startTemp";

	/**
	 * The ending temperature.
	 */
	public static final String PROPERTY_TEMPERATURE_STOP = "stopTemp";

	/**
	 * Use simulated annealing.
	 */
	public static final String TYPE_ANNEAL = "anneal";

	/**
	 * Population size.
	 */
	public static final String PROPERTY_POPULATION_SIZE = "population";

	/**
	 * Genetic training.
	 */
	public static final String TYPE_GENETIC = "genetic";

	/**
	 * Manhattan training.
	 */
	public static final String TYPE_MANHATTAN = "manhattan";

	/**
	 * RBF-SVD training.
	 */
	public static final String TYPE_SVD = "rbf-svd";

	/**
	 * PNN training.
	 */
	public static final String TYPE_PNN = "pnn";
	
	/**
	 * QPROP training.
	 */
	public static final String TYPE_QPROP = "qprop";

	public static final String PROPERTY_MAX_PARENTS = "MAXPARENTS";

	public static final String PROPERTY_PARTICLES = "PARTICLES";

	public static final String TYPE_PSO = "pso";

	
	/**
	 * Create a trainer.
	 * @param method The method to train.
	 * @param training The training data.
	 * @param type Type type of trainer.
	 * @param args The training args.
	 * @return The new training method.
	 */
	public MLTrain create(final MLMethod method, 
			final MLDataSet training,
			final String type, final String args) {
		
		for (EncogPluginBase plugin : Encog.getInstance().getPlugins()) {
			if (plugin instanceof EncogPluginService1) {
				MLTrain result = ((EncogPluginService1) plugin).createTraining(
						method, training, type, args);
				if (result != null) {
					return result;
				}
			}
		}
		throw new EncogError("Unknown training type: " + type);
	}
}

 

Ads help maintain this website.