vrpRouting  0.3
vrprouting::problem::Vehicle_node Class Reference

Extend Tw_node to evaluate the vehicle at node level. More...

#include "vehicle_node.h"

Inheritance diagram for vrprouting::problem::Vehicle_node:
Collaboration diagram for vrprouting::problem::Vehicle_node:

Public Member Functions

 Vehicle_node ()=delete
 Construction without information is not allowed. More...
 
 Vehicle_node (const Tw_node &node)
 Construction of a Vehicle node based on a time windows node. More...
 
 Vehicle_node (const Vehicle_node &)=default
 Copy constructor. More...
 
TTimestamp arrival_j_closes_i (const Tw_node &I, Speed=1.0) const
 arrival time at This node, when arrived at I at closing time TODO refine description More...
 
TTimestamp arrival_j_opens_i (const Tw_node &I, Speed=1.0) const
 arrival time at This node, when arrived at I at opening time TODO refine description More...
 
TTimestamp arrival_time () const
 Vehicle's arrival_time to this node. More...
 
TTimestamp closes () const
 Returns the closing time. More...
 
Amount demand () const
 Returns the demand associated with this node. More...
 
TTimestamp departure_time () const
 Vehicle's departure_time from this node. More...
 
void evaluate (const Vehicle_node &pred, PAmount, Speed=1.0)
 
void evaluate (PAmount cargoLimit)
 evaluate this node More...
 
Solution_rt get_postgres_result (int vid, int64_t v_id, int stop_seq) const
 
bool is_compatible_IJ (const Tw_node &I, Speed=1.0) const
 is possible to arrive to this after visiting other? More...
 
bool is_delivery () const
 Is the node a valid order's delivery node. More...
 
bool is_dump () const
 Is the node a valid vehicle's dumping node. More...
 
bool is_early_arrival (TTimestamp arrival_time) const
 True when arrivalTime is before it opens. More...
 
bool is_end () const
 Is the node a valid vehicle's ending node. More...
 
bool is_late_arrival (TTimestamp arrival_time) const
 True when arrivalTime is after it closes. More...
 
bool is_load () const
 Is the node a valid vehicle's loading node. More...
 
bool is_on_time (TTimestamp arrival_time) const
 True when arrivalTime in the time window. More...
 
bool is_partially_compatible_IJ (const Tw_node &I, Speed=1.0) const
 can arrive to this after visiting as late as possible I? TODO refine description More...
 
bool is_partially_waitTime_compatible_IJ (const Tw_node &I, Speed=1.0) const
 can arrive to this after visiting as late as possible I? TODO refine description More...
 
bool is_pickup () const
 Is the node a valid order's pickup node. More...
 
bool is_start () const
 Is the node a valid vehicle's starting node. More...
 
bool is_tight_compatible_IJ (const Tw_node &I, Speed=1.0) const
 can arrive to this after visiting as late as possible I? TODO refine description More...
 
bool is_valid () const
 is the node valid? More...
 
bool is_waitTime_compatible_IJ (const Tw_node &I, Speed=1.0) const
 can arrive to this after visiting as late as possible I? TODO refine description More...
 
double objective () const
 the basic objective function for this node More...
 
TTimestamp opens () const
 Returns the opening time. More...
 
bool operator== (const Tw_node &rhs) const
 equality operator More...
 
int64_t order () const
 Returns the order to which it belongs. More...
 
TInterval service_time () const
 Returns the service time for this node. More...
 
TInterval travel_time () const
 Vehicle's travel_time from previous node to this node. More...
 
TInterval travel_time_to (const Tw_node &, TTimestamp, Speed=1.0) const
 travel time to other node. More...
 
auto type () const
 Returns the type of this node. More...
 
std::string type_str () const
 returns a string code of the kind of node More...
 
TInterval wait_time () const
 Vehicle's wait_time at this node. More...
 
TInterval window_length () const
 Returns the length of time between the opening and closing. More...
 

Static Public Attributes

static const Matrixm_time_matrix_ptr = nullptr
 

Protected Member Functions

void demand (Amount value)
 Sets the demand value to a new value. More...
 
evaluation
bool has_twv () const
 does the node violates the time windows constraints? More...
 
bool has_cv (PAmount cargoLimit) const
 does the node violates the capacity constraints? More...
 
TInterval total_time () const
 
TInterval delta_time () const
 delta_time = departure_time(this) - departure_time(previous) More...
 
bool deltaGeneratesTWV (TInterval delta_time) const
 True when arrival_time + delta_time generates TWV. More...
 
State
bool feasible () const
 True when the total count for violations are 0. More...
 
bool feasible (PAmount cargoLimit) const
 True doesn't have twc nor cv (including total counts) More...
 

Private Attributes

TTimestamp m_closes
 closing time of the node More...
 
Amount m_demand
 The demand for the Node. More...
 
int64_t m_id
 
size_t m_idx
 
TTimestamp m_opens
 opening time of the node More...
 
int64_t m_order { }
 order to which it belongs (idx) More...
 
TInterval m_service_time
 time it takes to be served More...
 
NodeType m_type
 The kind of Node. More...
 
Node evaluation
TInterval m_travel_time
 Travel time from last node. More...
 
TTimestamp m_arrival_time
 Arrival time at this node. More...
 
TInterval m_wait_time
 Wait time at this node. More...
 
TTimestamp m_departure_time
 Departure time from this node. More...
 
TInterval m_delta_time
 Departure time - last nodes departure time. More...
 

Friends

std::ostream & operator<< (std::ostream &log, const Vehicle_node &v)
 Print the contents of a Vehicle_node object. More...
 

Accumulated evaluation

Amount m_cargo
 Accumulated cargo. More...
 
int m_twvTot
 Total count of TWV. More...
 
int m_cvTot
 Total count of CV. More...
 
TInterval m_tot_wait_time
 Accumulated wait time. More...
 
TInterval m_tot_travel_time
 Accumulated travel time. More...
 
TInterval m_tot_service_time
 Accumulated service time. More...
 
int twvTot () const
 Vehicle's total times it has violated time windows. More...
 
int cvTot () const
 Vehicle's total times it has violated cargo limits. More...
 
Amount cargo () const
 Vehicle's total cargo after the node was served. More...
 
