Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Test.h"
- #include "Matrix.h"
- #include "List.h"
- #include "File.h"
- #include "Utility.h"
- #include <string> // for std::string
- #include <fstream> // for std::ifstream, std::ofstream
- #include <chrono> // for std::chrono::high_resolution_clock::now();
- #include <iostream>
- void performTests() {
- using clock = std::chrono::high_resolution_clock;
- // CONST VALUES FOR CHANGING
- const std::string densityS = "S10\\";
- const int V0 = 10;
- const int Vinc = 10;
- const int Vmax = 30;
- // Array to store paths to files
- const std::vector<std::string> pathArray = {
- "D:\\dev\\AISD_backtracking\\input\\hamilton\\seria1\\",
- "D:\\dev\\AISD_backtracking\\input\\hamilton\\seria2\\",
- "D:\\dev\\AISD_backtracking\\input\\hamilton\\seria3\\",
- "D:\\dev\\AISD_backtracking\\input\\hamilton\\seria4\\",
- "D:\\dev\\AISD_backtracking\\input\\hamilton\\seria5\\"
- };
- // Initial timer time points
- std::chrono::time_point<clock> start;
- std::chrono::time_point<clock> stop;
- int duration{};
- // Files and their headers
- std::ofstream output_list("hamilton_list.txt");
- std::ofstream output_matrix("hamilton_matrix.txt");
- output_matrix << "V" << '\t' << "SERIA1" << '\t' << "SERIA2" << '\t' << "SERIA3" << '\t' << "SERIA4" << '\t' << "SERIA5" << '\n';
- output_list << "V" << '\t' << "SERIA1" << '\t' << "SERIA2" << '\t' << "SERIA3" << '\t' << "SERIA4" << '\t' << "SERIA5" << '\n';
- for (int vSize = V0; vSize <= Vmax; vSize += Vinc) {
- // Local arrays to store informations
- std::vector<int> matrixTimes{};
- std::vector<int> listTimes{};
- std::vector<std::vector<std::pair<int, int>>> loadedData{};
- std::string currentFilename = std::to_string(vSize) + ".txt";
- // Load files to loadedData vector
- for (int series = 0; series < 5; ++series) {
- loadedData.emplace_back(loadDataFromFile(pathArray[series] + densityS + currentFilename));
- }
- // Create graphs and measure times
- for (int series = 0; series < 5; ++series) {
- MatrixGraph m(loadedData[series]);
- ListGraph l(loadedData[series]);
- std::cout << "Creation: " << series + 1 << " ended." << '\n';
- // MATRIX
- std::cout << "V = " << vSize << " :matrix: series = " << series + 1 << " started." << '\n';
- start = clock::now();
- m.hamiltonCycle();
- // m.eulerCycle();
- stop = clock::now();
- std::cout << "V = " << vSize << " :matrix: series = " << series + 1 << " ended." << '\n';
- duration = std::chrono::duration_cast<UNIT_TIME>(stop - start).count();
- matrixTimes.emplace_back(duration);
- // LIST
- std::cout << "V = " << vSize << " :list: series = " << series + 1 << " started." << '\n';
- start = clock::now();
- l.hamiltonCycle();
- // l.eulerCycle();
- stop = clock::now();
- std::cout << "V = " << vSize << " :list: series = " << series + 1 << " ended." << '\n';
- duration = std::chrono::duration_cast<UNIT_TIME>(stop - start).count();
- listTimes.emplace_back(duration);
- }
- // Iterate over times output them to files
- output_matrix << vSize << '\t';
- for (const auto& time : matrixTimes) {
- output_matrix << time << '\t';
- }
- output_matrix << '\n';
- output_list << vSize << '\t';
- for (const auto& time : listTimes) {
- output_list << time << '\t';
- }
- output_list << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement