# 2.5.3 路径规划分析功能设计说明 ## 2.5.3.1. 模块描述 路径规划分析模块是碰撞检测功能的高级分析模块,负责对多个路径运行的碰撞结果进行分析,生成路径分析报告,选择最佳路径,提供调整建议。该模块通过综合分析多条路径的安全性、效率、转弯难度等指标,为用户提供数据驱动的路径优化建议。 该模块与PathAnalysisEngine、PathAnalysisReportGenerator和PathAnalysisService紧密集成,实现全面的路径分析功能。 ## 2.5.3.2. 功能 ### 核心功能 1. **多路径分析**:对多条路径进行综合分析 2. **路径评分**:根据多维度指标对路径评分 3. **最佳路径选择**:自动选择最佳路径方案 4. **路径分组**:按终点对路径进行分组比较 5. **分析报告生成**:生成详细的路径分析报告 6. **优化建议**:提供路径调整建议 ### 子功能 | 功能编号 | 功能名称 | 功能描述 | |---------|---------|---------| | 2.5.3.F1 | 安全分析 | 分析路径的安全性和碰撞风险 | | 2.5.3.F2 | 效率分析 | 分析路径的效率指标 | | 2.5.3.F3 | 转弯分析 | 分析路径的转弯难度 | | 2.5.3.F4 | 直达分析 | 分析路径的直达程度 | | 2.5.3.F5 | 路径分组 | 按终点对路径分组 | | 2.5.3.F6 | 综合评分 | 计算路径的综合评分 | | 2.5.3.F7 | 最佳路径 | 推荐最佳路径 | | 2.5.3.F8 | 报告生成 | 生成分析报告 | | 2.5.3.F9 | 建议生成 | 生成优化建议 | ## 2.5.3.3. 性能 ### 性能指标 | 指标名称 | 目标值 | 说明 | |---------|-------|------| | 分析响应时间 | < 3秒 | 单条路径的分析时间 | | 批量分析速度 | > 10条/秒 | 多条路径的分析速度 | | 报告生成时间 | < 5秒 | 生成分析报告的时间 | | 内存占用 | < 300MB | 分析过程的内存占用 | ### 性能优化策略 1. 并行分析多条路径 2. 分析结果缓存 3. 增量分析优化 ## 2.5.3.4. 输入输出项 ### 1. 字段输入输出 #### 输入字段 | 字段名 | 类型 | 必填 | 说明 | |-------|------|-----|------| | Routes | List | 是 | 要分析的路径列表 | | Strategy | AnalysisStrategy | 否 | 分析策略,默认Balanced | | CollisionData | List | 否 | 碰撞数据 | #### 输出字段 | 字段名 | 类型 | 说明 | |-------|------|------| | AnalysisResults | List | 分析结果列表 | | BestRoute | PathRoute | 最佳路径 | | Report | AnalysisReport | 分析报告 | | Recommendations | List | 优化建议 | ### 2. 界面交互输入输出 #### 界面输入 - 路径选择 - 分析策略选择 - 权重参数调整 - 报告导出操作 #### 界面输出 - 路径评分显示 - 对比图表 - 分析报告预览 - 建议列表 ## 2.5.3.5. 算法 ### 路径评分算法 ``` 算法:多维度路径评分 输入:路径,碰撞数据,策略 输出:综合评分 1. 计算安全分数(基于碰撞数) - 无碰撞:100分 - 有碰撞:根据碰撞严重程度扣分 2. 计算效率分数(基于路径长度) - 与最短路径比较 - 越短分数越高 3. 计算转弯难度分数 - 分析转弯角度 - 急转弯越多分数越低 4. 计算直达分数 - 分析路径曲折程度 - 越直达分数越高 5. 根据策略计算加权总分 6. 返回各维度分数和综合分 ``` ### 路径分组算法 ``` 算法:按终点分组路径 输入:路径列表 输出:分组结果 1. 初始化分组列表 2. 对于每条路径: 3. 获取路径终点 4. 查找是否已有匹配的组 5. 如果找到,加入该组 6. 否则创建新组 7. 更新各组统计信息 8. 返回分组列表 ``` ### 优化建议算法 ``` 算法:生成路径优化建议 输入:路径分析结果 输出:建议列表 1. 分析路径的薄弱环节 2. 对于每个问题: 3. 识别问题类型 4. 查找相关最佳实践 5. 生成具体建议 6. 按优先级排序建议 7. 返回建议列表 ``` ## 2.5.3.6. 流程逻辑 ``` 开始 │ ▼ ┌─────────────────┐ │ 选择要分析的路径│ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 选择分析策略 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 加载碰撞数据 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 执行路径分析 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 按终点分组路径 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 计算各维度分数 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 计算综合评分 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 选择最佳路径 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 生成优化建议 │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 生成分析报告 │ └────────┬────────┘ │ ┌────┴────┐ ▼ ▼ ┌────────┐ ┌────────┐ │查看报告│ │导出报告│ └───┬────┘ └───┬────┘ │ │ └─────┬─────┘ │ ▼ 结束 ``` ## 2.5.3.7. 接口 ### 公共接口 ```csharp /// /// 路径分析引擎 /// public class PathAnalysisEngine { /// /// 分析单条路径 /// /// 路径对象 /// 分析上下文 /// 详细分析结果 public PathDetailedAnalysis AnalyzePath(PathRoute route, AnalysisContext context); /// /// 对多条路径进行分组分析 /// /// 路径列表 /// 分组结果 public List GroupPathsByEndpoint(List routes); /// /// 分析并分组多条路径 /// public List AnalyzeAndGroupPaths(List routes, string strategy); /// /// 选择最佳路径 /// /// 分析结果列表 /// 最佳路径 public PathRoute SelectBestPath(List analyses); } /// /// 路径分析报告生成器 /// public class PathAnalysisReportGenerator { /// /// 生成分析报告 /// public AnalysisReport GenerateReport(List groups, string strategy); /// /// 导出报告 /// public void ExportReport(AnalysisReport report, string filePath, ReportFormat format); } ``` ## 2.5.3.8. 注释设计 ### 代码注释规范 ```csharp /// /// 分析策略 /// public enum AnalysisStrategy { /// /// 安全优先 /// SafetyFirst, /// /// 效率优先 /// EfficiencyFirst, /// /// 平衡策略 /// Balanced, /// /// 自定义权重 /// Custom } /// /// 路径详细分析结果 /// public class PathDetailedAnalysis { /// /// 路径ID /// public string RouteId { get; set; } /// /// 路径名称 /// public string RouteName { get; set; } /// /// 安全分数(0-100) /// public double SafetyScore { get; set; } /// /// 效率分数(0-100) /// public double EfficiencyScore { get; set; } /// /// 转弯难度分数(0-100) /// public double TurnDifficultyScore { get; set; } /// /// 直达分数(0-100) /// public double TortuosityScore { get; set; } /// /// 综合加权评分 /// public double WeightedScore { get; set; } } ``` ## 2.5.3.9. 数据结构 ### PathDetailedAnalysis 结构 | 字段名 | 类型 | 说明 | |-------|------|------| | RouteId | string | 路径ID | | RouteName | string | 路径名称 | | TotalLength | double | 总长度(米) | | EstimatedTime | double | 预估时间(秒) | | SafetyScore | double | 安全分数(0-100) | | EfficiencyScore | double | 效率分数(0-100) | | TurnDifficultyScore | double | 转弯难度分数(0-100) | | TortuosityScore | double | 直达分数(0-100) | | WeightedScore | double | 综合加权评分 | | CollisionCount | int | 碰撞次数 | | HotspotCount | int | 热点数量 | ### EndpointGroup 结构 | 字段名 | 类型 | 说明 | |-------|------|------| | GroupId | string | 组ID | | GroupName | string | 组名称 | | EndPoint | Point3D | 终点坐标 | | EndPointDescription | string | 终点描述 | | PathAnalyses | List | 路径分析列表 | | BestPath | PathDetailedAnalysis | 最佳路径 | | AverageScore | double | 平均评分 | ### AnalysisReport 结构 | 字段名 | 类型 | 说明 | |-------|------|------| | ReportId | string | 报告ID | | GeneratedTime | DateTime | 生成时间 | | Strategy | AnalysisStrategy | 分析策略 | | Groups | List | 分组结果 | | OverallBestPath | PathRoute | 整体最佳路径 | | Recommendations | List | 优化建议 | | Summary | string | 分析摘要 | ### Recommendation 结构 | 字段名 | 类型 | 说明 | |-------|------|------| | Id | string | 建议ID | | Type | RecommendationType | 建议类型 | | Priority | int | 优先级(1-5) | | Title | string | 建议标题 | | Description | string | 建议描述 | | AffectedPath | string | 相关路径 | | ExpectedImprovement | string | 预期改进 | ### RecommendationType 枚举 | 值 | 说明 | |---|------| | Safety | 安全改进 | | Efficiency | 效率提升 | | PathSmoothing | 路径平滑 | | CollisionAvoidance | 碰撞避免 | | AlternativeRoute | 替代路径 |