indigoX
local_optimisation.hpp
Go to the documentation of this file.
1 #include "../../graph/assignment.hpp"
2 #include "../../utils/common.hpp"
3 #include "assigner.hpp"
4 
5 #include <bitset>
6 #include <cstdint>
7 #include <map>
8 #include <vector>
9 
10 #ifndef INDIGOX_ALGORITHM_ELECTRON_ASSIGNMENT_LOCAL_OPTIMISATION_HPP
11 #define INDIGOX_ALGORITHM_ELECTRON_ASSIGNMENT_LOCAL_OPTIMISATION_HPP
12 
13 namespace indigox::algorithm {
14 
20  enum _lo_bool_opts {
21  __all_mins,
22  __cache,
23  __cache_inf,
24  __num_opts
25  };
26 
27  public:
28  struct Settings {
36 
42  static uint32_t TIMEOUT;
43 
51  };
52 
53  public:
54  IXLocalOptimisation() = delete; // no default constructor
55 
61 
66  virtual void Initalise(const Molecule &mol) override;
67 
70  virtual void Run() override;
71 
72  private:
76  void BuildLocationMasks();
77 
85  void GetNeighbourAssignments(const AssignMask &m,
86  std::vector<AssignMask> &nbrs);
87 
88  private:
90  using LocMasks_t = std::map<graph::AGVertex, AssignMask>;
92  LocMasks_t _loc_masks;
94  uint32_t _timeout;
96  std::bitset<__num_opts> _lo_opts;
97  };
98 
99 } // namespace indigox::algorithm
100 
101 #endif /* INDIGOX_ALGORITHM_ELECTRON_ASSIGNMENT_LOCAL_OPTIMISATION_HPP */
Definition: access.hpp:7
Option
Definition: common.hpp:25
virtual void Run() override
Run the algorithm.
std::map< key_t, score_t > ScoreTable
Type of a score table.
Definition: assigner.hpp:27
static uint32_t TIMEOUT
Time limit for the optimisation, in milliseconds.
Definition: local_optimisation.hpp:42
virtual void Initalise(const Molecule &mol) override
Initalisation method.
Local optimisation electron assignment algorithm.
Definition: local_optimisation.hpp:18
boost::dynamic_bitset<> AssignMask
Type of the mask used for assignments.
Definition: assigner.hpp:23
static utils::Option USE_CACHE
Amount of cache to use.
Definition: local_optimisation.hpp:50
Definition: local_optimisation.hpp:28
Base class for an electron assignment algorithm.
Definition: assigner.hpp:44
static utils::Option OPTIMISE_LEVEL
Amount of optimisation to perform.
Definition: local_optimisation.hpp:35
Definition: molecule.hpp:15