TInterval total_travel_time () const
 _time spent moving between nodes by the truck More...
 
TInterval total_wait_time () const
 _time spent by the truck waiting for nodes to open More...
 
TInterval total_service_time () const
 _time spent by the truck servicing the nodes More...
 

Detailed Description

Extend Tw_node to evaluate the vehicle at node level.

This class extends Twnode by adding attributes to store information and to set and get these attribute values.

Definition at line 49 of file vehicle_node.h.

Constructor & Destructor Documentation

◆ Vehicle_node() [1/3]

vrprouting::problem::Vehicle_node::Vehicle_node ( )
delete

Construction without information is not allowed.

◆ Vehicle_node() [2/3]

vrprouting::problem::Vehicle_node::Vehicle_node ( const Vehicle_node )
default

Copy constructor.

◆ Vehicle_node() [3/3]

vrprouting::problem::Vehicle_node::Vehicle_node ( const Tw_node node)
explicit

Construction of a Vehicle node based on a time windows node.

Creates a disconnected vehicle node A node that is not served by any vehicle.

Parameters
[in]nodeTime window node

Definition at line 141 of file vehicle_node.cpp.

142  : Tw_node(node),
143  m_travel_time(0),
144  m_arrival_time(0),
145  m_wait_time(0),
146  m_departure_time(0),
147  m_delta_time(0),
148  m_cargo(0),
149  m_twvTot(0),
150  m_cvTot(0),
151  m_tot_wait_time(0),
153  m_tot_service_time(0) {
154  }

Member Function Documentation

◆ arrival_j_closes_i()

TTimestamp vrprouting::problem::Tw_node::arrival_j_closes_i ( const Tw_node I,
Speed  speed = 1.0 
) const
inherited

arrival time at This node, when arrived at I at closing time TODO refine description

Parameters
[in]Ithe previous node before this node
[in]speed- speed used for calculation
Returns
the arrival time at this node after visiting I node when I closes

I -> this Value of TWC when arriving to this node after visiting node I at closing time

Definition at line 81 of file tw_node.cpp.

81  {
82  if (m_type == kStart) return (std::numeric_limits<TTimestamp>::max)();
83  return I.closes() + I.service_time() + I.travel_time_to(*this, I.closes() + I.service_time(), speed);
84 }

References vrprouting::problem::Tw_node::closes(), vrprouting::problem::kStart, vrprouting::problem::Tw_node::m_type, vrprouting::problem::Tw_node::service_time(), and vrprouting::problem::Tw_node::travel_time_to().

Referenced by vrprouting::problem::Tw_node::is_partially_compatible_IJ(), and vrprouting::problem::Tw_node::is_tight_compatible_IJ().

◆ arrival_j_opens_i()

TTimestamp vrprouting::problem::Tw_node::arrival_j_opens_i ( const Tw_node I,
Speed  speed = 1.0 
) const
inherited

arrival time at This node, when arrived at I at opening time TODO refine description

Parameters
[in]Ithe previous node before this node
[in]speed- speed used for calculation
Returns
the arrival time at this node after visiting I node when I opens

I -> this Value of TWC when arriving to this node after visiting node I at opening time

Definition at line 66 of file tw_node.cpp.

66  {
67  if (m_type == kStart) return (std::numeric_limits<TTimestamp>::max)();
68  return I.opens() + I.service_time() + I.travel_time_to(*this, I.opens() + I.service_time(), speed);
69 }

References vrprouting::problem::kStart, vrprouting::problem::Tw_node::m_type, vrprouting::problem::Tw_node::opens(), vrprouting::problem::Tw_node::service_time(), and vrprouting::problem::Tw_node::travel_time_to().

Referenced by vrprouting::problem::Tw_node::is_compatible_IJ(), vrprouting::problem::Tw_node::is_partially_compatible_IJ(), vrprouting::problem::Tw_node::is_partially_waitTime_compatible_IJ(), vrprouting::problem::Tw_node::is_tight_compatible_IJ(), and vrprouting::problem::Tw_node::is_waitTime_compatible_IJ().

◆ arrival_time()

TTimestamp vrprouting::problem::Vehicle_node::arrival_time ( ) const
inline

Vehicle's arrival_time to this node.

Definition at line 68 of file vehicle_node.h.

68 {return m_arrival_time;}

References m_arrival_time.

Referenced by evaluate(), get_postgres_result(), and vrprouting::problem::operator<<().

◆ cargo()

Amount vrprouting::problem::Vehicle_node::cargo ( ) const
inline

Vehicle's total cargo after the node was served.

Definition at line 86 of file vehicle_node.h.

86 {return m_cargo;}

References m_cargo.

Referenced by evaluate(), get_postgres_result(), and vrprouting::problem::operator<<().

◆ closes()

◆ cvTot()

int vrprouting::problem::Vehicle_node::cvTot ( ) const
inline

Vehicle's total times it has violated cargo limits.

Definition at line 83 of file vehicle_node.h.

83 {return m_cvTot;}

References m_cvTot.

Referenced by evaluate(), get_postgres_result(), and vrprouting::problem::operator<<().

◆ delta_time()

TInterval vrprouting::problem::Vehicle_node::delta_time ( ) const
inlineprotected

delta_time = departure_time(this) - departure_time(previous)

Definition at line 120 of file vehicle_node.h.

120 {return m_delta_time;}

References m_delta_time.

Referenced by deltaGeneratesTWV().

◆ deltaGeneratesTWV()

bool vrprouting::problem::Vehicle_node::deltaGeneratesTWV ( TInterval  delta_time) const
protected

True when arrival_time + delta_time generates TWV.

Definition at line 158 of file vehicle_node.cpp.

158  {
160 }

References delta_time(), vrprouting::problem::Tw_node::is_late_arrival(), and m_arrival_time.

◆ demand() [1/2]

◆ demand() [2/2]

void vrprouting::problem::Tw_node::demand ( Amount  value)
inlineprotectedinherited

Sets the demand value to a new value.

Definition at line 170 of file tw_node.h.

170 {m_demand = value;}

References vrprouting::problem::Tw_node::m_demand.

◆ departure_time()

TTimestamp vrprouting::problem::Vehicle_node::departure_time ( ) const
inline

Vehicle's departure_time from this node.

Definition at line 74 of file vehicle_node.h.

