100 likes | 356 Views
4.3 任务分配问题. 例 4.3.1 有四个熟练工人,他们都是多面手,有四项任务要他们完成。若规定每人必须完成且只完成一项任务,而每人完成每项任务的工时耗费如表 4.6.1 ,问如何分配任务使完成四项任务的总工时耗费最少?. 任务分配问题的数学模型. 模型中: x ij 为第 i 个工人分配去做第 j 项任务; a ij 为第 i 个工人为完成第 j 项任务时的工时消耗; { a ij } m m 称为 效率矩阵. 运输问题是任务分配问题的松弛问题 任务分配问题不但是整数规划,而且是 0 1 规划
E N D
4.3 任务分配问题 例4.3.1 有四个熟练工人,他们都是多面手,有四项任务要他们完成。若规定每人必须完成且只完成一项任务,而每人完成每项任务的工时耗费如表4.6.1,问如何分配任务使完成四项任务的总工时耗费最少?
任务分配问题的数学模型 模型中:xij为第 i 个工人分配去做第 j项任务; aij为第 i个工人为完成第 j项任务时的工时消耗; {aij}mm称为效率矩阵 • 运输问题是任务分配问题的松弛问题 • 任务分配问题不但是整数规划,而且是01规划 • 任务分配问题有2m个约束条件,但有且只有m个非零解,是自然高度退化的 • 任务分配是两部图的匹配问题,有著名的匈牙利算法 • 下面介绍一种适合手算的算法(出自清华教科书)
4.3.1 清华算法 定理 1如果从效率矩阵{aij}mm中每行元素分别减去一个常数 ui,从每列元素分别减去一个常数 vj ,所得新的效率矩阵{bij}mm的任务分配问题的最优解等价于原问题的最优解。 证明:略 定理 2 若方阵中一部分元素为零,一部分元素非零,则覆盖方阵内所有零元素的最少直线数等于位于不同行、不同列的零元素的最多个数。 证明:略 清华算法的基本思路: • 根据定理 1变换效率矩阵,使矩阵中有足够多的零。若矩阵中存在 m个不同行不同列的零,就找到了最优解 • 若覆盖变换后的效率矩阵零元素的直线少于m 条,就尚未找到最优解,设法进一步变换矩阵,增加新的零
清华算法的步骤:例4.3.1 第一步:变换效率矩阵,使每行每列至少有一个零 • 行变换:找出每行最小元素,从该行各元素中减去之 • 列变换:找出每列最小元素,从该列各元素中减去之 • 第二步:检查覆盖所有零元素的直线是否为m条 • 划线规则 • 1、逐行检查,若该行只有一个未标记的零,对其加( )标记,将 ( )标记元素同行同列上其它的零打上*标记。若该行有二个以上未标记的零,暂不标记,转下一行检查,直到所有行检查完;
清华算法的步骤:例4.3.1 2、逐列检查,若该列只有一个未标记的零,对其加( )标记,将( )标记元素同行同列上其它的零打上*标记。若该列有二个以上未标记的零,暂不标记,转下一列检查,直到所有列检查完; • 3、重复1、2后,可能出现三种情况: • a.每行都有一个 (0),显然已找到最优解,令对应(0)位置的 xij=1; • b.仍有零元素未标记,此时,一定存在某些行和列同时有多个零,称为僵局状态,因为无法采用 1、 2中的方法继续标记。 • 4、打破僵局。令未标记零对应的同行同列上其它未标记零的个数为该零的指数,选指数最小的先标记 ( );采用这种方法直至所有零都被标记,或出现 情况 a,或 情况 c。
清华算法的步骤:例4.3.1 • c.所有零都已标记,但标有( )的零的个数少于m; • 开始划线过程: • 对没有标记 ( ) 的行打 • 对打 行上所有其它零元素对应的列打 • 再对打 列上有 ( ) 标记的零元素对应的行打 • 重复 ,直至无法继续 • 对没有打 的行划横线,对所有打 的列划垂线 • 划线后会出现两种情况: • (1)标记( )的零少于m个,但划有 m条直线,说明矩阵中已存在 m 个不同行不同列的零,但打破僵局时选择不合理,没能找到。回到 b重新标记; • (2)少于m条直线,到第三步;
清华算法的步骤:例4.3.1 • 第三步:进一步变换; • 在未划线的元素中找最小者,设为 • 对未被直线覆盖的各元素减去 • 对两条直线交叉点覆盖的元素加上 • 只有一条直线覆盖的元素保持不变 • 以上步骤实际上仍是利用 定理 1 第四步:抹除所有标记,回到第二步,重新标记;
清华算法的步骤:例4.3.1 答:最优分配方案为 x13= x21= x34 = x42 =1,其余为0, 即甲C,乙A,丙D,丁B,OBJ=20
4.3.2 关于清华算法的适用条件 • 要求所有aij 0 • 若某些 aij <0,则利用定理 1 进行变换,使所有 bij 0 • 目标函数为min型 • 对于max型目标函数,将效率矩阵中所有 aij 反号,则等效于求min型问题;再利用定理 1 进行变换,使所有 bij 0,则可采用清华算法 打破僵局时选择不当的结果: 结果仅出现 3 个标记 ( ),但却划出 4 条线, 说明什么?!
线性规划有关的英文词汇 • 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 匈牙利算法