@ -39,8 +39,9 @@ public:
* @ param probabilityMatrix The matrix representing the transitions in the model .
* @ param probabilityMatrix The matrix representing the transitions in the model .
* @ param stateLabeling The labeling that assigns a set of atomic
* @ param stateLabeling The labeling that assigns a set of atomic
* propositions to each state .
* propositions to each state .
* @ param stateRewardVector The reward values associated with the states .
* @ param transitionRewardMatrix The reward values associated with the transitions of the model .
* @ param optionalStateRewardVector The reward values associated with the states .
* @ param optionalTransitionRewardMatrix The reward values associated with the transitions of the model .
* @ param optionalChoiceLabeling A vector that represents the labels associated with the choices of each state .
*/
*/
Dtmc ( storm : : storage : : SparseMatrix < T > const & probabilityMatrix , storm : : models : : AtomicPropositionsLabeling const & stateLabeling ,
Dtmc ( storm : : storage : : SparseMatrix < T > const & probabilityMatrix , storm : : models : : AtomicPropositionsLabeling const & stateLabeling ,
boost : : optional < std : : vector < T > > const & optionalStateRewardVector , boost : : optional < storm : : storage : : SparseMatrix < T > > const & optionalTransitionRewardMatrix ,
boost : : optional < std : : vector < T > > const & optionalStateRewardVector , boost : : optional < storm : : storage : : SparseMatrix < T > > const & optionalTransitionRewardMatrix ,
@ -65,8 +66,9 @@ public:
* @ param probabilityMatrix The matrix representing the transitions in the model .
* @ param probabilityMatrix The matrix representing the transitions in the model .
* @ param stateLabeling The labeling that assigns a set of atomic
* @ param stateLabeling The labeling that assigns a set of atomic
* propositions to each state .
* propositions to each state .
* @ param stateRewardVector The reward values associated with the states .
* @ param transitionRewardMatrix The reward values associated with the transitions of the model .
* @ param optionalStateRewardVector The reward values associated with the states .
* @ param optionalTransitionRewardMatrix The reward values associated with the transitions of the model .
* @ param optionalChoiceLabeling A vector that represents the labels associated with the choices of each state .
*/
*/
Dtmc ( storm : : storage : : SparseMatrix < T > & & probabilityMatrix , storm : : models : : AtomicPropositionsLabeling & & stateLabeling ,
Dtmc ( storm : : storage : : SparseMatrix < T > & & probabilityMatrix , storm : : models : : AtomicPropositionsLabeling & & stateLabeling ,
boost : : optional < std : : vector < T > > & & optionalStateRewardVector , boost : : optional < storm : : storage : : SparseMatrix < T > > & & optionalTransitionRewardMatrix ,
boost : : optional < std : : vector < T > > & & optionalStateRewardVector , boost : : optional < storm : : storage : : SparseMatrix < T > > & & optionalTransitionRewardMatrix ,
@ -224,6 +226,10 @@ public:
/ / 3. Take care of the labeling .
/ / 3. Take care of the labeling .
storm : : models : : AtomicPropositionsLabeling newLabeling = storm : : models : : AtomicPropositionsLabeling ( this - > getStateLabeling ( ) , subSysStates ) ;
storm : : models : : AtomicPropositionsLabeling newLabeling = storm : : models : : AtomicPropositionsLabeling ( this - > getStateLabeling ( ) , subSysStates ) ;
newLabeling . addState ( ) ;
newLabeling . addState ( ) ;
if ( ! newLabeling . containsAtomicProposition ( " s_b " ) ) {
newLabeling . addAtomicProposition ( " s_b " ) ;
}
newLabeling . addAtomicPropositionToState ( " s_b " , newStateCount - 1 ) ;
/ / 4. Handle the optionals
/ / 4. Handle the optionals
@ -270,14 +276,26 @@ public:
newTransitionRewards = newTransRewards ;
newTransitionRewards = newTransRewards ;
}
}
/ / What about choice labeling ? ? Not documented , not parsed , not used , but there ?
boost : : optional < std : : vector < std : : set < uint_fast64_t > > > newChoiceLabels ;
if ( this - > hasChoiceLabels ( ) ) {
/ / Get the choice label sets and move the needed values to the front .
std : : vector < std : : set < uint_fast64_t > > newChoice ( this - > getChoiceLabeling ( ) ) ;
storm : : utility : : vector : : selectVectorValues ( newChoice , subSysStates , newChoice ) ;
/ / Throw away all values after the last state and set the choice label set for s_b as empty .
newChoice . resize ( newStateCount ) ;
newChoice [ newStateCount - 1 ] = std : : set < uint_fast64_t > ( ) ;
newChoiceLabels = newChoice ;
}
/ / 5. Make Dtmc from its parts and return it
/ / 5. Make Dtmc from its parts and return it
return storm : : models : : Dtmc < T > ( newMat ,
return storm : : models : : Dtmc < T > ( newMat ,
newLabeling ,
newLabeling ,
newStateRewards ,
newStateRewards ,
newTransitionRewards ,
newTransitionRewards ,
boost : : optional < std : : vector < std : : set < uint_fast64_t > > > ( )
newChoiceLabels
) ;
) ;
}
}