74 {return m_departure_time;}

References m_departure_time.

Referenced by evaluate(), get_postgres_result(), and vrprouting::problem::operator<<().

◆ evaluate() [1/2]

void vrprouting::problem::Vehicle_node::evaluate ( const Vehicle_node pred,
PAmount  cargoLimit,
Speed  speed = 1.0 
)
Parameters
[in]predThe node preceding this node in the path.
[in]cargoLimitof the vehicle.
[in]speedvalue to use for calculations

Definition at line 81 of file vehicle_node.cpp.

85  {
86  /* time */
87  m_travel_time = pred.travel_time_to(*this, pred.departure_time(), speed);
88  m_arrival_time = pred.departure_time() + travel_time();
90  opens() - m_arrival_time :
91  0;
93 
94  /* time aggregates */
95  m_tot_travel_time = pred.total_travel_time() + travel_time();
96  m_tot_wait_time = pred.total_wait_time() + wait_time();
97  m_tot_service_time = pred.total_service_time() + service_time();
98 
99  /* cargo aggregates */
100  if (is_dump() && pred.cargo() >= 0) {
101  demand(-pred.cargo());
102  }
103  m_cargo = pred.cargo() + demand();
104 
105  /* violations aggregates */
106 
107  m_twvTot = has_twv() ? pred.twvTot() + 1 : pred.twvTot();
108  m_cvTot = has_cv(cargoLimit) ? pred.cvTot() + 1 : pred.cvTot();
109  m_delta_time = departure_time() - pred.departure_time();
110 }

References arrival_time(), cargo(), cvTot(), vrprouting::problem::Tw_node::demand(), departure_time(), has_cv(), has_twv(), vrprouting::problem::Tw_node::is_dump(), vrprouting::problem::Tw_node::is_early_arrival(), m_arrival_time, m_cargo, m_cvTot, m_delta_time, m_departure_time, m_tot_service_time, m_tot_travel_time, m_tot_wait_time, m_travel_time, m_twvTot, m_wait_time, vrprouting::problem::Tw_node::opens(), vrprouting::problem::Tw_node::service_time(), total_service_time(), total_travel_time(), total_wait_time(), travel_time(), vrprouting::problem::Tw_node::travel_time_to(), twvTot(), and wait_time().

◆ evaluate() [2/2]

void vrprouting::problem::Vehicle_node::evaluate ( PAmount  cargoLimit)

evaluate this node

Parameters
[in]cargoLimitof the vehicle
Precondition
node is a starting node
  • evaluates the node
  • starts the cumulative information

Definition at line 52 of file vehicle_node.cpp.

52  {
53  pgassert(is_start());
54  /* time */
55  m_travel_time = 0;
57  m_wait_time = 0;
59 
60  /* time aggregates */
62  m_tot_wait_time = 0;
64 
65  /* cargo aggregates */
66  m_cargo = demand();
67 
68  /* violation aggregates */
69  m_twvTot = m_cvTot = 0;
70  m_cvTot = has_cv(cargoLimit) ? 1 : 0;
71  m_delta_time = 0;
72 }

References arrival_time(), vrprouting::problem::Tw_node::demand(), has_cv(), vrprouting::problem::Tw_node::is_start(), m_arrival_time, m_cargo, m_cvTot, m_delta_time, m_departure_time, m_tot_service_time, m_tot_travel_time, m_tot_wait_time, m_travel_time, m_twvTot, m_wait_time, vrprouting::problem::Tw_node::opens(), pgassert, and vrprouting::problem::Tw_node::service_time().

◆ feasible() [1/2]

bool vrprouting::problem::Vehicle_node::feasible ( ) const
inlineprotected

True when the total count for violations are 0.

Definition at line 128 of file vehicle_node.h.

128 {return m_twvTot == 0 && m_cvTot == 0;}

References m_cvTot, and m_twvTot.

Referenced by feasible().

◆ feasible() [2/2]

bool vrprouting::problem::Vehicle_node::feasible ( PAmount  cargoLimit) const
inlineprotected

True doesn't have twc nor cv (including total counts)

Definition at line 131 of file vehicle_node.h.

131  {
132  return feasible() && !has_twv() && !has_cv(cargoLimit);
133  }

References feasible(), has_cv(), and has_twv().

◆ get_postgres_result()

Solution_rt vrprouting::problem::Vehicle_node::get_postgres_result ( int  vid,
int64_t  v_id,
int  stop_seq 
) const
Returns
the vehicle's path in a structure for postgres
Parameters
[in]vidit the vid-th vehicle in the solution
[in]v_idit the vehicle identifier of the current node
[in]stop_sequsing this sequence value for the current node

Definition at line 193 of file vehicle_node.cpp.

193  {
194  return Solution_rt{
195  vid,
196  v_id,
197  stop_seq,
198  /* order_id
199  * The order_id is invalid for stops type 0 and 5
200  */
201  (type() == 0 || type() == 5)? -1 : order(),
202  id(),
203  type(),
204  static_cast<int64_t>(cargo()),
205  static_cast<int64_t>(travel_time()),
206  static_cast<int64_t>(arrival_time()),
207  static_cast<int64_t>(wait_time()),
208  static_cast<int64_t>(arrival_time() + wait_time()),
209  static_cast<int64_t>(service_time()),
210  static_cast<int64_t>(departure_time()),
211  cvTot(),
212  twvTot()};
213 }

References arrival_time(), cargo(), cvTot(), departure_time(), vrprouting::Identifier::id(), vrprouting::problem::Tw_node::order(), vrprouting::problem::Tw_node::service_time(), travel_time(), twvTot(), vrprouting::problem::Tw_node::type(), and wait_time().

◆ has_cv()

bool vrprouting::problem::Vehicle_node::has_cv ( PAmount  cargoLimit) const
protected

does the node violates the capacity constraints?

Parameters
[in]cargoLimitof the vehicle
Returns
true when the node violates the capacity constraints

A capacity violations happens when:

  • the node is a start or end node and the cargo is not 0
  • the node's cargo is greater than the limit or is negative

Definition at line 172 of file vehicle_node.cpp.

172  {
173  return is_end() || is_start() ? m_cargo != 0
174  : m_cargo > cargoLimit || m_cargo < 0;
175 }

