cassiotbatista / rwa-wdm-sim

RWA WDM Simulator: A Python simulator for the routing and wavelength assignment problem in WDM transparent networks with static traffic
GNU General Public License v3.0
18 stars 12 forks source link
genetic-algorithm optical-networks routing routing-and-wavelength-assignment rwa transparent-wdm-networks wavelength-assignment wavelength-division-multiplexing wdm wdm-optical-networks

RWA Simulator over WDM Optical Networks

This repo contains a simulator that covers the routing and wavelength assignment (RWA) problem over wavelength-division multiplexing (WDM)-based all-optical networks with static traffic (SLE, for static lightpath establishment).

:pencil: Documentation: https://rwa-wdm.readthedocs.io/en/latest/index.html

The following algorithms are implemented:

The traffic is modelled according to exponential distrubutions of times (namely, the time between consecutive call arrivals and the time a successfully allocated call remains in the network occupying resources) that follow the Poisson distribution. This model was ported from a Matlab toolbox written by Przemyslaw Pawelcza.

Installation

Directly from PyPI via pip:

$ pip install rwa-wdm

Or, from source:

$ git clone htps://github.com/cassiobatista/rwa-wdm-sim.git
$ cd rwa-wdm-sim/
$ python setup.py install --skip-build

Usage

As a module from CLI:

$ python -m rwa_wdm -t rnp -c 8 -r dijkstra -w first-fit -d /tmp/results -p

Installation and dummy simulation

Alternatively, as a lib:

from rwa_wdm import simulator
# TBD

Requirements

:warning: Manual installation of required packages is necessary only if you're debugging the source without properly installing the package via either PyPI or setuptools.

We recommend the use of Anaconda:

$ conda create --name rwa python=3.8 argcomplete networkx numpy matplotlib
$ conda activate rwa

However, you can of course just use pip as well:

$ pip install pip --upgrade
$ pip install argcomplete numpy matplotlib networkx

Or simply use the requirements.txt file:

$ pip install -r requirements.txt

Citation

If you use this code, please cite us as one of the following:

EPIA 2017

Teixeira D.B.A., Batista C.T., Cardoso A.J.F., de S. Araújo J. (2017) A Genetic Algorithm Approach for Static Routing and Wavelength Assignment in All-Optical WDM Networks. In: Oliveira E., Gama J., Vale Z., Lopes Cardoso H. (eds) Progress in Artificial Intelligence. EPIA 2017. Lecture Notes in Computer Science, vol 10423. Springer, Cham

@inproceedings{Teixeira17,
    author    = {Teixeira, Diego Bento A. and Batista, Cassio T. and Cardoso, Afonso Jorge F. and de S. Ara{\'u}jo, Josivaldo},
    editor    = {Oliveira, Eug{\'e}nio and Gama, Jo{\~a}o and Vale, Zita and Lopes Cardoso, Henrique},
    title     = {A Genetic Algorithm Approach for Static Routing and Wavelength Assignment in All-Optical WDM Networks},
    booktitle = {Progress in Artificial Intelligence},
    year      = {2017},
    publisher = {Springer International Publishing},
    address   = {Cham},
    pages     = {421--432},
    doi       = {10.1007/978-3-319-65340-2_35},
    isbn      = {978-3-319-65340-2}
}

IFIP LANC 2018

Cassio Batista, Diego Teixeira, Thiago Coelho, and Josivaldo Araújo. 2018. Static-Traffic Routing and Wavelength Assignment in Transparent WDM Networks Using Genetic Algorithm. In Proceedings of the 10th Latin America Networking Conference (LANC ’18). Association for Computing Machinery, New York, NY, USA, 56–63. DOI:https://doi.org/10.1145/3277103.3277126

@inproceedings{Batista18,
    author    = {Batista, Cassio and Teixeira, Diego and Coelho, Thiago and Ara\'{u}jo, Josivaldo},
    title     = {Static-Traffic Routing and Wavelength Assignment in Transparent WDM Networks Using Genetic Algorithm},
    booktitle = {Proceedings of the 10th Latin America Networking Conference},
    series    = {LANC '18},
    year      = {2018},
    isbn      = {978-1-4503-5922-1},
    location  = {S\~{a}o Paulo, Brazil},
    pages     = {56--63},
    numpages  = {8},
    doi       = {10.1145/3277103.3277126},
    acmid     = {3277126},
    publisher = {ACM},
    address   = {New York, NY, USA}
}

License

GPL v3.0