《数学建模与数学实验综合实验》课程设计任务书一、设计目的通过《数学建模与数学实验综合实验》课程设计,使学生能够将课堂上学到数学建模的理论知识与实际问题相联系,在提高学生学习兴趣的同时逐渐培养实际操作技能,强化对课程内容的了解。本课程设计不仅有助于学生提高学生的建模能力,而且也有助于培养学生门的创新意识和动手能力。二、设计教学内容本题要求运用数学建模知识解决人力资源管理中所遇到的问题。本论文针对各项工程对技术人员限制的实际需求,充分合理地对专业技术人员进行合理配置,最终给出了该模型下的最优解,使公司收益最大化。在模型求解过程中运用matlab软件得出模型中技术力量配置的最优解,最终解决了本题中的人力资源安排问题。三、设计时间2011—2012学年第1学期:第16周共计1周教师签名:2010年12月12日摘要随着现代企业的发展,企业之间的竞争力越来越大,如何尽量满足客户的要求并且符合公司的人力资源,使企业的收益最大,这就涉及人员的分配问题。合理的人力资源配置应使人力资源的整体功能强化,使人的能力与岗位要求相对应。企业的岗位有层次与种类之分,它们占据着不同的位置,处于不同的能级水平。每个人也都具有不同水平的能力,在纵向上处于不同的能级位置。企业岗位人员的配置,应能做到能级对应,也就是说每一个人所具有的能级水平与所处的层次和岗位的能及要求相对应。本文针对各项工程对技术人员限制的实际需求,充分合理地对专业技术人员进行合理配置,最终给出了该模型下的最优解,使公司收益最大化。首先明确目标函数为公司最大收益,根据题目要求综合考虑了各项目客户对公司各专业技术人员人数的限制及总技术人员人数的限制,以及公司各类专业技术人员资源的限制等因素,将这些因素量化,即为本题的约束条件。再利用Matlab软件得出模型中技术力量配置的最优解,即得以解决了本题中的人力资源安排问题。关键词:多目标规划,最优化模型,约束量化1问题的重述E公司有专业技术人员共41人,人员结构可以分为高级工程师、工程师、助理工程师以及技术员,人员结构对应的工资水平各有不同。目前,公司承接有4个工程项目,其中2项是现场施工监理,主要工作在现场完成。另外2项是主要在办公室完成的工程设计。由于4个项目来源于不同客户,并且工作的难易程度不一,因此,各项目的合同对有关技术人员的收费标准不同。为了保证工程质量,各项目中必须保证专业人员结构符合客户的要求。这些要求体现在人员结构上的人数都有一定的范围限制,各项目的总人数有限制,由于高级工程师相对稀缺而且是质量保证的关键,专门对高级工程师的配备有限制,另外,各项目对于其他专业人员也根据项目的不同而有不同的限制和要求。由于收费是按人工计算的,公司现有41人不能满足4个项目总共同时最多需要的55人,如何合理的分配现有的技术力量,使公司每天的直接收益最大成为首先要解决的问题。为使公司的直接收益最大,应如何分配现有的技术力量?2问题的分析根据对题目的理解和分析,这是一个整数规划问题。题目给出了使公司每天的直接收益最大时所要遵循的原则:1、各项目客户对专业技术人员结构的要求;2、各项目客户对公司技术人员总人数的限制;3、公司各类专业技术人员人数的限制。首先,应对题目所给出的各类数据的限制和要求进行分析,从中挖掘出对配置现有的技术力量有帮助的信息,并根据题目中提供的数据,将上述三条原则量化,寻求技术人员的配置与公司每天直接收益间的关系,再结合题目所给出的各项目客户对专业技术人员结构的要求、各项目客户对技术人员总人数的限制以及公司各类专业技术人员人数的限制等约束条件,最终规划出使得公司每天直接收益(公司总收入减去总支出)最大时的人力资源配置。基于以上分析,问题可转化为:根据各项目的限制要求挖掘出有用信息;找出公司的收入及各项支出(各类技术人员的工资及C、D两个项目的办公室管理费用)的差值,即公司每天的直接收益(Z)=公司的总收入(I)-公司的总支出(O),写出公司每天收益最大的目标函数及约束条件;用Matlab解决线性规划问题,求解出公司每天收益最大时的人员配置情况。3模型的假设及符号的说明3模型的假设及符号的说明3.1模型假设(1)假设4个工程同时进行,项目用人是同时输出的。(2)假设各专业技术人员在短期内,不会因为考证及评比职称而晋级。(3)假设在一段时间内,各专业技术人员的收费和工资不发生变化,保持相对稳定。(4)假设在一段时间内,公司不会再增加或减少各专业技术人员的人数。(5)假设专业技术人员不能跨级别从事其他级别的工作。(6)假设在某天中,某技术人员未分配到工作,但公司还是要发放该员工该天的工资。(7)假设全国物价水平不在短时间内发生剧烈变化,以排除各种工程材料成本的剧烈波动。(8)不考虑各专业技术人员因病、事假原因而不能工作。(9)不考虑天气、地震等外界因素对项目工程的影响,从而不影响工程进度而影响公司的收益。(10)公司发放的工资按技术人员的级别来划分,同一级别工资相同。不考虑奖金、分红等额外收益。3.2符号的使用和说明Z表示公司每天的直接收益;I表示公司每天的总收入;O表示公司每天的总支出;X表示公司技术人员安排在各项目上的人数矩阵(x1表示A项目的高级工程师人数,x2表示B项目的高级工程师人数,x3表示C项目的高级工程师人数,x4表示D项目的高级工程师人数,以此类推x5表示A项目的工程师人数,x9表示A项目的助理工程师人数,x13表示A项目的技术员人数;)4模型的建立与求解4.1模型建立设A,B,C,D四个项目分别需要高级工程师x1、x2、x3、x4人,分别需要工程师x5、x6、x7、x8人,分别需要助理工程师x9、x10、x11、x12人,分别需要技术员x13、x14、x15、x16人。公司的结构及工资情况见表1表1公司的人员结构及工资情况人员工资情况高级工程师工程师助理工程师技术员人数917105日工资(元)250200170110以及C、D两项目每人每天有50元的管理费开支的条例,由此确定公司每天的总支出(百元)如下:O=9*2.5+17*2+10*1.7+5*1.1+0.5*(x3+x4+x7+x8+x11+x12+x15+x16)=79+0.5*(x3+x4+x7+x8+x11+x12+x15+x16)不同项目和各种人员的收费标准见表2表2不同项目和各种人员的收费标注人员项目高级工程师工程师助理工程师技术员收费(元/天)A1000800600500B1500800700600C1300900700400D1000800700500由此确定公司每天的总收入(百元)如下:I=10*x1+15*x2+13*x3+10*x4+8*x5+8*x6+9*x7+8*x8+6*x9+7*x10+7*x11+7*x12+5*x13+6*x14+4*x15+5*x16公司每天的直接收益=公司的总收入-公司的总支出,由此确定公司每天的直接收益(百元)如下:Z=I-O=(10*x1+15*x2+13*x3+10*x4+8*x5+8*x6+9*x7+8*x8+6*x9+7*x10+7*x11+7*x12+5*x13+6*x14+4*x15+5*x16)-[79+0.5*(x3+x4+x7+x8+x11+x12+x15+x16)]=10*x1+15*x2+12.5*x3+9.5*x4+8*x5+8*x6+8.5*x7+7.5*x8+6*x9+7*x10+6.5*x11+6.5*x12+5*x13+6*x14+3.5*x15+4.5*x16-79各项目对专业技术人员结构的要求见表3表3各项目对专业技术人员机构的要求项目人员ABCD高级工程师1~32~521~2工程师2222~8助理工程师2221技术员131——总计10161118由此列出相应约束条件如下:s.t.x1=1,x1=3x2=2,x2=5x3=2x4=1,x4=2x5=2x6=2x7=2x8=2,x8=8x9=2x10=2x11=2x12=1x13=1x14=3x15=1x16=0x1+x5+x9+x13=10x2+x6+x10+x14=16x3+x7+x11+x15=11x4+x8+x12+x16=18公司的结构见表1,由人数限制由此列出相应约束条件如下:s.t.x1+x2+x3+x4=9x5+x6+x7+x8=17x9+x10+x11+x12=10x13+x14+x15+x16=54.2模型求解Matlab中解决线性规划问题的标准型为:Miny=cX,s.t.AX=bA1X=b1lb=X=ub使用时要先化为这种标准型的形式。Matlab中有专门用来计算线性规划问题的函数,函数的形式为:[X,fval]=linprog(c,A,b,A1,b1,lb,ub,x0)其中,c,A,b,a1,b1,lb,ub如上面标准型所示,c是目标函数的系数行向量(常数),X是n维列向量(决策变量);A、A1是常数矩阵,b、b1是常数向量,如果没有等式约束,A1、b1则均用[]代替;lb、ub是n维列向量分别表示决策变量X的下界和上界,如果某个变量无下界则用-inf表示,如果某个变量无上界则用inf表示;X返回近似最优解,fval返回近似最优值;x0是解的初始近似,通常可以缺省。这种设计仅对中规模算法有效,首先,令y=-(10*x1+15*x2+12.5*x3+9.5*x4+8*x5+8*x6+8.5*x7+7.5*x8+6*x9+7*x10+6.5*x11+6.5*x12+5*x13+6*x14+3.5*x15+4.5*x16)=-10*x1-15*x2-12.5*x3-9.5*x4-8*x5-8*x6-8.5*x7-7.5*x8-6*x9-7*x10-6.5*x11-6.5*x12-5*x13-6*x14-3.5*x15-4.5*x16得出目标函数的系数行向量c=[-10,-15,-12.5,-9.5,-8,-8,-8.5,-7.5,-6,-7,-6.5,-6.5,-5,-6,-3.5,-4.5]其次根据约束条件s.t.x1+x5+x9+x13=10x2+x6+x10+x14=16x3+x7+x11+x15=11x4+x8+x12+x16=18x1+x2+x3+x4=9x5+x6+x7+x8=17x9+x10+x11+x12=10x13+x14+x15+x16=5得出线性不等式约束矩阵A=[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0;0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0;0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0;0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1;1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0;0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0;0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1];以及线性不等式约束向量b=[10,16,11,18,9,17,10,5];由于没有线性等式约束,所以A1=[],b1=[];再次根据约束条件s.t.x1=1,x1=3x2=2,x2=5x3=2x4=1,x4=2x5=2x6=2x7=2x8=2,x8=8x9=2x10=2x11=2x12=1x13=1x14=3x15=1x16=0得出决策变量下界向量lb=[1,2,2,1,2,2,2,2,2,2,2,1,1,3,1,0]以及上界向量ub=[3,5,2,2,inf,inf,inf,8,inf,inf,inf,inf,inf,inf,inf,0];Matlab程序代码如下:c=[-10,-15,-12.5,-9.5,-8,-8,-8.5,-7.5,-6,-7,-6.5,-6.5,-5,-6,-3.5,-4.5];A=[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0;0,1