littlebot
Published on 2025-04-03 / 2 Visits
0

【源码】基于深度强化学习框架的ENERO项目

项目简介

本项目是一个基于深度强化学习(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】