| File | Date | Author | Commit |
|---|---|---|---|
| doc | 2024-09-01 |
|
[be6527] m,j,p docs: update manuals |
| java | 2025-02-15 |
|
[dae7e3] j,m,p: chore changes to CRLF |
| kotlin | 2024-08-02 |
|
[2ebf61] feat: migration from Github |
| matlab | 2024-12-30 |
|
[d73e55] Added missing jline.jar |
| maven | 2024-08-26 |
|
[8a27c3] m: improved support for JNetwork |
| python | 2025-04-10 |
|
[77b5e1] Update |
| .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())