#
Junjie
2024-12-24 d8f361c9d69271aaa58ba19e75f38e0fee00f3bb
src/main/java/com/zy/common/utils/NavigateSolution.java
@@ -16,21 +16,12 @@
    int[][] map = {{}};
    public NavigateSolution() {
        //载入地图
        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
        navigateMapData.setLev(1);
        int[][] data = navigateMapData.getData();
        this.map = data;
    }
    public NavigateSolution(Integer mapType, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) {
        //载入地图指定层高地图
        NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
        navigateMapData.setLev(lev);
        int[][] data = navigateMapData.getDataFromRedis(mapType, whitePoints, shuttlePoints);
        int[][] data = navigateMapData.getDataFromRedis(lev, mapType, whitePoints, shuttlePoints);
        if (data == null) {
            data = navigateMapData.getData(mapType, whitePoints, shuttlePoints);
            data = navigateMapData.getData(lev, mapType, whitePoints, shuttlePoints);
        }
        this.map = data;
    }
@@ -62,7 +53,7 @@
            //对这个结点遍历,看是否有目标结点出现
            for (NavigateNode node : neighbour_node) {
                // G + H + E (对启发函数增加去拐点方案calcNodeExtraCost)
                int gCost = calcNodeCost(current_node, node) * calcNodeExtraCost(current_node, node, end);
                int gCost = calcNodeCost(current_node, node) + calcNodeExtraCost(current_node, node, end);
                if (node.getX() == end.getX() && node.getY() == end.getY()) {//找到目标结点就返回
                    //init_node操作把这个邻居结点的父节点设置为当前结点
                    //并且计算出G, F, H等值
@@ -207,7 +198,13 @@
        // 拐向主轨道的点
        if (map[nextNode.getX()][nextNode.getY()] == 3) {
            return 1;
            //------------------三凯独特判断------------------//
            if (nextNode.getX() == 15) {
                return 2;//影响算法,不要在15排这个主轨道换向
            }
            //------------------三凯独特判断------------------//
            return 0;
        }
        // 普通拐点