Operational Research Library  1.0
BinPackingProblem.h
Go to the documentation of this file.
1 #ifndef BINPACKINGPROBLEM_H
2 #define BINPACKINGPROBLEM_H
3 
4 #include <iostream>
5 #include <fstream>
6 #include <sstream>
7 #include <algorithm>
8 #include <vector>
9 #include "RandomHelper.h"
10 #include "IData.h"
11 
12 namespace operational_research
13 {
14 
22 class BinPackingProblem : public IData
23 {
24 private:
25  // Number of objects.
26  unsigned int objects;
27 
28  // Weights of objects.
29  std::vector<double> weights;
30 
31  // Bin capacity.
32  double capacity;
33 
39  bool checkSchedule(const std::vector<unsigned int>& schedule);
40 
48  void writeResultToFile(const std::vector<unsigned int>& schedule, unsigned int costFunctionValue, const std::string& filename);
49 
50 public:
58  BinPackingProblem(unsigned int objects, const std::vector<double>& weights, double capacity);
59 
69  BinPackingProblem(unsigned int objects, double capacity, double minWeight, double maxWeight, bool integerValues = false);
70 
77  BinPackingProblem(const std::string& filename);
78 
86  void setData(unsigned int objects, const std::vector<double>& weights, double capacity);
87 
97  void generateData(unsigned int objects, double capacity, double minWeight, double maxWeight, bool integerValues = false);
98 
105  void readDataFromFile(const std::string& filename);
106 
112  void writeDataToFile(const std::string& filename);
113 
117  void showData();
118 
125  unsigned int evaluateBPP(const std::vector<unsigned int>& schedule);
126 
135  unsigned int evaluateBPP(const std::vector<unsigned int>& schedule, const std::string& filename);
136 
141  double getCapacity() const {
142  return capacity;
143  }
144 
149  unsigned int getObjects() const {
150  return objects;
151  }
152 
157  const std::vector<double>& getWeights() const {
158  return weights;
159  }
160 };
161 
162 } // namespace operational_research
163 
164 #endif // BINPACKINGPROBLEM_H
unsigned int getObjects() const
Getter for number of objects.
Definition: BinPackingProblem.h:149
Interface for reading, writing and displaying data.
void generateData(unsigned int objects, double capacity, double minWeight, double maxWeight, bool integerValues=false)
Generates bin packing problem data according to setup.
Definition: BinPackingProblem.cpp:75
void writeDataToFile(const std::string &filename)
Writes bin packing problem data to a file with a filename.
Definition: BinPackingProblem.cpp:248
Definition: BinPackingProblem.cpp:3
void setData(unsigned int objects, const std::vector< double > &weights, double capacity)
Setter for bin packing problem data.
Definition: BinPackingProblem.cpp:207
void readDataFromFile(const std::string &filename)
Reads bin packing problem data from a file with a filename.
Definition: BinPackingProblem.cpp:125
Definition: BinPackingProblem.h:22
const std::vector< double > & getWeights() const
Getter for weights of objects.
Definition: BinPackingProblem.h:157
unsigned int evaluateBPP(const std::vector< unsigned int > &schedule)
Evaluates bin packing problem.
Definition: BinPackingProblem.cpp:41
void showData()
Shows bin packing problem data.
Definition: BinPackingProblem.cpp:236
Simple pseudo random number generator class.
double getCapacity() const
Getter for bin capacity.
Definition: BinPackingProblem.h:141
BinPackingProblem(unsigned int objects, const std::vector< double > &weights, double capacity)
Constructor.
Definition: BinPackingProblem.cpp:11
Definition: IData.h:14