TCPSPSuite
earlyscheduler.hpp
1 #ifndef EARLYSCHEDULER_HPP
2 #define EARLYSCHEDULER_HPP
3 
4 #include "../datastructures/maybe.hpp" // for Maybe
5 #include <string> // for string
6 #include <vector> // for vector
7 #include "../instance/solution.hpp" // for Solution
8 #include "../util/log.hpp" // for Log
9 #include "../manager/solvers.hpp"
10 
11 class AdditionalResultStorage;
12 class Instance;
13 class SolverConfig;
14 class Traits;
15 
23 public:
31  EarlyScheduler(const Instance &instance, AdditionalResultStorage & additional, const SolverConfig & sconf);
32 
36  void run();
37 
44 
50  static std::string get_id();
51 
57  Maybe<double> get_lower_bound();
58 
64  static const Traits &get_requirements();
65 
66 private:
67  const Instance &instance;
68  std::vector<unsigned int> earliest_starts;
69 
70  // TODO not sure about LAGS_DAG...
71  static const Traits required_traits;
72 
73  Log l;
74 };
75 
76 // Register the solver
77 namespace solvers {
78 template <>
79 struct registry_hook<solvers::get_free_N<EarlyScheduler>()>
80 {
81  constexpr static unsigned int my_N = solvers::get_free_N<EarlyScheduler>();
82 
83  auto
84  operator()()
85  {
86  return solvers::register_class < EarlyScheduler, my_N > {}();
87  }
88 };
89 }
90 
91 #endif
EarlyScheduler::get_solution
Solution get_solution()
Definition: earlyscheduler.cpp:41
EarlyScheduler
A Solver for a TCPSP instance.
Definition: earlyscheduler.hpp:22
Instance
a TCPSP instance
Definition: instance.hpp:24
EarlyScheduler::get_id
static std::string get_id()
Definition: earlyscheduler.cpp:47
Solution
a soultion for a TCPSP instance
Definition: solution.hpp:17
EarlyScheduler::run
void run()
Definition: earlyscheduler.cpp:28
EarlyScheduler::get_requirements
static const Traits & get_requirements()
Definition: earlyscheduler.cpp:22
EarlyScheduler::EarlyScheduler
EarlyScheduler(const Instance &instance, AdditionalResultStorage &additional, const SolverConfig &sconf)
Definition: earlyscheduler.cpp:14
EarlyScheduler::get_lower_bound
Maybe< double > get_lower_bound()
Definition: earlyscheduler.cpp:35