five

QGym

收藏
arXiv2024-10-09 更新2024-10-11 收录
下载链接:
https://github.com/namkoong-lab/QGym
下载链接
链接失效反馈
官方服务:
资源简介:
QGym是一个用于可扩展开发和基准测试排队网络控制器的开源框架,由哥伦比亚大学开发。该数据集包含多种现实环境下的排队系统实例,如并行服务器、交叉、串联和重入网络,以及经过校准的医院排队系统。QGym通过事件驱动模拟器和广泛的排队策略基准测试,旨在解决资源分配和拥堵管理问题。数据集的创建过程结合了经典排队理论和强化学习方法,适用于制造、通信和医疗等多个领域。

QGym is an open-source framework developed by Columbia University for scalable development and benchmarking of queuing network controllers. This dataset encompasses a diverse range of real-world queuing system instances, including parallel server systems, crossbar networks, tandem queues, and reentrant networks, alongside calibrated hospital queuing systems. Built upon event-driven simulators and a comprehensive benchmark suite of queuing policies, QGym is designed to tackle resource allocation and congestion management challenges. The dataset is developed by integrating classical queuing theory and reinforcement learning methodologies, and is applicable across multiple domains such as manufacturing, telecommunications, and healthcare.
提供机构:
哥伦比亚大学
创建时间:
2024-10-09
原始信息汇总

QGym: Scalable Simulation and Benchmarking of Queuing Network Controllers

概述

QGym是一个开源的仿真框架,旨在通过多样化和现实的问题实例来基准化排队策略。该框架支持多种环境,包括并行服务器、交叉、串联和重入网络。它提供了一个平台,用于比较无模型强化学习方法和经典排队策略。

亮点

  • OpenAI Gym接口:易于部署强化学习算法。
  • 事件驱动仿真:精确的时间记录和快速仿真。
  • 作业级跟踪:允许建模并行服务器系统。
  • 任意到达模式:模拟时间变化的到达模式。
  • 服务器池:快速仿真大量同类服务器。
  • 批量仿真:高效并行仿真多个轨迹。
  • 开源:可适应自定义需求。

文件结构

  • main
    • run_experiments.py:运行配置在configs/experiments中的批量实验。
    • trainer.py:定义Trainer类,包含训练和评估模型的方法。
    • env.py:带有OpenAI Gym接口的仿真器代码。
  • configs
    • experiments:每个目录包含一个或多个YAML文件,每个文件配置一个实验。
    • env:包含指定排队网络的YAML文件。
    • model:包含指定排队策略的YAML文件。
    • scripts:包含定义到达和服务模式的Python文件。
  • logs:包含实验的损失和切换日志。
  • policies:包含排队策略的实现。
  • utils:包含路由和绘图的实用函数。
  • RL:包含用于基准测试的PPO及其变体基线。
    • policies:包含各种PPO策略,如WC和Vanilla。
    • PPO:包含PPO算法的实现。
      • trainer.py:PPO训练器。
      • train.py:启动PPO实验的主脚本。
    • utils
      • rl_env.py:使排队环境兼容强化学习算法的包装器。
      • eval.py:强化学习模型的评估实用程序。
    • policy_configs:包含不同强化学习策略的YAML配置文件。

作为OpenAI Gym环境使用

用户可以使用main/env.py中的DiffDiscreteEventSystem类编写自定义实验代码,将其作为OpenAI Gym环境使用。用户可以通过resetstep方法与该环境交互。

用法

创建DiffDiscreteEventSystem实例并使用reset()方法初始化环境,使用step(action)方法模拟系统随时间的变化。

API参考

参数

  • network (torch.Tensor):网络拓扑。
  • mu (torch.Tensor):每个服务器的服务率。
  • h (float):队列中作业的单位时间持有成本。
  • draw_service (callable):绘制队列中作业服务时间的函数。
  • draw_inter_arrivals (callable):绘制每个队列的到达间隔时间的函数。
  • init_time (float, optional):初始仿真时间,默认为0。
  • batch (int, optional):并行仿真的批量大小,默认为1。
  • queue_event_options (torch.Tensor, optional):自定义队列事件选项。
  • straight_through_min (bool, optional):使用直通估计器进行最小操作,默认为False。
  • queue_lim (int, optional):最大队列长度。
  • temp (float, optional):Gumbel-Softmax的温度,默认为1。
  • seed (int, optional):随机种子,默认为3003。
  • device (str, optional):运行计算的设备,默认为"cpu"。
  • f_hook (bool, optional):启用调试钩子,默认为False。
  • f_verbose (bool, optional):启用详细输出,默认为False。

