From bde1e269e52dc4c8eb21d5ff125e9d92c05bc2e6 Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sat, 24 Aug 2024 20:28:27 -0600 Subject: [PATCH 01/14] standard on catch --- .../compatibleVehicles_driver.cpp | 33 +++++++---- src/optimize/optimize_driver.cpp | 48 ++++++++++------ .../pgr_pickDeliverEuclidean_driver.cpp | 48 ++++++++-------- .../pgr_pickDeliver_driver.cpp | 48 ++++++++-------- src/pickDeliver/pickDeliver_driver.cpp | 39 ++++++++----- src/vroom/vroom_driver.cpp | 57 ++++++++++--------- 6 files changed, 157 insertions(+), 116 deletions(-) diff --git a/src/compatibleVehicles/compatibleVehicles_driver.cpp b/src/compatibleVehicles/compatibleVehicles_driver.cpp index 10cb9a83c..ebaed1616 100644 --- a/src/compatibleVehicles/compatibleVehicles_driver.cpp +++ b/src/compatibleVehicles/compatibleVehicles_driver.cpp @@ -119,6 +119,8 @@ vrp_do_compatibleVehicles( using vrprouting::alloc; using vrprouting::to_pg_msg; + char* hint = nullptr; + std::ostringstream log; std::ostringstream notice; std::ostringstream err; @@ -213,25 +215,34 @@ vrp_do_compatibleVehicles( } (*return_count) = solution.size(); - pgassert(*err_msg == nullptr); - *log_msg = log.str().empty()? - nullptr : - to_pg_msg(log.str()); - *notice_msg = notice.str().empty()? - nullptr : - to_pg_msg(notice.str()); + *log_msg = log.str().empty()? nullptr : to_pg_msg(log.str()); + *notice_msg = notice.str().empty()? nullptr : to_pg_msg(notice.str()); } catch (AssertFailedException &except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.what(); - *err_msg = to_pg_msg(err.str()); + *err_msg = to_pg_msg(except.what()); *log_msg = to_pg_msg(log.str()); } catch (std::exception& except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.what(); - *err_msg = to_pg_msg(err.str()); + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); + } catch (const std::string &except) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(except); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log.str()); + } catch (const std::pair& ex) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(ex.first); + *log_msg = to_pg_msg(ex.second); + } catch (const std::pair& except) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + log << "id = " << except.second; + *err_msg = to_pg_msg(except.first); *log_msg = to_pg_msg(log.str()); } catch(...) { if (*return_tuples) free(*return_tuples); diff --git a/src/optimize/optimize_driver.cpp b/src/optimize/optimize_driver.cpp index 3686f8263..136da61d2 100644 --- a/src/optimize/optimize_driver.cpp +++ b/src/optimize/optimize_driver.cpp @@ -370,6 +370,8 @@ vrp_do_optimize( using vrprouting::alloc; using vrprouting::to_pg_msg; + char* hint = nullptr; + std::ostringstream log; std::ostringstream notice; std::ostringstream err; @@ -522,27 +524,39 @@ vrp_do_optimize( (*return_count) = total_shipments * 2; pgassert(*err_msg == nullptr); - *log_msg = log.str().empty()? - nullptr : - to_pg_msg(log.str()); - *notice_msg = notice.str().empty()? - nullptr : - to_pg_msg(notice.str()); + *log_msg = log.str().empty()? nullptr : to_pg_msg(log.str()); + *notice_msg = notice.str().empty()? nullptr : to_pg_msg(notice.str()); } catch (AssertFailedException &except) { - err << except.what() << log.str(); - *err_msg = to_pg_msg(err.str()); + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); } catch (std::exception& except) { - err << except.what() << log.str(); - *err_msg = to_pg_msg(err.str()); + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); + } catch (const std::string &except) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(except); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log.str()); } catch (const std::pair& ex) { - err << ex.first; - log.str(""); - log.clear(); - log << ex.second; - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(ex.first); + *log_msg = to_pg_msg(ex.second); + } catch (const std::pair& except) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + log << "id = " << except.second; + *err_msg = to_pg_msg(except.first); + *log_msg = to_pg_msg(log.str()); } catch(...) { - err << "Caught unknown exception!" << log.str(); + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + err << "Caught unknown exception!"; *err_msg = to_pg_msg(err.str()); + *log_msg = to_pg_msg(log.str()); } } diff --git a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp index 4a5546b49..92d7aa268 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp @@ -138,6 +138,8 @@ vrp_do_pgr_pickDeliverEuclidean( using vrprouting::alloc; using vrprouting::to_pg_msg; + char* hint = nullptr; + std::ostringstream log; std::ostringstream notice; std::ostringstream err; @@ -255,40 +257,40 @@ vrp_do_pgr_pickDeliverEuclidean( } (*return_count) = solution.size(); - log << pd_problem.msg.get_log(); - - pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - nullptr : - to_pg_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - nullptr : - to_pg_msg(notice.str().c_str()); + pgassert(*err_msg == nullptr); + *log_msg = log.str().empty()? nullptr : to_pg_msg(log.str()); + *notice_msg = notice.str().empty()? nullptr : to_pg_msg(notice.str()); } catch (AssertFailedException &except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.what(); - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); } catch (std::exception& except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.what(); - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); + } catch (const std::string &except) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(except); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log.str()); } catch (const std::pair& ex) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(ex.first); + *log_msg = to_pg_msg(ex.second); + } catch (const std::pair& except) { + if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << ex.first; - log.str(""); - log.clear(); - log << ex.second; - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + log << "id = " << except.second; + *err_msg = to_pg_msg(except.first); + *log_msg = to_pg_msg(log.str()); } catch(...) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + *err_msg = to_pg_msg(err.str()); + *log_msg = to_pg_msg(log.str()); } } diff --git a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp index f81afe373..9c9917a7e 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp @@ -95,6 +95,8 @@ vrp_do_pgr_pickDeliver( using vrprouting::alloc; using vrprouting::to_pg_msg; + char* hint = nullptr; + std::ostringstream log; std::ostringstream notice; std::ostringstream err; @@ -236,42 +238,40 @@ vrp_do_pgr_pickDeliver( } (*return_count) = solution.size(); - pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - nullptr : - to_pg_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - nullptr : - to_pg_msg(notice.str().c_str()); + pgassert(*err_msg == nullptr); + *log_msg = log.str().empty()? nullptr : to_pg_msg(log.str()); + *notice_msg = notice.str().empty()? nullptr : to_pg_msg(notice.str()); } catch (AssertFailedException &except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.what(); - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); } catch (std::exception& except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.what(); - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); + } catch (const std::string &except) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(except); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log.str()); } catch (const std::pair& ex) { + if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << ex.first; - log << ex.second; - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); - } catch (const std::pair& ex) { + *err_msg = to_pg_msg(ex.first); + *log_msg = to_pg_msg(ex.second); + } catch (const std::pair& except) { + if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << ex.first; - log << "FOOOO missing on matrix: id = " << ex.second; - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + log << "id = " << except.second; + *err_msg = to_pg_msg(except.first); + *log_msg = to_pg_msg(log.str()); } catch(...) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + *err_msg = to_pg_msg(err.str()); + *log_msg = to_pg_msg(log.str()); } } diff --git a/src/pickDeliver/pickDeliver_driver.cpp b/src/pickDeliver/pickDeliver_driver.cpp index 8ae3a95c7..5f714ef5f 100644 --- a/src/pickDeliver/pickDeliver_driver.cpp +++ b/src/pickDeliver/pickDeliver_driver.cpp @@ -127,6 +127,8 @@ vrp_do_pickDeliver( using vrprouting::alloc; using vrprouting::to_pg_msg; + char* hint = nullptr; + std::ostringstream log; std::ostringstream notice; std::ostringstream err; @@ -272,29 +274,40 @@ vrp_do_pickDeliver( } (*return_count) = solution.size(); - log << pd_problem.msg.get_log(); - pgassert(*err_msg == nullptr); - *log_msg = log.str().empty()? - nullptr : - to_pg_msg(log.str()); - *notice_msg = notice.str().empty()? - nullptr : - to_pg_msg(notice.str()); + *log_msg = log.str().empty()? nullptr : to_pg_msg(log.str()); + *notice_msg = notice.str().empty()? nullptr : to_pg_msg(notice.str()); } catch (AssertFailedException &except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.what() << log.str(); - *err_msg = to_pg_msg(err.str()); + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); } catch (std::exception& except) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.what() << log.str(); - *err_msg = to_pg_msg(err.str()); + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); + } catch (const std::string &except) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(except); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log.str()); + } catch (const std::pair& ex) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(ex.first); + *log_msg = to_pg_msg(ex.second); + } catch (const std::pair& except) { + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + log << "id = " << except.second; + *err_msg = to_pg_msg(except.first); + *log_msg = to_pg_msg(log.str()); } catch(...) { if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << "Caught unknown exception!" << log.str(); + err << "Caught unknown exception!"; *err_msg = to_pg_msg(err.str()); + *log_msg = to_pg_msg(log.str()); } } diff --git a/src/vroom/vroom_driver.cpp b/src/vroom/vroom_driver.cpp index e90e60782..bb0894790 100644 --- a/src/vroom/vroom_driver.cpp +++ b/src/vroom/vroom_driver.cpp @@ -112,6 +112,8 @@ vrp_do_vroom( using vrprouting::to_pg_msg; using vrprouting::free; + char* hint = nullptr; + std::ostringstream log; std::ostringstream err; std::ostringstream notice; @@ -228,41 +230,40 @@ vrp_do_vroom( (*return_count) = count; - pgassert(*err_msg == NULL); - *log_msg = log.str().empty()? - *log_msg : - to_pg_msg(log.str().c_str()); - *notice_msg = notice.str().empty()? - *notice_msg : - to_pg_msg(notice.str().c_str()); + pgassert(*err_msg == nullptr); + *log_msg = log.str().empty()? nullptr : to_pg_msg(log.str()); + *notice_msg = notice.str().empty()? nullptr : to_pg_msg(notice.str()); } catch (AssertFailedException &except) { - (*return_tuples) = free(*return_tuples); + if (*return_tuples) free(*return_tuples); + (*return_count) = 0; + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); + } catch (std::exception& except) { + if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.what(); - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); - } catch (const vroom::Exception &except) { - (*return_tuples) = free(*return_tuples); + *err_msg = to_pg_msg(except.what()); + *log_msg = to_pg_msg(log.str()); + } catch (const std::string &except) { + if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.message; - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); - } catch (std::string &except) { - (*return_tuples) = free(*return_tuples); + *err_msg = to_pg_msg(except); + *log_msg = hint? to_pg_msg(hint) : to_pg_msg(log.str()); + } catch (const std::pair& ex) { + if (*return_tuples) free(*return_tuples); (*return_count) = 0; - *err_msg = to_pg_msg(except.c_str()); - *log_msg = to_pg_msg(log.str().c_str()); - } catch (std::exception &except) { - (*return_tuples) = free(*return_tuples); + *err_msg = to_pg_msg(ex.first); + *log_msg = to_pg_msg(ex.second); + } catch (const std::pair& except) { + if (*return_tuples) free(*return_tuples); (*return_count) = 0; - err << except.what(); - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + log << "id = " << except.second; + *err_msg = to_pg_msg(except.first); + *log_msg = to_pg_msg(log.str()); } catch(...) { - (*return_tuples) = free(*return_tuples); + if (*return_tuples) free(*return_tuples); (*return_count) = 0; err << "Caught unknown exception!"; - *err_msg = to_pg_msg(err.str().c_str()); - *log_msg = to_pg_msg(log.str().c_str()); + *err_msg = to_pg_msg(err.str()); + *log_msg = to_pg_msg(log.str()); } } From 32c6a237120f7d9ceb4eae1fee21a3dfe035daed Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sat, 24 Aug 2024 20:31:48 -0600 Subject: [PATCH 02/14] using alloc, free, to_pg_msg in that order --- src/compatibleVehicles/compatibleVehicles_driver.cpp | 1 + src/optimize/optimize_driver.cpp | 1 + src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp | 1 + src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp | 1 + src/pickDeliver/pickDeliver_driver.cpp | 1 + src/vroom/vroom_driver.cpp | 2 +- 6 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/compatibleVehicles/compatibleVehicles_driver.cpp b/src/compatibleVehicles/compatibleVehicles_driver.cpp index ebaed1616..0ae7ed135 100644 --- a/src/compatibleVehicles/compatibleVehicles_driver.cpp +++ b/src/compatibleVehicles/compatibleVehicles_driver.cpp @@ -117,6 +117,7 @@ vrp_do_compatibleVehicles( char **notice_msg, char **err_msg) { using vrprouting::alloc; + using vrprouting::free; using vrprouting::to_pg_msg; char* hint = nullptr; diff --git a/src/optimize/optimize_driver.cpp b/src/optimize/optimize_driver.cpp index 136da61d2..e00bbe768 100644 --- a/src/optimize/optimize_driver.cpp +++ b/src/optimize/optimize_driver.cpp @@ -368,6 +368,7 @@ vrp_do_optimize( char **notice_msg, char **err_msg) { using vrprouting::alloc; + using vrprouting::free; using vrprouting::to_pg_msg; char* hint = nullptr; diff --git a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp index 92d7aa268..3db07267e 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp @@ -136,6 +136,7 @@ vrp_do_pgr_pickDeliverEuclidean( char **notice_msg, char **err_msg) { using vrprouting::alloc; + using vrprouting::free; using vrprouting::to_pg_msg; char* hint = nullptr; diff --git a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp index 9c9917a7e..101f996ad 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp @@ -93,6 +93,7 @@ vrp_do_pgr_pickDeliver( char **notice_msg, char **err_msg) { using vrprouting::alloc; + using vrprouting::free; using vrprouting::to_pg_msg; char* hint = nullptr; diff --git a/src/pickDeliver/pickDeliver_driver.cpp b/src/pickDeliver/pickDeliver_driver.cpp index 5f714ef5f..831c99dd3 100644 --- a/src/pickDeliver/pickDeliver_driver.cpp +++ b/src/pickDeliver/pickDeliver_driver.cpp @@ -125,6 +125,7 @@ vrp_do_pickDeliver( char **notice_msg, char **err_msg) { using vrprouting::alloc; + using vrprouting::free; using vrprouting::to_pg_msg; char* hint = nullptr; diff --git a/src/vroom/vroom_driver.cpp b/src/vroom/vroom_driver.cpp index bb0894790..7d2b918cf 100644 --- a/src/vroom/vroom_driver.cpp +++ b/src/vroom/vroom_driver.cpp @@ -109,8 +109,8 @@ vrp_do_vroom( char ** notice_msg, char ** err_msg) { using vrprouting::alloc; - using vrprouting::to_pg_msg; using vrprouting::free; + using vrprouting::to_pg_msg; char* hint = nullptr; From 9a1f4910f9afeebe0109e795e2feed258dd20f30 Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sat, 24 Aug 2024 20:47:46 -0600 Subject: [PATCH 03/14] Include in alphabetical order --- .../compatibleVehicles_driver.cpp | 15 +++++++------ src/optimize/optimize_driver.cpp | 21 +++++++++---------- .../pgr_pickDeliverEuclidean_driver.cpp | 11 +++++----- .../pgr_pickDeliver_driver.cpp | 16 +++++++------- src/pickDeliver/pickDeliver_driver.cpp | 15 ++++++------- src/vroom/vroom_driver.cpp | 15 ++++++------- 6 files changed, 47 insertions(+), 46 deletions(-) diff --git a/src/compatibleVehicles/compatibleVehicles_driver.cpp b/src/compatibleVehicles/compatibleVehicles_driver.cpp index 0ae7ed135..1672eee41 100644 --- a/src/compatibleVehicles/compatibleVehicles_driver.cpp +++ b/src/compatibleVehicles/compatibleVehicles_driver.cpp @@ -24,25 +24,24 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ -/** @file */ - #include "drivers/compatibleVehicles_driver.h" -#include +#include #include #include -#include -#include "problem/pickDeliver.hpp" -#include "problem/matrix.hpp" -#include "cpp_common/orders_t.hpp" #include "c_types/compatibleVehicles_rt.h" -#include "cpp_common/vehicle_t.hpp" #include "cpp_common/assert.hpp" #include "cpp_common/alloc.hpp" +#include "cpp_common/orders_t.hpp" +#include "cpp_common/vehicle_t.hpp" +#include "problem/pickDeliver.hpp" +#include "problem/matrix.hpp" + + /** * * @param[in] customers_arr A C Array of pickup and dropoff orders diff --git a/src/optimize/optimize_driver.cpp b/src/optimize/optimize_driver.cpp index e00bbe768..754c66cbf 100644 --- a/src/optimize/optimize_driver.cpp +++ b/src/optimize/optimize_driver.cpp @@ -25,30 +25,29 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ -/** @file */ - #include "drivers/optimize_driver.h" -#include +#include #include #include -#include #include -#include +#include -#include "problem/pickDeliver.hpp" -#include "cpp_common/orders_t.hpp" #include "c_types/short_vehicle_rt.h" -#include "cpp_common/vehicle_t.hpp" -#include "problem/matrix.hpp" +#include "cpp_common/alloc.hpp" #include "cpp_common/assert.hpp" +#include "cpp_common/interruption.hpp" #include "cpp_common/messages.hpp" + +#include "cpp_common/orders_t.hpp" +#include "cpp_common/vehicle_t.hpp" + #include "initialsol/tabu.hpp" #include "optimizers/tabu.hpp" -#include "cpp_common/alloc.hpp" -#include "cpp_common/interruption.hpp" +#include "problem/matrix.hpp" +#include "problem/pickDeliver.hpp" namespace { diff --git a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp index 3db07267e..93bbd2779 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp @@ -25,24 +25,25 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ - #include "drivers/pgr_pickDeliverEuclidean_driver.h" +#include #include -#include #include -#include +#include #include #include -#include "cpp_common/orders_t.hpp" #include "c_types/solution_rt.h" + #include "cpp_common/alloc.hpp" #include "cpp_common/assert.hpp" -#include "problem/matrix.hpp" +#include "cpp_common/orders_t.hpp" +#include "cpp_common/vehicle_t.hpp" #include "initialsol/simple.hpp" #include "optimizers/simple.hpp" +#include "problem/matrix.hpp" #include "problem/pickDeliver.hpp" namespace { diff --git a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp index 101f996ad..81828ff98 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp @@ -25,27 +25,27 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ - #include "drivers/pgr_pickDeliver_driver.h" -#include +#include #include #include -#include #include #include -#include "cpp_common/orders_t.hpp" #include "c_types/solution_rt.h" + #include "cpp_common/alloc.hpp" #include "cpp_common/assert.hpp" -#include "problem/solution.hpp" -#include "initialsol/simple.hpp" -#include "optimizers/simple.hpp" -#include "problem/pickDeliver.hpp" +#include "cpp_common/orders_t.hpp" #include "initialsol/initials_code.hpp" +#include "initialsol/simple.hpp" +#include "optimizers/simple.hpp" #include "problem/matrix.hpp" +#include "problem/pickDeliver.hpp" +#include "problem/solution.hpp" + namespace { vrprouting::problem::Solution diff --git a/src/pickDeliver/pickDeliver_driver.cpp b/src/pickDeliver/pickDeliver_driver.cpp index 831c99dd3..fadb1d9cc 100644 --- a/src/pickDeliver/pickDeliver_driver.cpp +++ b/src/pickDeliver/pickDeliver_driver.cpp @@ -30,21 +30,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "drivers/pickDeliver_driver.h" -#include +#include #include #include -#include -#include "problem/pickDeliver.hpp" -#include "cpp_common/orders_t.hpp" #include "c_types/solution_rt.h" -#include "cpp_common/vehicle_t.hpp" -#include "problem/matrix.hpp" +#include "cpp_common/alloc.hpp" #include "cpp_common/assert.hpp" + +#include "cpp_common/orders_t.hpp" +#include "cpp_common/vehicle_t.hpp" #include "initialsol/tabu.hpp" #include "optimizers/tabu.hpp" -#include "cpp_common/alloc.hpp" +#include "problem/matrix.hpp" +#include "problem/pickDeliver.hpp" + /** * diff --git a/src/vroom/vroom_driver.cpp b/src/vroom/vroom_driver.cpp index 7d2b918cf..e870d267e 100644 --- a/src/vroom/vroom_driver.cpp +++ b/src/vroom/vroom_driver.cpp @@ -27,23 +27,24 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "drivers/vroom_driver.h" -#include -#include #include -#include -#include #include - -#include "vroom/vroom.hpp" +#include +#include +#include +#include #include "c_types/vroom_rt.h" + #include "cpp_common/alloc.hpp" #include "cpp_common/assert.hpp" + #include "cpp_common/identifiers.hpp" +#include "cpp_common/vroom_job_t.hpp" #include "cpp_common/vroom_matrix.hpp" #include "cpp_common/vroom_vehicle_t.hpp" #include "cpp_common/vroom_shipment_t.hpp" -#include "cpp_common/vroom_job_t.hpp" +#include "vroom/vroom.hpp" /** @file vroom_driver.cpp * @brief Handles actual calling of function in the `vrp_vroom.hpp` file. From 4393957403e48096bbd91bdf2a4cf2bff13b70c1 Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sat, 24 Aug 2024 20:49:04 -0600 Subject: [PATCH 04/14] Include in alphabetical order --- src/compatibleVehicles/compatibleVehicles_driver.cpp | 1 + src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compatibleVehicles/compatibleVehicles_driver.cpp b/src/compatibleVehicles/compatibleVehicles_driver.cpp index 1672eee41..9a40ed81f 100644 --- a/src/compatibleVehicles/compatibleVehicles_driver.cpp +++ b/src/compatibleVehicles/compatibleVehicles_driver.cpp @@ -30,6 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include +#include #include "c_types/compatibleVehicles_rt.h" diff --git a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp index 93bbd2779..a3ee2e046 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp @@ -32,7 +32,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include -#include #include "c_types/solution_rt.h" From 735ea87dc7d4c617ddb4eaab148970e4384253a4 Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sat, 24 Aug 2024 20:58:29 -0600 Subject: [PATCH 05/14] Removing unused code, marking TODO some unknown --- .../compatibleVehicles_driver.cpp | 4 +- .../pgr_pickDeliverEuclidean_driver.cpp | 20 ++-------- .../pgr_pickDeliver_driver.cpp | 23 +++-------- src/pickDeliver/pickDeliver_driver.cpp | 40 +++++++------------ 4 files changed, 27 insertions(+), 60 deletions(-) diff --git a/src/compatibleVehicles/compatibleVehicles_driver.cpp b/src/compatibleVehicles/compatibleVehicles_driver.cpp index 9a40ed81f..703508723 100644 --- a/src/compatibleVehicles/compatibleVehicles_driver.cpp +++ b/src/compatibleVehicles/compatibleVehicles_driver.cpp @@ -159,7 +159,8 @@ vrp_do_compatibleVehicles( matrix_cells_arr, total_cells, multipliers_arr, total_multipliers, node_ids, static_cast(factor)); -#if 0 + +#ifdef TODO /* * Verify matrix triangle inequality */ @@ -172,6 +173,7 @@ vrp_do_compatibleVehicles( } } #endif + if (!cost_matrix.has_no_infinity()) { err << "An Infinity value was found on the Matrix"; *err_msg = to_pg_msg(err.str()); diff --git a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp index a3ee2e046..4b41c4e24 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp @@ -224,22 +224,10 @@ vrp_do_pgr_pickDeliverEuclidean( log << pd_problem.msg.get_log(); log << "Finish Reading data\n"; -#if 0 - try { -#endif - auto sol = get_initial_solution(&pd_problem, initial_solution_id); - using Optimize = vrprouting::optimizers::simple::Optimize; - using Initials_code = vrprouting::initialsol::simple::Initials_code; - sol = Optimize(sol, static_cast(max_cycles), (Initials_code)initial_solution_id); -#if 0 - } catch (AssertFailedException &except) { - log << pd_problem.msg.get_log(); - throw; - } catch(...) { - log << "Caught unknown exception!"; - throw; - } -#endif + auto sol = get_initial_solution(&pd_problem, initial_solution_id); + using Optimize = vrprouting::optimizers::simple::Optimize; + using Initials_code = vrprouting::initialsol::simple::Initials_code; + sol = Optimize(sol, static_cast(max_cycles), (Initials_code)initial_solution_id); log << pd_problem.msg.get_log(); log << "Finish solve\n"; diff --git a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp index 81828ff98..1ccab47a7 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp @@ -145,7 +145,7 @@ vrp_do_pgr_pickDeliver( node_ids, static_cast(factor)); -#if 0 +#ifdef TODO auto depot_node = vehicles[0].start_node_id; /* @@ -201,23 +201,10 @@ vrp_do_pgr_pickDeliver( log << "Finish Reading data\n"; pd_problem.msg.clear(); -#if 0 - try { -#endif - using Initials_code = vrprouting::initialsol::simple::Initials_code; - auto sol = get_initial_solution(&pd_problem, initial_solution_id); - using Optimize = vrprouting::optimizers::simple::Optimize; - sol = Optimize(sol, static_cast(max_cycles), (Initials_code)initial_solution_id); -#if 0 - } catch (AssertFailedException &except) { - log << pd_problem.msg.get_log(); - pd_problem.msg.clear(); - throw; - } catch(...) { - log << "Caught unknown exception!"; - throw; - } -#endif + using Initials_code = vrprouting::initialsol::simple::Initials_code; + auto sol = get_initial_solution(&pd_problem, initial_solution_id); + using Optimize = vrprouting::optimizers::simple::Optimize; + sol = Optimize(sol, static_cast(max_cycles), (Initials_code)initial_solution_id); log << pd_problem.msg.get_log(); log << "Finish solve\n"; diff --git a/src/pickDeliver/pickDeliver_driver.cpp b/src/pickDeliver/pickDeliver_driver.cpp index fadb1d9cc..537c4b35a 100644 --- a/src/pickDeliver/pickDeliver_driver.cpp +++ b/src/pickDeliver/pickDeliver_driver.cpp @@ -182,7 +182,7 @@ vrp_do_pickDeliver( matrix_cells_arr, total_cells, multipliers_arr, total_multipliers, node_ids, static_cast(factor)); -#if 1 + /* * Verify matrix triangle inequality */ @@ -194,7 +194,7 @@ vrp_do_pickDeliver( log << "[pickDeliver] Matrix Still does not obey triangle inequality "; } } -#endif + /* * Verify matrix cells preconditions */ @@ -229,29 +229,19 @@ vrp_do_pickDeliver( log << "Finish Initialize problem\n"; -#if 0 - try { -#endif - /* - * get initial solutions - */ - using Initial_solution = vrprouting::initialsol::tabu::Initial_solution; - using Solution = vrprouting::problem::Solution; - auto sol = static_cast(Initial_solution(execution_date, optimize, &pd_problem)); - /* - * Solve (optimize) - */ - using Optimize = vrprouting::optimizers::tabu::Optimize; - sol = Optimize(sol, static_cast(max_cycles), stop_on_all_served, optimize); -#if 0 - } catch (AssertFailedException &except) { - log << pd_problem.msg.get_log(); - throw; - } catch(...) { - log << "Caught unknown exception!"; - throw; - } -#endif + /* + * get initial solutions + */ + using Initial_solution = vrprouting::initialsol::tabu::Initial_solution; + using Solution = vrprouting::problem::Solution; + auto sol = static_cast(Initial_solution(execution_date, optimize, &pd_problem)); + + /* + * Solve (optimize) + */ + using Optimize = vrprouting::optimizers::tabu::Optimize; + sol = Optimize(sol, static_cast(max_cycles), stop_on_all_served, optimize); + log << pd_problem.msg.get_log(); pd_problem.msg.clear(); From 7428a463daf5b2659b522c17d7d898e35a811a2c Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sat, 24 Aug 2024 21:24:48 -0600 Subject: [PATCH 06/14] simplify cycle variables --- .../compatibleVehicles_driver.cpp | 10 ++++--- src/optimize/optimize_driver.cpp | 18 ++++++----- .../pgr_pickDeliverEuclidean_driver.cpp | 30 +++++++++---------- .../pgr_pickDeliver_driver.cpp | 13 ++++---- src/pickDeliver/pickDeliver_driver.cpp | 13 ++++---- src/vroom/vroom_driver.cpp | 18 ++++++----- 6 files changed, 55 insertions(+), 47 deletions(-) diff --git a/src/compatibleVehicles/compatibleVehicles_driver.cpp b/src/compatibleVehicles/compatibleVehicles_driver.cpp index 703508723..c3dd6a1c1 100644 --- a/src/compatibleVehicles/compatibleVehicles_driver.cpp +++ b/src/compatibleVehicles/compatibleVehicles_driver.cpp @@ -143,13 +143,15 @@ vrp_do_compatibleVehicles( Identifiers node_ids; for (size_t i = 0; i < total_customers; ++i) { - node_ids += customers_arr[i].pick_node_id; - node_ids += customers_arr[i].deliver_node_id; + auto o = customers_arr[i]; + node_ids += o.pick_node_id; + node_ids += o.deliver_node_id; } for (size_t i = 0; i < total_vehicles; ++i) { - node_ids += vehicles_arr[i].start_node_id; - node_ids += vehicles_arr[i].end_node_id; + auto v = vehicles_arr[i]; + node_ids += v.start_node_id; + node_ids += v.end_node_id; } /* diff --git a/src/optimize/optimize_driver.cpp b/src/optimize/optimize_driver.cpp index 754c66cbf..bc44f54d2 100644 --- a/src/optimize/optimize_driver.cpp +++ b/src/optimize/optimize_driver.cpp @@ -124,10 +124,11 @@ processing_times_by_shipment( ) { Identifiers processing_times; for (size_t i = 0; i < total_shipments; ++i) { - processing_times += shipments_arr[i].pick_open_t; - processing_times += shipments_arr[i].pick_close_t; - processing_times += shipments_arr[i].deliver_open_t; - processing_times += shipments_arr[i].deliver_close_t; + auto o = shipments_arr[i]; + processing_times += o.pick_open_t; + processing_times += o.pick_close_t; + processing_times += o.deliver_open_t; + processing_times += o.deliver_close_t; } return processing_times; } @@ -145,10 +146,11 @@ processing_times_by_vehicle( ) { Identifiers processing_times; for (size_t i = 0; i < total_vehicles; ++i) { - processing_times += vehicles_arr[i].start_open_t; - processing_times += vehicles_arr[i].start_close_t; - processing_times += vehicles_arr[i].end_open_t; - processing_times += vehicles_arr[i].end_close_t; + auto v = vehicles_arr[i]; + processing_times += v.start_open_t; + processing_times += v.start_close_t; + processing_times += v.end_open_t; + processing_times += v.end_close_t; } return processing_times; } diff --git a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp index 4b41c4e24..c7c5fc0bb 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp @@ -82,33 +82,34 @@ are_shipments_ok( * - d_open <= d_close */ for (size_t i = 0; i < total_customers; ++i) { - if (customers_arr[i].demand == 0) { + auto o = customers_arr[i]; + if (o.demand == 0) { *err_string = "Unexpected zero value found on column 'demand' of shipments"; - *hint_string = "Check shipment id #:" + std::to_string(customers_arr[i].id); + *hint_string = "Check shipment id #:" + std::to_string(o.id); return false; } - if (customers_arr[i].pick_service_t < 0) { + if (o.pick_service_t < 0) { *err_string = "Unexpected negative value found on column 'p_service_t' of shipments"; - *hint_string = "Check shipment id #:" + std::to_string(customers_arr[i].id); + *hint_string = "Check shipment id #:" + std::to_string(o.id); return false; } - if (customers_arr[i].deliver_service_t < 0) { + if (o.deliver_service_t < 0) { *err_string = "Unexpected negative value found on column 'd_service_t' of shipments"; - *hint_string = "Check shipment id #:" + std::to_string(customers_arr[i].id); + *hint_string = "Check shipment id #:" + std::to_string(o.id); return false; } - if (customers_arr[i].pick_open_t > customers_arr[i].pick_close_t) { + if (o.pick_open_t > o.pick_close_t) { *err_string = "Unexpected pickup time windows found on shipments"; - *hint_string = "Check shipment id #:" + std::to_string(customers_arr[i].id); + *hint_string = "Check shipment id #:" + std::to_string(o.id); return false; } - if (customers_arr[i].deliver_open_t > customers_arr[i].deliver_close_t) { + if (o.deliver_open_t > o.deliver_close_t) { *err_string = "Unexpected delivery time windows found on shipments"; - *hint_string = "Check shipment id #:" + std::to_string(customers_arr[i].id); + *hint_string = "Check shipment id #:" + std::to_string(o.id); return false; } } @@ -192,12 +193,11 @@ vrp_do_pgr_pickDeliverEuclidean( } for (size_t i = 0; i < total_customers; ++i) { - customers_arr[i].pick_node_id = - matrix_data[std::pair(customers_arr[i].pick_x, customers_arr[i].pick_y)]; - - customers_arr[i].deliver_node_id = - matrix_data[std::pair(customers_arr[i].deliver_x, customers_arr[i].deliver_y)]; + auto &o = customers_arr[i]; + o.pick_node_id = matrix_data[std::pair(o.pick_x, o.pick_y)]; + o.deliver_node_id = matrix_data[std::pair(o.deliver_x, o.deliver_y)]; } + for (auto &v : vehicles) { v.start_node_id = matrix_data[std::pair(v.start_x, v.start_y)]; v.end_node_id = matrix_data[std::pair(v.end_x, v.end_y)]; diff --git a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp index 1ccab47a7..1a6c713e3 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp @@ -120,15 +120,16 @@ vrp_do_pgr_pickDeliver( Identifiers order_ids; for (size_t i = 0; i < total_customers; ++i) { - node_ids += customers_arr[i].pick_node_id; - node_ids += customers_arr[i].deliver_node_id; - order_ids += customers_arr[i].id; + auto o = customers_arr[i]; + node_ids += o.pick_node_id; + node_ids += o.deliver_node_id; + order_ids += o.id; } for (size_t i = 0; i < total_vehicles; ++i) { - auto vehicle = vehicles_arr[i]; - node_ids += vehicle.start_node_id; - node_ids += vehicle.end_node_id; + auto v = vehicles_arr[i]; + node_ids += v.start_node_id; + node_ids += v.end_node_id; } log << node_ids; diff --git a/src/pickDeliver/pickDeliver_driver.cpp b/src/pickDeliver/pickDeliver_driver.cpp index 537c4b35a..4eae03469 100644 --- a/src/pickDeliver/pickDeliver_driver.cpp +++ b/src/pickDeliver/pickDeliver_driver.cpp @@ -162,14 +162,15 @@ vrp_do_pickDeliver( bool missing = false; for (size_t i = 0; i < total_vehicles; ++i) { - auto vehicle = vehicles_arr[i]; - node_ids += vehicle.start_node_id; - node_ids += vehicle.end_node_id; - for (size_t j = 0; j < vehicle.stops_size; ++j) { - if (!order_ids.has(vehicle.stops[j])) { + auto v = vehicles_arr[i]; + node_ids += v.start_node_id; + node_ids += v.end_node_id; + for (size_t j = 0; j < v.stops_size; ++j) { + auto s = v.stops[j]; + if (!order_ids.has(s)) { if (!missing) err << "Order in 'stops' information missing"; missing = true; - err << "Missing information of order " << vehicle.stops[j] << "\n"; + err << "Missing information of order " << s << "\n"; } } if (missing) { diff --git a/src/vroom/vroom_driver.cpp b/src/vroom/vroom_driver.cpp index e870d267e..9de3eadde 100644 --- a/src/vroom/vroom_driver.cpp +++ b/src/vroom/vroom_driver.cpp @@ -142,21 +142,23 @@ vrp_do_vroom( } for (size_t i = 0; i < total_shipments; ++i) { - location_ids += shipments[i].p_location_id; - location_ids += shipments[i].d_location_id; + auto s = shipments[i]; + location_ids += s.p_location_id; + location_ids += s.d_location_id; } double min_speed_factor, max_speed_factor; min_speed_factor = max_speed_factor = vehicles[0].speed_factor; for (size_t i = 0; i < total_vehicles; ++i) { - min_speed_factor = std::min(min_speed_factor, vehicles[i].speed_factor); - max_speed_factor = std::max(max_speed_factor, vehicles[i].speed_factor); - if (vehicles[i].start_id != -1) { - location_ids += vehicles[i].start_id; + auto v = vehicles[i]; + min_speed_factor = std::min(min_speed_factor, v.speed_factor); + max_speed_factor = std::max(max_speed_factor, v.speed_factor); + if (v.start_id != -1) { + location_ids += v.start_id; } - if (vehicles[i].end_id != -1) { - location_ids += vehicles[i].end_id; + if (v.end_id != -1) { + location_ids += v.end_id; } } From 180051762b444edf2dc7782a4bd51faa434ac836 Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sat, 24 Aug 2024 21:30:56 -0600 Subject: [PATCH 07/14] convinient to make on line from many --- src/optimize/optimize_driver.cpp | 12 +++--------- .../pgr_pickDeliverEuclidean_driver.cpp | 7 ++----- src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp | 17 ++++------------- 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/src/optimize/optimize_driver.cpp b/src/optimize/optimize_driver.cpp index bc44f54d2..8be54f315 100644 --- a/src/optimize/optimize_driver.cpp +++ b/src/optimize/optimize_driver.cpp @@ -119,9 +119,7 @@ one_processing( * @returns processing times */ Identifiers -processing_times_by_shipment( - Orders_t *shipments_arr, size_t total_shipments - ) { +processing_times_by_shipment(Orders_t *shipments_arr, size_t total_shipments) { Identifiers processing_times; for (size_t i = 0; i < total_shipments; ++i) { auto o = shipments_arr[i]; @@ -141,9 +139,7 @@ processing_times_by_shipment( * @returns processing times */ Identifiers -processing_times_by_vehicle( - Vehicle_t *vehicles_arr, size_t total_vehicles - ) { +processing_times_by_vehicle(Vehicle_t *vehicles_arr, size_t total_vehicles) { Identifiers processing_times; for (size_t i = 0; i < total_vehicles; ++i) { auto v = vehicles_arr[i]; @@ -163,9 +159,7 @@ processing_times_by_vehicle( * @returns (vehicle id, stops vector) pair which hold the stops structure */ std::vector -get_initial_stops( - Vehicle_t *vehicles_arr, size_t total_vehicles - ) { +get_initial_stops(Vehicle_t *vehicles_arr, size_t total_vehicles) { std::vector the_stops; for (size_t i = 0; i < total_vehicles; ++i) { std::vector stops; diff --git a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp index c7c5fc0bb..6d8b0c8ed 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp @@ -120,11 +120,8 @@ are_shipments_ok( void vrp_do_pgr_pickDeliverEuclidean( - Orders_t *customers_arr, - size_t total_customers, - - Vehicle_t *vehicles_arr, - size_t total_vehicles, + Orders_t *customers_arr, size_t total_customers, + Vehicle_t *vehicles_arr, size_t total_vehicles, double factor, int max_cycles, diff --git a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp index 1a6c713e3..e03740ab3 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp @@ -73,14 +73,9 @@ vrprouting::problem::Solution void vrp_do_pgr_pickDeliver( - struct Orders_t customers_arr[], - size_t total_customers, - - Vehicle_t *vehicles_arr, - size_t total_vehicles, - - Matrix_cell_t *matrix_cells_arr, - size_t total_cells, + struct Orders_t customers_arr[], size_t total_customers, + Vehicle_t *vehicles_arr, size_t total_vehicles, + Matrix_cell_t *matrix_cells_arr, size_t total_cells, double factor, int max_cycles, @@ -140,11 +135,7 @@ vrp_do_pgr_pickDeliver( std::vector vehicles( vehicles_arr, vehicles_arr + total_vehicles); - vrprouting::problem::Matrix time_matrix( - matrix_cells_arr, - total_cells, - node_ids, - static_cast(factor)); + vrprouting::problem::Matrix matrix(matrix_cells_arr, total_cells, node_ids, static_cast(factor)); #ifdef TODO auto depot_node = vehicles[0].start_node_id; From 50c55d69211badd49e3d73ff2cf2db1613104e78 Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sat, 24 Aug 2024 21:55:30 -0600 Subject: [PATCH 08/14] convinient to make on line from many --- src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp index e03740ab3..8124a91ce 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp @@ -135,7 +135,7 @@ vrp_do_pgr_pickDeliver( std::vector vehicles( vehicles_arr, vehicles_arr + total_vehicles); - vrprouting::problem::Matrix matrix(matrix_cells_arr, total_cells, node_ids, static_cast(factor)); + vrprouting::problem::Matrix time_matrix(matrix_cells_arr, total_cells, node_ids, static_cast(factor)); #ifdef TODO auto depot_node = vehicles[0].start_node_id; From 04866c131c6df704a978c58a2510e3e73742fd74 Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sat, 24 Aug 2024 21:56:02 -0600 Subject: [PATCH 09/14] formatting, msgs simplification --- src/optimize/optimize_driver.cpp | 1 + .../pgr_pickDeliverEuclidean_driver.cpp | 13 ++--- .../pgr_pickDeliver_driver.cpp | 50 +++++++++---------- src/vroom/vroom_driver.cpp | 2 +- 4 files changed, 31 insertions(+), 35 deletions(-) diff --git a/src/optimize/optimize_driver.cpp b/src/optimize/optimize_driver.cpp index 8be54f315..80e613986 100644 --- a/src/optimize/optimize_driver.cpp +++ b/src/optimize/optimize_driver.cpp @@ -42,6 +42,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "cpp_common/messages.hpp" #include "cpp_common/orders_t.hpp" +#include "cpp_common/short_vehicle.hpp" #include "cpp_common/vehicle_t.hpp" #include "initialsol/tabu.hpp" diff --git a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp index 6d8b0c8ed..756ff54da 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp @@ -147,9 +147,10 @@ vrp_do_pgr_pickDeliverEuclidean( *return_count = 0; std::string err_string; std::string hint_string; + if (!are_shipments_ok(customers_arr, total_customers, &err_string, &hint_string)) { - *err_msg = to_pg_msg(err_string.c_str()); - *log_msg = to_pg_msg(hint_string.c_str()); + *err_msg = to_pg_msg(err_string); + *log_msg = to_pg_msg(hint_string); return; } @@ -210,12 +211,8 @@ vrp_do_pgr_pickDeliverEuclidean( err << pd_problem.msg.get_error(); if (!err.str().empty()) { - log.str(""); - log.clear(); - log << pd_problem.msg.get_error(); - log << pd_problem.msg.get_log(); - *log_msg = to_pg_msg(log.str().c_str()); - *err_msg = to_pg_msg(err.str().c_str()); + *err_msg = to_pg_msg(pd_problem.msg.get_error()); + *log_msg = to_pg_msg(pd_problem.msg.get_log()); return; } log << pd_problem.msg.get_log(); diff --git a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp index 8124a91ce..8ae8c2e34 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp @@ -46,29 +46,30 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "problem/pickDeliver.hpp" #include "problem/solution.hpp" +namespace { -namespace { vrprouting::problem::Solution - get_initial_solution(vrprouting::problem::PickDeliver* problem_ptr, int m_initial_id) { - using Solution = vrprouting::problem::Solution; - using Initial_solution = vrprouting::initialsol::simple::Initial_solution; - using Initials_code = vrprouting::initialsol::simple::Initials_code; - Solution m_solutions(problem_ptr); - if (m_initial_id == 0) { - for (int i = 1; i < 7; ++i) { - if (i == 1) { - m_solutions = Initial_solution((Initials_code)i, problem_ptr); - } else { - auto new_sol = Initial_solution((Initials_code)i, problem_ptr); - m_solutions = (new_sol < m_solutions)? new_sol : m_solutions; - } +get_initial_solution(vrprouting::problem::PickDeliver* problem_ptr, int m_initial_id) { + using Solution = vrprouting::problem::Solution; + using Initial_solution = vrprouting::initialsol::simple::Initial_solution; + using Initials_code = vrprouting::initialsol::simple::Initials_code; + Solution m_solutions(problem_ptr); + if (m_initial_id == 0) { + for (int i = 1; i < 7; ++i) { + if (i == 1) { + m_solutions = Initial_solution((Initials_code)i, problem_ptr); + } else { + auto new_sol = Initial_solution((Initials_code)i, problem_ptr); + m_solutions = (new_sol < m_solutions)? new_sol : m_solutions; } - } else { - m_solutions = Initial_solution((Initials_code)m_initial_id, problem_ptr); } - - return m_solutions; + } else { + m_solutions = Initial_solution((Initials_code)m_initial_id, problem_ptr); } + + return m_solutions; +} + } // namespace void @@ -105,8 +106,6 @@ vrp_do_pgr_pickDeliver( pgassert(total_vehicles); pgassert(*return_count == 0); pgassert(!(*return_tuples)); - log << "do_pgr_pickDeliver\n"; - *return_tuples = nullptr; *return_count = 0; @@ -150,7 +149,7 @@ vrp_do_pgr_pickDeliver( for (const auto &v : vehicles) { if (v.start_node_id != depot_node && v.end_node_id != depot_node) { err << "All vehicles must depart & arrive to same node"; - *err_msg = to_pg_msg(err.str().c_str()); + *err_msg = to_pg_msg(err.str()); return; } } @@ -161,7 +160,7 @@ vrp_do_pgr_pickDeliver( for (size_t i = 0; i < total_customers; ++i) { if (customers_arr[i].pick_node_id != depot_node) { err << "All orders must be picked at depot"; - *err_msg = to_pg_msg(err.str().c_str()); + *err_msg = to_pg_msg(err.str()); return; } } @@ -170,7 +169,7 @@ vrp_do_pgr_pickDeliver( if (!time_matrix.has_no_infinity()) { err << "An Infinity value was found on the Matrix. Might be missing information of a node"; - *err_msg = to_pg_msg(err.str().c_str()); + *err_msg = to_pg_msg(err.str()); return; } @@ -184,9 +183,8 @@ vrp_do_pgr_pickDeliver( err << pd_problem.msg.get_error(); if (!err.str().empty()) { - log << pd_problem.msg.get_log(); - *log_msg = to_pg_msg(log.str().c_str()); - *err_msg = to_pg_msg(err.str().c_str()); + *err_msg = to_pg_msg(pd_problem.msg.get_error()); + *log_msg = to_pg_msg(pd_problem.msg.get_log()); return; } log << pd_problem.msg.get_log(); diff --git a/src/vroom/vroom_driver.cpp b/src/vroom/vroom_driver.cpp index 9de3eadde..c88fcce68 100644 --- a/src/vroom/vroom_driver.cpp +++ b/src/vroom/vroom_driver.cpp @@ -222,7 +222,7 @@ vrp_do_vroom( notice << "No results found"; *notice_msg = notice.str().empty()? *notice_msg : - to_pg_msg(notice.str().c_str()); + to_pg_msg(notice.str()); return; } From 9d8dc1857dd8763eb4e9ec154acba336d0299b1a Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sat, 24 Aug 2024 22:01:52 -0600 Subject: [PATCH 10/14] Some cleanup and variable renaming --- src/optimize/optimize_driver.cpp | 3 --- .../pgr_pickDeliverEuclidean_driver.cpp | 12 ++++++++---- src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp | 10 +++------- src/pickDeliver/pickDeliver_driver.cpp | 3 --- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/optimize/optimize_driver.cpp b/src/optimize/optimize_driver.cpp index 80e613986..dc503f84a 100644 --- a/src/optimize/optimize_driver.cpp +++ b/src/optimize/optimize_driver.cpp @@ -385,9 +385,6 @@ vrp_do_optimize( pgassert(*return_count == 0); pgassert(!(*return_tuples)); - *return_tuples = nullptr; - *return_count = 0; - Identifiers node_ids; Identifiers shipments_in_stops; diff --git a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp index 756ff54da..d1494423d 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp @@ -143,8 +143,12 @@ vrp_do_pgr_pickDeliverEuclidean( std::ostringstream notice; std::ostringstream err; try { - *return_tuples = nullptr; - *return_count = 0; + pgassert(!(*log_msg)); + pgassert(!(*notice_msg)); + pgassert(!(*err_msg)); + pgassert(*return_count == 0); + pgassert(!(*return_tuples)); + std::string err_string; std::string hint_string; @@ -201,13 +205,13 @@ vrp_do_pgr_pickDeliverEuclidean( v.end_node_id = matrix_data[std::pair(v.end_x, v.end_y)]; } - vrprouting::problem::Matrix cost_matrix(matrix_data, static_cast(factor)); + vrprouting::problem::Matrix matrix(matrix_data, static_cast(factor)); log << "Initialize problem\n"; vrprouting::problem::PickDeliver pd_problem( customers_arr, total_customers, vehicles_arr, total_vehicles, - cost_matrix); + matrix); err << pd_problem.msg.get_error(); if (!err.str().empty()) { diff --git a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp index 8ae8c2e34..1a0248e13 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliver_driver.cpp @@ -107,8 +107,6 @@ vrp_do_pgr_pickDeliver( pgassert(*return_count == 0); pgassert(!(*return_tuples)); - *return_tuples = nullptr; - *return_count = 0; Identifiers node_ids; Identifiers order_ids; @@ -134,7 +132,7 @@ vrp_do_pgr_pickDeliver( std::vector vehicles( vehicles_arr, vehicles_arr + total_vehicles); - vrprouting::problem::Matrix time_matrix(matrix_cells_arr, total_cells, node_ids, static_cast(factor)); + vrprouting::problem::Matrix matrix(matrix_cells_arr, total_cells, node_ids, static_cast(factor)); #ifdef TODO auto depot_node = vehicles[0].start_node_id; @@ -167,19 +165,17 @@ vrp_do_pgr_pickDeliver( } #endif - if (!time_matrix.has_no_infinity()) { + if (!matrix.has_no_infinity()) { err << "An Infinity value was found on the Matrix. Might be missing information of a node"; *err_msg = to_pg_msg(err.str()); return; } - // TODO(vicky) wrap with a try and make a throw??? - // tried it is already wrapped log << "Initialize problem\n"; vrprouting::problem::PickDeliver pd_problem( customers_arr, total_customers, vehicles_arr, total_vehicles, - time_matrix); + matrix); err << pd_problem.msg.get_error(); if (!err.str().empty()) { diff --git a/src/pickDeliver/pickDeliver_driver.cpp b/src/pickDeliver/pickDeliver_driver.cpp index 4eae03469..05ed6c128 100644 --- a/src/pickDeliver/pickDeliver_driver.cpp +++ b/src/pickDeliver/pickDeliver_driver.cpp @@ -148,9 +148,6 @@ vrp_do_pickDeliver( pgassert(!(*return_tuples)); log << "do_pickDeliver\n"; - *return_tuples = nullptr; - *return_count = 0; - Identifiers node_ids; Identifiers order_ids; From b33fcd04db515a16856bb1e995d3213b9822cb6a Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sun, 25 Aug 2024 09:29:03 -0600 Subject: [PATCH 11/14] Some formatting changes --- doxygen/Doxyfile.in | 2 +- .../compatibleVehicles_driver.cpp | 34 ++++++------------- src/optimize/optimize_driver.cpp | 12 +++---- .../pgr_pickDeliverEuclidean_driver.cpp | 1 + src/pickDeliver/pickDeliver_driver.cpp | 14 +++----- src/vroom/vroom_driver.cpp | 19 +++++------ 6 files changed, 32 insertions(+), 50 deletions(-) diff --git a/doxygen/Doxyfile.in b/doxygen/Doxyfile.in index 7dc98cdee..5fef661bf 100644 --- a/doxygen/Doxyfile.in +++ b/doxygen/Doxyfile.in @@ -836,7 +836,7 @@ WARN_FORMAT = "$file:$line: $text" # messages should be written. If left blank the output is written to standard # error (stderr). -WARN_LOGFILE = @CMAKE_CURRENT_BIN_DIR@/LOG +WARN_LOGFILE = @CMAKE_CURRENT_BINARY_DIR@/LOG #--------------------------------------------------------------------------- # Configuration options related to the input files diff --git a/src/compatibleVehicles/compatibleVehicles_driver.cpp b/src/compatibleVehicles/compatibleVehicles_driver.cpp index c3dd6a1c1..19ec45729 100644 --- a/src/compatibleVehicles/compatibleVehicles_driver.cpp +++ b/src/compatibleVehicles/compatibleVehicles_driver.cpp @@ -34,15 +34,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "c_types/compatibleVehicles_rt.h" -#include "cpp_common/assert.hpp" #include "cpp_common/alloc.hpp" +#include "cpp_common/assert.hpp" #include "cpp_common/orders_t.hpp" #include "cpp_common/vehicle_t.hpp" #include "problem/pickDeliver.hpp" #include "problem/matrix.hpp" - /** * * @param[in] customers_arr A C Array of pickup and dropoff orders @@ -54,6 +53,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * @param[in] multipliers_arr A C Array of the multipliers * @param[in] total_multipliers size of the multipliers_arr * @param[in] factor A global multiplier for the (time) matrix cells + * * @param[out] return_tuples C array of contents to be returned to postgres * @param[out] return_count number of tuples returned * @param[out] log_msg special log message pointer @@ -65,30 +65,26 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * @pre The C array: return_tuples must be empty * @pre Only matrix cells (i, i) can be missing and are considered as 0 (time units) * - * @post The C arrays: customers_arr, vehicles_arr, matrix_cells_arr Do not change * @post The C array: return_tuples contains the result for the problem given * @post The return_tuples array size is return_count - * @post The return_tuples array size is return_count * @post err_msg is empty if no throw from the process is catched * @post log_msg contains some logging * @post notice_msg is empty * - * @dot digraph G { node[fontsize=11, nodesep=0.75,ranksep=0.75]; start [shape=Mdiamond]; n1 [label="Verify preconditions",shape=rect]; - n3 [label="Verify matrix cells preconditions",shape=rect]; + n3 [label="Verify matrix preconditions",shape=rect]; n4 [label="Construct problem",shape=cds,color=blue]; n7 [label="Prepare results",shape=rect]; end [shape=Mdiamond]; error [shape=Mdiamond,color=red] start -> n1 -> n3 -> n4 -> n7 -> end; - n1 -> error [ label="Caller error",color=red]; - n3 -> error [ label="User error",color=red]; - + n1 -> error [ label="throw",color=red]; + n3 -> error [ label="throw",color=red]; } @enddot @@ -96,17 +92,10 @@ digraph G { */ void vrp_do_compatibleVehicles( - Orders_t customers_arr[], - size_t total_customers, - - Vehicle_t *vehicles_arr, - size_t total_vehicles, - - Matrix_cell_t *matrix_cells_arr, - size_t total_cells, - - Time_multipliers_t *multipliers_arr, - size_t total_multipliers, + Orders_t customers_arr[], size_t total_customers, + Vehicle_t *vehicles_arr, size_t total_vehicles, + Matrix_cell_t *matrix_cells_arr, size_t total_cells, + Time_multipliers_t *multipliers_arr, size_t total_multipliers, double factor, @@ -193,9 +182,8 @@ vrp_do_compatibleVehicles( err << pd_problem.msg.get_error(); if (!err.str().empty()) { - log << pd_problem.msg.get_log(); - *log_msg = to_pg_msg(log.str()); - *err_msg = to_pg_msg(err.str()); + *log_msg = to_pg_msg(pd_problem.msg.get_log()); + *err_msg = to_pg_msg(pd_problem.msg.get_error()); return; } log << pd_problem.msg.get_log(); diff --git a/src/optimize/optimize_driver.cpp b/src/optimize/optimize_driver.cpp index dc503f84a..d30a5f5cd 100644 --- a/src/optimize/optimize_driver.cpp +++ b/src/optimize/optimize_driver.cpp @@ -38,6 +38,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "cpp_common/alloc.hpp" #include "cpp_common/assert.hpp" + #include "cpp_common/interruption.hpp" #include "cpp_common/messages.hpp" @@ -52,12 +53,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. namespace { +using Short_vehicle = vrprouting::Short_vehicle; + /** @brief Executes an optimization with the input data * * @param[in] shipments_arr A C Array of pickup and dropoff shipments * @param[in] total_shipments size of the shipments_arr * @param[in] vehicles_arr A C Array of vehicles * @param[in] total_vehicles size of the vehicles_arr + * * @param[in] new_stops stops that override the original stops. * @param[in] time_matrix The unique time matrix * @param[in] max_cycles number of cycles to perform during the optimization phase @@ -292,26 +296,24 @@ subdivide_processing( * @param[in] total_cells size of the matrix_cells_arr * @param[in] multipliers_arr A C Array of the multipliers * @param[in] total_multipliers size of the multipliers_arr + * * @param[in] factor A global multiplier for the (time) matrix cells * @param[in] max_cycles number of cycles to perform during the optimization phase * @param[in] check_triangle_inequality When true tirangle inequality will be checked * @param[in] subdivide @todo * @param[in] subdivide_by_vehicle @todo * @param[in] execution_date Value used for not moving shipments that are before this date + * * @param[out] return_tuples C array of contents to be returned to postgres * @param[out] return_count number of tuples returned * @param[out] log_msg special log message pointer * @param[out] notice_msg special message pointer to be returned as NOTICE * @param[out] err_msg special message pointer to be returned as ERROR - * @return void - * * * @pre The messages: log_msg, notice_msg, err_msg must be empty (=nullptr) - * @pre The C arrays: shipments_arr, vehicles_arr, matrix_cells_arr must not be empty * @pre The C array: return_tuples must be empty * @pre Only matrix cells (i, i) can be missing and are considered as 0 (time units) * - * @post The C arrays: shipments_arr, vehicles_arr, matrix_cells_arr Do not change * @post The C array: return_tuples contains the result for the problem given * @post The return_tuples array size is return_count * @post err_msg is empty if no throw from the process is catched @@ -338,8 +340,6 @@ subdivide_processing( } @enddot - - * */ void vrp_do_optimize( diff --git a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp index d1494423d..f064173a7 100644 --- a/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp +++ b/src/pgr_pickDeliver/pgr_pickDeliverEuclidean_driver.cpp @@ -46,6 +46,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "problem/pickDeliver.hpp" namespace { + vrprouting::problem::Solution get_initial_solution(vrprouting::problem::PickDeliver* problem_ptr, int m_initial_id) { using Solution = vrprouting::problem::Solution; diff --git a/src/pickDeliver/pickDeliver_driver.cpp b/src/pickDeliver/pickDeliver_driver.cpp index 05ed6c128..d21f69e16 100644 --- a/src/pickDeliver/pickDeliver_driver.cpp +++ b/src/pickDeliver/pickDeliver_driver.cpp @@ -38,6 +38,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "cpp_common/alloc.hpp" #include "cpp_common/assert.hpp" +#include "cpp_common/timeconversion.hpp" #include "cpp_common/orders_t.hpp" #include "cpp_common/vehicle_t.hpp" @@ -67,8 +68,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * @param[out] log_msg special log message pointer * @param[out] notice_msg special message pointer to be returned as NOTICE * @param[out] err_msg special message pointer to be returned as ERROR - * @return void - * * * @pre The messages: log_msg, notice_msg, err_msg must be empty (=nullptr) * @pre The C arrays: customers_arr, vehicles_arr, matrix_cells_arr must not be empty @@ -82,7 +81,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * @post log_msg contains some logging * @post notice_msg is empty * - * @dot digraph G { node[fontsize=11, nodesep=0.75,ranksep=0.75]; @@ -102,8 +100,6 @@ digraph G { } @enddot - - * */ void vrp_do_pickDeliver( @@ -152,9 +148,10 @@ vrp_do_pickDeliver( Identifiers order_ids; for (size_t i = 0; i < total_customers; ++i) { - node_ids += customers_arr[i].pick_node_id; - node_ids += customers_arr[i].deliver_node_id; - order_ids += customers_arr[i].id; + auto o = customers_arr[i]; + node_ids += o.pick_node_id; + node_ids += o.deliver_node_id; + order_ids += o.id; } bool missing = false; @@ -240,7 +237,6 @@ vrp_do_pickDeliver( using Optimize = vrprouting::optimizers::tabu::Optimize; sol = Optimize(sol, static_cast(max_cycles), stop_on_all_served, optimize); - log << pd_problem.msg.get_log(); pd_problem.msg.clear(); log << "Finish solve\n"; diff --git a/src/vroom/vroom_driver.cpp b/src/vroom/vroom_driver.cpp index c88fcce68..529d77281 100644 --- a/src/vroom/vroom_driver.cpp +++ b/src/vroom/vroom_driver.cpp @@ -48,7 +48,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. /** @file vroom_driver.cpp * @brief Handles actual calling of function in the `vrp_vroom.hpp` file. - * */ /** @brief Performs exception handling and converts the results to postgres. @@ -79,9 +78,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * @param[in] total_breaks_tws The total number of total breaks timewindows * @param[in] matrix_rows Pointer to the array of matrix rows * @param[in] total_matrix_rows The total number of matrix rows + * * @param[in] exploration_level Exploration level to use while solving. * @param[in] timeout Timeout value to stop the solving process (seconds). * @param[in] loading_time Additional time spent in loading the data from SQL Query (seconds). + * * @param[out] return_tuples The rows in the result * @param[out] return_count The count of rows in the result * @param[out] log_msg Stores the log message @@ -106,9 +107,9 @@ vrp_do_vroom( Vroom_rt **return_tuples, size_t *return_count, - char ** log_msg, - char ** notice_msg, - char ** err_msg) { + char **log_msg, + char **notice_msg, + char **err_msg) { using vrprouting::alloc; using vrprouting::free; using vrprouting::to_pg_msg; @@ -200,13 +201,9 @@ vrp_do_vroom( vrprouting::problem::Vroom problem; problem.add_matrix(matrix); - problem.add_vehicles(vehicles, total_vehicles, - breaks, total_breaks, - breaks_tws, total_breaks_tws); - problem.add_jobs(jobs, total_jobs, - jobs_tws, total_jobs_tws); - problem.add_shipments(shipments, total_shipments, - shipments_tws, total_shipments_tws); + problem.add_vehicles(vehicles, total_vehicles, breaks, total_breaks, breaks_tws, total_breaks_tws); + problem.add_jobs(jobs, total_jobs, jobs_tws, total_jobs_tws); + problem.add_shipments(shipments, total_shipments, shipments_tws, total_shipments_tws); auto end_time = std::chrono::high_resolution_clock::now(); loading_time += static_cast( From cfaebd4853a649497ca2e9343e69cd4fab8be6ed Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sun, 25 Aug 2024 09:38:59 -0600 Subject: [PATCH 12/14] fix typo on comment --- src/optimize/optimize_driver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/optimize/optimize_driver.cpp b/src/optimize/optimize_driver.cpp index d30a5f5cd..e60351946 100644 --- a/src/optimize/optimize_driver.cpp +++ b/src/optimize/optimize_driver.cpp @@ -253,7 +253,7 @@ subdivide_processing( /* * Nothing to do: * - no shipments to process - * - last optimization had exavtly the same shipments + * - last optimization had exactly the same shipments */ if ((shipments_in_stops.size() == 0) || (prev_shipments_in_stops == shipments_in_stops)) continue; From 168f536e5fe179af3ee9c62f6eae53942a9fbd3c Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sun, 25 Aug 2024 09:56:51 -0600 Subject: [PATCH 13/14] removing include to file not found --- src/pickDeliver/pickDeliver_driver.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pickDeliver/pickDeliver_driver.cpp b/src/pickDeliver/pickDeliver_driver.cpp index d21f69e16..e183fc635 100644 --- a/src/pickDeliver/pickDeliver_driver.cpp +++ b/src/pickDeliver/pickDeliver_driver.cpp @@ -38,7 +38,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "cpp_common/alloc.hpp" #include "cpp_common/assert.hpp" -#include "cpp_common/timeconversion.hpp" #include "cpp_common/orders_t.hpp" #include "cpp_common/vehicle_t.hpp" From 11af7aad01e0f1f032312a4c7c9151dbedb5bd08 Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sun, 25 Aug 2024 10:00:24 -0600 Subject: [PATCH 14/14] Short Vehicle is not on namespace --- src/optimize/optimize_driver.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/optimize/optimize_driver.cpp b/src/optimize/optimize_driver.cpp index e60351946..4b0b8de2a 100644 --- a/src/optimize/optimize_driver.cpp +++ b/src/optimize/optimize_driver.cpp @@ -53,8 +53,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. namespace { -using Short_vehicle = vrprouting::Short_vehicle; - /** @brief Executes an optimization with the input data * * @param[in] shipments_arr A C Array of pickup and dropoff shipments