项目简介
本项目是一个基于深度强化学习(DRL)的实时流量工程(TE)解决方案,名为ENERO。它用于动态网络拓扑中的高效路由配置,采用两阶段优化过程。第一阶段使用深度强化学习生成长期TE策略,第二阶段利用局部搜索算法改进DRL的解,且不增加优化过程的计算开销。该项目能在4.5秒内平均处理高达100个链路的动态网络拓扑,实现实时性能。
项目的主要特性和功能
- 实时性能:可在4.5秒内处理高达100个链路的动态网络拓扑,满足实时要求。
- 深度强化学习应用:采用PPO算法训练DRL代理,学习源 - 目标节点间的最佳路由配置。
- 图神经网络集成:集成图神经网络以处理动态网络场景,如链路故障。
- 局部搜索算法:第二阶段使用局部搜索算法改进DRL的解,提升性能且不增加计算开销。
安装使用步骤
环境准备
- 创建虚拟环境并激活:
bash virtualenv -p python3 myenv source myenv/bin/activate
- 安装所有必要的Python包:
bash pip install -r requirements.txt
- 注册自定义gym环境:
bash pip install -e gym-graph/
数据准备
- 下载并解压数据集,放置在Enero代码目录之外。
- 进入解压后的
Enero_datasets
目录并解压所有内容。
图生成
使用generate_link_failure_topologies.py
脚本生成具有链路故障的新拓扑:
bash
python3 generate_link_failure_topologies.py -d results-1-link_capacity-unif-05-1 -topology Garr199905 -num_topologies 1 -link_failures 1
评估与训练
- 评估模型:
bash python eval_on_single_topology.py -max_edge 100 -min_edge 5 -max_nodes 30 -min_nodes 1 -n 2 -f1 results_single_top -f2 NEW_Garr199905/EVALUATE -d ./Logs/expSP_3top_15_B_NEWLogs.txt
- 训练DRL代理:
bash python train_Enero_3top.py
数据可视化
生成图表:
bash
python figures_5_and_6.py -d SP_3top_15_B_NEW
python figure_7.py -d SP_3top_15_B_NEW -p ../Enero_datasets/dataset_sing_top/data/results_single_top/evalRes_NEW_Garr199905/EVALUATE/ -t Garr199905
python figure_8.py -d SP_3top_15_B_NEW -num_topologies 20 -f ../Enero_datasets/dataset_sing_top/LinkFailure/rwds-LinkFailure_Garr199905
python figure_9.py -d SP_3top_15_B_NEW -p ../Enero_datasets/rwds-results-1-link_capacity-unif-05-1-zoo
注意:该项目的执行依赖于特定的Python库和文件结构,建议在Linux环境下运行。此外,对于代码的详细解读和更多信息,建议查阅项目相关的论文和文档。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】