@ -216,7 +216,14 @@ namespace storm {
}
swSetEpoch . start ( ) ;
epochModel . objectiveRewardFilter = std : : vector < storm : : storage : : BitVector > ( objectives . size ( ) , storm : : storage : : BitVector ( epochModel . objectiveRewards . front ( ) . size ( ) , true ) ) ;
swAux1 . start ( ) ;
epochModel . objectiveRewardFilter . clear ( ) ;
for ( auto const & objRewards : epochModel . objectiveRewards ) {
epochModel . objectiveRewardFilter . push_back ( storm : : utility : : vector : : filterZero ( objRewards ) ) ;
epochModel . objectiveRewardFilter . back ( ) . complement ( ) ;
}
swAux1 . stop ( ) ;
epochModel . stepSolutions . resize ( epochModel . stepChoices . getNumberOfSetBits ( ) ) ;
auto stepSolIt = epochModel . stepSolutions . begin ( ) ;
for ( auto const & reducedChoice : epochModel . stepChoices ) {
@ -228,9 +235,14 @@ namespace storm {
// Find out whether objective reward is earned for the current choice
// Objective reward is not earned if there is a subObjective that is still relevant but the corresponding reward bound is passed after taking the choice
swAux1 . start ( ) ;
for ( uint64_t dim = 0 ; dim < dimensionCount ; + + dim ) {
if ( isBottomDimension ( successorEpoch , dim ) & & memoryState . get ( dim ) ) {
epochModel . objectiveRewardFilter [ subObjectives [ dim ] . second ] . set ( reducedChoice , false ) ;
for ( uint64_t objIndex = 0 ; objIndex < this - > objectives . size ( ) ; + + objIndex ) {
if ( epochModel . objectiveRewardFilter [ objIndex ] . get ( reducedChoice ) ) {
for ( auto const & dim : objectiveDimensions [ objIndex ] ) {
if ( isBottomDimension ( successorEpoch , dim ) & & memoryState . get ( dim ) ) {
epochModel . objectiveRewardFilter [ objIndex ] . set ( reducedChoice , false ) ;
break ;
}
}
}
}
swAux1 . stop ( ) ;