C题 油库人员的优化配制.doc_第1页
C题 油库人员的优化配制.doc_第2页
C题 油库人员的优化配制.doc_第3页
C题 油库人员的优化配制.doc_第4页
C题 油库人员的优化配制.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2011年河南科技大学数学建模竞赛选拔承 诺 书我们仔细阅读了数学建模竞赛选拔的规则.我们完全明白,在做题期间不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人研究、讨论与选拔题有关的问题。我们知道,抄袭别人的成果是违反选拔规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。我们郑重承诺,严格遵守选拔规则,以保证选拔的公正、公平性。如有违反选拔规则的行为,我们将受到严肃处理。我们选择的题号是(从A/B/C中选择一项填写): C 队员签名 :1. 崔晓鹏 2. 孙艳坤 3. 范常青 日期: 2011 年 08 月 20 日2011年河南科技大学数学建模竞赛选拔编 号 专 用 页评阅编号(评阅前进行编号):评阅记录(评阅时使用):评阅人评分备注C题 油库人员的优化配制摘要 问题要求给出最少人员配置和工作时间统计,问题1、2、3三问其实质一样,只是兼职情况不一样。因此建立一个模型,分别套用三问的兼职策略,分别求出其解。模型采用计算机模拟的方法,通过c+实现。分别建造工人类,工作类,说明其属性和触发机制;制定工人和工作之间的匹配原则;以及用工招工原则(尽量减少工人数量)。利用C+模拟工厂的运行,起始工人为0,运行一年后,查看工人数量即作为解,同时统计工人配置情况和平均工作时间等数据。通过模拟不仅能求得最少配置解,而且可以清晰地显示工厂运行的动态,以及每个工人每天的工作,可以制定每个工人本年度的工作表。最后根据前几问的数据,对油库的管理和效率提出建议。一、 问题重述一个油库管理工作要保证正常的运行,必须要设置计量与质量检测管理、收发油料管理、装备维护与维修管理、安全保障管理、服务保障管理等相关的岗位和人员配制。根据实际需要按工种分类,油库的工作岗位可以分为大类:(A)计量与质量检测管理;(B)收发油料管理;(C)设备维护与维修管理;(D)安全保障管理;(E)服务保障管理。附表给出了各类工作岗位、所需要的人员数量和全年的工作量。同时要求每个人全年累积从事油库管理相关工作的总工作量不超过175天(每天按小时计算),除节假日外,其他时间用于业务学习等活动。研究解决下列问题:(1)根据油库正常的工作任务需要,如果要求(A)、(B)、(C)和(D)类人员都配专职,同类中的各工作岗位人员可以兼职。那么各类工作岗位最少需要配制多少人员?平均年工作量是多少?(2)考虑到人员和编制的问题,要求(A)、(B)两大类工作专职专人,(C)、(D)两大类在时间允许的情况下可以相互兼职。那么这个油库最少需要多少人员才能保证油库的正常运行?并说明各类人员的年总工作量为多少?(3)如果每个人都能从事(A)、(B)、(C)和(D)类中的任何一项工作,那么在时间允许的情况下,最少需要多少人员能够保证油库的正常运行?并说明各类人员的年总工作量为多少?(4)对该油库的岗位和人员的配置、提高油库的管理水平和运行效率等方面提出合理化建议。1、 模型假设 1.工作人员都能按时完成每天分配的工作任务。2.当工作人员不够时,能够按时招到所需要的人数。2、 符号说明 A类工作:A1 月计量检测 A2 半年计量检测A3 储油质量检验 A4 全面检测 A5 收油计量检测A6 收油质量检验B类工作:B1 收油操作1B2 收油操作2B3收油操作3B4零发油操作1B5零发油操作2B6零发油操作3C类工作:C1 收油设备维护值班C2零发油设备维护值班C3常规维护保养 C4 设备日常维护保养C5 常用设备维护保养C6 安全设备维护保养C7 配电设备维护保养D类工作:D1 收油消防值班 D2 零发油消防值班 D3 消防设施维护 D4 消防车辆维护 D5 日常安全检查与维护D6 油库环境保养与卫生E类工作:E1 伙食服务保障E2 医疗服务保障E3 车辆服务保障E4 警卫服务保障 四、 模型的建立与求解问题分析:由于E类工作人员比较固定,E1工作有总人数通过求解其他工作人员的总人数即可确定,E2,E3,E4的工作总人数通过年工作量即可求得,因此重点放在求解A,B,C,D类工作人员数。求解A、B、C、D的模型:(计算机模拟)日期定为2012年,共366天。采用计算机模拟,建立一个工人类和工作类。工作类声明25个对象,分别代表A-D中25项目工作。工作类属性中有组,每个工作对象对对应属于自己的组,如A1属于A组,B1属于B组,组号A-D用0-3表示。工作类属性中有触发方式,触发方式即任务开始的时间,统计表中共有以下几种触发方式及其对应的代号和所对应的工作:插入触发类型表0140 每月25日开始 A1 1 每年6、12月1日开始 A2 2 每单月15日开始 A3 3 每年1、7月10日开始 A44 每双月10日 A5、A6、B1、B2、B3、C1、D15 每年12月1日开始 C36 每周一、周五进行 C47 每月15日开始 C58 每单月20日开始 C69 每年双周的周三进行 C710 每周一开始 D3、D411 每两天次 D512 除节假日外每天次 D613 全专职 E1、E2、E3、E414 平均每年120次 B4、B5、B6、C2、D2 其中随机触发用(rand()%10022-24-21-24-21-24-0-22-25-21-25-24-21-24-22-24-25-21-25-24-21-21-25-24-25-21-21-21-22-24-21-24-25-24-21-22-25-24-25-20-21-21-21-24-25-24-21-24-0-22-25-24-25-24-25-21-22-21-25-21-25-24-0-22-21-24-25-24-25-24-21-24-21-24-25-21-21-22-25-21-21-24-25-24-22-24-25-21-21-24-0-21-21-24-25-21-25-21-22-20-21-24-25-21-21-22-21-24-25-21-25-21-22-24-21-24-25-24-21-22-25-24-25-24-25-24-22-21-25-24-25- 24-21-22-21-21-25-21-25-24-22-24-25-24-21-21-0-21-25-21-25-21-21-21-22-21-25-24-25-21-20-21-25-24-25-24-25-21-22-24-25-24-21-24-21-22-25-24-25-24-25-24-22-21-25-21-25-21-0-21-25-24-25-21-21-21-21-21-21-21-21-24-0-21-25-21-25-24-21-21-21-24-21-24-21-24-0-22-25-21-25-20-21-24-21-24-21-24-25-24-0-22-25-21-25-24-21-24-22-24-25-24-25-24-0- 21-25-24-21-21-25-24-22-21-25-24-25-24-21-22-25-24-21-24-25-21-22-21-25-24-25-24-0-22-21-21-21-21-25-24-22-21-20-24-21-21-0-22-25-24-21-21-25-21-21-24-25-21-25-24-21-22-25-21-25-24-25-24-21-24-25-21-25-24-21-22-25-24-21-24-25-24-22-24-25-24-21-24-21-22-25-24-25-21-21-21-22-24-25- 21-25-24-0-20-21-21-25-21-25-21-22-24-25-24-25-0-0-0-0-0-0-0-0-0-0-问题2求解通过计算机模拟A,B,C,D四类工作的最少配置人数及各类工作的平均年工作量,结合单独求解E类工作人员数得到工作人员的总人数,表格如下:工作类别最少配置人数平均年工作量各类总工作量A454.5218B2815.8442C1253.5642D4321.7933E361756300总工作人数123计算机模拟动态调配图。通过计算机模拟得到所有工作人员的工作动态调配数据,通过matlab作图得到工作人员的一年的工作任务动态变化图,以下将第1个工作人员的动态变化图作为图例。第1人一年工作任务变化图:工作转换图见附录2。问题3求解通过计算机模拟A,B,C,D四类工作的最少配置人数及各类工作的平均年工作量,结合单独求解E类工作人员数得到工作人员的总人数,表格如下:工作类别最少配置人数平均年工作量各类年总工作量A000B6105.4632C845.1360D6915.91097E361756300总工作人数119(A栏等于0不是说不给A配置人,而是说,不需要专门给A组配置人员,靠其他组人员的的兼职即可完成A的工作。)计算机模拟动态调配图。通过计算机模拟得到所有工作人员的工作动态调配数据,通过matlab作图得到工作人员的一年的工作任务动态变化图,以下将第1个工作人员的动态变化图作为图例。第1人一年工作任务变化图:工作转换图见附录2。问题4求解:比较三问结果可以看出增加组间兼职对减少工人数目效果并不明显,反而增加了每个工人所从事工作的种类,降低了工作效率,因为人的注意力是有限的,过多类型的工作只会让每样都干不好。因此问题一的方案是更好的方案。但问题一的结果显示,A D组人的工作时间明显高于其他两组,因此应加以权衡,适当增加A D组的人数,减少B C组的人数。3、 模型的评价与改进模型评价:1、由于问题是动态优化问题,用计算机模拟比其他方法更具有现实意义,因为计算机模拟,不仅能求出很好的解,而且也对问题的整个过程进行了动态模拟,清楚地知道模型各个时刻的人员状况,相当于进行一次实战实验,不仅求出了所需员工数量,而且可以求出每个人一年的工作分配表,每个员工一年每一天的工作情况。这种结果对于实际问题更具有实际意义和可操作性。2、模型思路清晰,形象性比较好,理解起来也比较容易,采用模拟现实的方法让管理者更清楚企业运行流程,对实际工作分配中可能存在的问题也会有一个直观的了解。而且也可以对已有的分配方案进行模拟运行,对方案的可执行性进行评估。3、模型中可以加入各种突发事件和随机事件,以评估企业的抗风险能力和应对突发事件能力,以帮助提高企业的生存能力。不足与改进:1、 程序为了达到人数最小,采用了极限方法,员工只要有空就要去干活,只要还有人就尽量少招聘新员工,这对于求个极小值是很有帮助的,但对于现实可能并不适用,因为现实还要考虑每个员工的实际忍受能力,和实际可操作能力,因为员工毕竟是人,不是机器。若要用于实际还要适当改进,考虑到员工的劳逸结合。2、 分配公平性问题,模型采用只要有人就不招新人,故导致早进来的员工工作时间明显高于晚进来的,若应用于实际明显存在着一些公平性问题,除非企业真是按模型的要求只有实在需要人时才招人。解决此问题可以预定一定数量的人,也就是让程序中n起始时刻有一个适当的初值,而非0。3、 程序中为了达到最小人数,可以从图中看到,员工频繁改变工作,有的甚至一天一变,实际生活中这是不太可行的,因此,应用于实际的话话应在程序中设置一定的改变频率,阻止太过频繁的换工作,以提高工作效率。4、 综合来看,程序是求出了个最优解,但不代表实际的企业就可以这样安排,它更多只是极限参考,若要将程序应用于实际,应在程序中加入更多人性化考虑。4、 参考文献1.C+面向对象程序设计教程 游洪跃 清华大学出版社2.数学建模与数学实验(第三版)赵静 但琦 高等教育出版社3.MATLAB 7.0 实用教程 张圣勤 机械工业出版社五、 附录附录1:油库大类岗位、需要人员及年工作量工作岗位类别工作岗位代号工作岗位名称工作岗位的年工作量备注(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收油操作6次16人0.5天/次每双月10日B2收油操作6次6人0.5天/次每双月10日B3收油操作6次1人1天/次每双月10日B4零发油操作120次5人0.5天/次平均每年120次B5零发油操作120次1人0.5天/次平均每年120次B6零发油操作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天/次每两天次D6油库环境保养与卫生241次1人1天/次除节假日外每天次(E)服务保障管理E1伙食服务保障员额每15人编制人全专职E2医疗服务保障2人/天全专职E3车辆服务保障4人/天全专职E4警卫服务保障8人/天全专职说明:(1)年工作量格式:次人天/次,表示该项任务每年要执行次,“至少需要人”同时执行,每次人需要连续工作z天。()有些任务人数越多执行时间越短,即若每次由人执行,则每次需要执行时间为天。但与收油和零发油的相关任务依赖于设备操作,这些岗位所需人员数固定不变,也必须同时在岗,而且零发油的时间是不确定的。附录2问题2第1人工作转换图24-16-24-14-24-14-24-0-16-25-14-25-16-14-17-16-24-25-14-16-24-14-14-25-19-25-14-14-14-16-24-14-24-16-24-14-16-25-19-25-13-14-14-14-24-17-24-14-24-0-16-25-19-25-16-25-14-16-14-25-14-16-24-0-16-14-19-25-16-25-24-14-24-14-17-16-14-14-16-18-14-14-16-25-24-16-24-25-14-14-24-0-14-14-19-25-14-25-14-16-13-14-24-16-14-14-16-14-19-25-14-25-14-16-24-14-24-16-24-14-16-25-19-25-16-25-24-16-14-25-24-16- 24-14-16-14-14-25-14-25-18-16-24-25-24-14-14-0-14-25-14-25-14-14-14-16-14-25-24-16-14-13-14-25-19-25-16-25-14-16-24-25-24-14-24-14-16-25-19-25-16-25-24-16-14-25-14-16-14-0-14-25-19-25-14-14-14-14-14-14-14-14-24-0-14-25-14-25-16-14-14-14-24-14-24-14-24-0-16-25-14-25-13-14-24-14-24-14-24-16-24-0-16-25-14-25-16-14-24-16-24-25-24-16-24-0-14-25-19-14-14-25-24-16-14-25-24-16-17-14-16-25-19-14-16-25-14-16-14-25-24-16-24-0-16-14-14-14-14-25-24-16-14-13-24-14-14-0-16-25-19-14-14-25-14-14-24-25-14-16-24-14-16-25-14-25-16-25-24-14-24-25-14-16-24-14-16-25-19-14-16-25-24-16-18-25-24-14-24-14-16-25-19-25-14-14-14-16-24-25- 14-16-24-0-13-14-14-25-14-17-14-16-24-25-24-16-24-14-14-25-19-25-16-25-24-0-问题3第1人工作转换图24-16-24-10-24-10-24-0-16-4-4-4-16-10-3-16-24-25-10-16-24-10-10-25-1-1-10-10-10-16-24-10-24-16-24-10-16-25-19- 25-5-10-10-10-24-17-24-10-24-0-16-25-19-25-16-1-1-16-10-25-10-16-24-0-16-10-19-25-16-25-24-10-24-10-3-16-10-10-16-18-10-10-16-25-1-1-24-25-10-10-24-0-10-10-19-25-10-25-10-16-5-10-24-16-10-10-16-10-19-25-10-25-10-16-24-1-1-16-24-10-16-25-19-25-16-25-24-16-10-25-24-16-24-10-16-3-10-25-10-25-18-16-24-25-24-1-1-0-10-25-10-25-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-1-1-2-2-2-2-24-16-10-25-10-16-10-0-10-4-4-4-10-10-3-10-10-10-10-10-24-0-10-25-1-1-16-10-10-10-24-10-24-10-24-0-16-25-10-25-5-10-24-10-24-10-24-16-24-0-16-25-10-25-16-1-1-16-24- 25-24-16-24-0-10-25-19-10-10-25-24-16-10-25-24-16-3-10- 16-25-19-10-16-25-10-16-1-1-24-16-24-0-16-10-10-10-10-25-24-16-10-5-24-10-10-0-16-25-19-10-10-25-10-10-24-25-1-1-24-10-16-25-10-25-16-25-24-10-24-25-10-16-24-10-16-25-19-3-16-25-24-16-18-25-24-10-24-1-1-25-19-25-10-2-2-2- 2-2-2-2-2-2-2-2-2-2-2-2-2-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-附录3计算机模拟程序#include #include #include #include #include #include 7.hextern long gettime(long);long find(long *);using namespace std;long page=0;bool run;long n=0;long t=0;bool active(long type) long month,date,week,weekn; long time=gettime(t); weekn=time%100; time/=100; week=time%100; time/=100; date=time%100; time/=100; month=time%100; time/=100; switch(type) case 0: if(date=25)return 1; break; case 1: if(month%6=0)return 1; break; case 2: if(month%2=1&date=15)return 1; break; case 3: if(month=1|month=7) if(date=10)return 1; break; case 4: if(month%2=0&date=10)return 1; break; case 5: if(month=12&date=1)return 1; break; case 6: if(weekn=1|weekn=5)return 1; break; case 7: if(date=15)return 1; break; case 8: if(month%2=1&date=20)return 1; break; case 9: if(week%2=0&weekn=3)return 1; break; case 10: if(weekn=1)return 1; break; case 11: if(t%2=0)return 1; break; case 12: if(weekn1)taskclass=5; else taskclass=cla; couttaskclass=endtime) state=0; current=0; return state; ; struct woke long starttime; long endtime; long woketype;class wokerpublic: woker() woken=0; state=0; time=0; woketime=0; taskclass=0; bool state; long woketype; float woketime; float time; long starttime; long taskclass; long endtime; long wokehistory366; long woken; long push(long i) if(i!=0)woken-; wokehistorywoken=i; woken+; ;long N=25 ;woker w10000;task tas100;long init() tas0.set(0,2,2,1,0); tas1.set(1,2,2,1,0); tas2.set(2,2,15,1,0); tas3.set(3,2,2.5,1,0); tas4.set(4,2,0.5,0,0); tas5.set(4,2,0.5,0,0); tas6.set(4,16,0.5,0,1); tas7.set(4,6,0.5,0,1); tas8.set(4,1,1,0,1); tas9.set(14,5,0.5,0,1); tas10.set(14,1,0.5,0,1); tas11.set(14,1,0.5,0,1); tas12.set(4,2,1,0,2); tas13.set(14,2,0.5,0,2); tas14.set(5,12,30,1,2); tas15.set(6,12,1,1,2); tas16.set(7,3,4,1,2); tas17.set(8,2,4,1,2); tas18.set(9,2,0.5,1,2); tas19.set(4,6,1,0,3); tas20.set(14,6,0.5,0,3); tas21.set(10,6,0.5,1,3); tas22.set(10,6,0.5,1,3); tas23.set(11,20,1,1,3); tas24.set(12,1,1,1,3);long wokerest10000;long wokerestn=0;bool isfit(long i,long j) if(wi.time175) if(wi.state=0) if(wi.taskclass=tasj.taskclass) if(tasj.currenttasj.max) return 1; return 0;long div(long i) int j; for(j=0; jn&tasi.currenttasi.min; j+) int q=j; if(isfit(q,i)/wq.time175&wq.state=0&wq.taskclass=tasi.taskclass) wq.starttime=t; wq.woketype=i; wq.taskclass=tasi.taskclass; wq.state=1; tasi.current+; while(tasi.currenttasi.min) wn.taskclass=tasi.taskclass; wn.starttime=t; wn.woketype=i; wn.state=1; tasi.current+=1; n+; /couttaskclass=tasi.taskclassendl; long jiezhang() int i; for(i=0; iN; i+) tasi.ago=tasi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论