Operational Research Library  1.0
TravellingSalesmanProblem.h
Go to the documentation of this file.
1 #ifndef TRAVELLINGSALESMANPROBLEM_H
2 #define TRAVELLINGSALESMANPROBLEM_H
3 
4 #include <iostream>
5 #include <fstream>
6 #include <sstream>
7 #include <algorithm>
8 #include <vector>
9 #include "RandomHelper.h"
10 #include "CoordinatesHelper.h"
11 #include "IData.h"
12 
13 namespace operational_research
14 {
15 
24 {
25 private:
26  // Number of cities.
27  unsigned int cities;
28 
29  // Coordinates of cities.
30  std::vector<CoordinatesHelper> coordinates;
31 
37  bool checkSchedule(const std::vector<unsigned int>& schedule);
38 
46  void writeResultToFile(const std::vector<unsigned int>& schedule, double costFunctionValue, const std::string& filename);
47 
48 public:
55  TravellingSalesmanProblem(unsigned int cities, const std::vector<CoordinatesHelper>& coordinates);
56 
65  TravellingSalesmanProblem(unsigned int cities, double minCoordinate, double maxCoordinate, bool integerValues = false);
66 
73  TravellingSalesmanProblem(const std::string& filename);
74 
81  void setData(unsigned int cities, const std::vector<CoordinatesHelper>& coordinates);
82 
91  void generateData(unsigned int cities, double minCoordinate, double maxCoordinate, bool integerValues = false);
92 
99  void readDataFromFile(const std::string& filename);
100 
106  void writeDataToFile(const std::string& filename);
107 
111  void showData();
112 
119  double evaluateSTSP(const std::vector<unsigned int>& schedule);
120 
129  double evaluateSTSP(const std::vector<unsigned int>& schedule, const std::string& filename);
130 
135  unsigned int getCities() const {
136  return cities;
137  }
138 
143  const std::vector<CoordinatesHelper>& getCoordinates() const {
144  return coordinates;
145  }
146 };
147 
148 } // namespace operational_research
149 
150 #endif // TRAVELLINGSALESMANPROBLEM_H
void writeDataToFile(const std::string &filename)
Writes travelling salesman problem data to a file with a filename.
Definition: TravellingSalesmanProblem.cpp:198
Simple coordinates class.
Interface for reading, writing and displaying data.
void setData(unsigned int cities, const std::vector< CoordinatesHelper > &coordinates)
Setter for travelling salesman problem data.
Definition: TravellingSalesmanProblem.cpp:170
Definition: TravellingSalesmanProblem.h:23
Definition: BinPackingProblem.cpp:3
void showData()
Shows travelling salesman problem data.
Definition: TravellingSalesmanProblem.cpp:187
double evaluateSTSP(const std::vector< unsigned int > &schedule)
Evaluates symmetric travelling salesman problem.
Definition: TravellingSalesmanProblem.cpp:41
unsigned int getCities() const
Getter for number of cities.
Definition: TravellingSalesmanProblem.h:135
void generateData(unsigned int cities, double minCoordinate, double maxCoordinate, bool integerValues=false)
Generates travelling salesman problem data according to setup.
Definition: TravellingSalesmanProblem.cpp:71
Simple pseudo random number generator class.
const std::vector< CoordinatesHelper > & getCoordinates() const
Getter for coordinates of cities.
Definition: TravellingSalesmanProblem.h:143
void readDataFromFile(const std::string &filename)
Reads travelling salesman problem data from a file with a filename.
Definition: TravellingSalesmanProblem.cpp:104
TravellingSalesmanProblem(unsigned int cities, const std::vector< CoordinatesHelper > &coordinates)
Constructor.
Definition: TravellingSalesmanProblem.cpp:11
Definition: IData.h:14