├── Inputs ├── radioDelMatrix_node_00.txt ├── radioDelMatrix_node_01.txt ├── radioDelMatrix_node_03.txt ├── radioDelMatrix_node_05.txt ├── radioDelMatrix_node_06.txt ├── radioDelMatrix_node_04.txt ├── procDelay.txt ├── procDelay_5G.txt ├── procDelay_no5G.txt ├── fluctMatrix_no5G.txt ├── radioDelMatrix_node_02.txt ├── fluctMatrix.txt ├── fluctMatrix_5G.txt ├── topologyMatrix.txt ├── topologyMatrix_5G.txt ├── topologyMatrix_ failure.txt ├── topologyMatrix_no5G.txt └── FlowStates │ ├── flowsVector_10.txt │ ├── flowsVector_20.txt │ ├── flowsVector_30.txt │ ├── flowsVector_40.txt │ ├── flowsVector_50.txt │ ├── flowsVector_60.txt │ ├── flowsVector_70.txt │ ├── flowsVector_80.txt │ ├── flowsVector_90.txt │ ├── flowsVector_100.txt │ ├── flowsVector_110.txt │ ├── flowsVector_120.txt │ ├── flowsVector_130.txt │ ├── flowsVector_140.txt │ ├── flowsVector_150.txt │ ├── flowsVector_160.txt │ ├── flowsVector_170.txt │ ├── flowsVector_180.txt │ ├── flowsVector_190.txt │ └── flowsVector_200.txt ├── citation.cff ├── README.md ├── Example of execution with SLURM.sh └── geneticAlgorithmTSN5G.py /Inputs/radioDelMatrix_node_00.txt: -------------------------------------------------------------------------------- 1 | 2 2 | 0 -------------------------------------------------------------------------------- /Inputs/radioDelMatrix_node_01.txt: -------------------------------------------------------------------------------- 1 | 2 2 | 0 -------------------------------------------------------------------------------- /Inputs/radioDelMatrix_node_03.txt: -------------------------------------------------------------------------------- 1 | 2, 4, 5 2 | 0, 0, 0 3 | 0, 0, 0 4 | 0, 0, 0 -------------------------------------------------------------------------------- /Inputs/radioDelMatrix_node_05.txt: -------------------------------------------------------------------------------- 1 | 2, 4, 6 2 | 0, 0, 0 3 | 0, 0, 0 4 | 0, 0, 0 -------------------------------------------------------------------------------- /Inputs/radioDelMatrix_node_06.txt: -------------------------------------------------------------------------------- 1 | 3, 4, 5 2 | 0, 0, 0 3 | 0, 0, 0 4 | 0, 0, 0 -------------------------------------------------------------------------------- /Inputs/radioDelMatrix_node_04.txt: -------------------------------------------------------------------------------- 1 | 2, 3, 5, 6 2 | 0, 0, 0, 0 3 | 0, 0, 0, 0 4 | 0, 0, 0, 0 5 | 0, 0, 0, 0 -------------------------------------------------------------------------------- /Inputs/procDelay.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 2, 3, 4, 5, 6 2 | 10e-6, 10e-6, 0, 10e-6, 10e-6, 10e-6, 10e-6 -------------------------------------------------------------------------------- /Inputs/procDelay_5G.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 2, 3, 4, 5, 6 2 | 10e-6, 10e-6, 0, 10e-6, 10e-6, 10e-6, 10e-6 -------------------------------------------------------------------------------- /Inputs/procDelay_no5G.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 2, 3, 4, 5, 6 2 | 10e-6, 10e-6, 10e-6, 10e-6, 10e-6, 10e-6, 10e-6 -------------------------------------------------------------------------------- /Inputs/fluctMatrix_no5G.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 2, 3, 4, 5, 6 2 | 0, 0, 0, 0, 0, 0, 0 3 | 0, 0, 0, 0, 0, 0, 0 4 | 0, 0, 0, 0, 0, 0, 0 5 | 0, 0, 0, 0, 0, 0, 0 6 | 0, 0, 0, 0, 0, 0, 0 7 | 0, 0, 0, 0, 0, 0, 0 8 | 0, 0, 0, 0, 0, 0, 0 -------------------------------------------------------------------------------- /Inputs/radioDelMatrix_node_02.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 3, 4, 5 2 | 0, 40e-6, 25e-6, 20e-6, 25e-6 3 | 40e-6, 0, 25e-6, 25e-6, 25e-6 4 | 25e-6, 25e-6, 0, 15e-6, 20e-6 5 | 20e-6, 25e-6, 15e-6, 0, 15e-6 6 | 25e-6, 25e-6, 20e-6, 15e-6, 0 -------------------------------------------------------------------------------- /Inputs/fluctMatrix.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 2, 3, 4, 5, 6 2 | 0, 0, 0, 0, 0, 0, 0 3 | 0, 0, 0, 0, 0, 0, 0 4 | 0.15, 0.1, 0, 0.13, 0.09, 0.11, 0 5 | 0, 0, 0, 0, 0, 0, 0 6 | 0, 0, 0, 0, 0, 0, 0 7 | 0, 0, 0, 0, 0, 0, 0 8 | 0, 0, 0, 0, 0, 0, 0 -------------------------------------------------------------------------------- /Inputs/fluctMatrix_5G.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 2, 3, 4, 5, 6 2 | 0, 0, 0, 0, 0, 0, 0 3 | 0.15, 0.1, 0, 0.13, 0.09, 0.11, 0 4 | 0, 0, 0, 0, 0, 0, 0 5 | 0, 0, 0, 0, 0, 0, 0 6 | 0, 0, 0, 0, 0, 0, 0 7 | 0, 0, 0, 0, 0, 0, 0 8 | 0, 0, 0, 0, 0, 0, 0 -------------------------------------------------------------------------------- /Inputs/topologyMatrix.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 2, 3, 4, 5, 6 2 | 0, 0, 1e9, 0, 0, 0, 0 3 | 0, 0, 1e9, 0, 0, 0, 0 4 | 1e9, 1e9, 0, 1e9, 1e9, 1e9, 0 5 | 0, 0, 1e9, 0, 1e9, 0, 1e9 6 | 0, 0, 1e9, 1e9, 0, 1e9, 1e9 7 | 0, 0, 1e9, 0, 1e9, 0, 1e9 8 | 0, 0, 0, 1e9, 1e9, 1e9, 0 -------------------------------------------------------------------------------- /Inputs/topologyMatrix_5G.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 2, 3, 4, 5, 6 2 | 0, 0, 1e9, 0, 0, 0, 0 3 | 0, 0, 1e9, 0, 0, 0, 0 4 | 1e9, 1e9, 0, 1e9, 1e9, 1e9, 0 5 | 0, 0, 1e9, 0, 1e9, 0, 1e9 6 | 0, 0, 1e9, 1e9, 0, 1e9, 1e9 7 | 0, 0, 1e9, 0, 1e9, 0, 1e9 8 | 0, 0, 0, 1e9, 1e9, 1e9, 0 -------------------------------------------------------------------------------- /Inputs/topologyMatrix_ failure.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 2, 3, 4, 5, 6 2 | 0, 1e9, 0, 0, 0, 0, 0 3 | 1e9, 0, 1e9, 1e9, 0, 0, 0 4 | 0, 1e9, 0, 1e9, 1e9, 1e9, 0 5 | 0, 1e9, 1e9, 0, 1e9, 0, 1e9 6 | 0, 0, 1e9, 1e9, 0, 1e9, 1e9 7 | 0, 0, 1e9, 0, 1e9, 0, 1e9 8 | 0, 0, 0, 1e9, 1e9, 1e9, 0 -------------------------------------------------------------------------------- /Inputs/topologyMatrix_no5G.txt: -------------------------------------------------------------------------------- 1 | 0, 1, 2, 3, 4, 5, 6 2 | 0, 1e9, 1e9, 0, 0, 0, 0 3 | 1e9, 0, 1e9, 1e9, 0, 0, 0 4 | 1e9, 1e9, 0, 1e9, 1e9, 1e9, 0 5 | 0, 1e9, 1e9, 0, 1e9, 0, 1e9 6 | 0, 0, 1e9, 1e9, 0, 1e9, 1e9 7 | 0, 0, 1e9, 0, 1e9, 0, 1e9 8 | 0, 0, 0, 1e9, 1e9, 1e9, 0 -------------------------------------------------------------------------------- /citation.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | message: "If you use this software, please cite it as below." 3 | authors: 4 | - family-names: Rodríguez Martín 5 | given-names: Pablo 6 | orcid: https://orcid.org/0000-0002-7345-8923 7 | title: "Model for 5G network slicing scheduling with TSN" 8 | version: 1.0.3 9 | date-released: 2022-09-05 10 | -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_10.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_20.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Configuration of TSN networks for the transport of 5G slices: Optimization of the scheduler through Machine Learning (code only) 2 | 3 | _Code designed for MSc. Telecommunications Engineering Final Project_ 4 | 5 | _Full document can be found clicking on [here](https://digibug.ugr.es/handle/10481/77411)_ 6 | 7 | 8 | ## What is this repository about? 🚀 9 | 10 | _This code will allow you to set up an optimization model of a synchronous TSN integration with 5G network slices in transport networks where fluctuations caused by NFVs are of particular relevance._ 11 | 12 | 13 | 14 | ### Prerequisites 📋 15 | 16 | * _Python environment_ 17 | 18 | * _PyGAD library_ 19 | 20 | * _NetworkX library_ 21 | 22 | * _NumPy library_ 23 | 24 | * _SciPy library_ 25 | 26 | * _MatPLotLib library_ 27 | 28 | * _Powerful computational infrastructure (e.g. HPC)_ 29 | 30 | 31 | 32 | ## Authors ✒️ 33 | 34 | 35 | * **Pablo Rodríguez Martín** - *Main work* - [Paroma96](https://github.com/paroma96) 36 | 37 | -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_30.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_40.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 -------------------------------------------------------------------------------- /Example of execution with SLURM.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #SBATCH --job-name=ga_TSN5G_PRM_test_80_80_20 # Job name 3 | #SBATCH --mail-type=END,FAIL # Mail events (NONE, BEGIN, END, FAIL, ALL) 4 | #SBATCH --mail-user=xxxx@correo.ugr.es # Where to send mail 5 | #SBATCH --nodes=1 # Number of nodes 6 | #SBATCH --partition xxxx # Partition 7 | #SBATCH --mem=2gb # Job memory request 8 | #SBATCH --time=24:00:00 # Time limit hrs:min:sec 9 | #SBATCH --output=/path_to/Results/BashLogs/logs_ag.out # Standard output and error log 10 | 11 | pwd; hostname; date 12 | 13 | source /path_to/pyenvi/bin/activate 14 | 15 | echo "Starting process..." 16 | 17 | flowState="flowsVector_80" 18 | selection="rank" 19 | crossover="two_points" 20 | mutation="0.05" 21 | correction=5 22 | W_delay=0.8 23 | W_gap=0.2 24 | iterator=1 25 | 26 | 27 | until [ $iterator -gt 10 ] 28 | do 29 | python3 /path_to/geneticAlgorithmTSN5G.py $flowState $correction $selection $crossover $mutation $W_delay $W_gap $iterator > /path_to/Results/"logs_${flowState}_${selection}_${crossover}_${mutation}_${W_delay}_${W_gap}_${iterator}.txt" 30 | ((iterator=iterator+1)) 31 | done 32 | 33 | date -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_50.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_60.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_70.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_80.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_90.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_100.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_110.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 102 | 1,6,0.0005,0.0005,64,1e9,1e9 103 | 5,6,0.00025,0.00025,128,1e9,1e9 104 | 0,3,0.00075,0.0005,32,1e9,1e9 105 | 1,3,0.00025,0.00025,64,1e9,1e9 106 | 6,3,0.001,0.0005,128,1e9,1e9 107 | 6,5,0.00025,0.002,1024,1e9,1e9 108 | 5,6,0.0005,0.0005,64,1e9,1e9 109 | 6,1,0.0005,0.002,256,1e9,1e9 110 | 5,6,0.00025,0.00025,128,1e9,1e9 111 | 1,0,0.002,0.001,1024,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_120.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 102 | 1,6,0.0005,0.0005,64,1e9,1e9 103 | 5,6,0.00025,0.00025,128,1e9,1e9 104 | 0,3,0.00075,0.0005,32,1e9,1e9 105 | 1,3,0.00025,0.00025,64,1e9,1e9 106 | 6,3,0.001,0.0005,128,1e9,1e9 107 | 6,5,0.00025,0.002,1024,1e9,1e9 108 | 5,6,0.0005,0.0005,64,1e9,1e9 109 | 6,1,0.0005,0.002,256,1e9,1e9 110 | 5,6,0.00025,0.00025,128,1e9,1e9 111 | 1,0,0.002,0.001,1024,1e9,1e9 112 | 5,1,0.005,0.001,32,1e9,1e9 113 | 3,0,0.002,0.0005,512,1e9,1e9 114 | 0,1,0.0005,0.0005,32,1e9,1e9 115 | 0,5,0.002,0.002,512,1e9,1e9 116 | 1,3,0.002,0.0005,128,1e9,1e9 117 | 6,3,0.002,0.001,256,1e9,1e9 118 | 5,1,0.00025,0.00025,32,1e9,1e9 119 | 6,0,0.0005,0.001,256,1e9,1e9 120 | 0,5,0.00025,0.00025,128,1e9,1e9 121 | 1,3,0.00025,0.00025,64,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_130.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 102 | 1,6,0.0005,0.0005,64,1e9,1e9 103 | 5,6,0.00025,0.00025,128,1e9,1e9 104 | 0,3,0.00075,0.0005,32,1e9,1e9 105 | 1,3,0.00025,0.00025,64,1e9,1e9 106 | 6,3,0.001,0.0005,128,1e9,1e9 107 | 6,5,0.00025,0.002,1024,1e9,1e9 108 | 5,6,0.0005,0.0005,64,1e9,1e9 109 | 6,1,0.0005,0.002,256,1e9,1e9 110 | 5,6,0.00025,0.00025,128,1e9,1e9 111 | 1,0,0.002,0.001,1024,1e9,1e9 112 | 5,1,0.005,0.001,32,1e9,1e9 113 | 3,0,0.002,0.0005,512,1e9,1e9 114 | 0,1,0.0005,0.0005,32,1e9,1e9 115 | 0,5,0.002,0.002,512,1e9,1e9 116 | 1,3,0.002,0.0005,128,1e9,1e9 117 | 6,3,0.002,0.001,256,1e9,1e9 118 | 5,1,0.00025,0.00025,32,1e9,1e9 119 | 6,0,0.0005,0.001,256,1e9,1e9 120 | 0,5,0.00025,0.00025,128,1e9,1e9 121 | 1,3,0.00025,0.00025,64,1e9,1e9 122 | 6,1,0.001,0.002,512,1e9,1e9 123 | 5,0,0.00075,0.001,64,1e9,1e9 124 | 6,0,0.002,0.0005,32,1e9,1e9 125 | 0,5,0.002,0.001,256,1e9,1e9 126 | 5,0,0.00025,0.00025,128,1e9,1e9 127 | 3,6,0.005,0.001,256,1e9,1e9 128 | 0,5,0.00025,0.002,64,1e9,1e9 129 | 0,6,0.002,0.0005,128,1e9,1e9 130 | 1,0,0.0005,0.002,1024,1e9,1e9 131 | 6,5,0.00025,0.002,128,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_140.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 102 | 1,6,0.0005,0.0005,64,1e9,1e9 103 | 5,6,0.00025,0.00025,128,1e9,1e9 104 | 0,3,0.00075,0.0005,32,1e9,1e9 105 | 1,3,0.00025,0.00025,64,1e9,1e9 106 | 6,3,0.001,0.0005,128,1e9,1e9 107 | 6,5,0.00025,0.002,1024,1e9,1e9 108 | 5,6,0.0005,0.0005,64,1e9,1e9 109 | 6,1,0.0005,0.002,256,1e9,1e9 110 | 5,6,0.00025,0.00025,128,1e9,1e9 111 | 1,0,0.002,0.001,1024,1e9,1e9 112 | 5,1,0.005,0.001,32,1e9,1e9 113 | 3,0,0.002,0.0005,512,1e9,1e9 114 | 0,1,0.0005,0.0005,32,1e9,1e9 115 | 0,5,0.002,0.002,512,1e9,1e9 116 | 1,3,0.002,0.0005,128,1e9,1e9 117 | 6,3,0.002,0.001,256,1e9,1e9 118 | 5,1,0.00025,0.00025,32,1e9,1e9 119 | 6,0,0.0005,0.001,256,1e9,1e9 120 | 0,5,0.00025,0.00025,128,1e9,1e9 121 | 1,3,0.00025,0.00025,64,1e9,1e9 122 | 6,1,0.001,0.002,512,1e9,1e9 123 | 5,0,0.00075,0.001,64,1e9,1e9 124 | 6,0,0.002,0.0005,32,1e9,1e9 125 | 0,5,0.002,0.001,256,1e9,1e9 126 | 5,0,0.00025,0.00025,128,1e9,1e9 127 | 3,6,0.005,0.001,256,1e9,1e9 128 | 0,5,0.00025,0.002,64,1e9,1e9 129 | 0,6,0.002,0.0005,128,1e9,1e9 130 | 1,0,0.0005,0.002,1024,1e9,1e9 131 | 6,5,0.00025,0.002,128,1e9,1e9 132 | 1,5,0.002,0.0005,32,1e9,1e9 133 | 1,5,0.002,0.001,512,1e9,1e9 134 | 1,6,0.002,0.001,64,1e9,1e9 135 | 1,5,0.00025,0.00025,128,1e9,1e9 136 | 3,5,0.0005,0.001,64,1e9,1e9 137 | 3,5,0.00075,0.0005,1024,1e9,1e9 138 | 5,3,0.00025,0.00025,128,1e9,1e9 139 | 3,1,0.001,0.001,64,1e9,1e9 140 | 5,3,0.00075,0.0005,512,1e9,1e9 141 | 0,1,0.00025,0.0005,128,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_150.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 102 | 1,6,0.0005,0.0005,64,1e9,1e9 103 | 5,6,0.00025,0.00025,128,1e9,1e9 104 | 0,3,0.00075,0.0005,32,1e9,1e9 105 | 1,3,0.00025,0.00025,64,1e9,1e9 106 | 6,3,0.001,0.0005,128,1e9,1e9 107 | 6,5,0.00025,0.002,1024,1e9,1e9 108 | 5,6,0.0005,0.0005,64,1e9,1e9 109 | 6,1,0.0005,0.002,256,1e9,1e9 110 | 5,6,0.00025,0.00025,128,1e9,1e9 111 | 1,0,0.002,0.001,1024,1e9,1e9 112 | 5,1,0.005,0.001,32,1e9,1e9 113 | 3,0,0.002,0.0005,512,1e9,1e9 114 | 0,1,0.0005,0.0005,32,1e9,1e9 115 | 0,5,0.002,0.002,512,1e9,1e9 116 | 1,3,0.002,0.0005,128,1e9,1e9 117 | 6,3,0.002,0.001,256,1e9,1e9 118 | 5,1,0.00025,0.00025,32,1e9,1e9 119 | 6,0,0.0005,0.001,256,1e9,1e9 120 | 0,5,0.00025,0.00025,128,1e9,1e9 121 | 1,3,0.00025,0.00025,64,1e9,1e9 122 | 6,1,0.001,0.002,512,1e9,1e9 123 | 5,0,0.00075,0.001,64,1e9,1e9 124 | 6,0,0.002,0.0005,32,1e9,1e9 125 | 0,5,0.002,0.001,256,1e9,1e9 126 | 5,0,0.00025,0.00025,128,1e9,1e9 127 | 3,6,0.005,0.001,256,1e9,1e9 128 | 0,5,0.00025,0.002,64,1e9,1e9 129 | 0,6,0.002,0.0005,128,1e9,1e9 130 | 1,0,0.0005,0.002,1024,1e9,1e9 131 | 6,5,0.00025,0.002,128,1e9,1e9 132 | 1,5,0.002,0.0005,32,1e9,1e9 133 | 1,5,0.002,0.001,512,1e9,1e9 134 | 1,6,0.002,0.001,64,1e9,1e9 135 | 1,5,0.00025,0.00025,128,1e9,1e9 136 | 3,5,0.0005,0.001,64,1e9,1e9 137 | 3,5,0.00075,0.0005,1024,1e9,1e9 138 | 5,3,0.00025,0.00025,128,1e9,1e9 139 | 3,1,0.001,0.001,64,1e9,1e9 140 | 5,3,0.00075,0.0005,512,1e9,1e9 141 | 0,1,0.00025,0.0005,128,1e9,1e9 142 | 3,1,0.00075,0.002,128,1e9,1e9 143 | 6,3,0.00075,0.002,32,1e9,1e9 144 | 5,6,0.00075,0.0005,128,1e9,1e9 145 | 0,1,0.00025,0.00025,64,1e9,1e9 146 | 1,3,0.002,0.002,32,1e9,1e9 147 | 6,5,0.00025,0.00025,32,1e9,1e9 148 | 5,0,0.00025,0.00025,32,1e9,1e9 149 | 5,1,0.005,0.0005,64,1e9,1e9 150 | 5,6,0.00025,0.002,64,1e9,1e9 151 | 0,5,0.001,0.002,64,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_160.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 102 | 1,6,0.0005,0.0005,64,1e9,1e9 103 | 5,6,0.00025,0.00025,128,1e9,1e9 104 | 0,3,0.00075,0.0005,32,1e9,1e9 105 | 1,3,0.00025,0.00025,64,1e9,1e9 106 | 6,3,0.001,0.0005,128,1e9,1e9 107 | 6,5,0.00025,0.002,1024,1e9,1e9 108 | 5,6,0.0005,0.0005,64,1e9,1e9 109 | 6,1,0.0005,0.002,256,1e9,1e9 110 | 5,6,0.00025,0.00025,128,1e9,1e9 111 | 1,0,0.002,0.001,1024,1e9,1e9 112 | 5,1,0.005,0.001,32,1e9,1e9 113 | 3,0,0.002,0.0005,512,1e9,1e9 114 | 0,1,0.0005,0.0005,32,1e9,1e9 115 | 0,5,0.002,0.002,512,1e9,1e9 116 | 1,3,0.002,0.0005,128,1e9,1e9 117 | 6,3,0.002,0.001,256,1e9,1e9 118 | 5,1,0.00025,0.00025,32,1e9,1e9 119 | 6,0,0.0005,0.001,256,1e9,1e9 120 | 0,5,0.00025,0.00025,128,1e9,1e9 121 | 1,3,0.00025,0.00025,64,1e9,1e9 122 | 6,1,0.001,0.002,512,1e9,1e9 123 | 5,0,0.00075,0.001,64,1e9,1e9 124 | 6,0,0.002,0.0005,32,1e9,1e9 125 | 0,5,0.002,0.001,256,1e9,1e9 126 | 5,0,0.00025,0.00025,128,1e9,1e9 127 | 3,6,0.005,0.001,256,1e9,1e9 128 | 0,5,0.00025,0.002,64,1e9,1e9 129 | 0,6,0.002,0.0005,128,1e9,1e9 130 | 1,0,0.0005,0.002,1024,1e9,1e9 131 | 6,5,0.00025,0.002,128,1e9,1e9 132 | 1,5,0.002,0.0005,32,1e9,1e9 133 | 1,5,0.002,0.001,512,1e9,1e9 134 | 1,6,0.002,0.001,64,1e9,1e9 135 | 1,5,0.00025,0.00025,128,1e9,1e9 136 | 3,5,0.0005,0.001,64,1e9,1e9 137 | 3,5,0.00075,0.0005,1024,1e9,1e9 138 | 5,3,0.00025,0.00025,128,1e9,1e9 139 | 3,1,0.001,0.001,64,1e9,1e9 140 | 5,3,0.00075,0.0005,512,1e9,1e9 141 | 0,1,0.00025,0.0005,128,1e9,1e9 142 | 3,1,0.00075,0.002,128,1e9,1e9 143 | 6,3,0.00075,0.002,32,1e9,1e9 144 | 5,6,0.00075,0.0005,128,1e9,1e9 145 | 0,1,0.00025,0.00025,64,1e9,1e9 146 | 1,3,0.002,0.002,32,1e9,1e9 147 | 6,5,0.00025,0.00025,32,1e9,1e9 148 | 5,0,0.00025,0.00025,32,1e9,1e9 149 | 5,1,0.005,0.0005,64,1e9,1e9 150 | 5,6,0.00025,0.002,64,1e9,1e9 151 | 0,5,0.001,0.002,64,1e9,1e9 152 | 3,1,0.00025,0.00025,32,1e9,1e9 153 | 0,3,0.002,0.001,512,1e9,1e9 154 | 0,1,0.001,0.0005,256,1e9,1e9 155 | 6,0,0.001,0.0005,256,1e9,1e9 156 | 1,0,0.005,0.002,256,1e9,1e9 157 | 3,6,0.002,0.001,1024,1e9,1e9 158 | 6,1,0.00025,0.00025,32,1e9,1e9 159 | 6,3,0.00075,0.0005,256,1e9,1e9 160 | 6,5,0.005,0.001,64,1e9,1e9 161 | 3,1,0.001,0.002,128,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_170.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 102 | 1,6,0.0005,0.0005,64,1e9,1e9 103 | 5,6,0.00025,0.00025,128,1e9,1e9 104 | 0,3,0.00075,0.0005,32,1e9,1e9 105 | 1,3,0.00025,0.00025,64,1e9,1e9 106 | 6,3,0.001,0.0005,128,1e9,1e9 107 | 6,5,0.00025,0.002,1024,1e9,1e9 108 | 5,6,0.0005,0.0005,64,1e9,1e9 109 | 6,1,0.0005,0.002,256,1e9,1e9 110 | 5,6,0.00025,0.00025,128,1e9,1e9 111 | 1,0,0.002,0.001,1024,1e9,1e9 112 | 5,1,0.005,0.001,32,1e9,1e9 113 | 3,0,0.002,0.0005,512,1e9,1e9 114 | 0,1,0.0005,0.0005,32,1e9,1e9 115 | 0,5,0.002,0.002,512,1e9,1e9 116 | 1,3,0.002,0.0005,128,1e9,1e9 117 | 6,3,0.002,0.001,256,1e9,1e9 118 | 5,1,0.00025,0.00025,32,1e9,1e9 119 | 6,0,0.0005,0.001,256,1e9,1e9 120 | 0,5,0.00025,0.00025,128,1e9,1e9 121 | 1,3,0.00025,0.00025,64,1e9,1e9 122 | 6,1,0.001,0.002,512,1e9,1e9 123 | 5,0,0.00075,0.001,64,1e9,1e9 124 | 6,0,0.002,0.0005,32,1e9,1e9 125 | 0,5,0.002,0.001,256,1e9,1e9 126 | 5,0,0.00025,0.00025,128,1e9,1e9 127 | 3,6,0.005,0.001,256,1e9,1e9 128 | 0,5,0.00025,0.002,64,1e9,1e9 129 | 0,6,0.002,0.0005,128,1e9,1e9 130 | 1,0,0.0005,0.002,1024,1e9,1e9 131 | 6,5,0.00025,0.002,128,1e9,1e9 132 | 1,5,0.002,0.0005,32,1e9,1e9 133 | 1,5,0.002,0.001,512,1e9,1e9 134 | 1,6,0.002,0.001,64,1e9,1e9 135 | 1,5,0.00025,0.00025,128,1e9,1e9 136 | 3,5,0.0005,0.001,64,1e9,1e9 137 | 3,5,0.00075,0.0005,1024,1e9,1e9 138 | 5,3,0.00025,0.00025,128,1e9,1e9 139 | 3,1,0.001,0.001,64,1e9,1e9 140 | 5,3,0.00075,0.0005,512,1e9,1e9 141 | 0,1,0.00025,0.0005,128,1e9,1e9 142 | 3,1,0.00075,0.002,128,1e9,1e9 143 | 6,3,0.00075,0.002,32,1e9,1e9 144 | 5,6,0.00075,0.0005,128,1e9,1e9 145 | 0,1,0.00025,0.00025,64,1e9,1e9 146 | 1,3,0.002,0.002,32,1e9,1e9 147 | 6,5,0.00025,0.00025,32,1e9,1e9 148 | 5,0,0.00025,0.00025,32,1e9,1e9 149 | 5,1,0.005,0.0005,64,1e9,1e9 150 | 5,6,0.00025,0.002,64,1e9,1e9 151 | 0,5,0.001,0.002,64,1e9,1e9 152 | 3,1,0.00025,0.00025,32,1e9,1e9 153 | 0,3,0.002,0.001,512,1e9,1e9 154 | 0,1,0.001,0.0005,256,1e9,1e9 155 | 6,0,0.001,0.0005,256,1e9,1e9 156 | 1,0,0.005,0.002,256,1e9,1e9 157 | 3,6,0.002,0.001,1024,1e9,1e9 158 | 6,1,0.00025,0.00025,32,1e9,1e9 159 | 6,3,0.00075,0.0005,256,1e9,1e9 160 | 6,5,0.005,0.001,64,1e9,1e9 161 | 3,1,0.001,0.002,128,1e9,1e9 162 | 1,5,0.0005,0.0005,64,1e9,1e9 163 | 0,1,0.005,0.0005,32,1e9,1e9 164 | 3,0,0.00025,0.0005,128,1e9,1e9 165 | 3,0,0.00025,0.00025,128,1e9,1e9 166 | 1,6,0.00025,0.002,32,1e9,1e9 167 | 6,5,0.00025,0.00025,128,1e9,1e9 168 | 0,5,0.00025,0.00025,64,1e9,1e9 169 | 0,6,0.00075,0.0005,64,1e9,1e9 170 | 6,3,0.002,0.002,32,1e9,1e9 171 | 3,6,0.002,0.0005,64,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_180.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 102 | 1,6,0.0005,0.0005,64,1e9,1e9 103 | 5,6,0.00025,0.00025,128,1e9,1e9 104 | 0,3,0.00075,0.0005,32,1e9,1e9 105 | 1,3,0.00025,0.00025,64,1e9,1e9 106 | 6,3,0.001,0.0005,128,1e9,1e9 107 | 6,5,0.00025,0.002,1024,1e9,1e9 108 | 5,6,0.0005,0.0005,64,1e9,1e9 109 | 6,1,0.0005,0.002,256,1e9,1e9 110 | 5,6,0.00025,0.00025,128,1e9,1e9 111 | 1,0,0.002,0.001,1024,1e9,1e9 112 | 5,1,0.005,0.001,32,1e9,1e9 113 | 3,0,0.002,0.0005,512,1e9,1e9 114 | 0,1,0.0005,0.0005,32,1e9,1e9 115 | 0,5,0.002,0.002,512,1e9,1e9 116 | 1,3,0.002,0.0005,128,1e9,1e9 117 | 6,3,0.002,0.001,256,1e9,1e9 118 | 5,1,0.00025,0.00025,32,1e9,1e9 119 | 6,0,0.0005,0.001,256,1e9,1e9 120 | 0,5,0.00025,0.00025,128,1e9,1e9 121 | 1,3,0.00025,0.00025,64,1e9,1e9 122 | 6,1,0.001,0.002,512,1e9,1e9 123 | 5,0,0.00075,0.001,64,1e9,1e9 124 | 6,0,0.002,0.0005,32,1e9,1e9 125 | 0,5,0.002,0.001,256,1e9,1e9 126 | 5,0,0.00025,0.00025,128,1e9,1e9 127 | 3,6,0.005,0.001,256,1e9,1e9 128 | 0,5,0.00025,0.002,64,1e9,1e9 129 | 0,6,0.002,0.0005,128,1e9,1e9 130 | 1,0,0.0005,0.002,1024,1e9,1e9 131 | 6,5,0.00025,0.002,128,1e9,1e9 132 | 1,5,0.002,0.0005,32,1e9,1e9 133 | 1,5,0.002,0.001,512,1e9,1e9 134 | 1,6,0.002,0.001,64,1e9,1e9 135 | 1,5,0.00025,0.00025,128,1e9,1e9 136 | 3,5,0.0005,0.001,64,1e9,1e9 137 | 3,5,0.00075,0.0005,1024,1e9,1e9 138 | 5,3,0.00025,0.00025,128,1e9,1e9 139 | 3,1,0.001,0.001,64,1e9,1e9 140 | 5,3,0.00075,0.0005,512,1e9,1e9 141 | 0,1,0.00025,0.0005,128,1e9,1e9 142 | 3,1,0.00075,0.002,128,1e9,1e9 143 | 6,3,0.00075,0.002,32,1e9,1e9 144 | 5,6,0.00075,0.0005,128,1e9,1e9 145 | 0,1,0.00025,0.00025,64,1e9,1e9 146 | 1,3,0.002,0.002,32,1e9,1e9 147 | 6,5,0.00025,0.00025,32,1e9,1e9 148 | 5,0,0.00025,0.00025,32,1e9,1e9 149 | 5,1,0.005,0.0005,64,1e9,1e9 150 | 5,6,0.00025,0.002,64,1e9,1e9 151 | 0,5,0.001,0.002,64,1e9,1e9 152 | 3,1,0.00025,0.00025,32,1e9,1e9 153 | 0,3,0.002,0.001,512,1e9,1e9 154 | 0,1,0.001,0.0005,256,1e9,1e9 155 | 6,0,0.001,0.0005,256,1e9,1e9 156 | 1,0,0.005,0.002,256,1e9,1e9 157 | 3,6,0.002,0.001,1024,1e9,1e9 158 | 6,1,0.00025,0.00025,32,1e9,1e9 159 | 6,3,0.00075,0.0005,256,1e9,1e9 160 | 6,5,0.005,0.001,64,1e9,1e9 161 | 3,1,0.001,0.002,128,1e9,1e9 162 | 1,5,0.0005,0.0005,64,1e9,1e9 163 | 0,1,0.005,0.0005,32,1e9,1e9 164 | 3,0,0.00025,0.0005,128,1e9,1e9 165 | 3,0,0.00025,0.00025,128,1e9,1e9 166 | 1,6,0.00025,0.002,32,1e9,1e9 167 | 6,5,0.00025,0.00025,128,1e9,1e9 168 | 0,5,0.00025,0.00025,64,1e9,1e9 169 | 0,6,0.00075,0.0005,64,1e9,1e9 170 | 6,3,0.002,0.002,32,1e9,1e9 171 | 3,6,0.002,0.0005,64,1e9,1e9 172 | 1,5,0.00025,0.00025,64,1e9,1e9 173 | 0,6,0.00075,0.002,256,1e9,1e9 174 | 1,3,0.00025,0.00025,64,1e9,1e9 175 | 3,5,0.0005,0.0005,64,1e9,1e9 176 | 5,6,0.00025,0.00025,128,1e9,1e9 177 | 1,5,0.00025,0.002,512,1e9,1e9 178 | 5,6,0.00025,0.0005,32,1e9,1e9 179 | 0,5,0.00025,0.002,32,1e9,1e9 180 | 0,6,0.00075,0.001,1024,1e9,1e9 181 | 3,5,0.00025,0.00025,128,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_190.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 102 | 1,6,0.0005,0.0005,64,1e9,1e9 103 | 5,6,0.00025,0.00025,128,1e9,1e9 104 | 0,3,0.00075,0.0005,32,1e9,1e9 105 | 1,3,0.00025,0.00025,64,1e9,1e9 106 | 6,3,0.001,0.0005,128,1e9,1e9 107 | 6,5,0.00025,0.002,1024,1e9,1e9 108 | 5,6,0.0005,0.0005,64,1e9,1e9 109 | 6,1,0.0005,0.002,256,1e9,1e9 110 | 5,6,0.00025,0.00025,128,1e9,1e9 111 | 1,0,0.002,0.001,1024,1e9,1e9 112 | 5,1,0.005,0.001,32,1e9,1e9 113 | 3,0,0.002,0.0005,512,1e9,1e9 114 | 0,1,0.0005,0.0005,32,1e9,1e9 115 | 0,5,0.002,0.002,512,1e9,1e9 116 | 1,3,0.002,0.0005,128,1e9,1e9 117 | 6,3,0.002,0.001,256,1e9,1e9 118 | 5,1,0.00025,0.00025,32,1e9,1e9 119 | 6,0,0.0005,0.001,256,1e9,1e9 120 | 0,5,0.00025,0.00025,128,1e9,1e9 121 | 1,3,0.00025,0.00025,64,1e9,1e9 122 | 6,1,0.001,0.002,512,1e9,1e9 123 | 5,0,0.00075,0.001,64,1e9,1e9 124 | 6,0,0.002,0.0005,32,1e9,1e9 125 | 0,5,0.002,0.001,256,1e9,1e9 126 | 5,0,0.00025,0.00025,128,1e9,1e9 127 | 3,6,0.005,0.001,256,1e9,1e9 128 | 0,5,0.00025,0.002,64,1e9,1e9 129 | 0,6,0.002,0.0005,128,1e9,1e9 130 | 1,0,0.0005,0.002,1024,1e9,1e9 131 | 6,5,0.00025,0.002,128,1e9,1e9 132 | 1,5,0.002,0.0005,32,1e9,1e9 133 | 1,5,0.002,0.001,512,1e9,1e9 134 | 1,6,0.002,0.001,64,1e9,1e9 135 | 1,5,0.00025,0.00025,128,1e9,1e9 136 | 3,5,0.0005,0.001,64,1e9,1e9 137 | 3,5,0.00075,0.0005,1024,1e9,1e9 138 | 5,3,0.00025,0.00025,128,1e9,1e9 139 | 3,1,0.001,0.001,64,1e9,1e9 140 | 5,3,0.00075,0.0005,512,1e9,1e9 141 | 0,1,0.00025,0.0005,128,1e9,1e9 142 | 3,1,0.00075,0.002,128,1e9,1e9 143 | 6,3,0.00075,0.002,32,1e9,1e9 144 | 5,6,0.00075,0.0005,128,1e9,1e9 145 | 0,1,0.00025,0.00025,64,1e9,1e9 146 | 1,3,0.002,0.002,32,1e9,1e9 147 | 6,5,0.00025,0.00025,32,1e9,1e9 148 | 5,0,0.00025,0.00025,32,1e9,1e9 149 | 5,1,0.005,0.0005,64,1e9,1e9 150 | 5,6,0.00025,0.002,64,1e9,1e9 151 | 0,5,0.001,0.002,64,1e9,1e9 152 | 3,1,0.00025,0.00025,32,1e9,1e9 153 | 0,3,0.002,0.001,512,1e9,1e9 154 | 0,1,0.001,0.0005,256,1e9,1e9 155 | 6,0,0.001,0.0005,256,1e9,1e9 156 | 1,0,0.005,0.002,256,1e9,1e9 157 | 3,6,0.002,0.001,1024,1e9,1e9 158 | 6,1,0.00025,0.00025,32,1e9,1e9 159 | 6,3,0.00075,0.0005,256,1e9,1e9 160 | 6,5,0.005,0.001,64,1e9,1e9 161 | 3,1,0.001,0.002,128,1e9,1e9 162 | 1,5,0.0005,0.0005,64,1e9,1e9 163 | 0,1,0.005,0.0005,32,1e9,1e9 164 | 3,0,0.00025,0.0005,128,1e9,1e9 165 | 3,0,0.00025,0.00025,128,1e9,1e9 166 | 1,6,0.00025,0.002,32,1e9,1e9 167 | 6,5,0.00025,0.00025,128,1e9,1e9 168 | 0,5,0.00025,0.00025,64,1e9,1e9 169 | 0,6,0.00075,0.0005,64,1e9,1e9 170 | 6,3,0.002,0.002,32,1e9,1e9 171 | 3,6,0.002,0.0005,64,1e9,1e9 172 | 1,5,0.00025,0.00025,64,1e9,1e9 173 | 0,6,0.00075,0.002,256,1e9,1e9 174 | 1,3,0.00025,0.00025,64,1e9,1e9 175 | 3,5,0.0005,0.0005,64,1e9,1e9 176 | 5,6,0.00025,0.00025,128,1e9,1e9 177 | 1,5,0.00025,0.002,512,1e9,1e9 178 | 5,6,0.00025,0.0005,32,1e9,1e9 179 | 0,5,0.00025,0.002,32,1e9,1e9 180 | 0,6,0.00075,0.001,1024,1e9,1e9 181 | 3,5,0.00025,0.00025,128,1e9,1e9 182 | 5,0,0.00075,0.002,1024,1e9,1e9 183 | 3,6,0.0005,0.0005,32,1e9,1e9 184 | 0,1,0.0005,0.0005,64,1e9,1e9 185 | 6,5,0.0005,0.002,64,1e9,1e9 186 | 5,1,0.00025,0.00025,32,1e9,1e9 187 | 1,3,0.002,0.002,512,1e9,1e9 188 | 5,3,0.002,0.001,64,1e9,1e9 189 | 3,0,0.00075,0.0005,64,1e9,1e9 190 | 5,3,0.00025,0.00025,64,1e9,1e9 191 | 0,3,0.001,0.002,256,1e9,1e9 -------------------------------------------------------------------------------- /Inputs/FlowStates/flowsVector_200.txt: -------------------------------------------------------------------------------- 1 | src,dst,maxDelay,T_tx,length,talker_txSpeed,listener_rxSpeed 2 | 1,5,0.001,0.002,64,1e9,1e9 3 | 0,6,0.00025,0.00025,128,1e9,1e9 4 | 3,1,0.005,0.0005,512,1e9,1e9 5 | 3,6,0.00075,0.0005,32,1e9,1e9 6 | 1,3,0.005,0.002,512,1e9,1e9 7 | 6,1,0.00025,0.00025,32,1e9,1e9 8 | 3,1,0.005,0.0005,1024,1e9,1e9 9 | 1,5,0.002,0.001,256,1e9,1e9 10 | 1,0,0.00075,0.0005,512,1e9,1e9 11 | 5,3,0.00075,0.001,64,1e9,1e9 12 | 1,0,0.00025,0.002,512,1e9,1e9 13 | 0,5,0.002,0.002,256,1e9,1e9 14 | 3,0,0.00025,0.0005,64,1e9,1e9 15 | 6,5,0.00025,0.00025,128,1e9,1e9 16 | 5,0,0.001,0.001,1024,1e9,1e9 17 | 3,1,0.005,0.0005,512,1e9,1e9 18 | 0,3,0.00025,0.00025,128,1e9,1e9 19 | 1,3,0.00025,0.00025,64,1e9,1e9 20 | 3,0,0.0005,0.002,512,1e9,1e9 21 | 0,1,0.005,0.001,32,1e9,1e9 22 | 6,1,0.001,0.001,512,1e9,1e9 23 | 5,6,0.00025,0.00025,64,1e9,1e9 24 | 6,3,0.00075,0.0005,512,1e9,1e9 25 | 6,1,0.002,0.0005,256,1e9,1e9 26 | 6,3,0.005,0.002,128,1e9,1e9 27 | 3,1,0.0005,0.002,64,1e9,1e9 28 | 5,0,0.001,0.001,32,1e9,1e9 29 | 5,6,0.005,0.0005,1024,1e9,1e9 30 | 0,6,0.002,0.001,512,1e9,1e9 31 | 3,1,0.002,0.001,1024,1e9,1e9 32 | 6,5,0.0005,0.0005,512,1e9,1e9 33 | 6,5,0.001,0.002,32,1e9,1e9 34 | 3,0,0.005,0.001,1024,1e9,1e9 35 | 1,6,0.001,0.001,256,1e9,1e9 36 | 5,3,0.00025,0.00025,32,1e9,1e9 37 | 6,1,0.00025,0.00025,64,1e9,1e9 38 | 0,5,0.00025,0.00025,128,1e9,1e9 39 | 3,0,0.00075,0.002,512,1e9,1e9 40 | 0,1,0.00025,0.002,64,1e9,1e9 41 | 1,3,0.00025,0.001,1024,1e9,1e9 42 | 3,5,0.00025,0.00025,128,1e9,1e9 43 | 0,5,0.00025,0.00025,32,1e9,1e9 44 | 1,0,0.00025,0.00025,32,1e9,1e9 45 | 3,0,0.00075,0.002,256,1e9,1e9 46 | 1,3,0.00025,0.00025,32,1e9,1e9 47 | 0,3,0.00025,0.00025,64,1e9,1e9 48 | 6,0,0.002,0.001,64,1e9,1e9 49 | 5,1,0.001,0.0005,64,1e9,1e9 50 | 6,0,0.002,0.002,512,1e9,1e9 51 | 5,1,0.005,0.0005,64,1e9,1e9 52 | 5,6,0.002,0.0005,128,1e9,1e9 53 | 6,1,0.00075,0.002,1024,1e9,1e9 54 | 1,0,0.002,0.001,256,1e9,1e9 55 | 3,5,0.002,0.0005,32,1e9,1e9 56 | 1,3,0.002,0.001,512,1e9,1e9 57 | 0,3,0.0005,0.001,512,1e9,1e9 58 | 5,0,0.005,0.001,32,1e9,1e9 59 | 6,3,0.00025,0.001,1024,1e9,1e9 60 | 0,5,0.00025,0.0005,128,1e9,1e9 61 | 1,0,0.001,0.001,512,1e9,1e9 62 | 6,5,0.00025,0.00025,128,1e9,1e9 63 | 6,1,0.0005,0.001,128,1e9,1e9 64 | 0,1,0.002,0.002,256,1e9,1e9 65 | 0,6,0.00075,0.001,64,1e9,1e9 66 | 3,5,0.00075,0.001,512,1e9,1e9 67 | 5,1,0.0005,0.001,1024,1e9,1e9 68 | 0,1,0.00025,0.00025,64,1e9,1e9 69 | 3,6,0.00025,0.001,64,1e9,1e9 70 | 5,1,0.001,0.002,64,1e9,1e9 71 | 0,1,0.002,0.001,32,1e9,1e9 72 | 6,1,0.002,0.002,1024,1e9,1e9 73 | 0,3,0.002,0.002,256,1e9,1e9 74 | 3,1,0.002,0.001,256,1e9,1e9 75 | 1,0,0.00025,0.00025,64,1e9,1e9 76 | 5,6,0.002,0.002,32,1e9,1e9 77 | 3,5,0.00025,0.00025,64,1e9,1e9 78 | 0,3,0.002,0.002,64,1e9,1e9 79 | 0,1,0.00025,0.00025,32,1e9,1e9 80 | 0,6,0.00025,0.001,128,1e9,1e9 81 | 6,1,0.00025,0.00025,64,1e9,1e9 82 | 3,5,0.00025,0.001,512,1e9,1e9 83 | 3,6,0.00075,0.0005,1024,1e9,1e9 84 | 0,6,0.001,0.0005,32,1e9,1e9 85 | 3,1,0.00075,0.001,32,1e9,1e9 86 | 0,6,0.00025,0.002,32,1e9,1e9 87 | 0,5,0.00025,0.001,128,1e9,1e9 88 | 5,1,0.00025,0.001,512,1e9,1e9 89 | 1,5,0.005,0.001,32,1e9,1e9 90 | 6,1,0.005,0.001,1024,1e9,1e9 91 | 0,1,0.00025,0.00025,64,1e9,1e9 92 | 3,5,0.00075,0.002,128,1e9,1e9 93 | 6,1,0.00025,0.001,512,1e9,1e9 94 | 6,5,0.001,0.002,1024,1e9,1e9 95 | 5,0,0.00025,0.001,256,1e9,1e9 96 | 6,1,0.005,0.002,32,1e9,1e9 97 | 0,6,0.002,0.002,1024,1e9,1e9 98 | 5,0,0.001,0.002,64,1e9,1e9 99 | 6,0,0.00075,0.0005,32,1e9,1e9 100 | 3,6,0.00025,0.00025,128,1e9,1e9 101 | 1,5,0.001,0.001,64,1e9,1e9 102 | 1,6,0.0005,0.0005,64,1e9,1e9 103 | 5,6,0.00025,0.00025,128,1e9,1e9 104 | 0,3,0.00075,0.0005,32,1e9,1e9 105 | 1,3,0.00025,0.00025,64,1e9,1e9 106 | 6,3,0.001,0.0005,128,1e9,1e9 107 | 6,5,0.00025,0.002,1024,1e9,1e9 108 | 5,6,0.0005,0.0005,64,1e9,1e9 109 | 6,1,0.0005,0.002,256,1e9,1e9 110 | 5,6,0.00025,0.00025,128,1e9,1e9 111 | 1,0,0.002,0.001,1024,1e9,1e9 112 | 5,1,0.005,0.001,32,1e9,1e9 113 | 3,0,0.002,0.0005,512,1e9,1e9 114 | 0,1,0.0005,0.0005,32,1e9,1e9 115 | 0,5,0.002,0.002,512,1e9,1e9 116 | 1,3,0.002,0.0005,128,1e9,1e9 117 | 6,3,0.002,0.001,256,1e9,1e9 118 | 5,1,0.00025,0.00025,32,1e9,1e9 119 | 6,0,0.0005,0.001,256,1e9,1e9 120 | 0,5,0.00025,0.00025,128,1e9,1e9 121 | 1,3,0.00025,0.00025,64,1e9,1e9 122 | 6,1,0.001,0.002,512,1e9,1e9 123 | 5,0,0.00075,0.001,64,1e9,1e9 124 | 6,0,0.002,0.0005,32,1e9,1e9 125 | 0,5,0.002,0.001,256,1e9,1e9 126 | 5,0,0.00025,0.00025,128,1e9,1e9 127 | 3,6,0.005,0.001,256,1e9,1e9 128 | 0,5,0.00025,0.002,64,1e9,1e9 129 | 0,6,0.002,0.0005,128,1e9,1e9 130 | 1,0,0.0005,0.002,1024,1e9,1e9 131 | 6,5,0.00025,0.002,128,1e9,1e9 132 | 1,5,0.002,0.0005,32,1e9,1e9 133 | 1,5,0.002,0.001,512,1e9,1e9 134 | 1,6,0.002,0.001,64,1e9,1e9 135 | 1,5,0.00025,0.00025,128,1e9,1e9 136 | 3,5,0.0005,0.001,64,1e9,1e9 137 | 3,5,0.00075,0.0005,1024,1e9,1e9 138 | 5,3,0.00025,0.00025,128,1e9,1e9 139 | 3,1,0.001,0.001,64,1e9,1e9 140 | 5,3,0.00075,0.0005,512,1e9,1e9 141 | 0,1,0.00025,0.0005,128,1e9,1e9 142 | 3,1,0.00075,0.002,128,1e9,1e9 143 | 6,3,0.00075,0.002,32,1e9,1e9 144 | 5,6,0.00075,0.0005,128,1e9,1e9 145 | 0,1,0.00025,0.00025,64,1e9,1e9 146 | 1,3,0.002,0.002,32,1e9,1e9 147 | 6,5,0.00025,0.00025,32,1e9,1e9 148 | 5,0,0.00025,0.00025,32,1e9,1e9 149 | 5,1,0.005,0.0005,64,1e9,1e9 150 | 5,6,0.00025,0.002,64,1e9,1e9 151 | 0,5,0.001,0.002,64,1e9,1e9 152 | 3,1,0.00025,0.00025,32,1e9,1e9 153 | 0,3,0.002,0.001,512,1e9,1e9 154 | 0,1,0.001,0.0005,256,1e9,1e9 155 | 6,0,0.001,0.0005,256,1e9,1e9 156 | 1,0,0.005,0.002,256,1e9,1e9 157 | 3,6,0.002,0.001,1024,1e9,1e9 158 | 6,1,0.00025,0.00025,32,1e9,1e9 159 | 6,3,0.00075,0.0005,256,1e9,1e9 160 | 6,5,0.005,0.001,64,1e9,1e9 161 | 3,1,0.001,0.002,128,1e9,1e9 162 | 1,5,0.0005,0.0005,64,1e9,1e9 163 | 0,1,0.005,0.0005,32,1e9,1e9 164 | 3,0,0.00025,0.0005,128,1e9,1e9 165 | 3,0,0.00025,0.00025,128,1e9,1e9 166 | 1,6,0.00025,0.002,32,1e9,1e9 167 | 6,5,0.00025,0.00025,128,1e9,1e9 168 | 0,5,0.00025,0.00025,64,1e9,1e9 169 | 0,6,0.00075,0.0005,64,1e9,1e9 170 | 6,3,0.002,0.002,32,1e9,1e9 171 | 3,6,0.002,0.0005,64,1e9,1e9 172 | 1,5,0.00025,0.00025,64,1e9,1e9 173 | 0,6,0.00075,0.002,256,1e9,1e9 174 | 1,3,0.00025,0.00025,64,1e9,1e9 175 | 3,5,0.0005,0.0005,64,1e9,1e9 176 | 5,6,0.00025,0.00025,128,1e9,1e9 177 | 1,5,0.00025,0.002,512,1e9,1e9 178 | 5,6,0.00025,0.0005,32,1e9,1e9 179 | 0,5,0.00025,0.002,32,1e9,1e9 180 | 0,6,0.00075,0.001,1024,1e9,1e9 181 | 3,5,0.00025,0.00025,128,1e9,1e9 182 | 5,0,0.00075,0.002,1024,1e9,1e9 183 | 3,6,0.0005,0.0005,32,1e9,1e9 184 | 0,1,0.0005,0.0005,64,1e9,1e9 185 | 6,5,0.0005,0.002,64,1e9,1e9 186 | 5,1,0.00025,0.00025,32,1e9,1e9 187 | 1,3,0.002,0.002,512,1e9,1e9 188 | 5,3,0.002,0.001,64,1e9,1e9 189 | 3,0,0.00075,0.0005,64,1e9,1e9 190 | 5,3,0.00025,0.00025,64,1e9,1e9 191 | 0,3,0.001,0.002,256,1e9,1e9 192 | 6,5,0.001,0.001,128,1e9,1e9 193 | 3,1,0.002,0.002,256,1e9,1e9 194 | 0,1,0.00025,0.0005,512,1e9,1e9 195 | 1,6,0.005,0.0005,128,1e9,1e9 196 | 6,0,0.00025,0.00025,128,1e9,1e9 197 | 3,5,0.00075,0.002,128,1e9,1e9 198 | 5,0,0.00025,0.0005,1024,1e9,1e9 199 | 0,5,0.001,0.002,256,1e9,1e9 200 | 0,3,0.005,0.001,64,1e9,1e9 201 | 6,1,0.002,0.002,64,1e9,1e9 -------------------------------------------------------------------------------- /geneticAlgorithmTSN5G.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | This code defines the genetic algorithm that allows the use of a topology matrix (1 if 6 | node i is linked to node j, 0 if not) in order to find the optimal solution in a TSN+5G 7 | network for several restrictive flows from a source to a destination participating with its 8 | own constraints (max. delay, period, frame length, transceptors' capacity). It will optimize 9 | every flow's route and its scheduling based on its end-to-end maximum permissible delay 10 | and bandwidth usage on the links. Scheduler is then made up by the revision of every flow's 11 | normalized delay and the count of time within the gaps as explained in the, However, the 12 | system of Size-Based Queuing Algorithm and the compression of scheduling of flows presented 13 | in "No-wait Packet Scheduling for IEEE TSN" do not contemplate the existence of certain number 14 | of phases in a so-called "hyperperiod" calculated with all flows' different periods, so might 15 | lead to collisions. Additionally, the second publication is computationally far more expensive 16 | with compression as it will have to re-schedule all routes in order to reduce de end-to-end 17 | delay but also gaps. This work presents then a solution with Artificial Intelligence Genetic 18 | Algorithms in a simpler scheduler to minimize the set of flows' maximum delays, overall the 19 | most critical ones (higher periodicity and lower e2e delay); and, at the same time, reduce the 20 | gaps so best-effort traffic and guard bands can fit in them in a large number of scheduled 21 | flows with very restrictive parameters (Industry 4.0). Optionally, there is the possibility of 22 | choosing a full-duplex or a half-duplex configuration taking into account the link's usage in 23 | previous flows and the usage of left side scheduling, that means a flow arriving earlier can 24 | be placed before all the already scheduled sequence. With this last configuration may happen 25 | that a flow's slow down must be performed in order to reduce that delay so it spends no time 26 | in queue, but there is no gap enough to satisfy the scrolling of time. Finally, this model 27 | offers the possibility to use 5G logic bridges with guard band as solution of the NFVs 28 | fluctuations, so additional delay is added in radioaccess. 29 | 30 | @author Pablo Rodríguez Martín 31 | (pablorodrimar@correo.ugr.es) 32 | 33 | MSc. Telecommunication Engineering Final Project (TFM) - University of Granada 34 | 35 | Title: Synchronous TSN Topologies Configuration for transportation of 5G Network Slices. 36 | Machine Learning Optimization of Scheduler. 37 | 38 | Date: September, 2022 39 | """ 40 | 41 | from scipy.io import savemat 42 | from goto import with_goto 43 | 44 | import matplotlib.pyplot as plt 45 | import networkx as nx 46 | import numpy as np 47 | import random 48 | import pygad 49 | import copy 50 | import math 51 | import sys 52 | import os 53 | 54 | """Class that implements the whole TSN network topology object from the given topology matrix, 55 | links' capacities and flows' constraints files. It contains the nodes and ports that the flows 56 | go through along the different phases within a calculated hyperperiod from periods (LCM).""" 57 | class TSN_NETWORK: 58 | # ========================================================================================= 59 | # INITIALIZATION 60 | def __init__(self: object, path: list = [], reduceSpace: int = 4, pathLen: int = 4, \ 61 | bidirec: bool = 1, maxLenFrame: int = 1500) -> object: 62 | #-------------------------------------------------------------------------------------- 63 | # DEFAULT: NULL 64 | # 4 shortest paths 65 | # 4 nodes per path (max.) 66 | # Half-duplex 67 | # 1500 Bytes 68 | #-------------------------------------------------------------------------------------- 69 | # Matrix with the TSN network's topology contained 70 | self.topology: list = self.readTopology(path) 71 | # Number of nodes involved in the described topology 72 | self.N: int = len(self.topology) 73 | if(self.N != len(self.topology[0])): 74 | print("ERROR: TOPOLOGY MATRIX MISMATCHES DIMENSIONS. INPUT MUST BE A SQUARE \ 75 | MATRIX OF NxN NODES") 76 | return 77 | #-------------------------------------------------------------------------------------- 78 | # Vector with the nodes' processing time delay. Different values may cause bottlenecks! 79 | self.procDelay: list = self.readProcDelay(path) 80 | if(self.N != len(self.procDelay)): 81 | print("ERROR: PROCESSING DELAY VECTOR MISMATCHES DIMENSIONS.") 82 | return 83 | #-------------------------------------------------------------------------------------- 84 | # Matrix with guardband percentages between TSN and 5G nodes 85 | self.fluctuations: list = [] 86 | if(mode5G): 87 | self.fluctuations = self.readFluct(path) 88 | if(self.N != len(self.fluctuations) or self.N != len(self.fluctuations[0])): 89 | print("ERROR: FLUCTUATIONS VECTOR MISMATCHES DIMENSIONS.") 90 | return 91 | else: 92 | self.fluctuations = np.zeros((self.N,self.N)) 93 | #-------------------------------------------------------------------------------------- 94 | # Matrix with radioaccess delay 95 | self.radioDelay: list = [] 96 | if(mode5G): 97 | files: str = os.listdir(path + "/Inputs/") 98 | for file in files: 99 | if(file.startswith('radioDelMatrix_node_')): 100 | self.radioDelay.append(self.readRadioDelay(path, file)) 101 | else: 102 | for zero_cnt in range(self.N): 103 | self.radioDelay.append(np.zeros((self.N,self.N))) 104 | #-------------------------------------------------------------------------------------- 105 | # Matrix with the flows' constraints e2e (src-dst, max. delay, tx period, frame size, 106 | # talker's throughput, listener's throughput) 107 | if(path): 108 | flows: list = self.readFlows(path) 109 | else: 110 | print("ERROR: NO FLOWS FILE SPECIFIED") 111 | return 112 | if(flows): 113 | flows = self.sortFlows(flows) # Sorted list of flows 114 | self.flows: list = [] 115 | for flowLine in flows: 116 | flow: object = FLOW(flowLine) # Call to flow object 117 | self.flows.append(flow) 118 | else: 119 | print("ERROR: NO FLOWS' CONSTRAINTS SPECIFIED") 120 | return 121 | # Number of flows involved in the described topology 122 | self.M: int = len(self.flows) 123 | #-------------------------------------------------------------------------------------- 124 | # Vector with all flows' periods' Least Common Multiple (LCM) -- Hyperperiod 125 | self.LCM: float = 1.0 126 | self.minPeriod: float = 100000.0 127 | self.order: float = 1e-3 # ms 128 | for i in range(self.M): 129 | period: int = int(self.flows[i].T_tx * 100 / self.order) 130 | self.LCM = int((self.LCM * period) / (GCD(self.LCM, period))) # All flows' LCM 131 | if(period <= self.minPeriod): 132 | self.minPeriod = period 133 | self.LCM = self.LCM * self.order / 100 134 | self.minPeriod = self.minPeriod * self.order / 100 135 | #-------------------------------------------------------------------------------------- 136 | # Precision of time: ns 137 | self.precision: int = round(abs(math.log(10e-9, 10))+1) 138 | #-------------------------------------------------------------------------------------- 139 | # Matrix with all possible flows' paths/routes e2e 140 | self.reduceSpace: int = reduceSpace # Number of max paths per flow 141 | self.pathLen: int = pathLen # Number of max nodes per path 142 | self.pathFlows: list = [] 143 | for i in range(len(self.flows)): 144 | calc: bool = 1 145 | for j in range(len(self.pathFlows)): 146 | if(self.pathFlows[j][0][0] == self.flows[i].src and \ 147 | self.pathFlows[j][0][-1] == self.flows[i].dst): # Already calculated 148 | self.pathFlows.append(self.pathFlows[j]) 149 | calc = 0 150 | break 151 | if(calc): # Not calculated yet 152 | self.pathFlows.append(self.listPaths(self.topology, self.flows[i], \ 153 | self.reduceSpace, self.pathLen)) 154 | #-------------------------------------------------------------------------------------- 155 | # Possibility of bidirectional links between nodes, so scheduling is shared for both 156 | self.bidirec: bool = bidirec # 1 half-duplex links (symm. matrix), 0 full-duplex links 157 | #-------------------------------------------------------------------------------------- 158 | # Network's biggest Ethernet frame size 159 | self.maxLenFrame: int = maxLenFrame # Bytes 160 | #-------------------------------------------------------------------------------------- 161 | # Resetting 162 | self.nodes: list = [] 163 | self.reset() 164 | # ========================================================================================= 165 | # Resets TSN simulation in order to perform a new one with the creation of nodes with their 166 | # own ports according to the topology. Each node has its own ID, ports and process delay 167 | # due to conmutation. 168 | def reset(self: object) -> None: 169 | #First deletes previous objects 170 | aux1: int = len(self.nodes) 171 | for i in range(aux1): 172 | aux2: int = len(self.nodes[0].ports) 173 | for j in range(aux2): 174 | del self.nodes[0].ports[0] 175 | del self.nodes[0] 176 | #New objects 177 | for x in range(self.N): 178 | self.nodes.append(NODE(x, self.topology[x], self.procDelay[x], \ 179 | self.fluctuations[x], self.minPeriod, self.LCM)) 180 | # ========================================================================================= 181 | # Reads TSN topology through a matrix of linked nodes. 1 if node i is linked to node j, 182 | # 0 if not. Matrix may not be symmetric but NxN, being N the total number of TSN nodes. 183 | # A header with node's ID numbers is skipped. 184 | def readTopology(self: object, path: list) -> list: 185 | with open(path + '/Inputs/topologyMatrix.txt', 'r') as readM: 186 | next(readM) 187 | topologyMatrix: list = [[float(num) for num in line.split(',')] for line in readM] 188 | return topologyMatrix 189 | # ========================================================================================= 190 | # Reads the delay value in seconds that introduces each node for the frame processing. 191 | # A header with node's ID numbers is skipped. 192 | def readProcDelay(self: object, path: list) -> list: 193 | with open(path + '/Inputs/procDelay.txt', 'r') as readM: 194 | next(readM) 195 | procDelay: list = [[float(num) for num in line.split(',')] for line in readM] 196 | return procDelay[0] 197 | # ========================================================================================= 198 | # Reads the list of 5G logical bridge's port's fluctuations as a percentage of the total 199 | # length of the frames. This value acts as a factor for the guardbands in time assignement 200 | # in the planification of every flow. It is set over the link from a 5G node to others. 201 | def readFluct(self: object, path: list) -> list: 202 | with open(path + '/Inputs/fluctMatrix.txt', 'r') as readM: 203 | next(readM) 204 | fluctuationsVector: list = [[float(num) for num in line.split(',')] for line in readM] 205 | return fluctuationsVector 206 | # ========================================================================================= 207 | # Reads the list of 5G logical bridge's wireless delay introduced by radioaccess from one 208 | # virtual port to other. If flow does not go through wireless channel then this delay is 209 | # set to 0. 210 | def readRadioDelay(self: object, path: list, filename: str) -> list: 211 | with open(path + '/Inputs/' + filename, 'r') as readM: 212 | next(readM) 213 | radioDelayVector: list = [[float(num) for num in line.split(',')] for line in readM] 214 | return radioDelayVector 215 | # ========================================================================================= 216 | # Reads the list of 5G-TSN flows within a constraints vector: source node, destination node, 217 | # max. delay (s), transmission period (s), frame length (Bytes). Matrix may not be symmetric 218 | # but NxN, being N the total number of TSN nodes. Period must be even and 2^x. A header with 219 | # field names is omitted. 220 | def readFlows(self: object, path: list) -> list: 221 | with open(path + '/Inputs/FlowStates/' + flowState +'.txt', 'r') as readM: 222 | next(readM) 223 | flowsVector: list = [[float(num) for num in line.split(',')] for line in readM] 224 | return flowsVector 225 | # ========================================================================================= 226 | # Searches for every possible path/route in a flow from a source node to a destination 227 | # node following the links in the topology matrix. Used method: Depth-First Search 228 | # algorithm (DFS). Runs over every node neighbors, if the destination cannot be 229 | # reached, the path will automatically be discarded with the visited list and pop's 230 | # in the list. 231 | def listPaths(self: object, topologyMatrix: list, flow: list, reduce: int, pathLen: int) -> list: 232 | N: int = len(topologyMatrix[0]) # Number of nodes 233 | src: int = int(flow.src) # Flow's source 234 | dst: int = int(flow.dst) # Flow's destination 235 | checkedList: list = [] # Visited list 236 | paths2check: list = [] # Possible open paths 237 | paths2check.append([src]) # Starts from the source 238 | routes: list = [] # All-paths solution 239 | #-------------------------------------------------------------------------------------- 240 | # Possible flow-paths discovery 241 | while(len(paths2check) > 0): 242 | path: list = paths2check.pop() 243 | if(len(path) <= pathLen): 244 | if(dst in path): 245 | routes.append(path) # Solution path found 246 | else: 247 | if(path not in checkedList): 248 | checkedList.append(path) 249 | for node in range(N): 250 | if(node not in path and topologyMatrix[path[-1]][node] > 0): 251 | path.append(node) 252 | paths2check.append(path[:]) # Adds a new possible path to explore 253 | path.pop() 254 | #-------------------------------------------------------------------------------------- 255 | # In case there is a reduction to a limited number of paths for every flow, shortest 256 | # paths in a sorted list are selected 257 | if(reduce and reduce <= len(routes)): 258 | aux = sorted(routes, key=len) 259 | aux = aux[:reduce] 260 | routes = aux 261 | return routes 262 | # ========================================================================================= 263 | # Sorts the list of flows by its parameters, defining the order of scheduling in all the 264 | # nodes in the topology involved in the different paths. Those parameters are: 265 | # 1st) Transmission period, 2nd) Max. Delay, 3rd) source, 4th) destination, 5th) Frame size 266 | def sortFlows(self: object, flows: list) -> list: 267 | flows=sorted(flows, key = lambda x: (x[3], x[2], x[0], x[1], x[4])) 268 | for i in range(len(flows)): 269 | flows[i].insert(0, i) # Inserts FlowID 270 | return flows 271 | # ========================================================================================= 272 | # Plots ports' phase scheduling on every node depending on the flows' paths. 273 | def plotScheduling(self: object, nodeID: int, neighborID: int) -> None: 274 | x: list = np.linspace(0, self.minPeriod, num = int(1e6)) # X-axis 275 | y: list = [] # Y-axis 276 | port: object 277 | for port_ in self.nodes[nodeID].ports: 278 | if(port_.neighborID == neighborID): 279 | port = port_ 280 | print(" Gaps found in Node #" + str(nodeID) + ", Port #" + str(neighborID) + ": " \ 281 | + str(port.gap)) 282 | print(" Guard band: " + str(port.perc_gb)) 283 | break 284 | if(not port): 285 | print("ERROR: NO PORT FOUND. PLEASE CHECK TOPOLOGY") 286 | return 0 287 | colors: list = ["b", "r", "g", "m", "c", "k", "y"] # List of colors 288 | color_idx: int = 0 289 | #-------------------------------------------------------------------------------------- 290 | # All flows scheduled in this port 291 | fig, axs = plt.subplots(len(self.flows[0].schStart[0])) 292 | fig.suptitle("Phase scheduling in Node #" + str(nodeID) + ", Port #" + str(neighborID)) 293 | count: int = 0 294 | for ph in range(len(self.flows[0].schStart[0])): 295 | for flow in port.schFlowID[ph]: 296 | if(self.nodes[nodeID].id in self.flows[flow].pathNodes): 297 | y = [] # New values for new flow 298 | posNode = self.flows[flow].pathNodes.index(self.nodes[nodeID].id) 299 | posPort = self.flows[flow].pathNodes.index(self.nodes[neighborID].id) 300 | if(posNode > posPort and self.bidirec): # Node order in flow's route 301 | pos = posPort 302 | else: 303 | pos = posNode 304 | for i in x: 305 | if((i >= self.flows[flow].schStart[pos][ph]) and \ 306 | (i <= self.flows[flow].schEnd[pos][ph])): 307 | y.append(1) # Tx time 308 | else: 309 | y.append(0) # No Tx time 310 | axs[count].plot(x, y, colors[color_idx], label = "Flow ID: " + \ 311 | str(self.flows[flow].id)) 312 | axs[count].legend(port.schFlowID[ph]) 313 | if(color_idx == (len(colors)-1)): # Color change 314 | color_idx = 0 315 | else: 316 | color_idx += 1 317 | plt.show(block = False) 318 | x = [round((i + self.minPeriod), network.precision) for i in x] # Adds minimum period 319 | color_idx = 0 320 | count += 1 321 | # ========================================================================================= 322 | 323 | """Class that implements the TSN node/switch object from the given topology. Every node is 324 | identified by an ID. Also, it has its own process time delay to conmute TSN frames and the 325 | information about every port that connects itself with other nodes through that identifier.""" 326 | class NODE: 327 | # ========================================================================================= 328 | # INITIALIZATION 329 | def __init__(self, *args) -> object: 330 | self.id: int = args[0] # Node's ID 331 | self.neighbors: list = args[1] # Linked neighbors and their capacity 332 | self.procDelay: float = args[2] # Node's processing time 333 | self.fluctuations: list = args[3] # Values of fluctuations for ports 334 | self.minPeriod: float = args[4] # Node's minimum period to schedule 335 | self.LCM: float = args[5] # Node's LCM of periods 336 | #-------------------------------------------------------------------------------------- 337 | # Node opens a Tx port with its neighbors by an identifier 338 | self.ports: list = [] 339 | for id in range(len(self.neighbors)): 340 | if(id != self.id and self.neighbors[id] > 0): 341 | port: object = PORT([id, self.neighbors[id], self.fluctuations[id], \ 342 | self.minPeriod, self.LCM]) 343 | self.ports.append(port) # Adding port to node's port list 344 | # ========================================================================================= 345 | 346 | """Class that implements a specific port that connects the proper node with its neighbor, 347 | identified with an ID. Every port is also chracterized by a vector for Time-Aware Shaper 348 | scheduling with a scheduled start (lower bound) and end (upper bound) times.""" 349 | class PORT: 350 | # ========================================================================================= 351 | # INITIALIZATION 352 | def __init__(self, *args) -> object: 353 | self.neighborID: int = args[0][0] # Port to neighbor node with ID i (next-hop) 354 | self.speed: float = args[0][1] # Link speed to neighbor i (Gbps) 355 | self.perc_gb: float = args[0][2] # Percentage of fluctuation GB 356 | self.minPeriod: float = args[0][3] # Minimum period value 357 | self.LCM: float = args[0][4] # LCM (hyperperiod) 358 | self.schLW: list = [] # Scheduling time START/LOWERBOUND 359 | self.schUP: list = [] # Scheduling time END/UPPERBOUND 360 | self.latArrTime: list = [] # Latest arrival to port queue 361 | self.lastGB: list = [] 362 | self.schFlowID: list = [] # Scheduled Flow IDs 363 | self.gap: list = [] # Not scheduled gaps 364 | #-------------------------------------------------------------------------------------- 365 | # Scheduling is divided in phases with a duration of minimum period of all flows 366 | for phase in range(int(self.LCM / self.minPeriod)): 367 | self.schLW.append(0) 368 | self.schUP.append(0) 369 | self.latArrTime.append([]) 370 | self.lastGB.append(0) 371 | self.schFlowID.append([]) 372 | self.gap.append([]) 373 | # ========================================================================================= 374 | # Merges gaps in case both two gaps have consecutive intervals. 375 | def mergeGaps(self: object, ph: int) -> None: 376 | listGaps: list = self.gap[ph] 377 | if(len(listGaps) > 0): 378 | listGaps = list(filter(lambda x: x, listGaps)) # Removes empty values 379 | listGaps = sorted(listGaps, key = lambda x: x[0]) # Sort gaps by time 380 | toRemoveList: list = [] 381 | for gap in listGaps: 382 | if(gap != listGaps[-1]): 383 | for otherGap in listGaps[listGaps.index(gap)+1: ]: 384 | if(gap[1] == otherGap[0]): 385 | listGaps[listGaps.index(gap)] = [gap[0], otherGap[1]] # Unique gap 386 | toRemoveList.append(otherGap) 387 | break 388 | #----------------------------------------------------------------------------------- 389 | # Deletes all gaps that have been merged into another 390 | for remGap in range(len(toRemoveList)): # Removes those which have been used to merge 391 | try: 392 | listGaps.remove(toRemoveList[remGap]) 393 | except ValueError: 394 | pass 395 | self.gap[ph] = listGaps[ : ] 396 | # ========================================================================================= 397 | 398 | """Class that implements a flow characterized by its constraints (ID, source & destination 399 | nodes, max. delay, transmission period and frame length). It also contains the scheduling 400 | times on every node.""" 401 | class FLOW: 402 | # ========================================================================================= 403 | # INITIALIZATION 404 | def __init__(self, *args) -> object: 405 | self.id: int = int(args[0][0]) # Flow's ID 406 | self.src: int = int(args[0][1]) # Flow's source 407 | self.dst: int = int(args[0][2]) # Flow's destination 408 | self.maxDelay: float = args[0][3] # Flow's upper bound time delay (s) 409 | self.T_tx: float = args[0][4] # Flow's transmission period (s) 410 | self.length: int = int(args[0][5] * 8) # Flow's frame's length (bits) 411 | self.talkerSpeed: float = args[0][6] # Flow's talker speed 412 | self.listenerSpeed: float = args[0][7] # Flow's listener speed 413 | self.pathNodes: list = [] # Flow's scheduling nodes in a path [pos] 414 | self.schStart: list = [] # Flow's start time in a node [pos] 415 | self.schEnd: list = [] # Flow's start time in a node [pos] 416 | # ========================================================================================= 417 | # Updates de route of a flow after finding all possible paths within a topology and 418 | # selected one of them in a chromosome. It also resets scheduling times. 419 | def updateRoute(self: object, route: list) -> object: 420 | self.pathNodes = route 421 | self.schStart = [] 422 | self.schEnd = [] 423 | # ========================================================================================= 424 | 425 | """-----------------------------------------------------------------------------------------""" 426 | # Calculates the Greatest Common Divisor and returns the result. It is used to subsequently 427 | # compute the topology's LCM value. 428 | def GCD(a: int, b: int) -> int: 429 | temp: int = 0 430 | while(b != 0): 431 | temp = b 432 | b = a % b 433 | a = temp 434 | return a 435 | """-----------------------------------------------------------------------------------------""" 436 | # Initializes the very first chromosome with a subset of random paths, one per each flow (gene). 437 | def initializeChromosome(possiblePathFlows: list) -> list: 438 | chromosome: list = [] 439 | for i in range(len(possiblePathFlows)): 440 | chromosome.append(random.randrange(len(possiblePathFlows[i]))) # Random index for gene 441 | return chromosome 442 | """-----------------------------------------------------------------------------------------""" 443 | # Performs the scheduling for an unique flow over all nodes in the path selected. Two main 444 | # cases can be distinguished: 445 | # - Time of post-processing > Time of upper bound (new gap) 446 | # - Time of post-processing < Time of upper bound 447 | # · Time of Tx end < Time of lower bound (opt, new gap if no compression) 448 | # · Time of Tx end > Time of lower bound 449 | @ with_goto 450 | def scheduling(path: list, flowID: int) -> bool: 451 | time: float = 0.0 # Will accquire the value of the hyperperiod in case flow times goes out 452 | initialized: bool = 0 # 1 if flow's path's first node scheduled, 0 if not 453 | t0: list = [] # Arrival time to port's queue (dim = number of phases) 454 | for i in range(len(path)-1): # Nodes (last node is not scheduled, only sent to listener) 455 | for port in network.nodes[path[i]].ports: 456 | if(port.neighborID == path[i+1]): # Ports 457 | #------------------------------------------------------------------------------ 458 | # Arrival time to node + SW processing delay 459 | if(not initialized): 460 | # CASE: FLOW'S FIRST NODE SCHEDULING 461 | for ph in range(int(network.LCM / network.minPeriod)): 462 | t0.append(0) # Any time restriction, as many 0's as phases 463 | else: 464 | # CASE: NOT FLOW'S FIRST NODE SCHEDULING 465 | for node_port in network.nodes[path[i]].ports: 466 | if(node_port.neighborID == network.nodes[path[i-1]].id): 467 | src_port: int = network.nodes[path[i]].ports.index(node_port) 468 | elif(node_port.neighborID == network.nodes[path[i+1]].id): 469 | dst_port: int = network.nodes[path[i]].ports.index(node_port) 470 | for ph in range(len(t0)): 471 | if(network.flows[flowID].schEnd[i-1][ph] != 0): 472 | t0[ph] = (network.flows[flowID].schEnd[i-1][ph] + \ 473 | network.nodes[path[i]].procDelay + \ 474 | network.radioDelay[path[i]][src_port][dst_port]) # Prev. node end time + Bridge delay 475 | t0[ph] = np.round(t0[ph], network.precision) 476 | #------------------------------------------------------------------------------ 477 | # Adaptation of global hyperperiod to phase time (first schedulable) 478 | idx: int = next((i for i, x in enumerate(t0) if x), None) # First sched phase 479 | if(idx is None): 480 | idx = 0 481 | phase: int = int(t0[idx] / network.minPeriod) 482 | for ph in range(len(t0)): 483 | t0[ph] = round((t0[ph] % network.minPeriod), network.precision) 484 | #------------------------------------------------------------------------------ 485 | # Current port's Guard Band 486 | guardBand: float = port.perc_gb * network.flows[flowID].length / port.speed 487 | #------------------------------------------------------------------------------ 488 | # Previous node's port's Guard Band (equal to current's in case same speed) 489 | guardBand_p: float 490 | if(initialized): 491 | guardBand_p = prev_port.perc_gb * network.flows[flowID].length / prev_port.speed 492 | #------------------------------------------------------------------------------ 493 | # No flow's phases scheduled yet in this port 494 | j: int = 0 # Number of phase after first scheduling 495 | scheduled: int = 0 # +1 if scheduled in phase, 0 if not 496 | phChange: bool = 1 # Possibility to continue next hyper 497 | phVectorStart: list = [] # Flow's phases' start time 498 | phVectorEnd: list = [] # Flow's phases' end time 499 | for ph in range(int(network.LCM / network.minPeriod)): 500 | phVectorStart.append(0) # As many 0's as phases 501 | phVectorEnd.append(0) 502 | #------------------------------------------------------------------------------ 503 | t1: float # Tx start time 504 | t2: float # Tx end time 505 | #------------------------------------------------------------------------------ 506 | # ASSIGNS TIME SCHEDULE FOR EVERY PHASE IN PORT 507 | while((phase+j) < (int(network.LCM / network.minPeriod))): 508 | if(j * (network.minPeriod / network.order) % \ 509 | (network.flows[flowID].T_tx / network.order) == 0 and \ 510 | scheduled < (network.LCM / network.flows[flowID].T_tx)): # T 511 | t0_gb: list 512 | label .begin 513 | if(initialized): 514 | # Previous hop's port's GB is added 515 | t0_gb = [round((ph + guardBand_p), network.precision) for ph in t0] 516 | else: 517 | # No GB is added (only in fitness delay eval.) 518 | t0_gb = t0[ : ] 519 | if(port.schUP[phase+j] < t0_gb[phase+j]): 520 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 521 | # CASE 1: TIME START > UPPERBOUND 522 | t1 = t0_gb[phase+j] # No queue time, just GB waiting 523 | t2 = t1 + (network.flows[flowID].length / port.speed) # Tx time 524 | t1 = round(t1, network.precision) 525 | t2 = round(t2, network.precision) 526 | if((initialized and (network.minPeriod - (t2 + guardBand)) >= 0) or \ 527 | (not initialized and (network.minPeriod - (t2 + guardBand)) >= \ 528 | margin * network.minPeriod)): 529 | aux: bool = 0 # No gaps yet 530 | if(not port.schFlowID[phase+j] and leftSide): 531 | # Updates LW only in case it's the first flow for this phase 532 | port.schLW[phase+j] = t1 # Port LW updated 533 | # --- BIDIRECTIONAL --- 534 | # Inside 535 | if(network.bidirec): 536 | for next_port in network.nodes[port.neighborID].ports: 537 | if(next_port.neighborID == path[i]): 538 | next_port.schLW[phase+j] = t1 # Neighbor LW update 539 | break 540 | # Outside 541 | else: 542 | # Gap (saved counting last GB) 543 | port.gap[phase+j].append([port.schUP[phase+j], t1]) 544 | if(guardBand > 0): 545 | port.gap[phase+j].append([t2, round((t2 + guardBand), \ 546 | network.precision)]) 547 | port.mergeGaps(phase+j) 548 | aux = 1 # New gap from last UP 549 | if(network.bidirec): 550 | for next_port in network.nodes[port.neighborID].ports: 551 | if(next_port.neighborID == path[i]): 552 | if(aux): 553 | # Gap saved (saved counting last GB) 554 | next_port.gap[phase+j].append([port.schUP[phase+j], t1]) 555 | if(guardBand > 0): 556 | next_port.gap[phase+j].append([t2, round((t2 + guardBand), \ 557 | network.precision)]) 558 | next_port.mergeGaps(phase+j) 559 | next_port.schUP[phase+j] = round((t2 + guardBand), \ 560 | network.precision) # Neighbor's port's UP updated 561 | next_port.lastGB[phase+j] = guardBand 562 | next_port.schFlowID[phase+j].append(flowID) # FLOW ID 563 | next_port.latArrTime[phase+j] = t0_gb[phase+j] # New last arrival time 564 | break 565 | #---------------------- 566 | port.schUP[phase+j] = round((t2 + guardBand), network.precision) 567 | port.lastGB[phase+j] = guardBand 568 | port.schFlowID[phase+j].append(flowID) # FLOW ID 569 | scheduled += 1 # Port's phase is scheduled 570 | port.latArrTime[phase+j] = t0[phase+j] # New last arrival time 571 | phVectorStart[phase+j] = round(((phase+j) * network.minPeriod + t1 + \ 572 | time), network.precision) 573 | phVectorEnd[phase+j] = round(((phase+j) * network.minPeriod + t2 + \ 574 | time), network.precision) 575 | j += 1 # Phase is scheduled 576 | else: 577 | # IF NOT POSSIBLE, DO IT NEXT PHASE (phase+=1, keep j) 578 | if(not scheduled and not initialized and 579 | network.flows[flowID].T_tx != network.minPeriod): 580 | # This case will not happen, as it would already be initialized 581 | phase += 1 # New phase but not schedule count 582 | if((phase+j) != (int(network.LCM / network.minPeriod))): 583 | t0[phase+j] = 0 # Starts with 0 in new phase 584 | else: 585 | # Cannot accomplish periodicity after first phase scheduled 586 | if(debug): 587 | print("FLOW #" + str(flowID) + " COULD NOT BE SCHEDULED IN NODE #" + \ 588 | str(network.nodes[path[i]].id)) 589 | return 0 590 | else: 591 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 592 | # CASE 2: TIME START < UPPERBOUND -- Only lowerbound is updated 593 | tpp: float = t0_gb[phase+j] + (network.flows[flowID].length / \ 594 | port.speed) + guardBand # Tx time 595 | if(tpp <= port.schLW[phase+j] and leftSide and initialized): 596 | # SUBCASE: CAN BE PLACED BEFORE ALL SEQUENCE 597 | if(compression): # With left compression 598 | t1 = port.schLW[phase+j] - guardBand - \ 599 | (network.flows[flowID].length / port.speed) 600 | t2 = port.schLW[phase+j] - guardBand 601 | else: 602 | t1 = t0_gb[phase+j] # Without left compression 603 | t2 = tpp - guardBand 604 | t1 = round(t1, network.precision) 605 | t2 = round(t2, network.precision) 606 | if(not compression): 607 | port.gap[phase+j].append([t2, port.schLW[phase+j]]) # Gap saved 608 | # --- BIDIRECTIONAL --- 609 | if(network.bidirec): 610 | for next_port in network.nodes[port.neighborID].ports: 611 | if(next_port.neighborID == path[i]): 612 | if(not compression): 613 | next_port.gap[phase+j].append([t2, \ 614 | next_port.schLW[phase+j]]) # Gap saved 615 | next_port.schLW[phase+j] = t1 # Neighbor LW update 616 | next_port.schFlowID[phase+j].append(flowID) 617 | break 618 | #---------------------- 619 | port.schLW[phase+j] = t1 # Port's LW updated 620 | port.schFlowID[phase+j].append(flowID) # FLOW ID 621 | scheduled += 1 # Port's phase is scheduled 622 | phVectorStart[phase+j] = round(((phase+j) * network.minPeriod + t1 + \ 623 | time), network.precision) 624 | phVectorEnd[phase+j] = round(((phase+j) * network.minPeriod + t2 + \ 625 | time), network.precision) 626 | j += 1 # Phase is scheduled 627 | else: 628 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 629 | # SUBCASE 1: CANNOT BE PLACED BEFORE ALL SEQUENCE -- Only upperbound is updated 630 | # Check first if arrival time to node is possible 631 | if(t0_gb[phase+j] < port.schUP[phase+j] and initialized and not scheduled): # Check path 632 | dif: float = round((port.schUP[phase+j] - t0_gb[phase+j]), network.precision) 633 | dif_alt: float = round((port.latArrTime[phase+j] - t0[phase+j]), network.precision) 634 | if(port.latArrTime[phase+j] and dif_alt > dif): # To avoid FIFO non-compliance 635 | dif = dif_alt 636 | isPossible: bool = slowDown(flowID, path, dif, i, guardBand) 637 | if(not isPossible): 638 | if(debug): 639 | print("FLOW #" + str(flowID) + " COULD NOT BE SCHEDULED IN NODE #" + \ 640 | str(network.nodes[path[i]].id) + " DUE TO SHORT GAP INTERVAL") 641 | return 0 642 | # Update t0 from previous node 643 | for ph in range(len(t0)): 644 | if(network.flows[flowID].schEnd[i-1][ph] != 0): 645 | # Prev. node end time + Bridge delay 646 | t0[ph] = (network.flows[flowID].schEnd[i-1][ph] + \ 647 | network.nodes[path[i]].procDelay + \ 648 | network.radioDelay[path[i]][src_port][dst_port]) 649 | t0[ph] = round((t0[ph] % network.minPeriod), network.precision) 650 | goto .begin # In case it is slowed down so now t1=t0_gb > schUP 651 | #--------------------------------------------------------------- 652 | t1 = port.schUP[phase+j] 653 | t2 = t1 + (network.flows[flowID].length / port.speed) 654 | t1 = round(t1, network.precision) 655 | t2 = round(t2, network.precision) 656 | if((initialized and (network.minPeriod - (t2 + guardBand)) >= 0) or \ 657 | (not initialized and (network.minPeriod - (t2 + guardBand)) >= \ 658 | margin * network.minPeriod)): 659 | # --- BIDIRECTIONAL --- 660 | if(network.bidirec): 661 | for next_port in network.nodes[port.neighborID].ports: 662 | if(next_port.neighborID == path[i]): 663 | if(guardBand > 0): 664 | next_port.gap[phase+j].append([t2, round((t2 + guardBand), \ 665 | network.precision)]) 666 | next_port.schUP[phase+j] = round((t2 + guardBand), \ 667 | network.precision) # Neighbor's port's UP updated 668 | next_port.lastGB[phase+j] = guardBand 669 | next_port.schFlowID[phase+j].append(flowID) # FLOW ID 670 | next_port.latArrTime[phase+j] = t0[phase+j] # New last arrival time 671 | break 672 | #---------------------- 673 | if(guardBand > 0): 674 | port.gap[phase+j].append([t2, round((t2 + guardBand), network.precision)]) 675 | port.schUP[phase+j] = round((t2 + guardBand), network.precision) # Port's UP updated 676 | port.lastGB[phase+j] = guardBand 677 | port.schFlowID[phase+j].append(flowID) # FLOW ID 678 | scheduled += 1 # Port's phase is scheduled 679 | port.latArrTime[phase+j] = t0_gb[phase+j] # New last arrival time 680 | phVectorStart[phase+j] = round(((phase+j) * network.minPeriod + t1 + \ 681 | time), network.precision) 682 | phVectorEnd[phase+j] = round(((phase+j) * network.minPeriod + t2 + \ 683 | time), network.precision) 684 | j += 1 # Phase is scheduled 685 | else: 686 | # IF NOT POSSIBLE, DO IT NEXT PHASE (phase+=1, keep j) 687 | if(not scheduled and not initialized and 688 | network.flows[flowID].T_tx != network.minPeriod): 689 | phase += 1 # New phase but not schedule count 690 | if((phase+j) != (int(network.LCM / network.minPeriod))): 691 | t0[phase+j] = 0 # Starts with 0 in new phase 692 | else: 693 | # Cannot accomplish periodicity after first phase scheduled 694 | if(debug): 695 | print("FLOW #" + str(flowID) + " COULD NOT BE SCHEDULED IN NODE #" + \ 696 | str(network.nodes[path[i]].id)) 697 | return 0 698 | else: 699 | j += 1 # Phase is not scheduled 700 | #-------------------------------------------------------------------------- 701 | # Goes back with the start (with t0=0, but more delay) 702 | if((phase+j) == (int(network.LCM / network.minPeriod)) \ 703 | and j < int(network.LCM / network.minPeriod) and \ 704 | scheduled < int(network.LCM / network.flows[flowID].T_tx)): 705 | if(phChange): 706 | # Goes back to 1st phase [0], only once 707 | phase = -j # To make phase+j=0 708 | time = round((time + network.LCM), network.precision) # Sums hyperperiod 709 | phChange = 0 # No come back again 710 | else: 711 | if(debug): 712 | print("FLOW #" + str(flowID) + " COULD NOT BE SCHEDULED IN NODE #" + \ 713 | str(network.nodes[path[i]].id)) 714 | return 0 715 | #------------------------------------------------------------------------------ 716 | # FLOW SCHEDULING TIMES 717 | if(scheduled == int(network.LCM / network.flows[flowID].T_tx)): 718 | # Only if all periods/phases were scheduled 719 | network.flows[flowID].schStart.append(phVectorStart) # START 720 | network.flows[flowID].schEnd.append(phVectorEnd) # END 721 | if(debug and not conf_sol): 722 | print("FLOW #" + str(flowID) + " WAS SUCCESFULLY SCHEDULED IN NODE #" + \ 723 | str(network.nodes[path[i]].id)) 724 | else: 725 | if(debug and not conf_sol): 726 | print("FLOW #" + str(flowID) + " COULD NOT BE SCHEDULED IN NODE #" + \ 727 | str(network.nodes[path[i]].id) + "(t1=" + str(t1) + ", t2=" + str(t2) + ")") 728 | return 0 729 | break 730 | initialized = 1 # First scheduled 731 | prev_port = copy.copy(port) # Port saved 732 | return 1 733 | """-----------------------------------------------------------------------------------------""" 734 | # Applies a delay to the same flow in the previous node if it is possible to do so. This is 735 | # performed due to the TSN queing system's limits, as it uses FIFO queues, so frames must 736 | # arrive to port's queue after the one awaiting to be sent. Delayed dif value, which is the 737 | # difference between new flow's arrival time and previous flow's arrival time. 738 | def slowDown(flowID: int, path: list, dif: float, nodeStart: int, guardBand: float) -> bool: 739 | rePath: list = path[ :nodeStart+1] # All previous nodes 740 | modifNodes: list = [] # List of modified nodes 741 | modifNodes.append(network.nodes[rePath[nodeStart]].id) # Current node 742 | done: int = 0 # Changes to 1 if at least one node's port's scheduling delay was performed 743 | possibleSD: bool = 0 # 1 if slow down was possible, 0 if not 744 | #------------------------------------------------------------------------------------------ 745 | for k in range(len(rePath)-2, -1, -1): # All previous nodes, current one as last port 746 | for rePort in network.nodes[rePath[k]].ports: 747 | if(rePort.neighborID == rePath[k+1]): 748 | for ph in range(len(rePort.schLW)): 749 | rePort.mergeGaps(ph) 750 | if(flowID in rePort.schFlowID[ph]): # Periodicity 751 | possibleSD = 0 752 | lwFlow: float = round((network.flows[flowID].schStart[k][ph] % \ 753 | network.minPeriod), network.precision) 754 | upFlow: float = round((network.flows[flowID].schEnd[k][ph] % \ 755 | network.minPeriod), network.precision) 756 | lwPort: float = round(rePort.schLW[ph], network.precision) 757 | upPort: float = round(rePort.schUP[ph], network.precision) 758 | if(round((upFlow + rePort.lastGB[ph]), network.precision) == upPort): # At the end 759 | if(network.minPeriod - round((upPort + dif), network.precision) >= 0): 760 | # Port 761 | if(rePort.perc_gb > 0): 762 | rePort.gap[ph][-1] = [round((rePort.gap[ph][-1][0] + dif), network.precision), \ 763 | round((rePort.gap[ph][-1][1] + dif), network.precision)] 764 | rePort.gap[ph].append([lwFlow, round((lwFlow + dif), network.precision)]) # New gap 765 | rePort.schUP[ph] = round((rePort.schUP[ph] + dif), network.precision) 766 | rePort.mergeGaps(ph) 767 | # --- BIDIRECTIONAL --- 768 | if(network.bidirec): 769 | for next_rePort in network.nodes[rePort.neighborID].ports: 770 | if(next_rePort.neighborID == rePath[k]): 771 | if(next_rePort.perc_gb > 0): 772 | next_rePort.gap[ph][-1] = [round((next_rePort.gap[ph][-1][0] + dif), network.precision), \ 773 | round((next_rePort.gap[ph][-1][1] + dif), network.precision)] 774 | next_rePort.gap[ph].append([lwFlow, round((lwFlow + dif), network.precision)]) # New gap 775 | next_rePort.schUP[ph] = round((next_rePort.schUP[ph] + \ 776 | dif), network.precision) 777 | next_rePort.mergeGaps(ph) 778 | break 779 | #---------------------- 780 | # Flow 781 | network.flows[flowID].schStart[k][ph] = round((network.flows[flowID].schStart[k][ph] + \ 782 | dif), network.precision) 783 | network.flows[flowID].schEnd[k][ph] = round((network.flows[flowID].schEnd[k][ph] + \ 784 | dif), network.precision) 785 | possibleSD = 1 # Delayed 786 | else: 787 | if(debug): 788 | print("LIMIT NOT ENOUGH IN NODE #" + str(network.nodes[rePath[k]].id)) 789 | return 0 790 | else: 791 | if(lwFlow == lwPort): # At the beginning (only used if leftSide=1) 792 | for n in range(len(rePort.gap[ph])): 793 | if(upFlow == rePort.gap[ph][n][0]): 794 | if(round((rePort.gap[ph][n][1] - rePort.gap[ph][n][0]), \ 795 | network.precision) >= (dif + guardBand)): 796 | # Port 797 | rePort.gap[ph][n] = [(upFlow + dif), rePort.gap[ph][n][1]] # Gap reduced 798 | rePort.schLW[ph] += dif 799 | # --- BIDIRECTIONAL --- 800 | if(network.bidirec): 801 | for next_rePort in network.nodes[rePort.neighborID].ports: 802 | if(next_rePort.neighborID == rePath[k]): 803 | next_rePort.gap[ph][n] = [(upFlow + dif), \ 804 | next_rePort.gap[ph][n][1]] 805 | next_rePort.schLW[ph] += dif 806 | break 807 | #---------------------- 808 | # Flow 809 | network.flows[flowID].schStart[k][ph] += dif 810 | network.flows[flowID].schEnd[k][ph] += dif 811 | possibleSD = 1 # Delayed 812 | break 813 | else: 814 | if(debug): 815 | print("GAP NOT ENOUGH") 816 | else: 817 | if(debug): 818 | print("GAP NOT POSSIBLE") 819 | else: 820 | # This case is not possible 821 | return 0 822 | break 823 | #------------------------------------------------------------------------------------------ 824 | # Inserts node as modified 825 | if(possibleSD): 826 | modifNodes.insert(0, network.nodes[rePath[k]].id) # Modified nodes 827 | done += 1 828 | else: 829 | if(done > 0): # At least one previous node has been modified 830 | break 831 | else: 832 | if(debug): 833 | print("NO GAP TO DELAY") 834 | return 0 # No node has been modified, flow cannot be scheduled 835 | #------------------------------------------------------------------------------------------ 836 | # Setting all node's last arrival time 837 | init: bool = 0 # Last (first) node was reached, very first t0 838 | if(done): 839 | if(done == len(rePath)-1): # Very first scheduled node 840 | init = 1 841 | for v in range(len(modifNodes)-1): 842 | for chgPort in network.nodes[modifNodes[v]].ports: 843 | if(chgPort.neighborID == modifNodes[v+1]): 844 | for phas in range(len(chgPort.latArrTime)): 845 | if(init): 846 | # Very first node start time 847 | chgPort.latArrTime[phas] = round((network.flows[flowID].schStart[v][phas] % \ 848 | network.minPeriod), network.precision) 849 | else: 850 | # Last node's end time 851 | chgPort.latArrTime[phas] = round((network.flows[flowID].schEnd[v-1][phas] % \ 852 | network.minPeriod), network.precision) 853 | init = 0 854 | return 1 855 | """-----------------------------------------------------------------------------------------""" 856 | # Fitness function evaluates the result of applying a chromosome solution to the whole TSN 857 | # network, as it schedules flows with their own path selected by the genetic algorithm. It 858 | # uses the chromosome solution and its index in the population. The chromosome solution is 859 | # a list of values that contains, for each flow, the index of the path in a list of possible 860 | # paths found for it. It returns the fitness value of a given chromosome. 861 | def fitness_func(sol_chr: list, chr_pop_idx: int) -> float: 862 | #------------------------------------------------------------------------------------------ 863 | # Extraction of path chromosomes given index chromosomes 864 | chr: list = [] 865 | for gen in range(len(sol_chr)): 866 | chr.append(network.pathFlows[gen][sol_chr[gen]]) # Extracts the path for flows 867 | #------------------------------------------------------------------------------------------ 868 | # Network initialization (only nodes and ports are reset) 869 | network.reset() 870 | #------------------------------------------------------------------------------------------ 871 | # Flows' scheduling 872 | delay: list = [] 873 | delay_mean: float = 0 874 | delay_eval: float = 0 875 | delay_norm: float 876 | delay_flow: float 877 | if(debug): 878 | print("\n-- FLOWS' TIMES --") 879 | for numFlow in range(len(chr)): 880 | path: list = chr[numFlow] 881 | network.flows[numFlow].updateRoute(path) # Flow reset 882 | if(debug): 883 | print("\nFlow: " + str(network.flows[numFlow].id) + ", Path: " + str(path) + \ 884 | " (Max. Delay = " + str(round((network.flows[numFlow].maxDelay / network.order), 2)) + \ 885 | " ms, Period = " + str(round((network.flows[numFlow].T_tx / network.order), 2)) + \ 886 | " ms, Size = " + str(int(network.flows[numFlow].length / 8)) + " Bytes)") 887 | possible: bool = scheduling(path, numFlow) # Flow scheduling on its corresponding path 888 | if(possible): 889 | if(debug): 890 | print(" Start time for flow #" + str(numFlow) + " per node: " + \ 891 | str(network.flows[numFlow].schStart)) 892 | print(" End time for flow #" + str(numFlow) + " per node: " + \ 893 | str(network.flows[numFlow].schEnd)) 894 | #------------------------------------------------------------------------------------------ 895 | # --- DELAY EVALUATION --- 896 | # Highest value of time in last node 897 | delay1: float = network.flows[numFlow].schEnd[-1][np.max(np.nonzero(network.flows[numFlow].schEnd[-1]))] 898 | # Highest value of time in first node 899 | delay2: float 900 | try: 901 | delay2 = network.flows[numFlow].schStart[0][np.max(np.nonzero((network.flows[numFlow].schStart[0])))] 902 | except ValueError: 903 | delay2 = 0 904 | pass 905 | # Total delay is the difference of the first and the last scheduled times in the TSN network 906 | # plus the SW's processing delay in the first and last nodes plus the talker and listener 907 | # throughput. Also, first node's guard band must be considered. Flow's max. delay normalization 908 | node_init: int = network.flows[numFlow].pathNodes[0] 909 | for p in network.nodes[node_init].ports: 910 | if(p.neighborID == network.flows[numFlow].pathNodes[1]): 911 | port_init: object = p 912 | delay_flow = (abs(delay1 - delay2) + \ 913 | (network.nodes[network.flows[numFlow].pathNodes[0]].procDelay) + \ 914 | (network.nodes[network.flows[numFlow].pathNodes[-1]].procDelay) + \ 915 | (network.flows[numFlow].length / network.flows[numFlow].talkerSpeed) * \ 916 | (1 + port_init.perc_gb) + \ 917 | (network.flows[numFlow].length / network.flows[numFlow].listenerSpeed)) 918 | if(debug): 919 | print(" End-to-end delay: " + str(round(delay_flow, network.precision))) 920 | if(delay_flow <= network.flows[numFlow].maxDelay): 921 | delay_mean += delay_flow 922 | delay_norm = (delay_flow / network.flows[numFlow].maxDelay) 923 | delay.append(delay_norm) 924 | delay_eval += (delay_flow / network.flows[numFlow].length / len(network.flows[numFlow].pathNodes)) 925 | else: 926 | if(debug): 927 | print("FLOW #" + str(numFlow) + " EXCEEDED ITS MAXIMUM DELAY: " + str(chr)) 928 | return 0 929 | else: 930 | if(debug): 931 | print("NO POSSIBLE SCHEDULING IN THIS CHROMOSOME") 932 | return 0 # fitness=0 too low 933 | delay_norm: float = (sum(delay) / network.M) 934 | delay_mean = (delay_mean / network.M) 935 | delay_eval = (delay_eval / network.M) 936 | #------------------------------------------------------------------------------------------ 937 | # --- GAP EVALUATION --- 938 | count: float = 0.0 # Gap counter 939 | gap_norm: float = 0.0 # General gap counter 940 | cnt_ph: int = 0 # Phase counter 941 | for node_ in network.nodes: 942 | for port_ in node_.ports: 943 | for ph in range(len(port_.gap)): 944 | if(len(port_.gap[ph]) > 0): # Gaps observed 945 | cnt_ph += 1 946 | port_.mergeGaps(ph) # Sort 947 | gapVal: float 948 | gapped: int = 0 949 | for gap in port_.gap[ph]: 950 | # Delete last GB 951 | if(gap[1] == port_.schUP[ph]): 952 | del port_.gap[ph][-1] 953 | if(len(port_.gap[ph]) == 0 and not gapped): 954 | cnt_ph -= 1 955 | break 956 | else: 957 | # Gap fitting max. size Ethernet frame 958 | if(gap[0] != 0.0): 959 | gapVal = (gap[1] - gap[0]) 960 | if((gapVal / (network.maxLenFrame / port_.speed)) > 1): 961 | count += (network.maxLenFrame / port_.speed) # GB 962 | else: 963 | count += gapVal # The whole gap 964 | gapped = 1 965 | if(not leftSide): 966 | # Space left + first gap next ph** 967 | gapVal = (network.minPeriod - (port_.schUP[ph] - port_.lastGB[ph])) 968 | if(len(port_.gap[ph]) > 0): 969 | if(port_.gap[ph][0][0] == 0.0): 970 | gapVal += (port_.gap[ph][0][1] - port_.gap[ph][0][0]) # First gap 971 | if((gapVal / (network.maxLenFrame / port_.speed)) > 1): 972 | count += (network.maxLenFrame / port_.speed) # GB 973 | else: 974 | count += gapVal # The whole gap 975 | else: 976 | # Space left + first space next ph (not a gap) 977 | gapVal = port_.schLW[ph] + (network.minPeriod - \ 978 | (port_.schUP[ph] - port_.lastGB[ph])) 979 | if((gapVal / (network.maxLenFrame / port_.speed)) > 1): 980 | count += (network.maxLenFrame / port_.speed) # GB 981 | else: 982 | count += gapVal # The whole gap 983 | if(network.bidirec): 984 | count = 0.5 * count # Counted twice 985 | gap_norm = (count / ((cnt_ph) * network.minPeriod)) 986 | gap_norm = (gap_norm) # Correction 987 | usage: float = ((1 - gap_norm) * 100) 988 | #------------------------------------------------------------------------------------------ 989 | if(debug): 990 | print("\n || Average Delay: " + str(delay_mean) + \ 991 | " s || Network Link Usage: " + str(usage) + \ 992 | " % || Norma-sized delay: " + str(delay_eval * 512 * 3)) # 512 aprox. average size 993 | #------------------------------------------------------------------------------------------ 994 | # --- FITNESS FUNCTION EVALUATION --- 995 | fitness: float 996 | #print("DELAY: " + str(WEIGHT_DELAY * delay_norm)) 997 | #print("GAPS: " + str(WEIGHT_GAP * gap_norm * correction)) 998 | fitness = ((WEIGHT_DELAY * delay_norm + WEIGHT_GAP * gap_norm * correction)) 999 | fitness = (1.0 / (fitness + 1e-10)) # Fitness maximized by PyGAD 1000 | return fitness 1001 | #----------------------------------------------------------------------------------------- 1002 | """-----------------------------------------------------------------------------------------""" 1003 | # Prints every evolutionary algorithm's generation's best solution. 1004 | def on_generation(ga): 1005 | print("Generation", ga.generations_completed) 1006 | print(ga.population) 1007 | """-----------------------------------------------------------------------------------------""" 1008 | 1009 | 1010 | # ******************************************* MAIN ******************************************** 1011 | #---------------------------------------------------------------------------------------------- 1012 | # Flow's constraints can make the solution be quite different to shortest path (all 0's): 1013 | # - Shorter max. delay (e.g. 0.5ms), overall in higher genes 1014 | # - Lower Tx period (e.g. 1ms), not fitting many more flows in scheduling 1015 | # - Larger frame length (e.g. 512 Bytes) 1016 | # - More complex topology with less links 1017 | # - Higher processing delay in switches (e.g. 100us) 1018 | # - Lower link speed (e.g. 100Mbps) 1019 | # - Half-duplex instead of full-duplex 1020 | 1021 | # Also, execution time may increase due to: 1022 | # - Number of flows 1023 | # - Number of paths/flow 1024 | # - Number of generations 1025 | # - Number of initial population 1026 | # - Not using boost (all 0's in initial population) 1027 | #---------------------------------------------------------------------------------------------- 1028 | # Debugging case 1029 | #flowState: str = "flowsVector_80" 1030 | #correction: int = 1 1031 | #WEIGHT_DELAY: float = 0.5 1032 | #WEIGHT_GAP: float = 0.5 1033 | #parent_selection_type: str = "rank" 1034 | #crossover_type: str = "two_points" 1035 | #mutation_probability: float = 0.05 1036 | #indexe: int = 1 1037 | #---------------------------------------------------------------------------------------------- 1038 | # Execution path 1039 | path: str = os.path.dirname(__file__) # Files' directory 1040 | flowState: str = str(sys.argv[1]) # Name of input flows file to be executed 1041 | #---------------------------------------------------------------------------------------------- 1042 | if(len(sys.argv) >= 3): 1043 | correction : float = float(sys.argv[2]) # Correction factor between delay and gaps 1044 | else: 1045 | correction = 1 1046 | #---------------------------------------------------------------------------------------------- 1047 | # Network parameters 1048 | mode5G: bool = 1 # 1 if 5G+TSN (5G files are read), 0 if TSN only 1049 | reduceSpace: int = 6 # [Search space]: number of possible paths for every flow (default: 4) 1050 | pathLen: int = 6 # [Search space]: number of nodes per path for every flow (default: 4) 1051 | bidirec: bool = 0 # 1 if links are half-duplex, 0 if full-duplex (default: 0) 1052 | maxLenFrame: int = 1500 + 42 # Ethernet max. frame size in Bytes (default: 1500) 1053 | network = TSN_NETWORK(path = path, reduceSpace = reduceSpace, \ 1054 | pathLen = pathLen, bidirec = bidirec, \ 1055 | maxLenFrame = maxLenFrame) # Creation of topology 1056 | #---------------------------------------------------------------------------------------------- 1057 | # Scheduling parameters 1058 | leftSide: bool = 0 # Use left side of scheduling (first schedule compression) 1059 | compression: bool = 0 # Compression in scheduling (always compression) [only if leftSide=1] 1060 | margin: float = 0.1 # Margin to complete phase scheduling (10 % of minPeriod) 1061 | #---------------------------------------------------------------------------------------------- 1062 | # Checking 1063 | plot_top: bool = 1 # Plots the TSN topology (1 ON, 0 OFF) 1064 | plot_port: bool = 1 # Plots ports timing (1 ON, 0 OFF) 1065 | debug: bool = 0 # debug mode (1 ON, 0 OFF) 1066 | conf_sol: bool = 1 # Shows the configuration result (1 ON, 0 OFF) 1067 | print_paths: bool = 1 # Shows possible paths for each flow (1 ON, 0 OFF) 1068 | #---------------------------------------------------------------------------------------------- 1069 | # Weights 1070 | WEIGHT_DELAY: float = float(sys.argv[6]) # Penalising weight for delay 1071 | WEIGHT_GAP: float = float(sys.argv[7]) # Penalising weight for gaps 1072 | #---------------------------------------------------------------------------------------------- 1073 | # Genetic algorithm parameters: initial population and chromosomes 1074 | boost: bool = 0 # Shortest path solution in initial population (used for test) 1075 | n_solutions: int = 100 # 100 [Search space]: Number o parents, at least 2 1076 | num_generations: int = 15000 # 15000 [Search space]: Number of iterations 1077 | stop_criteria: str = "saturate_5000" # Stops if fitness doesn't change for n iterations 1078 | initial_population: list = [] 1079 | if(boost): 1080 | n_solutions -= 1 1081 | initial_population.append(np.zeros(len(network.flows, ), dtype = int)) # Boost 1082 | for x in range(n_solutions): # Initial population of 100 1083 | initial_population.append(initializeChromosome(network.pathFlows)) 1084 | #---------------------------------------------------------------------------------------------- 1085 | # Genetic algorithm parameters: genes 1086 | num_genes: int = len(network.flows) 1087 | gene_type = int # Indices 1088 | gene_space: list = [] 1089 | for flow in range(len(network.pathFlows)): 1090 | gene_space.append(list(range(0, len(network.pathFlows[flow])))) # Only possible indices 1091 | #---------------------------------------------------------------------------------------------- 1092 | # Genetic algorithm parameters: selection 1093 | keep_parents: int = 1 # Number of parents kept in next generation (<=mating parents) 1094 | parent_selection_type: str = str(sys.argv[3]) 1095 | # sss - Steady-State Selection 1096 | # rws - Roulette Wheel Selection 1097 | # sus - Stochastic Universal Selection 1098 | # rank - Rank Selection 1099 | # random - Random Selection 1100 | # tournament - Tournament Selection 1101 | K_tournament: int = 5 # Only in case "tournament" is set (default 3) 1102 | # NOTE: Higher value (and higher pressure) leads to a fast convergence to local maximum, but 1103 | # a shorter number of generations. 1104 | #---------------------------------------------------------------------------------------------- 1105 | # Genetic algorithm parameters: crossover 1106 | num_parents_mating: int = 2 # Mating parents on each combination 1107 | crossover_type: str = str(sys.argv[4]) 1108 | # single_point - Single-Point Crossover 1109 | # two_points - Two-Points Crossover 1110 | # uniform - Uniform Crossover 1111 | # scattered - Scattered Crossover 1112 | crossover_probability = None # No probability to be selected as parent, all are selected 1113 | #---------------------------------------------------------------------------------------------- 1114 | # Genetic algorithm parameters: mutation 1115 | mutation_type: str = "random" # Random Mutation (available with different gene spaces) 1116 | mutation_probability: float = float(sys.argv[5]) # Probability of gene mutation 1117 | mutation_by_replacement: bool = True # Replacement in mutation 1118 | #---------------------------------------------------------------------------------------------- 1119 | # Genetic algorithm parameters: solution 1120 | save_best_solutions: bool = True # Save best solutions 1121 | suppress_warnings: bool = True 1122 | #---------------------------------------------------------------------------------------------- 1123 | #Execution counter 1124 | indexe: int = int(sys.argv[8]) 1125 | #---------------------------------------------------------------------------------------------- 1126 | # Genetic algorithm execution 1127 | try: 1128 | ga_instance: object = pygad.GA(num_generations = num_generations, 1129 | num_parents_mating = num_parents_mating, 1130 | stop_criteria = stop_criteria, 1131 | initial_population = initial_population, 1132 | num_genes = num_genes, 1133 | fitness_func = fitness_func, 1134 | #on_generation = on_generation, 1135 | keep_parents = keep_parents, 1136 | parent_selection_type = parent_selection_type, 1137 | crossover_type = crossover_type, 1138 | crossover_probability = crossover_probability, 1139 | mutation_type = mutation_type, 1140 | mutation_probability = mutation_probability, 1141 | save_best_solutions = save_best_solutions, 1142 | suppress_warnings = suppress_warnings, 1143 | gene_type = gene_type, 1144 | gene_space = gene_space, 1145 | parallel_processing = None) 1146 | ga_instance.run() 1147 | solution: list 1148 | solution_fitness: float 1149 | solution_idx: int 1150 | solution, solution_fitness, solution_idx = ga_instance.best_solution() # Best solution and fitness 1151 | #---------------------------------------------------------------------------------------------- 1152 | # Plotting results 1153 | # Graph 1154 | plt.figure() 1155 | plt.plot(ga_instance.best_solutions_fitness) 1156 | plt.title("Fitness Vs. Generations") 1157 | plt.xlabel("Generation") 1158 | plt.ylabel("Fitness") 1159 | plt.savefig(path + "/Results/test_" + flowState + "_" + parent_selection_type \ 1160 | + "_" + crossover_type + "_" + str(int(mutation_probability * 100)) + "_" + str(WEIGHT_DELAY) + \ 1161 | "_" + str(WEIGHT_GAP) + "_" + str(indexe) + ".png", dpi = 500) # Save results 1162 | plt.show(block = False) 1163 | # File .mat 1164 | fitVector: list = {"generations": ga_instance.generations_completed, "fitness": ga_instance.best_solutions_fitness} 1165 | savemat(path + "/Results/fitness_vs_generations_" + flowState + "_" + parent_selection_type + \ 1166 | "_" + crossover_type + "_" + str(int(mutation_probability * 100)) + "_" + str(WEIGHT_DELAY) + \ 1167 | "_" + str(WEIGHT_GAP) + "_" + str(indexe) + ".mat", fitVector) 1168 | # Logs 1169 | print("Best scheduling solution found: " + str(solution) + ", fitness: " + str(solution_fitness)) 1170 | fileRes: object = open(path + "/Results/test_log_" + flowState + "_" + parent_selection_type \ 1171 | + "_" + crossover_type + "_" + str(int(mutation_probability * 100)) + "_" + str(WEIGHT_DELAY) + \ 1172 | "_" + str(WEIGHT_GAP) + "_" + str(indexe) + ".txt", 'a+') 1173 | fileRes.write("\nSolution to flows " + flowState + " --> " + str(solution) + \ 1174 | ", fitness=" + str(solution_fitness)) 1175 | fileRes.close() 1176 | #---------------------------------------------------------------------------------------------- 1177 | except Exception as e: 1178 | print("AN EXCEPTION ERROR OCCURRED WITH THE OBJECT'S CALL: ") 1179 | print(e) 1180 | sys.exit() 1181 | #---------------------------------------------------------------------------------------------- 1182 | # Checking best solution: flow times and nodes configuration 1183 | if(conf_sol): 1184 | debug = 1 1185 | fit_: list = fitness_func(solution, 0) 1186 | # Representing final nodes' ports' configuration 1187 | print("\n-- NODES' CONFIGURATION --") 1188 | for node in network.nodes: 1189 | print("\nConfiguration for ports in Node #" + str(node.id) + ": ") 1190 | aux: list = [] 1191 | for port in node.ports: 1192 | aux.append([port.neighborID, port.speed, port.schLW, port.schUP, port.schFlowID]) 1193 | print(" " + str([port.neighborID, port.speed, port.schLW, port.schUP, port.schFlowID])) 1194 | print("\n") 1195 | #---------------------------------------------------------------------------------------------- 1196 | if(print_paths): 1197 | print("-- POSSIBLE PATHS PER FLOW --\n") 1198 | for i in range(len(network.pathFlows)): 1199 | print("Flow #" +str(i) + ": " + str(network.pathFlows[i])) 1200 | print("\n") 1201 | #---------------------------------------------------------------------------------------------- 1202 | # Plotting TSN network's topology 1203 | if(plot_top): 1204 | topology: object = nx.from_numpy_matrix(np.matrix(network.topology)) 1205 | plt.figure() 1206 | graph: object = nx.Graph() 1207 | for i in range(len(network.topology)): 1208 | graph.add_node(i) 1209 | for j in range(len(network.topology[i])): 1210 | if(i != j and network.topology[i][j] > 0): 1211 | graph.add_edge(i, j, label = str(network.topology[i][j] * 1e-9) + " Gbps") 1212 | pos: object = nx.kamada_kawai_layout(graph) 1213 | nx.draw(graph, pos, with_labels = 1) 1214 | labels: object = nx.get_edge_attributes(graph, 'label') 1215 | nx.draw_networkx_edge_labels(graph, pos, edge_labels = labels) 1216 | plt.show(block = False) 1217 | x: str = input("\n\nPress [enter] to continue.") 1218 | #---------------------------------------------------------------------------------------------- 1219 | # Plotting solution's schedule per phases in nodes and ports 1220 | if(plot_port and conf_sol): 1221 | iter = 1 1222 | print("Checking port's timing...") 1223 | while(iter): 1224 | try: 1225 | nodeID = int(input(" INSERT NODE ID: ")) 1226 | portNeighborID = int(input(" INSERT PORT (NEIGHBOR) ID: ")) 1227 | network.plotScheduling(nodeID, portNeighborID) 1228 | iter = int(input(" INSERT NEW VALUES? (1 YES, 0 NO): ")) 1229 | except UnboundLocalError: 1230 | print(" UNEXISTENT PORT CONNECTION. PLEASE CHECK TOPOLOGY") 1231 | #---------------------------------------------------------------------------------------------- 1232 | 1233 | 1234 | 1235 | --------------------------------------------------------------------------------