Implementacja tabu search dla TSP
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #ifndef GRAPH_H
  2. #define GRAPH_H
  3. #include <vector>
  4. class Graph
  5. {
  6. public:
  7. Graph();
  8. virtual ~Graph();
  9. virtual bool addEdge(unsigned v, unsigned w, unsigned weight) = 0;
  10. virtual bool removeEdge(unsigned v, unsigned w) = 0;
  11. virtual unsigned getWeight(unsigned v, unsigned w) = 0;
  12. unsigned getVertexNumber();
  13. virtual void displayGraph() = 0;
  14. static void randomGenerateFullGraph(Graph &graph, unsigned maxWeight);
  15. static std::vector<unsigned> travellingSalesmanBruteForce(Graph &graph);
  16. static std::vector<unsigned> travellingSalesmanBranchAndBound(Graph &graph);
  17. static std::vector<unsigned> travellingSalesmanGreedy(Graph &graph, unsigned startVertex);
  18. static std::vector<unsigned> travellingSalesmanHybrid(Graph &graph);
  19. static std::vector<unsigned> travellingSalesmanRandom(Graph &graph);
  20. static std::vector<unsigned> travellingSalesmanTabuSearch(Graph &graph, unsigned tabuSteps, bool diversification, int iterationsToRestart, unsigned minStopTime, unsigned threadsNumber);
  21. protected:
  22. unsigned vertexNumber;
  23. private:
  24. static void travellingSalesmanTabuSearchEngine(Graph &graph, unsigned tabuSteps, bool diversification, int iterationsToRestart, unsigned minStopTime, std::vector<unsigned> startRoute, std::vector<unsigned> &result, int &resultLength);
  25. class RouteComparison
  26. {
  27. public:
  28. bool operator() (const std::vector<unsigned>& lhs, const std::vector<unsigned>& rhs) const
  29. {
  30. return (lhs.at(0) > rhs.at(0));
  31. }
  32. };
  33. };
  34. #endif // GRAPH_H