コード例 #1
0
        public void initializeNetworks(gateValue net, double lernValue, int neurons)
        {
            int[] layers = new int[] { 2, 1 };
            switch (net)
            {
            case gateValue.AND:
                if (neurons != 1)
                {
                    layers = new int[] { 2, neurons, 1 }
                }
                ;
                else
                {
                    layers = new int[] { 2, 1 }
                };

                networkAND = new AdalineMPLNetworkController(layers, lernValue);
                break;

            case gateValue.OR:
                if (neurons != 1)
                {
                    layers = new int[] { 2, neurons, 1 }
                }
                ;
                else
                {
                    layers = new int[] { 2, 1 }
                };
                networkOR = new AdalineMPLNetworkController(layers, lernValue);
                break;

            case gateValue.NOT:
                if (neurons != 1)
                {
                    layers = new int[] { 1, neurons, 1 }
                }
                ;
                else
                {
                    layers = new int[] { 1, 1 }
                };
                networkNOT = new AdalineMPLNetworkController(layers, lernValue);
                break;

            case gateValue.XOR:
                layers     = new int[] { 2, neurons, 1 };
                networkXOR = new AdalineMPLNetworkController(layers, lernValue);
                break;
            }
        }
コード例 #2
0
        public double getActualErrorForTest(gateValue net)
        {
            AdalineMPLNetworkController network  = getNetwork(net);
            List <TestData>             lernData = getTestData(net);

            double acumlator = 0;

            foreach (TestData data in lernData)
            {
                acumlator += getActallError(ask(net, data.x), data.res[0]);
            }

            return(acumlator / (double)lernData.Count);
        }
コード例 #3
0
        public double testGate(gateValue net)
        {
            AdalineMPLNetworkController network  = getNetwork(net);
            List <TestData>             lernData = getTestData(net);

            double correct = 0;

            foreach (TestData data in lernData)
            {
                if (correctFunction(ask(net, data.x), data.res[0]))
                {
                    correct++;
                }
            }
            return(correct / (double)(lernData.Count));
        }
コード例 #4
0
        public string lern(gateValue net, int iterations, double error)
        {
            AdalineMPLNetworkController network  = getNetwork(net);
            List <TestData>             lernData = getTestData(net);


            while (iterations != 0)
            {
                foreach (TestData actData in lernData)
                {
                    network.lernArr(actData.x, actData.res, error);
                    //network.lern(actData.x, actData.res);
                }
                iterations--;
            }


            return("Act%: " + testGate(net));
        }
コード例 #5
0
        public string lernEnd(gateValue net, double error)
        {
            AdalineMPLNetworkController network  = getNetwork(net);
            List <TestData>             lernData = getTestData(net);
            double iteration = 0;

            do
            {
                foreach (TestData actData in lernData)
                {
                    network.lernArr(actData.x, actData.res, error);
                }
                iteration++;
                if (iteration >= 10e4)
                {
                    break;
                }
            } while (testGate(net) != 1);
            //if (testGate(net) != 1)

            return("iter" + iteration + "  " + "Act%: " + testGate(net));
        }
コード例 #6
0
        public double ask(gateValue net, double[] input)
        {
            AdalineMPLNetworkController network = getNetwork(net);

            return(network.ask(input)[0]);
        }