数学建模指派问题论文

合集下载

最优化指派问题小论文

最优化指派问题小论文

最优化小论文某企业拟生产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) 再从所得新系数矩阵的每列元素中减去该列的最小元素。

数学建模,获奖论文设计,工作指派问题

数学建模,获奖论文设计,工作指派问题

河南理工大学2014年数学建模竞赛论文答卷编号(竞赛组委会填写):题目编号:( F )论文题目:工作的安排参赛队员信息(必填):答卷编号(竞赛组委会填写):评阅情况(学校评阅专家填写):评阅1.评阅2.评阅3.工作的安排摘要:工作指派问题是日常生活中常见的一类问题。

本文所要研究就是在效率与成本的背景下,如何安排每个人员的工作分别达到以下三个要求:1、使得总的工作效率最大。

2、使得总的成本最低。

3、兼顾工作效率和成本,优化工作安排方案。

对于问题一,该问题属于工作指派问题,要求使工作效率最大。

为了得到最优的安排方案,我们采用0-1规划模型,引入0-1变量,即其中一人负责某一项工作记作1,否则为0,然后与之对应的效率相乘,然后把所有的工作安排情况这样处理后,再求和作为目标函数。

此外我们对该问题进行了如下约束:因为六个人刚好六份工作,所以每个人只能被安排一份工作,而且每份工作只允许一人来完成。

最后在模型求解中我们应用lingo软件编程使目标函数值最大化,根据此时对应的0-1变量的所有值,最终得到最优安排方案。

对于问题二,要求的方案使工作成本最低。

该问题与问题一相似,只是求解的是目标函数的最小值,为此我们建立了成本最小化模型,该模型同样应用了0-1规划方法,然后用与问题一中相似的方法建立目标函数,然后应用lingo软件编程使目标函数值最小,最终得到使成本最小的相应安排方案。

对于问题三,该问题兼顾效率与成本,属于多目标规划。

首先,数据标准化处理。

给出的效率成本数据属于两个不同性质的指标,两个指标之间存在着不可公度性,而且两项的数值整体大小水平不一样,会有大数起主导作用的影响,如果不对两个指标的数据进行标准化,就会得到错误的结果,为此我们首先采用极值差方法,用matlab编程对两项指标数据进行标准化。

经过极差变换后,两项指标值均在0和1之间。

对于此问题的多目标规划解决,我们采用理想点方法将多目标规划转化为单目标规划,建立了偏离理想点距离模型。

数学建模大赛论文范文

数学建模大赛论文范文

数学建模大赛论文范文一、问题重述在约10,000米高空的某边长160公里的正方形区域内,经常有若干架飞机作水平飞行。

区域内每架飞机的位置和速度向量均由计算机记录其数据,以便进行飞行管理。

当一架欲进入该区域的飞机到达区域边缘时,记录其数据后,要立即计算并判断是否会与区域内的其它飞机发生相撞。

如果发生相撞,则应计算如何调整各架(包括新进入的)飞机的飞行方向角,以避免碰撞。

现假设条件如下:(1) 不相撞的标准为任意两架飞机的距离大于8公里; (2) 飞机飞行方向角调整的幅度不应超过30度; (3) 所有飞机的飞行速度均为每小时800公里;(4) 进入该区域的飞机在到达区域边缘时,与区域内飞机的距离应在60公里以上;(5) 最多需考虑6架飞机;(6) 不必考虑飞机离开此区域后的情况。

请你对这个避免碰撞的飞行管理问题建立数学模型,列出计算步骤,对以下数据进行计算(方向角误差不超过0.01度),要求飞机飞行方向角调整的幅度尽量小。

设该区域4个顶点的坐标为(0,0),(160,0),(160,160),(0,160)。

记录数据为:注:方向角指飞行方向与x轴正向的夹角。

二、问题分析此问题很容易想到以飞机调整的飞行角度平方和作为目标函数,而以每两架飞机之间的最小距离不超过8km,各飞机飞行角度调整的值不超过30°为约束条件。

如此得出的是一个非线性模型,在计算上可能会复杂些,但一目了然。

三、符号说明t表示表示时间;; xi,yi分别表示第i架飞机的横纵坐标(问题中已给出);i表示第i架飞机的飞行方向角(问题中已给出)dij(t)表示t时刻第i架飞机与第j架飞机间的距离;。