References vrprouting::problem::Tw_node::is_end(), vrprouting::problem::Tw_node::is_start(), and m_cargo.

Referenced by evaluate(), and feasible().

◆ has_twv()

bool vrprouting::problem::Vehicle_node::has_twv ( ) const
protected

does the node violates the time windows constraints?

Returns
true when the arrival happens after the closing time

Definition at line 182 of file vehicle_node.cpp.

182  {
184 }

References vrprouting::problem::Tw_node::is_late_arrival(), and m_arrival_time.

Referenced by evaluate(), feasible(), and vrprouting::problem::operator<<().

◆ id()

◆ idx()

◆ is_compatible_IJ()

bool vrprouting::problem::Tw_node::is_compatible_IJ ( const Tw_node I,
Speed  speed = 1.0 
) const
inherited

is possible to arrive to this after visiting other?

Parameters
[in]Inode visited before visiting this node
[in]speed- speed used for calculation
Returns
true when arriving this node after visiting node I does not cause a time window violation
false this node is a starting node (no node can be visited before a starting node)
false I node is an ending node (no node can be visited after an ending node)

Definition at line 94 of file tw_node.cpp.

94  {
95  /*
96  * I /-> kStart
97  */
98  if (m_type == kStart) return false;
99 
100  /*
101  * kEnd /-> (*this)
102  */
103  if (I.m_type == kEnd) return false;
104 
105  return !is_late_arrival(arrival_j_opens_i(I, speed));
106 }

References vrprouting::problem::Tw_node::arrival_j_opens_i(), vrprouting::problem::Tw_node::is_late_arrival(), vrprouting::problem::kEnd, vrprouting::problem::kStart, and vrprouting::problem::Tw_node::m_type.

Referenced by vrprouting::problem::Vehicle::getPosHighLimit(), vrprouting::problem::Tw_node::is_partially_compatible_IJ(), vrprouting::problem::Tw_node::is_partially_waitTime_compatible_IJ(), vrprouting::problem::Tw_node::is_tight_compatible_IJ(), vrprouting::problem::Order::is_valid(), vrprouting::problem::Tw_node::is_waitTime_compatible_IJ(), and vrprouting::problem::Order::isCompatibleIJ().

◆ is_delivery()

bool vrprouting::problem::Tw_node::is_delivery ( ) const
inherited

Is the node a valid order's delivery node.

Returns
true when the node is a delivery node and is valid

Definition at line 210 of file tw_node.cpp.

210  {
211  return m_type == kDelivery
212  && (opens() < closes())
213  && (service_time() >= 0)
214  && (demand() < 0);
215 }

References vrprouting::problem::Tw_node::closes(), vrprouting::problem::Tw_node::demand(), vrprouting::problem::kDelivery, vrprouting::problem::Tw_node::m_type, vrprouting::problem::Tw_node::opens(), and vrprouting::problem::Tw_node::service_time().

Referenced by vrprouting::problem::Order::is_valid(), and vrprouting::problem::Tw_node::is_valid().

◆ is_dump()

bool vrprouting::problem::Tw_node::is_dump ( ) const
inherited

Is the node a valid vehicle's dumping node.

Returns
true when the node is a dump node and is valid

Definition at line 222 of file tw_node.cpp.

222  {
223  return m_type == kDump
224  && (opens() < closes())
225  && (service_time() >= 0)
226  && (demand() <= 0);
227 }

References vrprouting::problem::Tw_node::closes(), vrprouting::problem::Tw_node::demand(), vrprouting::problem::kDump, vrprouting::problem::Tw_node::m_type, vrprouting::problem::Tw_node::opens(), and vrprouting::problem::Tw_node::service_time().

Referenced by evaluate(), and vrprouting::problem::Tw_node::is_valid().

◆ is_early_arrival()

bool vrprouting::problem::Tw_node::is_early_arrival ( TTimestamp  arrival_time) const
inlineinherited

◆ is_end()

bool vrprouting::problem::Tw_node::is_end ( ) const
inherited

Is the node a valid vehicle's ending node.

Returns
true when the node is an end node and is valid

Definition at line 245 of file tw_node.cpp.

245  {
246  return m_type == kEnd
247  && (opens() < closes())
248  && (service_time() >= 0)
249  && (demand() == 0);
250 }

References vrprouting::problem::Tw_node::closes(), vrprouting::problem::Tw_node::demand(), vrprouting::problem::kEnd, vrprouting::problem::Tw_node::m_type, vrprouting::problem::Tw_node::opens(), and vrprouting::problem::Tw_node::service_time().

Referenced by vrprouting::problem::Fleet::add_vehicle(), vrprouting::problem::Vehicle::erase(), has_cv(), and vrprouting::problem::Tw_node::is_valid().

◆ is_late_arrival()

bool vrprouting::problem::Tw_node::is_late_arrival ( TTimestamp  arrival_time) const
inlineinherited

◆ is_load()

bool vrprouting::problem::Tw_node::is_load ( ) const
inherited

Is the node a valid vehicle's loading node.

Returns
true when the node is a load node and is valid

Definition at line 234 of file tw_node.cpp.

234  {
235  return m_type == kLoad
236  && (opens() < closes())
237  && (service_time() >= 0)
238  && (demand() >= 0);
239 }

References vrprouting::problem::Tw_node::closes(), vrprouting::problem::Tw_node::demand(), vrprouting::problem::kLoad, vrprouting::problem::Tw_node::m_type, vrprouting::problem::Tw_node::opens(), and vrprouting::problem::Tw_node::service_time().

Referenced by vrprouting::problem::Tw_node::is_valid().

◆ is_on_time()

bool vrprouting::problem::Tw_node::is_on_time ( TTimestamp  arrival_time) const
inlineinherited

True when arrivalTime in the time window.

Definition at line 131 of file tw_node.h.

131  {
132  return !is_early_arrival(arrival_time)
133  && !is_late_arrival(arrival_time);
134  }

References vrprouting::problem::Tw_node::is_early_arrival(), and vrprouting::problem::Tw_node::is_late_arrival().

◆ is_partially_compatible_IJ()

bool vrprouting::problem::Tw_node::is_partially_compatible_IJ ( const Tw_node I,
Speed  speed = 1.0 
) const
inherited

can arrive to this after visiting as late as possible I? TODO refine description

