Example #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,
            });
        }
Example #2
0
        // Поиск центральных вершин при помощи генетического алгоритма.
        // Алгоритм запускается с фиксированными параметрами мутации, скрещивания и размер популяции.
        public FindingVertexResponse FindCentralVertex(Graph graph)
        {
            // поиск центральных вершин при помощи генетического алгоритма с заданными параметрами
            GeneticAlgorithmCore ga = new GeneticAlgorithmCore(graph, _fixedPopSize, _fixedPM, _fixedPC);

            return(ga.StartAlgorithm());
        }
Example #3
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,
            });
        }
Example #4
0
        // ����� ����������� ������ ��� ������ ������������� ���������.
        // �������� ����������� � �������������� ����������� �������, ����������� � ������ ���������.
        public FindingVertexResponse FindCentralVertex(Graph graph)
        {
            // ����� ����������� ������ ��� ������ ������������� ��������� � ��������� �����������
            GeneticAlgorithmCore ga = new GeneticAlgorithmCore(graph, _fixedPopSize, _fixedPM, _fixedPC);

            return(ga.StartAlgorithm());
        }
Example #5
0
        public void GeneticAlgorithmTets()
        {
            string[]              lines       = File.ReadAllLines("BarabasiAlbertGraph1_M2.txt");
            GraphParser           graphParser = new GraphParser();
            Graph                 graph       = graphParser.ParseSimpleTxtFormat(lines);
            GeneticAlgorithmCore  ga          = new GeneticAlgorithmCore(graph, 20, 0.4, 0.4);
            FindingVertexResponse result      = ga.StartAlgorithm();

            Console.WriteLine(result.R);
        }