GRBBatch#

GRBBatch#

Gurobi批处理对象。批处理优化是Gurobi集群管理器提供的一项功能。它允许客户端程序构建优化模型,将其提交到计算服务器集群(通过集群管理器),并在稍后检查模型的状态并检索其解决方案。有关更多信息,请参阅批处理优化部分。

批处理对象上常用的方法包括 update(从集群管理器刷新属性), abort(中止批处理请求的执行), retry(对中断或失败的批处理请求进行重试优化), discard(从集群管理器中移除批处理请求及其所有相关信息),以及 getJSONSolution(查询批处理请求的解决方案信息)。

这些方法建立在调用集群管理器REST API的基础上。它们旨在简化此类调用,但请注意,您始终可以选择直接调用REST API。

批处理对象有四个属性:

你可以通过使用get来访问它们的值。 请注意,所有的Batch属性都是本地缓存的,并且只有在你创建一个客户端批处理对象或当你明确更新这个缓存时才会更新,这可以通过调用update来完成。

虽然Java垃圾收集器最终会收集未使用的GRBBatch对象,但与模型相关的大部分内存存储在Java堆之外。因此,垃圾收集器无法看到这种内存使用情况,因此在决定是否需要收集时无法考虑这一数量。我们建议您在完成批处理后调用GRBBatch.dispose

GRBBatch GRBBatch(GRBEnv env, String batchID)#

给定一个由optimizeBatch返回的BatchID,以及一个可以连接到适当的集群管理器的Gurobi环境(即已正确设置参数CSManager用户名ServerPassword的环境),此函数返回一个GRBBatch对象。通过它,您可以查询相关批处理请求的当前状态,并且在批处理请求处理完成后,您可以查询其解决方案。详情和示例请参阅批量优化部分。

Arguments:
  • env – 新批处理对象应创建的环境。

  • batchID – 您想要访问状态和其他信息的批处理请求的ID。

Return value:

新的批处理对象。

Example:
// Create Batch-object
GRBBatch batch = new GRBBatch(env, batchid);
void abort()#

此方法指示集群管理器中止此批处理请求的处理,将其状态更改为ABORTED。有关更多详细信息,请参阅批处理状态代码部分。

Example:
// Request to abort the batch
batch.abort();
void discard()#

此方法指示集群管理器删除与相关批处理请求相关的所有信息,包括存储的解决方案(如果可用)。对相关批处理请求的进一步查询将失败,并返回错误代码DATA_NOT_AVAILABLE。请谨慎使用此功能,因为删除的信息无法恢复。

Example:
// Request to erase input and output data related to this batch
batch.discard();
void dispose()#

释放与此Batch对象关联的所有资源。调用此方法后,不得再使用此Batch对象。

Example:
// Dispose resources
batch.dispose();
String getJSONSolution()#

此函数从集群管理器中检索已完成批处理请求的解决方案。解决方案以JSON解决方案字符串的形式返回。为了使此调用成功,批处理请求的状态必须为COMPLETED。此外,请注意,存储在集群管理器端的结果文件必须经过gzip压缩,并且此批处理应仅关联一个结果文件;对于通过API以编程方式提交的批处理,这两者都将成立。请参阅批处理状态代码部分以获取更多详细信息。

Return value:

请求的解决方案以JSON格式提供。

Example:
// print JSON solution into string
System.out.println("JSON solution:" + batch.getJSONSolution());
int get(GRB.IntAttr attr)#

查询一个整数值的批量属性的值。

Arguments:

attr – 被查询的属性。

Return value:

请求属性的当前值。

String get(GRB.StringAttr attr)#

查询字符串值批量属性的值。

Arguments:

attr – 被查询的属性。

Return value:

请求属性的当前值。

void retry()#

此方法指示集群管理器重试优化失败或中止的批处理请求,将其状态更改为已提交。 请参阅批处理状态代码部分以获取更多详细信息。

Example:
// Retry the batch job
batch.retry();
void update()#

所有批处理属性值都在本地缓存,因此查询返回的是上次与集群管理器通信时收到的值。此方法使用集群管理器中当前可用的值刷新所有属性的值(这涉及网络通信)。

Example:
// Update local attributes
batch.update();
void writeJSONSolution(String filename)#

此方法返回从集群管理器获取的已完成批处理请求的存储解决方案。解决方案以gzip压缩的JSON文件形式返回。您提供的文件名必须以.json.gz扩展名结尾。JSON格式在JSON解决方案格式部分中描述。请注意,为了使此调用成功,批处理请求的状态必须为COMPLETED。进一步注意,存储在集群管理器端的结果文件必须是gzip压缩的,并且此批处理应仅关联一个结果文件;对于通过API以编程方式提交的批处理,这两者都将成立。请参阅批处理状态代码部分以获取更多详细信息。

Arguments:

filename – 解决方案应存储的文件名(以JSON格式)。

Example:
// save solution into a file
batch.writeJSONSolution("batch-sol.json.gz");