基于深度强化学习技术优化无线网络中的资源分配(三)main.py部分代码

main.py文件

main.py是基于深度强化学习技术优化无线网络中的资源分配项目的主程序,可以理解为主控脚本,负责初始化环境,创建Agent,执行训练与测试,记录性能指标,并最终画图展示结果.
程序整体结构由import部分,系统参数定义,DQN参数设置,Train()函数,训练循环,结果保存,性能图像展示几大部分组成,接下来继续解读这份文件.

import

import numpy as np
from DQN_agent import Agent
from Environment import Env_cellular

引入Python中处理矩阵和数组运算的核心库NumPy,在这个项目中用于创建动作数组,生成随机数,累计平均与绘图数据处理等.
再从DQN_agent.py与Environment.py中分别导入Agent类和Env_cellular类,也就是前两章的代码.
Agent是强化学习智能体的封装,包含Q-Network的创建与更新,ε-greedy策略执行,存储经验并从ReplayBuffer中学习,支持模型保存与加载等,是整个DQN学习过程中的关键组件.
Env_cellular定义了蜂窝网络环境,主要负责初始化基站和用户的位置,模拟信道衰落,计算每个用户的速率和系统的奖励,提供训练\测试的reset()和step()接口.
简单总结来说Agent就是控制智能体学习行为,Env-cellular提供一个可交互的无线网络环境,接受动作并反馈新的状态和奖励.

系统参数设置system parameters

'System Parameters ------------------------------------------------------------------------------'
n_x = 4  # BS on axis x
n_y = 4  # BS on axis y
maxM = 3  # Number of UE at each cell
min_dis = 0.01  # UE minimum distance between UE-BS
max_dis = 1.0  # BS minimum distance between UE-BS
max_p = 38.  # BS maximum transmission power (in DB)
p_n = -114.  # Noise power in dBm
power_num = 10  # Number power levels available (Action space)
'--------------------------------------------------------------------------------------------------'
参数名 数值 含义 用途
n_x = 4 4 X轴基站数目 在仿真区域中,X方向布置4个BS
n_y = 4 4 Y轴基站数目 Y方向同样4个BS,总共 4x4=16 个BS
maxM = 3 3 每个小区的用户数(UE) 每个基站服务3个用户
min_dis = 0.01 0.01 UE到BS的最小距离 避免用户位置与基站过近引发奇异值(如路径损耗为0)
max_dis = 1.0 1.0 BS之间的最小距离 控制网络拓扑密度,保证基站之间有固定距离
max_p = 38. 38 dB 最大发射功率 基站功率上限(38 dB ≈ 6.3W)
p_n = -114. -114 dBm 噪声功率 通常用于信噪比计算,代表热噪声+接收机噪声
power_num = 10 10 动作空间的功率等级数 强化学习中的每个动作对应一个发射功率级别
这些参数用来生成强化学习环境,形成一个4*4的基站网络拓扑,每个基站与多个用户交互,模拟资源调度问题,用户和基站之间根据距离和信道模型决定SINR和速率,power_num控制智能体可以选择的功率等级(可以理解为动作数量).

Jakes信道模型建模的参数设定

'Requirement for modeling de Jakes Model -------------------------------------------------------------------'
fd = 10  # Maximum Doppler Frequency ( Reger to Eq. 2)
Ts = 20e-3  # Time intervals between intervals (Refer to Eq. 2)
'------------------------------------------------------------------------------------------------------------'

Jakes模型是一种用于模拟无线信道中多普勒扩展和瑞利衰落的经典模型,常用于模拟用户移动带来的信道时变型.

参数名 含义 用途
fd = 10 10 Hz 最大多普勒频移 (Maximum Doppler Frequency) 模拟用户移动速度带来的频移;数值越大表示用户移动越快,信道变化越剧烈
Ts = 20e-3 0.02 秒 时间间隔 (Time Slot Duration) 每次信道更新之间的间隔(即仿真的“时间步”)

这两个参数被传入Env_cellular环境类中,用来生成符合Jakes模型的时变瑞利衰落信道,例如用于计算当前信道增益h(t).

