@ -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 :