Table of Contents
A Simulator built from scratch in Python to demonstrate various coexistence scenarios for LTE and WiFi topologies in unlicensed spectrum
Instructions to set up the project locally
- Python version 3.9+
- Install Python from official website
- Clone the repo
git clone https://github.com/chimms1/LTE-WiFi-Simulator.git
- Install Python packages (project dependencies)
pip install numpy pandas matplotlib seaborn tqdm openpyxl
All the entities are modeled into various classes
- Main class
Simulator/main-latest-all.py
: this is the main file that runs the simulation - Service class
Simulator/running/ServiceClass.py
: contains all the methods used to perform operations such as creating users, calculating resources, etc. - Params class
Simulator/running/ConstantParams.py
: contains the parameters set by the user - Verbose class
Simulator/running/Print.py
: contains the flags to print specific information and plot graphs. - BaseStation class
Simulator/entities/BaseStation.py
: contains the class definition for LTE BS and Wi-Fi AP. - UserEquipment class
Simulator/entities/UserEquipment.py
: contains the class definition for LTE and Wi-Fi User equipment - Learning class
Simulator/Qlearning/learning.py
: contains the class definition for Q-learning (reward function, QTable operation, Actions, etc)
- Set the desired number of users, Number of iterations, Noise, pTx, datarate profile, etc in
ConstantParams.py
- Set exploration-exploitation iterations accordingly in
learning.py
- Set flags in
Print.py
to print information. - Do additional configurations if required.
- Run
main-latest-all.py
python main-latest-all.py <seed-value>
- Setting a seed value will help in recreating UE deployments.
- Currently, only a single LTE BS and WiFi AP can be used.
- As of now load can be varied only once.
- Increasing users to more than 30 may cause a decrease in SINR.
- Exceptions are not handled in many cases.
- Internal code may lack documentation in a few places.
- Complete research work done in this project is yet to be released
main
: has contents of rl-dfsrl-dfs
: Contains algorithm with 7 states for Dynamic Frame Selection based on Q-LearningPower-State
: Contains algorithm with 21 states for energy efficient Dynamic Frame Selection based on Q-Learningdyna-q
: Contains algorithm with 21 states for energy efficient Dynamic Frame Selection based on Dyna-Q+CSMA/CA
: Development branch used to test implementation of CSMA/CA algorithm present in main file.dev-y
: Development branch, used for implementation and testing
Distributed under the LGPL-2.1 License. See LICENSE.txt
for more information.
- Yash Deshpande
- Shreyas Joshi
- Ramita Commi
- Gurkirat Singh
Resources that we found helpful