数学建模获奖论文工作指派问题
最优化指派问题小论文
最优化小论文某企业拟生产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 * ( 你能证明吗?)
lingo 指派问题
lingo 指派问题Lingo作业题1、指派问题设有n个人, 计划作n项工作, 其中cij表示第i个人做第j项工作的收益,求一种指派方式,使得每个人完成一项工作,使总收益最大.现6个人做6项工作的最优指派问题,其收益矩阵如表所示,请给出合理安排. 人工作1 工作2 工作3 工作4 工作5工作6 1 20 15 16 5 4 7 2 17 15 33 12 8 6 3 9 12 18 16 30 13 4 12 8 11 27 19 14 5 0 7 10 21 10 32 6 0 0 0 6 11 13 解:一、问题分析根据第一题的题意我们可以知道,此题的最终目标是让我们建立一种数学模型来解决这个实际生活中的问题,此题意简而言之就是为了解决6个人做6项工作的指派最优问题,从而使题目中的Cij收益等达到所需要的目的。
在题目中曾提到:每个人完成一项工作。
其意思就是每人只能做一项工作且每项工作只能做一人做。
二、符号说明此题属于最优指派问题,引入如下变量:题目中说:Cij表示第i个人做第j项工作的收益。
例如C56则表示第5个人做第6项工作。
即maxz???xyijciji?1j?166s.t.:?Ci?16ij・・・,6 ?1 ,j=1,2,3,?Cj?16ij・・・,6 ?1 ,i=1,2,3,・・・,6 Cij?0或1 ,i,j=1,2,3,此题需要求出最大值最优(最大值),即需要使用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.0000 Extended solversteps: 0 Total solver iterations: 0Variable Value Reduced CostC11 1.000000 -20.00000 C120.000000 -15.00000 C13 0.000000-16.00000 C14 0.000000 -5.000000 C15 0.000000 -4.000000C16 0.000000 -7.000000 C210.000000 -17.00000 C22 0.000000-15.00000 C23 1.000000 -33.00000 C24 0.000000 -12.00000 C250.000000 -8.000000 C26 0.000000-6.000000 C31 0.000000 -9.000000 C32 0.000000 -12.00000 C330.000000 -18.00000 C34 0.000000-16.00000 C35 1.000000 -30.00000 C36 0.000000 -13.00000 C410.000000 -12.00000 C42 0.000000-8.000000 C43 0.000000 -11.00000 C44 1.000000 -27.00000 C450.000000 -19.00000 C46 0.000000-14.00000 C51 0.000000 0.000000 C52 0.000000 -7.000000 C530.000000 -10.00000 C54 0.000000-21.00000 C55 0.000000 -10.00000 C56 1.000000 -32.00000 C610.000000 0.000000 C62 1.0000000.000000 C63 0.000000 0.000000 C64 0.000000 -6.000000 C650.000000 -11.00000 C66 0.000000-13.00000Row Slack or Surplus Dual Price 1142.0000 1.000000 2 0.0000000.000000 3 0.000000 0.000000 4 0.000000 0.000000 50.000000 0.000000 6 0.0000000.000000 7 0.000000 0.000000 8 0.000000 0.000000 90.000000 0.000000 10 0.0000000.000000 11 0.000000 0.00000012 0.000000 0.000000 130.000000 0.000000(二)循环语句求解 Lingo输入框: model: sets:gz/A1..A6/:a; ry/B1..B6/:b; yw(gz,ry):xy,x; endsets data: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, 912 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.0000 Extended solversteps: 0 Total solver iterations: 0Variable Value Reduced CostA( A1) 1.000000 0.000000 A( A2)1.000000 0.000000 A( A3) 1.0000000.000000 A( A4) 1.000000 0.000000 A( A5) 1.000000 0.000000 A( A6)1.000000 0.000000 B( B1) 1.0000000.000000 B( B2) 1.000000 0.000000B( B3) 1.000000 0.000000 B( B4)1.000000 0.000000 B( B5) 1.0000000.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.000000.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.000000.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.0000000.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.000000.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.000000.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.000000.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.000000.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.0000000.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.000000.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.000000感谢您的阅读,祝您生活愉快。
教师培训课件:数学建模中的指派
在指派问题中,整数规划模型可以确保每个任务都由一个特定的人或机器完成,且每个任务只被分配一次。
非线性规划模型是在线性规划模型的基础上,将目标函数和约束条件扩展为非线性形式。
非线性规划模型适用于解决具有非线性特征的指派问题,如多目标优化、复杂系统设计等。
总结词
遗传算法是一种基于生物进化原理的优化算法,它通过模拟种群的遗传和进化过程来寻找最优解。在求解指派问题时,遗传算法能够处理大规模问题,并且在求解过程中能够自动调整搜索方向,具有一定的鲁棒性和全局搜索能力。
详细描述
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元素的行打√号; ④重复②和③,直至得不出新的打√号的行列为止;
⑤ 对于没有√的行画横线,所有打√号的列画竖线, 产生覆盖所有零元素的最少直线,直线数目应等于
指派问题(0-1规划 程序)
指派问题(assignment problem )问题一:今分派n 个工人n W W W ,,,21 去从事n 项工作n J J J ,,,21 . 工人i W 从事工作j J 的工作效率为n j i c ij ,,2,1,, =. 试求一个分派方案,使每个工人都从事一项工作,每项工作都由一个工人承担,且总工作效率最大. 建模: 令⎩⎨⎧=否则,件事,个人做第指派第,0,1j i x ij n j i ,,2,1, = 则可建立如下数学规划模型:⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧=======∑∑∑∑====n j i x n j x n i x t s x c z ij n i ij n j ij n i nj ijij ,,2,1,,1,0,,2,1,1,,2,1,1..min 1111算例1 利用LINGO 软件求解如下指派问题:5=n ,⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=61012961061476781296101417971215784C .模型求解: Lingo 程序:model : sets :Worker/W1..W5/; Job/J1..J5/;links(Worker,Job):c,x; endsets data : c=4,8,7,15,12,7,9,17,14,10,6,9,12,8,7, 6,7,14,6,10, 6,9,12,10,6;enddatamin =@sum (links:c*x);@for (Worker(i):@sum (Job(j):x(i,j))=1); @for (Job(j):@sum (Worker(i):x(i,j))=1);end注:程序中并没限制ij x 是0-1变量,但由其余约束条件足以保证返回的结果中变量的值为0、1. 结果:Global optimal solution found.Objective value: 34.00000 Extended solver steps: 0 Total solver iterations: 0Variable Value Reduced Cost C( W1, J1) 4.000000 0.000000 ……C( W5, J5) 6.000000 0.000000 X( W1, J1) 0.000000 4.000000 X( W1, J2) 0.000000 8.000000 X( W1, J3) 1.000000 7.000000 X( W1, J4) 0.000000 15.00000 X( W1, J5) 0.000000 12.00000 X( W2, J1) 0.000000 7.000000 X( W2, J2) 1.000000 9.000000 X( W2, J3) 0.000000 17.00000 X( W2, J4) 0.000000 14.00000 X( W2, J5) 0.000000 10.00000 X( W3, J1) 1.000000 6.000000 X( W3, J2) 0.000000 9.000000 X( W3, J3) 0.000000 12.00000 X( W3, J4) 0.000000 8.000000 X( W3, J5) 0.000000 7.000000 X( W4, J1) 0.000000 6.000000 X( W4, J2) 0.000000 7.000000 X( W4, J3) 0.000000 14.00000 X( W4, J4) 1.000000 6.000000 X( W4, J5) 0.000000 10.00000 X( W5, J1) 0.000000 6.000000 X( W5, J2) 0.000000 9.000000 X( W5, J3) 0.000000 12.00000 X( W5, J4) 0.000000 10.00000 X( W5, J5) 1.000000 6.000000算例2今分派5个工人521,,,W W W 去从事5项工作521,,,J J J . 工人i W 从事工作j J 的时间)5,,2,1,( j i c ij 见下表:试求一个分派方案,使每个工人都从事一项工作,每项工作都由一个工人承担,且总工作时间最少. 建模:令5,,1,,,,0,,1 =⎩⎨⎧=j i J W x j i ij 否则从事工作分派工人,则可建立如下0-1规划模型:⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧=======∑∑∑∑====5,,1,,1,05,,1,15,,1,1..max 51515151j i x j x i x t s x c z ij i ij j ij i j ijij 模型求解:Lingo 程序如下:model : sets :Worker/W1..W5/; Job/J1..J5/;links(Worker,Job):c,x; endsets data : c=8,6,10,9,12,9,12,7,11,9, 7,4,3,5,8, 9,5,8,11,8, 4,6,7,5,11;enddatamin =@sum (links:c*x);@for (Worker(i):@sum (Job(j):x(i,j))=1); @for (Job(j):@sum (Worker(i):x(i,j))=1); @for (links:@bin (x));end结果:Global optimal solution found.Objective value: 30.00000 Extended solver steps: 0 Total solver iterations: 0Variable Value Reduced Cost C( W1, J1) 8.000000 0.000000 ……C( W5, J5) 11.00000 0.000000 X( W1, J1) 1.000000 8.000000 X( W1, J2) 0.000000 6.000000 X( W1, J3) 0.000000 10.00000 X( W1, J4) 0.000000 9.000000 X( W1, J5) 0.000000 12.00000 X( W2, J1) 0.000000 9.000000 X( W2, J2) 0.000000 12.00000 X( W2, J3) 0.000000 7.000000 X( W2, J4) 0.000000 11.00000 X( W2, J5) 1.000000 9.000000 X( W3, J1) 0.000000 7.000000 X( W3, J2) 0.000000 4.000000 X( W3, J3) 1.000000 3.000000 X( W3, J4) 0.000000 5.000000 X( W3, J5) 0.000000 8.000000 X( W4, J1) 0.000000 9.000000 X( W4, J2) 1.000000 5.000000 X( W4, J3) 0.000000 8.000000 X( W4, J4) 0.000000 11.00000 X( W4, J5) 0.000000 8.000000 X( W5, J1) 0.000000 4.000000 X( W5, J2) 0.000000 6.000000 X( W5, J3) 0.000000 7.000000 X( W5, J4) 1.000000 5.000000 X( W5, J5) 0.000000 11.00000 Row Slack or Surplus Dual Price 1 30.00000 -1.000000……11 0.000000 0.000000 由上述结果知,问题的最优解为15442332511=====x x x x x ,其余0=ij x . 模型说明:(1)另解:化为六个顶点的完全二分图6,6K 上的最优匹配问题,利用匈牙利算法(1955,Kuhn )来解.(3)Lindo 主要用来解线性规划问题,故建议使用Lingo 来解数学规划. 问题二:某公司拟将8个职员平均分配到4个办公室.根据直观评估,有些职员在一起时合作得很好,有些则不然.下表给出了8个职员两两之间的相容程度ij c (由于对称性,只给出了一半数据),数字越小代表相容得越好:问:应如何分配这些职员,才能是他们相容得最好? 建模: 令⎩⎨⎧=否则,到同一个办公室,和分配职员,0,1j i x ij 8,,1, =j i 则可建立如下数学规划模型:⎪⎪⎩⎪⎪⎨⎧≤<≤====∑∑==<81,1,08,,1,1..min j i x i x t s x c z ij i k i j jk j i ij ij 或 由所给相容程度数据ij c 的对称性,上述模型只针对表中对角线右上方的数据关系而建立;约束条件“8,,1,1 ==∑==i xik i j jk或”保证了任一职员i 仅被分配一次.模型求解:model:sets:ren/1..8/;links(ren,ren)| &2 # GT # &1:c,x;endsetsdata:c=9 3 4 2 1 5 61 7 3 52 14 4 2 9 21 5 5 28 7 62 34;enddatamin=@sum(links:c*x);@for(ren(i):@sum(links(j,k)| j #EQ# i #or# k #EQ# i:x(j,k))=1); @for(links:@bin(x));end结果:Global optimal solution found.Objective value: 6.000000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostC( 1, 2) 9.000000 0.000000……C( 7, 8) 4.000000 0.000000X( 1, 2) 0.000000 9.000000X( 1, 3) 0.000000 3.000000X( 1, 4) 0.000000 4.000000X( 1, 5) 0.000000 2.000000X( 1, 6) 1.000000 1.000000X( 1, 7) 0.000000 5.000000X( 1, 8) 0.000000 6.000000X( 2, 3) 0.000000 1.000000X( 2, 4) 0.000000 7.000000X( 2, 5) 0.000000 3.000000X( 2, 6) 0.000000 5.000000X( 2, 7) 1.000000 2.000000X( 2, 8) 0.000000 1.000000X( 3, 4) 0.000000 4.000000X( 3, 5) 0.000000 4.000000X( 3, 6) 0.000000 2.000000X( 3, 7) 0.000000 9.000000X( 3, 8) 1.000000 2.000000X( 4, 6) 0.000000 5.000000X( 4, 7) 0.000000 5.000000X( 4, 8) 0.000000 2.000000X( 5, 6) 0.000000 8.000000X( 5, 7) 0.000000 7.000000X( 5, 8) 0.000000 6.000000X( 6, 7) 0.000000 2.000000X( 6, 8) 0.000000 3.000000X( 7, 8) 0.000000 4.000000Row Slack or Surplus Dual Price1 6.000000 -1.000000……9 0.000000 0.000000或Lingo程序:model:min=9*x12+3*x13+4*x14+2*x15+ x16+5*x17+6*x18+x23+7*x24+3*x25+5*x26+2*x27+ x28+4*x34+4*x35+2*x36+9*x37+2*x38+x45+5*x46+5*x47+2*x48+8*x56+7*x57+6*x58+2*x67+3*x68+4*x78;x12+x13+x14+x15+x16+x17+x18=1;x12+x23+x24+x25+x26+x27+x28=1;x13+x23+x34+x35+x36+x37+x38=1;x14+x24+x34+x45+x46+x47+x48=1;x15+x25+x35+x45+x56+x57+x58=1;x16+x26+x36+x46+x56+x67+x68=1;x17+x27+x37+x47+x57+x67+x78=1;x18+x28+x38+x48+x58+x68+x78=1;@bin(x12);@bin(x13);@bin(x14);@bin(x15);@bin(x16);@bin(x17);@bin(x18); @bin(x23);@bin(x24);@bin(x25);@bin(x26);@bin(x27);@bin(x28);@bin(x34);@bin(x35);@bin(x36);@bin(x37);@bin(x38);@bin(x45);@bin(x46);@bin(x47);@bin(x48);@bin(x56);@bin(x57);@bin(x58);@bin(x67);@bin(x68);@bin(x78);end结果:Global optimal solution found.Objective value: 6.000000Objective bound: 6.000000Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced Cost X12 0.000000 9.000000 X13 0.000000 3.000000 X14 0.000000 4.000000 X15 0.000000 2.000000 X16 1.000000 1.000000 X17 0.000000 5.000000 X18 0.000000 6.000000 X23 0.000000 1.000000 X24 0.000000 7.000000 X25 0.000000 3.000000 X26 0.000000 5.000000 X27 1.000000 2.000000 X28 0.000000 1.000000 X34 0.000000 4.000000 X35 0.000000 4.000000 X36 0.000000 2.000000 X37 0.000000 9.000000 X38 1.000000 2.000000 X45 1.000000 1.000000 X46 0.000000 5.000000 X47 0.000000 5.000000 X48 0.000000 2.000000 X56 0.000000 8.000000 X57 0.000000 7.000000 X58 0.000000 6.000000 X67 0.000000 2.000000 X68 0.000000 3.000000 X78 0.000000 4.000000Row Slack or Surplus Dual Price 1 6.000000 -1.000000 ……9 0.000000 0.000000 问题三:(婚姻问题)某财主想把自己的三个女儿C B A ,,嫁出去。
指派问题
7 0 2 0 2
4
3 0 0 0
0 8 3 5 0
11 8 0 0 4
0 4 1 4 3
7 0 2 0 2
4
3 0 0 0
0 8 3 5 0
11 8 0 0 4
0 4 1 4 3
0 1 0 0 0
0
xij
0 0
0 0 0
1 0 0
0 0 1
0 1 0
1 0 0 0 0
Z*=7+6+9+4=32
0; (2)如果人多事少,增加一些虚拟“事”,虚拟“事”做事的费用系数也取 为0; 3)一个人可做几件事的指派问题 可将某个人化作同样几个“人”接受指派,这几个“人”做同一件事的费用 系数一样。 4)某事一定不能由某人做的指派问题
可将相应的费用系数取为足够大的数M。
指派问题 assignment problem
定理2 若矩阵A的元素可分成“0”与非“0”两部分,则 覆盖“0”元素的最小直线数等于位于不同行不同列的 “0”元素(独立零元素)的最大个数.
匈牙利法的条件是:问题求最小值、人数与工作数相等及效率非负
匈牙利算法的步骤:
第一步:变换系数矩阵,使其每行每列都出现0元素。 首先每行减去该行最小数,再每列减去该列最小数。
0
0 8 3 5 0
11 8
0
0
4
0 4 1 4 3
7 0 2 0 2
4
3
0
0
0
0 8 3 5 0
11 8
0
0
4
0 4 1 4 3
0 1 0 0 0
0
0
1
0
0
解为: 0 0 0 0 1
数学建模作业_动态规划求解指派问题
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");
数模lingo应用-分配问题
例7.7 分配问题(指派问题,Assignment Problem )这是个给n 个人分配n 项工作以获得某个最高总效果的问题。
第i 个人完成第j 项工作 需要平均时间c ij 。
要求给每个人分配一项工作,并要求分配完这些工作,以使完成全部任 务的总时间为最小。
该问题可表示如下:minij ni ij x c ∑=1s.t. ∑==⋯=n i ij x 1n;,1,2,j ,1∑==⋯=n j ij x 1n;,1,2,i ,1 i ij x n;,1,2,j ,1,0⋯==显然,此问题可看作是运输问题的特殊情况。
可将此问题看作具有n 个源和n 个汇的问 题,每个源有1 单位的可获量,而每个汇有1 单位的需要量。
从表面看,这问题要求用整数规划以保证xij 能取0 或1。
然而,幸运的是,此问题是运输问题的特例,因此即使不限制xij取0 或1 ,最优解也将取0 或1。
如果把婚姻看作分配问题,丹茨证明,整数性质证明一夫一妻会带来最美满幸福的生活!显然,分配问题可以作为线性规划问题来求解,尽管模型可 能很大。
例如,给100 人分配100 项工作将使所得的模型具有10000 个变量。
这时,如采用专门算法效果会更好。
时间复杂度为O(n3) 的匈牙利算法便是好选择,这是由Kuhu (1955) 提出的。
现举一例: 若某单位指派工人做某工作的完成时间表如下:问应如何指派任务,使完成任何的总时间最少?model:!7 个工人,7 个工作的分配问题;sets:workers/w1..w7/;jobs/j1..j7/;links(workers,jobs): cost,volume;endsets!目标函数;min=@sum(links: cost*volume);!每个工人只能有一份工作;@for(workers(I):@sum(jobs(J): volume(I,J))=1;);!每份工作只能有一个工人;@for(jobs(J):@sum(workers(I): volume(I,J))=1;);data:cost= 6 2 6 7 4 2 54 95 3 8 5 85 2 1 9 7 4 37 6 7 3 9 2 72 3 9 5 7 2 65 5 2 2 8 11 49 2 3 12 4 5 10;enddataend计算的部分结果为:Global optimal solution found at iteration: 14Objective value: 18.00000Variable Value Reduced Cost COST( W1, J1) 6.000000 0.000000 COST( W1, J2) 2.000000 0.000000 COST( W1, J3) 6.000000 0.000000 COST( W1, J4) 7.000000 0.000000 COST( W1, J5) 4.000000 0.000000 COST( W1, J6) 2.000000 0.000000 COST( W1, J7) 5.000000 0.000000 COST( W2, J1) 4.000000 0.000000 COST( W2, J2) 9.000000 0.000000 COST( W2, J3) 5.000000 0.000000 COST( W2, J4) 3.000000 0.000000COST( W2, J6) 5.000000 0.000000 COST( W2, J7) 8.000000 0.000000 COST( W3, J1) 5.000000 0.000000 COST( W3, J2) 2.000000 0.000000 COST( W3, J3) 1.000000 0.000000 COST( W3, J4) 9.000000 0.000000 COST( W3, J5) 7.000000 0.000000 COST( W3, J6) 4.000000 0.000000 COST( W3, J7) 3.000000 0.000000 COST( W4, J1) 7.000000 0.000000 COST( W4, J2) 6.000000 0.000000 COST( W4, J3) 7.000000 0.000000 COST( W4, J4) 3.000000 0.000000 COST( W4, J5) 9.000000 0.000000 COST( W4, J6) 2.000000 0.000000 COST( W4, J7) 7.000000 0.000000 COST( W5, J1) 2.000000 0.000000 COST( W5, J2) 3.000000 0.000000 COST( W5, J3) 9.000000 0.000000 COST( W5, J4) 5.000000 0.000000 COST( W5, J5) 7.000000 0.000000 COST( W5, J6) 2.000000 0.000000 COST( W5, J7) 6.000000 0.000000 COST( W6, J1) 5.000000 0.000000 COST( W6, J2) 5.000000 0.000000 COST( W6, J3) 2.000000 0.000000 COST( W6, J4) 2.000000 0.000000 COST( W6, J5) 8.000000 0.000000 COST( W6, J6) 11.00000 0.000000 COST( W6, J7) 4.000000 0.000000 COST( W7, J1) 9.000000 0.000000 COST( W7, J2) 2.000000 0.000000 COST( W7, J3) 3.000000 0.000000 COST( W7, J4) 12.00000 0.000000 COST( W7, J5) 4.000000 0.000000 COST( W7, J6) 5.000000 0.000000 COST( W7, J7) 10.00000 0.000000 VOLUME( W1, J1) 0.000000 4.000000 VOLUME( W1, J2) 0.000000 0.000000 VOLUME( W1, J3) 0.000000 3.000000 VOLUME( W1, J4) 0.000000 4.000000 VOLUME( W1, J5) 1.000000 0.000000 VOLUME( W1, J6) 0.000000 0.000000VOLUME( W2, J1) 0.000000 2.000000 VOLUME( W2, J2) 0.000000 7.000000 VOLUME( W2, J3) 0.000000 2.000000 VOLUME( W2, J4) 1.000000 0.000000 VOLUME( W2, J5) 0.000000 4.000000 VOLUME( W2, J6) 0.000000 3.000000 VOLUME( W2, J7) 0.000000 3.000000 VOLUME( W3, J1) 0.000000 5.000000 VOLUME( W3, J2) 0.000000 2.000000 VOLUME( W3, J3) 0.000000 0.000000 VOLUME( W3, J4) 0.000000 8.000000 VOLUME( W3, J5) 0.000000 5.000000 VOLUME( W3, J6) 0.000000 4.000000 VOLUME( W3, J7) 1.000000 0.000000 VOLUME( W4, J1) 0.000000 5.000000 VOLUME( W4, J2) 0.000000 4.000000 VOLUME( W4, J3) 0.000000 4.000000 VOLUME( W4, J4) 0.000000 0.000000 VOLUME( W4, J5) 0.000000 5.000000 VOLUME( W4, J6) 1.000000 0.000000 VOLUME( W4, J7) 0.000000 2.000000 VOLUME( W5, J1) 1.000000 0.000000 VOLUME( W5, J2) 0.000000 1.000000 VOLUME( W5, J3) 0.000000 6.000000 VOLUME( W5, J4) 0.000000 2.000000 VOLUME( W5, J5) 0.000000 3.000000 VOLUME( W5, J6) 0.000000 0.000000 VOLUME( W5, J7) 0.000000 1.000000 VOLUME( W6, J1) 0.000000 4.000000 VOLUME( W6, J2) 0.000000 4.000000 VOLUME( W6, J3) 1.000000 0.000000 VOLUME( W6, J4) 0.000000 0.000000 VOLUME( W6, J5) 0.000000 5.000000 VOLUME( W6, J6) 0.000000 10.00000 VOLUME( W6, J7) 0.000000 0.000000 VOLUME( W7, J1) 0.000000 7.000000 VOLUME( W7, J2) 1.000000 0.000000 VOLUME( W7, J3) 0.000000 0.000000 VOLUME( W7, J4) 0.000000 9.000000 VOLUME( W7, J5) 0.000000 0.000000 VOLUME( W7, J6) 0.000000 3.000000 VOLUME( W7, J7) 0.000000 5.000000Row Slack or Surplus Dual Price1 18.00000 -1.0000002 0.000000 -5.0000003 0.000000 -5.0000004 0.000000 -3.0000005 0.000000 -5.0000006 0.000000 -5.0000007 0.000000 -4.0000008 0.000000 -5.0000009 0.000000 3.00000010 0.000000 3.00000011 0.000000 2.00000012 0.000000 2.00000013 0.000000 1.00000014 0.000000 3.00000015 0.000000 0.000000 00000。
数学建模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按列排成⼀个列向量即可。
人力资源分配数学建模论文
百度文库- 让每个人平等地提升自我数学建模论文——人力资源安排问题本题的背景是在当今社会的企业中如何来实现人力资源分配,来完成不同的目标,我们这道题要解决的就是如何安排人力资源是项目最早完成,我们解决这道题的具体思路是,考虑该问题为指派问题,以消耗的最小总时间来作为目标函数,然后跟具体题意来找出约束条件,然后利用lingo软件进行编程计算,最后将得出的结果导入excel进行整理,给出最后答案。
针对问题1、2,首先根据问题,我们利用优化方法来建立目标函数,然后分别找出约束条件,使其满足题意,采用lingo软件变成计算得出最优解,并分析最优值,同时给出最后答案。
由于问题2是在问题1的基础之上增加了一个约束条件,因此前两个问的模型基本一致。
针对问题3、4审校任务是要在翻译完成之后开始,因此问题3、4也可以采用问题1、2的思想来建立数学模型,然而问题3在求出结果之后,我们发现我们所要的结果与所求的结果存在一定误差,因此我们将对问题3的结果做人工处理,对G的工作任务作其局部调整,从此求得最优结果。
而问题4是在问题3的基础之上加了一个约束条件,因此问题4的模型和处理方法基本一致。
关键词指派问题人力资源 lingo编程在企事业单位,人力资源部门经常要根据当前情况把人员分配给即将开始的项目。
一般地,对项目而言,越早完成越好;而对人力资源部门而言,在该项目上所花费的人力越少越好。
现有一个项目,需要把一份中文资料翻译成英语、法语、日语、德语和俄语。
已知A、B、C、D、E、F和G七个人翻译该资料所需要花费的时间如表1所示,且这七个人均表示可参加该项目。
【注意:为了译文的连贯性,不允许两人或两人以上做同一种译文的翻译工作。
一个人在同一时间只能做一种译文的翻译工作。
】英语法语日语德语俄语A 2 15 13 1 8B 10 4 14 15 7C 9 14 16 13 8D 7 8 11 9 4E 8 4 15 8 6F 12 4 6 8 13G 5 16 8 5 10试通过建立数学模型(而非枚举法)回答下述问题。
数学建模论文(分配问题)
公平席位的分配系别:机电工程系模具班学号: 1号摘要:分配问题是日常生活中经常遇到的问题,它涉及到如何将有限的人力或其他资源以“完整的部分”分配到下属部门或各项不同任务中。
分配问题涉及的内容十分广泛,例如:大到召开全国人民代表大会,小到某学校召开学生代表大会,均涉及到将代表名额分配到各个下属部门的问题。
代表名额的分配(亦称为席位分配问题)是数学在人类政治生活中的一个重要应用,应归属于政治模型。
而当代表的人数在总和没有发生变化的情况下,所占比例却发生了变化时,一个如何分配才能使分配公平的问题就摆在了我们的面前。
因此,我们要通过建立数学模型来确定一种能够使分配公平的方法来分配关键字:理想化原则; 整数规划; 席位公平分配问题的提出:某学院有3个系共200名学生,其中甲系100人,乙系60人,丙系40人,现要选出20名学生代表组成学生会。
如果按学生人数的比例分配席位,那么甲乙丙系分别占10、6、4个席位,这当然没有什么问题(即公平)。
但是若按学生人数的比例分配的席位数不是整数,就会带来一些麻烦。
比如甲系103人,乙系63人,丙系34人,怎么分?问题重述学院的最初人数见下表,此系设20个席位代表。
甲乙丙总人数1006040200学生人数比例:100/200 60/200 40/200按比例分配方法:分配人数=学生人数比例初按比例分配席位:甲乙丙共10 6 4 20若出现学生转系情况:甲乙丙总人数103 63 34200学生人数比例:103/200 63/200 34/200按例分配方法:比例分配出现最小数时,先按整数分配席位,余下的按小数的大小分配席位按比例分配席位:甲乙丙10.815 6.615 3.57按比例分配席位,丙系却缺少一席的情况,按比例分配席位的方法有缺陷,试建立更合理的分配方法.模型假设分配席位的情况单位人数席位数A单位 X n mB单位 Y n。
m。
若公平分配,则会出现的情况应当是 m=m1,即X/n=Y/m1当m>m。
数学建模,获奖论文,工作指派问题
河南理工大学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):在满足特定指派要求条件下,使指派方案总体效果最佳。
最优工作安排问题 数学建模
B最优工作安排问题摘要:最优工作安排在当今这个劳动力不再廉价的社会至关重要。
本文主要研究最优工作安排问题,可视为运筹学中的指派问题。
对于指派问题,分别通过建立0-1整体线性规划模型,多目标线性规划模型以及二次0-1整数线性规划模型加以解决。
考虑到一个人可在不同的时间做不同的工作,因此我们引入“0-1变量”x表示是ij否指派第i个人去完成第j项工作。
对于多目标问题,为解决不同目标之间产生的矛盾,将多目标问题转化为单目标问题,例如:在第三问中,采用极大极小法。
通过翻译题目要求来建立目标函数和约束条件,并利用Lingo软件编写程序,对问题求解。
最后对所得到的最优解进行检验,以提高答案的科学性与可靠性。
关键字:0-1模型最优解多目标线性规划 Lingo一、背景分析1.1 问题重述现有五件工作甲、乙、丙、丁、戊要交给A、B、C、D、E、F和G七个人来完成。
完成这个工作所需要花费的时间如表1所示,且这七个人均表示可参加该项目。
【注意:为了工作的连贯性,不允许两人或两人以上做同一种工作。
一个人在同一时间只能做一种工作。
】问题1. 应该如何进行工人的安排使得这五件工作能尽早完成?问题2. 在问题1中若规定每人最多承担一种工作,试求相应的最优人力安排方案。
问题 3. 接上级通知,为了保证工作的质量,需要对完成工作之后进行检查且规定同一个人不能即做这件工作又检查这件工作。
显然,在这种新的要求下,这五件工作完成当且仅当所有的工作检查完。
已知这七人均表示可以参加检查工作,他们检查这五种工作的用时如表2所示。
【注意:对于每个工作,只有当该工作完全完成之后才能进行检查工作。
为了检查的连贯性,不允许两人或两人以上检查同一种工作。
一个人在同一时间只能检查一种工作。
】问:应该如何进行人力的安排使得该五项工作尽早完成?试求相应的最优人力安排方案。
1.2 问题分析整个问题均可视为运筹学中的指派问题。
对于问题一,为了使得这五项工作能尽早完成,可引入“0-1变量”,定义ijx表示是否指派第i个人去完成第j项工作,从而使时间量化。
2011年全国大学生数学建模竞赛B题优秀论文
i 1, 2, 20
j 1, 2, ,92
(4)
根据上述模型,我们使用 Lingo 及 MatLab 软件进行求解,工作量均衡度 σ=7.7018, 各平台管辖的路口结果见表 2: 表 2 A 区各平台管辖的路口 平台 管辖的路口 到达最远路口时间(min)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2
三、符号定义
各符号及含义见表 1。 表1 符号 v tij pj S Ge(S) N M q σ T C(t) 符号含义说明 含义 交巡警的速度 交巡警从第 i 个平台到第 j 个路口节点所需时间 第 j 个路口节点的发案率 满足时间要求的路口节点的集合 集合 S 元素的个数 表示区内到任一平台时间均超过 3min 的路口数 表示区内路口总数 平台设置合理度 工作量均衡度 封锁完所有要道的总用时 完全封锁这个逃逸范围的最少路口集合
12250300350400450500100150200250300350400450500550f交通服务平台服务范围图表示交叉路口表示服务平台表示交通服务平台的服务范围增加平台后f区各平台管辖示意图522最佳围堵的全市交巡警平台调度模型交巡警平台围堵嫌犯是动态的过程全市80个平台参与围堵当交巡警的最短围堵时间小于嫌犯的逃逸时间减去案发至报警的3min则实现成功围堵
由于一个平台的警力最多封锁一个路口, 则
j 1
13
ij
1
(5)
设第 i 个平台封锁第 j 个关键路口节点的时间为 tij,则封锁完所有要道的总用时 T 以用时最长的为准,即
T max tij ij
i
为实现快速封锁,选取总用时最短的方案。
- 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),(j i efficient 表示第i 人做第j 个工作的效率。
然后我们建立反应第i 人是否负责第j 个工作的0-1变量:),(j i k 由题目可知,六个人负责六项工作,所以每个人只能负责一项工作,而且每个工作只能由一个人来完成。
于是便有下面的约束条件:且 则目标函数为总的效率表达式总 如下:综上便可得到最终效率模型如下: 5.1.2模型求解这是一个0-1优化问题,lingo 软件具有强大的优化问题解决能力,所以我们通过lingo 软件编程求解出最佳分配方案,根据程序运行结果我们最终得到的最而且此时的最大效率值为26。
5.2问题二的模型建立与求解 5.2.1成本最小化模型的建立由题目中给定的成本数据我们建立成本矩阵),(cos j i t 具体如下: 同样有反应第i 人是否做第j 个工作的0-1变量:),(j i k而且六个人负责六项工作,所以每个人只能负责一项工作,而且每个工作只能由一个人来完成。
于是便有下面的约束条件:且 则最终得到只考虑成本总成本的目标函数总cos t 如下:于是得到完整的成本最小化模型如下: 5.2.2、模型的求解与问题一类似的解法,应用lingo 软件编程求解使目标函数值最小(即:使成本最小)根据程序运行结果(程序及运行结果见附录,),我们得到的最佳分5.3问题三的模型建立与求解5.3.1多目标规划模型的建立第一步:进行数据标准化。
由于该问题要求兼顾效率与成本,而这两项指标却不是同性质的,而且成本数据都偏大一些,为了防止成本数据影响最终结果,需要对两项数据进行标准化,标准化方法有很多种,这里我们采用极值差方法对两项指标进行处理。
具体如下:首先对),(j i efficient用极值差方法进行标准化后得),(j i t reefficien : 通过matlab 编程我们可以得到),(j i t reefficien 矩阵,此时),(j i t reefficien 矩阵的值均在0和1之间,最优值为1,最劣值为0。
然后对),(cos j i t 指标数据矩阵用极值差法标准化后得到),(cos j i t re : 同样可以用matlab 编程得到),(cos j i t re 矩阵且值均在0和1之间),(j i efficient 和),(cos j i t matlab 标准化程序及结果见附录。
第二步:多目标规划模型的建立由第一问及第二问的基础我们可以得出两个规划目标函数如下: 首先,有总效率的目标函数:其中x 表示任意一种工作分配方案得到的效率值。
同时有总成本的目标函数:其中y 表示任意一种工作分配方案得到的成本值。
于是,多目标函数规划模型建立如下: 规划模型由于以上所建的多目标规划模型问题求解过于复杂,为了简化问题,我们采用了理想点法,求出任意工作分配方案的效率与成本偏离理想点的距离的目标函数表达式,然后使目标函数表达式的值逼近最小,此时对应的方案就是在兼顾效率与成本的前提下的最优工作分配方案,具体步骤如下:第一步:设标准化后理想点),(00y x p 。
其中0x 表示只考虑效率指标时,效率的最大值。
0y 表示只考虑成本时,成本的最小值。
0x 、0y 求解可以借助问题一、二中的程序只是将其中的效率),(j i efficient ,成本),(cos j i t 中的数据替换成标准化后的),(j i t reefficien 和),(cos j i t re 中的数据。
4.3333000=x 、1.3076000=y ,即理想点为)1.307600 , 4.333300(0p 。
第二步:求点),(y x p 与理想点),(000y x p 之间距离的表达式。
其中x 表示任意一种工作分配方案得到的效率值,y 表示任意一种工作分配方案得到的成本值。
则),(y x p 与),(000y x p 的距离表达式),(0p p L 如下:2020)()(),(y y x x p p L o ---=(3)然后将多目标规划模型中德(1)、(2)式代入(3)式得到),(0p p L 最终表达式),(0p p L .第三步:最终单目标规划模型建立。
六个人负责六项工作,所以每个人只能负责一项工作,而且每个工作只能由一个人来完成。
于是便有下面的约束条件如下:且综上所述,可以得到偏离理想点距离模型如下: 5.3.3模型的求解此模型的求解主要借助lingo 编程,使目标函数值逐渐逼近理想点,但达到理想点是不可能的,只需达到目标函数2020)()(),(y y x x p p L o ---=最小值,即最接近理想点的点就是兼顾成本与效率的最佳工作分配方案,此时效率与成本都达到了最优。
根据程序运行结果,最佳工作分配方案如下(求解模型的lingo此时的),(0p p L 最小值为1.695967六、模型的评价与推广6.1模型的优点1、本题中的模型都是有简单到复杂一步步建立,文章整体逻辑性强,可读性强。
2、对于问题一二的解决中我们应用了0-1规划模型大大降低了问题的难度,使目标函数成为求和的形式,便于计算。
同时我们应用lingo 这一软件大大减小了解决0-1规划模型的计算。
3、问题三中,我们使数据都标准化这样使得数据才有衡量的标准,防止了因为成本原始数据较大儿在最终结果中起主导影响,此外,我们应用理想点法把多目标规划转化为单目标规划使问题得以简化,同时使用距离这一概念使模型简单易于理解而且有益于编程计算。
6.2模型的缺点首先就是该模型不能解决当效率与成本的重要性不同时得工作指派问题(即在效率与成本的权重不同时),比如有时决策者希望七成考虑效率,三成考虑成本的情况。