Engine Selectors

Header: fiction/technology/sidb/simulation/engine.hpp

inline std::optional<engine> fiction::sidb::simulation::get_engine(const std::string_view &name) noexcept

Returns a simulation engine by case-insensitive name.

Parameters:

name – Name of the desired SiDB simulation engine.

Returns:

SiDB simulation engine that matches the given name, or std::nullopt if no simulation engine by the given name exists.

enum class fiction::sidb::simulation::engine : uint8_t

Selector for the available SiDB simulation engines.

Values:

enumerator EXGS

Exhaustive Ground State Search (EXGS) is an exact simulation engine that always has exponential runtime.

enumerator QUICKSIM

QuickSim is a heuristic simulation engine that only requires polynomial runtime.

enumerator QUICKEXACT

QuickExact is also an exact simulation engine that requires exponential runtime, but it scales a lot better than ExGS due to its effective search-space pruning.

enumerator CLUSTERCOMPLETE

ClusterComplete is a novel exact simulation engine that requires exponential runtime, though, depending on the simulation problem, it effectively reduces the base number by a real number, thus allowing problem sizes that were previously considered astronomical in size. Inherent to the simulation methodology that does not depend on the simulation base, it simulates very effectively for either base number (2 or 3).

enum class fiction::sidb::simulation::exact_engine : uint8_t

Selector exclusively for exact SiDB simulation engines.

Values:

enumerator EXGS

Exhaustive Ground State Search (EXGS) is an exact simulation engine that always has exponential runtime.

enumerator QUICKEXACT

QuickExact is also an exact simulation engine that requires exponential runtime, but it scales a lot better than ExGS due to its effective search-space pruning.

enumerator CLUSTERCOMPLETE

ClusterComplete is a novel exact simulation engine that requires exponential runtime, though, depending on the simulation problem, it effectively reduces the base number by a real number, thus allowing problem sizes that were previously considered astronomical. Inherent to the simulation methodology that does not depend on the simulation base, it simulates very effectively for either base number (2 or 3).

enum class fiction::sidb::simulation::heuristic_engine : uint8_t

Selector exclusively for heuristic SiDB simulation engines.

Values:

enumerator QUICKSIM

QuickSim is a heuristic simulation engine that only requires polynomial runtime.

template<typename EngineType>
std::string_view fiction::sidb::simulation::engine_name(const EngineType &eng) noexcept

Returns the name of the given simulation engine.

Template Parameters:

EngineType – The type of the SiDB simulation engine (exhaustive/heuristic/generic).

Parameters:

eng – An SiDB simulation engine.

Returns:

The name of the simulation engine.

class sidb_simulation_engine(*values)

Selector for the available SiDB simulation engines.

EXGS = 0
QUICKSIM = 1
QUICKEXACT = 2
CLUSTERCOMPLETE = 3
class exact_sidb_simulation_engine(*values)

Selector exclusively for exact SiDB simulation engines.

EXGS = 0
QUICKEXACT = 1
CLUSTERCOMPLETE = 2
class heuristic_sidb_simulation_engine(*values)

Selector exclusively for heuristic SiDB simulation engines.

QUICKSIM = 0
sidb_simulation_engine_name(engine: sidb_simulation_engine) → str
sidb_simulation_engine_name(engine: exact_sidb_simulation_engine) → str
sidb_simulation_engine_name(engine: heuristic_sidb_simulation_engine) → str

Returns the name of the given simulation engine.

Parameters:

engine – An SiDB simulation engine.

Template Args:

EngineType – The type of the SiDB simulation engine (exhaustive/heuristic/generic).

Returns:

The name of the simulation engine.