static void Main(string[] args) { Console.WriteLine("-- TEACHING MATRIX -- " + DateTime.Now.ToLongTimeString() + " -"); var teacher = new Teaching(100, 50, 1); teacher.Progress = DrawProgress; //умножение на 2 - работает до 7 var inpValues = new byte[] { 1, 2, 3, 4, 5, 6 }; var outValues = new byte[] { 2, 4, 6, 8, 10, 12 }; var res = teacher.Teach(inpValues, outValues, 1000); Console.CursorTop += teacher.resList.Count > 0 ? teacher.resList[0].yHeight * 2 + 3 : 3; if (res == TeachingResult.TeachingComplete) { Console.WriteLine("Завершено. Всего матриц " + teacher.resList.Count); MatrixDraw.DrawMatrix(teacher.resList[0]); } else if (res == TeachingResult.MaxRowLimitReached) { Console.WriteLine("Превышен максимальный размер матрицы."); Console.ReadKey(); return; } else if (res == TeachingResult.ContinueTeaching) { Console.WriteLine("Незавершено. Всего матриц: " + teacher.resList.Count); if (teacher.resList.Count == 0) { Console.ReadKey(); return; } } Console.WriteLine(); foreach (var m in teacher.resList) { Console.WriteLine("Тест на обучающей выборке"); CheckFoundMatrix(m, inpValues, outValues); } while (true) { Console.WriteLine("Проверить значение: "); var read = Console.ReadLine(); if (String.IsNullOrWhiteSpace(read)) { break; } byte intTemp = Convert.ToByte(read); var matr = new iMatrixSpc.iMatrixByte(teacher.resList[0]); var mRes = matr.Process(intTemp); Console.WriteLine(intTemp + " => " + mRes); } }
private byte[] GetNextInputsAsOutputs(iMatrixByte m, byte[] teachingInput) { var nextOutputs = new List <byte>(); for (int i = 0; i < teachingInput.Length; i++) { var nextOut = m.Process(teachingInput[i]); nextOutputs.Add(nextOut); } return(nextOutputs.ToArray()); }
private long ComputeCombinationMetrika(iMatrixByte m, byte[] teachingInput, byte[] teachingOutput, long localMetrika) { long combinationMetrika = 0; for (int i = 0; i < teachingInput.Length; i++) { combinationMetrika += Math.Abs(m.Process(teachingInput[i]) - teachingOutput[i]); if (combinationMetrika > localMetrika) { return(combinationMetrika); } } return(combinationMetrika); }