深度强化学习计算卸载神作DROO:无线供能移动边缘计算入门必读
【免费下载链接】DROODeep Reinforcement Learning for Online Computation Offloading in Wireless Powered Mobile-Edge Computing Networks项目地址: https://gitcode.com/gh_mirrors/dr/DROO
如果你正在研究深度强化学习计算卸载,那么 DROO 一定是你绕不开的经典开源项目。DROO(Deep Reinforcement Learning for Online Computation Offloading in Wireless Powered Mobile-Edge Computing Networks)是发表于顶级期刊 IEEE Transactions on Mobile Computing 的论文官方代码,它用深度强化学习解决无线供能移动边缘计算网络中的在线计算卸载决策问题。本文面向零基础读者:先讲清楚算法原理,再手把手教你跑通代码、看懂数据集,助你快速入门这个热门方向。
一、先搞懂背景:什么是无线供能移动边缘计算?
1. 移动边缘计算:把"算力"搬到设备身边
传统云计算中,手机、传感器等终端要把任务传到远端数据中心,延迟高、能耗大。移动边缘计算(MEC)则把服务器部署在接入点(AP)附近,设备就近卸载任务,延迟大幅降低,这也是 5G/6G 时代的关键技术。
2. 无线供能:让设备"边充电边算" 🔋
无线设备通常电池有限。在无线供能架构下,接入点先广播射频能量,设备收集能量后再用于本地计算或任务卸载——能量从 AP 流向设备,任务从设备流向边缘,形成完整的"供能—计算"闭环。这就是无线供能移动边缘计算(WPMEC)的基本图景。
3. 二进制计算卸载:0 或 1 的抉择
每个时隙,无线信道都在动态变化,每个设备(WD)必须立刻做出二选一:本地计算(0)还是卸载到边缘(1)?N 个设备就有 2^N 种组合——N=10 时有 1024 种,N=30 时超过 10 亿种,穷举完全不现实。深度强化学习计算卸载由此登场:让神经网络在极短时间内做出接近最优的决策。
二、DROO 核心算法:DNN 猜答案,择优回放训练
DROO 的思路非常优雅,每个时隙只需四步:
- 预测:把时变信道增益 h 输入深度神经网络(两层隐藏层,各 120、80 个神经元),输出每个设备的卸载概率;
- 量化:按"保序"(OP)或"近邻"(KNN)方式,生成 K 个候选二进制卸载方案;
- 评估:用二分法(optimization.py)为每个候选方案求解资源分配,选出加权计算速率最大的方案;
- 学习:把 (h, 最优方案) 存入记忆库,定期采样训练 DNN,网络越用越准。
这套"生成—评估—择优—训练"的闭环,就是 DROO 的全部秘密,对应代码分布在 mainPyTorch.py 与 memoryPyTorch.py 中。
自适应 K:越学越聪明的"省力技巧" 💡
初期网络不靠谱,K 取最大值 N,多生成几个候选方案兜底;随着网络变准,系统动态缩减 K,只保留少量候选,进一步降低计算开销。这正是论文中"自适应 K"(Adaptive K)机制的巧妙之处。
三、为什么说 DROO 是计算卸载领域的"神作"?
1. 顶级期刊背书,代码完整开源
论文发表于 IEEE Transactions on Mobile Computing(2020),作者来自浙江工业大学、深圳大学与香港中文大学。训练数据、主程序、两个 Demo 全部开源,任何人都能复现论文图表,这在学术项目中相当难得。
2. 性能逼近最优,复杂度大幅降低
在 3 万个时隙的仿真中,训练收敛后的归一化加权计算速率可长期保持在最优解附近(0.94 以上,越接近 1 越优),而单时隙决策开销远低于穷举 2^N 种组合的传统方法,真正做到了"又快又好"。
3. 三种深度学习框架实现,学习门槛低
项目同时提供 TensorFlow 1.x(memory.py)、TensorFlow 2(memoryTF2.py)和 PyTorch(memoryPyTorch.py)三个版本,主程序一一对应,你可以用自己熟悉的框架直接上手。
四、零基础运行教程:三步跑通 DROO
第一步:准备 Python 环境
需要 numpy、scipy、matplotlib,以及 TensorFlow 或 PyTorch 其中之一(推荐 PyTorch,代码最简洁),用 pip 一条命令即可装齐。
第二步:克隆仓库
在终端执行:
git clone https://gitcode.com/gh_mirrors/dr/DROO第三步:运行主程序
进入项目目录后,直接运行 PyTorch 版主程序:
python mainPyTorch.py程序会自动读取./data/data_10.mat中的 3 万条样本,按 8:2 划分训练集与测试集,训练中打印进度,最终输出 Averaged normalized computation rate(归一化计算速率)与单信道平均决策时间。数值越接近 1,说明算法越接近最优解。整个流程几分钟即可跑完;如果你用 TensorFlow 2,把文件名换成mainTF2.py即可。
五、项目结构速览:官方文件地图 🗺️
| 文件 | 作用 |
|---|---|
| main.py | 主程序(TensorFlow 1.x 版),含训练与测试全流程 |
| mainTF2.py | 主程序(TensorFlow 2 版) |
| mainPyTorch.py | 主程序(PyTorch 版),推荐新手阅读 |
| memory.py / memoryTF2.py / memoryPyTorch.py | DNN 记忆结构:网络构建、候选方案生成、训练与记忆回放 |
| optimization.py | 资源分配求解器(二分法求解能量广播时间 a 与卸载时间 τ) |
| demo_alternate_weights.py | 演示:设备权重交替变化场景 |
| demo_on_off.py | 演示:设备随机开关机场景 |
| data/ | 预生成训练/测试数据集(.mat 格式) |
推荐阅读顺序:mainPyTorch.py → memoryPyTorch.py → optimization.py,由整体到细节,很快就能理清脉络。
六、数据集详解:data 文件夹里装了什么?
data 目录下是作者用穷举法(N≤10)与 CD 方法(N=20、30)预先生成的最优解标签,包含 data_5.mat 至 data_30.mat 共 8 个数据文件,详见 data/README.md。其中 N=10/20/30 每个文件含 3 万条样本,其余为 1 万条。每条样本包含:
| 变量 | 含义 |
|---|---|
| input_h | 无线设备与 AP 之间的信道增益 |
| output_mode | 最优二进制卸载动作 x* |
| output_a | AP 广播射频能量的最优时间占比 a* |
| output_tau | 分配给设备任务卸载的最优时间占比 τ* |
| output_obj | 最优加权和计算速率 Q* |
其中 data_10_WeightsAlternated.mat 是权重交替场景的专用数据集,供进阶 Demo 使用。
七、进阶玩法:复现论文中的两个动态场景 🚀
除了基础训练,项目还内置两个演示脚本,帮你理解 DROO 在真实动态网络中的表现:
- demo_alternate_weights.py:设备权重(如服务优先级)随时间交替变化,测试算法能否稳定逼近最优;
- demo_on_off.py:训练过程中随机让部分设备开机/关机(信道增益置零或恢复),观察算法在设备数量动态变化时的自适应能力。
运行方法与主程序一致,只需根据所用框架修改 import 的 MemoryDNN 来源。
八、写给新手的 3 条学习建议 ✍️
- 先跑后读:把 demo 跑出曲线,再回头读代码,带着"这个变量是干嘛的"的疑问去读,效率最高;
- 画图观察:运行后会自动生成训练损失曲线与归一化计算速率曲线,观察它们如何收敛,是理解深度强化学习的最佳方式;
- 从论文出发:建议配合论文《Deep Reinforcement Learning for Online Computation Offloading in Wireless Powered Mobile-Edge Computing Networks》阅读,代码与论文公式一一对应;如果想做多时隙连续控制,还可以继续研究作者的扩展工作 LyDROO。
DROO 是深度强化学习计算卸载方向当之无愧的"入门第一课":算法优雅、代码干净、数据齐全。希望这篇入门指南能帮你顺利跑通第一个无线供能移动边缘计算实验,迈出科研与工程实践的第一步!🎉
【免费下载链接】DROODeep Reinforcement Learning for Online Computation Offloading in Wireless Powered Mobile-Edge Computing Networks项目地址: https://gitcode.com/gh_mirrors/dr/DROO
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考