Menu

Tree [8c7dd7] master /
 History

HTTPS access


File Date Author Commit
 .claude 5 days ago Giuliano Casale Giuliano Casale [1aa091] chore: updated claude settings
 doc 7 days ago Giuliano Casale Giuliano Casale [7fe1b4] m,p chore: CRLF changes
 jar 26 minutes ago Giuliano Casale Giuliano Casale [ddc92b] j,p,m refactor: renamed examples
 matlab 26 minutes ago Giuliano Casale Giuliano Casale [ddc92b] j,p,m refactor: renamed examples
 maven 7 days ago Giuliano Casale Giuliano Casale [01fb73] chore: crlf changes
 python 26 minutes ago Giuliano Casale Giuliano Casale [ddc92b] j,p,m refactor: renamed examples
 .gitattributes 6 days ago Giuliano Casale Giuliano Casale [ded9f3] chore: update root files
 .gitignore 5 days ago Giuliano Casale Giuliano Casale [f931e2] chore: updated gitignore
 CLAUDE.md 1 day ago Giuliano Casale Giuliano Casale [d92e4f] p fix: automated test fixes
 CONTRIBUTING 6 days ago Giuliano Casale Giuliano Casale [ded9f3] chore: update root files
 LICENSE 6 days ago Giuliano Casale Giuliano Casale [ded9f3] chore: update root files
 README.md 6 days ago Giuliano Casale Giuliano Casale [ded9f3] chore: update root files

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())
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.