Optimization of Transmit Beamforming With Channel Covariances for MISO Downlink Assisted by Reconfigurable Intelligent Surfaces
Note
[Manuscript Accepted]
The implementation of the neural network model is adapted from TianLin0509/BF-design-with-DL to meet our system requriements.
Important
For details on the custom Downlink Beamforming with Reconfigurable Intelligent Surface environment, please refer to the paper: [](Will be published on IEEE Xplore in May, 2024).
Parameter | Current Value |
---|---|
Number of UEs | Default: 8 Otherwise: 6, or 10 |
Number of BS transmit antenna ( |
Default: 16 Otherwise: 10 |
Number of RIS elements ( |
Default: 30 Otherwise: 60 |
Downlink bandwidth | Assume mmWave Frequencies > 30 GHz |
Channel bandwidth | Rayleigh Fading Model |
Antenna configuration | MISO |
Frequency reuse scheme | Large Frequency Reuse Factor |
Mobility model | Stationary |
Learning type | Unsupervised |
Layer Name | Output Dimension | Activation Function |
---|---|---|
Input layer 1 | [M+K, 2, |
- |
Input layer 2 | [1] | - |
Input layer 3 | [M+K, 2, |
- |
Concatenate layer | [2 |
- |
Dense layer 1 | [256, 1] | softplus |
Dense layer 2 | [128, 1] | softplus |
Dense layer 3 | [64, 1] | softplus |
Lambda layer 1 | [32, 1] | - |
Lambda layer 2 | [32, 1] | - |
Dense layer 4 | [M+K, 1] | softplus |
Dense layer 5 | [M+K, 1] | softplus |
Lambda layer 3 | [M+K, 1] | - |
Lambda layer 4 | [M+K, 1] | - |
Lambda layer 5 | [M+K, |
- |
Lambda layer 6 | [1] | - |
Hyperparameters | Value |
---|---|
Number of episodes | Maximum episodes = |
Mini-batch size |
|
Network weight initializations | Keras' default wegihts |
Optimizer | Adam |
Learning rate | Maximium value = Minimum value = |
Figures of the sum rates and computaion time in the paper are found in the folder sumRates and elapsedTime respectively or as belows. The hyperparameters follow all figures presented in the paper.
Please modify N
, Nt
, totalUsers
, Lm
, Lk
in NNUtils.py and respective python
plot
files to reproduce all figures in the paper.
0.Requirements
python==3.10.10
matplotlib==3.7.1s
numpy==1.24.3
tensorflow==2.15.0
keras==2.15.0
1.Implementation
-
Generate the dataset:
python covariance.py
-
Calculate the sum rate of ZF beams w/ water-filling pwr:
python waterFilling.py
-
Train the model:
python TrainSuper.py
-
Test the model:
python TestSuper.py
-
Check the elapsed time:
python timerCalculation.py
-
Plotting the graph:
python plot_corresponding_number_.py
Eplased time info, Loss curves and sum rate plots can also be viewed in timer
, train
and Plotting
folders which will be automatically created after running the abovementioned files.