1.一种面向SDN网络基于Q学习的节能路由方法,其特征在于:该方法包括以下步骤:S1:读取当前时刻待处理的网络流,按起始节点s,目的节点d不同划分成不同任务存入任务队列T,T长度记为L,L>0,设置迭代次数N;
S2:判断L是否为0,是则跳转步骤S5,否则从队列头取出一个任务E(s,d,q,c);q代表流量需求;
S3:根据E的目的结点d选择对应的Q表,根据该任务的当前位置节点c,在Q表中找到对应的最大Q值节点作为下一跳节点i;
S4:根据下一跳位置i和当前网络状态An,得到不同的奖励值,依此更新Q表;
S41:下一跳位置是目的节点,i=d,任务完成,下一个队列长度L’=上一个队列长度L‑
1,并将任务E从任务队列T中移出队列,返回奖励r=ra;
S42:下一跳为不可达结点,则将T初始化,c=s,并将任务E置于任务队列T末端,返回奖励r=rb;
S43:下一跳在当前网络G内却是未开启结点时,即对比当前网络状态An和初始网络状态A0,i行i列所有值相等,则置c=i,返回奖励r=rc;
S44:下一跳节点开启,但当前位置和下一跳的连接未启用时,即An=A0,置c=i,返回奖励r=rd;ra>0>rb>rc>rd;
用Bellman方程更新Q值:
NewQ(s,a)=Q(s,a)+α[r+γmaxa′Q(s′,a′)‑Q(s,a)]其中α为学习率,γ为奖励性衰变系数;
随机打乱任务队列,跳转执行S2;
S5:队列T中所有任务完成后,下一个迭代次数N’=上一个迭代次数N‑1,判断N’是否为
0,是则训练完成,否则重置任务队列T和网络状态An,并跳转执行S2;
S6:获取网络流信息,存入任务队列,创建链表数组R记录结果;
S7:依次从队列头取出任务,根据目的节点不同,查找对应Q表,得到下一跳位置,若可达则修改当前任务状态和网络状态An,将任务挂到队列末端,向R中添加记录;若不可达,重置任务后置于队列末端;
S8:重复执行S7直到所有队列中所有任务都被完成得到路由策略结果R以及最终网络状态Af,与初始网络状态A0对比,进行网络节点和链路开关闭策略调整。