v表示飞机的飞行高度(v800)四、模型的建立由题意可知,目标函数是6f i2i1约束条件为Dij mindij264 和it06,i,j1,2,,6,i j其中dij(t)(xi xj vt(cos(i i)cos(j j))) 22(yi yj vt(sin(i i)sin(j j)))2利用微积分的知识可求出Dij,由2d(dij)dt这里a0tba(xi xj)(cos(i i)cos(j j))(yi yj)(sin(i i)sin(j j))b v[(cos(i i)cos(j j))2(sin i(i2))])s in(jj将t代入即可求出Dij。

数学建模经典论文五篇

数学建模经典论文五篇

1、 血样的分组检验在一个很大的人群中通过血样检验普查某种疾病,假定血样为阳性的先验概率为p(通常p 很小).为减少检验次数,将人群分组,一组人的血样混合在一起化验.当某组的混合血样呈阴性时,即可不经检验就判定该组每个人的血样都为阴性;而当某组的混合血样呈阳性时,则可判定该组至少有一人血样为阳性,于是需要对这组的每个人再作检验.(1)、当p 固定时(如0.01%,…,0.1%,…,1%)如何分组,即多少人一组,可使平均总检验次数最少,与不分组的情况比较. (2)、当p 多大时不应分组检验.(3)、当p 固定时如何进行二次分组(即把混合血样呈阳性的组再分成小组检验,重复一次分组时的程序).模型假设与符号约定1 血样检查到为阳性的则患有某种疾病,血样呈阴性时的情况为正常2 血样检验时仅会出现阴性、阳性两种情况,除此之外无其它情况出现,检验血样的药剂灵敏度很高,不会因为血样组数的增大而受影响. 3 阳性血样与阳性血样混合也为阳性 4 阳性血样与阴性血样混合也为阳性 5 阴性血样与阴性血样混合为阴性 n 人群总数 p 先验概率血样阴性的概率q=1-p血样检验为阳性(患有某种疾病)的人数为:z=np 发生概率:x i P i ,,2,1, = 检查次数:x i R i ,,2,1, = 平均总检验次数:∑==xi i i R P N 1解1设分x 组,每组k 人(n 很大,x 能整除n,k=n/x ),混合血样检验x 次.阳性组的概率为k q p -=11,分组时是随机的,而且每个组的血样为阳性的机率是均等的,阳性组数的平均值为1xp ,这些组的成员需逐一检验,平均次数为1kxp ,所以平均检验次数1kxp x N +=,一个人的平均检验次数为N/n,记作:k k p kq k k E )1(1111)(--+=-+=(1) 问题是给定p 求k 使E(k)最小. p 很小时利用kp p k -≈-1)1(可得kp kk E +=1)( (2) 显然2/1-=p k 时E(k)最小.因为K 需为整数,所以应取][2/1-=p k 和1][2/1+=-p k ,2当E (k )>1时,不应分组,即:1)1(11>--+k p k,用数学软件求解得k k p /11-->检查k=2,3,可知当p>0.307不应分组.3将第1次检验的每个阳性组再分y 小组,每小组m 人(y 整除k,m=k/y ).因为第1次阳性组的平均值为1xp ,所以第2次需分小组平均检验1yxp 次,而阳性小组的概率为m q p -=12(为计算2p 简单起见,将第1次所有阳性组合在一起分小组),阳性小组总数的平均值为21yp xp ,这些小组需每人检验,平均检验次数为21yp mxp ,所以平均总检验次数211yp mxp yxp x N ++=,一个人的平均检验次数为N/n,记作(注意:n=kx=myx)p q q q mk p p m p k m k E m k -=-+-+=++=1),1()1(111),(211 (3) 问题是给定p 求k,m 使E (k,m )最小.P 很小时(3)式可简化为21),(kmp mkpk m k E ++≈ (4)对(4)分别对k,m 求导并令其等于零,得方程组:⎪⎪⎩⎪⎪⎨⎧=+-=++-0012222kp m kp mp mp k 舍去负数解可得:2/14/3,21--==p m p k (5)且要求k,m,k/m 均为整数.经在(5)的结果附近计算,比较E(k,m),得到k,m 的最与表1比较可知,二次分组的效果E(k,m)比一次分组的效果E(k)更好.2、铅球掷远问题铅球掷远比赛要求运动员在直径2.135m 的圆内将重7.257kg 的铅球投掷在 45的扇形区域内,建立模型讨论以下问题1.以出手速度、出手角度、出手高度 为参数,建立铅球掷远的数学模型;2.考虑运动员推铅球时用力展臂的动 作,改进以上模型.3.在此基础上,给定出手高度,对于 不同的出手速度,确定最佳出手角度 问题1模型的假设与符号约定1 忽略空气阻力对铅球运动的影响.2 出手速度与出手角度是相互独立的.3 不考虑铅球脱手前的整个阶段的运动状态. v 铅球的出手速度 θ 铅球的出手角度 h 铅球的出手高度 t 铅球的运动时间 L 铅球投掷的距离g 地球的重力加速度(2/8.9s m g=)铅球出手后,由于是在一个竖直平面上运动.我们,以铅球出手点的铅垂方向为y 轴,以y 轴与地面的交点到铅球落地点方向为x 轴构造平面直角坐标系.这样,铅球脱手后的运动路径可用平面直角坐标系表示,如图.因为,铅球出手后,只受重力作用(假设中忽略空气阻力的影响),所以,在x 轴上的加速度0=,在y 轴上的加速度g a y -=.如此,从解析几何角度上,以时间 t 为参数,易求得铅球的运动方程:⎪⎩⎪⎨⎧+-==h gt t v y t v x 221sin cos θθ 对方程组消去参数t ,得h x x v gy ++-=)(tan cos 2222θθ……………………………………………(1) 当铅球落地时,即是0=y ,代入方程(1)解出x 的值v ggh gh v g v x θθθθθ2222sin 22cos sin cos sin 2-++=对以上式子化简后得到铅球的掷远模型θθθ22222cos 22sin 222sin g v h g v g v L +⎪⎪⎭⎫ ⎝⎛+=………………………………(2) 问题2我们观察以上两个阶段,铅球从A 点运动到B 点,其运动状态是匀加速直线运动的,加速距离是2L 段.且出手高度与手臂长及出手角度是有一定的联系,进而合理地细化各个因素对掷远成绩的约束,改进模型Ⅰ.在投掷角度为上进行受力分析,如图(3)由牛顿第二定 律可得,ma mg F =-θsin 再由上式可得,θsin g mFa -=………………………………………(3) 又,22022aL v v =-,即22022aL v v += (4)将(3)代入(4)可得,θsin 2222202g L m FL v v -⎪⎭⎫⎝⎛+= ………………………(5) (5)式进一步说明了,出手速度v 与出手角度θ有关,随着θ的增加而减小.模型Ⅰ假设出手速度与出手角度相互独立是不合理的. 又根据图(2),有θsin 1'L h h += (6)由模型Ⅰ,同理可以得到铅球脱手后运动的距离θθθ22222cos 22sin 222sin g v h g v g v L +⎪⎪⎭⎫ ⎝⎛+= 将 (4)、(5)、(6)式代入上式整理,得到铅球运动的距离()⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⎥⎦⎤⎢⎣⎡-⎪⎭⎫⎝⎛++++-⎪⎭⎫ ⎝⎛+=θθθθθ22220'2220sin sin 22sin 2112sin 2sin 22g L m FL v h g g g L m FL v L 对上式进行化简:将m=7.257kg,2/8.9s m g = 代入上式,再令m h 60.1'= (我国铅球运动员的平均肩高),代入上式进一步化简得,()⎪⎪⎭⎫ ⎝⎛-++-++⨯θθθθθ2222232222sin sin 6.192756.06.19sin 6.19sin 2756.0sin 1L FL v L FL v ………………(7) 所以,运动员投掷的总成绩θcos 1L L S +=问题3给定出手高度,对于不同的出手速度,要确定最佳的出手角度.显然,是求极值的问题,根据微积分的知识,我们要先求出驻点,首先,模型一中L 对θ求导得,g hv g v g hv v g v d dL θθθθθθθθ22224242cos 82sin sin cos 42cos 2sin 2cos +-+=令0=θd dL,化简后为, 0sin cos 42cos 2sin cos 82sin 2cos 2422242=-++θθθθθθθhgv v hgv v v根据倍角与半角的三角关系,将以上方程转化成关于θ2cos 的方程,然后得,hv g g vgh gh222cos +=+=θ (3)()θθ2sin sin 6.192756.051.0222L FL v L -+=从(3)式可以看出,给定铅球的出手高度h ,出手速度v 变大,相应的最佳出手角度θ也随之变大.对(3)式进行分析,由于0,0>>θh ,所以02cos >θ,则40πθ≤<.所以,最佳出手角度为)arccos(212vgh gh +=θ θ是以π2为周期变化的,当且仅当N k k ∈⎪⎭⎫⎝⎛∈±,4,02ππθ时,πθk 2±为最佳出手角度.特别地,当h=0时(即出手点与落地点在同一高度),最佳出手角度︒=45α3、零件的参数设计粒子分离器某参数(记作y )由7个零件的参数(记作x x 12,,…x 7)决定,经验公式为:y x x x x x x x x x x x =⎛⎝ ⎫⎭⎪-⎛⎝ ⎫⎭⎪⨯--⎛⎝ ⎫⎭⎪⎡⎣⎢⎢⎤⎦⎥⎥⎛⎝ ⎫⎭⎪-17442126210361532108542056324211667......y 的目标值(记作y 0)为1.50。

大学生数学建模论文(专业推荐范文10篇)

大学生数学建模论文(专业推荐范文10篇)

大学生数学建模是一项基础性得学科竞赛,可以交流更多得经验,学习更多得知识,所以大学生数学建模很受学者们得欢迎,本篇文章就向大家介绍一些大学生数学建模论文,供给大家作为一个参考。

大学生数学建模论文专业推荐范文10篇之第一篇:数学建模对大学生综合素质影响得调查研究---------------------------------------------------------------------------------------------------------------------感谢使用本套资料,希望本套资料能带给您一些思维上的灵感和帮助,个人建议您可根据实际情况对内容做适当修改和调整,以符合您自己的风格,不太建议完全照抄照搬哦。

---------------------------------------------------------------------------------------------------------------------摘要:文章通过问卷网以调查问卷得形式和线下访谈得方法 ,对笔者所在学校参加过数学建模竞赛得同学和未参加过数学建模竞赛得同学对数学建模对自身综合素质得影响进行了调查研究。

调查表明,大部分学生都能认识到数学建模学习和竞赛对其自身综合素质得提升是有帮助得,但是大多数学生对数学建模得意义认识还不到位。

文章对调查结果进行分析,结合笔者得切身体会对地方高校数学建模课程教学及学生参加竞赛提出某些建议。

关键词:数学建模; 大学生; 综合素质; 研究;一、前言随着社会得不断进步和发展,大学生想要在激烈得人才竞争中脱颖而出,就必须要不断提高自己得综合素质,而良好得综合素质不仅应具有坚实得理论基础,扎实得专业知识,还应该具有较强得创新能力、与他人合作得能力、较强得语言表达能力、以及稳定得心理状态。

许多科学家断言未来科学技术得竞争是数学技术得竞争,这无疑对数学能力提出了更高得要求,不可否认数学建模课程教学及建模竞赛是提升大学生数学能力得有效途径。

数学建模模版之指派问题

数学建模模版之指派问题

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");

关于指派问题的数学建模及求解方法

关于指派问题的数学建模及求解方法

但 是 , 用 匈 牙 利 法 虽 然 简 单 ,但 其 计 算 量 大 ,
特 别 对 于 人 数 和 工 作 数 都 比较 多 的 指 派 问 题 , 用 此 法 就 显 得 非 常 繁 琐 。 如 果 通 过 数 学 建 模 思 想 , 并 利 用 数 学 软 件 来 求 解 , 就 可 以 提 高 计 算 的速度和精确度 。 下 面 针对 不 同 的指 派 问题 建 立 相 应 的数 学 模 型,并利用 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 /

数学建模论文六篇

数学建模论文六篇

数学建模论文六篇数学建模论文范文1那么当前我国高中同学的数学建模意识和建模力量如何呢?下面是节自有关人士对某次竞赛中的一道建模题目同学的作答状况所作的抽样调查。

题目内容如下:某市教育局组织了一项竞赛,聘请了来自不同学校的数名老师做评委组成评判组。

本次竞赛制定四条评分规章,内容如下:(1)评委对本校选手不打分。

(2)每位评委对每位参赛选手(除本校选手外)都必需打分,且所打分数不相同。

(3)评委打分方法为:倒数第一名记1分,倒数其次名记2分,依次类推。

(4)竞赛结束后,求出各选手的平均分,按平均分从高到低排序,依此确定本次竞赛的名次,以平均分最高者为第一名,依次类推。

本次竞赛中,选手甲所在学校有一名评委,这位评委将不参与对选手甲的评分,其他选手所在学校无人担当评委。

(Ⅰ)公布评分规章后,其他选手觉得这种评分规章对甲更有利,请问这种看法是否有道理?(请说明理由)(Ⅱ)能否给这次竞赛制定更公正的评分规章?若能,请你给出一个更公正的评分规章,并说明理由。

本题是一道开放性很强的好题,给同学留有很大的发挥空间,不少同学都有精彩的表现,例如关于评分规章的修正,就有下列几种方案:方案1:将选手甲所在学校评委的评分方法改为倒数第一名记1+分,倒数其次名记2+,…依次类推;(评分标准)方案2:将选手甲所在学校评委的评分方法改为在原来的基础上乘以;方案3:对甲评分时,用其他评委的平均分计做甲所在学校评委的打分;然而也有不少同学为空白,究其缘由可能除了时间因素,同学对于较长的文字表述产生畏惧心理、不能正确阅读是重要因素。

同时,一些同学由于不能正确理解规章(3),得出选手甲的平均得分为,其他选手的平均得分为,从而得出错误结论.不少同学消失“甲所在学校的评委会有意压低其他选手的分数,因而对甲有利”的解释,而没有意识到作出必要的假设是数学建模方法中的重要且必要的一环。

有些同学在正确理解题意的基础上,提出了“规章对甲有利”的理由,例如:排名在甲前的同学少得了1分;甲所在学校的评委不给其他选手最高分(n分),所以甲得最高分的概率比其他选手高;相当于甲所在学校的评委把最高分给了甲;甲少拿一个分数,若少拿最低分,则有利;若少拿最高分,则不利;等等。

数学建模优秀论文(精选范文10篇)2021

数学建模优秀论文(精选范文10篇)2021

数学建模优秀论文(精选范文10篇)2021一、基于数学建模的空气质量预测研究本文以某城市为研究对象,通过数学建模方法对空气质量进行预测。

通过收集历史空气质量数据,构建空气质量预测模型。

运用机器学习算法对模型进行训练和优化,提高预测精度。

通过对预测结果的分析,为城市环境管理部门提供决策支持,有助于改善城市空气质量。

二、数学建模在物流优化中的应用本文针对某物流公司配送路线优化问题,运用数学建模方法进行求解。

建立物流配送模型,考虑配送成本、时间、距离等因素。

运用线性规划、遗传算法等优化算法对模型进行求解。

通过对求解结果的分析,为物流公司提供优化配送路线的建议,降低物流成本,提高配送效率。

三、基于数学建模的金融风险管理研究本文以某银行为研究对象,通过数学建模方法对金融风险进行管理。

构建金融风险预测模型,考虑市场风险、信用风险、操作风险等因素。

运用风险度量方法对模型进行评估。

通过对预测结果的分析,为银行提供风险控制策略,降低金融风险,提高银行稳健性。

四、数学建模在能源消耗优化中的应用本文针对某工厂能源消耗优化问题,运用数学建模方法进行求解。

建立能源消耗模型,考虑设备运行、生产计划等因素。

运用优化算法对模型进行求解。

通过对求解结果的分析,为工厂提供能源消耗优化策略,降低能源消耗,提高生产效益。

五、基于数学建模的交通流量预测研究本文以某城市交通流量为研究对象,通过数学建模方法进行预测。

收集历史交通流量数据,构建交通流量预测模型。

运用时间序列分析方法对模型进行训练和优化。

通过对预测结果的分析,为城市交通管理部门提供决策支持,有助于缓解城市交通拥堵。

数学建模优秀论文(精选范文10篇)2021六、数学建模在医疗资源优化配置中的应用本文以某地区医疗资源优化配置问题为研究对象,通过数学建模方法进行求解。

建立医疗资源需求模型,考虑人口分布、疾病类型等因素。

运用线性规划、遗传算法等优化算法对模型进行求解。

通过对求解结果的分析,为政府部门提供医疗资源优化配置策略,提高医疗服务质量。

2011年全国大学生数学建模竞赛B题优秀论文

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
为实现快速封锁,选取总用时最短的方案。

数学建模A优秀论文

数学建模A优秀论文

数学建模A优秀论文数学建模A优秀论文在日常学习、工作生活中,大家都接触过论文吧,论文是对某些学术问题进行研究的手段。

一篇什么样的论文才能称为优秀论文呢?以下是小编为大家收集的数学建模A优秀论文,供大家参考借鉴,希望可以帮助到有需要的朋友。

数学建模A优秀论文11. 问题重述:(略)2. 问题背景:交待问题背景,说明处理此问题的意义和必要性。

优点:叙述详尽,条理清楚,论证充分缺点:前两段过于冗长,可作适当删节3. 问题分析:进一步阐述解决此问题的意义所在,分析了问题,简述要解决此问题需要哪些条件和大体的解决途径优点:条理比较清晰,论述符合逻辑,表达清楚缺点:似乎不够详细,尤其是第三段有些过于概括。

4. 模型的假设与约定:共有8条比较合理的假设优点:假设有依据,合情合理。

比如第3条对上座率的假设,参考了上届奥运会的情况并充分考虑了我国国情,客观真实。

第8条假设用了分块规划和割补的方法,估计面积形状比较合理,而且达到了充分花剑问题的作用。

缺点:有些假设阐述不太清楚也存在不合理之处,第4条假设中面积在50-100之间,下面的假设应该是介于50-100之间的数,假设为最小的50平方米,有失一般性。

第6条假设中,假设MS最大营业额为20万,没有说明是多长时间内的,而且此处没有对下文提到的LMS作以说明。

5. 符号说明及名词定义优点:比较详细清楚,考虑周全,而且较合理地将定性指标数量化。

缺点:有些地方没有标注量纲,比如A和B的量纲不明确。

6. 模型建立与求解6.1问题一:对所给数据惊醒处理和统计,得出规律,找到联系。

优点:统计方法合理,所统计数据对解决问题确实必不可少,而且用图表和条形图的方式反映不同量的变化趋势,图文并茂,叙述清楚而且简明扼要,除了对数据统计情况进行报告以外,还就他们之间相关量之间的关系进行了详细阐述,使数据统计更具实效性。

6.2问题二:6.2.1最短路的确定为确定最短路径又提出了一系列假设并阐述了理由,在这些假设下规定了最短路径优点:假设有根据,理由合情合理缺点:第4条中假设观众消费是单向的,虽然简化了问题但有失一般性,事实上观众往返经过商业区消费的概率是相差比较大的,我认为应改为假设观众在往返过程中消费且仅消费一次。

数学建模指派问题论文

数学建模指派问题论文

目录一问题重述 (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之间。

对于此问题的多目标规划解决,我们采用理想点方法将多目标规划转化为单目标规划,建立了偏离理想点距离模型。

自-学年论文-指派问题分析与实现

自-学年论文-指派问题分析与实现

学年论文题目:指派问题的算法分析与实现学生:学号: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):在满足特定指派要求条件下,使指派方案总体效果最佳。

数学建模pythonmatlab编程(指派问题)

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

目录一问题重述 (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)从第一行开始,若该行只有一个零元素打上()号。

对打()号零元素所在列划一条直线。

若该行没有零元素或有两个以上零元素(已划去的不计在内),则转下一行,一直到最后一行为止;(2)从第一列开始,若该列只有一个零元素就对这个零元素打上()号(同样不考虑已划去的零元素),对打()号零元素所在行划一条直线。

若该列没有零元素或 还有两个以上零元素,则转下一列,并进行到最后一列; (3)重复(1)、(2)两个步骤,可能出现三种情况:① 矩阵每行都有一个打()号零元素,很显然,按照上述步骤得到的打()的零元素都位于不同行不同列,因此就找到了问题的答案;② 有多于两行或两列存在两个以上零元素,即出现了零元素的闭回路,这个时候可顺着闭回路的走向,对每个间隔的零元素打上()号,然后对所有打()号零元素或所有列或所在行划一条直线。

③ 矩阵中所有零元素或打上()号,或被划去,但打()号零元素个数小于m 。

第四步:为了设法使每行都有一个打()的零元素,就要继续对矩阵进行变换;(1)从矩阵未被直线覆盖的元素找出最小元素k ;(2)对矩阵的每行,当该行有直线覆盖时,令i u =0,无直线覆盖的,令i u =k ; (3)对矩阵的每列,当该列有直线覆盖时,令j v =-k ,无直线覆盖的,令j v =0; (4)得列一个变换后的矩阵,其中每个元素ij b =ij a -i u -j v 。

第五步:回到第三步,反复进行,一直到矩阵中每一行都有一个打()的零元素为止,即找到最优分配方案为止。

四 问题分析指派问题的标准形式(以人和事为例)如下。

有n 个人和n 项任务,已知第i 个人做第j 件事的费用为ijc ,要求确定人和事之间的一一对应的指派方案,使完成这n 项任务的费用最少。

一般把目标函数的系数写为矩阵形式,称矩阵⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡==⨯nn n n n n nn ij c c c c c c c c c c C ..................)(212222111211为系数矩阵(Coefficient Matrix ),也称为效益矩阵或价值矩阵。

矩阵的元素ijc (i,j=1,2,…n )表示分配第i 个人去完成第j 项任务时的效益。

一般地,以ijx 表示给定的资源分配用于给定活动时的有关效益(时间,费用,价值等),且nj x ij ,...,2,1i,j i ,1j i ,0=⎩⎨⎧=,项活动单位资源用于第分配第项活动单位资源用于第不分配第然后我们求解最小(最大(这里不再讨论))代价和模型,1111min max (1)..1,1,2,...,(2)1,1,2,...,(3)01,,1,2,...,(4)nnij iji j nijj n iji ij z c x s txi n xj n x i j n===========∑∑∑∑()或当然,作为可行解,矩阵的每列元素中都有且只有一个1,以满足约束条件式(3)。

每行元素中也有且只有一个1,以满足约束条件(2)。

指派问题n!个可行解。

如果要求解最大值11maxnnij ij i j z c x ===∑∑时,我们将构造一个新的矩阵()ijc ',使ijij c M c '=-,其中M 是一个足够大的常数。

一般取ij c 中最大的元素作为M ,求解()11min n nij ij i j z M c x =='=-∑∑,所得的解()ij x 就是原问题的解。

事实上,由()1111111111M Mn n n n nij ijijij i j i j nnnnijij iji j i j nn ij iji j c x M c xx c xc x =========='=-=-=-∑∑∑∑∑∑∑∑∑∑可的此结论。

五 问题实现1问题重述已知问题甲乙丙丁四个人,ABCD 四项工作,要求每人只能做一项工作,每项工作只由一人完成,问如何指派总时间最短? 每个人的对每项工作的代价如下:2 问题求解开始求解2.1由匈牙利法构造目标函数xd ijiji j *min 921201∑∑===引入0-1变量x ij ,x ij =1:第i 人做第j 项工作 x ij =0:第i 人不做第j 项工作约束条件: {个工作j 个工作从事第第1个工作不能被从事第0i i j i x =(i=1,2,...,92 j=1,2, (20)2.2模型建立即一项任务只由一个人完成一人只能完成一项任务求出目标函数3 模型解析根据指派问题的最优性定理,求最优解的问题可以转换为求效益矩阵的 大1元素组的问题。

匈牙利法的一般计算步骤为:步骤1:对效益矩阵进行初等变换,使每行每列都出现0元素。

1. 从效益矩阵A 中每一行减去该行的最小元素;2. 再在所得矩阵中每一列减去该列的最小元素,得矩阵D ;步骤2:将矩阵D 中0元素置为1元素,非0元素置为0元素,得矩阵E 。

112131411222324213233343142434441111x x x x x x x x x x x x x x x x +++=+++=+++=+++= 111213142122232431323334414243441111x x x x x x x x x x x x x x x x +++=+++=+++=+++= 11121314212223243132333441424344min 3584685425859252Z x x x x x x x x x x x x x x x x =+++++++++++++++步骤3:确定独立1元素组。

1.在矩阵E中含有1元素的各行中选择1元素最少的行,比较该行中各1元素所在的列中1元素的个数,选择1元素的个数最少的那一列中的1元素;2.将所选的1元素所在的行和列的元素置为0;3.重复第2步和第3步,直到没有1元素为止,即得到一个独立1元素组。

步骤4:判断是否为最大独立1元素组。

1.如果所得独立1元素组为原效益矩阵的最大独立1元素组(即1元素的个数等于矩阵的阶数),则已得到最优解,停止计算;2.如果所得独立1元素组还不是原效益矩阵的最大独立1元素组,那么继续寻找可扩路的方法对其进行扩张,进行下一步;步骤5:利用寻找可扩路方法确定最大独立1元素组。

1.做最少的直线覆盖矩阵D的所有0元素;2.在没有被直线覆盖的部分找出最小元素,在没有被直线覆盖的各行减去此最小元素,在没有被直线覆盖的各列上加上此最小元素,得到一个新的矩阵,返回第二步。

4 程序实现这里我们运用c++语言进行编程进行求解/******************************************************************** ****//* zhipai2.cppAuthor: 路遥Date:2012-12-1Description:需要在同样的目录下建立一个input.txt的文件夹在里面写入每个人从事不同的工作代价,首行要写入几阶方程,然后是每个人的不同工作代价,用空格隔开。

每人一行,见下面数字形式。

用匈牙利法,实现n个人,n件工作的指派问题。

Input:input.txt 格式为代价矩阵维度n,和矩阵内容,例如:43 5 8 46 8 5 42 5 8 59 2 5 2Output:控制台输出指派矩阵,例如0 0 0 10 0 1 01 0 0 00 1 0 0*//******************************************************************** ****/#include <iostream>#include <fstream>using namespace std;#define MAX_N 100int nn;//输入矩阵的维度nnvoid printMatrix(int a[MAX_N][MAX_N]){int i,j;for(i=0;i<nn;i++){for(j=0;j<nn;j++)cout<<a[i][j]<<" ";cout<<endl;}}int main(){int c[MAX_N][MAX_N],b[MAX_N][MAX_N];int quan[MAX_N][MAX_N],cha[MAX_N][MAX_N];int rowZero[MAX_N],colZero[MAX_N];int rowCheck[MAX_N],colCheck[MAX_N];int i,j,k;ifstream input("input.txt");if(!input){cout<<"Open input file failed."<<endl;system("pause");exit(1);}//读取输入文件input>>nn;for(i=0;i<nn;i++){for(j=0;j<nn;j++){input>>c[i][j];b[i][j]=c[i][j];}}input.close();//每行减去该行最小for(i=0;i<nn;i++){int min=b[i][0];for(j=1;j<nn;j++){if(b[i][j]<min)min=b[i][j];}for(j=0;j<nn;j++)b[i][j] -= min; }//每列减去该列最小for(j=0;j<nn;j++){int min=b[0][j];for(i=1;i<nn;i++){if(b[i][j]<min)min=b[i][j];}for(i=0;i<nn;i++)b[i][j] -= min; }//开始尝试进行试指派assign://初始化标记数组和计数数组for(i=0;i<nn;i++){rowZero[i]=colZero[i]=0;rowCheck[i]=colCheck[i]=0;for(j=0;j<nn;j++)quan[i][j]=cha[i][j]=0;}//计算每行每列0元素个数for(i=0;i<nn;i++)for(j=0;j<nn;j++)if(b[i][j]==0){rowZero[i]++;colZero[j]++;}bool flag;//直到尽可能多的0元素都被圈出和划掉为止do{flag=false;//寻找只有一个0元素的行,加圈划叉for(i=0;i<nn;i++){if(rowZero[i]==1)//该行只有一个0元素{//cout<<"rowZero found: "<<i<<endl;flag=true;//找到0元素,加圈划叉for(j=0;j<nn;j++){if(b[i][j]==0 && quan[i][j]==0 && cha[i][j]==0){quan[i][j]=1;rowZero[i]--;colZero[j]--;for(k=0;k<nn;k++){if(b[k][j]==0 && quan[k][j]==0 &&cha[k][j]==0){cha[k][j]=1;rowZero[k]--;colZero[j]--;}}break;}}//break;}}//寻找只有一个0元素的列,加圈划叉for(j=0;j<nn;j++){if(colZero[j]==1)//该列只有一个0元素{flag=true;//找到0元素,加圈划叉for(i=0;i<nn;i++){if(b[i][j]==0 && quan[i][j]==0 && cha[i][j]==0){quan[i][j]=1;rowZero[i]--;colZero[j]--;for(k=0;k<nn;k++){if(b[i][k]==0 && quan[i][k]==0 && cha[i][k]==0){cha[i][k]=1;rowZero[i]--;colZero[k]--;}}break;}}//break;}}} while (flag);//判断是否还有0元素未被标记int zeroNotMarked = 0;for(i=0;i<nn;i++)zeroNotMarked += rowZero[i];while(zeroNotMarked != 0){/*从剩有0元素最少的行(列)开始,比较这行各0元素所在列中0元素的数目,选择0元素少的那列的这个0元素加圈(表示选择性多的要“礼让”选择性少的)。

相关文档
最新文档