Source code for the research paper: Model-based Deep Learning for Joint RIS Phase Shift Compression and WMMSE Beamforming
Run the following commands in the terminal to install Python libraries to the local Python environment.
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install numpy
pip install pandas
pip install tabulate
pip install tqdm
pip install matplotlibTo install MATLAB CVX see https://cvxr.com/cvx/doc/install.html for instructions.
Descriptions of the Python projects, directories, and content included in this repository.
MATLAB (version 2022a) is used to generate a dataset for a simulated RIS communication system model, i.e. channel matrices, pilots, receive signal, etc.
- generateHDRISData.m
- Run this MATLAB script to generate data for a Half-Duplex RIS model
- src/
- directory containing MATLAB scripts and functions to generate RIS data
- To change the parameters of the system model change contents of: src/systemModelParameters.m
- datasets/
- directory to store the generated datasets.
- for Python scripts use the .csv files from this directory to easily load the datasets into a numpy array.
Auto-Quantization-Encoder WMMSE Beamforming Updater Deep Learning architecture and benchmarks.
- Generate dataset of channels and optimal RIS phase shifts / beamforming
- Choose the number of dataset samples by changing the "mc_runs" variable in src/systemModelParameters.m, along with any other system model parameters.
- (Optional) It is recommended to generate the dataset samples in parallel with multiple compute nodes / supercomputer due to computation time for computing optimal RIS phase-shift/beamforming.
- run generateHDRISData.m in MATLAB and the corresponding .csv files will be generated.
- Run the deep learning project
- In mumiso_autoencoder_quantization.py, set the dataset/results directory to the generated dataset from part 1 and load the number of dataset directories correspondingly with the "num_dirs" variable.
- Run mumiso_autoencoder_quantization.py in Python