Coder Social home page Coder Social logo

jungangge / drl_for_ddbc Goto Github PK

View Code? Open in Web Editor NEW
38.0 4.0 19.0 152.17 MB

Simulation codes for the manuscript "Deep Reinforcement Learning for Distributed Dynamic MISO Downlink-Beamforming Coordination" submitted to IEEE Transactions on Communications

Python 100.00%

drl_for_ddbc's Introduction

Simulation codes for the manuscript "Deep Reinforcement Learning for Distributed Dynamic MISO Downlink-Beamforming Coordination", which has been accepted for publication in IEEE Transactions on Communications.


Requirements to run the simulation programs and plot the figures

The simulation programs require Python3 with installed packages such as Keras, Tensorflow, Numpy, Scipy and etc. The figures are plot by MATLAB.

Structure of the demo simulation program

./DRL_for_DDBC/codebook/codebook.mat the file for saving the codebook matrix used in current simulation program.

./DRL_for_DDBC/data the folder to save the simulation results of the four schemes.

./DRL_for_DDBC/rates the folder to save the achievable rate of each cell within the simulation process

./DRL_for_DDBC/base_station.py the simulator of the base station

./DRL_for_DDBC/cellular_network.py the simulator of the cellular network

./DRL_for_DDBC/channel.py the simulator of the channels

./DRL_for_DDBC/config.py the file to save the configuration of the current simulation program

./DRL_for_DDBC/data_process.py the python script to plot the simulation results of the current simulation program

./DRL_for_DDBC/dqn_for_singleagent.py the DQN agent at each BS

./DRL_for_DDBC/drl.py the DTDE DRL-based scheme

./DRL_for_DDBC/export_locations.py export the locations of BSs and UEs as .mat files

./DRL_for_DDBC/fp_algorithm.py the ideal FP approach

./DRL_for_DDBC/functions.py some extra functions requied in the simulation

./DRL_for_DDBC/greedy.py the greedy scheme

./DRL_for_DDBC/neural_network.py the file to save the configurations of the neural network in DQN

./DRL_for_DDBC/random_choose.py the random scheme

./DRL_for_DDBC/user_equipment.py the simulator of the user equipments

In each file above, there are detailed annotations to help you understand the simulation program.

drl_for_ddbc's People

Contributors

jungangge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

drl_for_ddbc's Issues

A few questions for the codes in channel.py

Hello Jungang,
Appreciate for sharing your codes and your impressive work.
I am a beginner in wireless communication and AI. Aftering reading your codes, I have a few confusions in your calculation of channel vector h. In your paper, the expression of h is :
image
Here are my questions:

  1. In channel.py line 46, why using self.h instead of self.H for calculating channel gain? Should the path loss be ignored in the drl method? And why the path loss wasn't being divided by np.sqrt(self.multi_paths)?
  2. In channel.py line 38 the calculation of steering vector, why it is divided by np.sqrt(self.bs.n_antennas) ?

For the error in channel.py

Dear Jungang:

In your init part,
self.g = (np.random.randn(1, self.multi_paths) + np.random.randn(1, self.multi_paths) * 1j) / np.sqrt(2 * self.multi_paths)

and in the ir_change part, it is
e = (np.random.randn(1, self.multi_paths) + np.random.randn(1, self.multi_paths) * 1j)
* np.sqrt(1 - np.square(self.rho)) / np.sqrt(2)
it seems that you miss the self.multi_paths in the ir_change part, this problem greatly increase the strength of the channel you use, it should be
e = (np.random.randn(1, self.multi_paths) + np.random.randn(1, self.multi_paths) * 1j)
* np.sqrt(1 - np.square(self.rho)) / np.sqrt(2 *self.multi_paths )
I am not sure whether this will influence all the results in your paper.(maybe the results should be lower in your paper)

you can check the norm value of self.g by using np.linalg.norm(self.g) in cascaded time slots and you can find that the strength increases a lot from slot 1 to slot 2.

Bests,

Kris

Hello,sorry to bother you.

Hello, sorry to bother you. I have been reading your paper and code "Deep Reinforcement Learning for Distributed Dynamic MISO Downlink-Beamforming Coordination" recently. I still don't understand the way of generating codebook files mentioned in the article. Could you please upload the source code of generating codebook files?

DRL_for_DDBC variable: "ir_change" issue

Hi Jungang

I am a beginner of AI

  1. I don't understand what is "ir_change" with \DRL_for_DDBC-master\code\train_manner\DTDE\DRL_for_DDBC\drl.py .
    cn.update(ir_change=False, actions=actions)
    cn.update(ir_change=True))

why use the ir_change= False & True to update cn?

  1. variable of channel.py have a 11 or 01 ?
    self.r_power11
    self.r_power01

What do those two numbers mean?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.