局部干扰建模与聚簇感知范围

'Considerations ----------------- ----------------------------------------------------------------------------'
L = 3  # Represents the number of clusters to consider as adjacent (BSs L1=7BS, L2=19BS, L3=37BS)
C = 16  # (Ic) Number of interferers taked account for the localized reward (48 input state neurons)
'-------------------------------------------------------------------------------------------------------------'
参数 含义 用途
L = 3 3 层聚簇 考虑多少层邻居基站作为“邻近干扰簇” 控制“局部性”的范围,例如:
L1 → 7 个BS,L2 → 19 个BS,L3 → 37 个BS
C = 16 16 个干扰者 计算奖励时考虑的干扰基站数目 用于 DQN 状态输入维度(48 个神经元 ← 与16个干扰BS有关)

局部建模法可以既能保留关键信息,又降低了状态维度,避免DQN输入维度过高.

其他参数设置

# ------------------------------------- Other params
ExpTag = 'FIFO10K'
max_reward = 0

ExpTag = ‘FIFO10K’ 表示实验标识符,可用于区分不同时间的设置或结果文件命名
max_reward = 0是指训练过程中用于记录目前为止的最大平均奖励,起到保存最佳模型时的判断标准和用于结果评估或early stopping的作用.

DQN算法核心参数

'DQN parameters -----------------------------------------------------------------------------------------------'
Gamma = 0.5  # Discount factor
epsilon = 0.9  # Initial epsilon value
eps_min = 0.01  # Final Epsilon value
batch_size = 256  # Batch Size
lr = 0.001  # Learning Rate
mem_size = 50000  # Memory size
'--------------------------------------------------------------------------------------------------------------'
参数 含义 用途
Gamma = 0.5 折扣因子 γ 用于未来奖励的折扣权重(值越小越重视即时奖励)
epsilon = 0.9 初始 ε ε-greedy 策略中初始的探索概率(90% 探索)
eps_min = 0.01 最小 ε ε衰减到的最小值(最终保留 1% 的探索)
batch_size = 256 批大小 每次从经验池中采样 256 条数据进行学习
lr = 0.001 学习率 用于神经网络梯度更新(越小越稳定,越大越快)
mem_size = 50000 经验回放池大小 存储最多 5 万条 transition(s, a, r, s’)用于训练

gamma设置为0.5说明更关注短期回报,适用于信道快速变化的场景,epsilon会随着训练逐步衰减,形成从探索到利用的转变.
这些参数会作为初始化Agent时的输入,并直接影响学习效果,收敛速度和稳定性.

DQN训练过程中的控制参数

'---------------------------------------'
train_interval = 10  # Training interval
interval = 500  # Result print interval
replace = 100  # Update target network interval
Ns = 30001  # Number of intervals per episodes
test_intervals = 500  # Test interval
episodes = 1  # Episodes (Each episode randomly deploy UEs with new propagation conditions)
instances = 10  # Instances to average the results
source_seed = 0  # Fixed seed to intialize environment (for replicability)
'---------------------------------------'
参数 含义 说明
train_interval = 10 每10步训练一次 DQN每间隔10个时间步更新一次Q网络
interval = 500 每500步打印一次 控制打印日志的频率(可视化与调试用)
replace = 100 每100步替换一次目标网络 固定间隔更新 target network(DQN 稳定学习关键)
Ns = 30001 每集步数 每个 episode 包含 30,001 个时间步
test_intervals = 500 每500步测试一次 与训练环境分开,每隔500步进行性能评估
episodes = 1 episode 数量 仅训练1轮,每轮随机部署新的UE拓扑(环境变化)
instances = 10 平均次数 重复实验10次,取平均值用于可视化和分析
source_seed = 0 固定随机种子 用于控制随机过程的可复现性(replicability)

当Ns = 30001时训练一次episode就会在每10步调用一次agent.learn(),每100步更新一次target网络,每500步做一次测试并打印性能.

训练\测试数据保存与模型加载保存控制项

这部分主要用于实验记录与重用模型.


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值