自从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/lzplzp/archive/2012/10/22/2732946.html

pairproject总结和结果相关推荐

  1. PairProject: .Net时代炫酷连连看

    PairProject 1:连连看++,Author:张峥东,郭华阳 请大家从:http://files.cnblogs.com/takeitandgo/lianliankan.rar下载试玩!其中有 ...

  2. PairProject 总结

    结对编程人员:张迎春,赵梓皓.下面是我们一起编程的照片. 结对编程的优点: 首先,结对编程的目的是为了减少编程的错误,在编程的时候,大家一起检查错误,一起分析有没有更加合理的编写方法,所以这是结对编程 ...

  3. PairProject 电梯调度 【附加题】

    [附加题] 改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享. 目前的设计有什么缺点, 你会如何改进它? 1.之前判断电梯是否闲置的函 ...

  4. 【转自lzplzp】pair project总结

    pairproject总结和结果 自从1.2后还有几次修改代码的历程 修改的2.0版本: 主要是针对状态机的优化 Idle 遍历当前请求楼层,如果有楼层,则跑过去. 如果该楼层的请求是destinat ...

  5. 现代软件工程 作业 2 结对项目

    这是现代软件工程课的作业 结对项目 Pair Project: 一对同学用结对编程的方法完成 结对编程课件: 现代软件工程讲义 3 结对编程和两人合作 软件工程讲义 3 两人合作(2) 要会做汉堡包 ...

  6. USTC 2011 homework list [现代软件工程 作业]

    这是现代软件工程课的作业列表 (每周更新), 作业分为: 个人项目 Individual Project: 一个人独立完成 结对项目 Pair Project: 一对同学用结对编程的方法完成 团队项目 ...

  7. 现代软件工程 教学计划 适应两种难度和重点

    现代软件工程 教学计划 经过 2007 - 2018 年,30个不同学校的实践后, <构建之法>在大学的两种教法已经出现了, 这两种教学计划适应于两种难度和重点.  下面我们具体介绍这两种 ...

  8. 福大软工1816 · 第五次作业 - 结对作业2

    1.结对同学的博客链接.本作业博客的链接.所Fork的同名仓库的Github项目地址 Github地址:https://github.com/Stellaaa18/pair-project 结对同学的 ...

  9. 软件工程实践结对作业二

    这个作业属于哪个课程 2022年福大-软件工程;软件工程实践-W班 这个作业要求在哪里 要求在这里 这个作业的目标 以北京冬奥会赛事信息平台为载体,初步接触需求分析,了解NABCD模型在实际中的应用, ...

最新文章

  1. 【C++】C++11的enum class enum struct和enum
  2. python 路由转发_RabbitMQ之路由键转发消息
  3. 获取BGR颜色的HSV值
  4. Colourshell:给 shell 命令着色
  5. 【javascipt】Generator函数(生成器)
  6. 转发给上海的朋友们!程序员写了一款抢菜插件!这个抢菜插件让上海很多朋友成功抢了一个月的菜!感谢!...
  7. 麻省理工18年春软件构造课程阅读13“调试”
  8. Hadoop四大组件介绍
  9. 在华为三层交换机上如何实现不同vlan间的通信
  10. 大一计算机知识总结,大学计算机基础超详细知识点(高手总结)免费
  11. 一名软件测试工程师的日常
  12. 任天堂switch底座带网口全新方案分享
  13. java实践课程感想_Java课程总结与感想
  14. 让老主板也支持nvme固态硬盘做系统启动盘,使用mmtool给主板添加nvme协议
  15. 「技术架构」技术风险管理权威指南
  16. 【思维导图】Excel转成思维导图
  17. 使用特定分隔符分割字符串
  18. SVM支持向量机-拉格朗日乘子与对偶问题(1)
  19. 【C语言】数组的基本知识详细讲解(一维数组、二维数组、越界、存储.....
  20. 狂神说Java Linux笔记三(Vim使用及账号用户管理和进程)

热门文章

  1. 通过运行命令services.msc快速打开服务和注册
  2. ​DMBOK知识梳理for CDGA/CDGP——第六章 数据存储与操作(附常考知识点)
  3. hp服务器关掉来电自动重启,HP笔记本出现关机自动重启的解决办法
  4. 离散数学:计算主析取范式(基于真值表)
  5. 国产FPGA图像采集与图像显示
  6. 计算机农业类的sci,农林类容易录用的sci期刊有哪些?
  7. 如何借助网关实现组态软件的摄像头视频监控?
  8. 一个UDEC用于采矿或地下开挖工程的示例
  9. ASEMI快恢复二极管FR107参数,FR107实物,FR107应用
  10. 这可能是最详细的 Windows Debug 详解 了