方法

  • reset(init_queues=None, time=None, seed=None):重置环境到初始状态。
  • step(action):根据动作执行一步仿真。
  • get_observation():获取系统状态的当前观察。
  • print_state():打印系统的当前状态。

运行实验

main目录中,运行run_experiments.py脚本,使用-exp_dir参数设置包含所需实验YAML文件的子目录名称。

定义实验

实验使用位于configs/experiments目录中的YAML文件进行配置。每个实验有自己的子目录,包含一个或多个指定环境、模型和脚本的YAML文件。

定义排队网络

排队网络的参数在configs/env目录下的文件中定义。每个YAML文件包含以下键:

  • network:定义网络拓扑。
  • mu:定义到达率。
  • lam_params:定义到达参数。
  • server_pool_size:定义服务器池大小。
  • h:定义每个队列的持有成本。
  • queue_event_options:定义每个到达或服务事件的队列变化。
  • train_T, test_T:每个仿真轨迹的步数。
  • init_queues:初始队列长度。

定义到达和服务模式

到达和服务模式在configs/scripts目录中定义。定义一个返回每个队列的下一个到达或服务时间的任意时间函数。

定义排队策略

使用policies/<policy>.py文件定义策略的逻辑。每个策略文件包含一个实现策略的类。该类在configs/scripts/<script>.py中使用。

定义训练/测试超参数

排队策略的参数在configs/model目录下的文件中定义。每个YAML文件包含以下重要超参数:

  • test_batch_size:测试集的批量大小。
  • num_epochs:训练策略的轮数。
  • test_policy, train_policy:分配算法,支持linear_assignmentsinkhornsoftmax

运行强化学习训练和评估

提供代码库来训练和评估多个强化学习基线。在RL/PPO目录中运行以下命令: bash python train.py <policy-config-name> <queue-env-name>

基准测试结果

Criss-cross

Network $cmu$ MW MP FP PPO PPO BC PPO WC
Criss Cross BH $16.1 pm 0.0$ $mathbf{15.3 pm 0.0}$ $8.3 ext{E+}3 pm 0.0$ $29.3 pm 0.0$ $8.6 ext{E+}3 pm 4.6$ $24.0 pm 0.2$ $mathbf{15.4 pm 0.2}$

Reentrant-1 [Exponential]

$L$ $cmu$ MW MP FP PPO PPO BC PPO WC
2 $19.0 pm 0.0$ $14.8 pm 0.0$ $18.9 pm 0.0$ $1.0 ext{E+}3 pm 0.0$ $1.8 ext{E+}3 pm 6.6$ $25.1 pm 0.6$ $mathbf{13.6 pm 0.4}$
3 $mathbf{21.6 pm 0.0}$ $24.8 pm 0.0$ $30.9 pm 0.0$ $8.1 ext{E+}3 pm 0.0$ $1.0 ext{E+}4 pm 21.6$ $48.2 pm 0.5$ $22.6 pm 0.4$
4 $30.1 pm 0.0$ $32.1 pm 0.0$ $40.3 pm 0.0$ $4.3 ext{E+}3 pm 0.0$ $1.8 ext{E+}4 pm 41.7$ $183.4 pm 5.2$ $mathbf{29.7 pm 0.4}$
5 $51.3 pm 0.0$ $50.0 pm 0.0$ $52.2 pm 0.0$ $9.8 ext{E+}3 pm 0.0$ $2.7 ext{E+}4 pm 84.4$ $135.2 pm 3.1$ $mathbf{38.7 pm 0.4}$
6 $54.7 pm 0.0$ $49.2 pm 0.0$ $59.1 pm 0.0$ $1.2 ext{E+}4 pm 0.0$ $5.9 ext{E+}4 pm 315.3$ $358.0 pm 9.7$ $mathbf{4.85 pm 0.5}$
7 $56.4 pm 0.0$ $mathbf{54.4 pm 0.0}$ $70.5 pm 0.0$ $2.9 ext{E+}4 pm 0.0$ $4.4 ext{E+}4 pm 208.1$ $526.6 pm 8.7$ $56.3 pm 8.2$
8 $mathbf{59.4 pm 0.0}$ $68.0 pm 0.0$ $81.4 pm 0.0$ $1.7 ext{E+}4 pm 0.0$ $5.9 ext{E+}4 pm 315.2$ $868.5 pm 6.0$ $65.8 pm 6.2$
9 $72.7 pm 0.0$ $mathbf{64.4 pm 0.0}$ $90.8 pm 0.0$ $5.3 ext{E+}4 pm 0.0$ $1.1 ext{E+}5 pm 2219.7$ $1304.5 pm 10.1$ $75.8 pm 0.7$
10 $87.7 pm 0.0$ $mathbf{80.1 pm 0.0}$ $100.5 pm 0.0$ $6.3 ext{E+}4 pm 0.0$ $1.6 ext{E+}5 pm 852.8$ $3809.1 pm 10.4$ $83.1 pm 0.7$

