云服务器内容精选

  • 输入准备 方形件API输入数据示例如下: { "input_json": { "items": [ { "item_id": 0, "item_material": "18mm金丝白橡零度木刺刨花板E0", "item_length": 60.0, "item_width": 553.0, "item_turn": false, "item_num": 1, "item_name": "F-补板/立档条", "item_thick": 18, "label_info": {} } ], "parameters": [ { "calculate_time": 30, "first_cut_direction": 1, "item_backward_trim": 0.0, "item_forward_trim": 0.0, "kerf_horizontal": 4.4, "kerf_vertical": 4.4, "max_program_num": 2, "max_stack_height": 80, "plate_trim_horizontal": 10.0, "plate_trim_vertical": 10.0 } ], "plates": [ { "plate_grain": true, "plate_id": 0, "plate_length": 2440.0, "plate_material": "18mm金丝白橡零度木刺刨花板E0", "plate_num": 9999, "plate_thick": 18.0, "plate_width": 1220.0 } ] }} 父主题: 调用方形件-电子锯服务
  • 如何准备base64数据 将文件转换为Base64编码通常涉及到读取文件内容,然后将这些内容编码为Base64字符串。这个过程可以使用多种编程语言来实现。 # python示例import base64# 打开文件,读取内容with open('yourfile.mps', 'rb') as file: file_content = file.read() # 将文件内容编码为Base64 base64_encoded = base64.b64encode(file_content).decode('utf-8') # 打印Base64编码的字符串 print(base64_encoded) # java示例import java.nio.file.Files; import java.nio.file.Paths; import java.util.Base64; public class Main { public static void main(String[] args) { try { // 读取文件内容 byte[] fileContent = Files.readAllBytes(Paths.get("yourfile.mps")); // 将文件内容编码为Base64 String base64Encoded = Base64.getEncoder().encodeToString(fileContent); // 打印Base64编码的字符串 System.out.println(base64Encoded); } catch (Exception e) { e.printStackTrace(); } } }
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 例如,在创建任务的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://optverse.cn-north-4.myhuaweicloud.com/v2/{{project_id}}/optverse/{service_type}/tasks
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 表3 公共请求消息头 名称 说明 是否必选 示例 Content-Type 发送的实体的MIME类型。 是 application/json; charset=utf-8 X-Auth-Token 用户Token。 是 -
  • 请求消息体 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 { "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 } }} 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。
  • 查询结果 1. 配置查询任务请求参数,替换URL中ProjectId,替换header中的“X-Auth-Token”,复制创建任务返回的task_id到API路径的末尾。 2. 单击右上角“Send”按钮发送请求,请求成功则返回任务结果。 3.1 OBS模式: 算法输出文件在返回结果中以路径形式存放于object字段。 用户可按照输出路径获取算法服务的输出文件。 3.2 base64模式:算法输出文件以base64编码方式添加在返回结果中,求解结果存放于solve_results字段。 父主题: 调用数学规划求解器服务
  • 登录华为云账号 使用Chrome浏览器访问系统环境地址:https://console.huaweicloud.com/optverse/?agencyId=053a59ad180026111f2ac011f5934368®ion=cn-north-4&locale=zh-cn#/optverse/overview,出现如下界面。 输入华为云账号用户名和密码,点击“登录”按钮, 登录成功后,进入OptVerse首页界面,如下图所示: 父主题: 华为云账号环境准备
  • 获取Token 配置获取Token请求,可参考 IAM 获取Token请求示例;选中“Body”配置项,填写用户的iam用户名,密码,domain用户名。 单击右上角“Send”按钮发送请求,在返回的响应头中获取Token值。 Token作为调用OptVerse服务的临时凭证,有效期为24h 若涉及二次验证,需在“Body”配置项中需添加totp认证信息。 二次认证方式建议使用短信或邮箱验证码 二次验证配置及使用具体可参考获取iam用户token(使用密码+虚拟mfa)。 父主题: 使用Postman调试API接口
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 说明 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点中获取。 例如OptVerse服务在“华北-北京四”区域的Endpoint为“optverse.cn-north-4.myhuaweicloud.com”。 resource-path 资源路径,也即API访问路径。 从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 响应示例 成功响应示例 { "task_id": "40axxxx-701a-47cf-8b56-648xxxxxxd25"} 参数说明如表4所示。 表4 响应参数 参数 参数类型 说明 task_id String 任务ID 失败响应示例 { "error_code": "optverse.00000006", "error_msg": "Input data validate error: the item material is 18MM_PLATE, item_id is 0: Length and width are larger than plate.\n"}
  • 请求示例 POST https://{endpoint}/v2/{project_id}/optverse/regular-plate/tasksRequest Header:Content-Type: application/json;charset=utf-8Auth-Token:Body:{ "items": [ { "item_id": 0, "item_material": "18MM_PLATE", "item_length": 60.0, "item_width": 553.0, "item_turn": true, "item_num": 1, "item_name": "底板", "item_thick": 18, "is_substitute": false, "label_info": { "order_code": "订单号", "plan_code": "批次号", "item_code": "小板标识" } }, { "item_id": 0, "item_material": "18MM_PLATE", "item_length": 60.0, "item_width": 553.0, "item_turn": true, "item_num": 1, "item_name": "底板", "item_thick": 18, "is_substitute": true, "label_info": { "order_code": "订单号", "plan_code": "批次号", "item_code": "小板标识" } } ], "parameters": [ { "calculate_time": 30, "first_cut_direction": 2, "item_backward_trim": 0.0, "item_forward_trim": 0.0, "kerf_horizontal": 4.4, "kerf_vertical": 4.4, "max_stack_height": 80, "plate_trim_horizontal": 10.0, "plate_trim_vertical": 10.0, "time_cost": 200, "max_cut_stage_num": 3, "min_stack_utilization": 0.8, "item_sort_location": false, "item_num_limit": 0 } ], "plates": [ { "plate_grain": true, "plate_id": 0, "plate_length": 2440.0, "plate_material": "18MM_PLATE", "plate_num": 9999, "plate_thick": 18.0, "plate_width": 1220.0, "plate_cost": 100 } ]}
  • 响应参数 表6 响应参数说明 参数 参数类型 说明 error_detail String 如果运行出错会提示 result Object 如果运行正常会在该属性内给出结果 status String 任务运行状态,详情请参见表7 task_id String 任务id result_list Array of objects 切割方案列表 plan_info Array of objects 切割方案的统计信息列表 cut_file String 以字符串形式保存的切割方案文件 plan_name String 此方案序号(根据参数设置可给出多组方案) material_info String 统计信息,详情请参见表8 material_name String 材料名称 problem_id Int 按材料划分的问题序列号 表7 任务状态说明 状态 说明 waiting 在任务队列中,等待执行, 当等待时间超过一定时间,会超时,转为abnormal状态 running 任务正在执行 finished 任务成功运行结束,通过`result`获取结果 failed 任务执行出错,通过`error_detail`获取错误信息 abnormal 任务异常,可能是排队超时,可能是重试次数超时,可能是计算时间超时,通过`error_detail`获取错误信息 表8 统计信息响应参数说明 参数 单位 参数类型 说明 cut_length 米(m) float 切割长度 cut_sum - Int 切割刀数 cut_time 分钟(min) float 锯切时间 item_num - Int 开料件数 material - String 材料 program_num - Int 锯切图数量 run_program_num - Int 运行的锯切图数 rate 百分比(%) float 原材料利用率 sum_area 平方米(m2) float 原材料使用面积 sum_cost - Float 锯切成本 sum_plate_num - Int 原材料使用数量 sum_used_area 平方米(m2) float 原材料利用面积
  • 请求示例 { "input_json": { "id": "fu", "order": "fu", "name": "fu", "time": 1, "gap_mode": 0, "overlap": 0, "fabric": { "width": 38, "grid_x": 0, "grid_y": 0 }, "polygon": [ { "index": 0, "profile": [ 0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 0.0, 10.0 ] }, { "index": 1, "profile": [ 0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 0.0, 10.0 ] }, { "index": 2, "profile": [ 0.0, 0.0, 14.0, 0.0, 14.0, 9.0, 0.0, 9.0 ] }, { "index": 3, "profile": [ 0.0, 0.0, 14.0, 0.0, 7.0, 7.0 ] }, { "index": 4, "profile": [ 0.0, 9.0, 0.0, 0.0, 14.0, 9.0 ] }, { "index": 5, "profile": [ 0.0, 0.0, 14.0, 0.0, 14.0, 14.0, 0.0, 14.0 ] }, { "index": 6, "profile": [ 0.0, 0.0, 10.0, 4.0, 10.0, 9.0, 0.0, 9.0 ] }, { "index": 7, "profile": [ 0.0, 0.0, 5.0, 0.0, 5.0, 9.0, 0.0, 9.0 ] }, { "index": 8, "profile": [ 0.0, 0.0, 14.0, 0.0, 14.0, 14.0 ] }, { "index": 9, "profile": [ 0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 0.0, 14.0 ] }, { "index": 10, "profile": [ 0.0, 8.0, 4.0, 0.0, 8.0, 8.0 ] }, { "index": 11, "profile": [ 0.0, 0.0, 14.0, 0.0, 7.0, 12.0 ] } ], "piece": [ { "id": 0, "polygon_index": 0, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 1, "polygon_index": 1, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 2, "polygon_index": 2, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 3, "polygon_index": 3, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 4, "polygon_index": 4, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 5, "polygon_index": 5, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 6, "polygon_index": 6, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 7, "polygon_index": 7, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 8, "polygon_index": 8, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 9, "polygon_index": 9, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 10, "polygon_index": 10, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 11, "polygon_index": 11, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] } ], "hole": [], "constraints": {} }}
  • 响应参数 状态码: 200 表14 响应Body参数 参数 参数类型 描述 task_id String 任务编号。 input_json String 输入数据,当前为null obs_input_url String Obs桶中输入文件地址,当前为null obs_output_url String Obs桶中输出文件地址,当前为null status String 任务运行状态。(Pending,Running, Failed, Succeeded) progress String 任务进度,当前为null output_json Array of 表4 objects 任务处理结果,json格式,任务状态为finished时携带。具体数据结构参见IrregularTextileResultDetail output_file_base64 String 当前为null start_time String 任务开始时间 end_time String 任务结束时间 create_time String 任务创建时间 表15 IrregularTextileResultDetail 参数 参数类型 描述 id String 任务编号。 time Double 任务运行时长,单位秒。 ratio Double 排版利用率 order String 订单名。 length Double 使用面料长度。 pieces Array of 表5 objects 裁片排版位置定义。 表16 Piece 参数 参数类型 描述 id String 裁片id。 angle Double 裁片旋转角度。 flip_x Integer 裁片是否沿x轴翻转。 flip_y Integer 裁片是否沿y轴翻转。 box Array of 表6 objects 裁片先旋转再翻转后放入指定位置形成的包络矩形,由矩形左底点和右上点表示。 表17 box 参数 参数类型 描述 x Double 二维点x轴坐标。 y Double 二维点y轴坐标。
  • 功能描述 OptVerse服务为用户提供数学规划求解器、数值计算求解器、高级计划与排程、二维切割等多种运筹优化和数值计算问题求解能力。简要介绍如下: 数学规划求解器:找到一组满足若干约束条件,且最优化目标函数取值的解。根据目标函数、约束和变量类型可划分为不同问题。OptVerse服务提供线性规划和混合整数线性规划问题的求解服务。 数值计算求解器:通过数值计算方法,高效求解CAE仿真底层的数学问题。OptVerse服务提供线性方程组的直接法和迭代法及预处理求解、非线性方程组的迭代求解、矩阵的特征值求解、智能加速求解以及基于云HPC的高性能计算服务。 高级计划与排程:以运筹学理论基础,旨在通过先进的算法和计算机系统,优化和解决生产制造过程中的计划、调度、产能、人员、物料等一系列问题,达成工厂智能化、精益化制造的目标。OptVerse服务提供生产计划、生产排程、运输计划等服务。 二维切割:在一定约束条件下,将一定数量的零件放置在指定的原料中,以达到最佳的利用率,减少原料的浪费。OptVerse服务提供服装切割、钣金切割、木材电子锯和雕刻机切割等服务。 父主题: 产品介绍