Parameters
[in]Inode visited before visiting this node
[in]speed- speed used for calculation
Returns
true when TODO TBD
false this node is TODO TBD
false I node is TODO TBD

Definition at line 116 of file tw_node.cpp.

116  {
117  return
118  is_compatible_IJ(I, speed)
119  && !is_early_arrival(arrival_j_opens_i(I, speed))
120  && is_late_arrival(arrival_j_closes_i(I, speed));
121 }

References vrprouting::problem::Tw_node::arrival_j_closes_i(), vrprouting::problem::Tw_node::arrival_j_opens_i(), vrprouting::problem::Tw_node::is_compatible_IJ(), vrprouting::problem::Tw_node::is_early_arrival(), and vrprouting::problem::Tw_node::is_late_arrival().

◆ is_partially_waitTime_compatible_IJ()

bool vrprouting::problem::Tw_node::is_partially_waitTime_compatible_IJ ( const Tw_node I,
Speed  speed = 1.0 
) const
inherited

can arrive to this after visiting as late as possible I? TODO refine description

Parameters
[in]Inode visited before visiting this node
[in]speed- speed used for calculation
Returns
true when TODO TBD
false this node is TODO TBD
false I node is TODO TBD

Definition at line 146 of file tw_node.cpp.

148  {
149  return
150  is_compatible_IJ(I, speed)
151  && is_early_arrival(arrival_j_opens_i(I, speed));
152 }

References vrprouting::problem::Tw_node::arrival_j_opens_i(), vrprouting::problem::Tw_node::is_compatible_IJ(), and vrprouting::problem::Tw_node::is_early_arrival().

◆ is_pickup()

bool vrprouting::problem::Tw_node::is_pickup ( ) const
inherited

Is the node a valid order's pickup node.

Returns
true when the node is a pickup node and is valid

Definition at line 199 of file tw_node.cpp.

199  {
200  return m_type == kPickup
201  && (opens() < closes())
202  && (service_time() >= 0)
203  && (demand() > 0);
204 }

References vrprouting::problem::Tw_node::closes(), vrprouting::problem::Tw_node::demand(), vrprouting::problem::kPickup, vrprouting::problem::Tw_node::m_type, vrprouting::problem::Tw_node::opens(), and vrprouting::problem::Tw_node::service_time().

Referenced by vrprouting::problem::Order::is_valid(), and vrprouting::problem::Tw_node::is_valid().

◆ is_start()

bool vrprouting::problem::Tw_node::is_start ( ) const
inherited

Is the node a valid vehicle's starting node.

Returns
true when the node is a starting node and is valid

Definition at line 187 of file tw_node.cpp.

187  {
188  return
189  m_type == kStart
190  && (opens() < closes())
191  && (service_time() >= 0)
192  && (demand() == 0);
193 }

References vrprouting::problem::Tw_node::closes(), vrprouting::problem::Tw_node::demand(), vrprouting::problem::kStart, vrprouting::problem::Tw_node::m_type, vrprouting::problem::Tw_node::opens(), and vrprouting::problem::Tw_node::service_time().

Referenced by vrprouting::problem::Vehicle::erase(), evaluate(), has_cv(), and vrprouting::problem::Tw_node::is_valid().

◆ is_tight_compatible_IJ()

bool vrprouting::problem::Tw_node::is_tight_compatible_IJ ( const Tw_node I,
Speed  speed = 1.0 
) const
inherited

can arrive to this after visiting as late as possible I? TODO refine description

Parameters
[in]Inode visited before visiting this node
[in]speed- speed used for calculation
Returns
true when TODO TBD
false this node is TODO TBD
false I node is TODO TBD

Definition at line 131 of file tw_node.cpp.

131  {
132  return
133  is_compatible_IJ(I, speed)
134  && !is_early_arrival(arrival_j_opens_i(I, speed))
135  && !is_late_arrival(arrival_j_closes_i(I, speed));
136 }

References vrprouting::problem::Tw_node::arrival_j_closes_i(), vrprouting::problem::Tw_node::arrival_j_opens_i(), vrprouting::problem::Tw_node::is_compatible_IJ(), vrprouting::problem::Tw_node::is_early_arrival(), and vrprouting::problem::Tw_node::is_late_arrival().

◆ is_valid()

bool vrprouting::problem::Tw_node::is_valid ( ) const
inherited

is the node valid?

Returns
true when the node depending on the kind is a valid node

Definition at line 274 of file tw_node.cpp.

274  {
275  switch (type()) {
276  case kStart:
277  return is_start();
278  break;
279 
280  case kEnd:
281  return is_end();
282  break;
283 
284  case kDump:
285  return is_dump();
286  break;
287 
288  case kDelivery:
289  return is_delivery();
290  break;
291 
292  case kPickup:
293  return is_pickup();
294  break;
295 
296  case kLoad:
297  return is_load();
298  break;
299 
300  default:
301  return false;
302  break;
303  }
304 
305  return false;
306 }

References vrprouting::problem::Tw_node::is_delivery(), vrprouting::problem::Tw_node::is_dump(), vrprouting::problem::Tw_node::is_end(), vrprouting::problem::Tw_node::is_load(), vrprouting::problem::Tw_node::is_pickup(), vrprouting::problem::Tw_node::is_start(), vrprouting::problem::kDelivery, vrprouting::problem::kDump, vrprouting::problem::kEnd, vrprouting::problem::kLoad, vrprouting::problem::kPickup, vrprouting::problem::kStart, and vrprouting::problem::Tw_node::type().

◆ is_waitTime_compatible_IJ()

bool vrprouting::problem::Tw_node::is_waitTime_compatible_IJ ( const Tw_node I,
Speed  speed = 1.0 
) const
inherited

can arrive to this after visiting as late as possible I? TODO refine description

Parameters
[in]Inode visited before visiting this node
[in]speed- speed used for calculation
Returns
true when TODO TBD
false this node is TODO TBD
false I node is TODO TBD

Definition at line 162 of file tw_node.cpp.

162  {
163  return
164  is_compatible_IJ(I, speed)
165  && is_early_arrival(arrival_j_opens_i(I, speed));
166 }

References vrprouting::problem::Tw_node::arrival_j_opens_i(), vrprouting::problem::Tw_node::is_compatible_IJ(), and vrprouting::problem::Tw_node::is_early_arrival().

