Skip to content

Commit

Permalink
feat: add --draw-failed flag and rearrange runPipeline* args
Browse files Browse the repository at this point in the history
  • Loading branch information
Akhil-CM committed Apr 24, 2024
1 parent 44ff07e commit 44086be
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 21 deletions.
12 changes: 12 additions & 0 deletions Data/ALL_tsp/test5.tsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
NAME: test5
TYPE: TSP
DIMENSION: 5
EDGE_WEIGHT_TYPE: EUC_2D
NODE_COORD_SECTION
1 0.0 8.0
2 50.0 8.0
3 20.0 8.0
4 30.0 8.0
5 25.0 10.0
EOF

1 change: 0 additions & 1 deletion DiscreteENN_TSP_table.csv
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
name,distance,points,error,time(ms)
tsp225,4114.717285,225,5.074497,17.000000
1 change: 0 additions & 1 deletion DiscreteENN_TSP_table.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
name distance points error time(ms)
tsp225 4114.717285 225 5.074497 17.000000
Binary file modified a.out
Binary file not shown.
37 changes: 18 additions & 19 deletions main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,11 @@ const std::string& Data_Dir{ "Data/ALL_tsp" };

const std::string& Data_Filename_berlin{ "berlin52.tsp" };

int runPipelineSingle(const stdfs::path& data_path,
std::default_random_engine& rng, bool draw,
bool show_coords, TSPInfo& info);
int runPipelineDir(const stdfs::path& data_path,
std::default_random_engine& rng, bool draw, bool show_coords,
TSPInfoVect_t& infos, const TSPInfoVect_t& opt_infos);
int runPipelineSingle(TSPInfo& info, const stdfs::path& data_path,
std::default_random_engine& rng, bool draw, bool draw_failed,
bool show_coords);
int runPipelineDir(TSPInfoVect_t& infos, const TSPInfoVect_t& opt_infos, const stdfs::path& data_path,
std::default_random_engine& rng, bool draw, bool draw_failed, bool show_coords);

int main(int argc, char** argv)
{
Expand Down Expand Up @@ -61,6 +60,8 @@ int main(int argc, char** argv)
args) };
const bool draw_coords{ utils::vectContains(std::string{ "--show-coords" },
args) };
const bool draw_failed{ utils::vectContains(std::string{ "--draw-failed" },
args) };

std::string Data_Filename{ Data_Filename_berlin };
stdfs::path Data_Path{ utils::getCleanPath(stdfs::current_path() /
Expand All @@ -87,7 +88,7 @@ int main(int argc, char** argv)
stdfs::path Data_FilePath = Data_Path / stdfs::path(Data_Filename);
TSPInfo info{};
runs_failed =
runPipelineSingle(Data_FilePath, rng, draw_path, draw_coords, info);
runPipelineSingle(info, Data_FilePath, rng, draw_path, draw_failed, draw_coords);
if (runs_failed == 0) {
infos.push_back(info);
} else {
Expand All @@ -96,8 +97,7 @@ int main(int argc, char** argv)
"main");
}
} else {
runs_failed = runPipelineDir(Data_Path, rng, draw_path, draw_coords,
infos, optimal_infos);
runs_failed = runPipelineDir(infos, optimal_infos, Data_Path, rng, draw_path, draw_failed, draw_coords);
}
if (runs_failed != 0) {
utils::printErr("Runs failed: " + std::to_string(runs_failed) +
Expand Down Expand Up @@ -183,9 +183,8 @@ int main(int argc, char** argv)
return 0;
}

int runPipelineDir(const stdfs::path& data_path,
std::default_random_engine& rng, bool draw, bool show_coords,
TSPInfoVect_t& infos, const TSPInfoVect_t& opt_infos)
int runPipelineDir(TSPInfoVect_t& infos, const TSPInfoVect_t& opt_infos, const stdfs::path& data_path,
std::default_random_engine& rng, bool draw, bool draw_failed, bool show_coords)
{
if (not stdfs::is_directory(data_path)) {
utils::printErr("provided path " + data_path.string() +
Expand Down Expand Up @@ -216,7 +215,7 @@ int runPipelineDir(const stdfs::path& data_path,
// utils::printInfo("skipping file pr2392 because of long run time.", "runPipelineDir");
// continue;;
// }
if (runPipelineSingle(filepath, rng, draw, show_coords, info) != 0) {
if (runPipelineSingle(info, filepath, rng, draw, draw_failed, show_coords) != 0) {
utils::printErr("pipeline failed for the path " + filepath.string(),
"runPipelineDir");
++runs_failed;
Expand All @@ -228,9 +227,9 @@ int runPipelineDir(const stdfs::path& data_path,
return runs_failed;
}

int runPipelineSingle(const stdfs::path& data_path,
std::default_random_engine& rng, bool draw,
bool show_coords, TSPInfo& info)
int runPipelineSingle(TSPInfo& info, const stdfs::path& data_path,
std::default_random_engine& rng, bool draw, bool draw_failed,
bool show_coords)
{
utils::printInfo("Running algorithm for " + data_path.string(),
"runPipelineSingle");
Expand Down Expand Up @@ -340,21 +339,21 @@ int runPipelineSingle(const stdfs::path& data_path,
NodeExp_t<bool> erased = enn_tsp.validatePath();
if (erased.err()) {
std::cerr << "[Error] (main): final validatePath failed\n";
if (draw) {
if (draw_failed) {
drawPath(path, enn_tsp.stack(), show_coords);
}
return 1;
}
if (erased.has_value()) {
std::cerr << "[Error] (main): final validatePath removed node(s)\n";
if (draw) {
if (draw_failed) {
drawPath(path, enn_tsp.stack(), show_coords);
}
return 1;
}
if (enn_tsp.checkIntersectPath()) {
std::cerr << "[Error] (main): final checkIntersectPath failed\n";
if (draw) {
if (draw_failed) {
drawPath(path, enn_tsp.stack(), show_coords);
}
return 1;
Expand Down

0 comments on commit 44086be

Please sign in to comment.