Reentrant-2 [Exponential]

Network $cmu$ MW MP FP PPO PPO BC PPO WC
2 $26.01 pm 0.00$ $17.45 pm 0.00$ $2.49 ext{E+}4 pm 0.00$ $mathbf{1.76 pm 0.00}$ $9.04 ext{E+}3 pm 41.13$ $30.62 pm 0.37$ $13.72 pm 0.22$
3 $26.27 pm 0.00$ $26.65 pm 0.00$ $4.00 ext{E+}4 pm 0.00$ $2.12 ext{E+}3 pm 0.00$ $1.82 ext{E+}4 pm 37.23$ $48.59 pm 0.56$ $mathbf{22.09 pm 0.29}$
4 $27.62 pm 0.00$ $34.10 pm 0.00$ $3.99 ext{E+}4 pm 0.00$ $5.54 ext{E+}3 pm 0.00$ $1.77 ext{E+}4 pm 52.30$ $79.20 pm 1.06$ $mathbf{29.90 pm 0.47}$
5 $44.82 pm 0.00$ $40.34 pm 0.00$ $4.99 ext{E+}4 pm 0.00$ $9.72 ext{E+}3 pm 0.00$ $2.58 ext{E+}4 pm 63.54$ $91.65 pm 1.37$ $mathbf{38.01 pm 0.52}$
6 $mathbf{54.48 pm 0.00}$ $46.63 pm 0.00$ $1.00 ext{E+}5 pm 0.00$ $1.65 ext{E+}4 pm 0.00$ $4.02 ext{E+}4 pm 349.64$ $526.57 pm 8.74$ $46.80 pm 0.47$
7 $70.25 pm 0.00$ $77.93 pm 0.00$ $9.98 ext{E+}4 pm 0.00$ $1.39 ext{E+}4 pm 0.00$ $5.78 ext{E+}4 pm 116.92$ $352.02 pm 6.68$ $mathbf{55.51 pm 0.57}$
8 $70.32 pm 0.00$ $72.96 pm 0.00$ $1.00 ext{E+}5 pm 0.00$ $2.73 ext{E+}4 pm 0.00$ $4.79 ext{E+}4 pm 208.70$ $1332.68 pm 7.82$ $mathbf{63.15 pm 0.70}$
9 $mathbf{65.80 pm 0.00}$ $77.34 pm 0.00$ $1.00 ext{E+}5 pm 0.00$ $6.53 ext{E+}4 pm 0.00$ $6.54 ext{E+}4 pm 491.49$ $1574.86 pm 9.34$ $70.30 pm 0.86$
10 $81.35 pm 0.00$ $mathbf{82.00 pm 0.00}$ $1.50 ext{E+}5 pm 0.00$ $9.36 ext{E+}4 pm 0.00$ $8.11 ext{E+}4 pm 355.34$ $1876.54 pm 89.20$ $80.36 pm 0.79$

Reentrant-1 [Hyperexponential]

| L

