当前位置:   article > 正文

面试时间的优化问题_有关求解面试时间问题建模的问题

有关求解面试时间问题建模的问题

在建模课上老师布置了一道建模作业,想了蛮久的然后有了下面的这个思路,当时问了老师,他不予于评价,只说了要用到线性规划 ,然后我就抛弃了这个想法,然后较劲脑筋也想不出来,然后就到网上查找了,确实是使用线性规划的,当时学的是matlab,而网上使用的lingo软件(还没学)。虽然知道大概的意思,但是就是不知道怎么使用matlab怎么实现代码化,而且网上找的方法太过于麻烦(还不够简单),所以我又拿回原来就想出来的方法想了想,就有了下述方案。

原题:

 

秘书面试时间

主管面试时间

经理面试时间

13

15

20

10

20

18

20

16

10

8

10

15

 

有4名同学到一家公司参加三个阶段的面试:公司要求每个同学都首先找公司秘书初试,然后到部门主管处附试,最后到经理处参加面试,并且不允许插队(即在任何一个阶段4名同学的顺序是一样的).由于4名同学的专业背景不同,所以每个人在三个阶段的面试时间也不同,即上述表格。

这4名同学约定他们全部面试完后一起离开公司。假定现在时间是早晨8:00问他们最早何时能离开公司?

模型建立如下:

A=\begin{bmatrix} 13&15 &20 \\ 10 &20 &18 \\ 20 & 16&10 \\ 8&10 &15 \end{bmatrix}=\begin{bmatrix} a_{11} &a_{12} & a_{13}\\ a_{21}& a_{22} & a_{23}\\ a_{31}&a_{32} & a_{33}\\ a_{41}&a_{42} & a_{43} \end{bmatrix}

 

假定他们就按甲、乙、丙、丁的顺序进行逐个面试,假设当最后一个人面试完后总的时间记为T,则有

T= a_{11}+a_{12}+a_{13}+(a_{12}-a_{21})+(a_{13}-a_{22})+a_{23}+(a_{22}-a_{31})+(a_{23}-a_{32})+a_{33}+(a_{32}-a_{41})+(a_{33}-a_{42})+a_{43}

当上式中的a_{ij}-a_{i+1,j-1}>0时,取a_{ij}-a_{i+1,j-1}=0

当上式中的a_{ij}-a_{i+1,j-1}\leq 0时,取a_{ij}-a_{i+1,j-1}=|a_{ij}-a_{i+1,j-1}|

以下对进行解释:

把上述求解进行简单化,即假设只有甲、乙两个人在进行面试,且严格按照拟定顺序进行面试,则记两人面试时间完后的总时间为T,则甲的面试时间一定包含在T中,即先有

T\supset a_{11}+a_{12}+a_{13}

因为要按照事先排好的顺序进行面试,故而只有当前面一个人面试完了才轮到下一个人,即当甲参加主管面试时乙才能参加秘书的面试固有上面

(a_{12}-a_{21})>0时,表示当甲还在面试时乙已近面试完并且已经在等甲面试完,而且由于时间的连续性,乙的面试与等待时间已经算在甲的面试时间里了,故取(a_{12}-a_{21})=0

②当(a_{12}-a_{21})<0时,表示当甲面试完了乙还在面试,即当按照事先的顺序进行严格的面试时,在甲乙面试的过程中将会产生|a_{12}-a_{21}|的时间空隙,故有

T\supset a_{11}+a_{12}+a_{13}+|a_{12}-a_{21}|

把上述两个人的情况推广到四个人的情况就可以得到上述的T表达式。

题目要求的是min T,故使用穷举法把所有的排列所得到的时间进行求解,然后取最小值。

最后结果为:min T=84 分钟,最佳的排队顺序为丁、甲、乙、丙。

matlab代码如下(大概是c语言学疯了~):

  1. A=[13,15,20
  2. 10,20,18
  3. 20,16,10
  4. 8,10,15]
  5. a=zeros(1,24)
  6. b=cell(1,24)
  7. c=0
  8. for i=1:4
  9. B=zeros(4,3)
  10. C=A
  11. B(1,:)=C(i,:)
  12. C(i,:)=[]
  13. for j=1:3
  14. D=C
  15. B(2,:)=D(j,:)
  16. D(j,:)=[]
  17. for k=1:2
  18. E=D
  19. B(3,:)=E(k,:)
  20. E(k,:)=[]
  21. for l=1
  22. B(4,:)=E(l,:) %上面主要是求出所有的排序,即穷举
  23. T=B(1,1)+B(1,2)+B(1,3)+B(2,3)+B(3,3)+B(4,3)
  24. for n=1:3
  25. for m=2:3
  26. if B(n,m)>B(n+1,m-1)
  27. continue
  28. else
  29. T=T-(B(n,m)-B(n+1,m-1))
  30. end
  31. end
  32. end
  33. c=c+1
  34. a(1,c)=T
  35. b{1,c}=B
  36. end
  37. end
  38. end
  39. end
  40. a
  41. b
  42. t=min(a)
  43. %//a中数值对应的排列在b中对应的位置

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/496751
推荐阅读
相关标签
  

闽ICP备14008679号