GRBEnv#

GRBEnv#

Gurobi环境对象。Gurobi模型总是与一个环境相关联。在创建和填充模型之前,您必须先创建一个环境。在您的程序中,通常只需要一个环境对象。

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

虽然Java垃圾收集器最终会收集未使用的GRBEnv对象,但在收集发生之前,环境将保留资源(Gurobi许可证、文件描述符等)。如果你的程序创建了多个GRBEnv对象,我们建议你在使用完一个后调用GRBEnv.dispose

GRBEnv GRBEnv()#

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

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

Return value:

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

Example:
// Create environment
GRBEnv env = new GRBEnv();
GRBEnv GRBEnv(boolean empty)#

GRBEnv 对象的构造函数。如果 empty=true,则创建一个空的环境。使用 start 来启动环境。如果 empty=false,结果与不提供任何参数给构造函数相同。

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

Arguments:

empty – 表示环境是否应为空。如果您希望在实际启动环境之前设置参数,则应使用empty=true。如果您希望连接到计算服务器、令牌服务器、Gurobi即时云、集群管理器或使用WLS许可证,这可能很有用。有关更多详细信息,请参阅环境部分。

Return value:

一个环境对象。

Example:
// Create empty environment
GRBEnv env = new GRBEnv(true);
// Populate Compute Server parameters
env.set("ComputeServer", "server1:61000");
env.set("ServerPassword", "passwd");
// Start the environment
env.start();
GRBEnv GRBEnv(String logFileName)#

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

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

Arguments:

logFileName – 所需的日志文件名。

Return value:

一个环境对象。

Example:
// Create environment with associated log file
GRBEnv env = new GRBEnv("gurobi.log");
void dispose()#

释放与GRBEnv对象关联的资源。虽然Java垃圾收集器最终会回收这些资源,但如果你的程序创建了多个环境,我们建议你在使用完环境后调用dispose方法。

在调用dispose方法之前,应该先调用在该环境中创建的所有模型上的dispose方法。在调用dispose之后,不应尝试使用GRBEnv对象。

Example:
// Create environment
GRBEnv env = new GRBEnv();
// ...
// Clean up environment
env.dispose()
double get(GRB.DoubleParam param)#

查询一个双精度值参数的值。

Arguments:

param – 正在查询的参数。请查阅 参数部分 以获取Gurobi参数的完整列表,包括它们的用途描述及其最小值、最大值和默认值。

Return value:

请求参数的当前值。

Example:
// Query value of TimeLimit parameter
double value = env.get(GRB.DoubleParam.TimeLimit);
int get(GRB.IntParam param)#

查询一个整数值参数的值。

Arguments:

param – 正在查询的参数。请参阅 参数部分 以获取Gurobi参数的完整列表,包括它们的用途描述及其最小值、最大值和默认值。

Return value:

请求参数的当前值。

Example:
// Query value of PumpPasses parameter
int value = env.get(GRB.IntParam.PumpPasses);
String get(GRB.StringParam param)#

查询字符串值参数的值。

Arguments:

param – 正在查询的参数。请查阅 参数部分 以获取Gurobi参数的完整列表,包括它们的用途描述及其最小值、 最大值和默认值。

Return value:

请求参数的当前值。

Example:
// Query value of LogFile parameter
String value = env.get(GRB.StringParam.LogFile);
String getErrorMsg()#

查询与此环境相关的最新异常的错误信息。

Return value:

错误字符串。

Example:
// Query the error message of the most recent exception
String msg = env.getErrorMsg();
void getParamInfo(GRB.DoubleParam param, double[] info)#

获取有关双精度参数的详细信息。

Arguments:
  • param – 感兴趣的参数。请查阅 参数部分 以获取Gurobi参数的完整列表,包括它们的用途描述及其最小值、 最大值和默认值。

  • info – 返回的信息。结果将包含四个条目:参数的当前值、允许的最小值、允许的最大值和默认值。

Example:
// Query information about TimeLimit parameter
double[] info = new double[4];
env.getParamInfo(GRB.DoubleParam.TimeLimit, info);
void getParamInfo(GRB.IntParam param, int[] info)#

获取有关整数参数的详细信息。

Arguments:
  • param – 感兴趣的参数。请查阅 参数部分 以获取Gurobi参数的完整列表,包括它们的用途描述及其最小值、 最大值和默认值。

  • info – 返回的信息。结果将包含四个条目:参数的当前值、允许的最小值、允许的最大值和默认值。

Example:
// Query information about PumpPasses parameter
int[] info = new int[4];
env.getParamInfo(GRB.IntParam.PumpPasses, info);
void getParamInfo(GRB.StringParam param, String[] info)#

获取有关字符串参数的详细信息。

Arguments:
  • param – 感兴趣的参数。请查阅 参数部分 以获取Gurobi参数的完整列表,包括它们的用途描述以及最小、最大和默认值。

  • info – 返回的信息。结果将包含两个条目:参数的当前值和默认值。

Example:
// Query information about LogFile parameter
String[] info = new String[2];
env.getParamInfo(GRB.StringParam.LogFile, info);
void message(String message)#

向控制台和日志文件写入一条消息。

Arguments:

message – 要写入的消息。

注意

