using System; namespace MultiWheelC.TrajectoryPlanning.CoarsePath; /// 一次规划的只读统计与终止说明;长度和净空单位为 m。 public sealed class PlanningDiagnostics { /// /// 创建规划统计快照。 /// 参数中的节点数量均为非负计数;pathLengthMeters 和 minimumBodyClearanceMeters 单位为 m;elapsed 为总耗时;pathSearchElapsed 为地图和起终点预检通过后的路径产出耗时;terminationReason 为可读终止说明,可为 null。 /// public PlanningDiagnostics( int expandedNodeCount = 0, int generatedNodeCount = 0, int reopenedNodeCount = 0, int staleOpenListEntryCount = 0, int peakOpenListCount = 0, double pathLengthMeters = 0d, double minimumBodyClearanceMeters = 0d, TimeSpan elapsed = default(TimeSpan), string terminationReason = null, TimeSpan pathSearchElapsed = default(TimeSpan)) { ExpandedNodeCount = expandedNodeCount; GeneratedNodeCount = generatedNodeCount; ReopenedNodeCount = reopenedNodeCount; StaleOpenListEntryCount = staleOpenListEntryCount; PeakOpenListCount = peakOpenListCount; PathLengthMeters = pathLengthMeters; MinimumBodyClearanceMeters = minimumBodyClearanceMeters; Elapsed = elapsed; PathSearchElapsed = pathSearchElapsed; TerminationReason = terminationReason ?? string.Empty; } /// 从 Open List 取出并真正扩展的节点数量。 public int ExpandedNodeCount { get; } /// 生成并尝试加入搜索状态的节点数量。 public int GeneratedNodeCount { get; } /// 以严格更小代价到达同一离散键而重新打开的节点数量。 public int ReopenedNodeCount { get; } /// 从 Open List 取出后因已有更优条目而丢弃的陈旧堆条目数量。 public int StaleOpenListEntryCount { get; } /// 搜索期间 Open List 同时容纳的最大有效或待丢弃条目数量。 public int PeakOpenListCount { get; } /// 成功路径的累计弧长,单位 m;失败结果通常为 0。 public double PathLengthMeters { get; } /// 成功路径所有点中车体保守净空下界的最小值,单位 m;失败结果通常为 0。 public double MinimumBodyClearanceMeters { get; } /// 从规划入口到返回结果的总耗时。 public TimeSpan Elapsed { get; } /// 地图和起终点预检通过后,二维启发式、Hybrid A*、回溯、装配和最终复核的耗时;不含建图,搜索前失败时为零。 public TimeSpan PathSearchElapsed { get; } /// 面向调用方的终止原因;成功时可为空字符串。 public string TerminationReason { get; } }