GRBEnv#

class GRBEnv#

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

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

GRBEnv GRBEnv()#

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

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

Returns:

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

GRBEnv GRBEnv(bool empty)#

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

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

Parameters:

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

Returns:

一个环境对象。

GRBEnv GRBEnv(const string &logFileName)#

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

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

Parameters:

logFileName – 所需的日志文件名。

Returns:

一个环境对象。

double get(GRB_DoubleParam param)#

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

Parameters:

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

Returns:

请求参数的当前值。

int get(GRB_IntParam param)#

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

Parameters:

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

Returns:

请求参数的当前值。

string get(GRB_StringParam param)#

查询字符串值参数的值。

Parameters:

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

Returns:

请求参数的当前值。

const string getErrorMsg()#

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

Returns:

错误字符串。

void getParamInfo(GRB_DoubleParam param, double *valP, double *minP, double *maxP, double **defP)#

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

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

  • valP – 参数的当前值。

  • minP – 参数允许的最小值。

  • maxP – 参数允许的最大值。

  • defP – 参数的默认值。

void getParamInfo(GRB_IntParam param, int *valP, int *minP, int *maxP, int *defP)#

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

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

  • valP – 参数的当前值。

  • minP – 参数允许的最小值。

  • maxP – 参数允许的最大值。

  • defP – 参数的默认值。

void getParamInfo(GRB_StringParam param, string *valP, string *defP)#

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

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

  • valP – 参数的当前值。

  • defP – 参数的默认值。

void message(const string &message)#

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

Parameters:

message – 要写入的消息。

注意

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

void readParams(const string &paramfile)#

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

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

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

# Gurobi parameter file
Threads 1
MIPGap 0

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

Parameters:

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

void resetParams()#

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

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

void set(GRB_DoubleParam param, double newvalue)#

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

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

  • newvalue – 参数所需的新值。

注意

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

void set(GRB_IntParam param, int newvalue)#

设置一个整型参数的值。

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

  • newvalue – 参数所需的新值。

注意

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

void set(GRB_StringParam param, const string &newvalue)#

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

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

  • newvalue – 参数所需的新值。

注意

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

void set(const string &param, const string &newvalue)#

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

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

  • newvalue – 参数所需的新值。

注意

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

void start()#

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

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

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

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

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

void writeParams(const string &paramfile)#

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

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

Parameters:

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