GRBBatch#
- GRBBatch#
Gurobi批处理对象。批处理优化是Gurobi集群管理器提供的一项功能。它允许客户端程序构建优化模型,将其提交到计算服务器集群(通过集群管理器),并在稍后检查模型的状态并检索其解决方案。有关更多信息,请参阅批处理优化部分。
批处理对象上常用的方法包括
Update
(从集群管理器刷新属性),Abort
(中止批处理请求的执行),重试
(对中断或失败的批处理进行重试优化),Discard
(从集群管理器中移除批处理请求及其所有相关信息),以及GetJSONSolution
(查询批处理请求的解决方案信息)。这些方法建立在调用集群管理器REST API的基础上。它们旨在简化此类调用,但请注意,您始终可以选择直接调用REST API。
批处理对象有四个属性:
BatchID: 批处理请求的唯一ID。
BatchStatus: 最后批处理状态。状态值在批处理状态代码部分中描述。
BatchErrorCode: 最后的错误代码。
批量错误信息: 最后的错误信息。
您可以访问它们的值,
batch.BatchStatus
或batch.BatchID
,或者通过使用Get
。请注意 所有的批处理属性都是本地缓存的,并且只有在您创建客户端批处理对象或显式更新此缓存时才会更新,这可以通过调用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 TimeSpan interval = DateTime.Now - start; if (interval.TotalSeconds > maxwaittime) { batch.Abort(); break; }
- void Discard()#
此方法指示集群管理器删除与相关批处理请求相关的所有信息,包括存储的解决方案(如果可用)。对相关批处理请求的进一步查询将失败,并返回错误代码DATA_NOT_AVAILABLE。请谨慎使用此功能,因为删除的信息无法恢复。
- Example:
// Remove batch request from manager batch.Discard();
- string GetJSONSolution()#
此方法从集群管理器检索已完成批处理请求的解决方案。解决方案以JSON解决方案字符串的形式返回。为了使此调用成功,批处理请求的状态必须为COMPLETED。此外,请注意,存储在集群管理器端的结果文件必须经过gzip压缩,并且此批处理应仅关联一个结果文件;对于通过API以编程方式提交的批处理,这两种情况都将成立。请参阅批处理状态代码部分以获取更多详细信息。
- Returns:
请求的解决方案以JSON格式提供。
- Example:
// Get JSON solution as string Console.WriteLine("JSON solution:" + batch.GetJSONSolution());
- int Get(GRB.IntAttr attr)#
查询一个整数值的批量属性的值。
- Parameters:
attr – 被查询的属性。
- Returns:
请求属性的当前值。
- string Get(GRB.StringAttr attr)#
查询字符串值批量属性的值。
- Parameters:
attr – 被查询的属性。
- Returns:
请求属性的当前值。
- void Retry()#
此方法指示集群管理器重试优化失败或中止的批处理请求,将其状态更改为已提交。 请参阅批处理状态代码部分以获取更多详细信息。
- Example:
// If the batch failed, we retry it if (batch.BatchStatus == GRB.BatchStatus.FAILED) { batch.Retry(); System.Threading.Thread.Sleep(2000); batch.Update(); }
- void Update()#
所有批处理属性值都在本地缓存,因此查询返回的是上次与集群管理器通信时收到的值。此方法使用集群管理器中当前可用的值刷新所有属性的值(这涉及网络通信)。
- Example:
// Update the resident attribute cache of the Batch object // with the latest values from the cluster manager. batch.Update();
- 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");