Marmote Core
The project aims at realizing the prototype of a software environment dedicated to modeling with Markov chains.
markovChain.h
1 #ifndef MARKOVCHAIN_H
2 #define MARKOVCHAIN_H
3 
4 #include "marmoteConstants.h"
5 #include "Distribution/Distribution.h"
6 #include "simulationResult.h"
7 #include "transitionStructure/transitionStructure.h"
8 #include <string>
9 #include <iostream>
10 
11 using namespace std;
12 
17 class markovChain
18 {
19 
20  protected:
21 
22  timeType _type;
23  int _stateSpaceSize;
24  transitionStructure* _generator;
25  // someType _reward; to be defined later
26  // int _initState;
27  discreteDistribution* _initDistribution;
28  bool _debug;
30  bool _isAbstract;
31  int _abstractNbre;
32  string* _abstract;
33  string _format;
34  string _modelName;
36  public:
37  // constructors
38 
46  markovChain(int sz, timeType t);
47 
48 
57 
74  markovChain(string format, string param[], int nbreParam, string modelName,
75  bool isAbstract);
76 
82  virtual ~markovChain();
83 
84 public:
85  // accessors
86 
91  int stateSpaceSize() { return _stateSpaceSize; }
97  transitionStructure* generator() { return _generator; }
103  void setInitDistribution( discreteDistribution* d ) { if ( _initDistribution != NULL ){ delete(_initDistribution); }; _initDistribution = d; }
109  void setGenerator( transitionStructure* tr ) { _generator = tr; }
110 
117 Distribution * read();
123 void setFormat(string format){_format=format;}
129 void setModelName(string modelName){_modelName=modelName;}
130 
136  void setAbstractNbre(int abstractNbre){_abstractNbre=abstractNbre;}
137 
144  void setAbstract(string abstract[]);
145 
153  int abstractNbre(){return _abstractNbre;}
154 
161  string modelName(){return _modelName;}
167  string format(){return _format;}
168 
174  void abstract()
175  {
176 
177  for(int i=0; i<_abstractNbre;i++)
178  {
179  cout<<i<<":"<<_abstract[i];
180  }
181 
182  }
183 
184  public:
185  // solution methods
199  virtual simulationResult* simulateChain( double tMax,
200  bool Stats, bool Traj,
201  bool withIncrements, bool Print );
202 
213  virtual simulationResult* simulateChainDT( int tMax,
214  bool stats, bool traj,
215  bool trace );
227  virtual simulationResult* simulateChainCT( double tMax,
228  bool stats, bool traj,
229  bool withIncrements,
230  bool trace );
245  simulationResult* simulatePSI( int tMax,
246  bool stats, bool Traj,
247  bool Print );
248 
257  virtual Distribution* stationaryDistribution( bool progress );
266  virtual Distribution* stationaryDistributionCT( bool progress );
274  virtual Distribution* stationaryDistributionDT( bool progress );
275 
283  Distribution* stationaryDistributionGthLD();
284 
292  Distribution* stationaryDistributionSOR();
293 
303  simulationResult* stationaryDistributionSample( int nbSamples );
304 
313  Distribution* hittingTimeDistribution( int iState, bool *hitSetIndicator );
314 
326  int* simulateHittingTime(int iState, bool *hittingSet,
327  int nbSamples, int tMax );
334  double* averageHittingTime( bool *hitSetIndicator );
335 
343  double* averageHittingTimeDT( bool *hitSetIndicator );
344 
352  double* averageHittingTimeDT_iterative( bool *hitSetIndicator );
353 
354  public:
355 
361  virtual markovChain* copy();
362 
363 
371  virtual markovChain* uniformize();
372 
381  void setSizeType(const string path);
382  // virtual void makeMarkovChain();
383 
384  public:
385 
393  virtual void write( FILE *out, bool withReward );
394  virtual void write( string format, string modelName);
395 
396 };
397 
398 #endif // MARKOVCHAIN_H
Markov Chain class.
Definition: markovChain.h:32
transitionStructure * generator()
Read accessor to get the value of _generator which is a transitionStructure.
Definition: markovChain.h:97
void setAbstractNbre(int abstractNbre)
Utility to set the value of _abstractNbre.
Definition: markovChain.h:136
string modelName()
Utility to get _modelName.
Definition: markovChain.h:161
int stateSpaceSize()
Read accessor to get the number of states in the state space of the Markov chain. ...
Definition: markovChain.h:91
void setInitDistribution(discreteDistribution *d)
Write accessor to set the value of _initDistribution which is a discreteDistribution.
Definition: markovChain.h:103
A class for representing probability distributions.
Definition: Distribution.h:44
string format()
Utility to get _format.
Definition: markovChain.h:167
void setModelName(string modelName)
Utility to set the value of _modelName.
Definition: markovChain.h:129
void setFormat(string format)
Utility to set the value of _format.
Definition: markovChain.h:123
Abstract class for transition structures. These are structures which describe transitions to one stat...
Definition: transitionStructure.h:17
The general discrete distribution with finite support.
Definition: discreteDistribution.h:25
int abstractNbre()
Utility to get _abstractNbre.
Definition: markovChain.h:153
The class for transmitting (Monte Carlo) simulation results between objects. Simulation results may b...
Definition: simulationResult.h:18
void setGenerator(transitionStructure *tr)
Write accessor to set the value of _generator which is a transitionStructure.
Definition: markovChain.h:109