Menu

Tree [77b5e1] master /
 History

HTTPS access


File Date Author Commit
 doc 2024-09-01 casaleggg casaleggg [be6527] m,j,p docs: update manuals
 java 2025-02-15 casaleggg casaleggg [dae7e3] j,m,p: chore changes to CRLF
 kotlin 2024-08-02 gcasale gcasale [2ebf61] feat: migration from Github
 matlab 2024-12-30 casaleggg casaleggg [d73e55] Added missing jline.jar
 maven 2024-08-26 casaleggg casaleggg [8a27c3] m: improved support for JNetwork
 python 2025-04-10 Giuliano Casale Giuliano Casale [77b5e1] Update
 .gitattributes 2024-08-02 gcasale gcasale [2ebf61] feat: migration from Github
 .gitignore 2024-08-02 gcasale gcasale [2ebf61] feat: migration from Github
 CONTRIBUTING 2024-08-02 gcasale gcasale [2ebf61] feat: migration from Github
 LICENSE 2024-08-02 gcasale gcasale [2ebf61] feat: migration from Github
 README.md 2024-08-02 gcasale gcasale [1ddc16] chore: updated READMEs

Read Me

LINE Solver: Queueing Theory Algorithms

Website: http://line-solver.sourceforge.net/

Latest stable release: https://sourceforge.net/projects/line-solver/files/latest/download

License
Hits

Main distribution of the LINE solver for MATLAB (stable version), Java (alpha version), and Python (alpha version). Past releases can be found on Sourceforge.

What is LINE?

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.

Documentation

Check out the LINE manual and the README files in the java/, matlab/, and python/ folders for getting started information.

License

LINE is released as open source under the BSD-3 license.

Acknowledgement

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).

Example: Solving a basic queueing system

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())