本帖最后由 木寻云 于 2012-5-17 00:08 编辑
查阅了网上资料后看到关于电梯仿真的主流研究主要有以下两个方面:
(1) 面向对象的电梯运行仿真,通常采用面向对象的编程语言来实现,比如C++。
(2) 面向Agent的电梯群控仿真。
ExtendSim作为面向应用的仿真建模工具,尚未在文献中看到用于电梯的模拟。我希望能做电梯运行层面的仿真。当然另外的原因也是因为群控算法要求的知识更加多,我觉得我hold不住。
我们想要研究的方向是:
(1) 单部电梯在上行高峰、下行高峰以及闲时的情况下,乘客等待时间的规律。原型是本部图书馆电梯,南北楼各有单部电梯,也就是说虽然本部图书馆有两部电梯,但是相互独立的。在高峰期他们能否让学生满意?直接走上楼划算还是等候电梯划算?为学生做决策提出参考意见。
(2) 大家都知道本部电梯南北两部停靠的楼层是不同的,一边是停1,5,7,9;另一边是停1,6,8,10错层停靠。我们将模拟错层停靠和全部都停,这两种情况下到底哪种服务水平高。
合作项目。2人完成。
由于没有参考资料可以借鉴,与ExtendSim善于解决供应链、生产流程等问题的方向些许不同,
在初期设计阶段遇到如下问题,以及初步想到的解决办法:
(1)由于电梯只有一部,但是楼层有n层,每一层都有可能上来乘客,每一层都有可能下去乘客,因此不能简单地用一个activity表示电梯运行的行为。
解决办法:
每一层楼都设置一个activity,
它包括两个入口(可以用SII模块):1电梯原有乘客从n-1楼(上行时)或n+1楼(下行时)来到这一层;2 在该层外等候的乘客。
它还包括两个出口(可以用SIO模块):1 电梯中的乘客需要上楼或下楼的;2 在该层下电梯的乘客。
(2)电梯在每一层停靠的时间是不一样的,这是我们为什么烦躁在电梯上看到4,5,6,7,8,9层全被人点亮是一种什么心情。而如果我一个人独自上9楼又是另一种心情。由于电梯停靠一个楼层和不停一个楼层相差时间比较大(心理估算下来约3倍左右,会再精确测算),因此每个activity时间可能是不同的。
当该层有乘客在外等候,则需要停靠,费时15s;
当该层有乘客出电梯,则需要停靠,费时15s;
如果以上两种情况都没有发生,则直接通过该activity,费时5s。
(3)乘客属性:1 所在楼层;2 到达楼层;3 优先级
(4)上电梯行为:
电梯只有一部,根据顺序一个一个activity来的,但是我们知道每个activity有两个入口,如何避免在外的等候的乘客直接进入该activity呢,我们决定使用门。当电梯行驶到这一个activity的时候门打开,判断里面的小球数量,如果低于上限(就是每部电梯的最大运载量啦),则进入乘客,直到达到上限。(但是电梯总是先下后上,看是看起来这里只能先上,再下?)此时就把门关上,外面的乘客继续等候。如果门打开,则activity=15s;如果门没有打开,则activity=5s。
另外,我本来想,如果电梯已经人满,则后面即使到达一个有乘客在外等候的楼层,门也不开,这样activity=5.但是现实情况是,超载之后多出来的人会下来,下来之后这部电梯就变成了不超载,于是到了下一个楼层会继续停,但是这时候只要上来一个人,它都会警告说超载,于是造成了已经满员,但是层层都停的惨象。——我觉得这也是现在很多电梯要改进的地方——如果上一个楼层已经报警,那么后面遇到外面有人按键但是里面没人按键的情况,就都不要停了!(好像也有点缺陷 = =。)我想多了……
(5)下电梯行为:
电梯有两个出口,该楼层只要有一个人他的“到达楼层”=该楼层数字,则activity就要=15s。但是在这个仿真软件里面,小球是要一个一个过的。那么第一个小球到达的时候就应该要决定该楼层是停多久了。于是我就想到再加一个属性:优先级=到达楼层,上行的时候越小的排在前面,下行的时候越大的排在前面。这样保证其决定性因素的小球走在最前面,来决定activity的运行时间。
(6)判断电梯运行到哪一层了。
另一个问题是:比如楼高1-10,我们可以做一条流水线,1-10楼,然后再10-1楼,这样就有上下行了。但是这样就变成了一个类似地铁的流程:永远从第一个站运行到最后一个,周而复始,即使车上没人了也是这样。但其实电梯不是的,电梯运行到5楼上面楼层没有人呼唤,电梯里也没有人了的话,它就不会往上走的,它原地停下或是返回到一楼。如何解决这个问题呢?
解决办法:目前想到的解决办法是,设置一个另类的小球,它是另一个形状的,它用来表示,小球到达哪一个流程了。完了,这样每一个activity有三个入口和三个出口了!假设乘客都是绿色小球,那么这个“电梯因子”我们就设成黄色小球。黄色小球作为先锋总是走在最前面,上行时,当小球总数>=2的时候,它就按照流程一个一个走下来。如果走到5楼,小球只剩它一个,而楼上的楼层没有乘客在呼唤,则直接走到5楼的下行activity,直接下去接一楼的乘客。如果7楼有一个乘客需要下去,则按照流程走到7楼上行activity,直接飘到7楼下行activity。这样我觉得更符合实际情况一些?
目前就想到这些。
我们要解决的问题:
(1) 高峰时是选择等待电梯,还是选择自己走上去?(取决于队列等待时间)
(2) 错层停靠的效率是否真的有显著提高?(对学生来说:等待时间是否大幅缩短) |