更新时间:2026-08-12 GMT+08:00
分享

数学规划求解器

创建任务

创建数学规划求解器-数学规划求解器任务, 该接口为异步操作,返回任务ID,任务的状态及结果请通过查询任务详情接口获取

URI

POST /v2/{project_id}/optverse/optverse-mpsolver/tasks

表1 路径参数

参数

是否必选

参数类型

描述

project_id

是

String

用户项目ID,获取方法请参见获取项目ID。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

是

String

该字段填为“application/json”。

表3 请求Body参数

名称

类型

必选

描述

input_json

表 input_json

是

任务输入信息,json格式;每个子服务该对象结构不同

input

表 input

是

任务输入信息

output

表 output

否

任务输出信息

备注:以下信息由用户提供

表4 input_json

名称

类型

必选

描述

parameters

表 parameters

否

任务输入信息,json格式;每个子服务该对象结构不同。置空则代表使用默认参数

备注:以下信息由用户提供

表5 parameters

名称

类型

必选

描述

name

string

是

求解器参数名称

value

int/double

是

求解器参数值

求解器开放参数如下:

表6 parameters

名称

类型

必选

描述

time_limit

double

否

求解时间上限,单位为秒。取值范围[0.0, 1e+20](1e+20)

gap

double

否

仅对MIP问题有效。[0, 1],默认值为0.0

表7 input

名称

类型

必选

描述

type

表9

是

上传文件模式

data

表10

表11

是

输入数据

表8 output

名称

类型

必选

描述

type

表9

是

输出文件模式

data

表10

表11

是

输出数据

表9 type

名称

类型

必选

描述

obs

string

是

以obs模式上传/输出文件,输入信息为文件格式,传入值为租户OBS对应的文件绝对路径,用户需保证求解器服务有该路径的读写权限。输入内容为标准数学模型文件,支持.lp、.mps、.mps.gz格式;输出信息传入值为租户OBS对应的待存储路径前缀(和input_url成对使用),文件名服务端固定用task_id命名。输出格式为.sol格式

base64

string

是

以base64模式上传/输出文件

表10 data(obs模式)

名称

类型

必选

描述

bucket

string

是

输入/输出数据obs桶名

object

string

是

输入/输出数据绝对路径

表11 data(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"
}

相关文档