电梯调度问题(一)

 一、背景:  (结对成员:杨世超和李夏蕾)

  电梯名称

停靠层数

乘客限制

重量限制

     1

所有楼层

10

800 kg

     2

所有楼层

10

800 kg

     3

所有楼层

20

1600 kg

     4

所有楼层

20

2000 kg

二、结对开发要求

    每一对学生将设计一套接口和类定义这样一种算法提供者可以提供他/她实现“电梯调度程序”类。避免出现 “公共汽车”最坏情况的算法。该算法把电梯作为总线,它从底部到顶部,停在每一层楼,打开门,让人们进出,然后把门关上,继续前进。之后到达顶层,它会下去。该算法能够满足所有的要求,但它显然不是最快的算法。

   三、评分指南 

      评估所有乘客的“平均总旅行时间”在同一个测试用例,越低越好。如果你的表现低于“总线”的解决方案,你得到0分;如果您的程序不能提供任何乘客到正确的目的地,你得到0分。

      一个关于电梯调度提示:当总重量在45公斤的最小限制,或乘客的数量已经在最大,电梯不需要更多的外部请求停止。电梯调度程序不知道有多少乘客等待每层,它不知道有多少乘客将出现。这与现实世界的情况是一样的。

    四、需求分析 

1. 客户(上楼、下楼)信息的输入

用户将其将要上楼、下楼的信息输入,系统要求做即能够将该请求输入,并分享到各层。

2. 当前电梯的状态显示。

3. 客户要求信息的存储,以便于电梯的运作。

4. 电梯的限重报警。  

    五、设计思路 

    1.首先检查是否有完成的任务,如果有,就从该电梯任务列表中去掉这个已经完成的任务。

    2.然后检查电梯是否还有未完成的任务:

    (1)如果有,就去完成,秉承的规则是如果电梯之前是在向上走,那就完成任务列表最开头的任务,如果电梯向下走就完成任务列表最末尾的任务(任务列表中的任务按照任务的楼层从高到低排序)

    3. 当电梯在运行时,我们希望电梯所接客人的位置,能够和电梯运行方向相同,那么电梯就可以停靠在客人所在的位置,这样可以从整体上提高电梯的运行效率。

    4.如果该电梯的任务列表中所有任务都完成。检查一下所有的乘客请求:

    (1)如果当前所有的乘客请求为0个,那么电梯不动。

    (2)如果有请求,那么按照以下优先级顺序来选择加入新的任务

 若乘客的目标位置与电梯的运行方向相同,则首先响应。若相反,则需要等待响应。在响应之前,要判断一下电梯的载重,如果电梯已不能够再承载70kg(平均体重)就忽略这个任务。

     5.一号到四号电梯分别负责0-5层,6-10层,11-15层,16-20层。各个电梯内部,只涉及停靠的楼层按钮并且能显示电梯所在的楼层数。当没有任务时他们分别停在3层,8层,13层,18层。

     6.电梯外部只设置向上,向下,和显示电梯到达的楼层(最底层只有向上按钮,最高层只有向下按钮)。

(需要完善)

 

原文地址:https://www.cnblogs.com/lixialei/p/3592693.html