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; } }
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); }
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)); }
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)); }
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)); }
public double ask(gateValue net, double[] input) { AdalineMPLNetworkController network = getNetwork(net); return(network.ask(input)[0]); }