pairproject总结和结果

自从1.2后还有几次修改代码的历程

修改的2.0版本:

主要是针对状态机的优化

Idle

遍历当前请求楼层,如果有楼层,则跑过去。

如果该楼层的请求是destination,进入状态drop

如果该楼层的请求是direction和运行方向相同,设置方向,进入状态drop

如果该楼层的请求时direction和运行方向相反,若当前没有乘客在里面,进入状态pick,否则进入
Drop并且将运动方向设为任务方向

Drop 实际指的是顺行状态

根据方向,从当前楼层开始遍历剩余楼层

如果超重,则找到最近的destination楼层跑过去

如果未超重,则找到最近的destination或同方向direction楼层,跑过去

如果找不到需要停靠的楼层,则改变任务方向,同样寻找一次

如果依然找不到需要停靠的楼层,则进入Idle状态

Pick 实际指的是逆行状态

根据任务方向,从方向开始楼层向方将结束楼层遍历所有楼层

找到第一个符合自己任务方向的direction楼层作为自己的TaskFloor

向TaskFloor运动,途中不再停止。(因为进入Pick时没有乘客,确保该状态途中不会遇到
Destination要求)

优化算法的2.1

调度算法依然是简单的和 Hurry Bus 相同的算法,Scheduler 每次寻找能
够最快响应要求楼层的电梯跑向预定楼层,但是修改了估计时间的算法使之
更精确。ElevatorTask 使用的状态机基本和 Auto Bus 相同,具有自主寻
地完成所有任务的能力,对某一些状态转换做了一些优化。

改进:
1.更精细的时间估计方法。Auto Bus x 估计电梯响应时间时计入已知的中
间停靠楼层所额外花费的时间。
2.修改了 Elevator Task 从空闲状态进入接乘时,确定启动方向的方法。
现在 Elevator Task 在同一时间接收到多个 Pick 呼叫时,会自动分析上
下行到开始释放乘客的时间,选择时间短的方向前进。

效率:
相对与 Auto Bus,平均时间改进略有进步,在下班高峰情况时的成绩提升
很多,但是同时在上班高峰情况时成绩有一定的下降。

优化算法2.2

改进:
1.再次改进了状态机从 Idle 状态进入 Pick 状态的检测条件和优先顺序,
使平均时间更短、表现更稳定。
2.上班高峰检测机制,关注记录当前0、1层上楼请求的频率,当其超过阈值时
将开启上班高峰优先模式,并且至少会持续一段时间。当0、1层上楼请求的频
率连续小于阈值一定时间之后将关闭上班优先模式。
上班高峰优先模式提供来自0、1层上楼请求的两种优先策略,半优先模式优先
将0、1层上层请求分配给所有电梯,但是电梯的状态机从空闲状态进入工作时
候并不强制处理它;全优先模式则是强制有限处理。实际的测试中我们发现全
优先模式能够取得更好的综合成绩,因此默认使用全优先模式。

优化2.1和2.2相比于2.0在效率上。

优化3.0和3.1

1.精简了状态机的工作状态,为了最大限度利用所有电梯的剩余空间,不再使用不能在中途上人的 Pick 状态,现在电梯在任何时候都能够响应需要中途停 靠上人的请求。

2.现在一半的电梯在空闲模式下接受多个请求时候会优先选择上行,另一半优 先选择下行。

3.收回请求机制,电梯在完成楼层的 Pick 请求后通知 Scheduler 和其他电梯,其他电梯自动消除该请求。CancelledReq 属性记录了收到其他电梯的完 成通知而移除请求的次数。

4.大量的测试表明宽松的时间估计方法(只关注相距楼层而不计入中途停靠)在统计和个例中都能比较精细的时间估计方法有更好的表现,因此 0.3 版本 的时间估计再次回到 0.20 版本中使用的宽松方法。修改了检测上班高峰的方法,现在上班高峰需要满足请求比例超过阈值和请求 频率超过阈值两个条件。

效果相比于2.0版本提高很多

转载于:https://www.cnblogs.com/teamshit/archive/2012/10/22/2734230.html

