DCP-Bench-Open
收藏DCP-Bench-Open 数据集概述
数据集简介
DCP-Bench-Open 是一个离散组合问题的协作基准测试集,仅涉及整数和布尔决策变量。许多问题表述来自约束规划(CP)社区,以及整数规划社区(无连续变量)、伪布尔和可满足性社区。
主要目标
- 提供一个离散组合优化和满足问题的集中存储库,包括清晰的自然语言描述、相应的数据实例和真实约束模型。
- 作为一个评估框架,用于评估生成式人工智能系统(例如大语言模型)从自然语言描述生成可执行约束模型的能力。
数据集内容与结构
- 真实模型目前使用 CPMpy 库。
- 评估框架目前可以评估 CPMpy、MiniZinc 或 Or-Tools CP-SAT 中生成的模型,并且可以轻松添加更多框架。
- 该基准测试是一个开源项目,欢迎感兴趣的开发者添加新问题、数据实例和评估工具。
- 为了可重复性,研究中请始终使用特定的“发布”版本。
- 该项目最初是 ECAI 2025 上发布的原始 CP-Bench 的扩展。
获取方式
1. 推荐:从发布版本下载
这是获取稳定、版本化数据集副本及所有相应评估脚本的最佳方式。
- 访问项目的 GitHub Releases 页面:https://github.com/kostis-init/CP-Bench-Colab/releases。
- 从最新版本中,下载
dcp-bench-open.jsonl文件(如果需要更多文件,例如评估脚本等,则同时下载Source code存档)。
2. 从源代码生成
如果想使用问题的最新(未发布)版本,可以自行生成数据集文件。
- 克隆代码库。
- 运行
python jsonl_convert.py以创建dcp-bench-open.jsonl。
存储库结构
dataset/ 目录包含基准测试的源问题。每个问题由两个文件组成:
<problem_name>/<problem_name>.cpmpy.py:一个 Python 脚本,包含自然语言问题描述、一个示例实例和一个真实的 CPMpy 模型。<problem_name>/<problem_name>.json:一个 JSON 文件,包含该问题的一个或多个实例,与 Python 脚本兼容。
评估框架
使用评估框架需要 Python 3.12 和 requirements.txt 中列出的库。
验证问题一致性
self_consistency.py 脚本确保每个问题的 .py 文件中提供的示例解决方案是有效的且能正确执行。其工作原理是将生成的解决方案添加为约束并重新求解模型。
要检查所有问题,请运行:
bash
python self_consistency.py
生成包含所有问题的 JSONL 文件
要生成包含 dataset/ 目录中所有问题的新 JSONL 文件,可以使用 jsonl_convert.py 脚本:
bash
python jsonl_convert.py
解决方案准确性的自动评估
该数据集主要用于评估从自然语言生成约束模型的系统。如果生成的模型为给定实例产生有效解决方案,则被视为正确。这可以通过检查解决方案是否满足数据集中提供的真实模型的约束来验证。对于优化问题,目标值也必须匹配。
eval.py 脚本可用于自动化此评估过程,前提是存在一个包含生成模型的文件。例如,如果有包含生成模型的文件 sample_test.jsonl,可以运行:
bash
python eval.py --dataset_file dcp-bench-open.jsonl --test_file sample_test.jsonl --modelling_framework CPMpy
其中,--dataset_file 指定基准测试 jsonl 版本的路径,--test_file 指定包含生成模型的文件的路径,--modelling_framework 指示生成模型中使用的建模框架。
创建待评估模型的测试文件
关于测试文件,每一行应是一个包含两个键的 JSON 对象:id 和 model。
id:问题的 ID,与数据集中出现的完全一致(例如csplib_001_car_sequencing)。model:为该问题生成的模型(作为表示可运行代码的字符串)。确保最终将解决方案输出为 json,其键如decision_variables条目中所述,值为问题中预期的值。这也是评估的一部分:意外的键或值类型被视为不正确。这是因为我们的自动评估基于提交模型打印的解决方案。 本代码库中提供了一个仅包含 5 个生成模型的示例测试文件以供参考:https://github.com/DCP-Bench/DCP-Bench-Open/blob/main/sample_test.jsonl。 目前,评估假设使用每个(多实例)问题的第一个实例。
基准设计
- 可满足问题: 所有问题都设计为至少有一个可行解。对于多实例问题,至少第一个实例保证是可满足的,其余实例不保证能在短时间内求解,有关运行时间的信息目前不是数据集的一部分。
- 人类可读的描述: 问题描述力求清晰且最好是非技术性的。
- 清晰的输出格式: 明确指定每个问题所需的输出格式,以方便自动评估解决方案的准确性。
引用方式
请按如下方式引用我们的工作: bibtex @dataset{dcpbenchopen, author = {Michailidis, K. and Tsouros, D. and Guns, T.}, title = {DCP-Bench-Open}, year = {2025}, publisher = {Zenodo}, doi = {10.5281/zenodo.17800138}, url = {https://doi.org/10.5281/zenodo.17800138} }
或(APA 格式):
Michailidis, K., Tsouros, D., & Guns, T. (2025). DCP-Bench-Open [Data set]. Zenodo. https://doi.org/10.5281/zenodo.17800138




