LINE - Queueing Theory Algorithms
Website: http://line-solver.sourceforge.net/
Latest stable release: https://sourceforge.net/projects/line-solver/files/latest/download
Main distribution of the LINE solver for MATLAB (stable version), Java (alpha version), and Python (alpha version). Past releases can be found on Sourceforge.
LINE is an open source package to analyze queueing models via analytical methods and simulation. The tool features algorithms for the solution of open queueing systems (e.g., M/M/1, M/M/k, M/G/1, ...), open and closed queueing networks, and layered queueing networks.
Check out the LINE manual and the README files in the java/, matlab/, and python/ folders for getting started information.
LINE is released as open source under the BSD-3 license.
The development of LINE has been partially funded by the European Commission grants FP7-318484 (MODAClouds), H2020-644869 (DICE), H2020-825040 (RADON), and by the EPSRC grant EP/M009211/1 (OptiMAM).
We illustrate how to simulate an M/M/1 queue:
MATLAB:
lineStart;
model = Network('M/M/1');
source = Source(model, 'Source');
queue = Queue(model, 'Queue', SchedStrategy.FCFS);
sink = Sink(model, 'Sink');
jobclass = OpenClass(model, 'Class1');
source.setArrival(jobclass, Exp(1.0));
queue.setService(jobclass, Exp(2.0));
model.link(Network.serialRouting(source,queue,sink));
AvgTable = SolverJMT(model,'seed',23000).getAvgTable
Java:
import jline.lang.*;
import jline.lang.constant.*;
import jline.lang.distributions.*;
import jline.lang.nodes.*;
import jline.solvers.jmt.JMTOptions;
import jline.solvers.jmt.SolverJMT;
public class MM1 {
public static void main(String[] args){
Network model = new Network("M/M/1");
Source source = new Source(model, "Source");
Queue queue = new Queue(model, "Queue", SchedStrategy.FCFS);
Sink sink = new Sink(model, "Sink");
OpenClass jobclass = new OpenClass(model, "Class1");
source.setArrival(jobclass, new Exp(1.0));
queue.setService(jobclass, new Exp(2.0));
model.link(Network.serialRouting(source, queue, sink));
new SolverJMT(model, "seed", 23000).getAvgTable().print();
}
}
Python:
from line_solver import *
if __name__ == "__main__":
model = Network("M/M/1")
source = Source(model, "Source")
queue = Queue(model, "Queue", SchedStrategy.FCFS)
sink = Sink(model, "Sink")
jobclass = OpenClass(model, "Class1")
source.setArrival(jobclass, Exp(1.0))
queue.setService(jobclass, Exp(2.0))
model.link(Network.serialRouting(source, queue, sink))
table = SolverJMT(model,"seed",23000).getAvgTable()
To extract a particular value you may use LINE's table get function (tget), for example:
print(tget(table,'Queue'))
print(table['RespT'].tolist())
print(tget(table,'Queue','Class1')['RespT'].tolist())
Cite As
Giuliano Casale. Integrated Performance Evaluation of Extended Queueing Network Models with LINE. Proceedings of the 2020 Winter Simulation Conference, ACM Press, December 2020.
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
matlab
matlab/cli
matlab/cli/websocket
matlab/examples
matlab/examples/example_custom_solver
matlab/examples/example_custom_solver/@SolverCustom
matlab/gallery
matlab/gettingstarted
matlab/lib/gspn
matlab/lib/gspn/@AdjacencyList
matlab/lib/gspn/@HashTable
matlab/lib/gspn/@TypedQueue
matlab/lib/gspn/@dlnode
matlab/lib/gspn/Util
matlab/lib/kpctoolbox
matlab/lib/kpctoolbox/aph
matlab/lib/kpctoolbox/basic
matlab/lib/kpctoolbox/contrib
matlab/lib/kpctoolbox/demo
matlab/lib/kpctoolbox/erchmm
matlab/lib/kpctoolbox/examples
matlab/lib/kpctoolbox/kpcfit
matlab/lib/kpctoolbox/map
matlab/lib/kpctoolbox/mc
matlab/lib/kpctoolbox/mmpp
matlab/lib/kpctoolbox/mvph
matlab/lib/kpctoolbox/smp/det
matlab/lib/kpctoolbox/tests
matlab/lib/kpctoolbox/trace
matlab/lib/m3a
matlab/lib/m3a/lib/thirdparty/QP
matlab/lib/m3a/lib/thirdparty/derivestsuite
matlab/lib/m3a/lib/thirdparty/derivestsuite/demo
matlab/lib/m3a/lib/thirdparty/fminsearchbnd
matlab/lib/m3a/lib/thirdparty/fminsearchbnd/demo
matlab/lib/m3a/lib/thirdparty/fminsearchbnd/test
matlab/lib/m3a/m3a
matlab/lib/m3a/m3a/amap2
matlab/lib/m3a/m3a/aph2
matlab/lib/m3a/m3a/m3pp
matlab/lib/m3a/m3a/mamap22
matlab/lib/m3a/m3a/mamap2m
matlab/lib/m3a/m3a/maph2
matlab/lib/m3a/m3a/mmap
matlab/lib/m3a/m3a/mtrace
matlab/lib/thirdparty
matlab/lib/thirdparty/FJ_codes
matlab/lib/thirdparty/MAMSolver_ETAQA_matlab
matlab/lib/thirdparty/MG1files
matlab/lib/thirdparty/QBDfiles
matlab/lib/thirdparty/butools/Matlab
matlab/lib/thirdparty/butools/Matlab/dmap
matlab/lib/thirdparty/butools/Matlab/dph
matlab/lib/thirdparty/butools/Matlab/fitting
matlab/lib/thirdparty/butools/Matlab/mam
matlab/lib/thirdparty/butools/Matlab/map
matlab/lib/thirdparty/butools/Matlab/mc
matlab/lib/thirdparty/butools/Matlab/moments
matlab/lib/thirdparty/butools/Matlab/ph
matlab/lib/thirdparty/butools/Matlab/queues
matlab/lib/thirdparty/butools/Matlab/reptrans
matlab/lib/thirdparty/butools/Matlab/trace
matlab/lib/thirdparty/butools/Matlab/utils
matlab/lib/thirdparty/graph_cc
matlab/lib/thirdparty/hurst_estimators/hurst_estimator
matlab/lib/thirdparty/lyap
matlab/lib/thirdparty/qmam/examples
matlab/lib/thirdparty/qmam/releases/1.0
matlab/lib/thirdparty/qmam/releases/1.1
matlab/lib/thirdparty/qmam/src
matlab/lib/thirdparty/qmam/stat
matlab/lib/thirdparty/smcsolver
matlab/lib/thirdparty/uniqueperms
matlab/lib/thirdparty/xml_read
matlab/src/api/cache
matlab/src/api/ctmc
matlab/src/api/fj
matlab/src/api/lossn
matlab/src/api/mam
matlab/src/api/npfqn
matlab/src/api/pfqn
matlab/src/api/polling
matlab/src/api/qsys
matlab/src/api/rl
matlab/src/api/sn
matlab/src/io
matlab/src/io/+PMIF
matlab/src/io/@ModelTransformer
matlab/src/lang
matlab/src/lang/+State
matlab/src/lang/@Network
matlab/src/lang/@NetworkGenerator
matlab/src/lang/constant
matlab/src/lang/layered
matlab/src/lang/layered/@LayeredNetwork
matlab/src/lang/layered/@LayeredNetworkGenerator
matlab/src/lang/nodes
matlab/src/lang/processes
matlab/src/lang/sections
matlab/src/solvers
matlab/src/solvers/@EnsembleSolver
matlab/src/solvers/@LayeredNetworkSolver
matlab/src/solvers/@NetworkSolver
matlab/src/solvers/AUTO
matlab/src/solvers/AUTO/@SolverAuto
matlab/src/solvers/CTMC
matlab/src/solvers/CTMC/@SolverCTMC
matlab/src/solvers/ENV/@SolverEnv
matlab/src/solvers/Fluid
matlab/src/solvers/Fluid/@SolverFluid
matlab/src/solvers/JMT
matlab/src/solvers/JMT/@SolverJMT
matlab/src/solvers/LN/@SolverLN
matlab/src/solvers/LQNS
matlab/src/solvers/LQNS/@SolverLQNS
matlab/src/solvers/LQNS/@SolverQNS
matlab/src/solvers/MAM
matlab/src/solvers/MAM/@SolverMAM
matlab/src/solvers/MVA
matlab/src/solvers/MVA/@SolverMVA
matlab/src/solvers/NC
matlab/src/solvers/NC/@SolverNC
matlab/src/solvers/SSA
matlab/src/solvers/SSA/@SolverSSA
matlab/util
Versions that use the GitHub default branch cannot be downloaded