def __init__(self, M1=None, M2=None): from dolo.numeric.discretization import tensor_markov [P, Q] = tensor_markov( (M1.P,M1.Q), (M2.P, M2.Q) ) self.P = P self.Q = Q self.extend([P,Q])
def product_mc(markov_chains: List[MarkovChain]) -> MarkovChain: M = [(m.values, m.transitions) for m in markov_chains] from dolo.numeric.discretization import tensor_markov [P, Q] = tensor_markov(*M) return MarkovChain(Q, P)
def __init__(self, M1=None, M2=None): from dolo.numeric.discretization import tensor_markov [P, Q] = tensor_markov((M1.P, M1.Q), (M2.P, M2.Q)) self.P = P self.Q = Q self.extend([P, Q])
def discretize(self): M1 = self.M1.discretize() M2 = self.M2.discretize() from dolo.numeric.discretization import tensor_markov [P, Q] = tensor_markov((M1.values, M1.transitions), (M2.values, M2.transitions)) return DiscreteMarkovProcess(Q, P)
def discretize(self, to='mc'): M = [(m.values, m.transitions) for m in self.M] from dolo.numeric.discretization import tensor_markov [P, Q] = tensor_markov(*M) return DiscreteMarkovProcess(Q, P)