Home

Awesome

Optimal Solutions for Joint Beamforming and Antenna Selection: From Branch and Bound to Machine Learning

Implementation of the paper "Optimal Solutions for Joint Beamforming and Antenna Selection: From Branch and Bound to Graph Neural Imitation Learning", published in IEEE Transactions on signal processing. Also, see a shorter version in this ICASSP Paper.

Beamforming and Antenna Selection Problem

<p align='center'> <img src="img/bf_as_illustration.png" alt="Image description" style="width: 50%;"> </p> <p align='center'> <img src="img/problem.png" alt="Image description" style="width: 70%;"> </p>

Proposed Solution

<!-- ![Illustration of the Proposed method](img/bb_ml_process.png) --> <p align='center'> <img src="img/bb_ml_process.png" alt="Image description" style="width: 60%;"> </p>

Results

<p align='center'> <img src="img/bb_conv.png" alt="Image description" style="margin-right: 20px; width: 45%;"> <img src="img/table.png" alt="Image description" style="margin-left: 20px;width: 48%;"> </p>

Setup

Make sure that you have pip installed.

If you are on linux. Run the following command

./initial_setup.bash

Else, manually create the following directories

antenna_selection/data_bf/data
antenna_selection/data_rbf/data

antenna_selection/data_bf/trained_models
antenna_selection/data_rbf/trained_models

And run

pip install -r requirements.txt

Executing the Code

On the base directory run the following to make sure that the repo is added to PATH and PYTHONPATH environment variables

source activate_env.bash

Finally, you can run the proposed B&B procedure by running the following

python antenna_selection/bb_unified.py 

You can train node classifier with the following

python models/dagger_multiprocess.py

Change the parameters in models/setting.py and on the individual file that you are running.