vrpRouting  0.3
optimizers/tabu.h
Go to the documentation of this file.
1 /*PGR-GNU*****************************************************************
2 
3 FILE: optimize.h
4 
5 Copyright (c) 2015 pgRouting developers
7 
8 ------
9 
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2 of the License, or
13 (at your option) any later version.
14 
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19 
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 
24  ********************************************************************PGR-GNU*/
25 
28 #ifndef INCLUDE_OPTIMIZERS_TABU_H_
29 #define INCLUDE_OPTIMIZERS_TABU_H_
30 #pragma once
31 
32 #include "problem/solution.h"
33 #include "optimizers/tabu_list.h"
34 
35 namespace vrprouting {
36 namespace optimizers {
37 namespace tabu {
38 
51 class Optimize : public problem::Solution {
52  public:
54  Optimize(const problem::Solution& solution, size_t times, bool stop_on_all_served, bool);
55 
58 
59  private:
62 
64  void tabu_search();
65 
66  void sort_by_size(bool asc);
67 
69  void set_tabu_list_length();
70 
72  void delete_empty_truck();
73 
75  bool move_2_real();
76 
78  bool single_pair_insertion(bool intensify, bool diversify);
79 
81  bool swap_between_routes(bool intensify, bool diversify);
82 
84  void save_if_best();
85 
87  size_t m_max_cycles;
88 
91 
93  bool m_optimize;
94 
96  size_t m_standard_limit = 30;
97 
99  void intensify();
100 
102  bool diversify();
103 
106 };
107 
108 } // namespace tabu
109 } // namespace optimizers
110 } // namespace vrprouting
111 
112 #endif // INCLUDE_OPTIMIZERS_TABU_H_
vrprouting::problem::Solution
Definition: solution.h:50
vrprouting::optimizers::tabu::Optimize::save_if_best
void save_if_best()
save a new found solution only if it is best
Definition: optimizers/tabu.cpp:805
vrprouting::optimizers::tabu::Optimize::best_solution
problem::Solution best_solution
The best solution so far.
Definition: optimizers/tabu.h:57
vrprouting::optimizers::tabu::Optimize::swap_between_routes
bool swap_between_routes(bool intensify, bool diversify)
Swapping pairs Between Routes: initiate directed or undirected swaps of orders between vehicles.
Definition: optimizers/tabu.cpp:587
vrprouting::optimizers::tabu::Optimize::tabu_list
TabuList tabu_list
Tabu lists of the problem.
Definition: optimizers/tabu.h:61
tabu_list.h
vrprouting::optimizers::tabu::Optimize::single_pair_insertion
bool single_pair_insertion(bool intensify, bool diversify)
Single Pair Insertion: move order from one vehicle to another that reduces objective value.
Definition: optimizers/tabu.cpp:468
vrprouting::optimizers::tabu::Optimize
Class that optimizes a solution.
Definition: optimizers/tabu.h:51
vrprouting::optimizers::tabu::Optimize::intensify
void intensify()
Intensify the search.
Definition: optimizers/tabu.cpp:408
vrprouting::optimizers::tabu::Optimize::move_2_real
bool move_2_real()
moves orders from phony vehicles to a real vehicle
Definition: optimizers/tabu.cpp:134
vrprouting::optimizers::tabu::Optimize::sort_by_size
void sort_by_size(bool asc)
Definition: optimizers/tabu.cpp:742
vrprouting::optimizers::tabu::Optimize::m_unassignedOrders
Identifiers< size_t > m_unassignedOrders
Set of unassigned orders.
Definition: optimizers/tabu.h:105
vrprouting::optimizers::tabu::Optimize::delete_empty_truck
void delete_empty_truck()
deletes phony vehicles that are empty
Definition: optimizers/tabu.cpp:788
vrprouting::optimizers::tabu::Optimize::diversify
bool diversify()
Diversify the search.
Definition: optimizers/tabu.cpp:437
vrprouting::optimizers::tabu::Optimize::m_stop_on_all_served
bool m_stop_on_all_served
Flag to stop when all orders are in real vehicles.
Definition: optimizers/tabu.h:90
vrprouting::optimizers::tabu::Optimize::m_standard_limit
size_t m_standard_limit
Limit for a cycle.
Definition: optimizers/tabu.h:96
vrprouting::optimizers::tabu::Optimize::m_optimize
bool m_optimize
Flag to just build a solution and not optimize it.
Definition: optimizers/tabu.h:93
vrprouting::optimizers::tabu::Optimize::Optimize
Optimize(const problem::Solution &solution, size_t times, bool stop_on_all_served, bool)
Optimization operation.
Definition: optimizers/tabu.cpp:95
vrprouting::optimizers::tabu::Optimize::set_tabu_list_length
void set_tabu_list_length()
set tabu length
Definition: optimizers/tabu.cpp:241
solution.h
vrprouting::optimizers::tabu::Optimize::m_max_cycles
size_t m_max_cycles
Maximum number of cycles on the optimization process.
Definition: optimizers/tabu.h:87
vrprouting::optimizers::tabu::TabuList
The TabuList class defines the tabu list to be used in optimization.
Definition: tabu_list.h:45
Identifiers< size_t >
vrprouting::optimizers::tabu::Optimize::tabu_search
void tabu_search()
Main optimization controller.
Definition: optimizers/tabu.cpp:274
vrprouting
Definition: base_matrix.cpp:46