Example #1
0
        public static int Main()
        {
            var hiddenLayers     = new List <int>();
            var networkBlueprint = new LayeredNeuralNetworkBlueprint
            {
                inputNeuronAmount         = 2,
                outputNeuronAmount        = 4,
                hiddenLayersNeuronAmounts = hiddenLayers
            };
            var network = NeuralNetworkBuilder.buildLayeredNetwork(networkBlueprint);

            var sets = new List <TrainingData>();

            for (int i = 0; i < 4; i++)
            {
                sets.Add(new TrainingData());
            }
            sets[0].inputs.Add(-1);
            sets[0].inputs.Add(1);
            sets[0].expectedOutputs.Add(true);
            sets[0].expectedOutputs.Add(false);
            sets[0].expectedOutputs.Add(false);
            sets[0].expectedOutputs.Add(false);

            sets[1].inputs.Add(1);
            sets[1].inputs.Add(1);
            sets[1].expectedOutputs.Add(false);
            sets[1].expectedOutputs.Add(true);
            sets[1].expectedOutputs.Add(false);
            sets[1].expectedOutputs.Add(false);

            sets[2].inputs.Add(1);
            sets[2].inputs.Add(-1);
            sets[2].expectedOutputs.Add(false);
            sets[2].expectedOutputs.Add(false);
            sets[2].expectedOutputs.Add(true);
            sets[2].expectedOutputs.Add(false);

            sets[3].inputs.Add(-1);
            sets[3].inputs.Add(-1);
            sets[3].expectedOutputs.Add(false);
            sets[3].expectedOutputs.Add(false);
            sets[3].expectedOutputs.Add(false);
            sets[3].expectedOutputs.Add(true);

            bool makeLoop       = true;
            int  numberOfCycles = 0;
            int  setNumber      = 0;
            int  good           = 0;
            int  all            = 0;

            while (good != all || all == 0)
            {
                numberOfCycles++;
                if (makeLoop)
                {
                    good = 0;
                    all  = 0;
                    for (int i = 0; i < 10000; i++)
                    {
                        setNumber = RandGen.NextInt() % 4;
                        if (network.Teach(sets[setNumber].inputs, sets[setNumber].expectedOutputs))
                        {
                            good++;
                        }
                        all++;
                    }
                }

                Console.WriteLine(numberOfCycles + ". good: " + good + "/" + all);
                SaveToFile(@"C:\Users\Majek\Desktop\WriteText.txt", good, all);
            }

            return(0);
        }