@ -280,13 +280,13 @@ namespace storm {
}
}
template < class SparseModelType , typename GeometryValueType >
template < class SparseModelType , typename GeometryValueType >
DeterministicSchedsParetoExplorer < SparseModelType , GeometryValueType > : : DeterministicSchedsParetoExplorer ( Environment const & env , preprocessing : : SparseMultiObjectivePreprocessorResult < SparseModelType > & preprocessorResult ) : model ( preprocessorResult . preprocessedModel ) , objectives ( preprocessorResult . objectives ) {
DeterministicSchedsParetoExplorer < SparseModelType , GeometryValueType > : : DeterministicSchedsParetoExplorer ( preprocessing : : SparseMultiObjectivePreprocessorResult < SparseModelType > & preprocessorResult ) : model ( preprocessorResult . preprocessedModel ) , objectives ( preprocessorResult . objectives ) {
originalModelInitialState = * preprocessorResult . originalModel . getInitialStates ( ) . begin ( ) ;
originalModelInitialState = * preprocessorResult . originalModel . getInitialStates ( ) . begin ( ) ;
objectiveHelper . reserve ( objectives . size ( ) ) ;
objectiveHelper . reserve ( objectives . size ( ) ) ;
for ( auto const & obj : objectives ) {
for ( auto const & obj : objectives ) {
objectiveHelper . emplace_back ( * model , obj ) ;
objectiveHelper . emplace_back ( * model , obj ) ;
}
}
lpChecker = std : : make_shared < DeterministicSchedsLpChecker < SparseModelType , GeometryValueType > > ( env , * model , objectiveHelper ) ;
lpChecker = std : : make_shared < DeterministicSchedsLpChecker < SparseModelType , GeometryValueType > > ( * model , objectiveHelper ) ;
if ( preprocessorResult . containsOnlyTotalRewardFormulas ( ) ) {
if ( preprocessorResult . containsOnlyTotalRewardFormulas ( ) ) {
wvChecker = storm : : modelchecker : : multiobjective : : WeightVectorCheckerFactory < SparseModelType > : : create ( preprocessorResult ) ;
wvChecker = storm : : modelchecker : : multiobjective : : WeightVectorCheckerFactory < SparseModelType > : : create ( preprocessorResult ) ;
} else {
} else {
@ -346,8 +346,8 @@ namespace storm {
}
}
if ( storm : : settings : : getModule < storm : : settings : : modules : : CoreSettings > ( ) . isShowStatisticsSet ( ) ) {
if ( storm : : settings : : getModule < storm : : settings : : modules : : CoreSettings > ( ) . isShowStatisticsSet ( ) ) {
STORM_PRINT_AND_LOG ( " #STATS " < < paretoPoints . size ( ) < < " Pareto points " < < std : : endl ) ;
STORM_PRINT_AND_LOG ( " #STATS " < < paretoPoints . size ( ) < < " Pareto points " < < std : : endl ) ;
STORM_PRINT_AND_LOG ( " #STATS " < < unachievableAreas . size ( ) < < " unachievable A reas " < < std : : endl ) ;
STORM_PRINT_AND_LOG ( " #STATS " < < overApproximation - > getHalfspaces ( ) . size ( ) < < " unachievable H alfspaces " < < std : : endl ) ;
STORM_PRINT_AND_LOG ( " #STATS " < < unachievableAreas . size ( ) < < " unachievable a reas " < < std : : endl ) ;
STORM_PRINT_AND_LOG ( " #STATS " < < overApproximation - > getHalfspaces ( ) . size ( ) < < " unachievable h alfspaces " < < std : : endl ) ;
STORM_PRINT_AND_LOG ( lpChecker - > getStatistics ( " #STATS " ) ) ;
STORM_PRINT_AND_LOG ( lpChecker - > getStatistics ( " #STATS " ) ) ;
}
}
@ -449,7 +449,7 @@ namespace storm {
point = storm : : utility : : vector : : convertNumericVector < GeometryValueType > ( wvChecker - > getUnderApproximationOfInitialStateResults ( ) ) ;
point = storm : : utility : : vector : : convertNumericVector < GeometryValueType > ( wvChecker - > getUnderApproximationOfInitialStateResults ( ) ) ;
negateMinObjectives ( point ) ;
negateMinObjectives ( point ) ;
} else {
} else {
lpChecker - > setCurrentWeightVector ( weightVector ) ;
lpChecker - > setCurrentWeightVector ( env , weightVector ) ;
auto optionalPoint = lpChecker - > check ( env , negateMinObjectives ( this - > overApproximation ) ) ;
auto optionalPoint = lpChecker - > check ( env , negateMinObjectives ( this - > overApproximation ) ) ;
STORM_LOG_THROW ( optionalPoint . is_initialized ( ) , storm : : exceptions : : UnexpectedException , " Unable to find a point in the current overapproximation. " ) ;
STORM_LOG_THROW ( optionalPoint . is_initialized ( ) , storm : : exceptions : : UnexpectedException , " Unable to find a point in the current overapproximation. " ) ;
point = std : : move ( optionalPoint . get ( ) ) ;
point = std : : move ( optionalPoint . get ( ) ) ;
@ -494,7 +494,7 @@ namespace storm {
template < class SparseModelType , typename GeometryValueType >
template < class SparseModelType , typename GeometryValueType >
void DeterministicSchedsParetoExplorer < SparseModelType , GeometryValueType > : : processFacet ( Environment const & env , Facet & f ) {
void DeterministicSchedsParetoExplorer < SparseModelType , GeometryValueType > : : processFacet ( Environment const & env , Facet & f ) {
if ( ! wvChecker ) {
if ( ! wvChecker ) {
lpChecker - > setCurrentWeightVector ( f . getHalfspace ( ) . normalVector ( ) ) ;
lpChecker - > setCurrentWeightVector ( env , f . getHalfspace ( ) . normalVector ( ) ) ;
}
}
if ( optimizeAndSplitFacet ( env , f ) ) {
if ( optimizeAndSplitFacet ( env , f ) ) {
@ -510,7 +510,7 @@ namespace storm {
}
}
if ( ! polytopeTree . isEmpty ( ) ) {
if ( ! polytopeTree . isEmpty ( ) ) {
if ( wvChecker ) {
if ( wvChecker ) {
lpChecker - > setCurrentWeightVector ( f . getHalfspace ( ) . normalVector ( ) ) ;
lpChecker - > setCurrentWeightVector ( env , f . getHalfspace ( ) . normalVector ( ) ) ;
}
}
auto res = lpChecker - > check ( env , polytopeTree , eps ) ;
auto res = lpChecker - > check ( env , polytopeTree , eps ) ;
for ( auto const & infeasableArea : res . second ) {
for ( auto const & infeasableArea : res . second ) {