public void create_Optimal_of_One_Max_Tree(string file_Name, int num_Vertex) { Random rnd = new Random(); Evaluate eva_class = new Evaluate(); int[] prufer_Number = initialize_Prufer(num_Vertex, rnd); int[,] edge_Weight = eva_class.convert_Prufer_to_Tree(prufer_Number, num_Vertex); ReadWriteFile ioFile = new ReadWriteFile(); ioFile.write_Optimal_of_One_Max_Tree(file_Name, num_Vertex, edge_Weight); ioFile.draw_Plot_in_Matlab(Path.GetFileNameWithoutExtension(file_Name) + @".m", num_Vertex, edge_Weight); }
public void Heuristic_Clustered_Tree(string[] args) { #region Khai bao string instance_Name, input_File_Data = "", out_File_Data, tempPath, folder_Results = " "; int[] bstTour; double[,] edge_Matrix; //Ma tran ket qua double[] bestFitness; string pattern = " "; Regex myRegex = new Regex(pattern); Regex rg = new Regex(@"\s+"); #endregion #region Read parameters try { if (args.Length <= 0) { Console.Write("Number of parameters is incorrect, require > 9 parameters (you provided %d).\n\n", args.Length); //print_Usage(); Console.ReadKey(); } input_File_Data = args[1].Trim(); } catch { Console.Write("Error parsing parameters.\n\n"); //print_Usage(); } //Đọc dữ liệu từng bài toán //Index đầu tiên là: problem_index (kiểu bài toán) ---> index tiếp theo là: tên file dữ liệu -> bai toan 1 - 8 thi bo qua ten file du lieu if (!File.Exists(input_File_Data)) { Console.WriteLine("Do not exist file: " + input_File_Data); return; } #endregion double[,] weight_Matrix; int[][] vertex_In_Cluster; int num_Cluster, num_Vertex, source_Vertex; ioFile.read_File_Clusted_Tree(input_File_Data, out weight_Matrix, out vertex_In_Cluster, out num_Vertex, out num_Cluster, out source_Vertex); instance_Name = Path.GetFileName(input_File_Data); int alg_Index = Convert.ToInt32(args[0]); switch (alg_Index) { case 3: folder_Results = @"Results\BFS_Dijstra_Clustered_Tree"; break; case 4: folder_Results = @"Results\Prim_Prim_Clustered_Tree"; break; } Directory.CreateDirectory(folder_Results); folder_Results = folder_Results + @"\" + Path.GetFileNameWithoutExtension(instance_Name); Directory.CreateDirectory(folder_Results); //Neu da co file ket qua thi ko chay tiep out_File_Data = folder_Results + @"\" + Path.GetFileNameWithoutExtension(instance_Name) + @".opt"; if (File.Exists(out_File_Data)) { Console.WriteLine(); return; } //Điều kiện dừng edge_Matrix = new double[1, 1]; stGA.Start(); switch (alg_Index) { case 3: Console.WriteLine("-----------------------------------------------------------------------------"); Console.WriteLine("| Algorithm | Instances | Best Cost|"); Console.WriteLine("-----------------------------------------------------------------------------"); Console.Write(String.Format("| {0,-18} | {1,-30} | {2, 19} |", "BFS_Dijstra", instance_Name, "")); BFS_Dijstra_Clustered_Tree(weight_Matrix, num_Vertex, num_Cluster, vertex_In_Cluster, source_Vertex, out edge_Matrix); break; case 4: Console.WriteLine("-----------------------------------------------------------------------------"); Console.WriteLine("| Algorithm | Instances | Best Cost|"); Console.WriteLine("-----------------------------------------------------------------------------"); Console.Write(String.Format("| {0,-18} | {1,-30} | {2, 19} |", "Prim_Prim", instance_Name, "")); Prim_Clustered_Tree(weight_Matrix, num_Vertex, num_Cluster, vertex_In_Cluster, source_Vertex, out edge_Matrix); break; } stGA.Stop(); //Tinh cost double cost_Opt = eval_Class.clustered_Tree_Evaluate(edge_Matrix, weight_Matrix, num_Vertex, source_Vertex); int[,] aaa = new int[num_Vertex, num_Vertex]; for (int i = 0; i < num_Vertex; i++) { for (int j = 0; j < num_Vertex; j++) { aaa[i, j] = (int)edge_Matrix[i, j]; } } ioFile.write_Opt_Solution_File(out_File_Data, -1, aaa, num_Vertex, cost_Opt, stGA.Elapsed.ToString(), false); ioFile.draw_Plot_in_Matlab(folder_Results + @"\" + Path.GetFileNameWithoutExtension(instance_Name) + @".m", num_Vertex, aaa); Console.SetCursorPosition(60, Console.CursorTop); Console.Write(string.Format("{0,18}", cost_Opt.ToString("0.00"))); Console.WriteLine(); }