Advertisement
AdrianMadajewski

Untitled

May 20th, 2020
1,636
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.24 KB | None | 0 0
  1. #include "Test.h"
  2.  
  3. #include "Matrix.h"
  4. #include "List.h"
  5. #include "File.h"
  6. #include "Utility.h"
  7.  
  8. #include <string>   // for std::string
  9. #include <fstream>  // for std::ifstream, std::ofstream
  10. #include <chrono>   // for std::chrono::high_resolution_clock::now();
  11. #include <iostream>
  12.  
  13. void performTests() {
  14.     using clock = std::chrono::high_resolution_clock;
  15.  
  16.     // CONST VALUES FOR CHANGING
  17.     const std::string densityS = "S10\\";
  18.     const int V0 = 10;
  19.     const int Vinc = 10;
  20.     const int Vmax = 30;
  21.  
  22.     // Array to store paths to files
  23.     const std::vector<std::string> pathArray = {
  24.         "D:\\dev\\AISD_backtracking\\input\\hamilton\\seria1\\",
  25.         "D:\\dev\\AISD_backtracking\\input\\hamilton\\seria2\\",
  26.         "D:\\dev\\AISD_backtracking\\input\\hamilton\\seria3\\",
  27.         "D:\\dev\\AISD_backtracking\\input\\hamilton\\seria4\\",
  28.         "D:\\dev\\AISD_backtracking\\input\\hamilton\\seria5\\"
  29.     };
  30.  
  31.     // Initial timer time points
  32.     std::chrono::time_point<clock> start;
  33.     std::chrono::time_point<clock> stop;
  34.     int duration{};
  35.  
  36.     // Files and their headers
  37.     std::ofstream output_list("hamilton_list.txt");
  38.     std::ofstream output_matrix("hamilton_matrix.txt");
  39.     output_matrix << "V" << '\t' << "SERIA1" << '\t' << "SERIA2" << '\t' << "SERIA3" << '\t' << "SERIA4" << '\t' << "SERIA5" << '\n';
  40.     output_list << "V" << '\t' << "SERIA1" << '\t' << "SERIA2" << '\t' << "SERIA3" << '\t' << "SERIA4" << '\t' << "SERIA5" << '\n';
  41.  
  42.     for (int vSize = V0; vSize <= Vmax; vSize += Vinc) {
  43.  
  44.         // Local arrays to store informations
  45.         std::vector<int> matrixTimes{};
  46.         std::vector<int> listTimes{};
  47.         std::vector<std::vector<std::pair<int, int>>> loadedData{};
  48.  
  49.         std::string currentFilename = std::to_string(vSize) + ".txt";
  50.  
  51.         // Load files to loadedData vector
  52.         for (int series = 0; series < 5; ++series) {
  53.             loadedData.emplace_back(loadDataFromFile(pathArray[series] + densityS + currentFilename));
  54.         }
  55.  
  56.         // Create graphs and measure times
  57.         for (int series = 0; series < 5; ++series) {
  58.             MatrixGraph m(loadedData[series]);
  59.             ListGraph l(loadedData[series]);
  60.  
  61.             std::cout << "Creation: " << series + 1 << " ended." << '\n';
  62.  
  63.             // MATRIX
  64.             std::cout << "V = " << vSize << " :matrix: series = " << series + 1 << " started." << '\n';
  65.             start = clock::now();
  66.             m.hamiltonCycle();
  67.             // m.eulerCycle();
  68.             stop = clock::now();
  69.             std::cout << "V = " << vSize << " :matrix: series = " << series + 1 << " ended." << '\n';
  70.  
  71.             duration = std::chrono::duration_cast<UNIT_TIME>(stop - start).count();
  72.             matrixTimes.emplace_back(duration);
  73.  
  74.             // LIST
  75.             std::cout << "V = " << vSize << " :list: series = " << series + 1 << " started." << '\n';
  76.             start = clock::now();
  77.             l.hamiltonCycle();
  78.             // l.eulerCycle();
  79.             stop = clock::now();
  80.             std::cout << "V = " << vSize << " :list: series = " << series + 1 << " ended." << '\n';
  81.  
  82.             duration = std::chrono::duration_cast<UNIT_TIME>(stop - start).count();
  83.             listTimes.emplace_back(duration);
  84.         }
  85.  
  86.         // Iterate over times output them to files
  87.  
  88.         output_matrix << vSize << '\t';
  89.         for (const auto& time : matrixTimes) {
  90.             output_matrix << time << '\t';
  91.         }
  92.         output_matrix << '\n';
  93.  
  94.         output_list << vSize << '\t';
  95.         for (const auto& time : listTimes) {
  96.             output_list << time << '\t';
  97.         }
  98.         output_list << '\n';
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement