C 翟延伟潘鑫任磊823.docx
- 文档编号:3427212
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:31
- 大小:470.53KB
C 翟延伟潘鑫任磊823.docx
《C 翟延伟潘鑫任磊823.docx》由会员分享,可在线阅读,更多相关《C 翟延伟潘鑫任磊823.docx(31页珍藏版)》请在冰豆网上搜索。
C翟延伟潘鑫任磊823
2011年河南科技大学数学建模竞赛选拔
承诺书
我们仔细阅读了数学建模竞赛选拔的规则.
我们完全明白,在做题期间不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人研究、讨论与选拔题有关的问题。
我们知道,抄袭别人的成果是违反选拔规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守选拔规则,以保证选拔的公正、公平性。
如有违反选拔规则的行为,我们将受到严肃处理。
我们选择的题号是(从A/B/C中选择一项填写):
C
队员签名:
1.翟延伟
2.任磊
3.潘鑫
日期:
2011年8月22日
2011年河南科技大学数学建模竞赛选拔
编号专用页
评阅编号(评阅前进行编号):
评阅记录(评阅时使用):
评
阅
人
评
分
备
注
C题油库人员的优化配制
摘要
在本题中我们建立了多元线性规划模型。
在解决问题一的过程中由于A类、B类、C类、D类、E类工作之间不能相互兼职。
所以我们把它们分开分别考虑求出各类工作所需最少人数,然后把各项人数相加从而得出所需最少总人数。
在求解A类、B类工作最少人数的过程中,我们通过已知列出约束条件通过lingo求得A类B类工作所需最少人数为4人和23人。
在求解C类D类工作最少人数的过程中,我们列出各种约束条件,采用遍历法使用matlab求的C类D类工作最少人数分别为29人和39人。
根据A类B类C类D类所需最少人数之和,通过简单的计算可以求的E类工作最少需要52人。
所以问题一的最终结果是最少需要146人。
问题二中A类B类和问题一相同,但C类D类可以相互兼职。
所以A类B类的解法与问题一相同,而对于C类D类可以兼职的情况,我们经过分析发现该问题和C类或D类问题一样。
所以我们依然采用与问题一中相类似的方法:
首先确定各种约束条件,然后采用遍历法利用matlab编程求出该类工作所需最少人数为65人。
利用所求结果我们可以计算出E类工作所需最少人数为51人。
所以最终求得该条件下的最少用人量为143人。
在解决问题三的过程中由于A类B类C类D类工作都可以兼职,这使所需要考虑的工作项增加了很多。
如果再次采用遍历法会使整个问题求解过程过于复杂,于是我们在此改用了模拟退火算法。
模拟退火算法是主要用于解决组合优化问题,对于解决较大规模的优化模型有很好的效果。
在使用模拟退火算法过程中,我们将问题的求解分为对单月最少人数和双月最少人数的求解,取其中人数最多者作为总的所需最少人数。
通过模拟退火算法利用matlab程序求得单月最少人数为63人,双月最少人数为75人,所以A类B类C类D类工作最少需要75人。
根据此结果得出E类工作需要最少46人,所需总人数最少为121人。
在问题四中,由于要考虑尽量使人员最少又要尽可能使每个人员都能得到更多的业务培训等因素,给该油库的岗位和人员的配置、提高油库的管理水平和运行效率等方面提出合理化建议。
所以我们建立了模糊综合评判的评价体系来对模型进行评价并给出有效的建议。
关键词:
多元线性规划遍历法模拟退火算法模糊综合评判
一、问题重述
某油库现有不同功能、不同规格的大小储油罐80个,储油量达16万立方米以上,年收发油量达7000多立方米,工作任务十分繁重。
根据实际需要按工种分类,油库的工作岗位可以分为5大类:
(A)计量与质量检测管理;(B)收发油料管理;(C)设备维护与维修管理;(D)安全保障管理;(E)服务保障管理。
由于油库工作的性质要求,每一大类都包括若干个具体的工作岗位,每个岗位都需要数量不等的人员和工作量,附表给出了各类工作岗位、所需要的人员数量和全年的工作量。
通常油库的所有人员在保障油库正常运行的条件下,还要参加必要业务学习等活动,所以实际要求每个人全年累积从事油库管理相关工作的总工作量不超过175天(每天按8小时计算),除节假日外,其他时间用于业务学习等活动。
要求研究解决下列问题:
(1)根据油库正常的工作任务需要,如果要求(A)、(B)、(C)和(D)类人员都配专职,同类中的各工作岗位人员可以兼职。
那么各类工作岗位最少需要配制多少人员?
平均年工作量是多少?
(2)考虑到人员和编制的问题,有关部门提出除了(A)、(B)两大类专业性较强的工作专职专人外,(C)、(D)两大类在时间允许的情况下可以相互兼职。
那么这个油库最少需要多少人员才能保证油库的正常运行?
并说明各类人员的年总工作量为多少?
(3)如果油库的所有人员都经过了专业的培训,每个人都能从事(A)、(B)、(C)和(D)类中的任何一项工作,那么在时间允许的情况下,最少需要多少人员能够保证油库的正常运行?
并说明各类人员的年总工作量为多少?
(4)根据对以上三种方案的模型求解的结果并根据日常必要的业务培训需要等不同方面因素综合考虑。
请你对该油库的岗位和人员的配置、提高油库的管理水平和运行效率等方面有什么合理化建议。
二、问题分析
对问题一的分析:
由于A、B、C、D类工作人员不能相互兼职,我们对其分别进行求解。
对于A、B类,由于时间安排相对简单,我们可以列约束条件方程,然后利用lingo软件进行求解。
对于C、D类时间安排相对复杂,因此我们只有通过对时间进行细化,但这样通过约束条件方程求解就复杂了。
考虑到这些我们就采用遍历法,按时间对各个员工的工作进行安排,通过matlab编程可以很快的求解出最少人数安排。
对于问题二的分析:
A、B类的安排情况和问题一是一样的,我们直接借用A、B类得结果。
C、D可以相互兼职的情况和C、D单类的情况类似,因此我们仍然采用遍历法进行求解。
对于问题三的分析:
由于A、B、C、D类都可以相互兼职,这样情况就复杂多了。
如果仍然采用问题二中的求解方法,求解的过程太复杂难解,而模拟退火算法是主要用于解决组合优化问题,对于解决较大规模的优化模型有很好的效果。
在使用模拟退火算法过程中,我们将问题的求解分为对单月最少人数和双月最少人数的求解,取其中人数最多者作为全年所需最少人数。
对于问题四的分析:
通过模糊综合评判的方法对三个方案进行对比,找出较优的方案并提出合理化建议。
三、模型假设
1.每月30天,每年的1月1日为星期一,剩余的5天不做工作安排。
2.每一项工作不同次的人员可以不同,但同一次的人员不能变动。
3.每名工作人员在工作期间不因各种原因离岗。
4.零发油各项操作同时进行。
5.收油的各项操作同时开始。
6.当一次的工作量为0.5天时可以任意安排该工作在一天内开始的时间。
四、符号说明
1.
所有工作的工作总量
2.
第x类工作的工作总量
3.
第i项工作在
时刻的在岗人数
4.
第j个人员时间变动节点
5.
第i项工作
时间工作人数
6.
E类任务中伙食服务保障的人数
7.
判定权重的正互反矩阵
8.
对总人数、平均训练时间、均衡度的评价矩阵
9.
对方案的评价矩阵
五、模型建立和求解
1.对问题一的求解
1.1对于问题一中A类工作的求解
1.1.1列出一个关于时间和用人量的矩阵,如下:
其中
1.1.2对于A类工作来说可以分为单双月来进行区别,其中A1,A3,A4工作是单月做的,而A2,A5,A6是双月做的。
1.1.3A类工作单月需要人数:
把A1,A3,A4看做1、2、3这三种工作。
那么A类工作单月需要人数为:
其中
然后
软件求解(程序为程序一),求解结果如下:
由此可以得到;
以此求得结果为A类工作单月需要至少3人。
1.1.4下面分析A类工作双月需要人数:
双月需要A类工作中只有A1,A2,A5,A6进行,分析此类工作需要时间:
。
构建约束条件如下:
根据lingo软件求解可知:
=4.求解源程序为程序二。
由于单月时需要3人,而双月时需要4人,单月和双月可以互相兼职,那么A类工作可至少需要4人即可完成。
平均工作量为64.500.
1.2对于问题一中B类工作的求解
由于收油操作1、收油操作2、收油操作3在每双月10日同时进行,而零发油操作1、零发油操作2、零发油操作3却是在每年随机发生120次。
当收油操作与零发油操作发生在同一天时会使所需人员达到最大。
而收油操作1、收油操作2、零发油操作1、零发油操作2、零发油操作3各需0.5天所以我们可以在完成收油操作1、收油操作2之后在进行零发油操作。
所以我们可以给收油操作1、收油操作2、收油操作3指定特定人员去做人数分别为
在他们完成特定工作后再去兼职收油的各项工作。
由于完成收油各项工作每个人最多的工作时间为3天、3天、6天而完成零发油各项工作的总时间为180天所以只要保证每个人的平均工作量不大于175天然后把收油工作均匀分给每个人就可以保证每个人的总工作量不大于175天。
于是有:
使用lingo可求的
(程序三)。
所以完成B工作最少需要23个人。
平均工作量为21.3913.
1.3对于问题一中C类工作的求解
分析c类工作可以得到:
C2零发油设备维护值班是一个不定时间的工作,可以现将其预置出来,算出C1、C3,、C4、C5、C6、C7的最少人数后,再加上C2的工作人数,就是所求的人数。
另外,由于求出人数后,每个人在一年内做的工作量是平均分配的,是基本相同的,因此,可以用平均每人的工作量作为每人的最大工作量。
约束条件如下:
采用matlab编程(程序四)可以得到如下结果:
C类工作所需人数为f=29
平均工作量为aw=67.5172
每人的工作天数为68天左右,没有超过175.
1.4对于问题一中D类工作的求解
D类工作中由于D2零发油消防值班、D6油库环境保养与卫生工作时间不确定,因此预置出来,而D6需要有241天的工作,因此分配两人,D2与D6共分配7人,而D1,D3,D4,D5通过遍历法求解,约束条件如下:
采用matlab编程(程序五)可以得到如下结果:
做D类工作的总人数为f=39
平均工作量为
aver=126.18。
1.5对于问题一中E类工作的求解
由于E类工作不能够兼职,那么E2,E3,E4最少用人数为:
可以得到E2,E3,E4的分别用人数为5人,9人,17人。
又由于A类工作人数为4,B类工作人数为23,C类工作人数为29,D类工作人数为39,所以厨师的人数X有以下关系:
那么E1的最少人数为X=21,那么E类工作的人数为52人,平均工作量为166.59.
由上面得到的数据可以知道A,B,C,D,E项工作的所需人数与平均工作量,如下表所绘:
图1题一各类工作最少人数与平均工作时间统计图
2.对问题二的求解
2.1在此问题中,A,B两种工作的情况和问题一中相同,那么可以知道:
A的最少人数为4,平均工作量为64.5,B的最少人数是23,平均工作量为21.39.
2.2当C,D可以互相兼职时,C2零发油设备维护值班,D2零发油消防值班时间不确定,因此先预置出来,约束条件为:
matlab编程可以得到(程序六):
C,D所需最少人数为M=65
平均工作量为aver=105.83。
2.3E类工作中E2,E3,E4最少人数不变,即是5,9,17人,分析E1的工作,可以得到以下约束条件:
求解可以得出:
=20
也即是E1工作需要20人,那么E类工作至少需要51人,平均年工作量为:
2.4于是我们得到了问题二中各项工作的最少人数与年平均工作量图表:
其中从事A类工作的人数为4,从事B类工作的人数为23,从事C,D兼职的人有65人,从事E类工作的人有51人,A类工作的年总工作量为258,B类工作的总工作量为492,C,D类兼职的年总工作6879,E类工作的年工作量为8610。
图2题二各类工作最少人数与平均工作时间统计图
表1题二各类工作最少人数与总工作量统计表
A工作
B工作
C,D兼职
E工作
最少人数
4
23
65
51
年总工作量
258
492
6879
8610
3.对问题三的求解
3.1问题中提到油库的所有人员都经过了专业的培训,每个人都能从事(A)、(B)、(C)和(D)类中的任何一项工作,每一个岗位都不设专职人员,故本文对于此四类工作合为一类予以解决。
针对该题,由于工作种类繁多,如若运用问题一二的求解方法,得到的最优化人员配置模型的规模较大,而模拟退火算法是主要用于解决组合优化问题,对于解决较大规模的优化模型有很好的效果,故使用该算法解决问题三。
在使用退火算法之前,为了使求解过程更为清晰,本文做出了如下处理:
a.根据题给条件得,在工作人员的分配工程中会遇到某些工作在单、双月分别工作,为此,本文将对单月、双月进行独立分析,得出的单双月的员工数,最后取员工数最多的为其最终人员分配方案的结果;
b.由于双月10号与收油相关的工作依赖于设备操作,这些岗位所需人员数固定不变,也必须同时在岗,为此,本文将该种工作整合为一项工作进行分析;
c.与零发油相关的工作时间是不确定的,为了避免该类工作发生时无人上岗,本文将其所需人员数预置出处理;
d.由于油库环境保养与卫生工作只在节假日休息,为了避免个人工作量超出175天,本文也将置出2人作为专职,以确保工作的合理安排。
3.2对于问题三求解的模拟退火算法的过程如下:
3.2.1解空间
该问的人员分配情况可由
集合构成,其矩阵为
其中
表示第i份工作在
时刻的员工人数,针对问题三,本文以题中给定的要求,将最小人数人员配置构成的矩阵作为初始解。
3.2.2目标函数
我们设定目标函数为
3.2.3新解的产生
随机选择一项工作,调整该项工作的人数,此时产生的新解为
3.2.4代价函数差
对于新解产生的变化,本文设定的人数差可表示为:
3.2.5接受准则
如果
则接受新的路径。
否则,以概率
接受新的路径,即若
大于0到1之间的随机数则接受。
3.2.6降温
利用选定的降温系数
进行降温即:
,得到新的温度
3.2.7结束条件
用选定的终止温度
判断退火过程是否结束。
若
,算法结束,输出当前状态作为最终的人员配置方案。
根据条件,结合退火算法的步骤,在MATLAB中运行相关程序,得到单月部分工作人数总量为46人,再加上零发油及油库环境保养与卫生工作预置出的17人,得到单月所需的最少人数为63人。
用同样的方法,可以求得双月的员工数为73人。
比较单双月员工数,双月需要的员工数较多,因此,本文最终确定了以73人作为ABCD兼职类工作最少人数。
图3题三各类工作最少人数与平均工作时间统计图
表2题二各类工作最少人数与工作量统计表
工作种类
ABCD类工作
E类工作
平均工作时间
104.51
167.8
总工作量
7629
8055
4.对问题四的求解
三个方案的各种分组情况图如下:
表3各项指标统计表
人员的多少影响到油库岗位和人员的配置和油库的运行效率,在保证油库正常运转的情况下,油库人员最少,那么油库的人员管理最合理;油库人员参加的业务学习时间越长,那么,油库的运行效率越高;当然,如果各类人员都能互相兼职时,油库的运行效率也会提升的更高;另外,如果各项工作的工作人员做的工作的均衡度越小,那么工作的安排也是越合理的。
下面我们从工作人数、业务学习时间、工作的均衡度三个方面来衡量各项方案的合理水平(如下图)。
图4三种方案衡量指标图
其中对于以
作为衡量总人数、平均训练时间、均衡度相对于工作合理水平的重要性,建立一个模糊综合评判模型。
正互反矩阵为:
我们把
的值分别赋为3,2,1,带入A矩阵中,就可以得到如下:
解得特征值为
;
特征向量为
一致性指标CI=0;CR=0;通过一致性检验。
将特征向量归一化得到个指标的权重向量:
。
将总人数、平均训练时间、均衡度中各指标相对化得到评价矩阵:
:
对各个方案的评价可以知道:
a)通过模糊综合评判的结果我们可以发现:
当ABCD类工作可以相互兼职时效率最高、效果最好,所以该油库管理部门应该通过各种方法加强员工的业务学习,以使他们能够胜任各项工作。
b)通过附表1我们可以发现:
部分检验检测工作需要大量的人员花费大量的工时,所以我们可以通过改进检测设备来减少人员和工时,为人员的培训争取更多时间。
c)合理规划、适当的调节部分工作的工作时间,这样可以使工作所需的人员会更少,使人员的工作时间和学习时间更加的均衡。
六、模型的评价与推广
模型的评价:
1.在解题的过程中我们分单双月进行分析,这样简化了实际情况,使得模型较容易求解。
2.问题三的解决过程中,我们用了模拟退火算法,该算法能很简便的解决大规模组合规划问题。
3.我们在用模糊综合评判对模型进行了评价,对总人数、平均训练时间、均衡度的指标进行了详细的分析,得出的结果比较符合实际。
4.但是我们所建立的模型是在假设每月30天、1月1号是星期一的基础上,不能精确的反映实际情况。
5.模型的建立中,我们假设每名工作人员在工作期间不因各种原因离岗等太过于理想化
模型的推广:
1.对模型中工种、人员和时间的修改,该模型可以推广到其他用人单位的人员调配问题。
2.把工种类比为不同品种的货物,把人员类比为所需运输资源的多少,把时间类比为运送时间距或距离,该模型可以推广到物流的调配。
参考文献
【1】杨启帆,方道元,数学建模[M],杭州:
浙江大学出版社,2005。
【2】姜启源,谢金星,叶俊,数学模型[M],北京:
高等教育出版社,2003。
【3】曲强,陈雷波,基于MATLAB的模拟退火算法的实现,鞍山科技大学学报,2003(6):
196~199。
【4】徐金明,MATLAB实用教程,北京:
清华大学出版社,北京交通大学出版社,2005
附表
附表1油库5大类岗位、需要人员及年工作量
工作岗位类别
工作岗位代号
工作岗位名称
工作岗位的年工作量
备 注
(A)
计量与质量检测管理
A1
月计量检测
12次×2人×2天/次
每月25日开始
A2
半年计量检测
2次×2人×2天/次
每年6、12月1日开始
A3
储油质量检验
6次×2人×15天/次
每单月15日开始
A4
全面检测
2次×2人×2.5天/次
每年1、7月10日开始
A5
收油计量检测
6次×2人×0.5天/次
每双月10日
A6
收油质量检验
6次×2人×0.5天/次
每双月10日
(B)
收发油料管理
B1
收油操作1
6次×16人×0.5天/次
每双月10日
B2
收油操作2
6次×6人×0.5天/次
每双月10日
B3
收油操作3
6次×1人×1天/次
每双月10日
B4
零发油操作1
120次×5人×0.5天/次
平均每年120次
B5
零发油操作2
120次×1人×0.5天/次
平均每年120次
B6
零发油操作3
120次×1人×0.5天/次
平均每年120次
(C)
设备维护与维修管理
C1
收油设备维护值班
6次×2人×1天/次
每双月10日
C2
零发油设备维护值班
120次×2人×0.5天/次
平均每年120次
C3
常规维护保养
1次×12人×30天/次
每年12月1日开始
C4
设备日常维护保养
104次×12人×1天/次
每周一、周五进行
C5
常用设备维护保养
12次×3人×4天/次
每月15日开始
C6
安全设备维护保养
6次×2人×4天/次
每单月20日开始
C7
配电设备维护保养
26次×2人×0.5天/次
每年双周的周三进行
(D)
安全保障管理
D1
收油消防值班
6次×6人×1天/次
每双月10日
D2
零发油消防值班
120次×6人×0.5天/次
平均每年120次
D3
消防设施维护
52次×6人×1.5天/次
每周一开始
D4
消防车辆维护
52次×6人×0.5天/次
每周一进行
D5
日常安全检查与维护
183次×20人×1天/次
每两天1次
D6
油库环境保养与卫生
241次×1人×1天/次
除节假日外每
天1次
(E)
服务保障管理
E1
伙食服务保障
员额每15人编制1人
全专职
E2
医疗服务保障
2人/天
全专职
E3
车辆服务保障
4人/天
全专职
E4
警卫服务保障
8人/天
全专职
说明:
(1)年工作量格式:
次×
人×
天/次,表示该项任务每年要执行
次,“至少需要
人”同时执行,每次
人需要连续工作z天。
(2)有些任务人数越多执行时间越短,即若每次由
人执行,则每次需要执行时间为
天。
但与收油和零发油的相关任务依赖于设备操作,这些岗位所需人员数固定不变,也必须同时在岗,而且零发油的时间是不确定的。
程序代码
程序一:
问题一A类单月
model:
titleA组单月最少人数分配;
sets:
gzl/1,2,3/:
N;
zl/1,2,3/:
t,M;
links(gzl,zl):
a;
endsets
data:
N=4,30,5;
t=101525;
enddata
a(1,1)=0;
a(1,2)=0;
a(2,1)=0;
a(3,2)=0;
a(3,3)=0;
a(1,3)>=2;
a(2,2)>=2;
a(3,1)>=2;
a(2,3)=@if(a(2,2)*(t(3)-t
(2))#ge#N
(2),0,a(2,2));
@for(zl(J):
@sum(gzl(I):
a(I,J))=M(J));
a1=@max(zl(J):
M(J));
min=a1;
end
程序二:
问题一A类双月
model:
titleA组双月最少人数分配;
sets:
work/1,2,3/:
m;
series/1,2,3,4/:
t,total;
links(series,work):
a;
endsets
data:
m=4,4,1;
t=2511010;
enddata
a(1,1)=0;
a(1,2)=0;
a(2,2)=0;
a(2,3)=0;
a(3,1)=0;
a(3,3)=0;
a(4,1)=0;
a(4,3)=0;
a(1,3)>=2;
a(2,1)>=2;
a(3,2)>=2;
a(4,2)>=2;
@for(work(J):
@sum(series(I):
a(I,J))=total(J));
a1=@max(work(J):
total(J));
min=a1;
end
程序三:
问题一B类
min=x+y+z;
x>=16;
y>=6;
z>=1;
252/(x+y+z)<=175;
程序四:
问题一C类工作
clear;clc;
A=zeros(7,365);
fori=1:
6
A(1,(2*i-1)*30+10)=2;
end
fori=1:
30
A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 翟延伟潘鑫任磊823 翟延伟潘鑫任磊 823