#include "SolveGoal.h" #include "src/utility/solver.h" #include "src/solver/MinMaxLinearEquationSolver.h" #include namespace storm { namespace storage { template class SparseMatrix; } namespace solver { template std::unique_ptr> configureMinMaxLinearEquationSolver(BoundedGoal const& goal, storm::utility::solver::MinMaxLinearEquationSolverFactory const& factory, storm::storage::SparseMatrix const& matrix) { std::unique_ptr> p = factory.create(matrix); p->setOptimizationDirection(goal.direction()); p->setEarlyTerminationCriterion(std::make_unique>(goal.relevantColumns(), goal.threshold, goal.minimize())); return p; } template std::unique_ptr> configureMinMaxLinearEquationSolver(SolveGoal const& goal, storm::utility::solver::MinMaxLinearEquationSolverFactory const& factory, storm::storage::SparseMatrix const& matrix) { if(goal.isBounded()) { return configureMinMaxLinearEquationSolver(static_cast const&>(goal), factory, matrix); } std::unique_ptr> p = factory.create(matrix); p->setOptimizationDirection(goal.direction()); return p; } template std::unique_ptr> configureMinMaxLinearEquationSolver(BoundedGoal const& goal, storm::utility::solver::MinMaxLinearEquationSolverFactory const& factory, storm::storage::SparseMatrix const& matrix); template std::unique_ptr> configureMinMaxLinearEquationSolver(SolveGoal const& goal, storm::utility::solver::MinMaxLinearEquationSolverFactory const& factory, storm::storage::SparseMatrix const& matrix); } }