1面试顺序问题一、摘要本文立足现实生活中面试排序问题的特点,站在面试者的角度,要求整个面试过程中使用时间最短,即所有面试者能最早离开公司,分析问题。首先,本文的问题概述如下:有4名同学到一家公司参加三个阶段的面试:公司要求每个同学都必须首先找公司秘书初试,然后到部门主管处复试,最后到经理处参加面试,并且不允许插队(即在任何一个阶段4名同学的顺序是一样的)。已知每个同学在各个阶段面试所需时间(详见附录三)。各同学约定他们全部面试完以后一起离开公司。假定现在时间是早晨8:00,问他们最早何时能离开公司。针对这一问题,由于面试人数较少,运算量不大,故可以运用枚举法将所有面试的情况列举出来。根据题目可知,共有4名同学参加面试,不难得出,4名同学面试顺序的所有情况共有24种,然后计算出所有情况下的面试结束时间,根据比较,可以得出题目要求下的最优结果,枚举法虽然解题效率相对要低,但是考虑的情况较为全面,得出的结果是可靠的。根据以上我们提到的枚举法解决该问题,可能做了很多的无用功,浪费了宝贵的时间,效率低下。为此我们可以进行优化,对于枚举法产生的弊端,我们可以运用0-1整数规划方法进行优化,根据题意建立较为优化的模型,建立相应的目标函数和约束条件,并且对目标函数进行进一步的改善,能够提高解题的效率,简化解决问题的过程,最后将我们的模型在lingo中求解,得出结果与枚举法相一致,即4名同学面试完成的最短时间是84分钟,并且给出面试时间最短排序(丁-甲-乙-丙),为公司面试安排提供具有一定指导意义的建议。关键词:面试问题枚举法0-1整数线性规划2二、问题重述题目给出有4名同学到一家公司参加三个阶段的面试,公司要求每位同学都必须首先找到公司秘书初试,然后到主管处复试,最后到经理处参加面试,并且不允许插队(即在任何一阶段,4名同学的顺序是一样的)。由于4名同学的专业背景不同,所以每人在三个阶段的面试时间也不同。表1秘书初试主观面试经理面试同学甲131520同学乙102018同学丙201610同学丁81015根据题意这四名同学约定他们全部面试完成后一起离开公司,现在时间是早晨8:00,本题需要我们给出一种最合理的排序方案,使得他们最早能够离开公司。三、问题分析与基本假设在社会工作和生活中,面试顺序问题十分常见。题目中的面试流程分为三个阶段,每一位面试官同时期只能面试一位同学,下一名同学面试之前需要等待上一位该阶段面试结束,由于4名同学在任何一阶段的顺序是一样的,公司在安排面试顺序的时候只需要考虑一次,使得总面试时间最短。由于数据较少运用枚举法可以得出真正正确的解。同时,这也是一个整数线性规划问题,针对本题,联系实际,可引入0-1变量,对目标函数进行优化求解。在进行数据分析时,不可能通过几个简单的假设就建立出一个完美的数学模型,这就需要对现有数据进行一个筛选,并在此基础上建立出简易的数学模型。因此,我们假设如下:(1)假设早晨时间8:00为0时刻。(2)假设上一位同学面试结束后,下一位同学立刻开始该阶段面试,且时间间3隔为0。(3)假设整个面试过程中任何一位面试官都连续工作。(4)假设面试过程中没有任何同学退出。(5)假设同学和面试官都在早晨八点准时到场。(6)各位同学和各位面试官没有事先约定好面试顺序,整个过程公平公正四、基本符号说明枚举法符号说明:ijt表示第i个人在第j轮面试结束的时间ijx表示第i个人在第j轮面试所经历的时间kT表示每个面试顺序中每个面试者每轮面试结束时间矩阵Time表示各个同学完成各阶段面试的时刻finaltimeTime.1为每个面试顺序所对应的离开时间最优化方法符号说明:ijX表示第i个人面试第j阶段所用的时间;ijT表示第i个人面试第j阶段的开始时间;T表示4个人面试完成的总时间;ikM表示第k个人是否排在第i个人之前,ikM=1,表示第k个人排在第i个人之前,否则,ikM=0i=1,2,3,4;k=1,2,3,4;j=1,2,3五、模型建立与求解(一)枚举法1.模型概述设第i个人在第j轮面试结束的时间为ijt,所经历的时间为ijx,每个面试顺序中每个面试者每轮面试结束时间设为矩阵kT(24k0,44A24),则第一个人在第一轮结束的时间为ijijxt,1-jij1-iijijttmaxxt,,则43t为最终结束时间。首先根据排列组合原理,可知所有面试顺序排列共有24A44种。4确定每一种排序的面试结束时间为枚举对象,则每个矩阵中最后一行最后一列的时间即最早离开时间。根据题意编制模型如下:42,32,max32,142,11,11111jiTimeTimexijxTimejixTimejixTimejijiijijjiijjiijij利用MATLAB求解结果,得出每一种顺序下每位面试者结束时间矩阵(去掉了第一行第一列的固定时间)。2.模型求解与算法流程图为了使过程更加显而易见,我们制作了简易的算法流程图,其想法是全排列出每一种面试排序方法,然后建立计算公式分别计算每个面试者的结束时间。图1根据此思路我们用MATLAB编写了相应程序得出5最优解101620182010201513151085X,此顺序的面试者结束时间矩阵为847251745631563621331885Time3.模型的优点(1)结合了企业面试时的要求和特点,一一列举所有可能,得到的结果肯定是正确的。(2)算法直观,容易理解,易于证明其正确性。(3)模型稳定,结果贴近实际。5.模型的缺点和改进由于枚举法穷举了所有可能,运算量比较大,解题效率低下,如果枚举范围太大,在时间上就难以承受,所以我们可以在以下方面进行改进:(1)减少状态总数(即减少枚举变量和枚举变量的值域),如采用隐枚举法可以设定条件减持。(2)减少重复计算。(3)将原问题化为更小的问题,比如考虑等待时间最小即结束时间最少的算法实现。(二)优化模型1.模型建立由于已知同学数量和阶段面试时间,只考虑固定一种顺序的情形,记ijX表示第i个同学面试第j阶段所用的时间,ijT表示第i个同学面试第j阶段的开始时间。引入0-1变量ikM,ikM表示第k个人是否排在第i个同学之前,ikM=1,表示第k个人排在第i个同学之前,否则,ikM=0。)4,32,1;4,3,2,1(,ji个同学之后个人排在第,第个同学之前个人排在第,第ikikMik01则i3X为第i个同学面试第3阶段所用时间,3iT为第i个同学面试第3阶段的开始时间,要求四人完成面试后同时离开则可知)(33iiTXMax表示四人完成面试后的结束时间,设为为目标函数)(33iiTXMaxT。6这样T越小则离开时间越早,于是对0-1整数线性规划模型进行改善,改写为)(33iiTXMaxMinT同时根据面试中的四人必须同时离开,可以建立约束TTXTTXTTXTTX4343333323231313此外,结合原题(1)每个人必须面试完上一轮才能开始下一轮面试)2,1;4,3,2,1(1jiXTXijijij(2)每个阶段j只能面试一个人:用0-1变量ikM表示第k个人是否排在第i个人之前,即第k个人排在第i个人之前,ikM=1;否则,ikM=0。若ikM=0,k排在i后面);3,2,1;4,3,2,1,(0kijkiXTXkjijij);3,2,1;4,3,2,1,(kijkiTXTXijkjkj若ikM=1,则k排在i前面);3,2,1;4,3,2,1,(kijkiTXTXkjijij);3,2,1;4,3,2,1,(0kijkiXTXijkjkj综上所述,可得);3,2,1;4,3,2,1,(kijkiTMXTXikkjijij);3,2,1;4,3,2,1,(kijkiTMXTXikijkjkj加上之前的一个约束,综上,最终得出一个0-1整数线性规划模型)(33iiTXMaxMinTs.t.);3,2,1;4,3,2,1,(kijkiTMXTXikkjijij,7);3,2,1;4,3,2,1,(kijkiTMXTXikijkjkj,TTXTTXTTXTTX4343333323231313个同学之后个人排在第,第个同学之前个人排在第,第ikikMik012.模型求解该题是一个0-1整数线性规划问题,直接利用lingo编程求解。计算结果见图2和附录二。图2根据结果,能使四人最早同时离开的面试排序用时84分钟,同时计算并汇总出各同学面试时间和开始时间如下表2。表2各阶段开始时间各阶段使用时间各阶段结束时间甲(秘书初试)81321甲(主管初试)211536甲(经理面试)362036乙(秘书初试)361036乙(主管初试)362056乙(经理面试)561874丙(秘书初试)3620568丙(主管初试)561672丙(经理面试)741084丁(秘书初试)088丁(主管初试)81018丁(经理面试)211536图3图4显示了每位同学在各阶段面试时间长短的排序,可以看出甲的主管面试、乙的秘书面试、丁的经理面试,还有甲的经理面试、乙的主管面试、丙的秘书初试,都分别是同时结束的。表3VariableValueM(S1,S2)0.000000M(S1,S3)0.000000M(S1,S4)1.000000M(S2,S3)0.000000M(S2,S4)1.000000M(S3,S4)1.000000又根据表5的0-1变量运算结果可知最优面试排序为丁、甲、乙、丙,显然计算结果与枚举法模型结果相一致,确定正确。(三)结果分析通过枚举法和规划方法,最终可以确定,公司应该安排四位同学按照丁、甲、乙、丙这样的顺序进行面试可以达到用时最短时间的效果,即84分钟,早晨9:24面试结束.枚举结果如下。0102030405060708090各同学各阶段面试时间及排序各阶段使用时间各阶段开始时间9表4序号面试顺序完成面试所用时间序号面试顺序完成面试所用时间1丁丙乙甲10213乙丙丁甲932丁丙甲乙9714乙丙甲丁963丁乙丙甲8915乙丁丙甲934丁乙甲丙8616乙丁甲丙935丁甲乙丙8417乙甲丁丙936丁甲丙乙9518乙甲丙丁937丙丁乙甲10419甲丙乙丁1028丙丁甲乙9920甲丙丁乙979丙乙丁甲10921甲乙丙丁9110丙乙甲丁10922甲乙丁丙9111丙甲乙丁10423甲丁乙丙9112丙甲丁乙10424甲丁丙乙95如此一来同学可以完成共同离开的心愿,且公司可以以最高效率工作。但是连续工作可能会导致面试官疲惫,公司可以适当在面试过程中添加休息时间,比如在56分钟时进行休息,此时刚好第一、二位同学丁和甲三轮面试结束,乙第二轮面试结束,丙第二轮面试尚未开始,所有人可以共同休息调整状态。图4图2为所有排序方法的结束用时计算结果,可以看出各种顺序的用时差别相当大,当面试人数更多的时候,这一差距会更加显著,所以企业合理安排面试顺序的具有重要现实意义。10六、模型评价与改进本文首先通过枚举法列举出24种排序方案,并计算出每一种排序方式的所用时间,虽然计算量较大,但程序较为容易实现,其正确性也较容易证明。但是可以运用隐枚举法进行改进,提高解题效率。其次,构建了面试排队决策的优化模型,通过目标函数,从而建立成了一个线性规划模型,求地了所有同学排序情况下,被排在最后的一个同学面试完时所用总时间T(也即排序后,从第一个同学参加第一阶段面试时开始计时,到最后一个同学面试完最后一阶段的这段时间)中最小的一个,然后,又建立了一个0-1变量表示其约束条件,并使用LINGO软件求解,所得结果具有一定的正确性和指导意义。但是,本文只讨论了四个同学面试三个阶段的合理排序方法,而没有讨论更多同学面试更多的阶段的合理排序的解决方案,从而使得面试总时间最短。在实际应用中还存在许多更复杂但是类似相关的情形,