0040算法笔记——【分支限界法】批处理作业调度问题

本文是关于如何使用优先级队列式分支限界法来解决批处理作业调度问题的算法笔记。通过建立解空间树,定义限界函数和算法描述,寻找最小完成时间和的作业调度方案。在算法中,使用最小堆表示活节点优先队列,并通过Bound函数计算完成时间和的下界,从而优化调度策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      问题描述

     给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。作业Ji需要机器j的处理时间为tji。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。所有作业在机器2上完成处理的时间和称为该作业调度的完成时间和。

     批处理作业调度问题要求对于给定的n个作业,制定最佳作业调度方案,使其完成时间和达到最小

      例:设n=3,考虑以下实例:


     这3个作业的6种可能的调度方案是1,2,3;1,3,2;2,1,3;2,3,1;3,1,2;3,2,1;它们所相应的完成时间和分别是19,18,20,21,19,19。易见,最佳调度方案是1,3,2,其完成时间和为18。

     限界函数

     批处理作业调度问题要从n个作业的所有排列中找出具有最小完成时间和的作业调度,所以如图,批处理作业调度问题的解空间是一颗排列树     

     在作业调度问相应的排列空间树中,每一个节点E都对应于一个已安排的作业集。以该节点为根的子树中所含叶节点的完成时间和可表示为:


     设|M|=r,且L是以节点E为根的子树中的叶节点,相应的作业调度为{pk,k=1,2,……n},其中pk是第k个安排的作业。如果从节点E到叶节点L的路上,每一个作业pk在机器1上完成处理后都能立即在机器2上开始处理,即从pr+1开始,机器1没有空闲时间,则对于该叶节点L有:

注:(n-k+1)t

分支限界法(Branch and Bound)是一种用于求解离散优化问题算法,它在整数规划和搜索问题中特别有效,包括某些类型的作业调度问题。在作业调度中,假设每个作业有一个开始时间和结束时间,目标可能是找到一种最优的作业安排,使得完成所有作业的时间最短或者满足特定的资源约束。 对于批处理作业调度问题,其中涉及到多个任务或作业,每个任务有一个执行时间和优先级。分支限界法可以应用于以下场景: 1. **任务排序**:决定哪些任务应该首先执行,然后根据剩余的任务调整策略,比如采用最早开始时间(EDF, Earliest Deadline First)或最迟结束时间(LDF, Latest Finish Time)策略。 2. **资源分配**:如果有共享资源,如何分配这些资源以最大化效率或最小化截止日期违反。 3. **动态规划**:通过构建决策树,将问题分解为子问题,并利用上一阶段的结果来指导当前阶段的选择。 分支限界法的工作流程大致如下: - **节点生成**:从初始状态开始,生成所有可能的子状态(即可能的作业执行顺序)。 - **剪枝**:评估每个节点的上界(upper bound)或下界(lower bound),如果当前节点的目标值肯定超过最优解,就直接舍弃。 - **分支**:选择具有最大潜力提升的子节点进行深入。 - **回溯**:当达到某个节点没有更好的解决方案时,回溯到父节点并尝试其他分支。 - **递归终止条件**:当找到满足目标条件的解或者搜索树被完全探索后,算法停止。 **相关问题--:** 1. 作业调度问题中的具体优化目标是什么? 2. 在批处理作业调度中,如何定义节点的剪枝条件? 3. 分支限界法如何处理优先级变化或资源限制对任务顺序的影响?
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值