数学建模-获奖论文-工作指派问题
最优化指派问题小论文
最优化小论文某企业拟生产A 和B 两种产品,其生产投资费用分别为2100元/t 和4800元/t 。
A 、B 两种产品的利润分别为3600元/t 和6500元/t 。
A 、B 产品每月的最大生产能力分别为5t 和8t ;市场对这两种产品总量的需求每月不少于9t 。
试问该企业应该如何安排生产计划,才能既能满足市场需求,又节约投资,而且使生产利润达到最大?分析:该问题是一个线性多目标规划问题。
如果计划决策变量用x 1 和x 2表示,它们分别代表A 、B 产品每月的 生产量(单位:t );f 1(x 1,x 2)表示生产A 、B 两种产品的总投资费用(单位:元); f 2(x 1,x 2)表示生产A 、B 两种产品获得的总利润(单位:元)。
那么,该多目标规划问题就是:求x 1 和x 2,使:而且满足:对于上述多目标规划问题,如果决策者提出的期望目标是: (1)每个月的总投资不超30000元; (2)每个月的总利润达到或超过45000元; (3)两个目标同等重要。
解:⎪⎪⎩⎪⎪⎨⎧≥≥+≤≤0,985212121x x x x x x 2121148002100),(min x x x x f +=2121265003600),(max x x x x f +=指派问题现实生活中中经常会遇到类似这样的问题,比如有n 项不同的任务,需要n 个人分别完成其中的一项,但由于任务的性质和各人的专长不同,因此各人去完成不同的任务的效率(或花费的时间或费用)也就不同。
于是产生了一个问题,应指派哪个人去完成哪项任务,使完成n 项任务的总效率最高(或所需时间最少),这类问题称为指派问题或分派问题。
1.指派问题的数学模型:设n 个人被分配去做n 件工作,规定每个人只做一件工作,每件工作只有一个人去做。
已知第i 个人去做第j 件工作的的效率(时间或费用)为Cij(i=1.2…n;j=1.2…n)并假设Cij ≥0。
问应如何分配才能使总效率(时间或费用)最高?设决策变量1 分配第i 个人去做第j 件工作x ij =0 相反( i, j =1.2. …n )其数学模型为:⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧=======∑∑∑∑====)..2.1,1(或0)..2.1( 1)..2.1( 1min 1111n j i x n j x n i x x c Z ij n i ij nj ij ni njij ij解题步骤:第一步:变换指派问题的系数(也称效率)矩阵(c ij)为(b ij),使在(b ij)的各行各列中都出现0元素,即(1)从(c ij )的每行元素都减去该行的最小元素(若求什么时候效率最低时,则所有行行列都先乘以-1,然后再加上所有数中绝对值最大的数,再每行元素都减去该行的最小元素); (2) 再从所得新系数矩阵的每列元素中减去该列的最小元素。
数学建模指派问题论文
目录一问题重述 (2)二模型假设 (2)三匈牙利法陈述 (2)四问题分析 (3)五问题实现 (5)1问题重述 (5)2 问题求解 (5)2.1由匈牙利法构造目标函数 (5)2.2模型建立 (6)3 模型解析 (6)4 程序实现 (7)六结果显示及min求解 (17)七模型深入 (17)1 模型建立 (18)2 进行求解 (18)3程序分析 (20)八模型检验 (20)九整体总结 (20)十参考文献 (21)一问题重述指派问题亦称平衡指派问题仅研究人数与事数相等、一人一事及一事一人的情形。
现有的不平衡指派问题将研究范围扩大到人数与事数可以不等、一人一事或一人多事及一事一人的情形。
日常活动中也不乏人数与事数可以不等、一人多事及一事多人的情形,这类事务呈现了广义指派问题的实际背景。
平衡指派问题是特殊形式的平衡运输问题,可运用匈亚利法、削高排除法和缩阵分析法等特殊方法求解。
另一方面,正是平衡指派问题的这种特殊性,使得不平衡指派问题不能按常规技术转化为平衡指派问题。
因此,各种不平衡指派问题需要确立相应的有效解法1问题的提出及其数学模型广义指派问题并非奇特和抽象的构想,相反,该问题可以从司空见惯的日常事务中引出。
现在我们就运用匈牙利法,去实现n个人,n件工作的指派问题。
二模型假设1 假设一共有n个人,n件工作,即人数与工作数相等。
2 假设每个人的都能从事某项工作,但是付出的代价不同。
3 假设求解代价最小的解。
4甲乙丙丁四个人,ABCD四项工作,要求每人只能做一项工作,每项工作只由一人完成,问如何指派总时间最短?三匈牙利法陈述第一步:找出矩阵每行的最小元素,分别从每行中减去这个最小元素;第二步:再找去矩阵每列的最小元素,分别从各列减去这个最小元素;第三步:经过这两步变换后,矩阵的每行每列至少都有了一个零元素,接着根据以下准则进行试指派,找出覆盖上面矩阵中所有零元素至少需要多少条直线;(1)从第一行开始,若该行只有一个零元素打上()号。
数学建模,获奖论文设计,工作指派问题
河南理工大学2014年数学建模竞赛论文答卷编号(竞赛组委会填写):题目编号:( F )论文题目:工作的安排参赛队员信息(必填):答卷编号(竞赛组委会填写):评阅情况(学校评阅专家填写):评阅1.评阅2.评阅3.工作的安排摘要:工作指派问题是日常生活中常见的一类问题。
本文所要研究就是在效率与成本的背景下,如何安排每个人员的工作分别达到以下三个要求:1、使得总的工作效率最大。
2、使得总的成本最低。
3、兼顾工作效率和成本,优化工作安排方案。
对于问题一,该问题属于工作指派问题,要求使工作效率最大。
为了得到最优的安排方案,我们采用0-1规划模型,引入0-1变量,即其中一人负责某一项工作记作1,否则为0,然后与之对应的效率相乘,然后把所有的工作安排情况这样处理后,再求和作为目标函数。
此外我们对该问题进行了如下约束:因为六个人刚好六份工作,所以每个人只能被安排一份工作,而且每份工作只允许一人来完成。
最后在模型求解中我们应用lingo软件编程使目标函数值最大化,根据此时对应的0-1变量的所有值,最终得到最优安排方案。
对于问题二,要求的方案使工作成本最低。
该问题与问题一相似,只是求解的是目标函数的最小值,为此我们建立了成本最小化模型,该模型同样应用了0-1规划方法,然后用与问题一中相似的方法建立目标函数,然后应用lingo软件编程使目标函数值最小,最终得到使成本最小的相应安排方案。
对于问题三,该问题兼顾效率与成本,属于多目标规划。
首先,数据标准化处理。
给出的效率成本数据属于两个不同性质的指标,两个指标之间存在着不可公度性,而且两项的数值整体大小水平不一样,会有大数起主导作用的影响,如果不对两个指标的数据进行标准化,就会得到错误的结果,为此我们首先采用极值差方法,用matlab编程对两项指标数据进行标准化。
经过极差变换后,两项指标值均在0和1之间。
对于此问题的多目标规划解决,我们采用理想点方法将多目标规划转化为单目标规划,建立了偏离理想点距离模型。
数学建模模版之指派问题2
三. 求最大化指派问题 (max cx) 1. 可以将之最小化 min - cx . 2. 为方便起见,可令
c~ij M cij 0 , M max { cij } 转化为 min c~x.
对第5行打√, 检查第5行,对第1列打√,检查第一列
对第3行打√, 检查第3行,打√操作终止。
画线:没打√的行划横线和打√的列划竖线。
Step 4. 变换新矩阵 B (bij ), 使零元素增加 : ①在B中没被直线覆盖的各元 素中找出最小元素 ;
②对B中没被画直线的各行减 去;对B中已画直线的 各列加上
⑤ 对于没有√的行画横线,对所有打√号的列画竖线, 产生覆盖所有零元素的最少直线,直线数目应等于
0 的个数。
例: 5 0 2 0 2 2 3 0 0 0
B 0 10 5 7 5 9 8 0 0 4 0 6 3 6 2
5 0 2 0 2 2 3 0 0 0 0 10 5 7 5√ 9 8 0 0 4 0√ 6 3 6 2√
1, (i, j) J xij
0, (i, j) J
为指派问题的最优指派决策.
二、匈牙利法的步骤
Step 1. 将C零元素化,得到矩阵B,使B中每行每列中均有 零元素 ① C中的各行减该行最小元素; ② C中的各列减该列最小元素;
例: (本章例3,n=4)
-4 -2
3 14 10 5 -3
k (可正、可负)后,形成新矩阵 B (bij )nn ,则以B为效益矩 阵的指派问题与原问题 有相同的最优解 , 但新问题的最优值 ~z *与原问题的最优值 z *满足~z * k z * ( 你能证明吗?)
数学建模指派问题论文
目录一问题重述 (2)二模型假设 (2)三匈牙利法陈述 (2)四问题分析 (3)五问题实现 (5)1问题重述 (5)2 问题求解 (5)2.1由匈牙利法构造目标函数 (5)2.2模型建立 (6)3 模型解析 (6)4 程序实现 (7)六结果显示及min求解 (17)七模型深入 (17)1 模型建立 (18)2 进行求解 (18)3程序分析 (20)八模型检验 (20)九整体总结 (20)十参考文献 (21)一问题重述指派问题亦称平衡指派问题仅研究人数与事数相等、一人一事及一事一人的情形。
现有的不平衡指派问题将研究范围扩大到人数与事数可以不等、一人一事或一人多事及一事一人的情形。
日常活动中也不乏人数与事数可以不等、一人多事及一事多人的情形,这类事务呈现了广义指派问题的实际背景。
平衡指派问题是特殊形式的平衡运输问题,可运用匈亚利法、削高排除法和缩阵分析法等特殊方法求解。
另一方面,正是平衡指派问题的这种特殊性,使得不平衡指派问题不能按常规技术转化为平衡指派问题。
因此,各种不平衡指派问题需要确立相应的有效解法1问题的提出及其数学模型广义指派问题并非奇特和抽象的构想,相反,该问题可以从司空见惯的日常事务中引出。
现在我们就运用匈牙利法,去实现n个人,n件工作的指派问题。
二模型假设1 假设一共有n个人,n件工作,即人数与工作数相等。
2 假设每个人的都能从事某项工作,但是付出的代价不同。
3 假设求解代价最小的解。
4甲乙丙丁四个人,ABCD四项工作,要求每人只能做一项工作,每项工作只由一人完成,问如何指派总时间最短?三匈牙利法陈述第一步:找出矩阵每行的最小元素,分别从每行中减去这个最小元素;第二步:再找去矩阵每列的最小元素,分别从各列减去这个最小元素;第三步:经过这两步变换后,矩阵的每行每列至少都有了一个零元素,接着根据以下准则进行试指派,找出覆盖上面矩阵中所有零元素至少需要多少条直线;(1)从第一行开始,若该行只有一个零元素打上()号。
指派问题
STEP 4: 调整
GO TO STEP 1
45 0 40 65 45 55 55 0 0 5 0 45 0 55 60 55 45 45 0 45
√ √
0 20 40 √ 60 √ 95 √
运筹学
45 0 40 65 45 55 55 0 0 5 0 45 0 55 60 55 45 45 0 45
M ≥ m cij ), bij = M − cij ax(
则有
∑∑b x = ∑∑(M −c )x
i=1 j =1 ij ij n i=1 j =1 n ij n n i=1 j =1 i=1 j =1
n
n
n
n
ij n n
= M∑∑xij − ∑∑cij xij = nM − ∑∑cij xij
i=1 j =1
运筹学
32a 12a 0 0 0 0 640a 0 48a 176a 96a 0 8a 56a 26a 0
运筹学
32a 12a 0 0 0 0 640a 0 48a 176a 96a 0 8a 56a 26a 0
√ √
0 20 40 √ 60 √ 95 √
运筹学
50 0 45 65 50 55 60 0 0 0 0 40 0 50 60 50 45 40 0 40
0 20 35 55 90
运筹学
0 0 (xij ) = 0 1 0
指派问题
Assignment Problems
指派问题(分配问题)
1. 指派问题及其数学模型 2. 求解指派问题的匈牙利法 3. 非标准指派问题的求解 4. 指派问题的应用举例
指派问题详解
第一章绪论1、指派问题的背景及意义指派问题又称分配问题,其用途非常广泛,比如某公司指派n个人去做n 件事,各人做不同的一件事,如何安排人员使得总费用最少?若考虑每个职工对工作的效率(如熟练程度等),怎样安排会使总效率达到最大?这些都是一个企业经营管理者必须考虑的问题,所以该问题有重要的应用价值.虽然指派问题可以用0-1规划问题来解,设X(I,J)是0-1变量, 用X(I,J)=1表示第I个人做第J件事, X(I,J)=0表示第I个人不做第J件事. 设非负矩阵C(I,J)表示第I个人做第J件事的费用,则问题可以写成LINGO程序SETS:PERSON/1..N/;WORK/1..N/;WEIGHT(PERSON, WORK): C, X ;ENDSETSDATA:W=…ENDDATAMIN=@ SUM(WEIGHT: C*X);@FOR(PERSON(I): @SUM(WORK(J):X(I,J))=1);@FOR(WORK(J): @SUM(PERSONM(I):X(I,J))=1);@FOR(WEIGHT: @BIN(X));其中2*N个约束条件是线性相关的, 可以去掉任意一个而得到线性无关条件.但是由于有N^2个0-1变量, 当N很大时,用完全枚举法解题几乎是不可能的. 而已有的0-1规划都是用隐枚举法做的,计算量较大. 对于指派问题这种特殊的0-1规划,有一个有效的方法——匈牙利算法,是1955年W. W. Kuhn利用匈牙利数学家D.König的二部图G的最大匹配的大小等于G的最小顶点覆盖的大小的定理提出的一种算法,这种算法是多项式算法,计算量为O(N3).匈牙利算法的基本原理是基于以下两个定理.定理1设C=(C ij)n×n是指派问题的效益矩阵,若将C中的任一行(或任一列)减去该行(或该列)中的最小元素,得到新的效率矩阵C’,则C’对应的新的指派问题与原指派问题有相同的最优解.证明:设X’是最优解, 即@SUM(WEIGHT: C*X’)<= @SUM(WEIGHT: C*X), 则当C中任一行或任一列减去该行或该列的最小数m时,得到的阵C’还是非负矩阵, 且@SUM(WEIGHT: C’*X’)<=@SUM(WEIGHT: C*X)-m=@SUM(WEIGHT: C’*X)定理2效率矩阵C中独立的0元素的最多个数等于覆盖所有0元素的最少直线数. 当独立零元素的个数等于矩阵的阶数时就得到最优解.3、理论基础定义:图G的一个匹配M是图G中不相交的边的集合. 属于匹配M中的边的所有端点称为被该匹配M饱和, 其他的顶点称为M-未饱和的. 如果一个匹配M 饱和了图G的所有顶点,则称该匹配M是一个完全匹配. 可见顶点数是奇数的图没有完全匹配. 一个匹配M称为是极大匹配, 如果它不能再扩张成更大的一个匹配. 一个匹配称为是最大匹配, 如果不存在比它更大的匹配.定义:对于一个匹配M, 图G的一个M-交替路是图G中的边交替地在M中及不在M中的边组成. 从M-未饱和点出发到M-为饱和点结束的M-交替路称为一条M-增广路. 把M-增广路中不是M中的边改成新的匹配M’中的边, 把M-增广路中M中的边不作为M’中的边, 在M-增广路以外的M中的边仍作为M’中的边, 则M’的大小比M大1. 故名M-增广路. 因此最大匹配M不存在M-增广路.定义:若图G和图H有相同的顶点集V, 我们称G和H的对称差,记为G∆H,是一个以V为顶点集的图, 但其边集是G和H的边集的对称差: E(G∆H)=E(G) ∆E(H)=E(G)⋂E(H)-(E(G)⋃E(H))=(E(G)-E(H)) ⋂ (E(H)-E(G))定理: (Berge, 1957) 图G的一个匹配M是最大匹配,当且仅当G中没有M-增广路.证明: 我们只要证明, G中没有M-增广路时, M是最大匹配. 用反证法, 若有一个比M大的匹配M’. 令G的一个子图F, E(F)=M∆M’, 因M和M’都是匹配, F的顶点的最大度数至多是2, 从而F由不相交的路和环组成, 它们的边交替地来自M和M’, 于是F中的环的长度是偶数. 由于M’比M大, F中存在一个连通分支,其中M’中的边数大于M中的边数. 这个分支只能是起始和终止的边都在M’中. 而这就是一条G中的M-增广路. 与假设矛盾. 证毕.定理(Hall, 1935)设G是一个二部图, X和Y是其二分集, 则存在匹配M 饱和X当且仅当对于X中的任意子集S, Y 中与S中的点相邻的点组成的集合N(S)中元素的个数大于等于集合S中元素的个数.证明:必要性是显然的. 对于充分性, 假设 |N(S)|≥|S|, ∀S⊂X, 考虑G的一个最大匹配M, 我们用反证法,若M没有饱和X, 我们来找一个集合S不满足假设即可. 设u∈X是一个M-未饱和顶点, 令S⊂X和T⊂Y分别是从u出发的M-交替路上相应的点.我们来证明M中的一些边是T到S-u上的一个匹配. 因为不存在M-增广路,T中的每个点是M-饱和的. 这意味着T中的点通过M中的边到达S中的一个顶点. 另外, S-u中的每个顶点是从T中的一个顶点通过M中的一条边到达的. 因此M 中的这些边建立了T与S-u的一个双射, 即|T|=|S-u|. 这就证明了M中的这些边是T到S-u上的一个匹配,从而意味着T⊂N(S), 实际上, 我们可证明T=N(S). 这是因为连接S和Y-T中的点y的边是不属于M的, 因为不然的话, 就有一条到达y的M-增广路, 与y∉T矛盾. 故|N(S)|=|T|=|S-u|=|S|-1<|S|, 与假设矛盾.当X与Y的集合的大小相同时的Hall定理称为婚姻问题,是由Frobenius(1917)证明的.推论: k-正则的二部图(X的每一点和Y的每一点相关联的二部图)(k>0)存在完全匹配.证明: 设二分集是X,Y. 分别计算端点在X和端点在Y的边的个数, 得k|X|=k|Y|, 即|X|=|Y|.因此只要证明Hall的条件成立即可. 使X饱和的匹配就是完全匹配. 考虑∀S⊂X, 设连接S与N(S)有m条边, 由G的正则性, m=k|S|. 因这m条边是与N(S)相关联的, m≤k|N(S)|, 即k|S|≤ k|N(S)|, 即|N(S)|≥|S|. 这就是Hall的条件.用求M-增广路的方法来得到最大匹配是很费时的. 我们来给出一个对偶最优化问题.定义:图G的一个顶点覆盖是集合S⊂V(G), 使得G的每条边至少有一个端点在S中. 我们称S中的一个顶点覆盖一些边, 若这个顶点是这些边的公共端点.因为匹配的任意两条边不能被同一个顶点覆盖, 所以顶点覆盖的大小不小于匹配的大小: |S|≥|M|. 所以当|S|=|M| 时就同时得到了最大的匹配和最小的顶点覆盖.定理(König [1931],Egerváry[1931])二部图G的最大匹配的大小等于G的最小顶点覆盖的大小.证明: 设M是G的任一个匹配, 对应的二分集是X,Y. 设U是一个最小的顶点覆盖, 则|U|≥|M|, 我们只要由顶点覆盖U来构造一个大小等于|U|的匹配即完成证明. 令R=U⋃X, T=U⋃Y, 令H, H’分别是由顶点集R⋂(Y-T)及T⋂(X-R)诱导的G的子图. 我们应用Hall的定理来证明H有一个R到Y-T中的完全匹配,H’有一个从T到X-R中的完全匹配. 再因这两个子图是不相交的, 这两个匹配合起来就是G中的一个大小为|U|的匹配.因为R⋂T是G的一个覆盖, Y-T与X-R之间没有边相联接. 假设S⊂R, 考虑在H中S的邻接顶点集N(S), N(S) ⊂Y-T. 如果|N(S)|<|S|, 因为N(S)覆盖了不被T覆盖的与S相关联所有边, 我们可以把N(S) 代替S作为U中的顶点覆盖而得到一个更小的顶点覆盖. U的最小性意味着H中Hall条件成立. 对H'作类似的讨论得到余下的匹配. 证毕.最大匹配的增广路算法输入: 一个二分集为X,Y的二部图G,一个G中的匹配M, X中的M-未饱和顶点的集合U.思路: 从U出发探求M-交替路,令S⊂X,T⊂Y为这些路到达过的顶点集. 标记S中不能再扩张的顶点. 对于每个x∈(S⋂T)-U, 记录在M-增广路上位于x前的点.初始化: S=U,T=∅.叠代: 若S中没有未标记过的顶点, 结束并报告T⋂(X-S)是最小顶点覆盖而M是最大匹配.不然, 选取S中未标记的点x, 考虑每个y∈N(x)且xy∉M, 若y是M-未饱和的, 则得到一个更大的匹配,它是把xy加入原来的匹配M得到的,将x从S中去除. 不然, y是由M中的一条边wy相连接的, w∈X, 把y加入T(也有可能y本来就在T中), 把w加入S. w未标记, 记录w前的点是y. 对所有关联到x的边进行这样的探索后, 标记x. 再次叠代.定理: 增广路算法可以得到一个相同大小的匹配和顶点覆盖.证明: 考虑这个算法终止的情况, 即标记了S中所有的点. 我们要证明R=T⋂(X-S)是大小为|M|的一个顶点覆盖.从U出发的M-交替路只能通过M中的边进入X中的顶点, 所以S-U中的每个顶点通过M与T中的顶点匹配, 并且没有M中的边连接S和Y-T. 一旦一条M-交替路到达x∈S, 可以继续沿着任何未饱和的边进入T, 由于算法是对于x的所有邻域顶点进行探索才终止的,所以从S 到Y-T 没有未饱和边. 从而S 到Y-T 没有边, 证明了R 是一个顶点覆盖.因为算法是找不到M-增广路时终止, T 的每一个顶点是饱和的. 这意味着每个顶点y ∈T 是通过M 匹配与S 中的一个顶点. 由于U ⊂S, X-S 的每个顶点是饱和的, 故M 中与X-S 相关联的边不和T 中的点相连接. 即它们与是饱和T 的边不同的, 这样我们可见M 至少有|T|+|X-S|条边. 因不存在一个比顶点覆盖更大的匹配, 所以有|M|=|T|+|X-S|=|R|.设二部图G 的二分集X 和Y 都是n 个元素的点集, 在其边j i y x 上带有非负的权ij w , 对于G 的一个匹配M, M 上各边的权和记作w(M).定义: 一个n ×n 矩阵A 的一个横截(transversal)是A 中的n 个位置, 使得在每行每列中有且只有一个位置(有的文献中把横截化为独立零元素的位置来表示).定义: 指派问题就是给定一个图G=n n K ,(完全二部图, 即每个X 中的顶点和Y 中的每个顶点有边相连接的二部图)的边的权矩阵A, 求A 的一个横截, 使得这个横截上位置的权和最大. 这是最大带权匹配问题的矩阵形式.定义: 对于图G=n n K ,,设其二分集是X ,Y ,给定G 的边j i y x 的n ×n 权矩阵W={ij w }.考虑G 的子图v u G ,, 设其二分集是U ⊂X ,V ⊂Y, 边集是E(v u G ,), 对于子图v u G ,的带权覆盖u,v 是一组非负实数{i u },{j v },使得ij j i w v u ≥+,)(,v u j i G E y x ∈∀, v u G ,的带权覆盖的费用是∑∑+j i v u 记为C(u,v), 最小带权覆盖问题就是求一个具有最小费用C(u,v)的带权覆盖u,v.引理: 若M ⊂E(v u G ,)是一个带权二部子图v u G ,的最大匹配, 且u, v 是v u G ,的带权覆盖, 则C(u,v)≥w(M). 而且, C(u,v)=w(M)当且仅当ij j i w v u =+,M y x j i ∈∀. 这时M 是v u G ,最大带权匹配, u,v 是v u G ,的最小带权覆盖, 定义这时的v u G ,为G 的相等子图(equality subgraph ).证明: 因为匹配M 中的边是不相交的, 由带权覆盖的定义就得C(u,v)≥w(M). 而且C(u,v)=w(M)当且仅当ij j i w v u =+,M y x j i ∈∀成立. 因一般地有C(u,v)≥w(M).所以当C(u,v)=w(M)时. 意味着没有一个匹配的权比C(u,v)大, 也没有一个覆盖的费用比w(M)小.Kuhn 得到一个指派问题的算法,命名为匈牙利算法, 为的是将荣耀归于匈牙利数学家König 和Egerv áry.指派问题的匈牙利算法(Kuhn[1955], Munkres[1957]):输入G=n n K ,的边的权矩阵A, 及G 的二分集X,Y.初始化: 任取一个可行的带权覆盖,例如)(max ij ji w u =,0=j v ,建立G 的相等子图v u G ,, 其二分集是X, Y ’⊂Y, 求v u G ,的一个最大匹配M. 这个匹配的权和w(M)=C(u,v), M 的带权覆盖是具有最小费用的.叠代: 如M 是G 的一个完全匹配, 停止叠代, 输出最大带权匹配M. 不然, 令U 是X 中的M-未饱和顶点. 令S ⊂X, T ⊂Y 是从U 中顶点出发的M-交替路到达的顶点的集合.令},:min{T Y y S x w v u j i ij j i -∈∈-+=ε.对于所有的S x i ∈, 将i u 减少ε, 对于所有的T y j ∈,将j v 增加ε,形成新的带权覆盖u ’,v ’及对应的新的相等子图v u G '',.如果这个新的相等子图含有M-增广路, 求它的最大匹配M ’, 不然不改变M 再进行叠代.定理: 匈牙利算法能找到一个最大权匹配和一个最小费用覆盖.证明: 算法由一个覆盖开始,算法的每个叠代产生一个覆盖,仅在相等子图有一个完全的匹配为止。
指派问题
xij
0或1
i 1,, m
j 1,, m i, j 1,m
分配模型的标准形
如果一个分配模型满足以下三个条件: 1)目标要求为min 2)系数矩阵(cij)为n阶方阵 3)系数矩阵中所有元素cij≥0,且为常数
则称它为分配模型的标准形.
分配模型的标准形的特点:
含有n×n个变量,n+n个约束方程,所有变量均为0-1变量.
0; (2)如果人多事少,增加一些虚拟“事”,虚拟“事”做事的费用系数也取 为0; 3)一个人可做几件事的指派问题 可将某个人化作同样几个“人”接受指派,这几个“人”做同一件事的费用 系数一样。 4)某事一定不能由某人做的指派问题
可将相应的费用系数取为足够大的数M。
指派问题 assignment problem
①从只有一个0元素的行(列)的0元素开始,给这 个0元素加圈,记作◎,这表示对这行所代表的人 ,只 有一种任务可分派。然后划去◎所在列(行)的其它0 元素 ,记作,这表示这列所代表的任务已分派完, 不必再考虑别人了。
②给只有一个0元素的列(行)的元素加圈,记作◎; 然后划去◎所在的行的其它0元素,即作。
工厂1 工厂2 工厂3 工厂4
产品1 58 75 65 82
产品2 69 50 70 55
产品3 180 150 170 200
产品4 260 230 250 280
指派问题 assignment problem
得到两个最优解
1
1
X (1)=
1
,X (2)=
1
1 1
1
1
有两个最优方案
第一种方案:第一个工厂加工产品1,第二工厂加工产品3, 第三个工厂加工产品4,第四个工厂加工产品2;
教师培训课件:数学建模中的指派
在指派问题中,整数规划模型可以确保每个任务都由一个特定的人或机器完成,且每个任务只被分配一次。
非线性规划模型是在线性规划模型的基础上,将目标函数和约束条件扩展为非线性形式。
非线性规划模型适用于解决具有非线性特征的指派问题,如多目标优化、复杂系统设计等。
总结词
遗传算法是一种基于生物进化原理的优化算法,它通过模拟种群的遗传和进化过程来寻找最优解。在求解指派问题时,遗传算法能够处理大规模问题,并且在求解过程中能够自动调整搜索方向,具有一定的鲁棒性和全局搜索能力。
详细描述
06
案例分析
总结词
优化生产流程
详细描述
在生产调度中,指派问题通常涉及如何优化人员或机器的分配,以最小化生产成本、最大化生产效率。通过数学建模,可以找到最优的指派方案,减少生产过程中的浪费和延误。
通过概率和统计的方法,分析随机现象和不确定性问题。
通过线性规划的方法,优化资源配置和决策过程。
03
指派问题概述
01
02
任务和工人的数量可以相等或不等,每个工人完成特定任务的成本是已知的,目标是找到一种任务分配方案,使得总成本最小。
指派问题是指将一组任务分配给一组工人,使得每个工人完成各自任务的总成本最小化的问题。
拓展指派问题的应用领域
加强指派问题与其他优化问题的结合
推广指派问题的理论知识和应用技巧Leabharlann 教师培训课件数学建模中的指派
contents
目录
引言数学建模基础指派问题概述指派问题的数学模型指派问题的求解方法案例分析总结与展望
01
引言
指派问题在数学建模中具有广泛应用,如生产计划、任务分配、路线规划等。
数学建模模版之指派问题
j 1
n
xij 1, j 1,2, , n
i 1
xij 0 或 1
指派问题是特殊的0 – 1规划,但它有更简便的解法
匈牙利法。
1955年由库恩(W.W. Kuhn)提出,但他引用了匈牙利
数学家康尼格(D. Konig)关于矩阵中零元素定理:
确定或反映指派问题的唯一因素或数据是效益矩阵:
c11 c12 c1n
2. 最优解定理
如果效益矩阵 B (bij )nn中有n个独立0元素bij ((i, j) J ), 则
1, (i, j) J xij
0, (i, j) J
为指派问题的最优指派决策.
二、匈牙利法的步骤
Step 1. 将C零元素化,得到矩阵B,使B中每行每列中均有 零元素 ① C中的各行减该行最小元素; ② C中的各列减该列最小元素;
选第3行标 0
选第5行标 0
选第1行标 0
选第2行标 0
选第4行标 0 ,标 0 有
5个元素. 最优解
0 1 0 0 0 0 0 1 0 0 x (xij ) 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1
三. 求最大化指派问题 (max cx) 1. 可以将之最小化 min - cx . 2. 为方便起见,可令
z* 5 4 9 11 29
Step 3. 如有0 的元素个数小于n,则当前方案不是最优的, 需调整,先选最少直线覆盖所有0元素。
①对没有 0 的行打√号; ②对已打√号的行中有 0 元素的列打√号; ③对打√号的列中含有 0元素的行打√号; ④重复②和③,直至得不出新的打√号的行列为止;
⑤ 对于没有√的行画横线,所有打√号的列画竖线, 产生覆盖所有零元素的最少直线,直线数目应等于
数学建模作业_动态规划求解指派问题
3 问题的伪代码实现
1 设 k 的初始值为 1; 2 写出 X k ,即第 k 阶段决策变量可能的取值,特别地, X 1 ={1,2, 。 。 。 ,n}。 3 对每一个 sk ,计算 sk g1 (sk 1 , xk 1 ) sk 1 {xk 1. j} ,及 d ( sk , xk ) ; 4 计算 f k ( sk ) ; 5 若 X k 为空,转到第 6 步,否则,k++,转回执行第 2 步。 6 最优指派决策为 f k ( sk ) ,根据 f k ( sk ) 写出最优指派方案{ xkj }。 7 程序算法复杂度:是 O(V*E*E)
其中“ - ”表示集合的差运算。 (4)指派问题指标递归方程:
f k (sk ) min{ f k (sk , xk ) | xk X k } , f k (sk , xk ) d k (sk , d k ) f k 1 ( g1 (sk 1 , xk 1 )) , f 0 (s0 ) 0, k 1,2,..., n.
float costforout[101][101]; int matrixsize; int personnumber; int jobnumber; }matrix; matrix sb; int result[501][2]; void twozero(matrix &sb); void judge(matrix &sb,int result[501][2]); void refresh(matrix &sb); void circlezero(matrix &sb); matrix input(); void output(int result[501][2],matrix sb); void zeroout(matrix &sb); matrix input() { matrix sb; int m; int pnumber,jnumber; int i,j; float k; char w; printf("指派问题的动态规划解法:\n\n"); printf("按最大价值分配请输入 1;最小价值分配请输入 0:\n"); scanf("%d",&m); while (m!=1&&m!=0) { printf("请输入 1 或 0:\n"); scanf("%d",&m); } printf("请输入可分配总人数(介于 1 和 100 之间):\n"); scanf("%d",&pnumber); while(pnumber<1 || pnumber>100) { printf("请输入合法数据:\n"); scanf("%d",&pnumber); } printf("请输入工作数(介于 1 和 100 之间):\n"); scanf("%d",&jnumber); while(jnumber<1 || jnumber>100) { printf("请输入合法数据:\n");
指派问题1
匈牙利指派问题 有 n 项不同的任务,恰好 n 个人可分别承担这些 任务,但由于每人特长不同,完成各项任务的效率等情 况也不同。现假设必须指派每个人去完成一项任务,怎 样把 n 项任务指派给 n 个人,使得完成 n 项任务的 总的效率最高,这就是指派问题。也是一个简单的0—1 整数规划。即:
i 1 这个人做第 件事 xi 0 这个人不做第i件事
(1) 从只有一个0元素的行(列)开始,给这个0元素加圈,记作◎ 。然 后划去◎ 所在列(行)的其它0元素,记作Ø ;这表示这列所代表的任务 已指派完,不必再考虑别人了。 (2) 给只有一个0元素的列(行)中的0元素加圈,记作◎;然后划去◎ 所在行的0元素,记作Ø . (3) 反复进行(1),(2)两步,直到尽可能多的0元素都被圈出和划掉为 止。
第三步:做最少直线覆盖所有0元素
2 1 ◎ 0 2 2
5
◎ 0
5 3 4 2 3 Ø 0 ◎ 0 3
√
加2
3 3 ◎ 0 0 Ø 6 2 5 2 0 Ø 3
√ 减2
第四步,变换矩阵(bij)
以增加0元素:没有被 直线覆盖的所有元素中
的最小元素为2,然后
√ 减2 打√各行都减去2;打 √各列都加上2,得如 下矩阵,并转第二步进 行试指派:
Global optimal solution found. Objective value: Extended solver steps: Total solver iterations: Variable X11 X12 X13 X14 X15 X21 X22 X23 X24 X25 X31 X32 X33 X34 X35 X41 X42 X43 X44 X45 X51 X52 X53 X54 X55 Row 1 2 3 4 5 6 7 8 9 10 11
关于指派问题的数学建模及求解方法
但 是 , 用 匈 牙 利 法 虽 然 简 单 ,但 其 计 算 量 大 ,
特 别 对 于 人 数 和 工 作 数 都 比较 多 的 指 派 问 题 , 用 此 法 就 显 得 非 常 繁 琐 。 如 果 通 过 数 学 建 模 思 想 , 并 利 用 数 学 软 件 来 求 解 , 就 可 以 提 高 计 算 的速度和精确度 。 下 面 针对 不 同 的指 派 问题 建 立 相 应 的数 学 模 型,并利用 L i n g o软 件 编 程 求 解 ,其 方 法 对 求 解 指派 问题 有 一定 的借 鉴作 用和 指 导意义 。
设 { 1 0 , 当 不 指 去 伽, 工 作 1 1 当指 当 指 沂 去 惭 R 工作 ] 二 作, i = 1 , 2 , 人 , ; = 1 , 2 , A , ’ ’ ’ 一 ’
、
,
收 稿 日期 : 2 0 1 3 — 0 9 — 0 1 作者简介 :冯超玲 ( 1 9 7 0 - ),女 ,广西岑溪人 ,在职研 究生,讲师 ,研 究方向:数 学建模和矩 阵分析 。
中图分 类号 :0 1 4 1 . 4 文 献标 识码 :A 文 章编 号 :1 6 7 4 m3 0 8 3( 2 0 1 3) 0 4 一O 0 2 5 —O 4
1前 言
标 准 形 式 的 指 派 问题 一 般 可 以通 过 人 工 计 算 的 方 法 进 行 求 解 ,常 用 的 方 法 有 匈 牙 利 法 , 则 该 指派 问题 的数 学模 型为 :
m i n Z = ∑∑c
i = 1 j = l
∑ = 1 ,i = l , 2 , A, , z
j = l
∑ = 1 , i =1 , 2 , K, , J= 1 , 2 , 人, F /
数学建模pythonmatlab编程(指派问题)
数学建模pythonmatlab编程(指派问题)指派授课问题现有A、B、C、D四门课程,需由甲、⼄、丙、丁四⼈讲授,并且规定:每⼈只讲且必须讲1门课;每门课必须且只需1⼈讲。
四⼈分别讲每门课的费⽤⽰于表中:A B C D课费⽤⼈甲21097⼄154148丙13141611丁415139带包python代码:from scipy.optimize import linear_sum_assignmentimport numpy as np#cost =np.array([[4,1,3],[2,0,5],[3,2,2]])cost =np.array([[2,10,9,7],[15,4,14,8],[13,14,16,11],[4,15,13,9]])row_ind,col_ind=linear_sum_assignment(cost)print(row_ind)#开销矩阵对应的⾏索引print(col_ind)#对应⾏索引的最优指派的列索引print(cost[row_ind,col_ind])#提取每个⾏索引的最优指派列索引所在的元素,形成数组print(cost[row_ind,col_ind].sum())#数组求和#输出指派矩阵p = np.zeros((4,4))p[row_ind,col_ind]=1print(p)暴⼒python代码:# -*- coding: utf-8 -*-import numpy as npimport copyc=[2,10,9,7,15,4,14,8,13,14,16,11,4,15,13 ,9]c = np.array(c)c = c.reshape((4,4))all_p=[]class obj:def _init_(self):self.p=[]self.cost=0for i in range(4):for j in range(4):if j==i:continuefor u in range(4):if u==i or u==j :continuefor v in range(4):if v==i or v==j or v==u:continuep = np.zeros((4,4))p[0,i]=p[1,j]=p[2,u]=p[3,v]=1ans = obj()ans.p = copy.deepcopy(p)ans.cost = sum(sum(c*ans.p))all_p.append(ans)all_p.sort(key=lambda ans: ans.cost, reverse=False) print(all_p[0].p)print(all_p[0].cost)我写的matlab:clearC=[2 10 9 715 4 14 813 14 16 114 15 13 9];A = perms(1:4);%perm显⽰1,2,3,4四个数的全排列L = length(A)best=999best_mat=[]for i=1:La = zeros(4,4);b = A(i,:);%遍历全排列中的每⼀种c = 1:4;a(sub2ind(size(a), b, c))=1;%a矩阵指定的位置赋值为1s = sum(sum(a.*C));%求出费⽤和if best>s %挑出最⼤的best_mat=a;best=s;endendbest_matbest⽼师的matlab代码1:clearn=4;A=perms(1:n);G=size(A); %24 4 size(A,1) 24 size(A,2) 24n0=G(1); %24B=[2,10,9,7;15,4,14,8;13,14,16,11;4,15,13,9];for n1=1:n0%C为第n1中排列情况下,费⽤的4个取值C(1)=B(1,A(n1,1));C(2)=B(2,A(n1,2));C(3)=B(3,A(n1,3));C(4)=B(4,A(n1,4));%D{n1}表⽰第n1种情况下的4个取值D{n1}=[C(1),C(2),C(3),C(4)];s(n1)=sum(D{n1});end%找到最⼩的,返回a为⾏左边,b为纵坐标,a=1,b=9[a,b]=find(s==min(s));K=A(b,:)根据⽼师的代码改进我的代码:clearC=[2 10 9 715 4 14 813 14 16 114 15 13 9];A = perms(1:4);%perm显⽰1,2,3,4四个数的全排列L = length(A)for i=1:La = zeros(4,4);b = A(i,:);%遍历全排列中的每⼀种c = 1:4;a(sub2ind(size(a), b, c))=1;%a矩阵指定的位置赋值为1D{i}=a;S(i)=sum(sum(a.*C));%求出费⽤和end[a,b]=find(S==min(S))D{b}S(b)⽼师的matlab代码2:随机⽣成,不是很好,看运⽓clearA=[2 15 13 4];B=[10 4 14 15];C=[9 14 16 13];D=[7 8 11 9];Y=zeros(1,1000);s=64;x=zeros(1,4);for i= 1:1000X=randperm(4);Y(i)=A(X(1))+B(X(2))+C(X(3))+D(X(4));if Y(i)<ss=Y(i);x=X;endends,x⽹上常见的matlab代码:%适⽤于任意n阶系数矩阵clear all;C=[2 10 9 7,15 4 14 8,13 14 16 11,4 15 13 9,];%效率矩阵Cn=size(C,1);%计算C的⾏列数nC=C(:);%计算⽬标函数系数,将矩阵C按列排成⼀个列向量即可。
数学建模,获奖论文,工作指派问题
河南理工大学2014年数学建模竞赛论文答卷编号(竞赛组委会填写):题目编号:( F )论文题目:工作的安排参赛队员信息(必填):答卷编号(竞赛组委会填写):评阅情况(学校评阅专家填写):评阅1.评阅2.评阅3.工作的安排摘要:工作指派问题是日常生活中常见的一类问题。
本文所要研究就是在效率与成本的背景下,如何安排每个人员的工作分别达到以下三个要求:1、使得总的工作效率最大。
2、使得总的成本最低。
3、兼顾工作效率和成本,优化工作安排方案。
对于问题一,该问题属于工作指派问题,要求使工作效率最大。
为了得到最优的安排方案,我们采用0-1规划模型,引入0-1变量,即其中一人负责某一项工作记作1,否则为0,然后与之对应的效率相乘,然后把所有的工作安排情况这样处理后,再求和作为目标函数。
此外我们对该问题进行了如下约束:因为六个人刚好六份工作,所以每个人只能被安排一份工作,而且每份工作只允许一人来完成。
最后在模型求解中我们应用lingo软件编程使目标函数值最大化,根据此时对应的0-1变量的所有值,最终得到最优安排方案。
对于问题二,要求的方案使工作成本最低。
该问题与问题一相似,只是求解的是目标函数的最小值,为此我们建立了成本最小化模型,该模型同样应用了0-1规划方法,然后用与问题一中相似的方法建立目标函数,然后应用lingo软件编程使目标函数值最小,最终得到使成本最小的相应安排方案。
对于问题三,该问题兼顾效率与成本,属于多目标规划。
首先,数据标准化处理。
给出的效率成本数据属于两个不同性质的指标,两个指标之间存在着不可公度性,而且两项的数值整体大小水平不一样,会有大数起主导作用的影响,如果不对两个指标的数据进行标准化,就会得到错误的结果,为此我们首先采用极值差方法,用matlab编程对两项指标数据进行标准化。
经过极差变换后,两项指标值均在0和1之间。
对于此问题的多目标规划解决,我们采用理想点方法将多目标规划转化为单目标规划,建立了偏离理想点距离模型。
自-学年论文-指派问题分析与实现
学年论文题目:指派问题的算法分析与实现学生:学号:2011120101院(系):理学院专业:数学与应用数学指导教师:于鹏2013 年 12月 05日陕西科技大学学年论文任务书理学院数学与应用数学专业数学111 班级学生:题目:指派问题的算法分析与实现课题的意义及培养目标:指派问题多是求项目的工时最少,而很多情况下人们并不关心在指派问题多是求项目的工时最少,而很多情况下人们并不关心项目总工时的多少,而企业、公司的运营与管理中,管理者总是希望把人员最佳分派以发挥其最大工作效率,从而降低成本、提高效益。
然而,如果没有科学的方法是很难实现优化管理的,由此我们引入了指派问题。
在指派问题的背景、描述中充分理解该问题,运用匈牙利算法实现指派问题,实现指派问题在实际问题中的运用。
课题的主要任务(需附有技术指标分析):要求学生通过查阅相关的书籍、资料文献,首先了解匈牙利法,掌握一些基本的性质,掌握指派问题的最新科研成果以及问题。
本课题旨在研究指派问题的应用举例,利用指派问题的定义及其性质来求解中文说明书翻译的最优化模型。
学生:日期:指导教师:日期:教研室主任:日期:指派问题的算法分析与实现数学111班:指导教师:于鹏(陕西科技大学理学院陕西西安 710021)摘要:在指派问题多是求项目的工时最少,而很多情况下人们并不关心项目总工时的多少,而企业、公司的运营与管理中,管理者总是希望把人员最佳分派以发挥其最大工作效率,从而降低成本、提高效益。
然而,如果没有科学的方法是很难实现优化管理的,由此我们引入了指派问题。
这类问题研究的是n个人执行n项任务,执行每项任务的人数以及总的指派人项数均有限制,要求最优指派。
在指派问题的背景、描述中充分理解该问题,运用匈牙利算法实现指派问题,实现指派问题在实际问题中的运用。
关键词:指派问题,匈牙利解法Algorithm analysis and realization of the assignment problemABSTRACT: Seeking project assignment problem is the least amount of time, and in many cases, people don't care how much project in general, the enterprise, the company's operation and management, the manager always hopes to best dispatch personnel to exert its maximum working efficiency, to reduce costs and improve efficiency. However, if there is no scientific method is difficult to achieve optimal management, thus we introduced the assignment problem. This kind of problem is the study of the n individuals perform n task, perform each task and the number of total assigned item number are limited, the optimal assignment. In the description of the background of the assignment problem, fully understand the problem, using the Hungary algorithm assignment problem, assignment problem in the application of practical problems.KEYWORDS: Assignment problem,Hungarian method,指派问题(Assignment problem):在满足特定指派要求条件下,使指派方案总体效果最佳。
lingo 指派问题
Lingo 作业题1、指派问题设有n 个人, 计划作n 项工作, 其中ij c 表示第i 个人做第j 项工作的收益,求一种指派方式,使得每个人完成一项工作,使总收益最大.现6个人做6项工作的最优指派问题,其收益矩阵如表所示,请给出合理安排.一、问题分析根据第一题的题意我们可以知道,此题的最终目标是让我们建立一种数学模型来解决这个实际生活中的问题,此题意简而言之就是为了解决6个人做6项工作的指派最优问题,从而使题目中的ij C 收益等达到所需要的目的。
在题目中曾提到:每个人完成一项工作。
其意思就是每人只能做一项工作且每项工作只能做一人做。
二、符号说明此题属于最优指派问题,引入如下变量:题目中说:ij C 表示第i 个人做第j 项工作的收益。
例如56C 则表示第5个人做第6项工作。
即6611max ij ij i j z xy c ===∑∑s.t.:611ij i C==∑ ,j=1,2,3,···,6611ij j C==∑ ,i=1,2,3,···,6 01ij C =或 ,i,j=1,2,3,···,6此题需要求出最大值最优(最大值),即需要使用max ,表示最大。
在编程过程中“@bin (x )”是“限制x 为0或1”。
三、建立模型此题属于最优指派问题,与常见的线性问题极为类似。
因此,使用Lingo软件。
由于“每人只能做一项工作且每项工作只能做一人做”故采用0-1规划求得优。
四、模型求解(一)常规程序求解Lingo输入框:max=20*c11+15*c12+16*c13+5*c14+4*c15+7*c16+17*c21+15*c22+33*c23+12*c24+8*c25+6*c26+9*c31+12*c32+18*c33+16*c34+30*c35+13*c36+12*c41+8*c42+11*c43+27*c44+19*c45+14*c46+0*c51+7*c52+10*c53+21*c54+10*c55+32*c56+0*c61+0*c62+0*c63+6*c64+11*c65+13*c66;c11+c12+c13+c14+c15+c16=1;c21+c22+c23+c24+c25+c26=1;c31+c32+c33+c34+c35+c36=1;c41+c42+c43+c44+c45+c46=1;c51+c52+c53+c54+c55+c56=1;c61+c62+c63+c64+c65+c66=1;c11+c21+c31+c41+c51+c61=1;c12+c22+c32+c42+c52+c62=1;c13+c23+c33+c43+c53+c63=1;c14+c24+c34+c44+c54+c64=1;c15+c25+c35+c45+c55+c65=1;c16+c26+c36+c46+c56+c66=1;@bin(c11);@bin(c12);@bin(c13);@bin(c14);@bin(c15);@bin(c16);@bin(c21);@bin(c22);@bin(c23);@bin(c24);@bin(c25);@bin(c26);@bin(c31);@bin(c32);@bin(c33);@bin(c34);@bin(c35);@bin(c36);@bin(c41);@bin(c42);@bin(c43);@bin(c44);@bin(c45);@bin(c46);@bin(c51);@bin(c52);@bin(c53);@bin(c54);@bin(c55);@bin(c56);@bin(c61);@bin(c62);@bin(c63);@bin(c64);@bin(c65);@bin(c66);Lingo输出(结果)框:Global optimal solution found.Objective value: 142.0000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostC11 1.000000 -20.00000C12 0.000000 -15.00000C13 0.000000 -16.00000C14 0.000000 -5.000000C15 0.000000 -4.000000C21 0.000000 -17.00000 C22 0.000000 -15.00000 C23 1.000000 -33.00000 C24 0.000000 -12.00000 C25 0.000000 -8.000000 C26 0.000000 -6.000000 C31 0.000000 -9.000000 C32 0.000000 -12.00000 C33 0.000000 -18.00000 C34 0.000000 -16.00000 C35 1.000000 -30.00000 C36 0.000000 -13.00000 C41 0.000000 -12.00000 C42 0.000000 -8.000000 C43 0.000000 -11.00000 C44 1.000000 -27.00000 C45 0.000000 -19.00000 C46 0.000000 -14.00000 C51 0.000000 0.000000 C52 0.000000 -7.000000 C53 0.000000 -10.00000 C54 0.000000 -21.00000 C55 0.000000 -10.00000 C56 1.000000 -32.00000 C61 0.000000 0.000000 C62 1.000000 0.000000 C63 0.000000 0.000000 C64 0.000000 -6.000000 C65 0.000000 -11.00000 C66 0.000000 -13.00000Row Slack or Surplus Dual Price1 142.0000 1.0000002 0.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 0.000000 0.0000006 0.000000 0.0000007 0.000000 0.0000008 0.000000 0.0000009 0.000000 0.00000010 0.000000 0.00000011 0.000000 0.00000013 0.000000 0.000000(二)循环语句求解Lingo输入框:model:sets:gz/A1..A6/:a;ry/B1..B6/:b;yw(gz,ry):xy,x;endsetsdata:a=1,1,1,1,1,1;b=1,1,1,1,1,1;xy=20 15 16 5 4 7,17 15 33 12 8 6,9 12 18 16 30 13,12 8 11 27 19 14,0 7 10 21 10 32,0 0 0 6 11 13;enddatamax=@sum(yw:xy*x);@for(gz(i):@sum(ry(j):x(i,j))=1);@for(ry(j):@sum(gz(i):x(i,j))=1);@for(yw(i,j):@bin(x(i,j)));EndLingo输出(结果)框Global optimal solution found.Objective value: 142.0000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced Cost A( A1) 1.000000 0.000000 A( A2) 1.000000 0.000000 A( A3) 1.000000 0.000000 A( A4) 1.000000 0.000000 A( A5) 1.000000 0.000000 A( A6) 1.000000 0.000000 B( B1) 1.000000 0.000000 B( B2) 1.000000 0.000000B( B4) 1.000000 0.000000 B( B5) 1.000000 0.000000 B( B6) 1.000000 0.000000 XY( A1, B1) 20.00000 0.000000 XY( A1, B2) 15.00000 0.000000 XY( A1, B3) 16.00000 0.000000 XY( A1, B4) 5.000000 0.000000 XY( A1, B5) 4.000000 0.000000 XY( A1, B6) 7.000000 0.000000 XY( A2, B1) 17.00000 0.000000 XY( A2, B2) 15.00000 0.000000 XY( A2, B3) 33.00000 0.000000 XY( A2, B4) 12.00000 0.000000 XY( A2, B5) 8.000000 0.000000 XY( A2, B6) 6.000000 0.000000 XY( A3, B1) 9.000000 0.000000 XY( A3, B2) 12.00000 0.000000 XY( A3, B3) 18.00000 0.000000 XY( A3, B4) 16.00000 0.000000 XY( A3, B5) 30.00000 0.000000 XY( A3, B6) 13.00000 0.000000 XY( A4, B1) 12.00000 0.000000 XY( A4, B2) 8.000000 0.000000 XY( A4, B3) 11.00000 0.000000 XY( A4, B4) 27.00000 0.000000 XY( A4, B5) 19.00000 0.000000 XY( A4, B6) 14.00000 0.000000 XY( A5, B1) 0.000000 0.000000 XY( A5, B2) 7.000000 0.000000 XY( A5, B3) 10.00000 0.000000 XY( A5, B4) 21.00000 0.000000 XY( A5, B5) 10.00000 0.000000 XY( A5, B6) 32.00000 0.000000 XY( A6, B1) 0.000000 0.000000 XY( A6, B2) 0.000000 0.000000 XY( A6, B3) 0.000000 0.000000 XY( A6, B4) 6.000000 0.000000 XY( A6, B5) 11.00000 0.000000 XY( A6, B6) 13.00000 0.000000 X( A1, B1) 1.000000 -20.00000 X( A1, B2) 0.000000 -15.00000 X( A1, B3) 0.000000 -16.00000 X( A1, B4) 0.000000 -5.000000X( A1, B6) 0.000000 -7.000000 X( A2, B1) 0.000000 -17.00000 X( A2, B2) 0.000000 -15.00000 X( A2, B3) 1.000000 -33.00000 X( A2, B4) 0.000000 -12.00000 X( A2, B5) 0.000000 -8.000000 X( A2, B6) 0.000000 -6.000000 X( A3, B1) 0.000000 -9.000000 X( A3, B2) 0.000000 -12.00000 X( A3, B3) 0.000000 -18.00000 X( A3, B4) 0.000000 -16.00000 X( A3, B5) 1.000000 -30.00000 X( A3, B6) 0.000000 -13.00000 X( A4, B1) 0.000000 -12.00000 X( A4, B2) 0.000000 -8.000000 X( A4, B3) 0.000000 -11.00000 X( A4, B4) 1.000000 -27.00000 X( A4, B5) 0.000000 -19.00000 X( A4, B6) 0.000000 -14.00000 X( A5, B1) 0.000000 0.000000 X( A5, B2) 0.000000 -7.000000 X( A5, B3) 0.000000 -10.00000 X( A5, B4) 0.000000 -21.00000 X( A5, B5) 0.000000 -10.00000 X( A5, B6) 1.000000 -32.00000 X( A6, B1) 0.000000 0.000000 X( A6, B2) 1.000000 0.000000 X( A6, B3) 0.000000 0.000000 X( A6, B4) 0.000000 -6.000000 X( A6, B5) 0.000000 -11.00000 X( A6, B6) 0.000000 -13.00000Row Slack or Surplus Dual Price1 142.0000 1.0000002 0.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 0.000000 0.0000006 0.000000 0.0000007 0.000000 0.0000008 0.000000 0.0000009 0.000000 0.00000010 0.000000 0.00000012 0.000000 0.00000013 0.000000 0.000000五、模型结果通过以上的应用Lingo模型求解,得出结论:第1项工作由第1个人来完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
理工大学2014年数学建模竞赛论文答卷编号(竞赛组委会填写):题目编号:( F )论文题目:工作的安排参赛队员信息(必填):答卷编号(竞赛组委会填写):评阅情况(学校评阅专家填写):评阅1.评阅2.评阅3.工作的安排摘要:工作指派问题是日常生活中常见的一类问题。
本文所要研究就是在效率与成本的背景下,如何安排每个人员的工作分别达到以下三个要求:1、使得总的工作效率最大。
2、使得总的成本最低。
3、兼顾工作效率和成本,优化工作安排方案。
对于问题一,该问题属于工作指派问题,要求使工作效率最大。
为了得到最优的安排方案,我们采用0-1规划模型,引入0-1变量,即其中一人负责某一项工作记作1,否则为0,然后与之对应的效率相乘,然后把所有的工作安排情况这样处理后,再求和作为目标函数。
此外我们对该问题进行了如下约束:因为六个人刚好六份工作,所以每个人只能被安排一份工作,而且每份工作只允许一人来完成。
最后在模型求解中我们应用lingo软件编程使目标函数值最大化,根据此时对应的0-1变量的所有值,最终得到最优安排方案。
对于问题二,要求的方案使工作成本最低。
该问题与问题一相似,只是求解的是目标函数的最小值,为此我们建立了成本最小化模型,该模型同样应用了0-1规划方法,然后用与问题一中相似的方法建立目标函数,然后应用lingo软件编程使目标函数值最小,最终得到使成本最小的相应安排方案。
对于问题三,该问题兼顾效率与成本,属于多目标规划。
首先,数据标准化处理。
给出的效率成本数据属于两个不同性质的指标,两个指标之间存在着不可公度性,而且两项的数值整体大小水平不一样,会有大数起主导作用的影响,如果不对两个指标的数据进行标准化,就会得到错误的结果,为此我们首先采用极值差方法,用matlab编程对两项指标数据进行标准化。
经过极差变换后,两项指标值均在0和1之间。
对于此问题的多目标规划解决,我们采用理想点方法将多目标规划转化为单目标规划,建立了偏离理想点距离模型。
所谓的理想点就是只考虑效率时得到的最大效率值为横坐标,与以只考虑成本时得到的最小成本值为纵坐标组成的点。
然后我们再求出任意工作安排方案对应的效率值与成本值组成的点。
最后求出这两点之间的距离表达式,得到我们要求的目标函数。
最后,在与问题一问题二相同的约束条件下,我们采用lingo编程使目标函数逐渐向理想点逼近(但永远达不到理想点),即:使目标函数达到最小值时,此时对应的工作指派方案在问题三情况下是最佳方案。
关键词:0-1规划;数据标准化;多目标规划;偏离理想点距离模型;lingo一、问题重述已知有6个人,可以做6项工作,每个人做每项工作的效率和所用的成本如表中所示。
表1:每个人做每项工作的效率表2:每个人做每项工作的成本建立数学模型回答下面的问题:1、如何安排每个人的工作,使得总的工作效率最大。
2、如何安排每个人的工作,使得总的成本最低。
3、如何兼顾工作效率和成本,优化工作安排方案。
二、问题分析对于问题一,要安排每个人的工作,使得总的工作效率最大。
因为题目中的效率已经经过量化,所以要想反应效率的高低我们也可以通过数值大小来反应工作安排后的效率高低。
然而每个人的工作安排有很多种情况,为了简化问题,采用0-1规划模型,引入0-1变量,我们把其中一个人负责某项工作记作1,否则记作0,然后我们便可以把每个人工作安排的所有情况的效率与相应的0-1变量乘积的求和,便得到效率目标函数,而且考虑到lingo软件的强大优化求解能力,于是便可以借助lingo编程来求解实现目标函数的最大化,即工作效率综合的最大化,根据此时对应的0-1变量的所有值得到的工作安排方案就是最佳的。
对于问题二,要求安排每个人的工作,使得总的成本最低,该问题与问题一相似,同样可以应用0-1规划模型,求出目标函数表达式然后应用lingo软件编程来求解目标函数的最小值,便可得到最优工作分派方案。
问题三,要兼顾效率与成本这两个指标,即让效率尽量最大的同时让成本也最小,来得到最优的分派方案。
由于两个指标的性质不同,同时整体大小水平不一,所以第一步需要进行数据标准化,标准化方法有很多种,这里我们采用极值差方法对两项指标进行处理,经过极差变换后,两项指标值均在0和1之间。
数据标准化处理处理后,要兼顾效率与成本,则效率和成本就都会偏离问题一、问题二中的最优值,如果所给的工作安排方案能使两者距各自最优值的偏移量最小化则就意味着效率和成本都得到了兼顾,而且相对最优。
为此,我们便引入了理想点法,让任意安排方案得到的效率值与成本值组成的点距离理想点的距离最小化,而得到最小值对应的工作分配方案,此过程的求解我们同样可以借助lingo软件编程来解决,最终能够实现问题三的要求。
三、问题假设1.所有人对每个工作的效率与成本是定值,即不受外界影响;2.所有人都服从相应的安排;3.效率和成本重要程度相同;4.只考虑成本与效率两个指标。
四、符号说明五、模型的建立与求解5.1问题一的模型建立与求解5.1.1模型的建立首先我们根据题目建立效率矩阵),(j i efficient⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=664523242312133321212241452346200153),(j i efficient),(j i efficient 表示第i 人做第j 个工作的效率。
然后我们建立反应第i 人是否负责第j 个工作的0-1变量:),(j i k项工作个人被安排第第项工作个人不被安排第第 10),(j i j i j i k ⎩⎨⎧===由题目可知,六个人负责六项工作,所以每个人只能负责一项工作,而且每个工作只能由一个人来完成。
于是便有下面的约束条件:1,2,3..6;i 1),(61==∑=j j i k且1,2,3..6;j 1),( 61==∑=i j i k则目标函数为总的效率表达式总η如下:∑∑===6161总),(*),(i jj i k j i efficient η 综上便可得到最终效率模型如下:max ∑∑===6161总),(*),(i jj i k j i efficient η ⎪⎪⎪⎩⎪⎪⎪⎨⎧=======∑∑==1,2...6j , 1,2...6i 1,或0),(1,2...6j ,1),(1,2...6i ,1),(.6161j i k j i k j i k t s i j5.1.2 模型求解这是一个0-1优化问题,lingo 软件具有强大的优化问题解决能力,所以我们通过lingo 软件编程求解出最佳分配方案,根据程序运行结果我们最终得到的最优分配方案如下:(lingo 程序见附录,运算结果见附录):表1 最大效率工作分配方案而且此时的最大效率值为26。
5.2问题二的模型建立与求解 5.2.1成本最小化模型的建立由题目中给定的成本数据我们建立成本矩阵),(cos j i t 具体如下:⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=13118105847472549755252441029113571240184),(cos j i t同样有反应第i 人是否做第j 个工作的0-1变量:),(j i k项工作个人被安排第第项工作个人不被安排第第 10),(j i j i j i k ⎩⎨⎧===而且六个人负责六项工作,所以每个人只能负责一项工作,而且每个工作只能由一个人来完成。
于是便有下面的约束条件:1,2,3..6;i 1),(61==∑=j j i k且1,2,3..6;j 1),( 61==∑=i j i k则最终得到只考虑成本总成本的目标函数总cos t 如下:∑∑===6161总),(*),(cos cos i jj i k j i t t于是得到完整的成本最小化模型如下:min ∑∑===6161总),(*),(cos cos i jj i k j i t t ⎪⎪⎪⎩⎪⎪⎪⎨⎧=======∑∑==1,2...6j ,1,2...6i 1或0),(6...2 ,1j 1),(1,2...6i ,1),(..6161j i k j i k j i k t s i j 5.2.2、模型的求解与问题一类似的解法,应用lingo 软件编程求解使目标函数值最小(即:使成本最小)根据程序运行结果(程序及运行结果见附录,),我们得到的最佳分配方案如下:表2 最低成本分配工作方式5.3问题三的模型建立与求解 5.3.1多目标规划模型的建立第一步:进行数据标准化。
由于该问题要求兼顾效率与成本,而这两项指标却不是同性质的,而且成本数据都偏大一些,为了防止成本数据影响最终结果,需要对两项数据进行标准化,标准化方法有很多种,这里我们采用极值差方法对两项指标进行处理。
具体如下:首先对),(j i efficient用极值差方法进行标准化后得),(j i t reefficien :⎪⎪⎭⎫⎝⎛==--=≤≤≤≤≤≤≤≤≤≤≤≤6..3,2,16..3,2,1 )),((min )),((max )),((min ),(),(616161616161j i j i efficient j i efficient j i efficient j i efficient j i t reefficien j i j i j i 通过matlab 编程我们可以得到),(j i t reefficien 矩阵,此时),(j i t reefficien 矩阵的值均在0和1之间,最优值为1,最劣值为0。
然后对),(cos j i t 指标数据矩阵用极值差法标准化后得到),(cos j i t re :⎪⎪⎭⎫⎝⎛==--=≤≤≤≤≤≤≤≤≤≤≤≤6..3,2,16..3,2,1 )),((cos min )),((cos max )),((cos min ),(cos ),(cos 616161616161j i j i t j i t j i t j i t j i t re j i j i j i同样可以用matlab 编程得到),(cos j i t re 矩阵且值均在0和1之间),(j i efficient 和),(cos j i t matlab 标准化程序及结果见附录。
第二步:多目标规划模型的建立由第一问及第二问的基础我们可以得出两个规划目标函数如下: 首先,有总效率的目标函数:∑∑===6161),(*),(i jj i k j i t reefficien x )1( 其中x 表示任意一种工作分配方案得到的效率值。
同时有总成本的目标函数:∑∑===6161),(*),(cos i jj i k j i t re y )2( 其中y 表示任意一种工作分配方案得到的成本值。