◆ objective()

double vrprouting::problem::Vehicle_node::objective ( ) const

the basic objective function for this node

Returns
the value of the objective function for this node

Definition at line 39 of file vehicle_node.cpp.

39  {
40  return static_cast<double>(travel_time());
41 }

References travel_time().

◆ opens()

◆ operator==()

bool vrprouting::problem::Tw_node::operator== ( const Tw_node other) const
inherited

equality operator

Returns
true when the other node is the same as this node
Parameters
[in]other

Definition at line 258 of file tw_node.cpp.

258  {
259  if (&other == this) return true;
260  return m_order == other.m_order
261  && m_opens == other.m_opens
262  && m_closes == other.m_closes
263  && m_service_time == other.m_service_time
264  && m_demand == other.m_demand
265  && m_type == other.m_type
266  && id() == other.id()
267  && idx() == other.idx();
268 }

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

◆ order()

int64_t vrprouting::problem::Tw_node::order ( ) const
inlineinherited

Returns the order to which it belongs.

Definition at line 75 of file tw_node.h.

75 {return m_order;}

References vrprouting::problem::Tw_node::m_order.

Referenced by get_postgres_result().

◆ reset_id()

void vrprouting::Identifier::reset_id ( int64_t  _id)
inherited

change the original id

Definition at line 47 of file identifier.cpp.

47  {
48  m_id = _id;
49 }

References vrprouting::Identifier::m_id.

Referenced by vrprouting::problem::Tw_node::Tw_node().

◆ service_time()

◆ total_service_time()

TInterval vrprouting::problem::Vehicle_node::total_service_time ( ) const
inline

_time spent by the truck servicing the nodes

Definition at line 95 of file vehicle_node.h.

95 {return m_tot_service_time;}

References m_tot_service_time.

Referenced by evaluate().

◆ total_time()

TInterval vrprouting::problem::Vehicle_node::total_time ( ) const
inlineprotected

Definition at line 117 of file vehicle_node.h.

References m_arrival_time, and m_departure_time.

◆ total_travel_time()

TInterval vrprouting::problem::Vehicle_node::total_travel_time ( ) const
inline

_time spent moving between nodes by the truck

Definition at line 89 of file vehicle_node.h.

89 {return m_tot_travel_time;}

References m_tot_travel_time.

Referenced by evaluate().

◆ total_wait_time()

TInterval vrprouting::problem::Vehicle_node::total_wait_time ( ) const
inline

_time spent by the truck waiting for nodes to open

Definition at line 92 of file vehicle_node.h.

92 {return m_tot_wait_time;}

References m_tot_wait_time.

Referenced by evaluate().

◆ travel_time()

TInterval vrprouting::problem::Vehicle_node::travel_time ( ) const
inline

Vehicle's travel_time from previous node to this node.

Definition at line 65 of file vehicle_node.h.

65 {return m_travel_time;}

References m_travel_time.

Referenced by evaluate(), get_postgres_result(), objective(), and vrprouting::problem::operator<<().

◆ travel_time_to()

TInterval vrprouting::problem::Tw_node::travel_time_to ( const Tw_node other,
TTimestamp  time,
Speed  speed = 1.0 
) const
inherited

travel time to other node.

Parameters
[in]other- pointer to the other Tw_node
[in]time- time of departure from previous node
[in]speed- speed used for calculation
Returns
the travel time from this to other]

Definition at line 51 of file tw_node.cpp.

51  {
52  pgassert(speed != 0);
53  return static_cast<TInterval>(static_cast<Speed>(m_time_matrix_ptr->travel_time(id(), other.id(), time)) / speed);
54 }

References vrprouting::Identifier::id(), vrprouting::problem::Tw_node::m_time_matrix_ptr, pgassert, and vrprouting::problem::Matrix::travel_time().

Referenced by vrprouting::problem::Tw_node::arrival_j_closes_i(), vrprouting::problem::Tw_node::arrival_j_opens_i(), and evaluate().

◆ twvTot()

int vrprouting::problem::Vehicle_node::twvTot ( ) const
inline

Vehicle's total times it has violated time windows.

Definition at line 80 of file vehicle_node.h.

80 {return m_twvTot;}

References m_twvTot.

Referenced by evaluate(), get_postgres_result(), and vrprouting::problem::operator<<().

◆ type()

auto vrprouting::problem::Tw_node::type ( ) const
inlineinherited

Returns the type of this node.

Definition at line 87 of file tw_node.h.

87 {return m_type;}

References vrprouting::problem::Tw_node::m_type.

Referenced by get_postgres_result(), vrprouting::problem::Tw_node::is_valid(), and vrprouting::problem::Tw_node::type_str().

◆ type_str()

std::string vrprouting::problem::Tw_node::type_str ( ) const
inherited

returns a string code of the kind of node

Returns
the short hand of the kind of node

Definition at line 171 of file tw_node.cpp.

171  {
172  switch (type()) {
173  case kStart: return "S";
174  case kEnd: return "E";
175  case kDump: return "D";
176  case kLoad: return "L";
177  case kPickup: return "P";
178  case kDelivery: return "D";
179  default: return "UNKNOWN";
180  }
181 }

References vrprouting::problem::kDelivery, vrprouting::problem::kDump, vrprouting::problem::kEnd, vrprouting::problem::kLoad, vrprouting::problem::kPickup, vrprouting::problem::kStart, and vrprouting::problem::Tw_node::type().

Referenced by vrprouting::problem::operator<<().

◆ wait_time()

TInterval vrprouting::problem::Vehicle_node::wait_time ( ) const
inline

Vehicle's wait_time at this node.

Definition at line 71 of file vehicle_node.h.

71 {return m_wait_time;}

References m_wait_time.

Referenced by evaluate(), get_postgres_result(), and vrprouting::problem::operator<<().

◆ window_length()

TInterval vrprouting::problem::Tw_node::window_length ( ) const
inlineinherited

Returns the length of time between the opening and closing.

Definition at line 90 of file tw_node.h.

90 {return m_closes - m_opens;}

References vrprouting::problem::Tw_node::m_closes, and vrprouting::problem::Tw_node::m_opens.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  log,
const Vehicle_node v 
)
friend

Print the contents of a Vehicle_node object.

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 }

