数学建模6.5指派问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
这样只找到 3个独立0
画覆盖线的方法
• 刚才每个独立0,都画了两条线,把覆盖0 数目少的一条拿走,保留另一条.
0 0 0 0 0 0 0 0 0 0 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
这样就找到 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
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
计算机模拟结果
经编程进行了大量的计算机模拟得出
统计结果:
用伏格尔法求解指派问题,约有2/3 能直接算出最优解。就算不是最优解,大 多数目标函数值的相对误差在10%内。
55
性质
从原成本矩阵C的任一行(列)中各元素加(减)
一个常数,得到新的成本矩阵,则此两成本矩阵的
指派问题的最优解是相同的.
cij di 证明:设矩阵C的第i行对应的常数为di, cij
xij (cij di ) xij z di xij z di f cij
在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为止.
行指派, 即对应于这n个0元素的位置的xij=1,其 余位置的xij=0. 结束.
(3)当独立的0个数k<n时, 可用k条直线覆盖 全部0. 然后从未被覆盖的各元素中,选出最 小的元素a,把未被覆盖的各元素减去这个最 小元素,而两直线交叉处的元素加上这个最 小元素. (这种操作相当于:未被覆盖的行 都减a ,被覆盖的列都加a .)
指派问题
设有n项任务要分给n个人去完成,每人完成一
项. 由于每个人的专长不同,故完成不同任务所需
的成本也不同. 若第i个人完成第j项任务的成本为
cij ,则如何分配这些工作任务,使总成本为最小?
这类问题称为指派问题,矩阵C=(cij)称为成本矩阵.
设置变量: z………总成本
1 指派第i人做第j项任务 xij , i, j 1, 2, , n 0 不指派第i人做第j项任务
• 这样,4条线就覆盖了全部0
用伏格尔(Vogel)法 求解指派问题的原理
最小化的指派问题,可视作平衡运输问题,
其中 ai=1, bj=1 (i=1~n,j=1~n)。
求解最小化的指派问题,就是在成本矩
阵C中找出n个独立的cij,使它们的和最小。
基本步骤
1.计算每行、列两个最小Cij的差;
差=次小-最小,
(4)重复第(3)步, 直做到能在矩阵中找到n个 独立的0为止,这样就可以进行指派.
最大化指派问题
不平衡时的处理办法—虚拟法
• 以上方法只适用于 : 人数=任务数
当 人数≠任务数 时 • n----人数, m----任务数 • 若n>m,则虚拟n-m个任务,相应Cij=0 • 若n<m,则虚拟m-n个人,相应Cij=0 • 这样就化为人数与任务数相等的情况
j 1 i 1 n n
匈牙利数学家 康尼格(D.Konig)的定理
• 若在成本矩阵C中最多能找到k个独立0, 则必可画k条直线把C的全部0覆盖.
匈牙利法
• 步骤
(1)把成本矩阵的各行每一元素分别减去该行中的最 小元素,再检查每列中是否都有0,若不是,则把没
有0的列的每一元素分别减去该列中的最小元素. (2)如果能在矩阵中找到n个独立的0元素, 就可以进
(注:当最小值不唯一或只剩一个数时,差=0) 2.找出最大差值所在的行或列; 3.选定该行或列的最小Cij;
4.删掉该行和该列;
5.在剩余的Cij中重复1~4步n次,就可选出n个 独立的Cij 。
3
4 1
5 2 6 (7) 1 1
4
2 5 2 5
9 (9)
(10)
2
这个解是最优 解,最小总成 本为24.
0 0 0 0 0 0
0
0 0
0 0 0 0
0 0 0
0
0
0
n n
总成本最小
每项任务由一人完成 每人只承担一项任务
解矩wenku.baidu.com的特征
• 全部元素仅取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
相关文档
最新文档