
# 数学规划求解器
#### 创建任务
创建数学规划求解器-数学规划求解器任务， 该接口为异步操作，返回任务ID，任务的状态及结果请通过查询任务详情接口获取
#### URI
POST /v2/{project_id}/optverse/optverse-mpsolver/tasks
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                          |
|:---|:---|:---|:---|
| project_id | 是    | String | 用户项目ID，获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-optverse/optverse_04_0026.html)。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                       |
|:---|:---|:---|:---|
| Content-Type | 是    | String | 该字段填为"application/json"。 |
   
 表3请求Body参数 
| **名称**     | **类型**                                              | **必选** | **描述**                     |
|:---|:---|:---|:---|
| input_json | [表 input_json] | 是      | 任务输入信息,json格式;每个子服务该对象结构不同 |
| input      | [表 input]      | 是      | 任务输入信息                     |
| output     | [表 output]    | 否      | 任务输出信息                     |
   
备注：以下信息由用户提供
 表4input_json 
| **名称**     | **类型**                                              | **必选** | **描述**                                 |
|:---|:---|:---|:---|
| parameters | [表 parameters] | 否      | 任务输入信息,json格式;每个子服务该对象结构不同。置空则代表使用默认参数 |
   
备注：以下信息由用户提供
 表5parameters 
| **名称** | **类型**     | **必选** | **描述**  |
|:---|:---|:---|:---|
| name   | string     | 是      | 求解器参数名称 |
| value  | int/double | 是      | 求解器参数值  |
   
求解器开放参数如下：
表6parameters 
| **名称**     | **类型** | **必选** | **描述**                                |
|:---|:---|:---|:---|
| time_limit | double | 否      | 求解时间上限，单位为秒。取值范围\[0.0, 1e+20\](1e+20) |
| gap        | double | 否      | 仅对MIP问题有效。\[0, 1\]，默认值为0.0            |
   
 表7input 
| **名称** | **类型**                                                                                                                       | **必选** | **描述** |
|:---|:---|:---|:---|
| type   | [表9]                                                                                    | 是      | 上传文件模式 |
| data   | [表10] [表11] | 是      | 输入数据   |
   
 表8output 
| **名称** | **类型**                                                                                                                     | **必选** | **描述** |
|:---|:---|:---|:---|
| type   | [表9]                                                                                  | 是      | 输出文件模式 |
| data   | [表10] [表11] | 是      | 输出数据   |
   
 表9type 
