| | |
| | | |
| | | import com.zy.core.enums.RouteCollectCountType; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | import static java.util.stream.Collectors.toList; |
| | | |
| | |
| | | |
| | | //问题2 周俊杰 |
| | | public static final List<Integer> MERGE_STA_NO_One = new ArrayList<Integer>() {{ |
| | | add(113);add(119); |
| | | // add(113);add(119); |
| | | }}; |
| | | |
| | | public static final List<Integer> MERGE_STA_NO_TWO = new ArrayList<Integer>() {{ |
| | | // add(116);add(117); |
| | | // add(100);add(101); |
| | | }}; |
| | | |
| | | public static final List<Integer> MERGE_STA_NO_THREE = new ArrayList<Integer>() {{ |
| | | // add(116);add(117); |
| | | // add(106);add(107); |
| | | }}; |
| | | |
| | | public static final List<Integer> MERGE_STA_NO_FOUR = new ArrayList<Integer>() {{ |
| | | // add(116);add(117); |
| | | }}; |
| | | |
| | | // 正序 |
| | | public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = new ArrayList<Integer>() {{ |
| | | add(161);add(157);add(153);add(149);add(124);add(119);add(113);add(999);;add(112);add(107);add(106);add(101);add(100); |
| | | }}; |
| | | // 反序 |
| | | public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<Integer>() {{ |
| | | add(100);add(101);add(106);add(107);add(112);add(999);add(113);add(119);add(124);add(149);add(153);add(157);add(161); |
| | | }}; |
| | | // RGV轨道正序(从上到下) |
| | | public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = Arrays.asList( |
| | | 1004, |
| | | 1007, |
| | | 1010, |
| | | 1014, |
| | | 1018, |
| | | 1021, |
| | | 1024, |
| | | 1028, |
| | | 1031, |
| | | 1035 |
| | | ); |
| | | |
| | | // 反序(直接反转生成) |
| | | public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<>(TRACK_POSITION_POSITIVE_SEQUENCE); |
| | | static { |
| | | Collections.reverse(TRACK_POSITION_REVERSE_SEQUENCE); |
| | | } |
| | | //1楼战站点 |
| | | public static final List<Integer> TRACK_POSITION_ONE = Arrays.asList( |
| | | 1004, 1007, 1010, 1014, 1018, 1021, 1024, 1028, 1031, 1035,1042,1105,1106,1041, |
| | | 1038,1036 |
| | | ); |
| | | //2楼战站点 |
| | | public static final List<Integer> TRACK_POSITION_TWO = Arrays.asList( |
| | | 2003,2006,2009,2012,2015,2018,2021,2024,2027,2030,2037,2031 |
| | | ); |
| | | |
| | | // 轨道映射(把映射站点替换成主站点) |
| | | public static final Map<Integer, Integer> SITE_MAPPING = new HashMap<>(); |
| | | static { |
| | | SITE_MAPPING.put(1042, 1004); |
| | | SITE_MAPPING.put(1105, 1007); |
| | | SITE_MAPPING.put(1106, 1010); |
| | | SITE_MAPPING.put(1041, 1024); |
| | | SITE_MAPPING.put(1038, 1028); |
| | | SITE_MAPPING.put(1036, 1035); |
| | | } |
| | | |
| | | // 获取轨道列表中实际站点 |
| | | private static Integer mapSite(Integer site) { |
| | | return SITE_MAPPING.getOrDefault(site, site); |
| | | } |
| | | |
| | | |
| | | public static String zerofill(String msg, Integer count){ |
| | | if (msg.length() == count){ |
| | |
| | | return msgBuilder.toString(); |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * 获取干涉最远站点 |
| | | * */ |
| | |
| | | indexNo=staFall.size()-1; |
| | | } |
| | | return staFall.get(indexNo); |
| | | } |
| | | |
| | | // 获取当前小车未行走的路线集合 |
| | | public static List<Integer> getRouteDis(Integer groupStart, Integer groupEnd) { |
| | | groupStart = mapSite(groupStart); |
| | | groupEnd = mapSite(groupEnd); |
| | | |
| | | int startIdx = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupStart); |
| | | int endIdx = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupEnd); |
| | | |
| | | if (startIdx == -1 || endIdx == -1) return null; |
| | | |
| | | boolean forward = startIdx < endIdx; |
| | | List<Integer> route = forward ? TRACK_POSITION_POSITIVE_SEQUENCE : TRACK_POSITION_REVERSE_SEQUENCE; |
| | | |
| | | List<Integer> result = new ArrayList<>(); |
| | | boolean addFlag = false; |
| | | for (Integer s : route) { |
| | | s = mapSite(s); |
| | | if (s.equals(groupStart)) addFlag = true; |
| | | if (addFlag) result.add(s); |
| | | if (s.equals(groupEnd)) break; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | return result; |
| | | } |
| | | public static List<Integer> getRouteOne(){ |
| | | |
| | | List<Integer> groupRoute = new ArrayList<>(); |
| | | groupRoute = TRACK_POSITION_ONE; |
| | | |
| | | return groupRoute; |
| | | } |
| | | public static List<Integer> getRouteTwo(){ |
| | | |
| | | List<Integer> groupRoute = new ArrayList<>(); |
| | | groupRoute = TRACK_POSITION_TWO; |
| | | |
| | | return groupRoute; |
| | | } |
| | | |
| | | /* |
| | | * 获取最远站点 |
| | | * */ |
| | | public static Integer RouteIndexFarMas(Integer a,Integer b,Integer c,Integer d){ |
| | | int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(a); |
| | | int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(b); |
| | | int ic = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(c); |
| | | int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d); |
| | | int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(a); //当前位置 |
| | | int ib = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(b); //地图开始位置 |
| | | int ic = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(c); //地图结束位置 |
| | | int id = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(d); //锁结束位置 |
| | | if (id==0){ |
| | | if (ia>ib){ |
| | | if (ia>ic){ |
| | |
| | | public static Short CrnStaEnd(Integer endSta,Integer souSta) { |
| | | switch (endSta) { |
| | | case 100: |
| | | if (souSta == 118){ |
| | | case 102: |
| | | case 111: |
| | | if (souSta == 118 || souSta == 127){ |
| | | return (short)119; |
| | | } |
| | | return (short)149; |
| | | return 149; |
| | | default: |
| | | return endSta.shortValue(); |
| | | } |
| | | } |
| | | |
| | | public static Short SouStaEnd(Integer endSta,Integer souSta){ |
| | | if (souSta == 1103) { |
| | | return (short)1105; |
| | | } |
| | | if(souSta == 1047){ |
| | | return (short)1042; |
| | | } |
| | | return souSta.shortValue(); |
| | | } |
| | | |
| | | |
| | | |
| | | public static void main(String[] arge){ |
| | | List<Integer> routeCurrent = getRoute(100, 124); //获取当前小车路径 |
| | | List<Integer> routeOther = getRoute(149, 161); //获取其它小车路径 |
| | | System.out.println("当前小车路径:\t"+routeCurrent); |
| | | System.out.println("其它小车路径:\t"+routeOther); |
| | | //{"endRoute":999,"lockEndRoute":124,"lockStartRoute":161,"nowRoute":161,"rgvNo":3,"rgvStatus":0,"startRoute":161} 3hao |
| | | Integer i = RouteIndexFarMas(112, 161, 124, 161); |
| | | System.out.println(i); |
| | | //{"endRoute":119,"lockEndRoute":112,"lockStartRoute":100,"nowRoute":112,"rgvNo":2,"rgvStatus":0,"startRoute":100} 2 |
| | | Integer i1 = RouteIndexFarMas(112, 100, 112, 100); |
| | | System.out.println(i1); |
| | | |
| | | boolean routeBoolean = getRouteBoolean(routeCurrent, routeOther); //是否有交集 |
| | | System.out.println("是否有交集:\t"+routeBoolean); |
| | | |
| | | List<Integer> routeIntersection = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.INTERSECTION);//交集 |
| | | System.out.println("路径交集:\t"+routeIntersection); |
| | | |
| | | List<Integer> routeIntersection1 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DIFFERENCESET);//差集 |
| | | System.out.println("路径差集:\t"+routeIntersection1); |
| | | |
| | | List<Integer> routeIntersection2 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.UNION);//并集 |
| | | System.out.println("路径并集:\t"+routeIntersection2); |
| | | |
| | | List<Integer> routeIntersection3 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DEDUPLICATIONUNION);//去重并集 |
| | | System.out.println("路径去重并集:\t"+routeIntersection3); |
| | | |
| | | /* |
| | | * a 小车当前位置 |
| | | * b 小车任务开始位置 |
| | | * c 小车任务结束位置 |
| | | * sign 另一个小车空闲标记 |
| | | * */ |
| | | System.out.println("是否有交集:\t"+RouteAutoBoolean(100,101,124,149,161,153,true)); //是否有交集 true无交集 false有交集 |
| | | |
| | | /* |
| | | * a 小车当前位置 |
| | | * b 小车任务开始位置 |
| | | * c 小车任务结束位置 |
| | | * d 小车初始位置 |
| | | * 获取最大路径差值 |
| | | * */ |
| | | List<Integer> routeDIFF = RouteMapCurrentFar(100,101,124,149); |
| | | System.out.println("当前路径最大集合:\t"+ routeDIFF); |
| | | |
| | | Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,124); |
| | | System.out.println("另一台小车最远站点:\t"+routeFarOther); |
| | | |
| | | |
| | | Integer[] integers = RouteIndexFarArr(100,101,124,149); |
| | | for (Integer integer:integers){ |
| | | System.out.println(integer); |
| | | } |
| | | // List<Integer> routeCurrent = getRoute(100, 124); //获取当前小车路径 |
| | | // List<Integer> routeOther = getRoute(149, 161); //获取其它小车路径 |
| | | // System.out.println("当前小车路径:\t"+routeCurrent); |
| | | // System.out.println("其它小车路径:\t"+routeOther); |
| | | // |
| | | // boolean routeBoolean = getRouteBoolean(routeCurrent, routeOther); //是否有交集 |
| | | // System.out.println("是否有交集:\t"+routeBoolean); |
| | | // |
| | | // List<Integer> routeIntersection = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.INTERSECTION);//交集 |
| | | // System.out.println("路径交集:\t"+routeIntersection); |
| | | // |
| | | // List<Integer> routeIntersection1 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DIFFERENCESET);//差集 |
| | | // System.out.println("路径差集:\t"+routeIntersection1); |
| | | // |
| | | // List<Integer> routeIntersection2 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.UNION);//并集 |
| | | // System.out.println("路径并集:\t"+routeIntersection2); |
| | | // |
| | | // List<Integer> routeIntersection3 = getRouteIntersection(routeCurrent, routeOther, RouteCollectCountType.DEDUPLICATIONUNION);//去重并集 |
| | | // System.out.println("路径去重并集:\t"+routeIntersection3); |
| | | // |
| | | // /* |
| | | // * a 小车当前位置 |
| | | // * b 小车任务开始位置 |
| | | // * c 小车任务结束位置 |
| | | // * sign 另一个小车空闲标记 |
| | | // * */ |
| | | // System.out.println("是否有交集:\t"+RouteAutoBoolean(100,101,124,149,161,153,true)); //是否有交集 true无交集 false有交集 |
| | | // |
| | | // /* |
| | | // * a 小车当前位置 |
| | | // * b 小车任务开始位置 |
| | | // * c 小车任务结束位置 |
| | | // * d 小车初始位置 |
| | | // * 获取最大路径差值 |
| | | // * */ |
| | | // List<Integer> routeDIFF = RouteMapCurrentFar(100,101,124,149); |
| | | // System.out.println("当前路径最大集合:\t"+ routeDIFF); |
| | | // |
| | | // Integer routeFarOther= RouteMapOtherFarStnNo(routeDIFF,124); |
| | | // System.out.println("另一台小车最远站点:\t"+routeFarOther); |
| | | // |
| | | // |
| | | // Integer[] integers = RouteIndexFarArr(100,101,124,149); |
| | | // for (Integer integer:integers){ |
| | | // System.out.println(integer); |
| | | // } |
| | | } |
| | | |
| | | } |