首页 > 其他 > 详细

电梯层数

时间:2015-11-16 10:52:08      阅读:280      评论:0      收藏:0      [点我收藏+]

最近公司的电梯换了停的层数 改成了 一半一半的停了 

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

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

#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层停靠)

电梯层数

原文:http://www.cnblogs.com/csy2994/p/4968191.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!