Source code for openjij.utils.cxx_cast
from openjij.cxxjij.algorithm import (
UpdateMethod,
RandomNumberEngine
)
from openjij.cxxjij.utility import TemperatureSchedule
[docs]
def cast_to_cxx_update_method(update_method: str) -> UpdateMethod:
if update_method == "METROPOLIS":
return UpdateMethod.METROPOLIS
elif update_method == "HEAT_BATH":
return UpdateMethod.HEAT_BATH
else:
raise RuntimeError(f"Invalid update_method={update_method}")
[docs]
def cast_to_cxx_random_number_engine(
random_number_engine: str,
) -> RandomNumberEngine:
if random_number_engine == "XORSHIFT":
return RandomNumberEngine.XORSHIFT
elif random_number_engine == "MT":
return RandomNumberEngine.MT
elif random_number_engine == "MT_64":
return RandomNumberEngine.MT_64
else:
raise RuntimeError(f"Invalid random_number_engine={random_number_engine}")
[docs]
def cast_to_cxx_temperature_schedule(
temperature_schedule: str,
) -> TemperatureSchedule:
if temperature_schedule == "GEOMETRIC":
return TemperatureSchedule.GEOMETRIC
elif temperature_schedule == "LINEAR":
return TemperatureSchedule.LINEAR
else:
raise RuntimeError(f"Invalid temperature_schedule={temperature_schedule}")