Gurobi——GRBEnv

文章目录

GRBEnv

  Gurobi 环境对象(Gurobi environment object)。 Gurobi 模型总是与环境相关联。 您必须先创建环境,然后才能创建和填充模型。 您的程序中通常只需要一个环境对象。

  环境对象上的方法主要用于管理 Gurobi 参数(例如,get、getParamInfo、set)。

GRBEnv()

  GRBEnv 对象的构造函数。 您可以选择构建一个本地环境,它在本地机器上解决 Gurobi 模型,一个 Gurobi 计算服务器的客户端环境,它将在服务器机器上解决 Gurobi 模型,或者一个即时云环境,它将启动一个 Gurobi 云服务器并在该服务器上求解模型。 为您要启动的环境类型选择适当的签名。

GRBEnv GRBEnv()

  创建一个 Gurobi 环境(禁用日志记录)。 此方法还将填充 gurobi.lic 文件中指定的任何参数(ComputeServer、TokenServer、ServerPassword 等)。 此方法还将检查当前工作目录中是否存在名为 gurobi.env 的文件,如果该文件存在,它将尝试从该文件中读取参数设置。 该文件应为 PRM 格式(简而言之,每行应包含一个参数名称,后跟该参数的所需值)。

  通常,即使您计划使用多个模型,您也应该致力于在您的程序中创建一个单一的 Gurobi 环境。 重用一个环境比创建和破坏多个环境要高效得多。 一个例外是如果您正在编写多线程程序,因为环境不是线程安全的。 在这种情况下,每个线程都需要一个单独的环境。

返回值: 一个环境对象(没有关联的日志文件)。

GRBEnv GRBEnv(bool empty)

  创建一个空的 Gurobi 环境。 使用 GRBEnv::start 启动环境。

  如果环境不为空,此方法还将填充 gurobi.lic 文件中指定的任何参数(ComputeServer、TokenServer、ServerPassword 等)。 此方法还将检查当前工作目录中是否存在名为 gurobi.env 的文件,如果该文件存在,它将尝试从该文件中读取参数设置。 该文件应为 PRM 格式(简而言之,每行应包含一个参数名称,后跟该参数的所需值)。

  通常,即使您计划使用多个模型,您也应该致力于在您的程序中创建一个单一的 Gurobi 环境。 重用一个环境比创建和破坏多个环境要高效得多。 一个例外是如果您正在编写多线程程序,因为环境不是线程安全的。 在这种情况下,每个线程都需要一个单独的环境。

参数 详解
empty 指示环境是否应为空。 如果要在实际启动环境之前设置参数,则应使用 empty=true。 如果您想连接到计算服务器、令牌服务器、Gurobi Instant Cloud 或集群管理器,这会很有用。 有关详细信息,请参阅环境部分。
返回值 一个环境对象。
GRBEnv GRBEnv(const string& logFileName)

  创建一个 Gurobi 环境(启用日志记录)。 此方法还将填充 gurobi.lic 文件中指定的任何参数(ComputeServer、TokenServer、ServerPassword 等)。 此方法还将检查当前工作目录中是否存在名为 gurobi.env 的文件,如果该文件存在,它将尝试从该文件中读取参数设置。 该文件应为 PRM 格式(简而言之,每行应包含一个参数名称,后跟该参数的所需值)。

  通常,即使您计划使用多个模型,您也应该致力于在您的程序中创建一个单一的 Gurobi 环境。 重用一个环境比创建和破坏多个环境要高效得多。 一个例外是如果您正在编写多线程程序,因为环境不是线程安全的。 在这种情况下,每个线程都需要一个单独的环境。

参数 详解
logFileName 所需的日志文件名。
返回值 一个环境对象。
GRBEnv GRBEnv(const string& 	logFileName,
	  	  	  const string& 	computeServer,
	  	  	  const string& 	router,
	  	  	  const string& 	password,
	  	  	  const string& 	group,
	  	  	  int 	CStlsInsecure,
	  	  	  int 	priority,
	  	  	  double 	timeout )

  在计算服务器上创建客户端 Gurobi 环境。 此方法还将检查当前工作目录中是否存在名为 gurobi.env 的文件,如果该文件存在,它将尝试从该文件中读取参数设置。 该文件应为 PRM 格式(简而言之,每行应包含一个参数名称,后跟该参数的所需值)。

  通常,即使您计划使用多个模型,您也应该致力于在您的程序中创建一个单一的 Gurobi 环境。 重用一个环境比创建和破坏多个环境要高效得多。 一个例外是如果您正在编写多线程程序,因为环境不是线程安全的。 在这种情况下,每个线程都需要一个单独的环境。

