基于AStar算法的RCP布线优化

本文介绍了对基于AStar算法的RCP布线优化过程,包括解决终点出现斜线问题、调整图源难度设置错误以及优化删除共线点的策略。通过对算法的深入理解和实践,提出了一系列改进措施,提高了布线效率和路径准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前的AStar算法学习笔记博客 提到了大神的基于AStar算法的RCP布线算法   但是大神给的开源码 还有存在可以优化的部分  这个博客主要是记录自己优化的过程

大神源码链接:RCP:gef智能寻路算法(A star)

我的AStar的算法学习:AStar算法学习笔记 


改进与优化

1. 关于终点出现斜线问题

        分析:由于坐标是以起始点作为坐标原点的,所以终点极大可能不在有整数坐标的点位上,找不到路径 就会出现斜线直连

        解决:大神已经给出了解决的代码:算法:Astar寻路算法改进

       我补充下这段代码添加的位置:route()  方法最后获取到路径并放到最终存储路径信息的points过程中, 将最后的几个点进行处理  即:添加points.addPoint(endPoint)之前。当然我更建议将对通过算法获得的路径进行额外的处理的部分封装到独立的函数中,因为处理终点斜线问题只是很多中的一个。

 private void pathExtraControl(PointList points, Point endPoint)
    {
        // 对于终点没有在方格上 出现斜线的处理
        int size = points.size();
        if (size < 3)
            return;
        points.removePoint(size - 1);
        Point pointN1 = points.getLastPoint();
        Point pointN2 = points.getPoint(size - 3);

        if (pointN2.x == pointN1.x)
        {
            points.setPoint(new Point(pointN1.x, endPoint.y), size - 2);
        } else if (pointN2.y == pointN1.y)
        {
            points.setPoint(new Point(endPoint.x, pointN1.y), size - 2);
        }
    }

2.部分线可以经过一些图源

       分析:在预读取为每个点设置难易度时存在问题

       源码自带了标记openList 和 closeList的方法:test()   我也仿写方法标记预读难度的pool池的方法。

      PoolHandler类:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值