@ -16,6 +16,8 @@
# include "storm/models/symbolic/MarkovAutomaton.h"
# include "storm/models/symbolic/MarkovAutomaton.h"
# include "storm/models/symbolic/StandardRewardModel.h"
# include "storm/models/symbolic/StandardRewardModel.h"
# include "storm/storage/Scheduler.h"
# include <functional>
# include <functional>
# include <string>
# include <string>
# include <sstream>
# include <sstream>
@ -105,6 +107,7 @@ void define_model(py::module& m) {
py : : class_ < ModelBase , std : : shared_ptr < ModelBase > > modelBase ( m , " _ModelBase " , " Base class for all models " ) ;
py : : class_ < ModelBase , std : : shared_ptr < ModelBase > > modelBase ( m , " _ModelBase " , " Base class for all models " ) ;
modelBase . def_property_readonly ( " nr_states " , & ModelBase : : getNumberOfStates , " Number of states " )
modelBase . def_property_readonly ( " nr_states " , & ModelBase : : getNumberOfStates , " Number of states " )
. def_property_readonly ( " nr_transitions " , & ModelBase : : getNumberOfTransitions , " Number of transitions " )
. def_property_readonly ( " nr_transitions " , & ModelBase : : getNumberOfTransitions , " Number of transitions " )
. def_property_readonly ( " nr_choices " , & ModelBase : : getNumberOfChoices , " Number of choices " )
. def_property_readonly ( " model_type " , & ModelBase : : getType , " Model type " )
. def_property_readonly ( " model_type " , & ModelBase : : getType , " Model type " )
. def_property_readonly ( " supports_parameters " , & ModelBase : : supportsParameters , " Flag whether model supports parameters " )
. def_property_readonly ( " supports_parameters " , & ModelBase : : supportsParameters , " Flag whether model supports parameters " )
. def_property_readonly ( " has_parameters " , & ModelBase : : hasParameters , " Flag whether model has parameters " )
. def_property_readonly ( " has_parameters " , & ModelBase : : hasParameters , " Flag whether model has parameters " )
@ -183,11 +186,14 @@ void define_sparse_model(py::module& m) {
. def_property_readonly ( " backward_transition_matrix " , & SparseModel < double > : : getBackwardTransitions , py : : return_value_policy : : reference , py : : keep_alive < 1 , 0 > ( ) , " Backward transition matrix " )
. def_property_readonly ( " backward_transition_matrix " , & SparseModel < double > : : getBackwardTransitions , py : : return_value_policy : : reference , py : : keep_alive < 1 , 0 > ( ) , " Backward transition matrix " )
. def ( " reduce_to_state_based_rewards " , & SparseModel < double > : : reduceToStateBasedRewards )
. def ( " reduce_to_state_based_rewards " , & SparseModel < double > : : reduceToStateBasedRewards )
. def ( " __str__ " , getModelInfoPrinter < double > ( ) )
. def ( " __str__ " , getModelInfoPrinter < double > ( ) )
. def ( " to_dot " , [ ] ( SparseModel < double > & model ) { std : : stringstream ss ; model . writeDotToStream ( ss ) ; return ss . str ( ) ; } , " Write dot to a string " )
;
;
py : : class_ < SparseDtmc < double > , std : : shared_ptr < SparseDtmc < double > > > ( m , " SparseDtmc " , " DTMC in sparse representation " , model )
py : : class_ < SparseDtmc < double > , std : : shared_ptr < SparseDtmc < double > > > ( m , " SparseDtmc " , " DTMC in sparse representation " , model )
. def ( " __str__ " , getModelInfoPrinter < double > ( " DTMC " ) )
. def ( " __str__ " , getModelInfoPrinter < double > ( " DTMC " ) )
;
;
py : : class_ < SparseMdp < double > , std : : shared_ptr < SparseMdp < double > > > ( m , " SparseMdp " , " MDP in sparse representation " , model )
py : : class_ < SparseMdp < double > , std : : shared_ptr < SparseMdp < double > > > ( m , " SparseMdp " , " MDP in sparse representation " , model )
. def_property_readonly ( " nondeterministic_choice_indices " , [ ] ( SparseMdp < double > const & mdp ) { return mdp . getNondeterministicChoiceIndices ( ) ; } )
. def ( " apply_scheduler " , [ ] ( SparseMdp < double > const & mdp , storm : : storage : : Scheduler < double > const & scheduler , bool dropUnreachableStates ) { return mdp . applyScheduler ( scheduler , dropUnreachableStates ) ; } , " apply scheduler " , " scheduler " _a , " drop_unreachable_states " _a = true )
. def ( " __str__ " , getModelInfoPrinter < double > ( " MDP " ) )
. def ( " __str__ " , getModelInfoPrinter < double > ( " MDP " ) )
;
;
py : : class_ < SparsePomdp < double > , std : : shared_ptr < SparsePomdp < double > > > ( m , " SparsePomdp " , " POMDP in sparse representation " , model )
py : : class_ < SparsePomdp < double > , std : : shared_ptr < SparsePomdp < double > > > ( m , " SparsePomdp " , " POMDP in sparse representation " , model )
@ -209,6 +215,7 @@ void define_sparse_model(py::module& m) {
. def_property_readonly ( " transition_rewards " , [ ] ( SparseRewardModel < double > & rewardModel ) { return rewardModel . getTransitionRewardMatrix ( ) ; } )
. def_property_readonly ( " transition_rewards " , [ ] ( SparseRewardModel < double > & rewardModel ) { return rewardModel . getTransitionRewardMatrix ( ) ; } )
. def_property_readonly ( " state_rewards " , [ ] ( SparseRewardModel < double > & rewardModel ) { return rewardModel . getStateRewardVector ( ) ; } )
. def_property_readonly ( " state_rewards " , [ ] ( SparseRewardModel < double > & rewardModel ) { return rewardModel . getStateRewardVector ( ) ; } )
. def ( " get_state_reward " , [ ] ( SparseRewardModel < double > & rewardModel , uint64_t state ) { return rewardModel . getStateReward ( state ) ; } )
. def ( " get_state_reward " , [ ] ( SparseRewardModel < double > & rewardModel , uint64_t state ) { return rewardModel . getStateReward ( state ) ; } )
. def ( " get_zero_reward_states " , & SparseRewardModel < double > : : getStatesWithZeroReward < double > , " get states where all rewards are zero " , py : : arg ( " transition_matrix " ) )
. def ( " get_state_action_reward " , [ ] ( SparseRewardModel < double > & rewardModel , uint64_t action_index ) { return rewardModel . getStateActionReward ( action_index ) ; } )
. def ( " get_state_action_reward " , [ ] ( SparseRewardModel < double > & rewardModel , uint64_t action_index ) { return rewardModel . getStateActionReward ( action_index ) ; } )
. def_property_readonly ( " state_action_rewards " , [ ] ( SparseRewardModel < double > & rewardModel ) { return rewardModel . getStateActionRewardVector ( ) ; } )
. def_property_readonly ( " state_action_rewards " , [ ] ( SparseRewardModel < double > & rewardModel ) { return rewardModel . getStateActionRewardVector ( ) ; } )
. def ( " reduce_to_state_based_rewards " , [ ] ( SparseRewardModel < double > & rewardModel , storm : : storage : : SparseMatrix < double > const & transitions , bool onlyStateRewards ) { return rewardModel . reduceToStateBasedRewards ( transitions , onlyStateRewards ) ; } , py : : arg ( " transition_matrix " ) , py : : arg ( " only_state_rewards " ) , " Reduce to state-based rewards " )
. def ( " reduce_to_state_based_rewards " , [ ] ( SparseRewardModel < double > & rewardModel , storm : : storage : : SparseMatrix < double > const & transitions , bool onlyStateRewards ) { return rewardModel . reduceToStateBasedRewards ( transitions , onlyStateRewards ) ; } , py : : arg ( " transition_matrix " ) , py : : arg ( " only_state_rewards " ) , " Reduce to state-based rewards " )
@ -237,6 +244,8 @@ void define_sparse_model(py::module& m) {
. def ( " __str__ " , getModelInfoPrinter < RationalFunction > ( " ParametricDTMC " ) )
. def ( " __str__ " , getModelInfoPrinter < RationalFunction > ( " ParametricDTMC " ) )
;
;
py : : class_ < SparseMdp < RationalFunction > , std : : shared_ptr < SparseMdp < RationalFunction > > > ( m , " SparseParametricMdp " , " pMDP in sparse representation " , modelRatFunc )
py : : class_ < SparseMdp < RationalFunction > , std : : shared_ptr < SparseMdp < RationalFunction > > > ( m , " SparseParametricMdp " , " pMDP in sparse representation " , modelRatFunc )
. def_property_readonly ( " nondeterministic_choice_indices " , [ ] ( SparseMdp < double > const & mdp ) { return mdp . getNondeterministicChoiceIndices ( ) ; } )
. def ( " apply_scheduler " , [ ] ( SparseMdp < double > const & mdp , storm : : storage : : Scheduler < double > const & scheduler , bool dropUnreachableStates ) { return mdp . applyScheduler ( scheduler , dropUnreachableStates ) ; } , " apply scheduler " , " scheduler " _a , " drop_unreachable_states " _a = true )
. def ( " __str__ " , getModelInfoPrinter < RationalFunction > ( " ParametricMDP " ) )
. def ( " __str__ " , getModelInfoPrinter < RationalFunction > ( " ParametricMDP " ) )
;
;
py : : class_ < SparseCtmc < RationalFunction > , std : : shared_ptr < SparseCtmc < RationalFunction > > > ( m , " SparseParametricCtmc " , " pCTMC in sparse representation " , modelRatFunc )
py : : class_ < SparseCtmc < RationalFunction > , std : : shared_ptr < SparseCtmc < RationalFunction > > > ( m , " SparseParametricCtmc " , " pCTMC in sparse representation " , modelRatFunc )