manbet体育手机客户端


开发Compute Server

使用Gurobi Compute Server通常不需要更改程序。本节涵盖了少数例外情况。

编码鲁棒性

客户端 - 服务器计算引入了一些稳健性情况,即在单台机器上发生所有计算时,您不会面临。具体地,通过在客户端和服务器之间传递数据,您的程序取决于可用的两台机器,以及两个系统之间的不间断网络连接。Gurobi Compute Server的排队和负载平衡能力可以处理可能出现的绝大多数问题,但如果您希望实现最大可能的鲁棒性,您可以在程序中采取一些额外的步骤。

您可能需要防范的一个场景是您在构建和解决优化模型的程序的部分时丢失与服务器的连接的情况。Gurobi Compute Server将自动将排队作业路由到另一个服务器,而是在服务器关闭时运行的作业被中断(客户端将收到一个网络错误)。如果您希望您的程序能够生存这样的失败,您需要以这样的方式建立建筑物,以便响应于A的重建和解决优化模型网络错误。这样做的确切步骤是依赖于应用程序,但它们通常涉及封装初始Gurobi环境创建和最后一个GuRObi调用的代码,以便在错误的情况下可以重新迁移。

Compute Server中不支持的功能

如前所述,Compute Server中的一些Gurobi功能不支持。我们已经提到了其中一些,但我们将在此提供完整的清单以完成完整性。如果希望应用程序在Compute Server环境中工作,则需要避免使用这些功能。

不支持的功能是:

  • 用户削减:mipnode.不支持回调,因此您将无机会添加自己的剪辑。用户削减不是正确性所必需的,而是依赖于它们的应用程序可能会遇到性能问题。
  • 单个Gurobi环境中的多线程:这实际上并不是在Gurobi计划中支持的,但是在计算服务器环境中的结果足够难以追踪我们在这里再次提及它。从环境中构建的所有模型都与Compute Server共享单个连接。此连接无法处理多个同时消息。如果您希望从同一程序中的多个线程调用Gurobi,则应确保每个线程在其自己的Gurobi环境中工作。
  • Advanced Simplex基程序:使用单纯x的C例程(grbfsolve.grbbsolve.grbbinvcolj.grbbinvrowi, 和grbgetbasishead.)不受支持。