RL
- 通用超参数
DQN改进
Duel Structure
VS→该state在当前policy下的value
QSA→该state进行这个action在当前policy下的value
advantage = VS - QSA
裁剪区域的确定?
34194按行输出min,33193min为90*90
Replay buffer
background knowledge
[bisect Module]
python自带的二分查找的包
重要函数
基本使用
bisect.bisect_left(2)//返回2左端index
bisect.bisect()//与bisect_right()相同
bisect.bisect_right()//返回右端index
bisect with list
在一个increasing array插入一个元素并仍保持有序
def list_insert(arr,num):
ind = bisect.bisect_left(arr,num)
arr.insert(ind,num)
a = [0,1,2,2,2,3,4]
list_insert(a,2.1)
[Sum Tree]
概念
Sum Tree 线段树,结构是二叉树,父节点是子节点的和,且只有度为0和2的情况。
可以认为叶结点表示一个相连的区间,每个叶节点的数值表示该区间长度,此时可以轻易找到任意值的对应区间的叶节点
Basic Replay Buffer
- 记录新加入的transition→存储在list中
- 忘记太久之前的transition→用deque数据自动遗忘,也可以覆盖list中已存在的transition
- 从存储的记忆中抽样→用random.sample()抽样
Proportion-based Replay Buffer
Sum Tree用于记录和更新cumulative weight以进行快速采样,时间复杂度为O(logn)新功能:
- 一个Sum Tree储存和更新每个transition的weight
- 更新Sum Tree的方法
Rank-based Repley buffer
需要知道每个transition的td_error的rank1以调整weight,基于该rank需要计算和储存分割点,从而进行抽样,复杂度为o(n),新功能:
- 1.对于所有transition TD_error及对应rank的存储
- 2.更新rank的方法
由于训练过程中有大量TDerror变更,以及新加入的transition,快速更新rank需要一直维持记录一个排好序的所有TD-error的序列,这样才能在o(logn)的时间内确定rank,否则每个新样本加入时更新rank都需要O(n)的时间
快速抽样的方法是在有序TD-error的序列上抽样在对应到具体的transition,此处有俩种存储方式
- 将transition与TD-error一起储存在tuple中
- 将transition储存在list中,将其index和TD-error一起存储到tuple中
第一钟方式缺点:当我们删除transition时,会需要O(n)时间寻找应该删除的rank和TD-error。选择第二种存储方式,locate时间复杂度为o(1),具体如下
- 与之前的方式类似,建立一个list存储transition
- 建立另一个list存储transition对应rank
- 建立第三个list储存TD-error,transition index的tuple
删改操作时间复杂度O(n)
-
gnn meets rl
https://github.com/knowledgedefinednetworking/DRL-GNN/blob/master/DQN/README.md
-
sp
OSPF:OSPF 即开路最短路径优先,依据该规则,网络会把数据流转发在长度最短的路径上,
由于没有考虑链路的传输能力,个别链路容易陷入拥塞。
MCFCSP:多物网络流流约束最短路径方案将链路的传输能力作为约束条件,在保证网络不出现
拥塞的条件下传输数据流。
KSP:k 路最短路径方案会在两节点对间选择前 k 条最短的路径作为路由路径对数据流完成转发操作。
多路径路由(ECMP)**:**在多个传输路径上均匀地分配流量
-
rsir
-
牵引控制
DRL算法分类:基于下一跳控制的 DRL 路由方案、基于逐个数据流路径调整的 DRL 路由方案和基于全网链路权重调整的路由方案
通过分析网络拓扑特征,结合牵引控制理论,选取部分链路作为代表链路,DRL对代表链路生成控制信号,结合网络路由算法扩展到全网路由。
优点:避免输出动作空间过大,解决DRL维度灾难问题,策略更加健壮
牵引链路选取:由于牵引控制理论目前尚未对复杂网络的具体牵引控制元素选择做出选择,设计启发式算法选取牵引节点
-
在线路由策略部署阶段主要分为 3 个环节:
-
网络信息收集
OpenFlow端口数据量统计字段结合采集间隔,近似计算相应端口的数据吞吐量,形成牵引链路的流量视图,作为DRL 神经网络的输入参数
-
智能策略生成:每个输出层对应于一个牵引链路的权重
-
策略执行
默认将所有链路权重设置为 1,用DRL输出更新相应链路权重,通过 Floyd-Warshall 算法计算路由。
-
DRL算法: TD3
state为网络中链路的吞吐量信息
action对应于牵引链路的权重
reward综合考虑路由策略在平均时延、负载均衡和抖动等
-
-
Scalable DRL
中心性的概念类似于描述一个顶点与其他顶点的关系的图中的度的概念,该链路与其他链路共享更多的转发路径,即具有较高的中心性。
在ScaleDRL中,我们根据每个链路的中心性来选择关键链路。根据所有链路的中心性值按降序排序,并从排序的链路列表中选择中间的k个链路作为关键链路。
-
DRL:ACKTR
行为网络以网络状态作为输入,其输出作为动作a
批评网络以网络状态和临时动作a作为输入,对临时策略生成评价值。奖励r用于更新批评者网络。
状态:每个链路上的流量强度分布
动作:a^|L|·d,表示关键链接的数量,其中|L|表示关键链接的数量,d表示每个流的候选路径数。
奖励:使用平均端到端延迟作为评估TE策略的度量标准。
-
-
Scalable Routing
优点:提高路由性能和对拓扑变化的弹性。
ScaleDeep将网络的节点分为两类:驱动节点和跟随节点。驱动节点是可以模拟网络运行的关键节点,采用钉扎控制理论进行选择,其余节点为跟随节点。
通过从驱动节点轮询网络信息,DRL代理可以有一个近似的网络全局视图。调整驱动节点的链路权值,以动态更新路由策略。
驱动节点选择的启发式算法:以不同的选择概率分配不同程度的节点,然后根据选择概率选择驱动节点。根据节点的程度分配(分类?)不同概率的节点,然后根据其概率选择驱动节点。
DRL:ddpg
DRL框架使用了两种类型的神经网络:门控递归单元(GRU)和前馈神经网络。GRU是一种先进的递归神经网络(RNN),善于从输入数据中提取与时间相关的信息。
状态:状态是网络状态信息表示的吞吐量矩阵大小t×n,其中t表示时间步长的长度,d表示流类型的数量,和n表示总数的交通强度
奖励r:网络中所有流的平均流完成时间
-
基于深度强化学习的软件定义网络 QoS 优化
优点:保证了端到端传输时延和分组丢失率,而且提高了 22.7%的网络负载均衡程度,增加了 8.2%的网络吞吐率。
解决:基于启发式算法的 QoS 优化方案因参数与网络场景不匹配出现性能下降的问题
方案:首先将网络资源和状态信息统一到网络模型中,然后通过长短期记忆网络提升算法的流量感知能力,最后基于深度强化学习生成满足 QoS 目标的动态流量调度策略。
状态:某一次网络测量时网络中的流请求信息和所有链路的时延和利用率信息
动作:各节点对之间可用转发路径的分流比重
奖赏:优化目标是最小化网络使用率U。r=-U。
LSTM 网络负责对网络状态信息 s 进行预处理生成隐含状态 h,并将该隐含状态传输给 Actor 和 Critic 架构中的神经网络,提高神经网络的决策的效率和准确性;Actor 和 Critic 架构中的神经网络依据LSTM网络提供的网络状态数据生成动作,并更新内部网络参数。