vrpRouting  0.3
vrprouting::problem Namespace Reference

Namespaces

 anonymous_namespace{matrix.cpp}
 

Classes

class  Fleet
 
class  Matrix
 
class  Order
 
class  Orders
 
class  PickDeliver
 the pick deliver problem More...
 
class  Solution
 
class  Tw_node
 Time window attributes of a node. More...
 
class  Vehicle
 Vehicle with time windows. More...
 
class  Vehicle_node
 Extend Tw_node to evaluate the vehicle at node level. More...
 
class  Vehicle_pickDeliver
 

Enumerations

enum  NodeType {
  kStart = 0, kPickup, kDelivery, kDump,
  kLoad, kEnd
}
 

Functions

bool operator< (const Vehicle &lhs, const Vehicle &rhs)
 
std::ostream & operator<< (std::ostream &log, const Order &order)
 Prints: More...
 
std::ostream & operator<< (std::ostream &log, const Tw_node &n)
 
std::ostream & operator<< (std::ostream &log, const Vehicle_node &v)
 

Enumeration Type Documentation

◆ NodeType

Enumerator
kStart 

starting site

kPickup 

pickup site

kDelivery 

delivery site

kDump 

dump site, empties truck

kLoad 

load site, fills the truck

kEnd 

ending site

Definition at line 35 of file node_types.h.

35  {
36  kStart = 0,
37  kPickup,
38  kDelivery,
39  kDump,
40  kLoad,
41  kEnd
42  };

Function Documentation

◆ operator<()

bool vrprouting::problem::operator< ( const Vehicle lhs,
const Vehicle rhs 
)

Definition at line 433 of file vehicle.cpp.

433  {
434  /*
435  * capacity violations
436  */
437  if (lhs.cvTot() < rhs.cvTot()) return true;
438  if (lhs.cvTot() > rhs.cvTot()) return false;
439 
440  /*
441  * time window violations
442  */
443  if (lhs.twvTot() < rhs.twvTot()) return true;
444  if (lhs.twvTot() > rhs.twvTot()) return false;
445 
446  /*
447  * waiting time
448  */
449  if (lhs.total_wait_time() < rhs.total_wait_time()) return true;
450  if (lhs.total_wait_time() > rhs.total_wait_time()) return false;
451 
452  /*
453  * travel time
454  */
455  if (lhs.total_travel_time() < rhs.total_travel_time()) return true;
456  if (lhs.total_travel_time() > rhs.total_travel_time()) return false;
457 
458  /*
459  * duration
460  */
461  if (lhs.duration() < rhs.duration()) return true;
462  if (lhs.duration() > rhs.duration()) return false;
463 
464  /*
465  * truck size
466  */
467  if (lhs.size() < rhs.size()) return true;
468  return false;
469 }

References vrprouting::problem::Vehicle::cvTot(), vrprouting::problem::Vehicle::duration(), vrprouting::problem::Vehicle::total_travel_time(), vrprouting::problem::Vehicle::total_wait_time(), and vrprouting::problem::Vehicle::twvTot().

◆ operator<<() [1/3]

std::ostream& vrprouting::problem::operator<< ( std::ostream &  log,
const Order order 
)

Prints:

Print the order.

  • the pickup
  • dropoff
  • Set of orders I than are I -> this
  • Set of orders J than are this -> I
    Parameters
    [in,out]log
    [in]order
    Returns
    the ostream

Definition at line 77 of file order.cpp.

77  {
78  log << "\n\nOrder "
79  << static_cast<Identifier>(order) << ": \n"
80  << "\tPickup: " << order.pickup() << "\n"
81  << "\tDropoff: " << order.delivery() << "\n";
82  log << "\nThere are | {I}| = "
83  << order.m_compatibleI.size()
84  << " -> order(" << order.idx()
85  << ") -> | {J}| = " << order.m_compatibleJ.size()
86  << "\n\n {";
87  for (const auto o : order.m_compatibleI) {
88  log << o << ", ";
89  }
90  log << "} -> " << order.idx() << " -> {";
91  for (const auto o : order.m_compatibleJ) {
92  log << o << ", ";
93  }
94  log << "}";
95 
96  return log;
97 }

References vrprouting::problem::Order::delivery(), vrprouting::Identifier::idx(), vrprouting::problem::Order::m_compatibleI, vrprouting::problem::Order::m_compatibleJ, vrprouting::problem::Order::pickup(), and Identifiers< T >::size().

◆ operator<<() [2/3]

std::ostream& vrprouting::problem::operator<< ( std::ostream &  log,
const Tw_node n 
)
Returns
the printed information of the node
Parameters
[in]log
[in]n

Definition at line 362 of file tw_node.cpp.

362  {
363  log << n.id()
364  << "[opens = " << n.m_opens
365  << "\tcloses = " << n.m_closes
366  << "\tservice = " << n.m_service_time
367  << "\tdemand = " << n.m_demand
368  << "\ttype = " << n.type_str()
369  << "]"
370  << "\n";
371  return log;
372 }

References vrprouting::Identifier::id(), vrprouting::problem::Tw_node::m_closes, vrprouting::problem::Tw_node::m_demand, vrprouting::problem::Tw_node::m_opens, vrprouting::problem::Tw_node::m_service_time, and vrprouting::problem::Tw_node::type_str().

◆ operator<<() [3/3]

std::ostream& vrprouting::problem::operator<< ( std::ostream &  log,
const Vehicle_node v 
)
Parameters
[in,out]logPlace to store the printed status of the node
[in]vVehicle node to print
Returns
the new string

Definition at line 119 of file vehicle_node.cpp.

119  {
120  log << static_cast<const Tw_node&>(v)
121  << " twv = " << v.has_twv()
122  << ", twvTot = " << v.twvTot()
123  << ", cvTot = " << v.cvTot()
124  << ", cargo = " << v.cargo()
125  << ", travel_time = " << v.travel_time()
126  << ", arrival_time = " << v.arrival_time()
127  << ", wait_time = " << v.wait_time()
128  << ", service_time = " << v.service_time()
129  << ", departure_time = " << v.departure_time();
130  return log;
131 }

References vrprouting::problem::Vehicle_node::arrival_time(), vrprouting::problem::Vehicle_node::cargo(), vrprouting::problem::Vehicle_node::cvTot(), vrprouting::problem::Vehicle_node::departure_time(), vrprouting::problem::Vehicle_node::has_twv(), vrprouting::problem::Tw_node::service_time(), vrprouting::problem::Vehicle_node::travel_time(), vrprouting::problem::Vehicle_node::twvTot(), and vrprouting::problem::Vehicle_node::wait_time().

vrprouting::problem::kDump
@ kDump
dump site, empties truck
Definition: node_types.h:39
vrprouting::problem::kStart
@ kStart
starting site
Definition: node_types.h:36
vrprouting::problem::kDelivery
@ kDelivery
delivery site
Definition: node_types.h:38
vrprouting::problem::kLoad
@ kLoad
load site, fills the truck
Definition: node_types.h:40
vrprouting::problem::kPickup
@ kPickup
pickup site
Definition: node_types.h:37
vrprouting::problem::kEnd
@ kEnd
ending site
Definition: node_types.h:41