Welcome to the RIS-based Secrecy Optimization Project! This project focuses on optimizing the secrecy performance of a wireless communication system using reconfigurable intelligent surfaces (RIS). The project involves simulating and optimizing communication environments, leveraging advanced algorithms and techniques.
This project proposes a low complexity optimization algorithm to maximize the secrecy energy efficiency (SEE) in the uplink of a wireless network aided by an RIS. The project optimizes the transmit powers of mobile users and the RIS reflection coefficients. The primary focus is on both active and passive RIS configurations to achieve energy-efficient secure communications.
- Channel Environment Simulation: Simulate different channel environments with various configurations.
- Secrecy Optimization: Optimize RIS configurations to improve secrecy.
- Visualization: Visualize results using 2D and 3D plots.
- OOP Design: Efficient code management using Object-Oriented Programming principles.
- Unit Testing: Comprehensive unit tests to ensure code reliability.
Ensure you have the following installed on your system:
- Python 3.8+
- Virtualenv
- MOSEK Solver (for optimization tasks)
-
Clone the Repository
git clone https://github.com/your-repo/ris-secrecy-optimization.git cd ris-secrecy-optimization -
Setup the Virtual Environment
python3 -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate`
-
Run the Setup Script
chmod +x setup_env.sh ./setup_env.sh
-
Set the MOSEK License Path Add the following line to your .bashrc or .zshrc file:
export MOSEKLM_LICENSE_FILE="/path/to/your/mosek/license"
Then, source your updated profile
source ~/.bashrc # or `source ~/.zshrc`
To start the simulation, run:
python main.pyTo run all the unit tests:
python -m unittest discover testsTo run a specific test:
python -m unittest tests.test_visualization.TestPlotter.test_plot_resultsris-secrecy-optimization/ ├── main.py ├── README.md ├── requirements.txt ├── setup_env.sh ├── docs ├── data/ │ ├── channel_samples/ │ ├── ris_coefficients/ │ └── outputs/ ├── src/ │ ├── __init__.py │ ├── sysconfig.py │ ├── utils.py │ ├── gamma_utils.py │ ├── power_utils.py │ ├── optimizers.py │ └── visualization.py └── tests/ ├── __init__.py ├── test_sysconfig.py ├── test_utils.py ├── test_gamma_utils.py ├── test_power_utils.py ├── test_optimizers.py └── test_visualization.py
For detailed documentation on each module and its functions, please refer to the docstrings within the source code files in the src directory.
For more details on the concepts and algorithms used in this project, please refer to the source research paper provided in the repository (inside the doc folder!).