GRBBatch#
-
class GRBBatch#
Gurobi批处理对象。批处理优化是Gurobi集群管理器提供的一项功能。它允许客户端程序构建优化模型,将其提交到计算服务器集群(通过集群管理器),并在稍后检查模型的状态并检索其解决方案。有关更多信息,请参阅批处理优化部分。
批处理对象上常用的方法包括
update
(从集群管理器刷新属性),abort
(中止批处理请求的执行),retry
(为中断或失败的批处理重试优化),discard
(从集群管理器中移除批处理请求及其所有相关信息),以及getJSONSolution
(查询批处理请求的解决方案信息)。这些方法建立在调用集群管理器REST API的基础上。它们旨在简化此类调用,但请注意,您始终可以选择直接调用REST API。
批处理对象有四个属性:
BatchID: 批处理请求的唯一ID。
BatchStatus: 最后批处理状态。状态值在批处理状态代码部分中描述。
BatchErrorCode: 最后的错误代码。
批量错误信息: 最后的错误信息。
你可以通过使用
get
来访问它们的值。请注意,所有的Batch属性都是本地缓存的,并且只有在你创建一个客户端批处理对象或当你明确更新这个缓存时才会更新,这可以通过调用update
来完成。-
GRBBatch GRBBatch(GRBEnv &env, string &batchID)#
GRBBatch
的构造函数。给定一个由
optimizeBatch
返回的BatchID
,以及一个可以连接到适当的集群管理器的Gurobi环境(即一个已经正确设置了参数CSManager、用户名和ServerPassword的环境),此函数返回一个GRBBatch
对象。通过它,您可以查询相关批处理请求的当前状态,并且一旦批处理请求被处理,您可以查询其解决方案。详情和示例请参阅批量优化部分。- Parameters:
env – 新批处理对象应创建的环境。
batchID – 您想要访问状态和其他信息的批处理请求的ID。
- Returns:
新的批处理对象。
- Example:
GRBBatch batch = GRBBatch(env, batchID);
-
void abort()#
此方法指示集群管理器中止此批处理请求的处理,将其状态更改为ABORTED。有关更多详细信息,请参阅批处理状态代码部分。
- Example:
// Abort this batch if it is taking too long time_t curtime = time(NULL); if (curtime - starttime > maxwaittime) { batch->abort(); break; }
-
void discard()#
此方法指示集群管理器删除与相关批处理请求相关的所有信息,包括存储的解决方案(如果可用)。对相关批处理请求的进一步查询将失败,并返回错误代码DATA_NOT_AVAILABLE。请谨慎使用此功能,因为删除的信息无法恢复。
- Example:
void batchdiscard(string batchID)
-
string getJSONSolution()#
此方法从集群管理器检索已完成批处理请求的解决方案。解决方案以JSON解决方案字符串的形式返回。为了使此调用成功,批处理请求的状态必须为COMPLETED。此外,请注意,存储在集群管理器端的结果文件必须经过gzip压缩,并且此批处理应仅关联一个结果文件;对于通过API以编程方式提交的批处理,这两种情况都将成立。请参阅批处理状态代码部分以获取更多详细信息。
- Returns:
请求的解决方案以JSON格式提供。
- Example:
// Pretty printing the general solution information cout << "JSON solution:" << batch->getJSONSolution() << endl;
-
int get(GRB_IntAttr attr)#
查询一个整数值的批量属性的值。
- Parameters:
attr – 被查询的属性。
- Returns:
请求属性的当前值。
-
string get(GRB_StringAttr attr)#
查询字符串值批量属性的值。
- Parameters:
attr – 被查询的属性。
- Returns:
请求属性的当前值。
-
void retry()#
此方法指示集群管理器重试优化失败或中止的批处理请求,将其状态更改为已提交。 请参阅批处理状态代码部分以获取更多详细信息。
- Example:
// If the batch failed, we try again if (BatchStatus == GRB_BATCH_FAILED) batch->retry();
-
void update()#
所有批处理属性值都在本地缓存,因此查询返回的是上次与集群管理器通信时收到的值。此方法使用集群管理器中当前可用的值刷新所有属性的值(这涉及网络通信)。
- Example:
// Update the resident attribute cache of the Batch object with the // latest values from the cluster manager. batch->update(); BatchStatus = batch->get(GRB_IntAttr_BatchStatus);
-
void writeJSONSolution(string &filename)#
此方法返回从集群管理器获取的已完成批处理请求的存储解决方案。解决方案以gzip压缩的JSON文件形式返回。您提供的文件名必须以.json.gz扩展名结尾。JSON格式在JSON解决方案格式部分中描述。请注意,为了使此调用成功,批处理请求的状态必须为COMPLETED。进一步注意,存储在集群管理器端的结果文件必须是gzip压缩的,并且此批处理应仅关联一个结果文件;对于通过API以编程方式提交的批处理,这两者都将成立。请参阅批处理状态代码部分以获取更多详细信息。
- Parameters:
filename – 解决方案应存储的文件名(以JSON格式)。
- Example:
// Write the full JSON solution string to a file batch->writeJSONSolution("batch-sol.json.gz");