Пример #1
0
        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);
            }
        }
Пример #2
0
        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());
        }
Пример #3
0
        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);
        }