| **名称** | **类型** | **必选** | **描述**                                                                                                                                                                   |
|:---|:---|:---|:---|
| obs    | string | 是      | 以obs模式上传/输出文件，输入信息为文件格式,传入值为租户OBS对应的文件绝对路径，用户需保证求解器服务有该路径的读写权限。输入内容为标准数学模型文件，支持.lp、.mps、.mps.gz格式；输出信息传入值为租户OBS对应的待存储路径前缀(和input_url成对使用),文件名服务端固定用task_id命名。输出格式为.sol格式 |
| base64 | string | 是      | 以base64模式上传/输出文件                                                                                                                                                         |
   
 表10data(obs模式） 
| **名称** | **类型** | **必选** | **描述**       |
|:---|:---|:---|:---|
| bucket | string | 是      | 输入/输出数据obs桶名 |
| object | string | 是      | 输入/输出数据绝对路径  |
   
 表11data(base64模式） 
| **名称**  | **类型** | **必选** | **描述**                      |
|:---|:---|:---|:---|
| content | string | 是      | 文件base64编码                  |
| type    | string | 是      | 模型文件格式，支持.lp、.mps、.mps.gz格式 |
   
#### 响应参数
**状态码： 201**
创建成功响应信息
表12响应Header参数 
| 参数                   | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| task_id              | String | 任务编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| create_time          | String | 任务创建时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| estimated_start_time | String | 预估开始时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| status               | String | 任务状态，包括： - Pending：任务等待处理中（排队中）  - Running：任务正在运行  - Expired：任务超时  - Failed：任务失败  - Succeeded：任务成功   |
   
**状态码： 400**
客户端错误响应信息
表13响应Header参数 
| 参数 | 参数类型   | 描述             |
|:---|:---|:---|
| 无  | String | 响应错误信息，详见错误码列表 |
   
 #### 请求示例
```
{
    "input_json": {
        "input": {
            "type": "obs",
            "data": {
                "bucket": "oroas-bi-data",
                "object": "oroas-optvsolver/input/dcmulti.mps"
            }
        },
        "output": {
            "type": "obs",
            "data": {
                "bucket": "oroas-bi-data",
                "object": "oroas-optvsolver/output"
            }
        },
        "parameters": {
            "time_limit": 60.0,
            "gap": 0.0
        }
    }
}
```
或
```
{
    "input_json": {
        "input": {
            "type": "base64",
            "data": {
                "content": "Kk5BTUU6ICAgICAgICAgZG....==",
                "file_type": ".mps"
            }
        },
        "output": {},
        "parameters": {
            "time_limit": 60.0,
            "gap": 0.0
        }
    }
}
```
#### 响应示例
**成功响应示例**
```
{
    "task_id": "40axxxx-701a-47cf-8b56-648xxxxxxd25"
}
```
参数说明如[表14]所示。
 表14响应参数 
| 参数      | 参数类型   | 说明   |
|:---|:---|:---|
| task_id | String | 任务ID |
   
**失败响应示例**
```
{
    "error_code": "JOB_MANAGER.12020007",
    "error_msg": "The task input valid error, inputJson is null."
}
```
#### 查询任务
该API用于查询并显示数学规划求解器任务详情
#### URI
GET /v2/{project_id}/optverse/optverse-mpsolver/tasks/{task_id}
#### 请求参数
表15请求参数 
| **名称**       | **类型** | **IN** | **必选** | **描述**                  |
|:---|:---|:---|:---|:---|
| X-Auth-Token | string | header | 是      | 用户凭证                    |
| project_id   | string | path   | 是      | 项目ID                    |
| service_type | string | path   | 是      | 子服务类型,针对不同服务, 用户侧不需单独赋值 |
| task_id      | string | path   | 是      | 待查询任务id                 |
   
 #### 响应参数
**状态码： 200**
**创建成功响应信息**
| 参数                 | 参数类型                                             | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| task_id            | sring                                            | 是    | 任务id                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| input_json         | string                                           | 是    | 求解器不涉及[表5]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| input              | [表 input]   | 是    | 求解器输入文件信息                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| output             | [表 output] | 是    | 求解器输出文件信息                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| status             | string                                           | 是    | 任务状态，包括： - Pending：任务等待处理中（排队中）  - Running：任务正在运行  - Expired：任务超时  - Failed：任务失败  - Succeeded：任务成功   |
| progress           | string                                           | 是    | 返回求解器日志。求解状态在日志最后显示，可能的状态包括： - Unknown: 未知状态，可能处于问题读取过程中，或其他未定义状态 - Time limit reached: 达到时间上限 - Memory limit reached: 达到宿主机内存上限 - Optimal solution found: 找到最优解（或达到目标gap） - Problem is infeasible: 问题不可行 - Problem is unbounded: 问题无边界 - Problem is infeasible or unbounded: 问题不可行或无边界                |
| output_json        | string                                           | 是    | 求解器服务不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| output_file_base64 | string                                           | 是    | 求解器服务不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| start_time         | String                                           | 是    | 任务开始执行时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| end_time           | String                                           | 是    | 任务结束时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| create_time        | String                                           | 是    | 任务创建时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
**状态码： 400**
**任务不存在**
| 参数 | 参数类型 | 是否必选 | 描述       |
|:---|:---|:---|:---|
| -  | -    | 是    | 任务{0}不存在 |
   
 #### 响应示例
```
{
    "task_id": "1e31xxxx-xxxx-xxxx-xxxx-xxxxxxb635c2",
    "input_json": null,
    "status": "Succeeded",
    "progress": {
        "Gap": "0.0000%"
    },
    "output_json": {
        "outputs": [
            {
                "data": {
                    "bucket": "job-manager-staff",
                    "object": "optvsolver/output/1e31xxxx-xxxx-xxxx-xxxx-xxxxxxb635c2/result.sol"
                },
                "type": "obs"
            },
            {
                "data": {
                    "bucket": "job-manager-staff",
                    "object": "optvsolver/output/1e31xxxx-xxxx-xxxx-xxxx-xxxxxxb635c2/progress.info"
                },
                "type": "obs"
            }
        ],
        "solve_results": {
            "gap": "0.0000%",
            "node": "5",
            "time": "3.96",
            "status": "Optimal solution found",
            "best_bound": "1.881820000000e+05",
            "lp_iteration": "15667",
            "best_solution": "1.881820000000e+05"
        }
    },
    "estimated_start_time": null,
    "start_time": "2025-08-12T09:35:55.436Z",
    "end_time": "2025-08-12T09:36:02.152Z",
    "create_time": "2025-08-12T09:35:54.671Z"
}
```
