pair work 算法总结

这次的pair work内容是要求电梯的调度。

刚刚和黄杨商量算法的时候吧不觉得这个算法有多复杂,特别是定下了先做到把每个人都能送到预定的目标,不要求别的东西的基础程序,就先写下了一些简单的电梯调度次序:

初稿1.0

调度次序:1)先调度在执行的电梯,尽可能的保留空闲电梯。调动的要求是:正在行动&&经过需求楼层&&行动方向和需求的方向一致。2)如果没有1,就调动空闲电梯。调度空闲电梯的次序:从局里需求楼层最近的电梯开始下达命令&&重量最轻的电梯。

最初就觉得大概得这么执行,后来发现还存在特别多的问题。后来不断地查漏补缺,首先是完成了一个能把人送到而不计效率不存在bug的算法

终稿1.0

Baka Bus 算法详解: 功能分解为 Scheduler 和 Task
Scheduler 功能:接受并且缓存请求,分配给每个电梯的Task。Task 功能:收到Scheduler指定的任务,指挥电梯运动。


Task 逻辑详解:Task 可以理解为电梯的当前任务,其有三个重要成员变量,State(任务状态),TaskDirection(任务方向),TaskFloor(任务楼层)。


State有三个状态
Idle(空闲):即电梯当前没有任何任务,停止在某一楼层状态。
Pick(接人):即电梯在空闲时,收到一个Scheduler指定来的Direction请求,即有乘客要求上电梯时,电梯驶向乘客方向去接人的状态。 Drop(下人):即电梯在任何时候收到一个Scheduler指定来的Destination请求后,电梯按着TaskDirection方向行驶,并且在需要停靠的楼层开门使人上下的状态。

电梯初始状态一般是 Idle,会顺序地从
Idle -- 收到请求 --> Pick --到达呼叫楼层--> Drop --按着TaskDirection方向走到最后一站--> Idle

经历这些状态。 Scheduler 循环逻辑过程:

收到请求:按照请求类型(Destination or Direction)缓存。 循环过程:首要分配Destination类型请求,次要分配Direction类型请求,之后更新电梯的超重状态。


分配Destination请求:
记 该请求的电梯的Task 为 tsk。
如果该tsk的TaskDirection方向与前往 destination 的方向相同,则成功分配;否则不成功
分配成功,则移除该请求;否则,保留在请求列表。

分配Direction请求:
遍历所有电梯,优先寻找一台“顺路”电梯,“顺路”满足下面条件中任一
1、状态为Idle && 未超重 && 正好停在该楼层 2、状态为Pick && 未超重 && 任务方向和请求方向一样 && 路过该楼层或者正在行驶的方向和任务方向相反
3、状态为Drop && 未超重 && 任务方向和请求方向一样 && 路过该楼层
如果找到则马上返回分配成功,否则次要搜索一台停在任意楼层的空闲电梯。

分配成功,则移除该请求;否则,保留在请求列表。


更新超重状态:
为了确保不会出现电梯停机的问题,这里用了比较极端的处理方式,Baka Bus 认为只要剩余空间少于 120 KG 的给定最重体重时即处于超重状态。

上述算法是不计较效率的,拿第三组数据结果大概是900多,后来进行了我们商量修改算法,提出了三次的优化:

1.0优化是每次调度跑过去所需时间最少的电梯去呼叫楼层,计算电梯跑过去所需时间只计算和目标楼层相差几个楼层*每个楼层所需时间,
1.1 优化,修改电梯跑过去所需时间的算法,原基础上跑过去过程中所需停止的几个楼层*停在楼层的时间
1.2 优化,挑选时间最快的电梯过去,如果过去时间相等,那么优先派遣空余空间更大的电梯

这样之后的第三组数据的时间大概是到625.但是黄杨大神依旧不满意,提出了优化2.0

2.0优化:主要是针对状态机的优化,暂时还没有完工,不便多说

转载于:https://www.cnblogs.com/lzplzp/archive/2012/10/19/2730934.html

### 回答1: Point pair feature算法是一种特征提取技术,它通过检测图像中特征点之间的相对位置关系来提取高级特征。它基于点对特征(也称为最小重复特征),可以计算特征点之间的距离、角度、缩放因子和旋转角度,从而对图像中的物体进行精确识别。 ### 回答2: Point Pair Feature (PPF)算法是一种用于3D物体识别和配准的算法。它的原理是利用物体的表面特征点对之间的相对关系来描述物体的形状。 PPF算法首先对物体的表面进行采样,得到一组表面特征点。然后,对于每一个特征点,算法会计算它与其他特征点之间的相对位置关系。这种相对关系是通过计算特征点之间的角度差和距离差来描述的。 具体来说,PPF算法首先计算每一对特征点之间的法向量,并计算它们之间的角度差。然后,算法会计算特征点之间的距离差,并将这两个差值组合成一个特征描述符。这个特征描述符被称为点对特征。 接下来,算法会将这些点对特征进行聚类,将相似的特征点组合在一起。这样,每个聚类代表了物体上的一个唯一的形状特征。最后,通过比较待识别物体的各个形状特征与已知物体的形状特征,可以实现物体的识别和配准。 PPF算法的优点是能够对物体进行全局识别和配准,因为它考虑了物体表面特征点之间的相对位置关系。同时,它对噪声和局部变形有一定的鲁棒性,能够处理一些复杂和不精确的物体模型。 总之,Point Pair Feature算法通过计算物体表面特征点对之间的相对位置关系来描述物体的形状,并通过聚类和比较特征来实现物体识别和配准。 ### 回答3: Point pair feature (PPF)算法是一种在三维物体识别和匹配中常用的特征描述方法。其原理是通过对点云数据中的点对进行计算,来得到物体的特征描述符。 该算法主要包括以下步骤: 1. 特征点提取:从三维点云数据中选择一部分特征点作为计算的候选点。一般可以使用关键点提取算法,如SIFT或ISS等。 2. 匹配候选点:使用快速kd树或其他加速结构来减少匹配时间,将计算的候选点与模型库中的点进行匹配。 3. PPF计算:根据匹配的候选点对,计算其法线和相对位置,并将其组合为特征描述符。这里使用了点对之间的方向、位置和角度信息。 4. 特征匹配:将计算得到的特征描述符与模型库中的特征描述符进行比较,并找到最佳匹配。可以使用最近邻搜索或其他匹配算法。 5. 姿态估计:通过匹配得到的特征对,估计出物体的姿态(位置和旋转)信息。 PPF算法的优点是不依赖于特定的模型参数,可以适用于各种形状的三维物体。并且,由于使用了点对的信息,可以提供更准确和鲁棒的匹配结果。然而,该算法对于大型点云数据和复杂场景的处理速度较慢,需要进行进一步的加速优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值