第【16】期--基于深度强化学习的RIS-MISO系统下联合波束成形与相移优化方法-python完整代码+参考文献 摘要可重构智能表面RIS凭借其可编程调控无线信号传播的能力被认为是第六代6G移动通信系统的关键技术之一。本文针对RIS辅助的多用户下行MISO系统研究基站发射波束赋形矩阵与RIS相位偏移矩阵的联合设计问题目标是在发射功率和单位模约束下最大化系统总速率。提出一种基于深度强化学习DRL的求解框架。将问题建模为马尔可夫决策过程MDP采用深度确定性策略梯度DDPG算法通过试错交互与环境学习。状态由发射功率、接收功率、上一时刻动作及信道状态构成动作为待优化的两个矩阵实虚部分离奖励为当前总速率网络输出后通过归一化层严格满足物理约束。仿真结果表明所提算法有效性1 研究背景6G与RI的兴起为实现更智能、更绿色的第六代移动通信6G业界提出了可重构智能表面RIS 技术。RIS由大量低成本、低功耗的可编程超材料单元构成能够独立调控入射电磁波的相位、幅度、频率甚至轨道角动量从而“定制”无线传播环境。RIS辅助MIMO系统的优化难题在RIS辅助的下行多用户MISO系统中需要联合优化基站的发射波束赋形矩阵与RIS的相位偏移矩阵以提升系统总速率、能量效率或覆盖范围。该联合优化问题通常是非凸、高维、带单位模约束的传统数学方法如交替优化、半定松弛、流形优化计算复杂度高、依赖精确信道模型、收敛性能受初始值影响大。人工智能与深度强化学习的契机近年来深度强化学习在复杂无线通信系统优化中展现出巨大潜力。DRL通过智能体与环境的试错交互直接学习最优策略无需显式数学建模适合处理非凸、高维、动态变化的优化问题。2 系统与问题建模一个配备 M 根天线的基站一个配备 N 个反射单元的 被动RISK个单天线用户BS 与用户之间的直射链路被完全阻挡信号仅通过 RIS 反射传输令G表示基站波束成形矩阵 Φ表示RIS的相移矩阵 H1表示从基站到RIS的信道矩阵hk表示从RIS到用户k的信道向量则第k个用户的接收信号为信干噪比为优化目标为最大化多用户的和速率考虑功率约束和被动RIS问题为目标函数是非凸的RIS单位模约束也是非凸的大多数已有工作采用交替优化缺点为交替迭代可能慢、依赖初始值、且不能保证全局最优3 强化学习方法1关键设计马尔可夫决策过程**状态所有的信道状态信息CSI: H1hk各个用户的发射波束成形各个用户的接收功率上一时刻的的动作1、CSI是问题的核心参数虽然在固定环境下信道不变但智能体需要知道信道才能推断何种动作能产生高奖励。2、上一时刻的动作使智能体知道当前解的“位置”便于做微小调整。没有历史动作网络只能依赖当前功率间接推断效率更低。3、功率信息反映当前波束赋形和相位偏移对每个用户的信号与干扰的影响是计算奖励的基础。动作一般为待优化的变量为波束成形和相移矩阵G和Φ奖励即优化问题的目标函数。值得注意的是1、信道、波束、相移均为复数通过而神经网络的输入必须是实数。将复数拆分为实部和虚部可以保留完整的相位与幅度信息。文中做了拆解--2、 考虑到功率约束和单位模约束是连续性优化变量传统的DQN无法是贪心策略无法输出连续性动作故采用了DDPG3、功率约束有上限相移约束是0-2pi正好在actor网络的输出时做上限的限制这样设计完美等价于原始优化问题的两个约束条件了不需要在奖励函数里面额外新增违反约束的惩罚了。3.2 经典的DDPG算法定义好MDP后直接把MDP过程丢进经典的DDPG算法中没啥额外的设计。4 仿真结果参数描述取值γ未来奖励的折扣因子discount rate0.99μc训练 Critic 网络的学习率learning rate0.001μa训练 Actor 网络的学习率0.001τc目标 Critic 网络的更新率软更新系数0.001τa目标 Actor 网络的更新率0.001λc训练 Critic 网络学习率的衰减率0.00001λa训练 Actor 网络学习率的衰减率0.00001D经验回放缓冲区replay buffer大小100000N总训练 episodes 数5000T每个 episode 的最大时间步数20000W每次采样的小批量mini-batch大小16U目标网络与训练网络的同步步数间隔1仿真基本围绕不同的系统建模参数与DDPG参数修改进行验证。关键的环境设计代码import numpy as np classRIS_MISO(object):def__init__(self,num_antennas,num_RIS_elements,num_users,channel_est_errorFalse,AWGN_var1e-2,channel_noise_var1e-2):self.Mnum_antennas self.Lnum_RIS_elements self.Knum_users self.channel_est_errorchannel_est_error assert self.Mself.K self.awgn_varAWGN_var self.channel_noise_varchannel_noise_var power_size2*self.K channel_size2*(self.L*self.Mself.L*self.K)self.action_dim2*self.M*self.K2*self.L self.state_dimpower_sizechannel_sizeself.action_dim self.H_1None self.H_2None self.Gnp.eye(self.M,dtypecomplex)self.Phinp.eye(self.L,dtypecomplex)self.stateNone self.doneNone self.episode_tNone def_compute_H_2_tilde(self):returnself.H_2.T self.Phi self.H_1 self.G defreset(self):self.episode_t0self.H_1np.random.normal(0,np.sqrt(0.5),(self.L,self.M))1j*np.random.normal(0,np.sqrt(0.5),(self.L,self.M))self.H_2np.random.normal(0,np.sqrt(0.5),(self.L,self.K))1j*np.random.normal(0,np.sqrt(0.5),(self.L,self.K))init_action_Gnp.hstack((np.real(self.G.reshape(1,-1)),np.imag(self.G.reshape(1,-1))))init_action_Phinp.hstack((np.real(np.diag(self.Phi)).reshape(1,-1),np.imag(np.diag(self.Phi)).reshape(1,-1)))init_actionnp.hstack((init_action_G,init_action_Phi))Phi_realinit_action[:,-2*self.L:-self.L]Phi_imaginit_action[:,-self.L:]self.Phinp.eye(self.L,dtypecomplex)*(Phi_real1j*Phi_imag)power_tnp.real(np.diag(self.G.conjugate().T self.G)).reshape(1,-1)**2H_2_tildeself._compute_H_2_tilde()power_rnp.linalg.norm(H_2_tilde,axis0).reshape(1,-1)**2H_1_real,H_1_imagnp.real(self.H_1).reshape(1,-1),np.imag(self.H_1).reshape(1,-1)H_2_real,H_2_imagnp.real(self.H_2).reshape(1,-1),np.imag(self.H_2).reshape(1,-1)self.statenp.hstack((init_action,power_t,power_r,H_1_real,H_1_imag,H_2_real,H_2_imag))returnself.state def_compute_reward(self,Phi):reward0opt_reward0fork inrange(self.K):h_2_kself.H_2[:,k].reshape(-1,1)g_kself.G[:,k].reshape(-1,1)xnp.abs(h_2_k.T Phi self.H_1 g_k)**2xx.item()G_removednp.delete(self.G,k,axis1)interferencenp.sum(np.abs(h_2_k.T Phi self.H_1 G_removed)**2)yinterference(self.K-1)*self.awgn_var rho_kx/y rewardnp.log(1rho_k)/np.log(2)opt_rewardnp.log(1x/((self.K-1)*self.awgn_var))/np.log(2)returnreward,opt_reward defstep(self,action):self.episode_t1actionaction.reshape(1,-1)G_realaction[:,:self.M**2]G_imagaction[:,self.M**2:2*self.M**2]Phi_realaction[:,-2*self.L:-self.L]Phi_imagaction[:,-self.L:]self.GG_real.reshape(self.M,self.K)1j*G_imag.reshape(self.M,self.K)self.Phinp.eye(self.L,dtypecomplex)*(Phi_real1j*Phi_imag)power_tnp.real(np.diag(self.G.conjugate().T self.G)).reshape(1,-1)**2H_2_tildeself._compute_H_2_tilde()power_rnp.linalg.norm(H_2_tilde,axis0).reshape(1,-1)**2H_1_real,H_1_imagnp.real(self.H_1).reshape(1,-1),np.imag(self.H_1).reshape(1,-1)H_2_real,H_2_imagnp.real(self.H_2).reshape(1,-1),np.imag(self.H_2).reshape(1,-1)self.statenp.hstack((action,power_t,power_r,H_1_real,H_1_imag,H_2_real,H_2_imag))reward,opt_rewardself._compute_reward(self.Phi)doneopt_rewardrewardreturnself.state,reward,done,None defclose(self):pass5 总结1、首次2020年将将DRL用于RIS辅助多用户MISO系统中的联合波束赋形与相位偏移设计。2、drl的设计比较简单高效便于进行深度强化学习进行无线通信资源分配的研究入门。3、后续研究优化方向可从csi无法实时获取时变信道网络结构多智能体协同等等角度优化。参考文献.Huang, R. Mo and C. Yuen, “Reconfigurable Intelligent Surface Assisted Multiuser MISO Systems Exploiting Deep Reinforcement Learning,” in IEEE Journal on Selected Areas in Communications, vol. 38, no. 8, pp. 1839-1850, Aug. 2020, doi: 10.1109/JSAC.2020.3000835.