Exemplo n.º 1
0
        // Иссдедование алгоритма с переданными параметрами.
        public ResearchAlgorithmResponse ResearchAlgorithm(ResearchRequest param)
        {
            Graph  graph   = _graphBL.GetById(param.GraphId);
            double avgTime = 0.0;
            int    error   = 0;
            // Инициализация алгоритма с переданными параметрами.
            GeneticAlgorithmCore ga = new GeneticAlgorithmCore(graph, param.PopulationSize, param.Pm, param.Pc);

            // Многократный запуск алгоритма для оценки времени работы и процента ошибок.
            for (int i = 0; i < _testCount; i++)
            {
                // Запуск алгоритма и получение результатов
                FindingVertexResponse algResult = ga.StartAlgorithm();
                // проверка на верность найденного решения
                if (algResult.R != graph.R)
                {
                    error++;
                }
                // увеличение суммарного времени работы
                avgTime += algResult.Time;
            }
            // возвращение результата в виде среднего
            // значения времени работы и процента неверных ответов
            return(new ResearchAlgorithmResponse()
            {
                AvgTime = avgTime / _testCount,
                Error = error / (double)_testCount * 100.0,
            });
        }
Exemplo n.º 2
0
        // ������������ ��������� � ����������� �����������.
        public ResearchAlgorithmResponse ResearchAlgorithm(ResearchRequest param)
        {
            Graph  graph   = _graphBL.GetById(param.GraphId);
            double avgTime = 0.0;
            int    error   = 0;
            // ������������� ��������� � ����������� �����������.
            GeneticAlgorithmCore ga = new GeneticAlgorithmCore(graph, param.PopulationSize, param.Pm, param.Pc);

            // ������������ ������ ��������� ��� ������ ������� ������ � �������� ������.
            for (int i = 0; i < _testCount; i++)
            {
                // ������ ��������� � ��������� �����������
                FindingVertexResponse algResult = ga.StartAlgorithm();
                // �������� �� �������� ���������� �������
                if (algResult.R != graph.R)
                {
                    error++;
                }
                // ���������� ���������� ������� ������
                avgTime += algResult.Time;
            }
            // ����������� ���������� � ���� ��������
            // �������� ������� ������ � �������� �������� �������
            return(new ResearchAlgorithmResponse()
            {
                AvgTime = avgTime / _testCount,
                Error = error / (double)_testCount * 100.0,
            });
        }