Browse Source

use deterministicParetoExplorer in case there is a scheduler restriction.

main
TimQu 7 years ago
parent
commit
bf973187c4
  1. 12
      src/storm/modelchecker/multiobjective/multiObjectiveModelChecking.cpp

12
src/storm/modelchecker/multiobjective/multiObjectiveModelChecking.cpp

@ -10,11 +10,13 @@
#include "storm/modelchecker/multiobjective/pcaa/SparsePcaaQuantitativeQuery.h" #include "storm/modelchecker/multiobjective/pcaa/SparsePcaaQuantitativeQuery.h"
#include "storm/modelchecker/multiobjective/pcaa/SparsePcaaParetoQuery.h" #include "storm/modelchecker/multiobjective/pcaa/SparsePcaaParetoQuery.h"
#include "storm/modelchecker/multiobjective/constraintbased/SparseCbAchievabilityQuery.h" #include "storm/modelchecker/multiobjective/constraintbased/SparseCbAchievabilityQuery.h"
#include "storm/modelchecker/multiobjective/deterministicScheds/DeterministicParetoExplorer.h"
#include "storm/settings/SettingsManager.h" #include "storm/settings/SettingsManager.h"
#include "storm/settings/modules/CoreSettings.h" #include "storm/settings/modules/CoreSettings.h"
#include "storm/utility/Stopwatch.h" #include "storm/utility/Stopwatch.h"
#include "storm/exceptions/InvalidArgumentException.h" #include "storm/exceptions/InvalidArgumentException.h"
#include "storm/exceptions/InvalidEnvironmentException.h"
namespace storm { namespace storm {
@ -49,6 +51,14 @@ namespace storm {
switch (method) { switch (method) {
case MultiObjectiveMethod::Pcaa: case MultiObjectiveMethod::Pcaa:
{ {
if (env.modelchecker().multi().isSchedulerRestrictionSet()) {
STORM_LOG_THROW(preprocessorResult.queryType == preprocessing::SparseMultiObjectivePreprocessorResult<SparseModelType>::QueryType::Pareto, storm::exceptions::NotImplementedException, "Currently, only Pareto queries with scheduler restrictions are implemented.");
auto explorer = DeterministicParetoExplorer<SparseModelType, storm::RationalNumber>(preprocessorResult);
result = explorer.check(env);
if (env.modelchecker().multi().isExportPlotSet()) {
explorer.exportPlotOfCurrentApproximation(env);
}
} else {
std::unique_ptr<SparsePcaaQuery<SparseModelType, storm::RationalNumber>> query; std::unique_ptr<SparsePcaaQuery<SparseModelType, storm::RationalNumber>> query;
switch (preprocessorResult.queryType) { switch (preprocessorResult.queryType) {
case preprocessing::SparseMultiObjectivePreprocessorResult<SparseModelType>::QueryType::Achievability: case preprocessing::SparseMultiObjectivePreprocessorResult<SparseModelType>::QueryType::Achievability:
@ -70,10 +80,12 @@ namespace storm {
if (env.modelchecker().multi().isExportPlotSet()) { if (env.modelchecker().multi().isExportPlotSet()) {
query->exportPlotOfCurrentApproximation(env); query->exportPlotOfCurrentApproximation(env);
} }
}
break; break;
} }
case MultiObjectiveMethod::ConstraintBased: case MultiObjectiveMethod::ConstraintBased:
{ {
STORM_LOG_THROW(!env.modelchecker().multi().isSchedulerRestrictionSet(), storm::exceptions::InvalidEnvironmentException, "The selected multi-objective model checking method does not support scheduler restrictions.");
std::unique_ptr<SparseCbQuery<SparseModelType>> query; std::unique_ptr<SparseCbQuery<SparseModelType>> query;
switch (preprocessorResult.queryType) { switch (preprocessorResult.queryType) {
case preprocessing::SparseMultiObjectivePreprocessorResult<SparseModelType>::QueryType::Achievability: case preprocessing::SparseMultiObjectivePreprocessorResult<SparseModelType>::QueryType::Achievability:

Loading…
Cancel
Save