vrpRouting  0.3
anonymous_namespace{pickDeliverEuclidean_driver.cpp} Namespace Reference

Functions

bool are_shipments_ok (PickDeliveryOrders_t *customers_arr, size_t total_customers, std::string *err_string, std::string *hint_string)
 
vrprouting::problem::Solution get_initial_solution (vrprouting::problem::PickDeliver *problem_ptr, int m_initial_id)
 

Function Documentation

◆ are_shipments_ok()

bool anonymous_namespace{pickDeliverEuclidean_driver.cpp}::are_shipments_ok ( PickDeliveryOrders_t customers_arr,
size_t  total_customers,
std::string *  err_string,
std::string *  hint_string 
)
  • demand > 0 (the type is unsigned so no need to check for negative values, only for it to be non 0
  • pick_service_t >=0
  • drop_service_t >=0
  • p_open <= p_close
  • d_open <= d_close

Definition at line 72 of file pickDeliverEuclidean_driver.cpp.

76  {
84  for (size_t i = 0; i < total_customers; ++i) {
85  if (customers_arr[i].demand == 0) {
86  *err_string = "Unexpected zero value found on column 'demand' of shipments";
87  *hint_string = "Check shipment id #:" + std::to_string(customers_arr[i].id);
88  return false;
89  }
90 
91  if (customers_arr[i].pick_service_t < 0) {
92  *err_string = "Unexpected negative value found on column 'p_service_t' of shipments";
93  *hint_string = "Check shipment id #:" + std::to_string(customers_arr[i].id);
94  return false;
95  }
96 
97  if (customers_arr[i].deliver_service_t < 0) {
98  *err_string = "Unexpected negative value found on column 'd_service_t' of shipments";
99  *hint_string = "Check shipment id #:" + std::to_string(customers_arr[i].id);
100  return false;
101  }
102 
103  if (customers_arr[i].pick_open_t > customers_arr[i].pick_close_t) {
104  *err_string = "Unexpected pickup time windows found on shipments";
105  *hint_string = "Check shipment id #:" + std::to_string(customers_arr[i].id);
106  return false;
107  }
108 
109  if (customers_arr[i].deliver_open_t > customers_arr[i].deliver_close_t) {
110  *err_string = "Unexpected delivery time windows found on shipments";
111  *hint_string = "Check shipment id #:" + std::to_string(customers_arr[i].id);
112  return false;
113  }
114  }
115  return true;
116 }

References PickDeliveryOrders_t::deliver_close_t, PickDeliveryOrders_t::deliver_open_t, PickDeliveryOrders_t::deliver_service_t, PickDeliveryOrders_t::demand, PickDeliveryOrders_t::pick_close_t, PickDeliveryOrders_t::pick_open_t, and PickDeliveryOrders_t::pick_service_t.

Referenced by do_pgr_pickDeliverEuclidean().

◆ get_initial_solution()

vrprouting::problem::Solution anonymous_namespace{pickDeliverEuclidean_driver.cpp}::get_initial_solution ( vrprouting::problem::PickDeliver problem_ptr,
int  m_initial_id 
)

Definition at line 50 of file pickDeliverEuclidean_driver.cpp.

50  {
51  using Solution = vrprouting::problem::Solution;
52  using Initial_solution = vrprouting::initialsol::simple::Initial_solution;
54  Solution m_solutions(problem_ptr);
55  if (m_initial_id == 0) {
56  for (int i = 1; i < 7; ++i) {
57  if (i == 1) {
58  m_solutions = Initial_solution((Initials_code)i, problem_ptr);
59  } else {
60  auto new_sol = Initial_solution((Initials_code)i, problem_ptr);
61  m_solutions = (new_sol < m_solutions)? new_sol : m_solutions;
62  }
63  }
64  } else {
65  m_solutions = Initial_solution((Initials_code)m_initial_id, problem_ptr);
66  }
67 
68  return m_solutions;
69 }

Referenced by do_pgr_pickDeliverEuclidean().

vrprouting::problem::Solution
Definition: solution.h:50
vrprouting::initialsol::simple::Initials_code
Initials_code
Different kinds to insert an order into the vehicle.
Definition: initialsol/initials_code.h:37
PickDeliveryOrders_t::deliver_close_t
TTimestamp deliver_close_t
Deliver open time.
Definition: pickDeliveryOrders_t.h:75
PickDeliveryOrders_t::pick_open_t
TTimestamp pick_open_t
Pickup node identifier.
Definition: pickDeliveryOrders_t.h:66
vrprouting::initialsol::simple::Initial_solution
Definition: initialsol/simple.h:45
PickDeliveryOrders_t::pick_service_t
TInterval pick_service_t
Pickup close time.
Definition: pickDeliveryOrders_t.h:68
PickDeliveryOrders_t::deliver_open_t
TTimestamp deliver_open_t
Deliver node identifier.
Definition: pickDeliveryOrders_t.h:74
PickDeliveryOrders_t::deliver_service_t
TInterval deliver_service_t
Deliver close time.
Definition: pickDeliveryOrders_t.h:76
PickDeliveryOrders_t::pick_close_t
TTimestamp pick_close_t
Pickup open time.
Definition: pickDeliveryOrders_t.h:67
PickDeliveryOrders_t::demand
PAmount demand
Order's identifier.
Definition: pickDeliveryOrders_t.h:60