Member Data Documentation

◆ m_arrival_time

TTimestamp vrprouting::problem::Vehicle_node::m_arrival_time
private

Arrival time at this node.

Definition at line 145 of file vehicle_node.h.

Referenced by arrival_time(), deltaGeneratesTWV(), evaluate(), has_twv(), and total_time().

◆ m_cargo

Amount vrprouting::problem::Vehicle_node::m_cargo
private

Accumulated cargo.

Definition at line 165 of file vehicle_node.h.

Referenced by cargo(), evaluate(), and has_cv().

◆ m_closes

◆ m_cvTot

int vrprouting::problem::Vehicle_node::m_cvTot
private

Total count of CV.

Definition at line 171 of file vehicle_node.h.

Referenced by cvTot(), evaluate(), and feasible().

◆ m_delta_time

TInterval vrprouting::problem::Vehicle_node::m_delta_time
private

Departure time - last nodes departure time.

Definition at line 157 of file vehicle_node.h.

Referenced by delta_time(), and evaluate().

◆ m_demand

Amount vrprouting::problem::Tw_node::m_demand
privateinherited

◆ m_departure_time

TTimestamp vrprouting::problem::Vehicle_node::m_departure_time
private

Departure time from this node.

Definition at line 154 of file vehicle_node.h.

Referenced by departure_time(), evaluate(), and total_time().

◆ m_id

int64_t vrprouting::Identifier::m_id
privateinherited

Definition at line 87 of file identifier.h.

Referenced by vrprouting::Identifier::id(), and vrprouting::Identifier::reset_id().

◆ m_idx

size_t vrprouting::Identifier::m_idx
privateinherited

Definition at line 86 of file identifier.h.

Referenced by vrprouting::Identifier::idx().

◆ m_opens

◆ m_order

int64_t vrprouting::problem::Tw_node::m_order { }
privateinherited

order to which it belongs (idx)

Definition at line 174 of file tw_node.h.

Referenced by vrprouting::problem::Tw_node::operator==(), and vrprouting::problem::Tw_node::order().

◆ m_service_time

TInterval vrprouting::problem::Tw_node::m_service_time
privateinherited

◆ m_time_matrix_ptr

const Matrix * vrprouting::problem::Tw_node::m_time_matrix_ptr = nullptr
staticinherited

◆ m_tot_service_time

TInterval vrprouting::problem::Vehicle_node::m_tot_service_time
private

Accumulated service time.

Definition at line 180 of file vehicle_node.h.

Referenced by evaluate(), and total_service_time().

◆ m_tot_travel_time

TInterval vrprouting::problem::Vehicle_node::m_tot_travel_time
private

Accumulated travel time.

Definition at line 177 of file vehicle_node.h.

Referenced by evaluate(), and total_travel_time().

◆ m_tot_wait_time

TInterval vrprouting::problem::Vehicle_node::m_tot_wait_time
private

Accumulated wait time.

Definition at line 174 of file vehicle_node.h.

Referenced by evaluate(), and total_wait_time().

◆ m_travel_time

TInterval vrprouting::problem::Vehicle_node::m_travel_time
private

Travel time from last node.

Definition at line 142 of file vehicle_node.h.

Referenced by evaluate(), and travel_time().

◆ m_twvTot

int vrprouting::problem::Vehicle_node::m_twvTot
private

Total count of TWV.

Definition at line 168 of file vehicle_node.h.

Referenced by evaluate(), feasible(), and twvTot().

◆ m_type

◆ m_wait_time

TInterval vrprouting::problem::Vehicle_node::m_wait_time
private

Wait time at this node.

  • 0 when arrived after the node opens
  • >0 when arrived before the node opens

Definition at line 151 of file vehicle_node.h.

Referenced by evaluate(), and wait_time().


