赞
踩
在建模课上老师布置了一道建模作业,想了蛮久的然后有了下面的这个思路,当时问了老师,他不予于评价,只说了要用到线性规划 ,然后我就抛弃了这个想法,然后较劲脑筋也想不出来,然后就到网上查找了,确实是使用线性规划的,当时学的是matlab,而网上使用的lingo软件(还没学)。虽然知道大概的意思,但是就是不知道怎么使用matlab怎么实现代码化,而且网上找的方法太过于麻烦(还不够简单),所以我又拿回原来就想出来的方法想了想,就有了下述方案。
原题:
| 秘书面试时间 | 主管面试时间 | 经理面试时间 |
甲 | 13 | 15 | 20 |
乙 | 10 | 20 | 18 |
丙 | 20 | 16 | 10 |
丁 | 8 | 10 | 15 |
有4名同学到一家公司参加三个阶段的面试:公司要求每个同学都首先找公司秘书初试,然后到部门主管处附试,最后到经理处参加面试,并且不允许插队(即在任何一个阶段4名同学的顺序是一样的).由于4名同学的专业背景不同,所以每个人在三个阶段的面试时间也不同,即上述表格。
这4名同学约定他们全部面试完后一起离开公司。假定现在时间是早晨8:00问他们最早何时能离开公司?
模型建立如下:
假定他们就按甲、乙、丙、丁的顺序进行逐个面试,假设当最后一个人面试完后总的时间记为T,则有
①当上式中的时,取
②当上式中的时,取
以下对①、②进行解释:
把上述求解进行简单化,即假设只有甲、乙两个人在进行面试,且严格按照拟定顺序进行面试,则记两人面试时间完后的总时间为T,则甲的面试时间一定包含在T中,即先有
因为要按照事先排好的顺序进行面试,故而只有当前面一个人面试完了才轮到下一个人,即当甲参加主管面试时乙才能参加秘书的面试固有上面
①当时,表示当甲还在面试时乙已近面试完并且已经在等甲面试完,而且由于时间的连续性,乙的面试与等待时间已经算在甲的面试时间里了,故取。
②当时,表示当甲面试完了乙还在面试,即当按照事先的顺序进行严格的面试时,在甲乙面试的过程中将会产生的时间空隙,故有
把上述两个人的情况推广到四个人的情况就可以得到上述的T表达式。
题目要求的是min T,故使用穷举法把所有的排列所得到的时间进行求解,然后取最小值。
最后结果为:min T=84 分钟,最佳的排队顺序为丁、甲、乙、丙。
matlab代码如下(大概是c语言学疯了~):
- A=[13,15,20
- 10,20,18
- 20,16,10
- 8,10,15]
- a=zeros(1,24)
- b=cell(1,24)
- c=0
- for i=1:4
- B=zeros(4,3)
- C=A
- B(1,:)=C(i,:)
- C(i,:)=[]
- for j=1:3
- D=C
- B(2,:)=D(j,:)
- D(j,:)=[]
- for k=1:2
- E=D
- B(3,:)=E(k,:)
- E(k,:)=[]
- for l=1
- B(4,:)=E(l,:) %上面主要是求出所有的排序,即穷举
- T=B(1,1)+B(1,2)+B(1,3)+B(2,3)+B(3,3)+B(4,3)
- for n=1:3
- for m=2:3
- if B(n,m)>B(n+1,m-1)
- continue
- else
- T=T-(B(n,m)-B(n+1,m-1))
- end
- end
- end
- c=c+1
- a(1,c)=T
- b{1,c}=B
- end
- end
- end
- end
- a
- b
- t=min(a)
- %//a中数值对应的排列在b中对应的位置
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。