使用API创建批处理


使用API创建批处理

批处理优化是一个只有Gurobi集群管理器可用的特性。它允许客户端创建一个模型,标记该模型中的一组相关元素,然后批量提交该模型。返回一个唯一的批ID作为响应,允许客户端查询和监控批的状态(提交、完成等)。处理完批处理请求后,客户端可以检索其解决方案和模型中标记元素的相关属性(JSON文档)。

在本节中,我们只想通过简要说明这些步骤来介绍API的原则。下面的代码片段显示了主要的概念,但不一定是完整的程序。你可以参考Gurobi参考手册有关完整的API和完整的功能示例的详细信息。

此过程的第一步是创建批处理环境,方法是连接到Cluster Manager并使用CSBatchMode参数。为了使用Cluster Manager对应用程序进行身份验证,您有两个选项。第一个是使用您的用户名和密码,通过设置用户名ServerPassword参数。第二种方法(我们推荐)是使用API键并设置CSAPIAccessIDCSAPISecret参数。为了简单起见,我们在代码片段中直接设置这些参数,但是我们建议您在许可文件中设置它们,或者从环境变量中读取它们的值,以避免对它们进行硬编码。

然后,您可以构建一个模型,标记希望在解决方案中导出的变量和其他元素,最后您可以提交批处理,它提供一个批处理ID。

下面的Python代码演示了这些步骤:

使用env. env (empty=True)创建一个批处理环境。setParam (CSManager, http://localhost: 61080) env。setParam(‘CSAPIAccessID’,‘0 e8c35d5 ff20 - 4 - e5d a639 - 10105——e56b264) env。setParam(“CSAPISecret”、“d588f010——ad47 - 4310 - 933 - e - 1902057661 - c9的)env。setParam('CSBatchMode', 1) env.start() #使用gp.read('misc07. mode ', 1)构建模型。# set tag to control the solution export[…#提交并获取批ID batchid = model.optimizeBatch()

然后您的客户端或应用程序可以监视批处理状态。下面是一个访问并打印当前状态的示例:

创建一个批处理环境,使用gmp . env (empty=True)作为env:setParam (CSManager, http://localhost: 61080) env。setParam(‘CSAPIAccessID’,‘0 e8c35d5 ff20 - 4 - e5d a639 - 10105——e56b264) env。setParam(“CSAPISecret”、“d588f010——ad47 - 4310 - 933 - e - 1902057661 - c9的)env。setParam('CSBatchMode', 1) env.start() #使用gp获取批处理信息。print("Batch ID{}:错误代码{}({})"。格式(批处理。BatchID,批处理。BatchErrorCode, batch.BatchErrorMessage))

批处理完成后,您可以以JSON对象的形式检索解决方案:

创建一个批处理环境,使用gmp . env (empty=True)作为env:setParam (CSManager, http://localhost: 61080) env。setParam(‘CSAPIAccessID’,‘0 e8c35d5 ff20 - 4 - e5d a639 - 10105——e56b264) env。setParam(“CSAPISecret”、“d588f010——ad47 - 4310 - 933 - e - 1902057661 - c9的)env。setParam('CSBatchMode', 1) env.start() #使用gp获取批处理信息。Batch(batchid, env) as Batch: # Get JSON solution as string, create dict from it sol = JSON .loads(Batch . getjsonsolution ())转储(sol(“SolutionInfo”),缩进= 4))