Class MMDP

All Implemented Interfaces:
Serializable, Copyable
Direct Known Subclasses:
MMDP2

public class MMDP extends Markovian implements Serializable
A Markov-Modulated Deterministic Process (MMDP) for fluid queue modeling. Models fluid flow with deterministic rates modulated by a background Markov chain. Suitable for arrival and service processes in Markovian fluid queues analyzed by the mfq method of SolverFLD. The (Q, R) parameterization follows BUTools conventions: - Q: Generator matrix of the modulating CTMC (row sums = 0) - R: Diagonal matrix of deterministic rates per state MMDP is the deterministic analogue of MMPP: - MMPP: Poisson arrival rates modulated by a Markov chain - MMDP: Deterministic rates modulated by a Markov chain
See Also:
  • Constructor Details

    • MMDP

      public MMDP()
      Creates an empty MMDP instance.
    • MMDP

      public MMDP(Matrix Q, Matrix R)
      Creates an MMDP with specified generator Q and rate matrix R.
      Parameters:
      Q - n×n generator matrix (row sums = 0)
      R - n×n diagonal matrix of deterministic rates, or n-vector
  • Method Details

    • Q

      public Matrix Q()
      Returns the generator matrix Q.
      Returns:
      n×n generator matrix of the modulating CTMC
    • R

      public Matrix R()
      Returns the rate matrix R (diagonal).
      Returns:
      n×n diagonal matrix of deterministic rates
    • r

      public Matrix r()
      Returns the rate vector (diagonal of R).
      Returns:
      n-vector of deterministic rates per phase
    • getNumberOfPhases

      public long getNumberOfPhases()
      Description copied from class: Markovian
      Gets the number of phases in this Markovian distribution.
      Overrides:
      getNumberOfPhases in class Markovian
      Returns:
      the number of phases
    • getMeanRate

      public double getMeanRate()
      Computes the stationary mean rate. For MMDP: E[r] = π * diag(R), where π is the stationary distribution of the modulating CTMC with generator Q.
      Returns:
      stationary mean deterministic rate
    • getMean

      public double getMean()
      Description copied from class: Markovian
      Gets the mean of this Markovian distribution.
      Overrides:
      getMean in class Markovian
      Returns:
      the mean value, or NaN if the process contains NaN values
    • getRate

      public double getRate()
      Description copied from class: Distribution
      Gets the rate of this distribution (inverse of mean).
      Overrides:
      getRate in class Markovian
      Returns:
      the rate value (1/mean)
    • getSCV

      public double getSCV()
      Computes the squared coefficient of variation of rates. Computes Var[r]/E[r]^2 where expectation is over the stationary distribution of the modulating CTMC.
      Overrides:
      getSCV in class Markovian
      Returns:
      squared coefficient of variation
    • getProcess

      public MatrixCell getProcess()
      Description copied from class: Markovian
      Gets the matrix representation of this Markovian process.
      Overrides:
      getProcess in class Markovian
      Returns:
      MatrixCell containing D0, D1, ... matrices
    • fromMAP

      public static MMDP fromMAP(MAP map)
      Converts a MAP to MMDP (deterministic representation). Converts a Markovian Arrival Process to a Markov-Modulated Deterministic Process by extracting the full generator and using row sums of D1 as the deterministic rates.
      Parameters:
      map - MAP object to convert
      Returns:
      MMDP representation of the MAP
    • fromMMPP2

      public static MMDP fromMMPP2(double r0, double r1, double sigma0, double sigma1)
      Creates an MMDP from MMPP2 parameters. Creates a 2-state MMDP using the same parameterization as MMPP2.
      Parameters:
      r0 - rate in state 0
      r1 - rate in state 1
      sigma0 - transition rate from state 0 to state 1
      sigma1 - transition rate from state 1 to state 0
      Returns:
      2-state MMDP
    • isFeasible

      public static boolean isFeasible(Matrix Q, Matrix R)
      Checks if the given (Q, R) matrices define a valid MMDP. Requirements: - Q must be a valid generator (square, row sums = 0, proper signs) - R must be diagonal with non-negative entries - Q and R must have compatible dimensions
      Parameters:
      Q - generator matrix
      R - rate matrix
      Returns:
      true if valid MMDP, false otherwise
    • toString

      public String toString()
      Overrides:
      toString in class Object