Пример #1
0
        public void mprAdd(DetectionResult a, AnalysisResult Arezult)
        {
            if (a.Veroyat >= 0.50)                              // Рассматриваем к работе методы с вероятностью обнаружения > 50%
            {
                All.Add(a);                                     // Добавим в список результат работы метода
                All.Sort((x, y) => x.Coord.CompareTo(y.Coord)); // Сортировка результатов по координатам

                int[] Coord = new int[All.Count];
                for (int i = 0; i < All.Count; i++) // Массив координат, вытащим из списка координаты методов
                {                                   // массив координат отсортированный
                    Coord[i] = All[i].Coord;
                }
                int index = 0;
                index = FindDT.FindMinDt(Coord); // Найдем минимальную разницу между 2-мя методами по координатам
                                                 // Считаем что 2 метода не могли ошибиться
                Arezult.Rezults[0] = new DetectionResult();
                Arezult.Rezults[0].NumberofMethod = All[index].NumberofMethod;
                Arezult.Rezults[0].TimeofDetect   = All[index].TimeofDetect;
                Arezult.Rezults[0].Rashod         = All[index].Rashod;
                Arezult.Rezults[0].Coord          = All[index].Coord;

                if (All.Count > 1) // После первого исполнения тут будет только 1 результат работы метода, потому суда не зайдем
                {
                    Arezult.Rezults[1] = new DetectionResult();
                    Arezult.Rezults[1].NumberofMethod = All[index + 1].NumberofMethod;
                    Arezult.Rezults[1].TimeofDetect   = All[index + 1].TimeofDetect;
                    Arezult.Rezults[1].Rashod         = All[index + 1].Rashod;
                    Arezult.Rezults[1].Coord          = All[index + 1].Coord;
                }
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            Console.Write("Введи количество методов: ");
            int count = Int32.Parse(Console.ReadLine());

            MethodN[]      M       = new MethodN[count];   // Класс метода
            MPR            mprm    = new MPR();            // Класс модуля принятия решения
            AnalysisResult Arezult = new AnalysisResult(); // Класс распечатки результата
            int            Tcal;
            int            Trab;
            Random         randObj = new Random();

            using (StreamWriter sw = File.AppendText("Text.txt")) // Запись в файл лога
            {
                sw.WriteLine(DateTime.Now + " Начали работу! Ввели: " + count + " методов");
            }
            for (int i = 0; i < count; i++) // Инициализация каждого метода
            {
                Console.Write("Введи через пробел Время калибровки и Время работы для метода " + i + ": ");
                var      text  = Console.ReadLine();
                string[] texts = text.Split(' ');
                Tcal = Int32.Parse(texts[0]);
                Trab = Int32.Parse(texts[1]);
                M[i] = new MethodN(Tcal, Trab, i);
                using (StreamWriter sw = File.AppendText("Text.txt"))
                {
                    sw.WriteLine("Метод " + i + " Калибровка = " + Tcal + " Результат = " + Trab);
                }
            }

            while (true)
            {
                var R1 = new DetectionResult(); // Класс результата работы метода
                Console.Clear();
                bool flag = false;              // Флаг результата исполнения какого-то метода.(Калибровка прошла)
                for (int i = 0; i < count; i++)
                {
                    R1 = M[i].Work();
                    if (R1.CalibON == true) // Если калибровка выполняется то ничего не делаем
                    {
                        using (StreamWriter sw = File.AppendText("Text.txt"))
                        {
                            sw.WriteLine("Калибровка метода " + i + " выполняется");
                        }
                    }
                    else if (R1.TimeofRezult != true) // Подошло время исполнения метода (1 раз в N сек)
                    {
                        flag = true;
                        mprm.mprAdd(R1, Arezult); // Результат работы метода сохраняем
                        using (StreamWriter sw = File.AppendText("Text.txt"))
                        {
                            sw.WriteLine(DateTime.Now + " Метод " + R1.NumberofMethod + " Сработал " + "Время дедеткт.: " + R1.TimeofDetect + " Вероятность " + R1.Veroyat + " Коорд. " + R1.Coord + " Расход " + R1.Rashod);
                        }
                        Console.WriteLine("Мет. " + R1.NumberofMethod + " Сработал " + "Время дед.: " + R1.TimeofDetect + " Вер-ть " + R1.Veroyat + " Коорд. " + R1.Coord + " Расход " + R1.Rashod);
                    }
                    else
                    {
                        //Console.WriteLine("Zdem");
                    }
                }
                if (flag)
                {
                    Arezult.PrintRez(); // Если что-то сохраняли, метод сработал, то проанализируем результат
                }
                Thread.Sleep(1000);     // Пауза 1 сек
            }
        }