参数 详解
logFileName 此环境的日志文件的名称。为没有日志文件传递一个空字符串。
computeServer 计算服务器。您可以使用其名称或 IP 地址来引用服务器。如果您使用的是非默认端口,则服务器名称后应跟端口号(例如 server1:61000)
router 计算服务器集群的路由器。路由器可用于提高计算服务器部署的稳健性。您应该使用路由器的名称或 IP 地址来引用路由器。如果没有使用路由器(这是典型情况),则传递一个空字符串。
password 获取指定Compute Server集群访问权限的密码。如果不需要密码,则传递一个空字符串。
group 计算服务器组的名称。
CStlsInsecure 表示是否在TLS(Transport Layer Security)中使用不安全模式。将此设置为 0,除非您的服务器管理员另有说明。
priority 作业的优先级。优先级必须介于 -100 和 100 之间,默认值为 0(按照惯例)。在较低优先级作业之前从服务器作业队列中选择较高优先级作业。根据服务器的配置,优先级为 100 的作业会立即运行,绕过作业队列并忽略服务器上的作业限制。您应该谨慎对待优先级为 100 的作业,因为它们可能会使服务器严重超载,从而导致作业失败,并且在极端情况下会导致服务器崩溃。此行为由 HARDJOBLIMIT 管理,默认情况下禁用。有关启动计算服务器选项的更多信息,请参阅 Gurobi 远程服务参考手册。
timeout 队列超时(以秒为单位)。如果作业在指定的超时之前没有到达队列的前面,则调用将退出并出现 JOB_REJECTED 错误。使用 -1 表示调用不应超时。
返回值 一个环境对象。
GRBEnv 	GRBEnv(const string& 	logFileName,
	  	  	const string& 	accessID,
	  	  	const string& 	secretKey,
	  	  	const string& 	pool,
	  	  	int 	priority )

  创建 Gurobi Instant Cloud 环境。 此方法还将检查当前工作目录中是否存在名为 gurobi.env 的文件,如果该文件存在,它将尝试从该文件中读取参数设置。 该文件应为 PRM 格式(简而言之,每行应包含一个参数名称,后跟该参数的所需值)。

  通常,即使您计划使用多个模型,您也应该致力于在您的程序中创建一个单一的 Gurobi 环境。 重用一个环境比创建和破坏多个环境要高效得多。 一个例外是如果您正在编写多线程程序,因为环境不是线程安全的。 在这种情况下,每个线程都需要一个单独的环境。

参数 详解
logfilename 此环境的日志文件的名称。可能为 NULL(或空字符串),在这种情况下不会创建日志文件。
accessID 您的 Gurobi Instant Cloud 许可证的访问 ID。这可以从 Gurobi Instant Cloud 网站检索。当与您的 secretKey 结合使用时,这允许您启动 Instant Cloud 实例并向它们提交作业。
secretKey 您的 Gurobi Instant Cloud 许可证的密钥。这可以从 Gurobi Instant Cloud 网站检索。当与您的 accessID 结合使用时,这允许您启动 Instant Cloud 实例并向它们提交作业。请注意,您应该将您的密钥保密。
pool 机器池。机器池允许您在 Instant Cloud 网站上创建固定配置(捕获机器类型、地理区域等),然后从客户端程序启动和共享机器,而无需在每次启动机器时重新启动配置信息.可能为 NULL(或空字符串),在这种情况下,您的作业将在与您的云许可证关联的默认池中启动。
priority 作业的优先级。优先级必须介于 -100 和 100 之间,默认值为 0(按照惯例)。在较低优先级作业之前从服务器作业队列中选择较高优先级作业。
返回值 一个环境对象。

猜你喜欢

转载自blog.csdn.net/qq_16775293/article/details/122714610