34 "Multi-objective Model checking on model with multiple initial states is not supported.");
39 storm::exceptions::InvalidArgumentException,
"Unable to check multi-objective formula on non-closed Markov automaton.");
44 swPreprocessing.
stop();
45 if (storm::settings::getModule<storm::settings::modules::CoreSettings>().isShowStatisticsSet()) {
47 <<
" Result: " << preprocessorResult <<
'\n');
49 STORM_LOG_INFO(
"Preprocessing done in " << swPreprocessing <<
" seconds.\n"
50 <<
" Result: " << preprocessorResult <<
'\n');
55 std::unique_ptr<CheckResult> result;
58 case MultiObjectiveMethod::Pcaa: {
60 STORM_LOG_THROW(!produceScheduler, storm::exceptions::NotImplementedException,
61 "Scheduler computation is not implement for queries with restricted scheduler classes.");
65 result = achChecker.check(env);
68 storm::exceptions::NotImplementedException,
"The query type is not implemented with scheduler restrictions.");
70 result = explorer.check(env);
72 explorer.exportPlotOfCurrentApproximation(env);
76 std::unique_ptr<SparsePcaaQuery<SparseModelType, storm::RationalNumber>> query;
77 switch (preprocessorResult.queryType) {
79 query = std::unique_ptr<SparsePcaaQuery<SparseModelType, storm::RationalNumber>>(
83 query = std::unique_ptr<SparsePcaaQuery<SparseModelType, storm::RationalNumber>>(
87 query = std::unique_ptr<SparsePcaaQuery<SparseModelType, storm::RationalNumber>>(
92 "The multi-objective query type is not supported for the selected solution method '" <<
toString(method) <<
"'.");
96 result = query->check(env, produceScheduler);
97 if (produceScheduler) {
98 STORM_LOG_THROW(result->isExplicitParetoCurveCheckResult(), storm::exceptions::UnexpectedException,
99 "Scheduler computation is not implement for the produced result type.");
100 auto& paretoRes = result->template asExplicitParetoCurveCheckResult<typename SparseModelType::ValueType>();
101 STORM_LOG_ASSERT(paretoRes.hasScheduler(),
"Scheduler requested but none was produced.");
102 if (preprocessorResult.memoryIncorporationReverseData) {
109 query->exportPlotOfCurrentApproximation(env);
114 case MultiObjectiveMethod::ConstraintBased: {
116 "The selected multi-objective model checking method does not support scheduler restrictions.");
117 STORM_LOG_THROW(!produceScheduler, storm::exceptions::NotImplementedException,
118 "Scheduler computation is not implement for constraint-based multi objective solving.");
119 std::unique_ptr<SparseCbQuery<SparseModelType>> query;
120 switch (preprocessorResult.queryType) {
126 "The multi-objective query type is not supported for the selected solution method '" <<
toString(method) <<
"'.");
130 result = query->check(env);
133 STORM_LOG_ERROR(
"Can not export plot for the constrained based solver.");
139 "The multi-objective solution method '" <<
toString(method) <<
"' is not supported.");
144 if (storm::settings::getModule<storm::settings::modules::CoreSettings>().isShowStatisticsSet()) {
145 STORM_PRINT_AND_LOG(
"Solving multi-objective query took " << swTotal <<
" seconds (consisting of " << swPreprocessing
146 <<
" seconds for preprocessing and " << swAnalysis
147 <<
" seconds for analyzing the preprocessed model).\n");