|
Download README.md from nio-inc/MOP_Model: direct link, hf CLI and curl.
- Browser
- Download file 6.45 kB
-
https://huggingface.co/nio-inc/MOP_Model/resolve/main/README.md
- Command line
-
hf download hf://nio-inc/MOP_Model/README.md
-
curl -L -o README.md https://huggingface.co/nio-inc/MOP_Model/resolve/main/README.md
6.45 kB
| license: apache-2.0 | |
| # MOP-RL-model | |
| ## Introduction | |
| **MOP-RL-model** 是一款专为**多目标混合整数线性规划 (MO-MILP)** 任务打造的大型语言模型。该模型基于 Qwen2.5-7B 架构,并使用新颖的多目标规划强化学习框架 (MOP-RL) 进行了对齐训练。 | |
| 在复杂的资源调度、智能制造与现代物流决策中,传统大模型往往难以平衡存在冲突的多目标,且容易在长序列推理中产生“逻辑幻觉”或“奖励作弊 (Reward Hacking)”。MOP-RL-model 突破了这一瓶颈,不仅掌握了基础的运筹学约束构建能力,更具备了在高维决策空间中捕捉帕累托前沿 (Pareto Front) 的深层权衡智慧。 | |
| 本模型的核心技术亮点包括: | |
| * 两阶段课程学习 (Two-stage Curriculum Learning):模型经历了从“单目标基础训练 (密集奖励)”到“多目标扩展训练 (稀疏帕累托奖励)”的阶梯式对齐,有效抑制了强化学习中的策略震荡与基础能力崩塌。 | |
| * 帕累托感知奖励 (Pareto-Aware Reward Shaping):摒弃了传统的标量逼近奖励,引入基于底层求解器 (如 Gurobi) 支配性测试的帕累托验证器,将复杂的数学证明转化为精确的绝对物理反馈。 | |
| * REINFORCE++ 算法:采用去除了价值网络 (Critic-free) 的改进型策略梯度算法,结合 Batch 内优势函数归一化与概率比裁剪,显著提升了面对上千 Token 的结构化思维链 (Structured CoT) 推理时的收敛稳定性。 | |
| * 结构化思维链输出 (Structured CoT)**:模型被强制要求遵循“问题分析——> 建模与标量化——>可执行代码生成”的严谨规范,确保了生成结果的物理可执行性与逻辑自治性。 | |
| ## Requirements | |
| 运行 MOP-RL-model 的代码与普通 Qwen2.5 模型(详情参见:https://huggingface.co/Qwen/Qwen2.5-7B )一致,推荐使用最新版本的 `transformers`。 | |
| ```bash | |
| pip install transformers>=4.37.0 | |
| # 如果需要本地运行生成的优化代码,还需要安装求解器 | |
| pip install gurobipy | |
| ``` | |
| > **Warning**: The generated code often imports `gurobipy`. Ensure you have a valid Gurobi license to execute the generated solver scripts in your local environment. | |
| ## Quickstart | |
| 以下是一段使用 `transformers` 库加载并运行模型进行多目标建模的示例代码: | |
| ```python | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| model_name = "YourOrg/MOP-RL-model" | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_name, | |
| torch_dtype="auto", | |
| device_map="auto" | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| # 示例多目标调度问题描述 | |
| prompt = """ | |
| **[Task]** | |
| Based on the [Problem Description] and [Target JSON Format] below, please write a complete Python script. | |
| The script must use the `gurobipy` library to model and solve the multi-objective problem, and encapsulate the final solution results into JSON data, writing them to a file named `input.json`. | |
| **[Input Information]** | |
| 1. **Multi-objective Problem Description**: | |
| \"\"\" | |
| {problem_desc} | |
| \"\"\" | |
| 2. **Target Output JSON Format Example**: | |
| \"\"\" | |
| {json_template} | |
| \"\"\" | |
| **[Requirements]** | |
| 1. **Modeling Logic**: | |
| - Clearly define decision variables and constraints. | |
| - **Multi-objective Handling**: Choose an appropriate multi-objective processing method based on the context (e.g., weighted sum, hierarchical sequence/lexicographic, or Pareto frontier). If weights are not specified, assume equal weights or provide adjustable parameters. | |
| 2. **Code Standards**: | |
| - The code must be a complete, runnable Python script. | |
| - Include necessary comments explaining the mathematical model. | |
| - Must include checks for model solution status (e.g., checking for `GRB.OPTIMAL`). | |
| 3. **Data Output**: | |
| - After solving, extract variable values. | |
| - **Format Matching**: Construct a Python dictionary that strictly matches the [Target Output JSON Format Example]. | |
| - **File Writing**: Use `json.dump` to save the result as `input.json`. | |
| 4. **Final Output**: | |
| - Please wrap your code in a Python markdown block, i.e., starts with ```python and ends with ```. | |
| - Provide only the Python code block.""" | |
| messages = [ | |
| {"role": "system", "content": "You are an algorithm expert proficient in Operations Research and the Python Gurobi solver. You excel at translating complex business scenarios into mathematical models and writing robust code."}, | |
| {"role": "user", "content": prompt} | |
| ] | |
| text = tokenizer.apply_chat_template( | |
| messages, | |
| tokenize=False, | |
| add_generation_prompt=True | |
| ) | |
| model_inputs = tokenizer([text], return_tensors="pt").to(model.device) | |
| generated_ids = model.generate( | |
| **model_inputs, | |
| max_new_tokens=2048 | |
| ) | |
| generated_ids = [ | |
| output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) | |
| ] | |
| response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] | |
| print(response) | |
| ``` | |
| ## RL code | |
| RL训练代码放在如下链接里: | |
| https://github.com/xuebozhang525-alt/MOP_RL | |
| ## Evaluation & Performance | |
| MOP-RL-model 在具有极高难度的工业级多目标混合整数线性规划测试集(包含 1892 个复杂长尾案例)上进行了严苛的级联指标测评。 | |
| 相较于直接在多目标数据上进行零样本推理或单纯进行 SFT 的基线模型,本模型实现了“降维打击”般的性能跃升。 | |
| | Metric / Evaluation Level | Description | Score | | |
| | --- | --- | --- | | |
| | 格式准确率 | 生成代码无格式错误 | 1.000 (100%) | | |
| | 代码可执行率 | 无约束遗漏,成功提取变量并求得有效可行解,且求解器语法无报错的概率 | 88.01% | | |
| | 条件帕累托率 | 在模型完全正确的前提下,解集通过支配性测试的概率 | 77.43% | | |
| | 综合帕累托成功率 | parado解的总概率 | 68.15% | | |
| 与base的对比结果如下: | |
| | 模型 | 格式准确率 | 代码可执行率 | 条件帕累托率 | 整体帕累托率 | | |
| |------|-----------|------------|------------|------------| | |
| | ChatGPT 5(闭源) | 0.985 | 0.615 | 0.732 | 45.0% | | |
| | DeepSeek-R1(671B) | 0.968 | 0.821 | 0.582 | 47.8% | | |
| | Qwen3-Max(1T) | 0.975 | 0.862 | 0.689 | 59.4% | | |
| | MOP-RL(7B) (Ours) | 1.000 | 0.880 | 0.774 | 68.1% | | |
| ## Citation | |
| 如果您在研究中使用了本模型,请引用以下论文: | |
| **📢 注:相关数据集和论文将会在近日发布。** | |
| --- |