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