vrpRouting  0.3
vrprouting::optimizers::tabu Namespace Reference

Classes

class  Move
 The Move class defines moves that are evaluated and set as tabu. More...
 
class  Optimize
 Class that optimizes a solution. More...
 
class  TabuList
 The TabuList class defines the tabu list to be used in optimization. More...
 

Functions

std::ostream & operator<< (std::ostream &log, const Move &m)
 
std::ostream & operator<< (std::ostream &log, const TabuList &list)
 
bool operator== (const Move &a, const Move &b)
 

Function Documentation

◆ operator<<() [1/2]

std::ostream& vrprouting::optimizers::tabu::operator<< ( std::ostream &  log,
const Move m 
)
Parameters
[in,out]log- where to write
[in]m- move to write
Returns
log with move information

Definition at line 66 of file move.cpp.

66  {
67  log << m.m_oid1 << ":" << m.m_oid2 << ":"
68  << m.m_vid1 << ":" << m.m_vid2 << ":"
69  << m.m_is_swap;
70  return log;
71  }

References vrprouting::optimizers::tabu::Move::m_is_swap, vrprouting::optimizers::tabu::Move::m_oid1, vrprouting::optimizers::tabu::Move::m_oid2, vrprouting::optimizers::tabu::Move::m_vid1, and vrprouting::optimizers::tabu::Move::m_vid2.

◆ operator<<() [2/2]

std::ostream& vrprouting::optimizers::tabu::operator<< ( std::ostream &  log,
const TabuList list 
)
Parameters
[in,out]logwhere the print takes place
[in]listThe tabu list to be printed

Definition at line 140 of file tabu_list.cpp.

140  {
141  log << "\nTabuList length: " << list.size()
142  << "\n *><* *** tabu list start *** ";
143 
144  for (const auto &m : list) log << m << ' ';
145 
146  log << " *** tabu list end ***\n";
147  return log;
148 }

References vrprouting::optimizers::tabu::TabuList::size().

◆ operator==()

bool vrprouting::optimizers::tabu::operator== ( const Move a,
const Move b 
)
Parameters
[in]a- left hand side move
[in]b- right hand side move
Returns
true when the left hand side move move is the same as the right hand side move

Definition at line 80 of file move.cpp.

80  {
81  /*
82  * possible cases are captured in TabuList::has_move and TabuList::has_swap:
83  */
84  return (
85  a.oid1() == b.oid1()
86  && a.oid2() == b.oid2()
87  && a.vid1() == b.vid1()
88  && a.vid2() == b.vid2()
89 #if 0
90  && a.to_objective() == b.to_objective()
91  && a.from_objective() == b.from_objective()
92 #endif
93  && a.is_swap() == b.is_swap());
94  }

References vrprouting::optimizers::tabu::Move::from_objective(), vrprouting::optimizers::tabu::Move::is_swap(), vrprouting::optimizers::tabu::Move::oid1(), vrprouting::optimizers::tabu::Move::oid2(), vrprouting::optimizers::tabu::Move::to_objective(), vrprouting::optimizers::tabu::Move::vid1(), and vrprouting::optimizers::tabu::Move::vid2().