ns3-gym

ns3-gym

将强化学习引入网络仿真研究的创新框架

ns3-gym是一个整合OpenAI Gym和ns-3的开源框架,旨在促进强化学习在网络研究中的应用。该项目提供了自定义仿真环境的能力,包含认知无线电和RL-TCP等实例。通过详细的文档和示例,ns3-gym为研究人员提供了探索机器学习在网络优化领域潜力的平台。项目提供了完整的安装指南和API文档,便于研究者快速上手。ns3-gym的灵活架构支持各种网络场景的模拟,为网络协议和通信技术的创新研究开辟了新途径。

ns3-gymOpenAI Gymns-3强化学习网络模拟Github开源项目

ns3-gym

OpenAI Gym是一个广泛用于研究的强化学习(RL)工具包。网络模拟器ns-3是网络协议和通信技术领域学术和产业研究的事实标准。ns3-gym是一个整合了OpenAI Gym和ns-3的框架,旨在鼓励在网络研究中使用强化学习。

安装

  1. 安装ns-3所需的所有依赖项。
# C++的最低要求:
apt-get install gcc g++ python3 python3-pip cmake

查看ns-3要求

  1. 安装ZMQ、Protocol Buffers和pkg-config库:
sudo apt-get update
apt-get install libzmq5 libzmq3-dev
apt-get install libprotobuf-dev
apt-get install protobuf-compiler
apt-get install pkg-config
  1. 将ns3-gym仓库克隆到contrib目录并切换分支:
cd ./contrib
git clone https://github.com/tkn-tub/ns3-gym.git ./opengym
cd opengym/
git checkout app-ns-3.36+

查看使用cmake

使用opengym作为ns3-gym应用目录的名称很重要。

  1. 配置并构建ns-3项目:
./ns3 configure --enable-examples
./ns3 build

注意:Opengym协议缓冲区消息(C++和Python)在配置过程中构建。

  1. 安装位于model/ns3gym的ns3gym(需要Python3)
cd ./contrib/opengym/
pip3 install --user ./model/ns3gym
  1. (可选)安装代理所需的所有库(如tensorflow、keras等)。

  2. 运行示例:

cd ./contrib/opengym/examples/opengym/ 
./simple_test.py
  1. (可选)在两个终端中分别启动ns-3模拟脚本和Gym代理(用于调试):
# 终端1
./ns3 run "opengym"

# 终端2
cd ./contrib/opengym/examples/opengym/ 
./test.py --start=0

示例

所有示例可以在这里找到。

基本接口

  1. 示例Python脚本。注意,gym.make('ns3-v0')启动位于当前工作目录的ns-3模拟脚本。
import gym
import ns3gym
import MyAgent
from ns3gym import ns3env

#env = gym.make('ns3-v0')  <--- 在新的OpenAI Gym框架中会导致一些错误,请使用ns3env.Ns3Env()
env = ns3env.Ns3Env()
obs = env.reset()
agent = MyAgent.Agent()

while True:
  action = agent.get_action(obs)
  obs, reward, done, info = env.step(action)

  if done:
    break
env.close()
  1. 任何ns-3模拟脚本都可以用作Gym环境。这只需要实例化OpenGymInterface并实现由以下函数组成的ns3-gym C++接口:
Ptr<OpenGymSpace> GetObservationSpace();
Ptr<OpenGymSpace> GetActionSpace();
Ptr<OpenGymDataContainer> GetObservation();
float GetReward();
bool GetGameOver();
std::string GetExtraInfo();
bool ExecuteActions(Ptr<OpenGymDataContainer> action);

注意,通用ns3-gym接口允许观察模拟中的任何变量或参数。

更详细的描述可以在我们的论文中找到。

认知无线电

我们考虑无线多信道环境中的无线电信道选择问题,例如具有外部干扰的802.11网络。代理的目标是为下一个时间槽选择一个无干扰的信道。我们考虑一个简单的说明性示例,其中外部干扰遵循周期性模式,即按照表中所示的顺序依次扫过所有的1到4号信道。

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/1dbc95bb-637e-4fa6-bdcb-8df4ce43b4bf.png" alt="drawing" width="500"/> </p>

我们在ns-3中使用现有的功能创建了这样一个场景,即使用WaveformGenerator类创建干扰,使用SpectrumAnalyzer类执行感知。

这样的周期性干扰源可以很容易地被RL代理学习,这样基于给定时间槽中每个信道上的当前占用观察,可以确定下一个时间槽的正确信道,避免与干扰源发生任何冲突。

我们提出的RL映射是:

  • 观察 - 当前时间槽中每个信道的占用情况,即宽带感知,
  • 动作 - 设置下一个时间槽要使用的信道,
  • 奖励 - 如果与干扰源没有冲突则+1;否则-1,
  • 游戏结束 - 如果在最后十个时间槽中发生了超过三次冲突 下图显示了使用具有全连接输入和输出层的简单神经网络时的学习性能。 我们可以看到,经过大约80个回合后,代理能够从当前观察完美预测下一个信道状态,从而避免与干扰发生任何冲突。

示例的完整源代码可以在这里找到。

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/fc71a776-fd18-4580-aeea-3a017c53a3e2.png" alt="drawing" width="600"/> </p>

请注意,在更现实的场景中,这个示例中的简单波形生成器可以被替换为真实的无线技术,如免许可LTE(LTE-U)。

RL-TCP

正式的RL-TCP代理示例仍在开发中。然而,我们已经实现并发布了两个版本(即基于时间和基于事件的)的接口,允许监控TCP实例的参数并控制其"拥塞窗口"和"慢启动阈值" -- 详情请见此处。注意,这两个版本都继承自TcpCongestionOps,因此可以作为ns3::TcpL4Protocol::SocketType的参数使用。

此外,使用基于事件的接口,我们已经有了一个实现TCP NewReno的Python Gym代理示例,它使用ns3gym与ns-3仿真进程通信 -- 请看这里。这个示例可以作为实现基于RL的TCP拥塞控制算法的起点。

要运行它,请执行:

cd ./contrib/opengym/examples/rl-tcp/
./test_tcp.py

或在两个终端中:

# 终端1:
./ns3 run "rl-tcp --transport_prot=TcpRl"

# 终端2:
cd ./contrib/opengym/examples/rl-tcp/
./test_tcp.py --start=0

注意,我们的Python TCP NewReno实现达到了与ns3中实现的相同的传输数据包数(请参见ns-3仿真的输出,即两种情况下都是RxPkts: 5367)。请执行以下命令进行交叉检查:

./ns3 run "rl-tcp --transport_prot=TcpNewReno"

联系方式

  • Piotr Gawlowicz,柏林工业大学,gawlowicz@tkn
  • Anatolij Zubow,柏林工业大学,zubow@tkn
  • tkn = tkn.tu-berlin.de

如何引用ns3-gym?

请使用以下bibtex:

@inproceedings{ns3gym,
  Title = {{ns-3 meets OpenAI Gym: The Playground for Machine Learning in Networking Research}},
  Author = {Gaw{\l}owicz, Piotr and Zubow, Anatolij},
  Booktitle = {{ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems (MSWiM)}},
  Year = {2019},
  Location = {Miami Beach, USA},
  Month = {November},
  Url = {http://www.tkn.tu-berlin.de/fileadmin/fg112/Papers/2019/gawlowicz19_mswim.pdf}
}

编辑推荐精选

博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

热门AI工具AI办公办公工具智能排版AI生成PPT博思AIPPT海量精品模板AI创作
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

下拉加载更多