您的位置:首页 > 其它

电梯层数

2015-11-16 10:17 225 查看
最近公司的电梯换了停的层数 改成了 一半一半的停了

我觉得这样效率应该并没有高多少

所以没事写了个程序试了一下

#coding=utf-8
'''
电梯10层/上10个人(只考虑从底层上人  每一层是否有人暂时不考虑),10个人随机去随机的层数,每个人只去自己想去的层数,而不会去就近的层数
电梯每上(下)一层需要1S,开关门各需要1s,上下一个人各需要1s
考虑三种情况
1:电梯每隔一层停一次 需要2个电梯 10个人分流成2部分
2:电梯只上最上面50%的层数 需要2个电梯 10个人分流成2部分
3:电梯每一层都停        需要2个电梯 10个人分流成2部分
电梯考虑使用dict容器
'''
import random
elevator1a={}
elevator1b={}
elevator2a={}
elevator2b={}
elevator3a={}
elevator3b={}
def func(elevator,arg1):
if arg1=="1a":
for x in range(0,5):
elevator[x]=random.randrange(1,10,2)
elif arg1=='1b':
for x in range(0,5):
elevator[x]=random.randrange(2,11,2)
elif arg1=='2a':
for x in range(0,5):
elevator[x]=random.randrange(2,6,1)
elif arg1=='2b':
for x in range(0,5):
elevator[x]=random.randrange(6,11,1)
elif arg1=='3a':
for x in range(0,5):
elevator[x]=random.randrange(1,11,1)
elif arg1=='3b':
for x in range(0,5):
elevator[x]=random.randrange(1,11,1)
#--------------------------------------------------------
#电梯容器造好了 如果使用类的话应该更加方便 不过好久没用 类有点忘了。
def funElevatorRun(elevator,arg1):
'''
根据电梯的类型 计算出所需的时间
遍历dict的value 根据value计算时间
电梯每上(下)一层需要1S,开关门各需要1s,上下一个人各需要1s
'''
time1=20#电梯运行上下总共用的时间
time2=0
if arg1=="1a":
#1,3,4,7,9
result=elevator.values()
for x in range(3,10,2):
#进入某一层
num = result.count(x)
if num!=0:
time2=time2+(2+num)
elif arg1=='1b':
#2,4,6,8,10
result=elevator.values()
for x in range(2,10,2):
#进入某一层
num = result.count(x)
if num!=0:
time2=time2+(2+num)
elif arg1=='2a':
#1,2,3,4,5
result=elevator.values()
for x in range(1,6,1):
#进入某一层
num = result.count(x)
if num!=0:
time2=time2+(2+num)
elif arg1=='2b':
#6,7,8,9,10
result=elevator.values()
for x in range(6,10,1):
#进入某一层
num = result.count(x)
if num!=0:
time2=time2+(2+num)
elif arg1=='3a':
#all
result=elevator.values()
for x in range(1,10):
#进入某一层
num = result.count(x)
if num!=0:
time2=time2+(2+num)
elif arg1=='3b':
#all
result=elevator.values()
for x in range(1,10):
#进入某一层
num = result.count(x)
if num!=0:
time2=time2+(2+num)
return time1+time2
print '-------------------------------------------------------------'
time1 =funElevatorRun(elevator1a,'1a')+funElevatorRun(elevator1b,'1b')
time2 =funElevatorRun(elevator2a,'2a')+funElevatorRun(elevator2b,'2b')
time3 =funElevatorRun(elevator3a,'3a')+funElevatorRun(elevator3b,'3b')
#运行10000次
for x in range(10000):
func(elevator1a,'1a')
func(elevator1b,'1b')
func(elevator2a,'2a')
func(elevator2b,'2b')
func(elevator3a,'3a')
func(elevator3b,'3b')
time1=time1+funElevatorRun(elevator1a,'1a')+funElevatorRun(elevator1b,'1b')
time2=time2+funElevatorRun(elevator2a,'2a')+funElevatorRun(elevator2b,'2b')
time3=time3+funElevatorRun(elevator3a,'3a')+funElevatorRun(elevator3b,'3b')
print 'time1:',time1
print 'time2:',time2
print 'time3:',time3


time1: 587783
time2: 604958
time3: 637796
[Finished in 0.9s]


结果表明 隔层停的话 效率是最高的

当然 这个模型并没有考虑 每一层是否有人上电梯

并且也没有考虑乘电梯的人是否会就近改乘电梯的情况(比如他要去10层 那么他可以在9,10,11层停靠)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: