Google OR-Tools: ortools/constraint_solver/routing_utils.h Source File

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef ORTOOLS_CONSTRAINT_SOLVER_ROUTING_UTILS_H_

15#define ORTOOLS_CONSTRAINT_SOLVER_ROUTING_UTILS_H_

16

17#include <cstdint>

18#include <functional>

19#include <utility>

20#include <vector>

21

22#include "absl/types/span.h"

23

25

26

27

29 public:

31 : num_bins_(num_bins),

32 load_per_bin_(num_bins),

33 load_limits_per_bin_(num_bins),

34 total_cost_(0) {}

35

36

37

38

39

40

41

42

48

50 std::function<int64_t(int, int)> load_demand_of_item_for_bin,

51 std::vector<LoadLimit> load_limit_per_bin);

52 int NumDimensions() const { return load_demands_per_dimension_.size(); }

53

54

57

58

60

62

63 int64_t TotalCost() const { return total_cost_; }

64

66

68

69 private:

70 const int num_bins_;

71

72 std::vector<std::vector<int64_t>> load_per_bin_;

73

74 std::vector<std::vector<LoadLimit>> load_limits_per_bin_;

75

76 std::vector<std::function<int64_t(int, int)>> load_demands_per_dimension_;

77 int64_t total_cost_;

78};

79

80

81

82

84 int num_arcs, int64_t start,

85 const std::function<int64_t(int64_t)>& next_accessor,

86 const std::function<bool(int64_t)>& is_end,

87 const std::function<int64_t(int64_t, int64_t, int64_t)>&

88 arc_cost_for_route_start,

89 std::vector<std::pair<int64_t, int>>* most_expensive_arc_starts_and_ranks,

90 std::pair<int, int>* first_expensive_arc_indices);

91

92}

93

94#endif

BinCapacities(int num_bins)

Definition routing_utils.h:30

bool RemoveItemFromBin(int item, int bin)

void AddDimension(std::function< int64_t(int, int)> load_demand_of_item_for_bin, std::vector< LoadLimit > load_limit_per_bin)

void ClearItemsOfBin(int bin)

bool CheckAdditionFeasibility(int item, int bin) const

int64_t TotalCost() const

Definition routing_utils.h:63

int NumDimensions() const

Definition routing_utils.h:52

bool AddItemToBin(int item, int bin)

bool CheckAdditionsFeasibility(absl::Span< const int > items, int bin) const

bool FindMostExpensiveArcsOnRoute(int num_arcs, int64_t start, const std::function< int64_t(int64_t)> &next_accessor, const std::function< bool(int64_t)> &is_end, const std::function< int64_t(int64_t, int64_t, int64_t)> &arc_cost_for_route_start, std::vector< std::pair< int64_t, int > > *most_expensive_arc_starts_and_ranks, std::pair< int, int > *first_expensive_arc_indices)

int64_t soft_max_load

Definition routing_utils.h:45

int64_t cost_above_soft_max_load

Definition routing_utils.h:46

int64_t max_load

Definition routing_utils.h:44