File | Date | Author | Commit |
---|---|---|---|
doc | 2025-05-23 |
![]() |
[56bb1a] j chore: updated jar |
jar | 3 days ago |
![]() |
[286510] j refactor: further refactored main folder from... |
java | 3 days ago |
![]() |
[77355f] j refactor: moved main folder to jvm/ and sourc... |
jvm | 3 days ago |
![]() |
[f4114a] j chore: updated README |
matlab | 4 days ago |
![]() |
[d97bc4] m fix: more small nrm fixes |
maven | 2025-06-15 |
![]() |
[fc0d20] m,j,p: released 2.0.39. Updated dev files to 2.... |
python | 5 days ago |
![]() |
[1686f5] j refactor: made Matrix.data protected |
.gitattributes | 2024-08-02 |
![]() |
[2ebf61] feat: migration from Github |
.gitignore | 2024-08-02 |
![]() |
[2ebf61] feat: migration from Github |
CONTRIBUTING | 2024-08-02 |
![]() |
[2ebf61] feat: migration from Github |
LICENSE | 2024-08-02 |
![]() |
[2ebf61] feat: migration from Github |
README.md | 2024-08-02 |
![]() |
[1ddc16] chore: updated READMEs |
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())