Browse Source

Added support for 1-based indices for atomic proposition labeling. Fixed some whitespace typos.

main
dehnert 13 years ago
parent
commit
0ec2369459
  1. 3
      src/models/atomic_propositions_labeling.h
  2. 17
      src/models/dtmc.h
  3. 2
      src/models/single_atomic_proposition_labeling.h

3
src/models/atomic_propositions_labeling.h

@ -52,7 +52,8 @@ public:
*/ */
AtomicPropositionsLabeling(const uint_fast32_t nodeCount, AtomicPropositionsLabeling(const uint_fast32_t nodeCount,
const uint_fast32_t propositionCount) { const uint_fast32_t propositionCount) {
node_count = nodeCount; // add one for 1-bound indices
node_count = nodeCount + 1;
proposition_count = propositionCount; proposition_count = propositionCount;
propositions_current = 0; propositions_current = 0;
propositions = new SingleAtomicPropositionLabeling*[proposition_count]; propositions = new SingleAtomicPropositionLabeling*[proposition_count];

17
src/models/dtmc.h

@ -11,14 +11,15 @@
#include <pantheios/pantheios.hpp> #include <pantheios/pantheios.hpp>
#include <pantheios/inserters/integer.hpp> #include <pantheios/inserters/integer.hpp>
#include "labeling.h" #include "atomic_propositions_labeling.h"
#include "src/sparse/static_sparse_matrix.h" #include "src/sparse/static_sparse_matrix.h"
namespace mrmc { namespace mrmc {
namespace models { namespace models {
/*! This class represents a discrete-time Markov chain (DTMC) whose states are /*!
* This class represents a discrete-time Markov chain (DTMC) whose states are
* labeled with atomic propositions. * labeled with atomic propositions.
*/ */
template <class T> template <class T>
@ -33,7 +34,6 @@ public:
*/ */
Dtmc(mrmc::sparse::StaticSparseMatrix<T>* probability_matrix, Dtmc(mrmc::sparse::StaticSparseMatrix<T>* probability_matrix,
mrmc::models::AtomicPropositionsLabeling* state_labeling) { mrmc::models::AtomicPropositionsLabeling* state_labeling) {
pantheios::log_DEBUG("Creating a DTMC ");
this->probability_matrix = probability_matrix; this->probability_matrix = probability_matrix;
this->state_labeling = state_labeling; this->state_labeling = state_labeling;
} }
@ -44,7 +44,7 @@ public:
@param dtmc A reference to the DTMC that is to be copied. @param dtmc A reference to the DTMC that is to be copied.
*/ */
Dtmc(const Dtmc<T> &dtmc) : probability_matrix(dtmc.probability_matrix), state_labeling(dtmc.state_labeling) { Dtmc(const Dtmc<T> &dtmc) : probability_matrix(dtmc.probability_matrix), state_labeling(dtmc.state_labeling) {
// intentionally left empty pantheios::log_DEBUG("Copy constructor of DTMC invoked.");
} }
/*! /*!
@ -71,6 +71,15 @@ public:
return this->probability_matrix; return this->probability_matrix;
} }
void printModelInformation() {
std::cout << "------------------------------------------------------- " << std::endl;
std::cout << "Model type: DTMC" << std::endl;
std::cout << "States: " << this->getStateSpaceSize() << std::endl;
std::cout << "Transitions: " << this->getNumberOfTransitions() << std::endl;
std::cout << "Size in memory: " << sizeof(this->probability_matrix) + sizeof(this->state_labeling) << std::endl;
std::cout << "------------------------------------------------------- " << std::endl;
}
private: private:
/*! A matrix representing the transition probability function of the DTMC. */ /*! A matrix representing the transition probability function of the DTMC. */

2
src/models/single_atomic_proposition_labeling.h

@ -17,7 +17,7 @@ class SingleAtomicPropositionLabeling {
public: public:
//! Constructor //! Constructor
/*! /*!
\param nodeCount Amount of nodes that the DTMC has to label \param nodeCount Amount of nodes that the DTMC has to label
*/ */
SingleAtomicPropositionLabeling(uint_fast32_t nodeCount) : nodes(nodeCount) { SingleAtomicPropositionLabeling(uint_fast32_t nodeCount) : nodes(nodeCount) {

|||||||
100:0
Loading…
Cancel
Save