【转自lzplzp】pair project总结相关推荐

  1. G4Sui老师的pair project(197)

    在做的云里雾里的individual project之后,这次的pair project让我开始找到了一下软件工程的感觉!其中原因除了C#能稍微捯饬明白了,还有就是合作的力量. 本次结对编程进程: 1 ...

  2. Pair Project: API设计 by Xiao Li and Yishi Xing

    Pair Project API设计 本次 Pair Project 的内容是设计一个电梯调度系统. 我们认为一套完整的电梯调度系统应该包括以下三个类: (1)      乘客类 (2)      电 ...

  3. Pair Project:电梯控制程序 编写心得 最新版

    (之前不知道这个博客两个人都要写完整的,所以现在补全) 小组:王安然:10061210 李斌:10061150 在这两个星期之中,我与李斌二人组成了一个小组,完成了Pair Project--电梯控制 ...

  4. Pair project(刘昊岩11061156 黄明源11061186)

    Pair project members:刘昊岩11061156,黄明源11061186 两周时间,工程下午刚刚结束,现做一些总结. 在现有工程基础上修改schedule 包下方法,主要思想是,也就是 ...

  5. PAIR PROJECT 总结 PART1 --韦昀

    本次结对编程由我和王熹完成,先发图片 结对编程我们之前从没接触过,关于优缺点书上是这样写的: (1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力. (2)对于开 ...

  6. 电梯调度算法 软工 Pair Project

    软工要求的结对编程,随机分组,然后,我(郭立轩)和六班的闫生辉分在了同一组.之前并不认识,虽然如此,这次结对编程的经历还是相当愉快的,也学到了不少东西. OK,下面进入正文 关于结对编程 如何利用结对 ...

  7. Pair Project: Elevator Scheduler Report By Hu Renjun

    0.结对人员 Hu(155) Tan(189) 1.关于结对编程 优点:coder的大部分错误可以在第一时间被reviewer发现,这省下了很多本应当在项目测试阶段花费的时间:   结对编程写出的每一 ...

  8. Pair Project

    第二次作业的结对编程项目:电梯调度系统 结对编程小组成员:吴煜10061149    全风楠10061186 这次的作业与个人项目不同,不是从头写一个新的程序,而是在一个已有的程序之上做修改然后实现新 ...

  9. 现代软件工程 结对编程 (I) 三维棋类游戏

    Pair Project I 3D Board Game Turn a usual 2D board game into 3D by transferring  board and game rule ...

最新文章

  1. vbscript input select 添加个option根据value值到指定位置--相当于排序
  2. Web应用开发技术(1)-html
  3. Android动态权限申请工具类非常好用包含9组危险权限
  4. 用好CloudIDE提升Web全栈编码效率
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的图书租赁系统
  6. 程序为什么非得装入内存再执行?
  7. 写给程序员和UI--Android的切图标准
  8. 再谈System.arraycopy和Arrays.copyOf
  9. python凹多边形分割_使用Opencv python从图像裁剪凹面多边形
  10. python水仙花数的编程代码-Python 求“水仙花数”的方法和具体代码
  11. Java基础面试题(持续更新)
  12. WDF驱动简介及几个驱动对象介绍
  13. 微商公社新兵连第一天
  14. 浅谈Java设计之——Java初始化数组(List/Map)时为何要空数组而不是null
  15. 【windows】查看文件md5码
  16. Python学习笔记:第十三站 接着找对象
  17. 信创操作系统--麒麟Kylin桌面版 (项目七 网络连接:有线、无线网络)
  18. 掌握农业信息化核心 物联网助力智慧农业
  19. ventory+wtg(vhd)步骤
  20. Windows 下 Docker 与 VMware 共存

热门文章

  1. Linux ifconfig命令
  2. Safari tabindex 不工作的问题 (误
  3. Android关于finish()与System.exit()都不能退出应用的原因
  4. nginx for discuz 伪静态规则
  5. Directory Service Maintenance
  6. 今天整理了一些老作品
  7. android @id和@+id的区别
  8. Android Json操作
  9. 监控工具—Prometheus—基础介绍
  10. java模拟单链表环形链表解决约瑟夫问题