The documentation for this class was generated from the following files:
vrprouting::problem::Vehicle_node::arrival_time
TTimestamp arrival_time() const
Vehicle's arrival_time to this node.
Definition: vehicle_node.h:68
vrprouting::problem::Vehicle_node::feasible
bool feasible() const
True when the total count for violations are 0.
Definition: vehicle_node.h:128
vrprouting::problem::Matrix::travel_time
TInterval travel_time(Id, Id, TTimestamp) const
retrun the travel time times when using the time dependant multipliers
Definition: matrix.cpp:233
vrprouting::problem::Vehicle_node::twvTot
int twvTot() const
Vehicle's total times it has violated time windows.
Definition: vehicle_node.h:80
vrprouting::problem::kDump
@ kDump
dump site, empties truck
Definition: node_types.h:39
vrprouting::problem::Vehicle_node::m_delta_time
TInterval m_delta_time
Departure time - last nodes departure time.
Definition: vehicle_node.h:157
vrprouting::problem::Tw_node::m_order
int64_t m_order
order to which it belongs (idx)
Definition: tw_node.h:174
vrprouting::problem::Vehicle_node::m_travel_time
TInterval m_travel_time
Travel time from last node.
Definition: vehicle_node.h:142
vrprouting::problem::Tw_node::is_delivery
bool is_delivery() const
Is the node a valid order's delivery node.
Definition: tw_node.cpp:210
vrprouting::problem::Tw_node::arrival_j_opens_i
TTimestamp arrival_j_opens_i(const Tw_node &I, Speed=1.0) const
arrival time at This node, when arrived at I at opening time TODO refine description
Definition: tw_node.cpp:66
vrprouting::problem::Tw_node::m_closes
TTimestamp m_closes
closing time of the node
Definition: tw_node.h:180
vrprouting::Identifier::id
int64_t id() const
get the original id
Definition: identifier.cpp:42
vrprouting::problem::kStart
@ kStart
starting site
Definition: node_types.h:36
vrprouting::Identifier::m_id
int64_t m_id
Definition: identifier.h:87
vrprouting::problem::Tw_node::demand
Amount demand() const
Returns the demand associated with this node.
Definition: tw_node.h:163
vrprouting::problem::Tw_node::closes
TTimestamp closes() const
Returns the closing time.
Definition: tw_node.h:81
vrprouting::problem::Vehicle_node::has_twv
bool has_twv() const
does the node violates the time windows constraints?
Definition: vehicle_node.cpp:182
vrprouting::Identifier::m_idx
size_t m_idx
Definition: identifier.h:86
vrprouting::problem::kDelivery
@ kDelivery
delivery site
Definition: node_types.h:38
pgassert
#define pgassert(expr)
Uses the standard assert syntax.
Definition: pgr_assert.h:95
vrprouting::problem::Tw_node::service_time
TInterval service_time() const
Returns the service time for this node.
Definition: tw_node.h:84
vrprouting::problem::Tw_node::is_dump
bool is_dump() const
Is the node a valid vehicle's dumping node.
Definition: tw_node.cpp:222
vrprouting::problem::Tw_node::type
auto type() const
Returns the type of this node.
Definition: tw_node.h:87
Speed
double Speed
Definition: typedefs.h:76
vrprouting::problem::Vehicle_node::delta_time
TInterval delta_time() const
delta_time = departure_time(this) - departure_time(previous)
Definition: vehicle_node.h:120
vrprouting::problem::Tw_node::is_late_arrival
bool is_late_arrival(TTimestamp arrival_time) const
True when arrivalTime is after it closes.
Definition: tw_node.h:121
vrprouting::problem::kLoad
@ kLoad
load site, fills the truck
Definition: node_types.h:40
vrprouting::Identifier::idx
size_t idx() const
get the internal index
Definition: identifier.cpp:37
vrprouting::problem::Vehicle_node::cvTot
int cvTot() const
Vehicle's total times it has violated cargo limits.
Definition: vehicle_node.h:83
vrprouting::problem::Vehicle_node::has_cv
bool has_cv(PAmount cargoLimit) const
does the node violates the capacity constraints?
Definition: vehicle_node.cpp:172
vrprouting::problem::Vehicle_node::m_tot_wait_time
TInterval m_tot_wait_time
Accumulated wait time.
Definition: vehicle_node.h:174
vrprouting::problem::Vehicle_node::departure_time
TTimestamp departure_time() const
Vehicle's departure_time from this node.
Definition: vehicle_node.h:74
vrprouting::problem::Tw_node::is_pickup
bool is_pickup() const
Is the node a valid order's pickup node.
Definition: tw_node.cpp:199
vrprouting::problem::Tw_node::is_compatible_IJ
bool is_compatible_IJ(const Tw_node &I, Speed=1.0) const
is possible to arrive to this after visiting other?
Definition: tw_node.cpp:94
vrprouting::problem::Vehicle_node::m_cargo
Amount m_cargo
Accumulated cargo.
Definition: vehicle_node.h:165
Solution_rt
Solution schedule when twv & cw are hard restrictions.
Definition: solution_rt.h:56
vrprouting::problem::kPickup
@ kPickup
pickup site
Definition: node_types.h:37
vrprouting::problem::kEnd
@ kEnd
ending site
Definition: node_types.h:41
vrprouting::problem::Vehicle_node::travel_time
TInterval travel_time() const
Vehicle's travel_time from previous node to this node.
Definition: vehicle_node.h:65
vrprouting::problem::Vehicle_node::m_twvTot
int m_twvTot
Total count of TWV.
Definition: vehicle_node.h:168
vrprouting::problem::Vehicle_node::m_tot_travel_time
TInterval m_tot_travel_time
Accumulated travel time.
Definition: vehicle_node.h:177
vrprouting::problem::Vehicle_node::m_tot_service_time
TInterval m_tot_service_time
Accumulated service time.
Definition: vehicle_node.h:180
vrprouting::problem::Tw_node::m_demand
Amount m_demand
The demand for the Node.
Definition: tw_node.h:186
vrprouting::problem::Tw_node::order
int64_t order() const
Returns the order to which it belongs.
Definition: tw_node.h:75
vrprouting::problem::Tw_node::Tw_node
Tw_node()=delete
Creating a Tw_node is not permitted.
vrprouting::problem::Tw_node::arrival_j_closes_i
TTimestamp arrival_j_closes_i(const Tw_node &I, Speed=1.0) const
arrival time at This node, when arrived at I at closing time TODO refine description
Definition: tw_node.cpp:81
vrprouting::problem::Tw_node::is_end
bool is_end() const
Is the node a valid vehicle's ending node.
Definition: tw_node.cpp:245
vrprouting::problem::Vehicle_node::m_wait_time
TInterval m_wait_time
Wait time at this node.
Definition: vehicle_node.h:151
vrprouting::problem::Vehicle_node::cargo
Amount cargo() const
Vehicle's total cargo after the node was served.
Definition: vehicle_node.h:86
vrprouting::problem::Vehicle_node::wait_time
TInterval wait_time() const
Vehicle's wait_time at this node.
Definition: vehicle_node.h:71
TInterval
int64_t TInterval
Definition: typedefs.h:72
vrprouting::problem::Tw_node::m_time_matrix_ptr
static const Matrix * m_time_matrix_ptr
Definition: tw_node.h:139
vrprouting::problem::Tw_node::m_service_time
TInterval m_service_time
time it takes to be served
Definition: tw_node.h:183
vrprouting::problem::Tw_node::is_load
bool is_load() const
Is the node a valid vehicle's loading node.
Definition: tw_node.cpp:234
vrprouting::problem::Tw_node::is_early_arrival
bool is_early_arrival(TTimestamp arrival_time) const
True when arrivalTime is before it opens.
Definition: tw_node.h:126
vrprouting::problem::Vehicle_node::m_arrival_time
TTimestamp m_arrival_time
Arrival time at this node.
Definition: vehicle_node.h:145
vrprouting::problem::Vehicle_node::m_departure_time
TTimestamp m_departure_time
Departure time from this node.
Definition: vehicle_node.h:154
vrprouting::problem::Tw_node::opens
TTimestamp opens() const
Returns the opening time.
Definition: tw_node.h:78
vrprouting::problem::Tw_node::is_start
bool is_start() const
Is the node a valid vehicle's starting node.
Definition: tw_node.cpp:187
vrprouting::problem::Tw_node::m_type
NodeType m_type
The kind of Node.
Definition: tw_node.h:189
vrprouting::problem::Vehicle_node::m_cvTot
int m_cvTot
Total count of CV.
Definition: vehicle_node.h:171
vrprouting::problem::Tw_node::m_opens
TTimestamp m_opens
opening time of the node
Definition: tw_node.h:177