电梯层数
2015-11-16 10:17
225 查看
最近公司的电梯换了停的层数 改成了 一半一半的停了
我觉得这样效率应该并没有高多少
所以没事写了个程序试了一下
结果表明 隔层停的话 效率是最高的
当然 这个模型并没有考虑 每一层是否有人上电梯
并且也没有考虑乘电梯的人是否会就近改乘电梯的情况(比如他要去10层 那么他可以在9,10,11层停靠)
我觉得这样效率应该并没有高多少
所以没事写了个程序试了一下
#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层停靠)
相关文章推荐
- PHP 底层的运行机制与原理
- [LeetCode]83. Intersection of Two Lists两条单链表的交点
- cassandra 公司内分享 ppt
- (数学)空中加油问题
- 关于数据类型与指针的小笔记--初始化问题&&数组
- 集体智慧总结和使用范围归纳(二)
- iOS字符串截取字符
- Qt使用教程之指定生成设置(三)
- C++ 动态特性
- 什么是句柄
- C. Wilbur and Points(简单贪心加合法性判断)
- eclipse中maven项目部署到tomcat
- QT学习之QString的arg方法
- 如何在脚本中获取进程ID(PID)
- ci 传参
- Python 安装Twisted 提示python version 2.7 required,which was not found in the registry
- 欢迎使用CSDN-markdown编辑器
- [leetcode] 142. Linked List Cycle II
- Ubuntu下安装MIPS交叉编译器 mips-linux-gcc
- JS 实现GOOGLE地图线路规划