baturaysaglam / RIS-MISO-Deep-Reinforcement-Learning

Joint Transmit Beamforming and Phase Shifts Design with Deep Reinforcement Learning
MIT License
148 stars 42 forks source link

Transmitted power handling #2

Closed aryatahlil closed 2 years ago

aryatahlil commented 2 years ago

Hi I was reading your repository again because of your new update but I couldn't understand whether you handle something about power transmitted from BS or not. do you check that your power could be the maximum power and don't force it to be exactly the maximum power (as I know sending maximum power is not always the best choice because of interference it can make and current users' CSI.)? I think you normalize your precoding matrix and multiple sqrt(power) to it. didn't you?

baturaysaglam commented 2 years ago

I couldn't understand your question exactly. can you elaborate on that a bit, please?

anyways, I can describe what I've done in terms of the powers. so, there are two texts in the paper:

  1. "The state s^{(t)} at the time step t is determined by the transmission power at the t^{th} time step, the received power of users at the t^{th} time step, ...
  2. ... the transmission power for the k^{th} user...

based on both sentences, it should be understood that the authors included the power transmitted from the BS, and received power at the users. so, there should be K elements per power entity in a state vector because power is a scalar value of dBm, and there are K users. however, the paper indicates that the powers have real and imaginary parts. how come a power value can be complex? in the previous version of the repository, I exactly follow what is described in the paper. however, I noticed this mistake and solved it in the latest version.

to address the normalization you are mentioning, I just implemented Eq. (2) in the paper without the expectation operator: tr(Gx(Gx)^H) = Pt, per the constraint optimization.

I hope this will answer your questions.

aryatahlil commented 2 years ago

in equation 2, it is not mentioned Trace (G.G^h) = P. it said that Trace(G.G^h) <= P . as I know, sometimes because of CSI, it is better not to use the whole BS power. I wonder how u handle that. if you try trace(G.G^h) = P, you can normalize G and multiple by sqrt(P) and I think it is not correct. I think the percentage of power usage in each step, should be the output of Actor-network.

baturaysaglam commented 2 years ago

I am not the author of the paper. I just implemented what is reported. The authors used trace(G.G^h) = P (see the last paragraph before section IV-B, on page 7). FYI, most of the time, trace(G.G^h) <= P is satisfied, I checked the output of the actor network many times. When not satisfied, normalization occurs. The normalization operates correctly, you can check it using debug mode. Also, the paper is full of mistakes, so what you are saying about incorrect issues may be true.

MrLiuWinter commented 2 years ago

hi i am also confuse of the power, as you can see , the power is equal with Trace{G.G^h}, but when you compute the power in step part of environment , you use "np.real(np.diag(self.G.conjugate().T @ self.G)).reshape(1, -1) 2",
its mean P
2, so i think the transmit power will be a wrong value, could you tell me why you use the equation, maybe some knowledge i havent learn thank you