STORM_LOG_THROW(!storm::utility::isZero(weights[this->indexOfOptimizingObjective]),exceptions::UnexpectedException,"The chosen weight-vector gives zero weight for the objective that is to be optimized.");
// If weighs[indexOfOptimizingObjective] is low, the computation of the weightVectorChecker needs to be more precise.
// Our heuristic ensures that if p is the new vertex of the under-approximation, then max{ eps | p' = p + (0..0 eps 0..0) is in the over-approximation } <= multiobjective_precision/0.9
this->addOption(storm::settings::OptionBuilder(moduleName,methodOptionName,true,"The method to be used for multi objective model checking.").setIsAdvanced().addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of the method to use.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(methods)).setDefaultValueString("pcaa").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportPlotOptionName,true,"Saves data for plotting of pareto curves and achievable values.").setIsAdvanced()
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("directory","A path to an existing directory in which the results will be saved.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,precisionOptionName,true,"The precision used for the approximation of numerical- and pareto queries.").setIsAdvanced()
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("type","The type of precision.").setDefaultValueString("abs").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(precTypes)).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,maxStepsOptionName,true,"Aborts the computation after the given number of refinement steps (= computed pareto optimal points).").setIsAdvanced()
.addArgument(storm::settings::ArgumentBuilder::createUnsignedIntegerArgument("value","the threshold for the number of refinement steps to be performed.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,schedulerRestrictionOptionName,false,"Restricts the class of considered schedulers to non-randomized schedulers with the provided memory pattern.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("memorypattern","The Pattern of the memory.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(memoryPatterns)).build())
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("memorypattern","The Pattern of the memory.").setDefaultValueString("positional").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(memoryPatterns)).build())
.addArgument(storm::settings::ArgumentBuilder::createUnsignedIntegerArgument("memorystates","The Number of memory states (only if supported by the pattern).").setDefaultValueUnsignedInteger(0).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,printResultsOptionName,true,"Prints intermediate results of the computation to standard output.").build());