RLTCP在Ns3gym中的实现
截止到目前为止,
RLTCP仅仅发布了两个版本,后续还会进行更新。源代码地址为ns3gym。
目录结构
RLTCP位于目录ns3-gym/scratch下,共有8个源代码文件,除此之外,其还依赖于事先实现好的环境文件Ns3Env,用来和NS3脚本进行交互。
这8个文件如下:
-
test_tcp.py: 其中定义了Agent与环境定义的流程。-
tcp_newreno.py: 定义了newreno版的Agent类,在该类中提供了get_antion函数,用来决定如何通过状态回报来选择Action。
-
-
tcp_base.py: 定义了两种Agent, 一种是基于时间的,一种是基于事件的。 -
tcp_rl.h:在命名空间ns3中声明了七个类,分别是:TcpSocketBaseTimeTcpGymEnvTcpSocketDerivedTcpRlBaseTcpRlTcpRlTimeBased
-
tcp_rl.cc:定义了命名空间ns3中的四个类,这四个类声明于同样名称的头文件中,分别是:TcpSocketDerivedTcpRlBaseTcpRlTcpRlTimeBased
-
tcp_rl_env.h:在命名空间ns3中声明了七个类,分别是:PacketTcpHeaderTcpSocketBaseTimeTcpGymEnvTcpEventGymEnvTcpTimeStepGymEnv
-
tcp_rl_env.cc:定义了命名空间ns3中的三个类,这三个类声明于同样名称的头文件中,分别是:TcpGymEnvTcpEventGymEnvTcpTimeStepGymEnv
-
sim.cc:模拟的脚本,定义了网络的参数与结构,以及对脚本的执行。
综上,在RLTCP相关的代码中,我们共声明并定义了11个类,这些类各有各的作用。其中,在源文件中实现了TcpSocketDerived, TcpRlBase, TcpRl, TcpRlTimeBased, TcpGymEnv, TcpEventGymEnv, TcpTimeStepGymEnv 7个类。
类继承关系
-
TcpSocketBaseTcpSocketDerived
-
OpenGymEnv-
TcpGymEnvTcpEventGymEnvTcpTimeStepGymEnv
-
-
TcpCongestionOps-
TcpRlBaseTcpRlTcpRlTimeBased
-
🗞️ Recent Posts