1 / 10

4.3 任务分配问题

4.3 任务分配问题. 例 4.3.1 有四个熟练工人,他们都是多面手,有四项任务要他们完成。若规定每人必须完成且只完成一项任务,而每人完成每项任务的工时耗费如表 4.6.1 ,问如何分配任务使完成四项任务的总工时耗费最少?. 任务分配问题的数学模型. 模型中: x ij 为第 i 个工人分配去做第 j 项任务; a ij 为第 i 个工人为完成第 j 项任务时的工时消耗; { a ij } m  m 称为 效率矩阵. 运输问题是任务分配问题的松弛问题 任务分配问题不但是整数规划,而且是 0  1 规划

Download Presentation

4.3 任务分配问题

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4.3 任务分配问题 例4.3.1 有四个熟练工人,他们都是多面手,有四项任务要他们完成。若规定每人必须完成且只完成一项任务,而每人完成每项任务的工时耗费如表4.6.1,问如何分配任务使完成四项任务的总工时耗费最少?

  2. 任务分配问题的数学模型 模型中:xij为第 i 个工人分配去做第 j项任务; aij为第 i个工人为完成第 j项任务时的工时消耗; {aij}mm称为效率矩阵 • 运输问题是任务分配问题的松弛问题 • 任务分配问题不但是整数规划,而且是01规划 • 任务分配问题有2m个约束条件,但有且只有m个非零解,是自然高度退化的 • 任务分配是两部图的匹配问题,有著名的匈牙利算法 • 下面介绍一种适合手算的算法(出自清华教科书)

  3. 4.3.1 清华算法 定理 1如果从效率矩阵{aij}mm中每行元素分别减去一个常数 ui,从每列元素分别减去一个常数 vj ,所得新的效率矩阵{bij}mm的任务分配问题的最优解等价于原问题的最优解。 证明:略 定理 2 若方阵中一部分元素为零,一部分元素非零,则覆盖方阵内所有零元素的最少直线数等于位于不同行、不同列的零元素的最多个数。 证明:略 清华算法的基本思路: • 根据定理 1变换效率矩阵,使矩阵中有足够多的零。若矩阵中存在 m个不同行不同列的零,就找到了最优解 • 若覆盖变换后的效率矩阵零元素的直线少于m 条,就尚未找到最优解,设法进一步变换矩阵,增加新的零

  4. 清华算法的步骤:例4.3.1 第一步:变换效率矩阵,使每行每列至少有一个零 • 行变换:找出每行最小元素,从该行各元素中减去之 • 列变换:找出每列最小元素,从该列各元素中减去之 • 第二步:检查覆盖所有零元素的直线是否为m条 • 划线规则 • 1、逐行检查,若该行只有一个未标记的零,对其加( )标记,将 ( )标记元素同行同列上其它的零打上*标记。若该行有二个以上未标记的零,暂不标记,转下一行检查,直到所有行检查完;

  5. 清华算法的步骤:例4.3.1 2、逐列检查,若该列只有一个未标记的零,对其加( )标记,将( )标记元素同行同列上其它的零打上*标记。若该列有二个以上未标记的零,暂不标记,转下一列检查,直到所有列检查完; • 3、重复1、2后,可能出现三种情况: • a.每行都有一个 (0),显然已找到最优解,令对应(0)位置的 xij=1; • b.仍有零元素未标记,此时,一定存在某些行和列同时有多个零,称为僵局状态,因为无法采用 1、 2中的方法继续标记。 • 4、打破僵局。令未标记零对应的同行同列上其它未标记零的个数为该零的指数,选指数最小的先标记 ( );采用这种方法直至所有零都被标记,或出现 情况 a,或 情况 c。

  6. 清华算法的步骤:例4.3.1 • c.所有零都已标记,但标有( )的零的个数少于m; • 开始划线过程: •  对没有标记 ( ) 的行打 • 对打 行上所有其它零元素对应的列打  •  再对打  列上有 ( ) 标记的零元素对应的行打  •  重复   ,直至无法继续 •  对没有打  的行划横线,对所有打  的列划垂线 • 划线后会出现两种情况: • (1)标记( )的零少于m个,但划有 m条直线,说明矩阵中已存在 m 个不同行不同列的零,但打破僵局时选择不合理,没能找到。回到 b重新标记; • (2)少于m条直线,到第三步;   

  7. 清华算法的步骤:例4.3.1 • 第三步:进一步变换; •  在未划线的元素中找最小者,设为  •  对未被直线覆盖的各元素减去  •  对两条直线交叉点覆盖的元素加上  •  只有一条直线覆盖的元素保持不变 • 以上步骤实际上仍是利用 定理 1 第四步:抹除所有标记,回到第二步,重新标记;

  8. 清华算法的步骤:例4.3.1 答:最优分配方案为 x13= x21= x34 = x42 =1,其余为0, 即甲C,乙A,丙D,丁B,OBJ=20

  9. 4.3.2 关于清华算法的适用条件 • 要求所有aij 0 • 若某些 aij <0,则利用定理 1 进行变换,使所有 bij  0 • 目标函数为min型 • 对于max型目标函数,将效率矩阵中所有 aij 反号,则等效于求min型问题;再利用定理 1 进行变换,使所有 bij  0,则可采用清华算法 打破僵局时选择不当的结果:  结果仅出现 3 个标记 ( ),但却划出 4 条线, 说明什么?!       

  10. 线性规划有关的英文词汇 • Operational/operations research 运筹学 • Linear programming 线性规划Feasible domain 可行域 • Convex set 凸集 Basic feasible solutions 基础可行解 • Simplex algorithm 单纯型法 Pivot 主元 Pivoting 主元变换 • Revised, dual simplex algorithm 修正、对偶单纯型法 • Relative cost 相对成本(机会成本) Shadow price 影子价格 • Slack, Surplus, Artificial variable 松弛,剩余,人工变量 • Unbounded, Infeasible, Degenerate solution 无界解, 无可行解, 退化解 • Duality 对偶性 Primal, dual problem 原问题,对偶问题 • Complementary slackness 互补松弛Sensitivity analysis 灵敏度分析 • Ttransportation problem 运输问题 • Assignment problem 任务分配(指派) 问题 • Bipartite matching 两部图匹配Hungarian method 匈牙利算法

More Related