Skip to content

chimms1/NRU-WiFi-Simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MIT License Contributors

Stargazers

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Information on git branches
  5. License
  6. Developed by
  7. Acknowledgments

About The Project

This project is a POC for our paper "An Intelligent Q-Learning Approach for Energy-Efficient Channel Occupancy in NR-U Cellular Networks for Fair Unlicensed Spectrum Access"

A Simulator developed from scratch in Python to demonstrate various coexistence scenarios for NR-U and WiFi topologies in unlicensed spectrum.

Built With

Python NumPy Pandas tqdm Seaborn Shell Script Linux VSCodium

(back to top)

Getting Started

Instructions to set up the project locally

Prerequisites

  • Python version 3.9+

Installation

  1. Install Python from official website
  2. Clone the repo
    git clone https://github.com/chimms1/NRU-WiFi-Simulator.git
  3. Install Python packages (project dependencies)
    pip install numpy pandas matplotlib seaborn tqdm openpyxl

(back to top)

Usage

Branch Info

  1. main: has contents of rl-dfs branch
  2. rl-dfs: Contains algorithm with 7 states for Q-Learning based Dynamic COT Optimization.
  3. dyna-q: Contains algorithm with 21 states for Q-Learning Based Energy-Efficient COT Optimization. Load change can be toggled in ConstantParams and be used with Dyna-Q+.
  4. Power-State: (Deprecated, use dyna-q branch) Contains algorithm with 21 states for energy efficient Dynamic Frame Selection based on Q-Learning.
  5. CSMA/CA: Development branch used to test implementation of CSMA/CA algorithm present in main file.
  6. dev-y: Development branch, used for implementation and testing.

Classes and Files

All the network entities are modeled into various classes

  1. Main class Simulator/main-latest-all.py: this is the main file that runs the simulation
  2. Service class Simulator/running/ServiceClass.py: contains all the methods used to perform operations such as creating users, calculating resources and many more.
  3. Params class Simulator/running/ConstantParams.py: contains the parameters set by the user.
  4. Verbose class Simulator/running/Print.py: contains the flags to print specific information and plot graphs.
  5. BaseStation class Simulator/entities/BaseStation.py: contains the class definition for NR-U BS and Wi-Fi AP.
  6. UserEquipment class Simulator/entities/UserEquipment.py: contains the class definition for NR-U and Wi-Fi User equipment
  7. Learning class Simulator/Qlearning/learning.py: contains the class definition for Q-learning (reward function, QTable operation, Actions)

How to execute

  1. Set the desired number of users, Number of iterations, Noise, pTx, datarate profile, etc in ConstantParams.py.
  2. Set exploration-exploitation iterations accordingly in learning.py
  3. Set flags in Print.py to print information.
  4. Do additional configurations if required.
  5. Run main-latest-all.py
python main-latest-all.py <seed-value>
  1. Setting a seed value will help in recreating UE deployments.

NOTE

  1. Currently, only a single NR-U BS and WiFi AP can be used.
  2. Increasing users to more than 30 may cause a decrease in SINR.
  3. Exceptions are not handled in many cases.
  4. Internal code may lack documentation in a few places.
  5. Complete research work done in this project will be published in 2025-26.

(back to top)

Results Generated from Experiments

The experiment setups and their accumulated data are present in the directory Results-Generation in main branch.

License

Distributed under the AGPL-3.0 License. See LICENSE.txt for more information.

Contributed by

Supervisor: Dr. Vijeth Kotagi

  • Yash Deshpande
  • Shreyas Joshi
  • Ramita Commi
  • Gurkirat Singh

Acknowledgments

Resources that we found helpful

(back to top)

About

Command line simulator built using Python to demonstrate various deployment setups of NR-U and WiFi

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •