- 1、本文档共83页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上述两种情况均考虑的极端情况,如果不能满足只能增大加工完成时间,因此有 取两者的最大值加上M作业集在机器2上的加工完成时间和,可以作为所有作业在机器2 上完成处理的时间和的下界 ,用它来作为分支限界法中的限界函数,实现对不满足条件的剪枝,从而减少计算量 。 2. 限界函数 在结点E处相应子树中叶结点完成时间和的下界是: 注意到如果选择Pk,使t1pk在k=r+1时依非减序排列,S1则取得极小值。同理如果选择Pk使t2pk依非减序排列,则S2取得极小值。 这可以作为优先队列式分支限界法中的限界函数。 类型 标识符 作用 位置 类 HeapNode 堆结点 类 BBFlow 分支限界法解作业批处理 方法 sort 对各作业在机器1(j=0)、j机器2(j=1)上所需时间升序排序 BBFlow 方法 bound 计算完成时间和下界 BBFlow 方法 bbFlow 计算最优调度的时间和 BBFlow 数组 m[ ][ ] 各作业加工需求时间 BBFlow 数组 b[ ][ ] 各作业处理时间升序排序 BBFlow 数组 a[ ][ ] 数组m 和b 的对应关系 BBFlow 数组 bestx[ ] 最优解 BBFlow 数组 y[ ][ ] 用于区别作业是否已处理 BBFlow 变量 enode 堆结点的实例 bbFlow 方法 swap(x,s,i) 实现x[i] 元素与x[s]位置交换 bbFlow 方法 swap(b,k,j,k-1,j) 实现二维数组的元素交换,体现方法的多态性 sort 主要标识符及其作用 算法中用一个最小堆来表示活结点优先队列。最小堆中元素类型是HeapNode。每一个HeapNode类型的结点包含域x,用来表示结点所对应的作业调度。 S 表示该结点已安排的作业是x[1:s]。 f1 表示当前已安排的作业在机器1上的最后完成时间; f2 表示当前已安排的作业在机器2 上的最后完成时间;sf2 表示当前已安排的作业在机器2上的完成时间; bb 表示当前完成时间和的下界。 3. 算法描述 算法的while循环完成对排列树内部结点的有序扩展。在while循环体内算法依次从活结点优先队列中取出具有最小bb值(完成时间和下界)的结点作为当前扩展结点,并加以扩展。算法当前扩展结点enode分为两种情形处理。 首先考虑enode.s=n的情形,此时已排定n个作业,当前扩展结点enode是排列树中的叶结点。enode.x表示相应于叶结点的作业调度。 enode.sf2是相应于该叶结点的完成时间和。当enode.sf2 bestc时更新当前最优值bestc和相应的当前最优解bestx。 当enode.sn时,算法依次产生当前扩展结点enode的所有儿子结点。对于当前扩展结点的每一个儿子结点node,计算出其相应的完成时间和的下界bb。当bb bestc时,将该儿子结点插入到活结点优先队列中。而当bb? bestc时,以node 为根的子树中不可能有比当前最优解bestx 更好的解,故可将结点node舍去。 算法bbFlow是解批作业调度问题的优先队列式分支限界法的主体。算法开始时,将排列树的根结点置为当前扩展节点。在初始扩展结点处还没有选定的作业,故s=0,数组x初始化为单位排列。 分支限界法应用实例 M1 M2 J0 J1 J2 J3 J4 2 5 4 3 3 3 6 1 1 7 2、将m[][]拷贝到b[][],并设立指针c[i] 3、对b[i][0]和b[i][1]按非减序排序 b[0][0]=1 ; b[0][1]=1; b[1][0]=2 ; b[1][1]=2; b[2][0]=3 ; b[2][1]=3; b[3][0]=4 ; b[3][1]=5; b[4][0]=6 ; b[4][1]=7; 1、输入 m[0][0]=2 ; m[0][1]=5; m[1][0]=4 ; m[1][1]=2; m[2][0]=3 ; m[2][1]=3; m[3][0]=6 ; m[3][1]=1; m[4][0]=1 ; m[4][1]=7; C[i]的变化 C[0]=0 3 C[1]=1 1 C[2]=2 2 C[3]=3 0 C[4]=4 4 C[i]的变化 C[0]=0 4 C[1]=1 0 C[2]=2 2 C[3]=3 1 C[4]=4 3 机器1
文档评论(0)