vrpRouting  0.3
optimizers/simple.h
Go to the documentation of this file.
1 /*PGR-GNU*****************************************************************
2 
3 FILE: optimize.cpp
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_SIMPLE_H_
29 #define INCLUDE_OPTIMIZERS_SIMPLE_H_
30 #pragma once
31 
32 #include "problem/solution.h"
35 
36 namespace vrprouting {
37 namespace optimizers {
38 namespace simple {
39 
40 class Optimize : public problem::Solution {
42 
43  public:
44  Optimize(const problem::Solution &solution, size_t times, const Initials_code&);
45 
46  /* @brief decrease_truck
47  *
48  * Optimization by decreasing trucks
49  */
50  void decrease_truck();
51  void move_wait_time_based();
52  void move_duration_based();
53  void inter_swap(size_t times);
55 
56  Initials_code get_kind() const {return m_kind;}
57 
58  private:
59  bool decrease_truck(size_t);
60  void sort_for_move();
61  void sort_by_duration();
62  void sort_by_size();
63  void sort_by_id();
64  void delete_empty_truck();
65 
68  bool inter_swap();
69 
70  // TODO(pending) use const & where applicable
71  bool move_order(
72  problem::Order order,
73  problem::Vehicle_pickDeliver &from_truck,
75  bool swap_order();
76  bool swap_order(
77  problem::Order from_order,
78  problem::Vehicle_pickDeliver &from_truck,
79  problem::Order to_order,
81  void save_if_best();
82 
84 };
85 
86 } // namespace simple
87 } // namespace optimizers
88 } // namespace vrprouting
89 
90 #endif // INCLUDE_OPTIMIZERS_SIMPLE_H_
vrprouting::problem::Solution
Definition: solution.h:50
vrprouting::optimizers::simple::Optimize::sort_for_move
void sort_for_move()
Definition: optimizers/simple.cpp:511
vrprouting::initialsol::simple::Initials_code
Initials_code
Different kinds to insert an order into the vehicle.
Definition: initialsol/initials_code.h:37
vrprouting::optimizers::simple::Optimize::move_wait_time_based
void move_wait_time_based()
initials_code.h
vrprouting::optimizers::simple::Optimize::decrease_truck
void decrease_truck()
Definition: optimizers/simple.cpp:534
vrprouting::optimizers::simple::Optimize::save_if_best
void save_if_best()
Definition: optimizers/simple.cpp:579
vrprouting::optimizers::simple::Optimize::move_duration_based
void move_duration_based()
vrprouting::optimizers::simple::Optimize::sort_by_duration
void sort_by_duration()
Definition: optimizers/simple.cpp:354
vrprouting::problem::Solution::Solution
Solution()=delete
constructor
vrprouting::optimizers::simple::Optimize::get_kind
Initials_code get_kind() const
Definition: optimizers/simple.h:56
vrprouting::optimizers::simple::Optimize::move_reduce_cost
bool move_reduce_cost(problem::Vehicle_pickDeliver &from, problem::Vehicle_pickDeliver &to)
Definition: optimizers/simple.cpp:385
vrprouting::optimizers::simple::Optimize::sort_by_id
void sort_by_id()
Definition: optimizers/simple.cpp:333
vrprouting::problem::Vehicle_pickDeliver
Definition: vehicle_pickDeliver.h:46
vrprouting::optimizers::simple::Optimize::sort_by_size
void sort_by_size()
Definition: optimizers/simple.cpp:343
vehicle_pickDeliver.h
vrprouting::optimizers::simple::Optimize::Optimize
Optimize(const problem::Solution &solution, size_t times, const Initials_code &)
Definition: optimizers/simple.cpp:42
solution.h
vrprouting::optimizers::simple::Optimize::delete_empty_truck
void delete_empty_truck()
Definition: optimizers/simple.cpp:363
vrprouting::optimizers::simple::Optimize::swap_order
bool swap_order()
vrprouting::optimizers::simple::Optimize::swap_worse
bool swap_worse(problem::Vehicle_pickDeliver &from, problem::Vehicle_pickDeliver &to)
Definition: optimizers/simple.cpp:132
vrprouting::optimizers::simple::Optimize
Definition: optimizers/simple.h:40
vrprouting::optimizers::simple::Optimize::inter_swap
bool inter_swap()
Definition: optimizers/simple.cpp:87
vrprouting::problem::Order
Definition: order.h:40
vrprouting::optimizers::simple::Optimize::m_kind
Initials_code m_kind
Definition: optimizers/simple.h:83
vrprouting::optimizers::simple::Optimize::move_order
bool move_order(problem::Order order, problem::Vehicle_pickDeliver &from_truck, problem::Vehicle_pickDeliver &to_truck)
moves an order to an non empty vehicle
Definition: optimizers/simple.cpp:467
vrprouting::optimizers::simple::Optimize::best_solution
Solution best_solution
Definition: optimizers/simple.h:54
vrprouting
Definition: base_matrix.cpp:46