会话边界


会话边界

环境的主要目的之一是指示您的程序何时将开始使用Gurobi,并且在完成时。当Gurobi在自己的机器上运行时,创建环境将获得许可证,并处理环境将释放该许可证。当您是Gurobi Compute Server的客户端时,启动环境将在服务器上启动作业(或者如果服务器完全占用,则输入队列)。处理环境将结束该作业,允许队列中的下一个作业开始。在Gurobi Instant Cloud上,创建环境将启动云实例(如果已尚未启动)。处理环境将结束该会话,这可能会导致云实例关闭(取决于您在即时云配置中设置的策略)。

如果您的程序反复创建,解决和销毁优化模型,我们强烈建议您在单个Gurobi环境中执行此操作。创建Gurobi环境突出的开销,从快速本地许可证中的任何地方都在旋转云上的一台机器。通过重用单个环境,您避免多次支付此开销。

我们还建议您在使用Gurobi完成您的程序后立即处置您的环境。这样做释放与该会话相关联的所有资源,在许多情狗万app足彩况下可以使这些资源可用于其他用户。使用执行垃圾收集的编程语言时,您应该特别注意本主题。虽然确实,环境将由自动垃圾收集最终处理,但如果您明确处理它们,通常会更早地发生。

处理环境的实际步骤取决于你使用的API:

Python
称呼model.dispose()所有模型对象,env.dispose()任何env.您创建的对象或disperyefaultenv()如果您使用默认环境。例如:
#清理模型和环境模型.dispose()env.dispose()gp.disposedefaultenv()
java.
称呼grbmodel.dispose()所有GRBModel对象,然后打电话grbenv.dispose()在这方面Grbenv.目的。例如:
//清理模型和环境模型。dispose() env.dispose()
。网
称呼GRBModel.Dispose ()所有GRBModel对象,然后打电话grbenv.dispose()在这方面Grbenv.目的。
C ++
打电话给删除操作符在所有GRBModel对象,然后在Grbenv.目的。
C
称呼GRBfreemodel ()对于每个模型,然后致电grbfreeenv()对于Gurobi环境。例如:
/ *清理模型和环境* / GRBFreeModel(型号);grbfreeenv(env);

请注意,由环境建立的边界是单个线程。Gurobi环境不是线程安全的,因此您不能在一个环境中有多个控制线程。但是,您可以有一个程序启动多个线程,每个线程都有自己的环境。

在Python中,您可以利用环境和模型对象的上下文管理器。使用它们将保证这些对象自动处理。参考Env类文档manbet体育手机客户端想要查询更多的信息。典型的使用模式也在示例中示出mip1_remote.py.