/// <summary> /// Create an initial population. /// </summary> /// <param name="rnd">Random number generator.</param> /// <param name="codec">The codec, the type of network to use.</param> /// <returns>The population.</returns> public static IPopulation InitPopulation(IGenerateRandom rnd, RBFNetworkGenomeCODEC codec) { // Create a RBF network to get the length. var network = new RBFNetwork(codec.InputCount, codec.RbfCount, codec.OutputCount); int size = network.LongTermMemory.Length; // Create a new population, use a single species. IPopulation result = new BasicPopulation(PopulationSize, new DoubleArrayGenomeFactory(size)); var defaultSpecies = new BasicSpecies { Population = result }; result.Species.Add(defaultSpecies); // Create a new population of random networks. for (int i = 0; i < PopulationSize; i++) { var genome = new DoubleArrayGenome(size); network.Reset(rnd); Array.Copy(network.LongTermMemory, 0, genome.Data, 0, size); defaultSpecies.Add(genome); } // Set the genome factory to use the double array genome. result.GenomeFactory = new DoubleArrayGenomeFactory(size); return(result); }
public void TestResetCompute() { var network = new RBFNetwork(2, 1, 1); double total = network.LongTermMemory.Sum(); Assert.AreEqual(0, total, AIFH.DefaultPrecision); network.Reset(new BasicGenerateRandom()); total += network.LongTermMemory.Sum(); Assert.IsTrue(Math.Abs(total) > AIFH.DefaultPrecision); }
/// <summary> /// Run the example. /// </summary> public void Process() { // read the iris data from the resources Assembly assembly = Assembly.GetExecutingAssembly(); var res = assembly.GetManifestResourceStream("AIFH_Vol3.Resources.iris.csv"); // did we fail to read the resouce if (res == null) { Console.WriteLine("Can't read iris data from embedded resources."); return; } // load the data var istream = new StreamReader(res); DataSet ds = DataSet.Load(istream); istream.Close(); // The following ranges are setup for the Iris data set. If you wish to normalize other files you will // need to modify the below function calls other files. ds.NormalizeRange(0, 0, 1); ds.NormalizeRange(1, 0, 1); ds.NormalizeRange(2, 0, 1); ds.NormalizeRange(3, 0, 1); IDictionary <String, int> species = ds.EncodeOneOfN(4); IList <BasicData> trainingData = ds.ExtractSupervised(0, 4, 4, 3); var network = new RBFNetwork(4, 4, 2); network.Reset(new MersenneTwisterGenerateRandom()); IScoreFunction score = new ScoreRegressionData(trainingData); var train = new TrainAnneal(network, score); PerformIterations(train, 100000, 0.01, true); QueryOneOfN(network, trainingData, species); }