Нет описания

XGJ_zhaoyuan e556a1496c 修改功能性指标中读取二级指标名称的代码逻辑 1 неделя назад
config 08f3150662 增加指标绘图数据csv保存及绘图功能,csv保存到项目本地data路径,修改多个bug,包括shake等,data_process增加车身坐标系转换功能 1 неделя назад
custom_metrics 08f3150662 增加指标绘图数据csv保存及绘图功能,csv保存到项目本地data路径,修改多个bug,包括shake等,data_process增加车身坐标系转换功能 1 неделя назад
modules e556a1496c 修改功能性指标中读取二级指标名称的代码逻辑 1 неделя назад
scripts ee1f60fc35 增加指标绘图数据csv保存及绘图功能,csv保存到项目本地data路径,修改多个bug,包括shake等,data_process增加车身坐标系转换功能 1 неделя назад
templates 059c4672e0 自定义指标最终版 1 месяц назад
test 059c4672e0 自定义指标最终版 1 месяц назад
README.md 042344a299 重构safety/comfort/efficient代码并调通,重构traffic代码部分调通 1 месяц назад

README.md

自定义指标开发指南

概述

本系统支持用户自定义评估指标,您可以通过编写Python脚本来实现自己的指标计算逻辑,并将其集成到评估系统中。

快速开始

  1. 复制 custom_metric_template.py 模板文件
  2. 根据您的需求修改指标计算逻辑
  3. 将您的自定义指标脚本放置在指定目录中
  4. 在运行评估时,使用 --customMetricsPath 参数指定自定义指标目录

自定义指标规范

必要条件

  1. 每个指标类必须继承 BaseMetric 基类
  2. 必须实现 calculate() 方法
  3. 必须在文件中定义 METRIC_CATEGORY 变量,指定指标类别

指标类别

可选的指标类别包括:

  • safety: 安全性指标
  • comfort: 舒适性指标
  • traffic: 交通规则指标
  • efficient: 效率指标
  • function: 功能指标
  • custom: 自定义类别

返回值格式

calculate() 方法应返回一个字典,包含以下字段:

  • value: 指标计算值
  • score: 评分(0-100)
  • details: 详细信息(可选)

示例

```python from modules.lib.metric_registry import BaseMetric

METRIC_CATEGORY = "custom"

class MyCustomMetric(BaseMetric):

def __init__(self, data):
    super().__init__(data)

def calculate(self):
    # 实现您的计算逻辑
    return {
        "value": 42.0,
        "score": 85,
        "details": {"max": 100, "min": 0}
    }

python evaluator.py --configPath config.yaml --dataPath data_dir --reportPath report_dir --logPath logs --customMetricsPath custom_metrics

架构说明

新的架构设计主要包括以下几个部分:

  1. 指标注册系统:通过 MetricRegistry 类实现,负责管理所有可用的指标(内置和自定义)。

  2. 指标基类:所有指标都继承自 BaseMetric 基类,确保接口一致性。

  3. 动态指标选择:通过配置文件中的指标定义,系统只会运行被选中的指标,提高效率。

  4. 自定义指标加载:支持从指定目录加载用户自定义的指标脚本,扩展系统功能。

  5. 兼容性保证:保留了原有的 safety.pycomfort.py 等模块,确保系统向后兼容。

这种设计使系统更加灵活,既能满足选择性运行指标的需求,又能支持用户自定义指标,同时保持了原有代码结构的稳定性。

├── scripts/ │ └── evaluator.py # 评估引擎主程序 ├── modules/ │ ├── lib/ │ │ ├── metric_registry.py # 指标注册系统 │ │ ├── data_process.py # 数据处理模块 │ │ └── log_manager.py # 日志管理模块 │ └── metric/ │ ├── safety.py # 安全性指标模块 │ ├── comfort.py # 舒适性指标模块 │ ├── traffic.py # 交通规则指标模块 │ ├── efficient.py # 效率指标模块 │ └── function.py # 功能指标模块 ├── templates/ │ ├── custom_metric_template.py # 自定义指标模板 │ └── README.md # 自定义指标开发指南 └── custom_metrics/ # 用户自定义指标目录

工作流程

  1. 初始化阶段

    • 加载配置文件
    • 注册内置指标模块
    • 加载自定义指标脚本
    • 提取启用的指标列表
  2. 评估阶段

    • 加载和预处理数据
    • 创建启用指标的实例
    • 并行执行指标计算
    • 收集和组织结果
  3. 报告阶段

    • 生成结构化评估报告
    • 输出到指定目录

      扩展性设计

  4. 新增内置指标

    • 在对应类别模块中添加新方法
    • 系统会自动注册和识别
  5. 添加自定义指标

    • 基于模板创建新的指标脚本
    • 放置在自定义指标目录
    • 无需修改核心代码
  6. 新增指标类别

    • 创建新的类别模块
    • 在注册系统中添加类别支持

      优势

  7. 灵活性 :可以根据配置选择性运行指标,提高效率

  8. 可扩展性 :支持用户自定义指标,无需修改核心代码

  9. 兼容性 :保留原有模块结构,确保向后兼容

  10. 并行处理 :利用多线程提高评估效率

  11. 模块化 :清晰的职责分离,便于维护和扩展 这个架构设计满足了您的需求,既支持从配置文件中选择性运行指标,又允许用户通过自定义脚本扩展系统功能,同时保留了原有的模块化结构。