面试顺序问题.docx
- 文档编号:3102578
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:20
- 大小:219.62KB
面试顺序问题.docx
《面试顺序问题.docx》由会员分享,可在线阅读,更多相关《面试顺序问题.docx(20页珍藏版)》请在冰豆网上搜索。
面试顺序问题
面试顺序问题
面试顺序问题
一、摘要
本文立足现实生活中面试排序问题的特点,站在面试者的角度,要求整个面试过程中使用时间最短,即所有面试者能最早离开公司,分析问题。
首先,本文的问题概述如下:
有4名同学到一家公司参加三个阶段的面试:
公司要求每个同学都必须首先找公司秘书初试,然后到部门主管处复试,最后到经理处参加面试,并且不允许插队(即在任何一个阶段4名同学的顺序是一样的)。
已知每个同学在各个阶段面试所需时间(详见附录三)。
各同学约定他们全部面试完以后一起离开公司。
假定现在时间是早晨8:
00,问他们最早何时能离开公司。
针对这一问题,由于面试人数较少,运算量不大,故可以运用枚举法将所有面试的情况列举出来。
根据题目可知,共有4名同学参加面试,不难得出,4名同学面试顺序的所有情况共有24种,然后计算出所有情况下的面试结束时间,根据比较,可以得出题目要求下的最优结果,枚举法虽然解题效率相对要低,但是考虑的情况较为全面,得出的结果是可靠的。
根据以上我们提到的枚举法解决该问题,可能做了很多的无用功,浪费了宝贵的时间,效率低下。
为此我们可以进行优化,对于枚举法产生的弊端,我们可以运用0-1整数规划方法进行优化,根据题意建立较为优化的模型,建立相应的目标函数和约束条件,并且对目标函数进行进一步的改善,能够提高解题的效率,简化解决问题的过程,最后将我们的模型在lingo中求解,得出结果与枚举法相一致,即4名同学面试完成的最短时间是84分钟,并且给出面试时间最短排序(丁-甲-乙-丙),为公司面试安排提供具有一定指导意义的建议。
关键词:
面试问题枚举法0-1整数线性规划
确定每一种排序的面试结束时间为枚举对象,则每个矩阵中最后一行最后一列的时间即最早离开时间。
根据题意编制模型如下:
利用MATLAB求解结果,得出每一种顺序下每位面试者结束时间矩阵(去掉了第一行第一列的固定时间)。
2.模型求解与算法流程图
为了使过程更加显而易见,我们制作了简易的算法流程图,其想法是全排列出每一种面试排序方法,然后建立计算公式分别计算每个面试者的结束时间。
图1
根据此思路我们用MATLAB编写了相应程序得出
最优解
,此顺序的面试者结束时间矩阵为
3.模型的优点
(1)结合了企业面试时的要求和特点,一一列举所有可能,得到的结果肯定是正确的。
(2)算法直观,容易理解,易于证明其正确性。
(3)模型稳定,结果贴近实际。
5.模型的缺点和改进
由于枚举法穷举了所有可能,运算量比较大,解题效率低下,如果枚举范围太大,在时间上就难以承受,所以我们可以在以下方面进行改进:
(1)减少状态总数(即减少枚举变量和枚举变量的值域),如采用隐枚举法可以设定条件减持。
(2)减少重复计算。
(3)将原问题化为更小的问题,比如考虑等待时间最小即结束时间最少的算法实现。
(二)优化模型
1.模型建立
由于已知同学数量和阶段面试时间,只考虑固定一种顺序的情形,记
表示第
个同学面试第
阶段所用的时间,
表示第
个同学面试第
阶段的开始时间。
引入0-1变量
,
表示第
个人是否排在第
个同学之前,
=1,表示第
个人排在第
个同学之前,否则,
=0。
则
为第
个同学面试第3阶段所用时间,
为第
个同学面试第3阶段的开始时间,要求四人完成面试后同时离开则可知
表示四人完成面试后的结束时间,设为为目标函数
。
这样
越小则离开时间越早,于是对0-1整数线性规划模型进行改善,改写为
同时根据面试中的四人必须同时离开,可以建立约束
此外,结合原题
(1)每个人必须面试完上一轮才能开始下一轮面试
(2)每个阶段
只能面试一个人:
用0-1变量
表示第
个人是否排在第
个人之前,即第
个人排在第
个人之前,
=1;否则,
=0。
若
=0,
排在
后面
若
=1,则
排在
前面
综上所述,可得
加上之前的一个约束,综上,最终得出一个0-1整数线性规划模型
s.t.
2.模型求解
该题是一个0-1整数线性规划问题,直接利用lingo编程求解。
计算结果见图2和附录二。
图2
根据结果,能使四人最早同时离开的面试排序用时84分钟,同时计算并汇总出各同学面试时间和开始时间如下表2。
表2
各阶段开始时间
各阶段使用时间
各阶段结束时间
甲(秘书初试)
8
13
21
甲(主管初试)
21
15
36
甲(经理面试)
36
20
36
乙(秘书初试)
36
10
36
乙(主管初试)
36
20
56
乙(经理面试)
56
18
74
丙(秘书初试)
36
20
56
丙(主管初试)
56
16
72
丙(经理面试)
74
10
84
丁(秘书初试)
0
8
8
丁(主管初试)
8
10
18
丁(经理面试)
21
15
36
图3
图4显示了每位同学在各阶段面试时间长短的排序,可以看出甲的主管面试、乙的秘书面试、丁的经理面试,还有甲的经理面试、乙的主管面试、丙的秘书初试,都分别是同时结束的。
表3
Variable
Value
M(S1,S2)
0.000000
M(S1,S3)
0.000000
M(S1,S4)
1.000000
M(S2,S3)
0.000000
M(S2,S4)
1.000000
M(S3,S4)
1.000000
又根据表5的0-1变量运算结果可知最优面试排序为丁、甲、乙、丙,显然计算结果与枚举法模型结果相一致,确定正确。
(三)结果分析
通过枚举法和规划方法,最终可以确定,公司应该安排四位同学按照丁、甲、乙、丙这样的顺序进行面试可以达到用时最短时间的效果,即84分钟,早晨9:
24面试结束.枚举结果如下。
表4
序号
面试顺序
完成面试所用时间
序号
面试顺序
完成面试所用时间
1
丁丙乙甲
102
13
乙丙丁甲
93
2
丁丙甲乙
97
14
乙丙甲丁
96
3
丁乙丙甲
89
15
乙丁丙甲
93
4
丁乙甲丙
86
16
乙丁甲丙
93
5
丁甲乙丙
84
17
乙甲丁丙
93
6
丁甲丙乙
95
18
乙甲丙丁
93
7
丙丁乙甲
104
19
甲丙乙丁
102
8
丙丁甲乙
99
20
甲丙丁乙
97
9
丙乙丁甲
109
21
甲乙丙丁
91
10
丙乙甲丁
109
22
甲乙丁丙
91
11
丙甲乙丁
104
23
甲丁乙丙
91
12
丙甲丁乙
104
24
甲丁丙乙
95
如此一来同学可以完成共同离开的心愿,且公司可以以最高效率工作。
但是连续工作可能会导致面试官疲惫,公司可以适当在面试过程中添加休息时间,比如在56分钟时进行休息,此时刚好第一、二位同学丁和甲三轮面试结束,乙第二轮面试结束,丙第二轮面试尚未开始,所有人可以共同休息调整状态。
图4
图2为所有排序方法的结束用时计算结果,可以看出各种顺序的用时差别相当大,当面试人数更多的时候,这一差距会更加显著,所以企业合理安排面试顺序的具有重要现实意义。
六、模型评价与改进
本文首先通过枚举法列举出24种排序方案,并计算出每一种排序方式的所用时间,虽然计算量较大,但程序较为容易实现,其正确性也较容易证明。
但是可以运用隐枚举法进行改进,提高解题效率。
其次,构建了面试排队决策的优化模型,通过目标函数,从而建立成了一个线性规划模型,求地了所有同学排序情况下,被排在最后的一个同学面试完时所用总时间T(也即排序后,从第一个同学参加第一阶段面试时开始计时,到最后一个同学面试完最后一阶段的这段时间)中最小的一个,然后,又建立了一个0-1变量表示其约束条件,并使用LINGO软件求解,所得结果具有一定的正确性和指导意义。
但是,本文只讨论了四个同学面试三个阶段的合理排序方法,而没有讨论更多同学面试更多的阶段的合理排序的解决方案,从而使得面试总时间最短。
在实际应用中还存在许多更复杂但是类似相关的情形,此时,若还用本文中的解决方案未必是合理的。
因此,对更多同学面试更多的阶段的合理排序的解决方案是进一步应该研究和改进的方向。
七、参考文献
[1]姜启源,谢金星,叶俊.数学模型(3版).北京:
高等教育出版社,2003.
[2]徐玖平,胡知能.运筹学-数据·决策.北京:
科学出版社,2006.
[3]茆诗松,程依明,濮晓龙.概率论与数理统计(第二版).北京:
高等教育出版社,2002
[4]赵静,但琦,数学建模与数学实验.北京:
高等教育出版社,2003.
[5]FrankR.Giordano,MauriceD.Weir,WilliamP.Fox(美).数学建模.叶其孝,姜启源等译.北京:
机械工业出版社,2005
[6]宋兆基等.MATLABA在科学计算中的应用.北京:
清华大学出版社。
2005.
八、附录
附录一:
MATLAB程序:
student
(1).shijian=[131520];
student
(2).shijian=[102018];
student(3).shijian=[201610];
student(4).shijian=[81015];%将各学生面试时间存到结构体student
T=pailie(4,student)%求到所有面试顺序所对应的面试时间存到结构体T
fori=1:
24
fori=1:
24
string=[sprintf('X%d',i)'=T(i).rearray;'];
eval(string);
end
end%将所有面试顺序所对应的面试时间保存为矩阵
附录1(pailie.m的内容):
function[T]=pailie(k,S)%k为进行全排列的个数
A=1:
k;
Q=perms(A);%对A进行全排列得到的数组
[m,n]=size(Q);%得到Q的大小
fori=1:
m
a=Q(i,1);
b=Q(i,2);
c=Q(i,3);
d=Q(i,4);
T(i).rearray=[S(a).shijian;S(b).shijian;S(c).shijian;S(d).shijian];
%将全排列得到的面试者面试时间存到T结构体
end
end
fork=1:
24
string=[sprintf('Time%d(1,1)',k)sprintf('=X%d(1,1);',k)];
eval(string);%对每一个面试顺序中第一个面试者中秘书初始结束时间
string=[sprintf('Time%d(1,2)',k)sprintf('=X%d(1,1)',k)sprintf('+X%d(1,2);',k)];
eval(string);%对每一个面试顺序中第一个面试者中主管复试结束时间
string=[sprintf('Time%d(1,3)',k)sprintf('=X%d(1,1)',k)sprintf('+X%d(1,2)',k)sprintf('+X%d(1,3);',k)];
eval(string);%对每一个面试顺序中第一个面试者中经理面试结束时间
string=[sprintf('Time%d(2,1)',k)sprin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面试 顺序 问题