除非设置了OutputFlag参数,否则此调用无效。此外,在MESSAGE回调(参见WHERE 值)和日志回调中,它会被忽略。控制台日志可以通过LogToConsole进行控制。

Example:
// Write message
env.message("Hello Gurobi!");
void readParams(String paramFile)#

从文件中读取新的参数设置。

请参考 参数部分以获取Gurobi参数的完整列表,包括它们的用途描述及其最小值、最大值和默认值。

参数应每行列出一个,首先是参数名称,其次是所需的值。例如:

# Gurobi parameter file
Threads 1
MIPGap 0

空白行和以井号开头的行将被忽略。

Arguments:

paramFile – 包含参数设置的文件名称。

Example:
// Read params.prm file
env.readParams("params.prm");
void release()#

释放与此环境关联的许可证。在许可证被释放后,您将无法再对使用此环境创建的模型调用optimize

Example:
// Release license from environment
env.release();
void resetParams()#

将所有参数重置为其默认值。

请参考 参数部分以获取Gurobi参数的完整列表,包括它们的用途描述及其最小值、最大值和默认值。

Example:
// Reset all parameters to their default values
env.resetParams();
void set(GRB.DoubleParam param, double newval)#

设置一个双精度值参数的值。

Arguments:
  • param – 正在修改的参数。请查阅 参数部分 以获取Gurobi参数的完整列表,包括它们的用途描述以及最小、最大和默认值。

  • newval – 参数的期望新值。

注意

请注意,模型在创建时会获得其自己的环境副本。对原始环境的更改不会影响副本,反之亦然。使用适当版本的重载方法 GRBModel.set 来更改现有模型上的参数。

Example:
// Set TimeLimit parameter
env.set(GRB.DoubleParam.TimeLimit, 2.0);
void set(GRB.IntParam param, int newval)#

设置一个整型参数的值。

Arguments:
  • param – 正在修改的参数。请查阅 参数部分 以获取Gurobi参数的完整列表,包括它们的用途描述以及最小、最大和默认值。

  • newval – 参数的期望新值。

注意

请注意,模型在创建时会获得其自己的环境副本。对原始环境的更改不会影响副本,反之亦然。使用适当版本的重载方法 GRBModel.set 来更改现有模型上的参数。

Example:
// Set PumpPasses parameter
env.set(GRB.IntParam.PumpPasses, 10);
void set(GRB.StringParam param, String newval)#

设置字符串类型参数的值。

Arguments:
  • param – 正在修改的参数。请查阅 参数部分 以获取Gurobi参数的完整列表,包括它们的用途描述以及最小、最大和默认值。

  • newval – 参数的期望新值。

注意

请注意,模型在创建时会获得其自己的环境副本。对原始环境的更改不会影响副本,反之亦然。使用适当版本的重载方法 GRBModel.set 来更改现有模型上的参数。

Example:
// Set LogFile parameter
env.set(GRB.StringParam.LogFile, "mylog.log");
void set(String param, String newval)#

仅使用字符串设置任何参数的值。

Arguments:
  • param – 正在修改的参数的名称。 请查阅 参数部分 以获取Gurobi参数的完整列表,包括它们的用途描述及其最小值、最大值和默认值。

  • newval – 参数的期望新值。

注意

请注意,模型在创建时会获得其自己的环境副本。对原始环境的更改不会影响副本,反之亦然。使用适当版本的重载方法 GRBModel.set 来更改现有模型上的参数。

Example:
// Set TimeLimit parameter via strings
env.set("TimeLimit", "2.0");
void setLogCallback(java.util.function.Consumer<String> logCallback)#

设置一个日志回调函数,用于查询环境对象发布的所有输出。可以在创建空环境后设置。

Arguments:

logCallback – 日志回调函数。

void start()#

启动一个空的环境。如果环境已经启动,此方法将不执行任何操作。如果调用失败,环境将保持与调用此方法之前相同的状态。

此方法还将填充您的gurobi.lic文件中指定的任何参数(ComputeServerTokenServerServerPassword等)。此方法还将检查当前工作目录中是否存在名为gurobi.env的文件,如果存在,它将尝试从此文件中读取参数设置。该文件应为PRM格式(简而言之,每行应包含一个参数名称,后跟该参数的所需值)。之后,它将应用用户在此调用之前指定的所有参数更改。请注意,这可能会覆盖许可证文件或gurobi.env文件(如果存在)中设置的参数。

在执行所有这些更改后,代码将实际激活环境,并使其准备好与模型一起工作。

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

请参考 参数部分以获取Gurobi参数的完整列表,包括它们的用途描述及其最小值、最大值和默认值。

Example:
// Create empty environment
GRBEnv env = new GRBEnv(true);
// Populate Compute Server parameters
env.set("ComputeServer", "server1:61000");
env.set("ServerPassword", "passwd");
// Start the environment
env.start()
void writeParams(String paramFile)#

将所有非默认参数设置写入文件。

请参考 参数部分以获取Gurobi参数的完整列表,包括它们的用途描述及其最小值、最大值和默认值。

Arguments:

paramFile – 应写入非默认参数设置的文件名称。之前的内容将被覆盖。

Example:
// Write all non-default parameters to file
env.writeParams("myParams.prm");