搜集汇总
数据集介绍
main_image_url
构建方式
QGym数据集通过一个开放源代码的排队网络模拟框架构建,该框架旨在为排队网络控制器提供可扩展的模拟和基准测试。该框架允许研究人员在其初始实例基础上构建,提供了包括并行服务器、交叉、串联和再入网络等多种环境,以及一个经过现实校准的医院排队系统。QGym框架通过模块化设计,使得研究人员能够轻松比较多种策略,包括无模型强化学习方法和经典排队策略。
使用方法
QGym数据集的使用方法包括定义新的排队系统或使用现有的基准系统,定义一个策略来接收观察结果并输出排队优先级预测,以及使用选定的策略模拟排队系统轨迹。用户可以通过.yaml文件和.py文件来定义排队系统的各个元素,并通过OpenAI Gym接口轻松部署和测试各种强化学习算法。
背景与挑战
背景概述
QGym数据集由哥伦比亚大学的研究团队开发,旨在解决排队网络控制中的资源分配问题。该数据集的核心研究问题是如何在制造业、通信和医疗等领域中有效管理稀缺资源以应对拥堵。QGym通过提供一个开源的排队模拟框架,使得研究人员能够在现实问题实例中对排队策略进行基准测试。该框架允许研究人员在其初始实例基础上构建,涵盖了并行服务器、交叉、串联和再入网络等多种环境,并包括一个经过现实校准的医院排队系统。QGym的发布时间可追溯至2024年,由Haozhe Chen、Ang Li等研究人员主导,其代码已在GitHub上公开。
当前挑战
QGym数据集面临的挑战主要集中在排队网络控制领域的独特问题上。首先,排队系统在连续时间内运行,具有高度的随机性和长时间的不稳定性(延迟爆炸)。其次,构建过程中遇到的挑战包括如何处理非平稳的工作负载和复杂的网络结构,如半导体制造中的多阶段处理和通信网络中的多服务器类型。此外,现有的强化学习算法在处理这些高随机性和长时间不稳定性的环境中表现出不稳定性和显著的随机噪声。QGym通过提供一个灵活的模拟框架来应对这些挑战,但仍需进一步的方法创新以提升算法的稳定性和效率。
常用场景
经典使用场景
QGym数据集的经典使用场景在于其为排队网络控制算法提供了一个可扩展的仿真和基准测试平台。该数据集特别适用于研究制造、通信和医疗保健等领域中的资源分配和拥堵管理问题。通过QGym,研究人员可以构建和测试各种排队策略,包括无模型强化学习方法和经典的排队策略,从而推动解决排队网络中连续时间操作、高随机性和长时间不稳定性的独特挑战。
解决学术问题
QGym数据集解决了排队网络控制中的多个学术研究问题,特别是在处理连续时间系统、高随机性和长时间不稳定性的挑战方面。它提供了一个模块化的框架,允许研究人员在现实问题实例中基准测试排队策略,从而弥补了传统上基于理想化设置的算法评估与实际应用之间的差距。此外,QGym的开放源代码特性促进了方法论的进步,并为排队网络控制领域的研究提供了新的视角和工具。
实际应用
QGym数据集在实际应用中具有广泛的前景,特别是在需要动态资源分配和拥堵管理的行业中,如半导体制造、通信网络、云计算设施、呼叫中心、医疗保健系统和共享出行平台。通过提供一个灵活的排队仿真框架,QGym使得企业能够测试和优化其资源分配策略,从而提高服务质量和效率,减少处理延迟和平衡工作负载。
数据集最近研究
最新研究方向
在排队网络控制领域,QGym数据集的最新研究方向主要集中在利用强化学习(RL)技术来优化资源分配,以应对制造、通信和医疗等行业中的拥堵问题。传统的排队网络控制方法虽然在理论上有良好的性能保证,但在处理复杂网络和非平稳工作负载时显得力不从心。因此,研究者们正致力于开发基于数据驱动的RL方法,这些方法能够更好地适应现实环境中复杂的排队网络结构和动态变化的工作负载。QGym框架通过提供一个开放的排队模拟平台,使得研究人员能够在一个统一的基准上比较不同的策略,包括传统的排队策略和RL算法,从而推动了这一领域的方法论进步。
相关研究论文
  • 1
    QGym: Scalable Simulation and Benchmarking of Queuing Network Controllers哥伦比亚大学 · 2024年
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作