DL-DRL: A double-level deep reinforcement learning approach for large-scale task scheduling论文阅读

DL-DRL: A double-level deep reinforcement learning approach for large-scale task scheduling of multi-UAV论文阅读。

为了降低大规模多无人机任务调度问题的计算复杂度,本文提出了一种基于分治框架(DCF)的方法,将原问题分解为任务分配子问题和无人机路径规划子问题。
分治框架通过将复杂问题分解为多个相对简单的子问题,在上层,设计了一个任务分配DRL模型,任务被分配给上层的不同无人机,为每个给定的任务选择合适的无人机。在下层,设计了一个路线规划DRL模型,为每架无人机构建路线,目标是在无人机的最大飞行距离下,最大限度地执行任务数量。两个模型相互交互,上层模型将分配的任务作为输入传递给下层模型,而上层模型的奖励则依赖于下层模型的输出。
在这里插入图片描述
初始场景(Initial Scenario):
图片左上角展示了初始场景,包括多个任务(Task)和一个仓库(Depot)。任务以蓝色圆圈表示,仓库以红色三角形表示。
上层模型(Upper Level):
上层模型负责任务分配(Task Allocation),即决定哪些任务由哪些无人机执行。
该模型是一个深度强化学习(DRL)模型,用于将任务分配给不同的无人机。
在图片中,上层模型将任务分配给不同的无人机(黄色、绿色和蓝色圆圈),形成不同的任务子集(Task subset)。
下层模型(Lower Level):
下层模型负责路径规划(Route Planning),即规划每架无人机执行其分配任务的具体路径。
该模型也是一个深度强化学习(DRL)模型,用于构建每架无人机的飞行路线,以最大化执行任务的数量。
在图片中,下层模型为每架无人机规划了不同的路线(Route 1、Route 2 和 Route 3),每条路线连接了无人机需要执行的任务和仓库。
DL-DRL方法:
整个框架构成了

柔性作业车间调度问题(Flexible Job Shop Scheduling Problem, FJSSP)是制造业中一类典型的复杂调度问题,其核心挑战在于如何在有限的资源条件下,合理安排工序的加工顺序,以最小化完工时间(makespan)、提升生产效率。随着调度问题复杂性的增加,传统的调度方法(如启发式算法、规则调度)逐渐难以满足现代制造系统对实时性与优化能力的需求。近年来,深度强化学习(Deep Reinforcement Learning, DRL)因其在处理高维状态空间和复杂决策过程中的优势,成为求解FJSSP的前沿方法之一,尤其是在多动作空间的建模方面,展现了较强的适应性和灵活性。 多动作深度强化学习(Multi-Action Deep Reinforcement Learning)通过在状态空间中定义多个动作维度,使得智能体能够同时对多个决策变量进行建模与优化。例如,在柔性作业车间调度中,每道工序不仅需要选择合适的机器,还需要考虑资源分配(如工人、工具等)、优先级排序等多个决策因素。传统强化学习方法通常将这些决策变量串行化处理,导致决策过程割裂,难以捕捉变量之间的协同关系。而多动作DRL通过设计多维动作空间,使得智能体能够在同一决策步中综合考虑多个调度变量,从而提升调度策略的全局优化能力[^2]。 在实际应用中,多动作DRL框架通常采用Actor-Critic架构,其中Actor网络输出多个动作维度的概率分布,Critic网络评估当前状态的价值,从而指导策略更新。例如,在双资源柔性作业车间调度问题(DRFJSSP)中,每道工序需要同时分配机床和工人两种资源[^1]。此时,智能体的动作空间可以被设计为两个独立但相关的子空间:一个用于选择机床,另一个用于选择工人。通过将这两个动作维度联合建模,系统能够更好地捕捉资源之间的耦合关系,并在探索与利用之间取得平衡。 此外,多动作DRL在柔性作业车间调度问题中的另一个关键优势在于其对复杂约束的建模能力。例如,某些工序可能仅能在特定的机器上加工,或者某些工人只能操作特定类型的设备。这些问题可以通过设计带有掩码(mask)机制的动作空间来解决,即在每一步决策中,智能体仅能选择当前状态允许的动作。这种机制不仅提高了算法的鲁棒性,也增强了其在实际生产环境中的可部署性。 在训练过程中,多动作DRL通常需要设计合理的状态表示、动作构造和奖励函数。状态表示应包含机器状态、工序状态、资源占用情况等关键信息,例如: $$ \mathbf{s} = \left\{E^t, \frac{D^t}{D^0}, \frac{V^t}{V^0}, \frac{U^t}{U^0}, \frac{t}{N_C}\right\}^T $$ 其中,$E^t$ 表示当前能量消耗,$D^t/D^0$ 表示当前延迟与初始延迟的比值,$V^t/V^0$ 和 $U^t/U^0$ 分别表示资源使用效率和利用率的变化比例,$t/N_C$ 表示当前调度步占总调度步数的比例。这种状态表示方式能够有效捕捉调度过程中的动态变化[^4]。 奖励函数的设计则需结合调度目标,如最小化完工时间、最大化资源利用率或最小化能耗。通常采用负的完工时间作为奖励信号,以引导智能体优化整体调度性能。 ### 示例代码:多动作DRL调度模型简化实现(使用PyTorch) ```python import torch import torch.nn as nn import torch.optim as optim class MultiActionDQN(nn.Module): def __init__(self, state_dim, machine_action_dim, worker_action_dim): super(MultiActionDQN, self).__init__() self.shared_layer = nn.Sequential( nn.Linear(state_dim, 128), nn.ReLU(), nn.Linear(128, 128), nn.ReLU() ) self.machine_head = nn.Linear(128, machine_action_dim) self.worker_head = nn.Linear(128, worker_action_dim) def forward(self, x): shared = self.shared_layer(x) machine_logits = self.machine_head(shared) worker_logits = self.worker_head(shared) return machine_logits, worker_logits # 示例使用 state_dim = 10 # 状态空间维度 machine_actions = 5 # 可选机器数量 worker_actions = 3 # 可用工人数量 model = MultiActionDQN(state_dim, machine_actions, worker_actions) optimizer = optim.Adam(model.parameters(), lr=0.001) # 模拟输入状态 state = torch.randn(1, state_dim) machine_logits, worker_logits = model(state) print("Machine logits:", machine_logits) print("Worker logits:", worker_logits) ``` 该示例展示了一个多动作DRL模型的基本结构,其中共享层提取状态特征,两个独立的输出头分别预测机器和工人动作的选择概率。在训练过程中,可以结合策略梯度方法或Q-learning方法对两个动作空间进行联合优化。 ### 挑战与未来方向 尽管多动作DRL在柔性作业车间调度中展现出良好前景,但仍面临若干挑战。例如,动作空间的高维性可能导致训练效率下降,如何设计高效的探索策略成为关键。此外,现实生产环境中存在大量不确定因素(如设备故障、订单变更等),如何增强模型的鲁棒性和泛化能力也是未来研究的重要方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值