feat(PowerSystems): add SecurityConstrainedDispatch benchmark#90
feat(PowerSystems): add SecurityConstrainedDispatch benchmark#90Yunn1633 wants to merge 1 commit into
Conversation
🤖 AI Code Review (gemini-3-flash-preview)🇬🇧 English Analysis1. Executive Summary
2. AI Content Analysis
3. Engineering & Economic Assessment
4. Quality Assurance
5. Security & Privacy Check
🇨🇳 中文分析1. 摘要
2. AI 成分分析
3. 工程与经济评估
4. 质量保证
5. 安全与隐私检查
|
y-ji24
left a comment
There was a problem hiding this comment.
感谢贡献 SecurityConstrainedDispatch。整体任务设计比较完整,数据集、Evaluator、Docker 隔离以及验证流程都已经搭建起来,文档也比较齐全。整个 benchmark 已经具备基本的可运行性。
合并前,建议先处理下面几个与 benchmark 有效性和评测正确性相关的问题。
1. 建议说明评分函数的设计依据
目前 evaluator 使用
70 × cost_efficiency + 20 × thermal_margin + 10 × voltage_margin
计算场景得分,再采用
0.75 × mean + 0.25 × min
汇总最终成绩。
这组权重直接决定了 benchmark 的优化目标,但目前没有看到相关说明,例如是否参考了实际调度场景、行业标准,还是经验设置。
建议在 README 或设计文档中补充评分设计的来源。如果属于经验参数,也建议简单说明设计考虑,或者提供权重敏感性分析,方便理解 benchmark 的评价目标。
2. 当前评分区分度较小
根据提交中的结果,baseline 得分约为 71.27,参考 AC-OPF 解约为 78.00。
理论分数范围虽然是 0–100,但目前有效方案主要集中在一个较窄的区间内,可能导致不同方案之间的区分度有限,也容易受到求解器版本或数值误差影响。
建议考虑重新设计评分映射,适当拉开不同方案之间的差距,或者在 Task 文档中明确说明这是一个 credit-based optimization benchmark,而不是绝对评分。
3. 建议进一步考虑固定测试集的过拟合问题
目前所有评测场景均来自公开的 PGLib-OPF 数据,并直接保存在 benchmark 中。
由于 agent 可以读取这些数据,也可以调用 MATPOWER 等工具重新求解,因此 benchmark 更容易评估针对固定数据集的优化能力,而不是算法本身的泛化能力。
后续可以考虑保留部分测试集作为 holdout,或者对已有案例进行一定程度的随机扰动,以降低固定数据集带来的过拟合风险。
4. Evaluator 建议检查同母线发电机的 VG 一致性
Task 中明确要求:
All online generators at the same bus must use the same voltage setpoint.
不过目前 evaluator 主要检查格式、收敛性和 OPF 验证,没有看到对应约束的验证逻辑。
建议在评测前增加这一检查,将同一母线上的发电机进行分组,确认其 VG 保持一致(允许合理数值容差),避免不满足任务约束的方案仍然参与评分。
5. 建议进一步完善 seccomp 的隔离策略
目前 candidate_worker.py 采用的是 seccomp 黑名单方式,仅屏蔽部分系统调用。
这种方式容易因为遗漏新的 syscall 而留下安全风险,例如目前没有看到 io_uring 相关系统调用的限制。另外,Python audit hook 主要覆盖高层文件操作,对直接使用底层系统调用的情况保护有限。
建议评估是否采用白名单策略,仅开放 benchmark 运行所需的最小 syscall 集合;如果继续采用黑名单,也建议补充 io_uring 相关限制。
非阻塞建议
以下内容不会影响本次合并,但可以考虑完善:
- 当前 evaluator 为了检查确定性,会对每个场景运行两次 candidate,整体评测时间约增加一倍,可以考虑采用更轻量的确定性验证方式;
- 超时检测目前依赖异常字符串匹配,建议优先基于异常类型进行判断,提高鲁棒性;
Task_zh-CN.md当前存在编码问题,建议统一保存为 UTF-8,避免中文文档乱码。
整体来看,benchmark 的整体方向没有问题,建议解决以上问题后继续审核。
Background
This task optimizes generator active-power and voltage setpoints under normal and N-1 operating scenarios. An independent AC power-flow verifier checks feasibility and scores operating cost and robustness.
Source
The bundled MATPOWER cases come from PGLib-OPF v23.07 at commit
dc6be4b2f85ca0e776952ec22cbd4c22396ea5a3. License and provenance information are included underreferences/.Validation
From the benchmark directory:
From the repository root: