std::cout<<std::endl<<"Computed minimal label set of size "<<labelSet.size()<<" in "<<std::chrono::duration_cast<std::chrono::milliseconds>(endTime-startTime).count()<<"ms."<<std::endl;
this->addOption(storm::settings::OptionBuilder(moduleName,minimalCommandSetOptionName,true,"Computes a counterexample for the given model in terms of a minimal command set. Note that this requires the model to be given in a symbolic format.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The file containing the properties for which counterexamples are to be generated.").addValidationFunctionString(storm::settings::ArgumentValidators::existingReadableFileValidator()).build())
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("method","Sets which technique is used to derive the counterexample. Available are {milp, maxsat}").setDefaultValueString("maxsat").addValidationFunctionString(storm::settings::ArgumentValidators::stringInListValidator(techniques)).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,statisticsOptionName,true,"Sets whether to display statistics for counterexample generation.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,encodeReachabilityOptionName,true,"Sets whether to encode reachability for MAXSAT-based minimal command counterexample generation.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,schedulerCutsOptionName,true,"Sets whether to add the scheduler cuts for MILP-based minimal command counterexample generation.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,helpOptionName,false,"Shows all available options, arguments and descriptions.").setShortName(helpOptionShortName)
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("hint","A regular expression to show help for all matching entities or 'all' for the complete help.").setDefaultValueString("all").build()).build());
@ -77,6 +79,8 @@ namespace storm {
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of an LP solver. Available are: gurobi and glpk.").addValidationFunctionString(storm::settings::ArgumentValidators::stringInListValidator(lpSolvers)).setDefaultValueString("glpk").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,constantsOptionName,false,"Specifies the constant replacements to use in symbolic models. Note that Note that this requires the model to be given as an symbolic model (i.e., via --"+symbolicOptionName+").").setShortName(constantsOptionShortName)
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("values","A comma separated list of constants and their value, e.g. a=1,b=2,c=3.").setDefaultValueString("").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,statisticsOptionName,true,"Sets whether to display statistics if available.").setShortName(statisticsOptionShortName).build());
LOG_THROW(error==0,storm::exceptions::InvalidStateException,"Unable to set Gurobi Parameter OutputFlag ("<<GRBgeterrormsg(env)<<", error code "<<error<<").");
// Enable the following line to restrict Gurobi to one thread only.
LOG_THROW(error==0,storm::exceptions::InvalidStateException,"Unable to set Gurobi Parameter Threads ("<<GRBgeterrormsg(env)<<", error code "<<error<<").");
// Enable the following line to force Gurobi to be as precise about the binary variables as required by the given precision option.
LOG_THROW(error==0,storm::exceptions::InvalidStateException,"Unable to set Gurobi Parameter IntFeasTol ("<<GRBgeterrormsg(env)<<", error code "<<error<<").");
LOG_THROW(error==0,storm::exceptions::InvalidStateException,"Unable to get Gurobi solution ("<<GRBgeterrormsg(env)<<", error code "<<error<<").");
LOG_THROW(std::abs(static_cast<int>(value)-value)<=storm::settings::Settings::getInstance()->getOptionByLongName("gurobiinttol").getArgument(0).getValueAsDouble(),storm::exceptions::InvalidStateException,"Illegal value for integer variable in Gurobi solution ("<<value<<").");
LOG_THROW(std::abs(static_cast<int>(value)-value)<=storm::settings::gurobiSettings().getIntegerTolerance(),storm::exceptions::InvalidStateException,"Illegal value for integer variable in Gurobi solution ("<<value<<").");
returnstatic_cast<int_fast64_t>(value);
}
@ -308,9 +308,9 @@ namespace storm {
LOG_THROW(error==0,storm::exceptions::InvalidStateException,"Unable to get Gurobi solution ("<<GRBgeterrormsg(env)<<", error code "<<error<<").");
if(value>0.5){
LOG_THROW(std::abs(static_cast<int>(value)-1)<=storm::settings::Settings::getInstance()->getOptionByLongName("gurobiinttol").getArgument(0).getValueAsDouble(),storm::exceptions::InvalidStateException,"Illegal value for integer variable in Gurobi solution ("<<value<<").");
LOG_THROW(std::abs(static_cast<int>(value)-1)<=storm::settings::gurobiSettings().getIntegerTolerance(),storm::exceptions::InvalidStateException,"Illegal value for integer variable in Gurobi solution ("<<value<<").");
}else{
LOG_THROW(value<=storm::settings::Settings::getInstance()->getOptionByLongName("gurobiinttol").getArgument(0).getValueAsDouble(),storm::exceptions::InvalidStateException,"Illegal value for integer variable in Gurobi solution ("<<value<<").");
LOG_THROW(value<=storm::settings::gurobiSettings().getIntegerTolerance(),storm::exceptions::InvalidStateException,"Illegal value for integer variable in Gurobi solution ("<<value<<").");