#include "src/solver/AbstractGameSolver.h" #include "src/settings/SettingsManager.h" #include "src/settings/modules/NativeEquationSolverSettings.h" #include "src/exceptions/InvalidSettingsException.h" namespace storm { namespace solver { template AbstractGameSolver::AbstractGameSolver() { // Get the settings object to customize solving. storm::settings::modules::NativeEquationSolverSettings const& settings = storm::settings::getModule(); // Get appropriate settings. maximalNumberOfIterations = settings.getMaximalIterationCount(); precision = settings.getPrecision(); relative = settings.getConvergenceCriterion() == storm::settings::modules::NativeEquationSolverSettings::ConvergenceCriterion::Relative; } template AbstractGameSolver::AbstractGameSolver(double precision, uint_fast64_t maximalNumberOfIterations, bool relative) : precision(precision), maximalNumberOfIterations(maximalNumberOfIterations), relative(relative) { // Intentionally left empty. } template void AbstractGameSolver::setTrackScheduler(bool trackScheduler){ this->trackScheduler = trackScheduler; } template bool AbstractGameSolver::hasScheduler() const { return (static_cast(player1Scheduler) && static_cast(player2Scheduler)); } template bool AbstractGameSolver::isTrackSchedulerSet() const { return this->trackScheduler; } template storm::storage::TotalScheduler const& AbstractGameSolver::getPlayer1Scheduler() const { STORM_LOG_THROW(player1Scheduler, storm::exceptions::InvalidSettingsException, "Cannot retrieve scheduler, because none was generated."); return *player1Scheduler.get(); } template storm::storage::TotalScheduler const& AbstractGameSolver::getPlayer2Scheduler() const { STORM_LOG_THROW(player2Scheduler, storm::exceptions::InvalidSettingsException, "Cannot retrieve scheduler, because none was generated."); return *player2Scheduler.get(); } template double AbstractGameSolver::getPrecision() const { return precision; } template bool AbstractGameSolver::getRelative() const { return relative; } template class AbstractGameSolver; } }