STORM_LOG_ASSERT(this->getRowGroupAfterElimination(state)>=this->getNumberOfMaybeStatesNotInEc(),"Expected introduced EC states to be located at the end of the matrix.");
STORM_LOG_ASSERT(this->getRowGroupAfterElimination(state)>=this->getNumberOfMaybeStatesNotInEc(),"Expected introduced EC states to be located at the end of the matrix.");
STORM_LOG_ASSERT(!ecToExitChoicesBefore.empty(),"No EC exit choices available. End Components have probably been build without.");
// Make sure we are not supposed to produce a scheduler if we actually eliminate end components.
STORM_LOG_THROW(!ecInformation||!ecInformation.get().getEliminatedEndComponents()||!produceScheduler,storm::exceptions::NotSupportedException,"Producing schedulers is not supported if end-components need to be eliminated for the solver.");
// Make sure we are not supposed to produce a scheduler if we actually eliminate end components.
STORM_LOG_THROW(!ecInformation||!ecInformation.get().getEliminatedEndComponents()||!produceScheduler,storm::exceptions::NotSupportedException,"Producing schedulers is not supported if end-components need to be eliminated for the solver.");
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of the exploration order to choose.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(explorationOrders)).setDefaultValueString("bfs").build()).build());
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of the exploration order to choose.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(explorationOrders)).setDefaultValueString("bfs").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,explorationChecksOptionName,false,"If set, additional checks (if available) are performed during model exploration to debug the model.").setShortName(explorationChecksOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,explorationChecksOptionName,false,"If set, additional checks (if available) are performed during model exploration to debug the model.").setShortName(explorationChecksOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,buildOutOfBoundsStateOptionName,false,"If set, a state for out-of-bounds valuations is added").setIsAdvanced().build());
this->addOption(storm::settings::OptionBuilder(moduleName,buildOutOfBoundsStateOptionName,false,"If set, a state for out-of-bounds valuations is added").setIsAdvanced().build());
this->addOption(storm::settings::OptionBuilder(moduleName,buildOverlappingGuardsLabelOptionName,false,"For states where multiple guards are enabled, we add a label (for debugging DTMCs)").setIsAdvanced().build());
this->addOption(storm::settings::OptionBuilder(moduleName,bitsForUnboundedVariablesOptionName,false,"Sets the number of bits that is used for unbounded integer variables.").setIsAdvanced()
this->addOption(storm::settings::OptionBuilder(moduleName,bitsForUnboundedVariablesOptionName,false,"Sets the number of bits that is used for unbounded integer variables.").setIsAdvanced()
.addArgument(storm::settings::ArgumentBuilder::createUnsignedIntegerArgument("number","The number of bits.").addValidatorUnsignedInteger(ArgumentValidatorFactory::createUnsignedRangeValidatorExcluding(0,63)).setDefaultValueUnsignedInteger(32).build()).build());
.addArgument(storm::settings::ArgumentBuilder::createUnsignedIntegerArgument("number","The number of bits.").addValidatorUnsignedInteger(ArgumentValidatorFactory::createUnsignedRangeValidatorExcluding(0,63)).setDefaultValueUnsignedInteger(32).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportJaniDotOptionName,false,"If given, the loaded jani model will be written to the specified file in the dot format.").setIsAdvanced()
this->addOption(storm::settings::OptionBuilder(moduleName,exportJaniDotOptionName,false,"If given, the loaded jani model will be written to the specified file in the dot format.").setIsAdvanced()
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The name of the file to which the model is to be written.").build()).build());
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The name of the file to which the model is to be written.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportCdfOptionName,false,"Exports the cumulative density function for reward bounded properties into a .csv file.").setIsAdvanced().setShortName(exportCdfOptionShortName).addArgument(storm::settings::ArgumentBuilder::createStringArgument("directory","A path to an existing directory where the cdf files will be stored.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportCdfOptionName,false,"Exports the cumulative density function for reward bounded properties into a .csv file.").setIsAdvanced().setShortName(exportCdfOptionShortName).addArgument(storm::settings::ArgumentBuilder::createStringArgument("directory","A path to an existing directory where the cdf files will be stored.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportSchedulerOptionName,false,"Exports the choices of an optimal scheduler to the given file (if supported by engine).").setIsAdvanced().addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The output file.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportSchedulerOptionName,false,"Exports the choices of an optimal scheduler to the given file (if supported by engine).").setIsAdvanced().addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The output file. Use file extension '.json' to export in json.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportMonotonicityName,false,"Exports the result of monotonicity checking to the given file.").setIsAdvanced().addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The output file.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportMonotonicityName,false,"Exports the result of monotonicity checking to the given file.").setIsAdvanced().addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The output file.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportExplicitOptionName,"","If given, the loaded model will be written to the specified file in the drn format.")
this->addOption(storm::settings::OptionBuilder(moduleName,exportExplicitOptionName,"","If given, the loaded model will be written to the specified file in the drn format.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","the name of the file to which the model is to be writen.").build()).build());
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","the name of the file to which the model is to be writen.").build()).build());
STORM_LOG_WARN_COND(model.getInitialStates().getNumberOfSetBits()==1,"The model has multiple initial states. This simulator assumes it starts from the initial state with the lowest index.");
STORM_LOG_THROW(model==nullptr||model->getNumberOfStates()==schedulerChoices.front().size(),storm::exceptions::InvalidOperationException,"The given model is not compatible with this scheduler.");
STORM_LOG_WARN_COND(!(skipUniqueChoices&&model==nullptr),"Can not skip unique choices if the model is not given.");
STORM_LOG_THROW(isMemorylessScheduler(),storm::exceptions::NotImplementedException,"Json export of schedulers with memory not implemented.");
xxxxxxxxxx