Examples
This section contains examples demonstrating LINE Solver Python capabilities, organized by complexity and topic. All examples are available as Jupyter notebooks in the python/examples/ directory.
Gallery Examples
The gallery contains fundamental queueing models used for validation and benchmarking.
Single Server Models
- M/M/1 Queue (
examples/gallery/gallery_mm1.ipynb) Classic single-server queue with Poisson arrivals and exponential service times.
- M/M/1 with Processor Sharing (
examples/gallery/gallery_mm1_ps.ipynb) Single-server queue with processor sharing scheduling.
- M/M/1 with Priority Classes (
examples/gallery/gallery_mm1_prio.ipynb) Single-server queue with multiple priority classes.
- M/M/1 with Multiclass (
examples/gallery/gallery_mm1_multiclass.ipynb) Single-server queue with multiple job classes.
- M/M/1 with Linear Service (
examples/gallery/gallery_mm1_linear.ipynb) Single-server queue with load-dependent linear service rates.
- M/M/1 with Feedback (
examples/gallery/gallery_mm1_feedback.ipynb) Single-server queue with probabilistic feedback routing.
- M/M/1 Tandem Network (
examples/gallery/gallery_mm1_tandem.ipynb) Series of M/M/1 queues in tandem.
- M/M/1 Reentrant Network (
examples/gallery/gallery_mm1_reentrant.ipynb) Jobs can revisit the same queue multiple times.
Multi-Server and Specialized Models
- M/M/k Queue (
examples/gallery/gallery_mmk.ipynb) Multi-server queue with exponential service times.
- HyperExp/M/1 Queue (
examples/gallery/gallery_hypm1.ipynb) Single-server queue with hyper-exponential arrivals.
- M/HyperExp/1 Queue (
examples/gallery/gallery_mhyp1.ipynb) Single-server queue with hyper-exponential service times.
- Gamma/M/1 Queue (
examples/gallery/gallery_gamm1.ipynb) Single-server queue with Gamma arrivals.
- Det/M/1 Queue (
examples/gallery/gallery_detm1.ipynb) Single-server queue with deterministic arrivals.
- M/Erlang/1 Queue (
examples/gallery/gallery_merl1.ipynb) Single-server queue with Erlang service times.
- Erlang/M/1 Queue (
examples/gallery/gallery_erlm1.ipynb) Single-server queue with Erlang arrivals.
Network Models
- Closed Queueing Network (
examples/gallery/gallery_cqn.ipynb) Basic closed queueing network with fixed population.
- Multiclass Closed Network (
examples/gallery/gallery_cqn_multiclass.ipynb) Closed network with multiple job classes.
- Repairmen Model (
examples/gallery/gallery_repairmen.ipynb) Classic machine repair model with limited repairmen.
Basic Examples
Open Queueing Networks
- Basic Open Network (
examples/basic/openQN/oqn_basic.ipynb) Simple open queueing network with multiple solvers comparison.
- One-Line Open Model (
examples/basic/openQN/oqn_oneline.ipynb) Minimal open model created in a single line of code.
- Four-Queue Network (
examples/basic/openQN/oqn_fourqueues.ipynb) Open network with four interconnected queues.
- Class-Switching Routing (
examples/basic/openQN/oqn_cs_routing.ipynb) Open network with class-switching routing behavior.
- Trace-Driven Model (
examples/basic/openQN/oqn_trace_driven.ipynb) Open network driven by empirical trace data.
- Multiple Sinks (
examples/basic/openQN/oqn_vsinks.ipynb) Open network with multiple sink nodes.
Closed Queueing Networks
- One-Line Closed Model (
examples/basic/closedQN/cqn_oneline.ipynb) Minimal closed model created in a single line of code.
- Multi-Queue Network (
examples/basic/closedQN/cqn_twoqueues_multi.ipynb) Closed network with multiple queues and routing.
- Multi-Server Network (
examples/basic/closedQN/cqn_multiserver.ipynb) Closed network with multi-server queues.
- Repairmen Model (
examples/basic/closedQN/cqn_repairmen.ipynb) Machine repair model with multiple repairmen.
- Multi-Repairmen Model (
examples/basic/closedQN/cqn_repairmen_multi.ipynb) Extended repairmen model with complex routing.
- BCMP Theorem Example (
examples/basic/closedQN/cqn_bcmp_theorem.ipynb) Example demonstrating BCMP network properties.
- DPS Scheduling (
examples/basic/closedQN/cqn_scheduling_dps.ipynb) Closed network with Discriminatory Processor Sharing.
- MMPP/2 Service (
examples/basic/closedQN/cqn_mmpp2_service.ipynb) Closed network with MMPP/2 service process.
- Two-Class Erlang (
examples/basic/closedQN/cqn_twoclass_erl.ipynb) Two-class closed network with Erlang distributions.
- Two-Class HyperExp (
examples/basic/closedQN/cqn_twoclass_hyperl.ipynb) Two-class closed network with hyper-exponential distributions.
- Three-Class HyperExp (
examples/basic/closedQN/cqn_threeclass_hyperl.ipynb) Three-class closed network with hyper-exponential distributions.
Mixed Queueing Networks
- Basic Mixed Network (
examples/basic/mixedQN/mqn_basic.ipynb) Network with both open and closed job classes.
- Single-Server FCFS (
examples/basic/mixedQN/mqn_singleserver_fcfs.ipynb) Mixed network with single-server FCFS scheduling.
- Single-Server PS (
examples/basic/mixedQN/mqn_singleserver_ps.ipynb) Mixed network with single-server processor sharing.
- Multi-Server FCFS (
examples/basic/mixedQN/mqn_multiserver_fcfs.ipynb) Mixed network with multi-server FCFS scheduling.
- Multi-Server PS (
examples/basic/mixedQN/mqn_multiserver_ps.ipynb) Mixed network with multi-server processor sharing.
Fork-Join Networks
- Basic Fork-Join, open (
examples/basic/forkJoin/fj_basic_open.ipynb) Simple fork-join parallel processing model with an open class.
- Basic Fork-Join, closed (
examples/basic/forkJoin/fj_basic_closed.ipynb) The same topology driven by a closed class.
- Basic Nesting (
examples/basic/forkJoin/fj_basic_nesting.ipynb) Fork-join network with nested parallel sections.
- Three Branches (
examples/basic/forkJoin/fj_threebranches.ipynb) Fork-join with three parallel processing branches.
- Serial Fork-Join (Closed) (
examples/basic/forkJoin/fj_serialfjs_closed.ipynb) Serial combination of fork-join sections in closed network.
- Route Overlap (
examples/basic/forkJoin/fj_route_overlap.ipynb) Fork-join with overlapping routing paths.
- With Delays (
examples/basic/forkJoin/fj_delays.ipynb) Fork-join network including delay nodes.
- Complex Serial (
examples/basic/forkJoin/fj_complex_serial.ipynb) Complex serial arrangement of fork-join sections.
- Class-Switching Pre-Fork (
examples/basic/forkJoin/fj_cs_prefork.ipynb) Class-switching before fork operations.
- Class-Switching Multi-Visits (
examples/basic/forkJoin/fj_cs_multi_visits.ipynb) Class-switching with multiple revisits in fork-join.
Priority and Scheduling Models
- Identical Priority Classes (
examples/basic/prioModel/prio_identical.ipynb) Multiple job classes with identical priorities.
- FCFS Priority Open (
examples/basic/prioModel/prio_hol_open.ipynb) Open network with first-come first-served priority scheduling.
- FCFS Priority Closed (
examples/basic/prioModel/prio_hol_closed.ipynb) Closed network with first-come first-served priority scheduling.
- PS Priority (
examples/basic/prioModel/prio_psprio.ipynb) Processor sharing with priority classes.
Class Switching Models
- Implicit Class Switching (
examples/basic/classSwitching/cs_implicit.ipynb) Network with implicit class switching behavior.
- Single Diamond (
examples/basic/classSwitching/cs_single_diamond.ipynb) Diamond-shaped routing with class switching.
- Multi Diamond (
examples/basic/classSwitching/cs_multi_diamond.ipynb) Multiple diamond routing patterns with class switching.
- Transient Class (
examples/basic/classSwitching/cs_transient_class.ipynb) Class switching with transient job classes.
Cache Models
- FIFO Replacement (
examples/basic/cacheModel/cache_replc_fifo.ipynb) Cache model with FIFO replacement policy.
- Round-Robin Replacement (
examples/basic/cacheModel/cache_replc_rr.ipynb) Cache model with round-robin replacement policy.
- Routing-Based Cache (
examples/basic/cacheModel/cache_replc_routing.ipynb) Cache model with routing-based replacement.
- Replacement Policy Comparison (
examples/basic/cacheModel/cache_compare_replc.ipynb) Comparison of different cache replacement policies.
Layered Queueing Networks
- Basic LQN (
examples/basic/layeredModel/lqn_basic.ipynb) Basic layered queueing network model.
- Serial LQN (
examples/basic/layeredModel/lqn_serial.ipynb) Serial arrangement of layered stochastic services.
- Two Tasks (
examples/basic/layeredModel/lqn_twotasks.ipynb) Layered model with two interacting tasks.
- Setup and Delay-Off (
examples/basic/layeredModel/lqn_setup.ipynb) Layered model whose servers switch off when idle and pay a setup time on reactivation.
- BPMN Workflow (
examples/basic/layeredModel/lqn_bpmn.ipynb) BPMN workflow modeled as layered queueing network.
- Multi-Solver LQN (
examples/basic/layeredModel/lqn_multi_solvers.ipynb) Layered model solved with multiple solvers.
- Workflow Example (
examples/basic/layeredModel/lqn_workflows.ipynb) Complex workflow modeled with layered networks.
- OFBiz Example (
examples/basic/layeredModel/lqn_ofbiz.ipynb) Real-world OFBiz application modeled as LQN.
Stochastic Petri Nets
- Basic Open SPN (
examples/basic/stochPetriNet/spn_basic_open.ipynb) Open stochastic Petri net model.
- Basic Closed SPN (
examples/basic/stochPetriNet/spn_basic_closed.ipynb) Closed stochastic Petri net model.
- Two Places Closed (
examples/basic/stochPetriNet/spn_closed_twoplaces.ipynb) Closed SPN with two places.
- Four Places Closed (
examples/basic/stochPetriNet/spn_closed_fourplaces.ipynb) Closed SPN with four places.
- Seven Places Open (
examples/basic/stochPetriNet/spn_open_sevenplaces.ipynb) Open SPN with seven places.
- Two Modes (
examples/basic/stochPetriNet/spn_twomodes.ipynb) SPN with two operational modes.
- Four Modes (
examples/basic/stochPetriNet/spn_fourmodes.ipynb) SPN with four operational modes.
- Inhibiting Arcs (
examples/basic/stochPetriNet/spn_inhibiting.ipynb) SPN with inhibiting arc constraints.
Advanced Examples
State Probabilities
- Aggregated State Probabilities (
examples/advanced/stateProbabilities/statepr_aggr.ipynb) Computing aggregated state probabilities for network analysis.
- Large Model Aggregation (
examples/advanced/stateProbabilities/statepr_aggr_large.ipynb) Aggregated state probabilities for large-scale models.
- System Aggregation (
examples/advanced/stateProbabilities/statepr_sys_aggr.ipynb) System-level aggregated state probability analysis.
- Large System Aggregation (
examples/advanced/stateProbabilities/statepr_sys_aggr_large.ipynb) System aggregation for large-scale network models.
- All Probabilities FCFS (
examples/advanced/stateProbabilities/statepr_allprobs_fcfs.ipynb) Complete state probability enumeration for FCFS scheduling.
- All Probabilities PS (
examples/advanced/stateProbabilities/statepr_allprobs_ps.ipynb) Complete state probability enumeration for processor sharing.
State-Dependent Routing
- Open State-Dependent Routing (
examples/advanced/stateDepRouting/sdroute_open.ipynb) Open network with routing decisions based on system state.
- Closed State-Dependent Routing (
examples/advanced/stateDepRouting/sdroute_closed.ipynb) Closed network with state-dependent routing policies.
- Two-Class State-Dependent (
examples/advanced/stateDepRouting/sdroute_twoclasses_closed.ipynb) Two-class closed network with state-dependent routing.
Initial State Specification
- FCFS Exponential Init (
examples/advanced/initState/init_state_fcfs_exp.ipynb) FCFS network with exponential service and specified initial state.
- FCFS Non-Exponential Init (
examples/advanced/initState/init_state_fcfs_nonexp.ipynb) FCFS network with non-exponential service and initial state.
- PS Initial State (
examples/advanced/initState/init_state_ps.ipynb) Processor sharing network with specified initial state.
Load-Dependent Services
- Multi-Server PS (
examples/advanced/loadDependent/ld_multiserver_ps.ipynb) Multi-server processor sharing with load-dependent rates.
- Multi-Server PS Two-Class (
examples/advanced/loadDependent/ld_multiserver_ps_twoclasses.ipynb) Two-class multi-server PS with load dependence.
- Multi-Server FCFS (
examples/advanced/loadDependent/ld_multiserver_fcfs.ipynb) Multi-server FCFS with load-dependent service rates.
- Class Dependence (
examples/advanced/loadDependent/ld_class_dependence.ipynb) Load dependence based on specific job classes.
Random Environment Models
- Two-Stage Repairmen (
examples/advanced/randomEnv/renv_twostages_repairmen.ipynb) Two-stage random environment with repairmen model.
- Three-Stage Repairmen (
examples/advanced/randomEnv/renv_threestages_repairmen.ipynb) Three-stage random environment with repairmen model.
- Four-Stage Repairmen (
examples/advanced/randomEnv/renv_fourstages_repairmen.ipynb) Four-stage random environment with repairmen model.
Switchover Times
- Basic Switchover (
examples/advanced/switchoverTimes/switchover_basic.ipynb) Queueing model with switchover times between service modes.
Reward Models
- Reward-Based CTMC Analysis (
examples/advanced/rewardModel/rewardModel_mm1k.ipynb) Demonstrates custom reward functions for CTMC analysis using setReward, getReward, and getAvgReward methods.
Layered Cache-Queueing Models
- Single Host (
examples/advanced/layeredCQ/lcq_singlehost.ipynb) Layered cache-queueing model with single host.
- Three Hosts (
examples/advanced/layeredCQ/lcq_threehosts.ipynb) Layered cache-queueing model with three hosts.
Further Example Areas
Beyond the categories above, python/examples/ carries four top-level areas,
each with a notebook per script:
discrete/Discrete-time (slotted) models: Geo/Geo/1, its loss variant, and discrete-time cycles with load dependence.
inference/Parameter estimation and demand inference: EKF, ERPS, MCMC, MLE, QMLE, trace-driven fitting, and the UBO/UBR estimator families.
opt/Optimization over models: server and population sizing, load balancing, host-demand fitting, sensitivity reports and Pareto frontiers.
solvers/Side-by-side solver comparisons (NC vs MVA vs CTMC vs SPN representations).
Notebooks Are Generated From the Scripts
Every .ipynb under python/examples/ is DERIVED from the .py beside
it by python/tools/gen_notebooks.py; its code cells are the script’s own
statements. Edit the .py and regenerate:
cd python
python3 tools/gen_notebooks.py # rewrite every stale notebook
python3 tools/gen_notebooks.py --check # report drift, write nothing
Hand-edits to a notebook are lost on the next regeneration, and the generator refuses any split that would change what the script runs.
Getting Started
For new users, we recommend starting with these examples in order:
Basic M/M/1 -
examples/gallery/gallery_mm1.ipynbOpen Network -
examples/basic/openQN/oqn_basic.ipynbClosed Network -
examples/basic/closedQN/cqn_twoqueues_multi.ipynbMixed Network -
examples/basic/mixedQN/mqn_basic.ipynb
Example Code Pattern
Most examples follow this general pattern:
from line_solver import *
import numpy as np
# Enable verbose output
GlobalConstants.set_verbose(VerboseLevel.STD)
# Create model
model = Network('MyModel')
# Define nodes
source = Source(model, 'Source')
queue = Queue(model, 'Queue', SchedStrategy.FCFS)
sink = Sink(model, 'Sink')
# Define job classes and service processes
jobclass = OpenClass(model, 'Jobs')
source.set_arrival(jobclass, Exp(1.0))
queue.set_service(jobclass, Exp(2.0))
# Define routing
P = model.init_routing_matrix()
P.add_route(jobclass, source, queue, 1.0)
P.add_route(jobclass, queue, sink, 1.0)
model.link(P)
# Solve with preferred solver
solver = MVA(model)
avg_table = solver.avg_table()
print(avg_table)