Package jline
package jline
LINE - Queueing theory algorithms.
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.
Core Packages
jline.lang- Core modeling language and network definitionsjline.solvers- Solution algorithms (MVA, JMT, SSA, CTMC, etc.)jline.api- Low-level algorithmic implementationsjline.examples- Comprehensive example models and tutorialsjline.util- Utility classes and helper functionsjline.lib- External library dependenciesjline.bench- Performance benchmarking utilitiesjline.io- Input/output and model serializationjline.cli- Command-line interface
Supported Model Types
- 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
Solution Methods
- Exact Methods: MVA, Convolution, Matrix Analytic Methods
- Simulation: Discrete-event simulation via JMT integration
- Numerical: CTMC, Fluid analysis, SSA
- Approximation: Heavy-traffic, diffusion approximations
Key Features
- 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();
- Since:
- LINE 2.0
- Version:
- 3.0
- See Also:
-
ClassDescriptionGlobal constants for tolerances and solver configuration.Enumeration for specifying solver verbosity levels.