# 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<PathRoute> | 是 | 要分析的路径列表 |
| Strategy | AnalysisStrategy | 否 | 分析策略，默认Balanced |
| CollisionData | List<CollisionResult> | 否 | 碰撞数据 |

#### 输出字段
| 字段名 | 类型 | 说明 |
|-------|------|------|
| AnalysisResults | List<PathAnalysisResult> | 分析结果列表 |
| BestRoute | PathRoute | 最佳路径 |
| Report | AnalysisReport | 分析报告 |
| Recommendations | List<Recommendation> | 优化建议 |

### 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
/// <summary>
/// 路径分析引擎
/// </summary>
public class PathAnalysisEngine
{
    /// <summary>
    /// 分析单条路径
    /// </summary>
    /// <param name="route">路径对象</param>
    /// <param name="context">分析上下文</param>
    /// <returns>详细分析结果</returns>
    public PathDetailedAnalysis AnalyzePath(PathRoute route, AnalysisContext context);
    
    /// <summary>
    /// 对多条路径进行分组分析
    /// </summary>
    /// <param name="routes">路径列表</param>
    /// <returns>分组结果</returns>
    public List<EndpointGroup> GroupPathsByEndpoint(List<PathRoute> routes);
    
    /// <summary>
    /// 分析并分组多条路径
    /// </summary>
    public List<EndpointGroup> AnalyzeAndGroupPaths(List<PathRoute> routes, string strategy);
    
    /// <summary>
    /// 选择最佳路径
    /// </summary>
    /// <param name="analyses">分析结果列表</param>
    /// <returns>最佳路径</returns>
    public PathRoute SelectBestPath(List<PathDetailedAnalysis> analyses);
}

/// <summary>
/// 路径分析报告生成器
/// </summary>
public class PathAnalysisReportGenerator
{
    /// <summary>
    /// 生成分析报告
    /// </summary>
    public AnalysisReport GenerateReport(List<EndpointGroup> groups, string strategy);
    
    /// <summary>
    /// 导出报告
    /// </summary>
    public void ExportReport(AnalysisReport report, string filePath, ReportFormat format);
}
```

## 2.5.3.8. 注释设计

### 代码注释规范
```csharp
/// <summary>
/// 分析策略
/// </summary>
public enum AnalysisStrategy
{
    /// <summary>
    /// 安全优先
    /// </summary>
    SafetyFirst,
    
    /// <summary>
    /// 效率优先
    /// </summary>
    EfficiencyFirst,
    
    /// <summary>
    /// 平衡策略
    /// </summary>
    Balanced,
    
    /// <summary>
    /// 自定义权重
    /// </summary>
    Custom
}

/// <summary>
/// 路径详细分析结果
/// </summary>
public class PathDetailedAnalysis
{
    /// <summary>
    /// 路径ID
    /// </summary>
    public string RouteId { get; set; }
    
    /// <summary>
    /// 路径名称
    /// </summary>
    public string RouteName { get; set; }
    
    /// <summary>
    /// 安全分数（0-100）
    /// </summary>
    public double SafetyScore { get; set; }
    
    /// <summary>
    /// 效率分数（0-100）
    /// </summary>
    public double EfficiencyScore { get; set; }
    
    /// <summary>
    /// 转弯难度分数（0-100）
    /// </summary>
    public double TurnDifficultyScore { get; set; }
    
    /// <summary>
    /// 直达分数（0-100）
    /// </summary>
    public double TortuosityScore { get; set; }
    
    /// <summary>
    /// 综合加权评分
    /// </summary>
    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<PathDetailedAnalysis> | 路径分析列表 |
| BestPath | PathDetailedAnalysis | 最佳路径 |
| AverageScore | double | 平均评分 |

### AnalysisReport 结构
| 字段名 | 类型 | 说明 |
|-------|------|------|
| ReportId | string | 报告ID |
| GeneratedTime | DateTime | 生成时间 |
| Strategy | AnalysisStrategy | 分析策略 |
| Groups | List<EndpointGroup> | 分组结果 |
| OverallBestPath | PathRoute | 整体最佳路径 |
| Recommendations | List<Recommendation> | 优化建议 |
| 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 | 替代路径 |
