Package jline

LINE - A comprehensive toolkit for queueing theory analysis.

LINE is an open-source package for analyzing queueing models via analytical methods and simulation. It provides a complete modeling environment supporting open queueing systems, closed and open queueing networks, and layered queueing networks.

  • jline.lang - Core modeling language and network definitions
  • jline.solvers - Solution algorithms (MVA, JMT, SSA, CTMC, etc.)
  • jline.api - Low-level algorithmic implementations
  • jline.examples - Comprehensive example models and tutorials
  • jline.util - Utility classes and helper functions
  • jline.lib - External library dependencies
  • jline.bench - Performance benchmarking utilities
  • jline.io - Input/output and model serialization
  • jline.cli - Command-line interface
  • Open Networks: Jobs arrive from external sources (e.g., Poisson arrivals)
  • Closed Networks: Fixed population circulating within the system
  • Mixed Networks: Combination of open and closed job classes
  • Layered Networks: Hierarchical models with tasks and activities
  • Petri Nets: Token-based models with places and transitions
  • Exact Methods: MVA, Convolution, Matrix Analytic Methods
  • Simulation: Discrete-event simulation via JMT integration
  • Numerical: CTMC, Fluid analysis, SSA
  • Approximation: Heavy-traffic, diffusion approximations
  • Support for complex routing patterns and class switching
  • Multiple scheduling disciplines (FCFS, PS, LCFS, HOL, DPS, etc.)
  • Various service time distributions (Exponential, Erlang, HyperExp, APH, MAP)
  • Load-dependent services and finite capacity queues
  • Fork-join synchronization and cache modeling
  • Random environments

Getting Started:


// Create a simple M/M/1 queue
Network model = new Network("MM1");
Source source = new Source(model, "Source");
Queue queue = new Queue(model, "Queue", SchedStrategy.FCFS);
Sink sink = new Sink(model, "Sink");

// Set parameters
OpenClass openClass = new OpenClass(model, "Class1", 0);
source.setArrival(openClass, Exp.fitMean(1.0));
queue.setService(openClass, Exp.fitMean(2.0));

// Connect nodes using routing matrix
RoutingMatrix routingMatrix = model.initRoutingMatrix();
routingMatrix.set(openClass, openClass, source, queue, 1.0);
routingMatrix.set(openClass, openClass, queue, sink, 1.0);
model.link(routingMatrix);

// Solve
NetworkAvgTable avgTable = new SolverJMT(model).getAvgTable();
avgTable.print();

See: Description