Ejemplo n.º 1
0
        public void RunDemo()
        {
            Console.WriteLine("### BUILDING BLOCK DEMO ###");

            //Initialize the pattern matching building block
            //for a 2x2 grid and 2 output neurons.
            Grid2DControler gpm = new Grid2DControler(2,2,2);
            gpm.BuildNetwork(true);

            //Add 4 patterns to the pattern manager.
            //note that the input array is in row by row order,
            //and the output numers the (single!) output neuron to train for.
            gpm.Patterns.Add("first",0,new bool[] {true,false,true,false});
            gpm.Patterns.Add("second", 1, new bool[] { true, true, false, false });
            gpm.Patterns.Add("third", 1, new bool[] { false, true, false, false });
            gpm.Patterns.Add("fourth", 0, new bool[] { false, true, true, false });

            //Some configuration ...
            gpm.TrainingConfiguration.AutoTrainingEpochs.Value = 500;

            //Calculate all patterns. The CalculateCurrentNetwork method
            //returns the output neuron index that matches best.
            //First select a pattern, then calculate it:
            Console.WriteLine("# Initial Status");
            for(int i=0;i<gpm.PatternCount;i++)
            {
                gpm.SelectPattern(i);
                Console.Write(gpm.CalculateCurrentNetwork() + ": ");
                App.PrintArray(gpm.NeuralNetwork.CollectOutput());
            }
            Console.WriteLine("Successful Patterns: " + gpm.CountSuccessfulPatterns());

            //Train the third pattern one time:
            Console.WriteLine("# Third Pattern Training");
            gpm.SelectPattern(2);
            gpm.TrainCurrentNetwork();
            for(int i=0;i<gpm.PatternCount;i++)
            {
                gpm.SelectPattern(i);
                Console.Write(gpm.CalculateCurrentNetwork() + ": ");
                App.PrintArray(gpm.NeuralNetwork.CollectOutput());
            }
            Console.WriteLine("Successful Patterns: " + gpm.CountSuccessfulPatterns());

            //Autotrain all Patterns:
            Console.WriteLine("# Auto Training:");
            Console.WriteLine(gpm.AutoTrainNetwork() ? "successful" : "failed");
            for(int i=0;i<gpm.PatternCount;i++)
            {
                gpm.SelectPattern(i);
                Console.Write(gpm.CalculateCurrentNetwork() + ": ");
                App.PrintArray(gpm.NeuralNetwork.CollectOutput());
            }
            Console.WriteLine("Successful Patterns: " + gpm.CountSuccessfulPatterns());

            Console.WriteLine("=== COMPLETE ===");
            Console.WriteLine();
        }
Ejemplo n.º 2
0
        public void Init(Grid2DControler pm)
        {
            Layer layer = pm.NeuralNetwork.LastLayer;
            layer.NeuronAdded += layer_OnNeuronAdded;
            layer.NeuronRemoved += layer_OnNeuronRemoved;
            pm.PatternSelectionChanged += pm_OnPatternSelectionChanged;
            pm.NetworkCalculated += pm_OnNetworkCalculated;

            if(items != null)
                for(int i=0;i<items.Count;i++)
                    if(this[i] != null)
                        Controls.Remove(this[i]);

            items = new ArrayList(layer.Count + 15);
            for(int i=0;i<layer.Count;i++)
                AddOutputNeuron(layer[i]);
        }