Class MarkovProcess

java.lang.Object
jline.lang.processes.Process
jline.lang.processes.MarkovProcess
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
MarkedMarkovProcess

public class MarkovProcess extends Process
A class for a continuous time Markov chain
See Also:
  • Field Details

    • infGen

      protected Matrix infGen
    • stateSpace

      protected Matrix stateSpace
    • isfinite

      protected boolean isfinite
  • Constructor Details

    • MarkovProcess

      public MarkovProcess(Matrix infGen)
      Creates a CTMC with the specified infinitesimal generator
      Parameters:
      infGen - the infinitesimal generator matrix
    • MarkovProcess

      public MarkovProcess(Matrix infGen, boolean isFinite)
      Creates a CTMC with the specified infinitesimal generator and finite flag
      Parameters:
      infGen - the infinitesimal generator matrix
      isFinite - whether the CTMC is finite
    • MarkovProcess

      public MarkovProcess(Matrix infGen, boolean isFinite, Matrix stateSpace)
      Creates a CTMC with the specified infinitesimal generator, finite flag, and state space
      Parameters:
      infGen - the infinitesimal generator matrix
      isFinite - whether the CTMC is finite
      stateSpace - the state space representation
  • Method Details

    • toDTMC

      public MarkovChain toDTMC()
      Convert to DTMC using uniformization
      Returns:
      the equivalent DTMC
    • toDTMC

      public MarkovChain toDTMC(double q)
    • toTimeReversed

      public MarkovProcess toTimeReversed()
      Get time-reversed CTMC
      Returns:
      time-reversed CTMC
    • setStateSpace

      public void setStateSpace(Matrix stateSpace)
      Set the state space
      Parameters:
      stateSpace - the state space matrix
    • getGenerator

      public Matrix getGenerator()
      Get the infinitesimal generator matrix
      Returns:
      the generator matrix
    • getProbState

      public double getProbState(int state)
      Get probability of a specific state using steady-state analysis
      Parameters:
      state - the state index (0-based)
      Returns:
      the probability of the specified state
    • getProbState

      public Matrix getProbState(Matrix state)
      Get probability of a specific state using Cramer's rule
      Parameters:
      state - the state vector (if state space is defined) or single state index
      Returns:
      the probability matrix containing the state probability
    • solve

      public Matrix solve()
      Solve the CTMC for steady-state probabilities
      Returns:
      the steady-state probability vector
    • sample

      public Matrix sample()
      Sample from the CTMC
      Specified by:
      sample in class Process
      Returns:
      sampled value
    • sample

      public Matrix sample(int n)
      Sample n state transitions from the CTMC starting from steady-state
      Parameters:
      n - number of state transitions to sample
      Returns:
      matrix containing sampled states (column vector)
    • sample

      public Matrix sample(int n, Matrix pi0, Random random)
      Sample n state transitions from the CTMC
      Parameters:
      n - number of state transitions to sample
      pi0 - initial state distribution (if null, uses steady-state)
      random - random number generator
      Returns:
      matrix containing sampled states (column vector)
    • getStateSpace

      public Matrix getStateSpace()
      Get the state space
      Returns:
      the state space matrix
    • isFinite

      public boolean isFinite()
      Check if the CTMC is finite
      Returns:
      true if finite
    • rand

      public static MarkovProcess rand(int nStates)
      Create a random CTMC
      Parameters:
      nStates - number of states
      Returns:
      random CTMC
    • fromSampleSysAggr

      public static MarkovProcess fromSampleSysAggr(Matrix samples, Matrix sojournTimes)
      Create CTMC from sample system aggregation
      Parameters:
      samples - matrix where each row is a sample trajectory, each column is a time step
      sojournTimes - matrix of sojourn times corresponding to each state in samples
      Returns:
      CTMC constructed from samples by estimating transition rates
    • fromSampleSysAggr

      public static MarkovProcess fromSampleSysAggr(Matrix samples, Matrix sojournTimes, int numStates)
      Create CTMC from sample system aggregation
      Parameters:
      samples - matrix where each row is a sample trajectory, each column is a time step
      sojournTimes - matrix of sojourn times corresponding to each state in samples
      numStates - number of states (if -1, infer from data)
      Returns:
      CTMC constructed from samples by estimating transition rates
    • fromSampleSysAggr

      public static MarkovProcess fromSampleSysAggr(Matrix samples)
      Create CTMC from sample system aggregation (assuming unit sojourn times)
      Parameters:
      samples - matrix where each row is a sample trajectory, each column is a time step
      Returns:
      CTMC constructed from samples with unit time steps
    • fromSampleSysAggr

      public static MarkovProcess fromSampleSysAggr(Ret.SampleResult sa)
      Create CTMC from a SampleResult containing multi-node state trajectories. Matches MATLAB MarkovProcess.fromSampleSysAggr(sa) where sa has .state{} and .t fields.
      Parameters:
      sa - the SampleResult from sampleSysAggr()
      Returns:
      CTMC constructed from sampled state trajectories
    • fromSampleSysAggr

      public static MarkovProcess fromSampleSysAggr(Object sa)
      Create CTMC from sample system aggregation (dispatches based on input type).
      Parameters:
      sa - the sample aggregation object (Matrix or SampleResult)
      Returns:
      CTMC constructed from samples