电梯调度算法简述

  0x00 简述

  该算法基于BUS算法的结构,增加了在中间楼层是否停靠的判断和在顶、底层时下一个停靠点的寻找;

  1.如果电梯在顶层,遍历请求队列中的所有请求,记录在运行方向上的:最近的同方向外部请求、最近的同方向内部请求、最远的反方向外部请求;

   调度时,增加对电梯是否满员的判断,如果满员,则只满足内部请求,下一个停靠点定为最近的同方向内部请求;如果电梯未满,同时存在同方向的外部请求和内部请求时停靠在最近的请求楼层,不存在同方向请求时停靠在最远反方向外部请求楼层;

   在底层时同理;

  2.在中间楼层时,判断下一个可停靠点是否开关门,条件包括是否满员、是否在该楼层有请求;

  0x01 算法的独到之处:

    i.相对于BUS算法,灵活地利用了已知的信息(包括请求信息、电梯的容量、剩余空间等状态信息),减少了不必要的停靠开关门的时间;

    ii.由于每一趟都尽量优先解决同方向上的请求,整个调度过程不会存在某个乘客等待过长时间的情况(最多是来回一趟的时间),这样设计的实用性是优秀的的,这一点也算是对BUS算法的学习和借鉴;

    iii.电梯满员时不停靠的策略比较贴近现实,减少了大量的超载拒绝,在上下班高峰期时能大幅提升电梯调度运行的效率。

时间: 2024-11-10 15:07:38

电梯调度算法简述的相关文章

结对项目:电梯调度算法的实现和测试——报告

一.编程人员 徐方宇.陈少杰 二.工作照片 三.结对编程优缺点 优点: 1. 程序员互相帮助,互相教对方,可以得到能力上的互补. 2. 可以让编程环境有效地贯彻Design. 3. 增强代码和产品质量,并有效的减少BUG. 4. 降低学习成本.一边编程,一边共享知识和经验,有效地在实践中进行学习. 5. 在编程中,相互讨论,可能更快更有效地解决问题. 缺点: 对于有不同习惯的编程人员,可以在起工作会产生麻烦,甚至矛盾. 两个人在一起工作可能会出现工作精力不能集中的情况.程序员可能会交谈一些与工作

1.8 小飞的电梯调度算法

题目:有一栋楼,现在设计一种电梯调度算法:电梯在一楼让大家上电梯,然后根据大家选择要到的楼层算出某一楼层i,电梯在i层停下让所有人下电梯,然后大家爬楼梯达到自己的楼层.请问电梯停在哪一层,可以使得这一次的所有乘客爬楼层之和最短? (一) 最直接最简单的方法就是直接枚举从第一层到最后一层,然后算出电梯停在哪一层会使得所有乘客爬楼层之和最短. 代码如下: int nPerson[]; //nPerson[i]表示到第i层的乘客的数目 int nFloor = 0, nMinFloor = 0; in

编程之美读书笔记1.8 - 小飞的电梯调度算法

http://blog.csdn.net/pipisorry/article/details/36688019 问题: 亚洲微软研究院所在的希格玛大厦一共有6部电梯.在高峰时间,每层都有人上下,电梯每层都停.实习生小飞常常会被每层都停的电梯弄的很不耐烦,于是他提出了这样一个办法: 由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层.所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层.在一楼的时候,每个乘客选择自己的目

结对作业——电梯调度算法的实现与测试之需求分析与算法设计

结队成员:李宝全 & 黄一凡 李保全的博客首页:http://www.cnblogs.com/libaoquan/ cooding链接:https://coding.net/u/2013040101159/p/4elevator/git 4路电梯调度算法展示:http://ele.libq.ren/ 结对编程题目:电梯调度 现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示: 电梯编号 可服务楼层 最大乘客数量 最大载重量 1 全部楼层 10 800KG 2 单层 10 8

编程之美-小飞的电梯调度算法另一种解

放暑假了,在家闲着也是闲着,翻一翻去年买的<编程之美>这本书,有一些收获.昨天看到小飞的电梯调度算法这个问题,思考一番,得到了和书中给出的标准答案不一样的解决方法. 一.问题描述: 亚洲微软研究院所在的希格玛大厦一共有6部电梯.在高峰时间,每层都有人上下,电梯在每层都停.实习生小飞常常会被每层都停的电梯弄得很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层.所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客

第1章 游戏之乐——小飞的电梯调度算法

小飞的电梯调度算法 1. 问题描述: 亚洲微软研究院所在的希格玛大厦一共有6部电梯.在高峰时间,每层都有人上下,电梯每层都停.实习生小飞常常会被每层都停的电梯弄的很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层.所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层.在一楼的时候,每个乘客选择自己的目的层,电梯则计算出应停的楼层. 问:电梯停在哪一层楼,能够保证这次乘坐电梯的所有乘客

结对编程--电梯调度算法

1.需求分析: 实现电梯调度算法,预先输入乘坐电梯人数.每个人的起始楼层和到达楼层以及当前电梯所在楼层,电梯会根据算法依次将所有人员接入电梯并送至其重点楼层. 2.代码截图 3.约定的规范 使用Tab制表符 每行不超过100 {}另起一行 规范示例: 4.记录时间 命题讨论:1h 思路分析:1h 代码编写:24h 程序测试:2h 博客记录:1h 5.心得体会 结对编程可以通过自己的parterner来发现自己之前的不足,矫正错误 通过电梯调度算法,复习了数据结构和C语言的指针,结构体等

结对编程之电梯调度算法

   电梯调度结对编程                             1.题目:设计一个电梯调度算法,实现基本的电梯调度功能,要求有四部电梯,每部电梯21层,并且具有重量检验算法. 2.设计前的准备:确定了结对之后,我们首先对设计中可能遇到的问题进行了大体的分析与讨论,确定了编程的方向(java语言)并且约定了一些编程规范,语法规范为使用eclipse中的format规范代码,其他可能遇到的编程问题会在开发中随时交流.接着我们对题目进行了更深入的分析,考虑到电梯运行时的各种情况并发表自

结队作业之电梯调度算法

结队成员:沈聪和......习志敏,没错,就是我俩. 习志敏博客链接:http://www.cnblogs.com/xizhimin/ 沈聪博客链接:http://www.cnblogs.com/congshen/ 前言 非常开心能有这次学习编程的机会,也很感谢学校能给我们这样一个编程的环境,从进学校开始,几乎每一次编程都是需要别人协助和指导,现在有这个机会得以锻炼锻炼,感觉还不错,而且这次能有一个搭档真的是很高兴,这次结队编程中,我很荣幸能够和习志敏成为一队,刚开始,我们对对方都不是特别了解,