53 using Tuple = std::pair<double, double>;
75 using Tuple = std::pair<double, double>;
134template <
typename SystemType>
167 std::size_t one_mc_step,
168 std::size_t num_call_updater) {
169 double r_beta = std::pow(beta_max / beta_min,
170 1.0 /
static_cast<double>(num_call_updater - 1));
171 double beta = beta_min;
174 for (
auto &schedule : schedule_list) {
175 schedule.one_mc_step = one_mc_step;
180 return schedule_list;
195 std::size_t num_call_updater) {
196 double ds = 1.0 /
static_cast<double>(num_call_updater - 1);
200 for (
auto &schedule : schedule_list) {
201 schedule.one_mc_step = one_mc_step;
206 return schedule_list;
222 double lambda,
double beta_min,
double beta_max, std::size_t one_mc_step,
223 std::size_t num_call_updater) {
224 double r_beta = std::pow(beta_max / beta_min,
225 1.0 /
static_cast<double>(num_call_updater - 1));
226 double beta = beta_min;
229 for (
auto &schedule : schedule_list) {
230 schedule.one_mc_step = one_mc_step;
231 schedule.updater_parameter =
236 return schedule_list;
247template <
typename SystemType>
250 std::size_t>> &tuplelist) {
252 return_list.reserve(tuplelist.size());
253 for (
auto &elem : tuplelist) {
254 return_list.emplace_back(std::make_pair(elem.first, elem.second));
275template<
typename FloatType>
277 if (num_sweeps == 1) {
278 return std::vector<FloatType>{beta_min};
280 std::vector<FloatType> beta_list(num_sweeps);
281 for (std::int32_t i = 0; i < num_sweeps; ++i) {
282 beta_list[i] = beta_min + i*(beta_max - beta_min)/(num_sweeps - 1);
293template<
typename FloatType>
295 if (num_sweeps == 1) {
296 return std::vector<FloatType>{beta_min};
298 std::vector<FloatType> beta_list(num_sweeps);
299 const FloatType alpha = std::pow(beta_max/beta_min, 1/
static_cast<FloatType>(num_sweeps - 1));
301 for (std::int32_t i = 0; i < num_sweeps; ++i) {
315template<
typename FloatType>
319 const std::int32_t num_sweeps) {
320 std::vector<FloatType> beta_list;
328 throw std::runtime_error(
"Unknwon beta schedule list");
ScheduleList< system::classical_system > ClassicalScheduleList
ClassicalScheduleList alias.
Definition schedule_list.hpp:140
std::vector< Schedule< SystemType > > ScheduleList
schedule list alias
Definition schedule_list.hpp:135
ClassicalScheduleList make_classical_schedule_list(double beta_min, double beta_max, std::size_t one_mc_step, std::size_t num_call_updater)
helper function for making classical schedule list with geometric series of inverse temperatures.
Definition schedule_list.hpp:166
TemperatureSchedule
Definition schedule_list.hpp:259
@ GEOMETRIC
Geometric cooling.
std::vector< FloatType > GenerateLinearBetaSchedule(const FloatType beta_min, const FloatType beta_max, const std::int32_t num_sweeps)
Generate linear temperature schedule.
Definition schedule_list.hpp:276
ScheduleList< system::classical_constraint_system > ClassicalConstraintScheduleList
ClassicalConstraintScheduleList alias.
Definition schedule_list.hpp:152
ScheduleList< SystemType > make_schedule_list(const std::vector< std::pair< typename UpdaterParameter< SystemType >::Tuple, std::size_t > > &tuplelist)
helper function for making schedulelist from list of tuples
Definition schedule_list.hpp:248
std::vector< FloatType > GenerateGeometricBetaSchedule(const FloatType beta_min, const FloatType beta_max, const std::int32_t num_sweeps)
Generate geometric temperature schedule.
Definition schedule_list.hpp:294
TransverseFieldScheduleList make_transverse_field_schedule_list(double beta, std::size_t one_mc_step, std::size_t num_call_updater)
helper function for making transverse field system schedule list with arithmetic sequence of annealin...
Definition schedule_list.hpp:194
UpdaterParameter< system::classical_constraint_system > ClassicalConstraintUpdaterParameter
ClassicalUpdaterParameter alias.
Definition schedule_list.hpp:106
UpdaterParameter< system::transverse_field_system > TransverseFieldUpdaterParameter
TransverseFieldUpdaterParameter alias.
Definition schedule_list.hpp:112
std::vector< FloatType > GenerateBetaList(const TemperatureSchedule schedule_type, const FloatType beta_min, const FloatType beta_max, const std::int32_t num_sweeps)
Generate temperature schedule from specific schedule.
Definition schedule_list.hpp:316
ScheduleList< system::transverse_field_system > TransverseFieldScheduleList
TransverseFieldScheduleList alias.
Definition schedule_list.hpp:146
ClassicalConstraintScheduleList make_classical_constraint_schedule_list(double lambda, double beta_min, double beta_max, std::size_t one_mc_step, std::size_t num_call_updater)
helper function for making classical constraint schedule list with geometric series of inverse temper...
Definition schedule_list.hpp:221
UpdaterParameter< system::classical_system > ClassicalUpdaterParameter
ClassicalUpdaterParameter alias.
Definition schedule_list.hpp:100
Definition algorithm.hpp:24
double FloatType
Note:
Definition compile_config.hpp:37
schedule struct
Definition schedule_list.hpp:121
Schedule(const std::pair< UpdaterParameter< SystemType >, std::size_t > &obj)
Definition schedule_list.hpp:123
std::size_t one_mc_step
Definition schedule_list.hpp:126
UpdaterParameter< SystemType > updater_parameter
Definition schedule_list.hpp:125
updater paramter for classical ising model with a single constraint
Definition schedule_list.hpp:52
UpdaterParameter(const Tuple &obj)
Definition schedule_list.hpp:56
UpdaterParameter()=default
Tuple get_tuple() const
Definition schedule_list.hpp:58
UpdaterParameter(double beta, double lambda)
Definition schedule_list.hpp:55
std::pair< double, double > Tuple
Definition schedule_list.hpp:53
double lambda
constraint coefficient
Definition schedule_list.hpp:68
double beta
inverse temperature
Definition schedule_list.hpp:63
updater parameter for classical ising system
Definition schedule_list.hpp:37
double beta
inverse temperature
Definition schedule_list.hpp:46
UpdaterParameter()=default
double Tuple
Definition schedule_list.hpp:38
UpdaterParameter(Tuple beta)
Definition schedule_list.hpp:40
Tuple get_tuple() const
Definition schedule_list.hpp:41
updater paramter for transverse ising model
Definition schedule_list.hpp:74
double beta
inverse temperature
Definition schedule_list.hpp:85
UpdaterParameter(double beta, double s)
Definition schedule_list.hpp:77
std::pair< double, double > Tuple
Definition schedule_list.hpp:75
double s
annealing schedule (from 0 (only transverse field) to 1 (only classical Hamiltonian))
Definition schedule_list.hpp:91
UpdaterParameter()=default
UpdaterParameter(const Tuple &obj)
Definition schedule_list.hpp:78
Tuple get_tuple() const
Definition schedule_list.hpp:80
updater parameter for monte carlo simulation
Definition schedule_list.hpp:32