39template <
typename GraphType>
44 for (std::size_t i = 0; i < system.num_spins; i++) {
45 ret_spins[i] =
static_cast<graph::Spin>(system.spin(i) *
46 system.spin(system.num_spins));
59template <
typename GraphType>
62 std::size_t minimum_trotter = 0;
64 auto &spins = system.trotter_spins;
66 double min_energy = std::numeric_limits<double>::max();
68 std::size_t num_trotter_slices = system.trotter_spins.cols();
69 for (std::size_t t = 0; t < num_trotter_slices; t++) {
71 energy = spins.col(t).transpose() * system.interaction * spins.col(t);
72 if (energy < min_energy) {
80 for (std::size_t i = 0; i < system.num_classical_spins; i++) {
81 ret_spins[i] =
static_cast<graph::Spin>(spins(i, minimum_trotter));
86template <
typename GraphType>
89 return system.variables;
92template <
typename GraphType>
95 return system.binaries;
106template <
typename GraphType>
109 auto spins = system.get_slice_at(0.0);
111 if (system.get_auxiliary_spin(0.0) < 0) {
113 for (
auto &spin : spins) {
134template <
typename FloatType, std::size_t rows_per_block,
135 std::size_t cols_per_block, std::size_t trotters_per_block>
139 trotters_per_block> &system) {
141 std::size_t localsize =
142 system.info.rows * system.info.cols * system.info.chimera_unitsize;
146 size_t select_t = system.info.trotters / 2;
148 cudaMemcpy(ret_spins.data(), system.spin.get() + (localsize * select_t),
149 localsize *
sizeof(
int), cudaMemcpyDeviceToHost));
164template <
typename FloatType, std::size_t rows_per_block,
165 std::size_t cols_per_block>
168 cols_per_block> &system) {
169 using Base =
typename system::ChimeraClassicalGPU<
FloatType, rows_per_block,
170 cols_per_block>::Base;
ClassicalIsingPolynomial class, which is a system to solve higher order unconstrained binary optimiza...
Definition classical_ising_polynomial.hpp:36
KLocalPolynomial class, which is a system to solve higher order unconstrained binary optimization (HU...
Definition k_local_polynomial.hpp:32
std::vector< Spin > Spins
Definition graph.hpp:27
int Spin
Definition graph.hpp:26
const graph::Spins get_solution(const system::ClassicalIsing< GraphType > &system)
get solution of classical ising system
Definition get_solution.hpp:41
Definition algorithm.hpp:24
double FloatType
Note:
Definition compile_config.hpp:37
ClassicalIsing structure (system for classical Ising model)
Definition classical_ising.hpp:38
Continuous Time Quantum Ising system.
Definition continuous_time_ising.hpp:34
TransverseIsing structure with discrete-time trotter spins.
Definition transverse_ising.hpp:39