数学建模指派问题201105

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

55
性质
从原成本矩阵C的任一行(列)中各元素加(减)
一个常数,得到新的成本矩阵,则此两成本矩阵的
指派问题的最优解是相同的.
cij di 证明:设矩阵C的第i行对应的常数为di, cij
xij (cij di ) xij z di xij z di f cij
0
0
这样就找到 4个独立0
如果按自上而下从左到右顺序找
0 0 0 0 0 0 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n n
,n
总成本最小
每项任务由一人完成 每人只承担一项任务
解矩阵的特征
• 全部元素仅取0或1 • 每行有且仅有一个1 • 每列有且仅有一个1
0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0
例如,n=5时, X xij
0 C 0 Βιβλιοθήκη Baidu 0
0 0 0 0 0 0
0
0 0
0 0 0 0 0 0
这样只找到 3个独立0
画覆盖线的方法
• 刚才每个独立0,都画了两条线,把覆盖0 数目少的一条拿走,保留另一条.
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
• 这样,4条线就覆盖了全部0
(4)重复第(3)步, 直做到能在矩阵中找到n个 独立的0为止,这样就可以进行指派.
最大化指派问题
不平衡时的处理办法—虚拟法
• 前面讲的方法只适用于人数与任务数相等
• 当人数与任务数不相等时 • n----人数, m----任务数 • 若n>m,则虚拟n-m个任务,相应Cij=0 • 若n<m,则虚拟m-n个人,相应Cij=0 • 这样就化为人数与任务数相等的情况
0 0 0 0 0 0
0
0 0
0 0 0 0
0 0 0
0
0
0
在C中找出最多独立0的步骤
• 设Wi表示第i行0的数目,Lj表示第j列0的数目.
• 1.统计Wi和Lj(i,j=1,2,…n).
• 2.按W1,W2,…,Wn,L1,L2,…,Ln顺序找出 第一个最小正数,选中该行(列)首个0. • 3.删除该0所在的行与列,对应的Wi=0,Lj=0. • 4.重复步骤1~3,直到全部Wi=0为止.
j 1 i 1 n n
匈牙利数学家 康尼格(D.Konig)的定理
• 若在成本矩阵C中最多能找到k个独立0, 则必可画k条直线把C的全部0覆盖.
匈牙利法
• 步骤
(1)把成本矩阵的各行每一元素分别减去该行中的最 小元素,再检查每列中是否都有0,若不是,则把没
有0的列的每一元素分别减去该列中的最小元素. (2)如果能在矩阵中找到n个独立的0元素, 就可以进
设置变量: z………总成本
1 指派第i人做第j项任务 xij , i, j 1, 2, 0 不指派第i人做第j项任务
cij xij 数学模型 : m in z j 1 i 1 n xij 1, j 1,2 ,...,n i 1 n s .t . xij 1, i 1,2 ,...,n j 1 x 0 ,1 i , j 1,2 ,...,n ij
行指派, 即对应于这n个0元素的位置的xij=1,其 余位置的xij=0. 结束.
(3)当独立的0个数k<n时, 可用k条直线覆盖 全部0. 然后从未被覆盖的各元素中,选出最 小的元素a,把未被覆盖的各元素减去这个最 小元素,而两直线交叉处的元素加上这个最 小元素. (这种操作相当于:未被覆盖的行 都减a ,被覆盖的列都加a .)
j 1 i 1 j 1 i 1 i 1 j 1 i 1 n n n n n n n
即f与z仅差一个常数, 所以两目标在相同的约束 条件下,最优解是相同的.
求解的思想方法
若利用以上性质,能把成本矩阵变换到存在n
个独立的0元素(在不同行不同列),且保持每个Cij 非负.这时让这n个0元素的位置对应的xij=1,其余 位置的xij=0,就得最优解.因为它是目标值为0的 可行解,且总有 z cij xij 0
相关文档
最新文档