32 STORM_LOG_THROW(model.getInitialStates().getNumberOfSetBits() == 1, storm::exceptions::NotSupportedException,
33 "Multi-objective Model checking on model with multiple initial states is not supported.");
35 "Invoked multi-objective model checking with a non-tradeoff formula " << formula <<
".");
40 storm::exceptions::InvalidArgumentException,
"Unable to check multi-objective formula on non-closed Markov automaton.");
45 swPreprocessing.
stop();
46 STORM_LOG_INFO(
"Preprocessing done in " << swPreprocessing <<
" seconds.\n"
47 <<
" Result: " << preprocessorResult <<
'\n');
51 std::unique_ptr<CheckResult> result;
54 case MultiObjectiveMethod::Pcaa: {
56 STORM_LOG_THROW(!produceScheduler, storm::exceptions::NotImplementedException,
57 "Scheduler computation is not implement for queries with restricted scheduler classes.");
61 result = achChecker.check(env);
64 storm::exceptions::NotImplementedException,
"The query type is not implemented with scheduler restrictions.");
66 result = explorer.check(env);
68 explorer.exportPlotOfCurrentApproximation(env);
76 subEnv.solver().setForceExact(
true);
79 result = query.
check(subEnv, produceScheduler);
80 if (produceScheduler) {
81 STORM_LOG_THROW(result->isExplicitParetoCurveCheckResult(), storm::exceptions::UnexpectedException,
82 "Scheduler computation is not implement for the produced result type.");
83 auto& paretoRes = result->template asExplicitParetoCurveCheckResult<typename SparseModelType::ValueType>();
84 STORM_LOG_ASSERT(paretoRes.hasScheduler(),
"Scheduler requested but none was produced.");
85 if (preprocessorResult.memoryIncorporationReverseData) {
93 case MultiObjectiveMethod::ConstraintBased: {
95 "The selected multi-objective model checking method does not support scheduler restrictions.");
96 STORM_LOG_THROW(!produceScheduler, storm::exceptions::NotImplementedException,
97 "Scheduler computation is not implement for constraint-based multi objective solving.");
98 std::unique_ptr<SparseCbQuery<SparseModelType>> query;
99 switch (preprocessorResult.queryType) {
105 "The multi-objective query type is not supported for the selected solution method '" <<
toString(method) <<
"'.");
109 result = query->check(env);
112 STORM_LOG_ERROR(
"Can not export plot for the constrained based solver.");
118 "The multi-objective solution method '" <<
toString(method) <<
"' is not supported.");
123 STORM_LOG_STATISTICS(
"Solving multi-objective query took " << swTotal <<
" seconds (consisting of " << swPreprocessing <<
" seconds for preprocessing and "
124 << swAnalysis <<
" seconds for analyzing the preprocessed model).\n");