与批处理请求交互
与批处理请求交互
你可以用BatchID字符串,以向集群管理器查询有关相应批处理的更多信息。具体来说,您可以查询BatchStatus对于该批处理,如果批处理完成,您可以检索计算解决方案作为JSON字符串.
你使用a的第一步BatchID
收集更多信息的方法是创建一个使您能够连接到集群管理器的Gurobi环境。这是在我们的Python例子的这一行中完成的:
使用setupbatchenv().start()作为env, gp。批处理(batchID, env):的
setupbatchenv
方法创建环境CSManager,用户名,ServerPassword参数设置为适当的值。这种环境和我们的BatchID
,我们现在可以创建批处理对象(通过调用批处理
构造函数),它保存关于批处理的信息。
该Batch对象可用于查询BatchStatus:
使用setupbatchenv().start()作为env, gp。批处理(batchID, env):starttime = time.time() while batch.BatchStatus == GRB.BATCH_SUBMITTED: # Abort this batch if it is taking too long curtime = time.time() if curtime - starttime > maxwaittime: batch.abort() break # Wait for two seconds time.sleep(2) # Update the resident attribute cache of the Batch object with the # latest values from the cluster manager. batch.update() # If the batch failed, we retry it if batch.BatchStatus == GRB.BATCH_FAILED: batch.retry()它还可以用于对批处理执行各种操作,包括中止或重试批处理。
一旦完成了批处理,您就可以通过检索关联的元素来查询解决方案和模型中标记元素的所有相关属性JSON的解决方案字符串(或保存到文件中):
print("JSON solution:") # Get JSON solution as string, create dict from it sol = JSON .loads(batch.getJSONSolution())
默认情况下,集群管理器将保留模型的解决方案和其他信息一段时间(确切的保留策略是由集群管理器设置的)。的方法可以要求群集管理器放弃批处理的信息丢弃
方法:
#从管理器batch.discard()中删除批处理请求在此之后,对该批的进一步查询是可能的。