private static void Main() { #region Initialize var random = new Random(); var generator = new DeBruijnGraphGenerator(2, 3); var graph = generator.Generate(); for (var i = 0; i < graph.Edges.Count; i++) { for (var j = 0; j < graph.Edges[i].Count; j++) { if (graph.Edges[i][j] == Graph.Infinity) { Console.Write("I"); } else { Console.Write(graph.Edges[i][j]); } } Console.WriteLine(); } Console.WriteLine(graph.Edges.Count); Console.WriteLine(graph.Degree); // return; // var graph = new Graph(); graph.Randomize(random); var chromosomes = new List <Chromosome>(); for (var i = 0; i < ChromosomesNumber; i++) { var chromosome = new Chromosome(); foreach (List <int> _ in graph.Edges) { int vertex; do { vertex = random.Next(graph.Edges.Count); } while (chromosome.Vertices.Contains(vertex)); chromosome.Vertices.Add(vertex); } chromosomes.Add(chromosome); } #endregion #region Functions var fitnessFunction = new Func <Chromosome, double>(c => { var sum = 0; for (var i = 0; i < c.Vertices.Count - 1; i++) { sum += graph.Edges[c.Vertices[i]][c.Vertices[i + 1]]; } return(sum + graph.Edges[c.Vertices[^ 1]][0]);
private static void Main() { #region Initialize var random = new Random(); var generator = new GraphGenerator(random); var algorithm = new Algorithm <Chromosome>(random); #endregion var results = new List <List <List <AlgorithmResult <Chromosome> > > >(); for (int verticesNumber = VerticesNumberFrom; verticesNumber <= VerticesNumberTo; verticesNumber++) { Console.WriteLine($"{verticesNumber} vertices"); results.Add(new List <List <AlgorithmResult <Chromosome> > >()); for (int degree = DegreeFrom; degree <= verticesNumber; degree++) { results[verticesNumber - VerticesNumberFrom].Add(new List <AlgorithmResult <Chromosome> >()); for (int chromosomesNumber = ChromosomesNumberFrom; chromosomesNumber <= ChromosomesNumberTo; chromosomesNumber++) { var averageIterationsOrder = 0; var averagePathOrder = 0; var averageIterationsCycle = 0; var averagePathCycle = 0; var averageIterationsRandom = 0; var averagePathRandom = 0; var averageIterations = 0; var averagePath = 0; for (var graphCase = 0; graphCase < GraphsNumber; graphCase++) { Graph graph = generator.Generate(verticesNumber, degree); graph.Randomize(random); #region Chromosomes var chromosomes = new List <Chromosome>(); for (var i = 0; i < chromosomesNumber; i++) { var chromosome = new Chromosome(); foreach (List <int> _ in graph.Edges) { int vertex; do { vertex = random.Next(graph.Edges.Count); } while (chromosome.Vertices.Contains(vertex)); chromosome.Vertices.Add(vertex); } chromosomes.Add(chromosome); } #endregion #region Functions var fitnessFunction = new Func <Chromosome, double>(c => { var sum = 0; for (var i = 0; i < c.Vertices.Count - 1; i++) { sum += graph.Edges[c.Vertices[i]][c.Vertices[i + 1]]; } return(sum + graph.Edges[c.Vertices[^ 1]][0]);