public void onDeactiveZone() { lastActiveNeuron = 0; active = 0; zone.onDeactive(); }
public void HW4() { string dbgout = ""; DebugLog.Log("HW4 - Motor"); InputMatrix in1 = new InputMatrix(5); SubZone sz1 = new SubZone(5); OutputMatrix out1 = new OutputMatrix(5); in1.setUpSubZone(sz1); sz1.setDownSubZones(in1); sz1.setUpSubZone(out1); out1.setDownSubZones(sz1); out1.addInputs(sz1); DebugLog.Log("Learn"); bool[][] in_p2 = new bool[][] { new bool[] { false, false, true, true, false }, new bool[] { false, false, false, true, true }, }; for (int i = 0; i < in_p2.Length; i++) { in1.setBooleans(in_p2[i]); sz1.setColumnNeurons(1, in1.inputs); } bool[][] in_p3 = new bool[][] { new bool[] { false, false, true, true, false }, new bool[] { false, true, true, false, false }, new bool[] { true, true, false, false, false }, }; for (int i = 0; i < in_p3.Length; i++) { in1.setBooleans(in_p3[i]); sz1.setColumnNeurons(2, in1.inputs); } bool[][] in_p = new bool[][] { new bool[] { false, false, false, true, false }, // _ new bool[] { false, false, true, true, false }, // 2,3 }; for (int n = 0; n < in_p.Length; n++) { DebugLog.Log("Analyse " + n + " pattern"); in1.setBooleans(in_p[n]); dbgout = ""; for (int i = 0; i < in1.inputs.Length; i++) { dbgout += (in1.inputs[i].active > 0.8f ? "A" : "_") + " "; } DebugLog.Log("Pattern : " + dbgout); in1.sendSignals(); sz1.analyze(); dbgout = ""; for (int i = 0; i < out1.inputs.Length; i++) { dbgout += (out1.inputsActives[i] > 0.8f ? "A" : "_") + " "; } DebugLog.Log("Columns : " + dbgout); dbgout = ""; for (int i = 0; i < out1.inputs.Length; i++) { dbgout += (in1.inputs[i].prediction >= 0.5f ? "A" : "_") + " "; } DebugLog.Log("Prediction : " + dbgout); for (int p = 0; p < 5; p++) { DebugLog.Log("Motor " + p + " pattern"); out1.outSignalMotor(p); dbgout = ""; for (int i = 0; i < in1.inputs.Length; i++) { dbgout += (in1.getMotorValues()[i] >= 0.5f ? "A" : "_") + " "; } DebugLog.Log("Motor : " + dbgout); in1.reset(); } out1.reset(); } sz1.onDeactive(); }