参数参考#

本节提供了所有Gurobi参数的类型、默认值和可能值的范围,并描述了它们的影响。您可以在参数组中找到按它们控制的Gurobi方面分类的参数。

AggFill#

预解聚合填充水平

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

控制在预解聚合期间允许的填充量。较大的值通常会导致预解模型具有较少的行和列,但具有更多的约束矩阵非零元素。

默认值会自动选择,通常效果良好。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

聚合#

预解聚合

  • 类型: int

  • 默认值:1

  • 最小值: 0

  • 最大值: 2

控制在预解中的聚合级别。选项包括关闭(0)、中等(1)或激进(2)。在极少数情况下,聚合可能会导致数值误差的累积。关闭它有时可以提高解的准确性。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

BarConvTol#

障碍收敛容差

  • 类型: double

  • 默认值:1e-8

  • 最小值: 0.0

  • 最大值: 1.0

当原始和对偶目标值之间的相对差异小于指定的容差时(具有GRB_OPTIMAL状态),障碍求解器终止。收紧此容差通常会产生更精确的解,有时可以减少交叉阶段所花费的时间。请注意,这种收紧可能会导致障碍迭代次数的增加,从而增加计算时间。放宽它会使障碍算法以不太精确的解终止,这在障碍在后期迭代中进展非常缓慢时可能有用。

注意

仅限屏障

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

BarCorrectors#

障碍中心校正

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

限制每次屏障迭代中执行的中央校正次数。默认值根据问题特征自动选择。自动策略通常效果良好,尽管通过手动选择值通常可以在特定模型上获得更高的性能。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅限屏障

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

BarHomogeneous#

屏障同质算法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1

确定是否使用同质屏障算法。在默认设置(-1)下,仅当屏障解决MIP模型的节点松弛时使用。将参数设置为0会关闭它,设置为1则强制开启。同质算法对于识别不可行性或无界性非常有用。它比默认算法稍慢一些。

注意

仅限屏障

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

BarIterLimit#

障碍迭代限制

  • 类型: int

  • 默认值:1000

  • 最小值: 0

  • 最大值: MAXINT

限制执行的障碍迭代次数。此参数很少使用。如果您希望障碍提前终止,几乎总是更好使用BarConvTol参数。

如果超过限制,优化将返回ITERATION_LIMIT状态。

此参数是可回调设置的。当where值为PRESOLVEDSIMPLEXMIPMIPSOLMIPNODEBARRIERMULTIOBJ时,可以在回调中更改它(更多信息请参见回调代码部分)。如何为不同的API执行此操作,请参见此处。在远程服务器的情况下,从回调中更改参数可能不会立即生效。

注意

仅限屏障

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

BarOrder#

屏障排序算法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1

选择屏障稀疏矩阵填充减少算法。值为0时选择近似最小度排序,而值为1时选择嵌套剖分排序。默认值-1自动选择。只有在注意到屏障排序阶段消耗了整体屏障运行时间的显著部分时,才应修改此参数。

注意

仅限屏障

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

BarQCPConvTol#

QCP模型的障碍收敛容差

  • 类型: double

  • 默认值:1e-6

  • 最小值: 0.0

  • 最大值: 1.0

在解决QCP模型时,当原始和对偶目标值之间的相对差异小于指定的容差(具有GRB_OPTIMAL状态)时,障碍求解器将终止。收紧此容差可能会导致更准确的解决方案,但也可能导致无法收敛。

注意

仅限屏障

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

最佳BdStop#

目标界限以停止优化

  • 类型: double

  • 默认值:Infinity

  • 最小值: -Infinity

  • 最大值: Infinity

一旦引擎确定目标值的最佳边界至少与指定值一样好,就会终止。在这种情况下,优化将返回USER_OBJ_LIMIT状态。

请注意,您应该始终在此值中包含一个小的容差。 如果没有这个容差,满足预期终止条件的界限可能由于界限中的数值舍入而实际上不会导致终止。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

最佳目标停止#

停止优化的目标值

  • 类型: double

  • 默认值:-Infinity

  • 最小值: -Infinity

  • 最大值: Infinity

一旦引擎找到一个目标值至少与指定值一样好的可行解,就立即终止。在这种情况下,优化将以USER_OBJ_LIMIT状态返回。

请注意,您应该始终在此值中包含一个小的容差。 如果没有这个容差,满足预期终止条件的解决方案可能实际上不会导致终止,因为目标函数中的数值舍入。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

BQPCuts#

BQP 切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制布尔二次多面体(BQP)切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

分支目录#

首选分支方向

  • 类型: int

  • 默认值:0

  • 最小值: -1

  • 最大值: 1

确定在分支切割搜索中首先探索哪个子节点。默认值会自动选择。值为-1将始终首先探索下行分支,而值为1将始终首先探索上行分支。

更改此参数的值很少会产生显著的益处。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CliqueCuts#

团割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制团切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

我们观察到,将此参数设置为激进设置可以为一些大型集合分区模型带来显著的好处。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

云访问ID#

Gurobi Instant Cloud 的访问 ID

  • 类型: string

  • 默认值:""

在启动新实例时,将此参数设置为您的Instant Cloud许可证的访问ID。您可以从Gurobi Instant Cloud Manager网站上的账户中检索此字符串。

您必须通过gurobi.lic文件(使用CLOUDACCESSID=id)或空环境来设置此参数。 在您的环境创建后更改此参数将不会产生任何效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

云主机#

Gurobi云入口点的主机

  • 类型: string

  • 默认值:""

将此参数设置为Gurobi Cloud入口点的主机名。 目前为cloud.gurobi.com

您必须通过gurobi.lic文件(使用CLOUDHOST=host)或空环境来设置此参数。在环境启动后更改此参数将导致错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

云密钥#

Gurobi即时云的密钥

  • 类型: string

  • 默认值:""

在启动新实例时,将此参数设置为您的Instant Cloud许可证的密钥。您可以从Gurobi Instant Cloud Manager网站上的账户中获取此字符串。

您必须通过gurobi.lic文件(使用CLOUDSECRETKEY=key)或空环境来设置此参数。在您的环境创建后更改此参数将不会产生任何效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

云池#

用于Gurobi Instant Cloud实例的云池

  • 类型: string

  • 默认值:""

将此参数设置为您希望用于新Instant Cloud实例的云池名称。您可以浏览现有的云池或从您的账户在Gurobi Instant Cloud Manager网站上创建新的云池。

您必须通过gurobi.lic文件(使用CLOUDPOOL=pool)或空环境来设置此参数。 在您的环境创建后更改此参数将不会产生任何效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

计算服务器#

远程服务集群中节点的名称

  • 类型: string

  • 默认值:""

将此参数设置为远程服务集群中节点的名称,您希望在此节点上运行计算服务器作业。您可以使用服务器名称或其IP地址来引用服务器。如果您使用的是非默认端口,服务器名称后应跟随端口号(例如,server1:61000)。

您还需要设置ServerPassword参数,以为指定的集群提供客户端密码。

您可以提供一个以逗号分隔的节点列表以增加鲁棒性。 如果列表中的第一个节点没有响应,将尝试第二个节点, 以此类推。

请参阅 Gurobi远程服务参考手册 以获取有关启动计算服务器作业的更多信息。

你必须通过gurobi.lic文件(使用COMPUTESERVER=server)或空环境来设置此参数。在环境创建后更改此参数将不会产生任何效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

并发任务#

分布式并发优化器作业计数

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: MAXINT

启用分布式并发优化,可用于在多台机器上解决LP或MIP模型。值为n时,求解器会创建n个独立模型,每个模型使用不同的参数设置。这些模型中的每一个都会被发送到分布式工作节点进行处理。当第一个求解完成时,优化终止。使用ComputeServer参数来指定您希望分布式并发作业运行的集群名称(或者如果您的客户端机器将充当管理器并且您只需要一个工作池,则使用WorkerPool)。

默认情况下,Gurobi 会自动选择用于每个独立求解的参数设置。您可以创建并发环境以选择自己的参数设置(详情请参阅并发优化部分)。并发 MIP 求解的目的是在 MIP 搜索中引入更多的多样性。通过将多台机器的资源用于单个模型,这种方法有时可以比单台机器更快地求解模型。

分布式并发求解器生成的日志与标准求解器略有不同,并且提供了不同的回调函数。请参阅Gurobi Remote Services Reference Manual中的Distributed Algorithms部分以获取更多详细信息。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

并发方法#

控制并发连续求解器使用的方法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

此参数仅在解决使用并发求解器的LP时评估(方法 = 3 或 4)。它控制并发求解器运行哪些方法。选项有:

  • -1=自动,

  • 0=障碍法, 对偶法, 原始单纯形法,

  • 1=障碍和对偶单纯形,

  • 2=障碍和原始单纯形,以及

  • 3=对偶和原始单纯形法。

实际运行哪些方法还取决于可用线程的数量。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

并发MIP#

启用并发MIP求解器

  • 类型: int

  • 默认值:1

  • 最小值: 1

  • 最大值: 64

此参数启用并发MIP求解器。当参数设置为值n时,MIP求解器并行执行n次独立的MIP求解,每次使用不同的参数设置。当第一次求解完成时,优化终止。

默认情况下,Gurobi 自动选择用于每个独立求解的参数设置。您可以创建并发环境以选择自己的参数设置(详情请参阅并发优化部分)。并发 MIP 求解的目的是在 MIP 搜索中引入更多的多样性。这种方法有时可以比将所有可用线程应用于单个 MIP 求解更快地解决模型,尤其是在非常大的并行机器上。

并发MIP求解器将可用线程均匀分配给独立的求解过程。例如,如果您有6个可用线程,并将ConcurrentMIP设置为2,并发MIP求解器将为每个独立求解分配3个线程。请注意,启动的独立求解数量不会超过可用线程的数量。

并发MIP求解器生成的日志与标准MIP求解器略有不同,并且还提供了不同的回调。请参考并发优化器讨论以获取更多详细信息。

并发MIP不是确定性的。如果不同独立求解的运行时间非常相似,并且如果模型有多个最优解,您可能会在同一个模型上多次运行得到略微不同的结果。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

并发设置#

从.prm文件列表中创建并发环境

  • 类型: string

  • 默认值:""

此命令行专用参数允许您指定一个逗号分隔的.prm文件列表,这些文件用于在并发MIP运行中为不同实例设置参数。

举个例子,你可以创建两个.prm文件,内容如下…

s0.prm:

MIPFocus 0

s1.prm:

MIPFocus 1

发出命令 gurobi_cl ConcurrentSettings=s0.prm,s1.prm model.mps 将调用并发MIP求解器,使用参数设置 MIPFocus=0 在其中一个并发求解中,以及 MIPFocus=1 在另一个中。

请注意,如果您想在多台机器上运行并发MIP,您还必须设置并发任务参数。在两台机器上使用两个示例参数文件运行分布式并发优化的命令将是

> gurobi_cl ConcurrentJobs=2 ConcurrentSettings=s0.prm,s1.prm model.mps

注意

仅限命令行(gurobi_cl)。有关Gurobi API中的等效功能,请参见 并发环境

覆盖切割#

覆盖切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制覆盖切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于积极切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

交叉#

障碍交叉策略

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 4

确定用于将屏障产生的内部解转换为基本解的交叉策略(注意,交叉不适用于QP或QCP模型)。交叉包括三个阶段:(i) 原始推动阶段,其中原始变量被推向边界,(ii) 对偶推动阶段,其中对偶变量被推向边界,以及(iii) 清理阶段,其中使用单纯形法去除推动阶段完成后仍然存在的任何原始或对偶不可行性。前两个阶段的顺序和第三阶段的算法均由交叉参数控制:

参数值

首次推送

第二次推送

清理

0

已禁用

已禁用

禁用

1

原始

原始

2

原始

3

原始

原始

4

原始

默认值为-1,自动选择策略。使用值0禁用交叉;此设置返回由障碍计算的内部解。

注意

仅限屏障

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

交叉基础#

交叉基础构建策略

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1

确定交叉的初始基础构建策略。值为0时快速选择初始基础。值为1时可能需要更长时间,但通常会产生数值上更稳定的起始基础。默认值-1会自动进行选择。

注意

仅限屏障

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSAPIAccessID#

Gurobi集群管理器的访问ID

  • 类型: string

  • 默认值:""

用于在Gurobi集群管理器上验证应用程序的唯一标识符。

您可以提供访问ID和密钥,或者用户名密码,以验证您与集群管理器的连接。

您必须通过gurobi.lic文件(使用CSAPIACCESSID=YOUR_API_ID)或空环境来设置此参数。在环境启动后更改此参数将导致错误。

注意

仅限集群管理器

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSAPISecret#

Gurobi集群管理器的密钥

  • 类型: string

  • 默认值:""

与API访问ID关联的秘密密码。

您可以提供访问ID和密钥,或者用户名密码,以验证您与集群管理器的连接。

您必须通过gurobi.lic文件(使用CSAPISECRET=YOUR_API_SECRET_KEY)或空环境来设置此参数。在您的环境启动后更改此参数将导致错误。

注意

仅限集群管理器

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSAppName#

批次或作业的应用程序名称

  • 类型: string

  • 默认值:""

将发送到服务器以跟踪哪个应用程序正在提交批次或作业的应用程序名称。

注意

仅限集群管理器

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSAuthToken#

用于访问集群管理器的JSON Web Token

  • 类型: string

  • 默认值:""

当客户端使用用户名和密码与集群管理器进行身份验证时,服务器会返回一个签名令牌,用于后续的调用或命令行操作。它在内部使用。

注意

仅限集群管理器

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSBatchMode#

控制批处理模式优化

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

当设置为1时,启用本地模型创建,并随后将批量优化作业提交到集群管理器。有关更多详细信息,请参阅批量优化部分。请注意,如果启用了CSBatchMode,则只允许批量优化调用。

您必须通过gurobi.lic文件(使用CSBATCHMODE=1)或空环境来设置此参数。在您的环境启动后更改此参数将导致错误。

注意

仅限集群管理器

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSClientLog#

打开或关闭日志记录

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 3

为计算服务器和Web许可证服务(WLS)开启或关闭日志记录。选项包括关闭(0)、仅错误消息(1)、信息和错误消息(2),或(3)详细、信息和错误消息。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSGroup#

集群的组放置请求

  • 类型: string

  • 默认值:""

指定一个或多个集群节点组以控制作业的放置。该列表是一个逗号分隔的组名字符串,可以选择性地为组指定优先级。例如,指定group1:10,group2:50意味着作业将在group1group2的机器上运行,如果作业排队,它在group1上的优先级为10,在group2上的优先级为50。请注意,如果未指定组,作业可以在任何节点上运行。如果集群中没有具有指定组的节点,作业将被拒绝。

请参考 Gurobi远程服务参考手册 以获取有关启动计算服务器作业的更多信息,特别是 Gurobi远程服务集群分组 以获取有关集群节点分组的更多信息。

您必须通过许可证文件(使用GROUP=name)或空环境来设置此参数。在您的环境创建后更改此参数将不会产生任何效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSIdleTimeout#

计算服务器在终止作业前的空闲时间

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

此参数允许您设置计算服务器作业在服务器终止作业之前可以空闲的时间限制(以秒为单位)。如果服务器当前未执行优化且客户端未发出任何其他命令,则作业被视为空闲。

默认值将允许作业在所有情况下无限期地闲置,除了一种情况。目前唯一的例外是Gurobi Instant Cloud,默认设置将自动施加30分钟的空闲时间限制(1800秒)。如果您使用的是Instant Cloud池,实际值将是此参数值与池定义的空闲超时之间的最大值。

您必须通过gurobi.lic文件(使用IDLETIMEOUT=n)或空环境来设置此参数。在环境创建后更改此参数将不会产生任何效果。

请参阅 Gurobi远程服务参考手册 以获取有关启动计算服务器作业的更多信息。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CS管理器#

远程服务集群的集群管理器URL

  • 类型: string

  • 默认值:""

远程服务集群的集群管理器URL。

您必须通过gurobi.lic文件(使用CSMANAGER=YOUR_MANAGER_URL)或空环境来设置此参数。在您的环境启动后更改此参数将导致错误。

注意

仅限集群管理器

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSPriority#

远程服务作业的作业优先级

  • 类型: int

  • 默认值:0

  • 最小值: -100

  • 最大值: 100

计算服务器作业的优先级。优先级必须在-100到100之间,默认值为0(按照惯例)。较高优先级的作业会优先从服务器作业队列中被选择。优先级为100的作业会立即运行,绕过作业队列并忽略服务器上的作业限制。您应谨慎使用优先级为100的作业,因为它们可能会严重超载服务器,导致作业失败,在极端情况下可能导致服务器崩溃。

请参阅 Gurobi远程服务参考手册 以获取有关启动计算服务器作业的更多信息。

你必须通过gurobi.lic文件(使用PRIORITY=n)或空环境来设置此参数。 在环境创建后更改此参数将不会产生任何效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSQueueTimeout#

新作业的队列超时

  • 类型: double

  • 默认值:-1

  • 最小值: -1

  • 最大值: Infinity

此参数允许您设置一个限制(以秒为单位),用于确定新的计算服务器作业在放弃之前将在队列中等待多长时间(并报告一个JOB_REJECTED错误)。请注意,实际发出超时信号可能会有最多20秒的延迟。

任何负值都将允许作业无限期地停留在计算服务器队列中。

你必须通过gurobi.lic文件(使用QUEUETIMEOUT=n)或空环境来设置此参数。在环境创建后更改此参数将不会产生任何效果。

请参阅 Gurobi远程服务参考手册 以获取有关启动计算服务器作业的更多信息。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSRouter#

远程服务集群的路由节点

  • 类型: string

  • 默认值:""

远程服务集群的路由器节点。路由器可用于提高计算服务器部署的健壮性。您可以使用其名称或IP地址来引用路由器。典型的远程服务部署不会使用路由器,因此通常不需要设置此参数。

请参阅 Gurobi远程服务参考手册 以获取有关启动计算服务器作业的更多信息。

您必须通过gurobi.lic文件(使用ROUTER=name)或空环境来设置此参数。 在您的环境创建后更改此参数将不会产生任何效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CSTLS不安全#

在传输层安全性(TLS)中使用不安全模式

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

指示远程服务集群是否在TLS(传输层安全)中使用不安全模式。除非您的服务器管理员另有指示,否则请将其保留为默认值0。

请参阅 Gurobi远程服务参考手册 以获取有关启动计算服务器作业的更多信息。

您必须通过gurobi.lic文件(使用CSTLSINSECURE)或空环境来设置此参数。在您的环境创建后更改此参数将不会产生任何效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CutAggPasses#

约束聚合在切割生成中传递

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

一个非负值表示在切割生成期间执行的最大约束聚合传递次数。覆盖切割参数。

更改此参数的值很少会产生显著的益处。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

截止#

目标截止值

  • 类型: double

  • 默认值:最小化为Infinity,最大化为-Infinity

  • 最小值: -Infinity

  • 最大值: Infinity

表示您对目标值比指定值更差的解决方案不感兴趣。如果最优解的目标值等于或优于指定的截止值,求解器将返回最优解。否则,它将以CUTOFF状态终止。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

CutPasses#

切割平面通过

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

一个非负值表示在根切割生成期间执行的最大切割平面传递次数。默认值自动选择切割传递次数。

除了切割平面分离外,每次切割过程还会应用启发式方法和节点探测,并且可能会启动并行根辅助线程。因此,即使将切割参数设置为0,切割循环也会在单次切割循环迭代中应用探测、启发式方法和并行根辅助。

如果您注意到MIP求解器在根切割过程中花费了大量时间,而这些过程对目标界限的影响很小,您应该尝试使用此参数的不同值。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

切割#

全局切割控制

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

全局切割激进性设置。使用值0关闭切割,1用于中等切割生成,2用于激进切割生成,3用于非常激进的切割生成。默认值-1自动选择。此参数被控制单个切割类型的参数(例如,CliqueCuts)覆盖。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

DegenMoves#

退化单纯形移动

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

限制退化单纯形移动。这些移动是为了提高当前松弛解的完整性。默认情况下,算法会自动选择要执行的退化移动次数。

默认设置通常效果良好,但在某些情况下,可能会在初始根松弛问题解决后,但在切割生成过程或根启发式开始之前花费过多时间。如果您在日志中看到在根松弛日志之后立即出现多个“总耗时”消息,您可能希望尝试将此参数设置为0。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

断开连接#

断开连接的组件策略

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

一个MIP或LP模型有时可以由多个完全独立的子模型组成。此参数控制我们尝试利用此结构的积极程度。值为0时完全忽略此结构,而较大的值则尝试更积极的方法。默认值-1自动选择。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

显示间隔#

日志行的频率

  • 类型: int

  • 默认值:5

  • 最小值: 1

  • 最大值: MAXINT

确定日志行打印的频率(以秒为单位)。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

分布式MIP作业#

分布式MIP作业计数

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: MAXINT

启用分布式MIP。值为n时,MIP求解器会将求解MIP模型的工作分配到n台机器上。使用ComputeServer参数来指定您希望分布式MIP作业运行的集群名称(或者如果您的客户端机器将充当管理器并且您只需要一组工作器,则使用WorkerPool)。

分布式MIP求解器生成的日志与标准MIP求解器略有不同,并且提供了不同的回调函数。请参阅Gurobi远程服务参考手册中的分布式算法部分以获取更多详细信息。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

DualImpliedCuts#

双重隐含边界切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制双重隐含边界切割的生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

双重归约#

控制双重减少

  • 类型: int

  • 默认值:1

  • 最小值: 0

  • 最大值: 1

确定在优化过程中是否执行双重减少。如果您收到INF_OR_UNBD的优化状态并希望得到更明确的结论,则应禁用这些减少。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

可行性容差#

原始可行性容差

  • 类型: double

  • 默认值:1e-6

  • 最小值: 1e-9

  • 最大值: 1e-2

所有约束必须满足FeasibilityTol的容差。收紧此容差可以减少约束违反,但对于数值上具有挑战性的模型,有时可能会导致更大的迭代次数。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

FeasRelaxBigM#

可行性松弛的Big-M值

  • 类型: double

  • 默认值: 1e6

  • 最小值: 0

  • 最大值: Infinity

在可行性松弛中放松约束时,有时需要引入一个big-M值。此参数确定该值的默认大小。

有关可行性松弛的详细信息,请参考C API中的GRBfeasrelax

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

流覆盖切割#

流覆盖切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制流覆盖切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于积极切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

流路径切割#

流路切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制流路径切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

函数片段错误#

函数约束的PWL转换允许的误差

  • 类型: double

  • 默认值:1e-3

  • 最小值: 1e-6

  • 最大值: 1e+6

如果FuncPieces参数设置为\(-1\)\(-2\),此属性提供分段线性近似中允许的最大误差(对于\(-1\)为绝对误差,对于\(-2\)为相对误差)。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

FuncPieceLength#

函数约束的PWL转换的分段长度

  • 类型: double

  • 默认值:1e-2

  • 最小值: 1e-5

  • 最大值: 1e+6

如果FuncPieces参数设置为值\(1\),此参数给出分段线性逼近的每一段的长度。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

FuncPieceRatio#

控制在PWL近似中是否低估或高估函数值

  • 类型: double

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1

此参数控制函数约束的分段线性近似是函数的低估、高估还是介于两者之间。值为\(0.0\)将始终低估,而值为\(1.0\)将始终高估。介于两者之间的值将在低估和高估之间进行插值。特殊值-1选择位于原始函数上的点。对于其他负值,行为未定义。

有关更多信息,请参阅 函数约束 的讨论。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

函数片段#

设置PWL函数逼近的策略

  • 类型: int

  • 默认值:0

  • 最小值: -2

  • 最大值: 2e+8

此参数设置用于执行函数约束的分段线性近似的策略。有几种选项:

  • FuncPieces >= 2: 设置分段数量;分段宽度相等。

  • FuncPieces = 1: 为每个片段使用固定宽度;实际宽度在FuncPieceLength参数中提供。

  • FuncPieces = 0: 默认值;自动选择。目前它使用相对误差方法进行近似,而对于10.0或更早版本,它主要使用函数约束的数量来设置总片段数。

  • FuncPieces = -1: 限制近似的绝对误差;误差界限在FuncPieceError参数中提供。

  • FuncPieces = -2: 限制近似值的相对误差;误差界限在FuncPieceError参数中提供。

此参数仅适用于其FuncPieces属性已设置为\(0\)的函数约束。

有关更多信息,请参阅 函数约束 的讨论。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

FuncMaxVal#

函数约束中x和y变量的最大允许值,使用分段线性近似

  • 类型: double

  • 默认值:1e+6

  • 最小值: 1e-2

  • 最大值: Infinity

分段线性近似中的非常大的值可能会导致数值问题。此参数限制了参与由分段线性函数近似的函数约束的变量的边界。具体来说,参与此类函数约束的变量上的任何大于FuncMaxVal(绝对值)的边界将被截断。

如果约束的FuncNonlinear属性设置为1,或者设置为-1且全局FuncNonlinear参数设置为1,则函数约束不会通过分段线性函数进行近似,并且FuncMaxVal参数不适用。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

FuncNonlinear#

选择用于处理函数约束的近似方法

  • 类型: int

  • 默认值:1

  • 最小值: 0

  • 最大值: 1

此参数控制是否将FuncNonlinear属性设置为-1的通用函数约束替换为静态分段线性近似(0),或在分支定界树内使用动态外近似方法处理(1)。

有关更多信息,请参阅 函数约束 的讨论。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

GomoryPasses#

Gomory割平面通过

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

一个非负值表示执行的最大Gomory切割次数。覆盖切割参数。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

GUBCoverCuts#

GUB覆盖切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制GUB覆盖切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于积极切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

启发式方法#

可行性启发式算法所花费的时间

  • 类型: double

  • 默认值:0.05

  • 最小值: 0

  • 最大值: 1

确定在MIP启发式算法中花费的时间量。您可以将该值视为总MIP运行时间中用于启发式算法的期望比例(因此默认情况下,我们旨在将5%的运行时间用于启发式算法)。较大的值会产生更多且更好的可行解,但代价是最佳界限的进展较慢。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

忽略名称#

指示是否忽略用户提供的名称。

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

此参数影响Gurobi处理名称的方式。如果设置为1, 后续向模型添加变量或约束的调用将忽略相关的名称。目标和模型的名称 也将被忽略。此外,后续修改名称属性的调用将无效。请注意,在此参数更改为1时 已经具有名称的变量或约束将保留其名称。如果您希望丢弃所有名称信息, 应在向模型添加变量或约束之前将此参数设置为1。

此外,该参数会影响写入函数的行为(例如,C语言中的GRBwrite,或Python中的Model.write)。如果IgnoreNames设置为1,Gurobi在写入文件时会使用默认名称。如果您有一个带有名称的模型,并且希望将模型、属性、MIP起始文件或其他信息写入磁盘而不在文件中包含变量和约束名称,这可能很有用。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

IIS方法#

选择用于计算IIS的方法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

选择要使用的IIS方法。为了计算LP的IIS,只需解决一个与原始模型对偶维度相似的LP。如果该LP的解决时间过长,将IISMethod参数设置为1可能会提供更快的替代方案;其他设置不会改变不可行LP的默认方法。对于MIP,需要过滤约束和变量,这涉及解决一系列相关的MIP子问题。方法0-2都使用过滤技术。方法0通常比方法1更快,但可能会产生更大的IIS。方法2忽略边界约束。因此,它往往比方法0-1更快,但如果这些边界是使问题不可行的必要条件,则会失败。方法3将返回MIP模型的LP松弛的IIS,即使当包含完整性约束时结果可能不是最小的。默认值-1自动选择。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

ImpliedCuts#

隐含边界切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制隐含边界切割的生成。使用0禁用这些切割,1用于中等切割生成,或2用于积极切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

改进起始间隙#

解决方案改进策略控制

  • 类型: double

  • 默认值:0.0

  • 最小值: 0.0

  • 最大值: Infinity

MIP求解器可以在搜索过程中更改参数设置,以采用一种放弃移动最佳边界并转而致力于寻找更好可行解的策略。此参数允许您指定一个最优性差距,当达到该差距时,MIP求解器将切换到解决方案改进策略。例如,将此参数设置为0.1将导致MIP求解器在相对最优性差距小于0.1时切换策略。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

改进起始节点#

解决方案改进策略控制

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0.0

  • 最大值: Infinity

MIP求解器可以在搜索过程中更改参数设置,以采用一种放弃移动最佳边界并转而致力于寻找更好的可行解的策略。此参数允许您指定MIP求解器切换到解决方案改进策略的节点计数。例如,将此参数设置为10将导致MIP求解器在节点计数大于10时切换策略。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

改进开始时间#

解决方案改进策略控制

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0.0

  • 最大值: Infinity

MIP求解器可以在搜索过程中更改参数设置,以采用一种放弃移动最佳边界并转而致力于寻找更好的可行解的策略。此参数允许您指定MIP求解器切换到解决方案改进策略的时间。例如,将此参数设置为10将导致MIP求解器在开始优化10秒后切换策略。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

InfProofCuts#

不可行性证明切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制不可行性证明切割的生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

InfUnbdInfo#

不可行/无界模型的附加信息

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

如果要查询无界模型的无界射线(通过UnbdRay属性),或不可行模型的不可行性证明(通过FarkasDualFarkasProof属性),请设置此参数。

当设置此参数时,如果模型被确定为不可行或无界,并且存在单纯形基(来自单纯形或交叉),则将计算额外的信息。请注意,如果在使用障碍法求解时,模型在交叉之前被确定为不可行或无界,则此额外信息将不可用。

请注意,如果发现模型不可行或无界,而您只想知道是哪种情况,您应该使用DualReductions参数。它执行的额外计算要少得多。

注意

仅影响线性规划(LP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

输入文件#

在开始优化之前将数据导入模型

  • 类型: string

  • 默认值:""

指定在开始命令行优化运行之前将读取的文件名称。此参数可用于输入MIP起始(.mst.sol 文件)、MIP提示(.hnt 文件)、单纯形基(.bas 文件)、Gurobi属性(.attr 文件)或一组参数设置(.prm 文件)从Gurobi命令行。如果输入文件被压缩,后缀可以选择性地跟随 .zip.gz.bz2.7z.xz

注意

仅限命令行(gurobi_cl),可以多次使用

有关如何使用此参数的示例,请参阅 读取输入文件 部分。

完整性焦点#

完整性焦点

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

在MIP中,一个不幸的现实是整数变量并不总是取精确的整数值。虽然这通常不会造成重大问题,但在某些情况下,副作用可能相当不理想。最著名的例子可能是细流,其中当一个相关的二进制变量为零时,本应为零的连续变量却取了一个非平凡的值。更准确地说,给定一个约束\(y \leq M b\),其中\(y\)是一个非负连续变量,\(b\)是一个二进制变量,\(M\)是一个常数,表示\(y\)的最大可能值,该约束旨在强制执行\(y\)\(b\)为零时必须为零的关系。在默认的整数可行性容差下,二进制变量允许取到\(1e-5\)的值,同时仍被视为取零值。如果\(M\)值很大,那么\(y\)变量的\(M b\)上限可能会相当大。

减少IntFeasTol参数的值可以减轻这种微小流量的影响,但通常代价很大,且效果有限。IntegralityFocus参数提供了一个更好的选择。将此参数设置为1要求求解器更加努力地尝试避免利用整数容差的解决方案。更准确地说,求解器尝试找到在所有整数变量四舍五入到精确整数值时仍然(几乎)可行的解决方案。我们应该说,求解器并不总是能成功找到这样的解决方案,并且此设置会引入适度的性能损失,但此设置将显著减少此类违规的频率和程度。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

IntFeasTol#

整数可行性容差

  • 类型: double

  • 默认值:1e-5

  • 最小值: 1e-9

  • 最大值: 1e-1

当变量的值离最近的整数值小于IntFeasTol时,变量的完整性限制被视为满足。收紧此容差可以减少完整性违规,但非常严格的容差可能会显著增加运行时间。放宽此容差很少会减少运行时间。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

迭代限制#

单纯形迭代限制

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0

  • 最大值: Infinity

限制执行的单纯形迭代次数。该限制适用于MIP、障碍交叉和单纯形。如果超过限制,优化将以ITERATION_LIMIT状态返回。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

任务ID#

计算服务器作业ID

  • 类型: string

  • 默认值:""

如果您在计算服务器上运行,此参数提供当前作业的计算服务器作业ID。请注意,这是一个只读参数。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

JSONSolDetail#

JSON解决方案格式中的详细程度

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

此参数控制JSON解决方案中包含的详细信息量。例如,当此参数设置为1时,JSON字符串将包含所有变量的数据,即使那些解决方案值为0的变量。

有关生成的JSON字符串内容的精确描述,请参阅JSON解决方案格式部分。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

惰性约束#

使用惰性约束的程序必须设置此参数

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

通过回调添加惰性约束的程序必须将此参数设置为值1。该参数告诉Gurobi算法避免某些与惰性约束不兼容的缩减和转换。

请注意,如果您通过设置Lazy属性(而不是通过回调)使用惰性约束,则无需设置此参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

许可证ID#

许可证ID

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: MAXINT

使用WLS许可证时,将此参数设置为许可证ID。您可以从Gurobi Web License Manager网站上的账户中获取此值。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

LiftProjectCuts#

提升与投影切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制提升和投影切割的生成。使用0禁用这些切割,1用于中等切割生成,或2用于积极切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

LPWarmStart#

控制是否以及如何预热LP优化

  • 类型: int

  • 默认值:1

  • 最小值: 0

  • 最大值: 2

控制Gurobi是否以及如何使用热启动信息进行LP优化。非默认设置2在保留预求解性能优势的同时,特别适用于传递高级启动信息。热启动可以包括任何组合的基础状态、原始启动向量或对偶启动向量。它使用原始模型上的属性VBasisCBasisPStartDStart来指定。

作为一般规则,将此参数设置为0会忽略任何起始信息并从零开始解决模型。将其设置为1(默认值)使用提供的热启动信息来解决原始的未预处理问题,无论是否启用了预处理。将其设置为2使用起始信息来解决预处理后的问题,假设启用了预处理。这涉及将原始问题的解决方案映射到预处理后问题的等效(或有时几乎等效)压缩解决方案中。如果禁用了预处理,则设置2仍然优先考虑起始向量,而设置1优先考虑基础状态。总的来说,LPWarmStart参数设置、由Gurobi的Method参数指定的LP算法以及可用的高级起始信息决定了Gurobi是否仅使用基础状态、使用起始向量信息增强的基础状态,还是通过将提供的原始和对偶起始向量应用交叉方法获得的基础来启动优化。

当Gurobi的Method参数请求屏障求解器时,原始和对偶起始向量优先于基状态(但仅当您提供两者时)。这些起始向量被输入到交叉过程中。这与用于从核心屏障算法产生的内部解计算基本解的交叉相同,但在这种情况下,交叉是从任意起始向量开始的。如果您将LPWarmStart参数设置为1,则将在原始模型上使用提供的向量调用交叉。在这种情况下,任何提供的基信息都不会被使用。如果您将LPWarmStart设置为2,则将在预解模型上使用压缩的起始向量调用交叉。如果您将参数设置为2并提供基但没有起始向量,则基将用于在原始模型上计算相应的原始和对偶解。然后,这些解将被压缩并用作交叉的原始和对偶起始向量,然后交叉将为预解模型构建基。请注意,对于所有这些设置和起始组合,不执行屏障算法迭代。

单纯形算法提供了更多的热启动选项。当参数值为1时,如果可用,单纯形将从提供的基开始。否则,它将使用提供的起始向量来优化其计算的崩溃基。在此优化过程中,原始单纯形将使用PStart,而对偶单纯形将使用DStart

当值为2时,单纯形法将在预解模型上使用压碎的起始向量(PStart用于原始单纯形法,DStart用于对偶单纯形法)来优化崩溃基。无论起始向量是来自起始向量还是原始模型的起始基,这都是成立的。区别在于,如果你提供了一个高级基,该基将用于计算原始模型上的相应原始解和对偶解,从而推导出预解模型上的原始或对偶起始。

注意

仅影响线性规划(LP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

日志文件#

Gurobi日志文件的名称

  • 类型: string

  • 默认值:""

确定Gurobi日志文件的名称。修改此参数将关闭当前日志文件并打开指定的文件。使用空字符串表示不生成日志文件。使用OutputFlag来关闭所有日志记录。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

LogToConsole#

控制台日志控制

  • 类型: int

  • 默认值:1

  • 最小值: 0

  • 最大值: 1

启用或禁用控制台日志记录。请注意,这指的是Gurobi输出到控制台的内容。这包括在交互环境中由API提供的各种显示和打印功能。

使用 OutputFlag 来关闭所有日志记录。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

MarkowitzTol#

阈值旋转容差

  • 类型: double

  • 默认值:0.0078125

  • 最小值: 1e-4

  • 最大值: 0.999

Markowitz容差用于限制单纯形算法中的数值误差。具体来说,较大的值可以减少单纯形基分解中引入的误差。较大的值在极少数情况下可能避免数值问题,但也会影响性能。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

内存限制#

内存限制

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0

  • 最大值: Infinity

限制Gurobi可用的总内存量(以GB为单位,即\(10^9\)字节)。如果需要更多内存,Gurobi将失败并出现OUT_OF_MEMORY错误。

请注意,在错误终止后无法检索解决方案信息。因此,此参数的行为与其他终止条件(如SoftMemLimit时间限制NodeLimit)不同,在这些条件下,求解器将以状态代码终止,并且解决方案信息仍然可用。

使用此参数而非类似的SoftMemLimit的一个优势是,内存限制在每次内存分配后都会被检查,因此Gurobi将在超过限制的确切点终止。

请注意,分配的内存是在Gurobi环境中的所有模型中跟踪的。如果您在一个环境中创建多个模型,这些额外的模型将计入总内存消耗。

内存使用情况也在所有线程中进行跟踪。这导致的一个后果是,对于多线程运行,终止可能是非确定性的。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

方法#

用于解决连续模型的算法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 5

用于解决连续模型或MIP模型的初始根松弛的算法。选项有:

  • -1=自动,

  • 0=原始单纯形法,

  • 1=对偶单纯形法,

  • 2=障碍,

  • 3=并发,

  • 4=确定性并发,以及

  • 5=确定性并发单纯形(已弃用;参见 ConcurrentMethod)。

可用的设置和默认行为取决于模型类型或初始根松弛的类型。在当前版本中,默认的自动设置(Method=-1)通常会为非确定性并发选择(Method=3)用于LP,屏障(Method=2)用于QP或QCP,以及对偶(Method=1)用于MIP根松弛。如果MIP根松弛的规模较大,则通常会选择确定性并发(Method=4)或确定性并发单纯形(Method=5)。

并发方法不适用于QP和QCP。只有单纯形和障碍算法适用于连续QP模型。如果您选择障碍法(Method=2)来解决MIQP模型的根,那么您还需要为节点松弛选择障碍法(即设置NodeMethod=2)。只有障碍法适用于连续QCP模型。然而,如果您选择LP松弛来解决MIQCP,您也可以选择单纯形算法(Method=0Method=1)。

并发优化器在多个线程上同时运行多个求解器,并选择最先完成的一个。可以通过ConcurrentMethod参数来控制并发运行的求解器。确定性选项(Method=4Method=5)每次都会给出完全相同的结果,而非确定性选项(Method=3)通常更快,但在多次运行时可能会产生不同的最优基。

默认设置很少比最佳设置显著慢,因此通常不会看到通过更改此参数带来的显著增益。然而,在某些类别的模型中,某个特定算法始终是最快的,因此当面对特别困难的模型时,您可能希望尝试不同的选项。

请注意,如果LP模型的内存紧张,您应该考虑使用对偶单纯形法(Method=1)。通常在使用默认设置时选择的并发优化器,比单独使用对偶单纯形法消耗更多的内存。

在多目标线性规划优化中:

  • 第一个目标使用LP默认值解决。用户可以使用Method参数进行设置。

  • 后续目标默认使用原始单纯形法解决,以允许热启动。这里使用的算法可以通过MultiObjMethod进行控制。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

最小相关节点#

最小松弛启发式

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

在最小松弛启发式中要探索的节点数量。

这种启发式方法相当昂贵,通常会产生质量较差的解决方案。通常只有在其他方法(包括使用默认设置探索树)无法产生可行解决方案时,才应使用它。

默认值会自动选择是否应用启发式方法。 它很少会选择这样做。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

MIP焦点#

MIP求解器焦点

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 3

MIPFocus 参数允许您根据目标修改高级解决方案策略。默认情况下,Gurobi MIP 求解器在寻找新的可行解和证明当前解为最优解之间取得平衡。如果您更倾向于快速找到可行解,可以选择 MIPFocus=1。如果您认为求解器在找到高质量解方面没有问题,并希望更多地关注证明最优性,可以选择 MIPFocus=2。如果最佳目标边界移动非常缓慢(或根本没有移动),您可以尝试 MIPFocus=3 来专注于边界。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

MIPGap#

相对MIP最优性差距

  • 类型: double

  • 默认值:1e-4

  • 最小值: 0

  • 最大值: Infinity

当目标值的下界和上界之间的差距小于MIPGap乘以当前目标值的绝对值时,MIP求解器将终止(并给出最优结果)。更准确地说,如果\(z_P\)是原始目标界限(即当前目标值,这是最小化问题的上界),而\(z_D\)是对偶目标界限(即最小化问题的下界),则MIP差距定义为

\(gap = \vert z_P - z_D\vert / \vert z_P\vert\).

请注意,如果 \(z_P = z_D = 0\),则间隙被定义为零。 如果 \(z_P = 0\)\(z_D \neq 0\),则间隙被定义为 无穷大。

对于大多数模型,\(z_P\)\(z_D\) 在优化过程中将具有相同的符号,然后间隙是单调递减的。但如果 \(z_P\)\(z_D\) 具有相反的符号,即使在找到新的当前解后绝对间隙 \(\vert z_P - z_D\vert\) 已经减小,相对间隙也可能增加。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

MIPGapAbs#

绝对MIP最优性差距

  • 类型: double

  • 默认值:1e-10

  • 最小值: 0

  • 最大值: Infinity

当目标函数的下界和上界之间的差距小于MIPGapAbs时,MIP求解器将终止(并得到最优结果)。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

MIPSepCuts#

MIP分离切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制MIP分离切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

MIQCP方法#

用于解决MIQCP模型的方法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1

控制用于解决MIQCP模型的方法。值1使用线性化的外逼近方法,而值0在每个节点解决连续QCP松弛。默认设置(-1)自动选择。

注意

仅影响MIQCP模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

MIRCuts#

MIR 切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制混合整数舍入(MIR)切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

混合切割#

混合切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制混合切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于积极切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

ModKCuts#

Mod-k 切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制mod-k切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

多目标方法#

用于多目标求解的方法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

当使用分层方法解决连续多目标模型时,模型会为每个目标解决一次。用于解决最高优先级目标的算法由方法参数控制。此参数确定用于解决后续目标的算法。与方法参数一样,值为0和1分别使用原始和对偶单纯形法。值为2表示应丢弃先前解决的预热信息,并从头开始解决模型(使用由方法参数指示的算法)。默认设置-1通常选择原始单纯形法。

注意

仅影响连续多目标模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

多目标预测#

多目标模型上的初始预解级别

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制用于多目标模型的初始预解级别。值0禁用初始预解,值1保守地应用预解,值2积极地应用预解。默认值-1通常保守地应用预解。积极的预解可能会增加目标值与其他选项略有不同的可能性。

注意

仅影响多目标模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

多目标设置#

从.prm文件列表中创建多目标设置

  • 类型: string

  • 默认值:""

此命令行专用参数允许您指定一个以逗号分隔的.prm文件列表,这些文件用于在多目标模型中为不同的求解设置参数。

grbtune的情况下,相同的设置应用于所有模型。

举个例子,你可以创建两个.prm文件,内容如下…

vb0.prm:

VarBranch 0

vb1.prm:

VarBranch 1

发出命令 gurobi_cl MultiObjSettings=vb0.prm,vb1.prm model.mps 将在解决多目标模型的两个目标时使用不同的分支策略。

注意

仅限命令行(gurobi_clgrbtune

注意

仅影响多目标模型

网络算法#

网络单纯形算法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1

控制是否使用网络单纯形法。值为0时不使用网络单纯形法。值为1表示如果线性规划是网络问题,则使用网络单纯形法。默认值-1表示自动选择。

注意

仅影响线性规划(LP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

网络切割#

网络切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制网络切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

NLPHeur#

控制NLP启发式

  • 类型: int

  • 默认值:1

  • 最小值: 0

  • 最大值: 1

NLP启发式方法使用非线性障碍求解器来找到非凸二次模型的可行解。它通常可以比替代方法更快地找到解,但在某些情况下,它可能会消耗大量运行时间而不产生解。默认情况下,启发式方法是启用的(1)。使用0来禁用启发式方法。

注意

仅影响目标或约束中包含非凸二次表达式的模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

节点文件目录#

节点文件的目录

  • 类型: string

  • 默认值:"."

确定当节点内存使用超过指定的NodefileStart值时,节点写入的目录。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

节点文件开始#

将MIP节点写入磁盘

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0

  • 最大值: Infinity

如果您发现Gurobi优化器在解决MIP时耗尽内存,您应该修改NodefileStart参数。当用于存储节点的内存量(以GB为单位,即\(10^9\)字节)超过指定的参数值时,节点将被压缩并写入磁盘。我们建议设置为0.5,但您可能希望根据您机器上的可用内存选择不同的值。默认情况下,节点被写入当前工作目录。NodefileDir参数可用于选择不同的位置。

如果在将NodefileStart参数设置为较小值后仍然耗尽内存,您应该尝试限制线程数。并行MIP中的每个线程都需要模型的一个副本,以及其他几个大型数据结构。减少线程参数有时可以显著减少内存使用。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

节点限制#

MIP节点限制

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0

  • 最大值: Infinity

限制探索的MIP节点数量。如果超过限制,优化将以NODE_LIMIT状态返回。请注意,如果使用多个线程进行优化,实际探索的节点数量可能略大于设置的限制。

此参数是可回调设置的。当where值为PRESOLVEDSIMPLEXMIPMIPSOLMIPNODEBARRIERMULTIOBJ时,可以在回调中更改它(更多信息请参见回调代码部分)。如何为不同的API执行此操作,请参见此处。在远程服务器的情况下,从回调中更改参数可能不会立即生效。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

节点方法#

用于解决MIP节点松弛的方法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

用于MIP节点松弛的算法(除了初始根节点松弛,请参见方法)。选项有:-1=自动,0=原始单纯形法,1=对偶单纯形法,2=障碍法。请注意,障碍法不适用于MIQP节点松弛。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

非凸#

处理非凸二次规划的策略

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

设置处理非凸二次目标或非凸二次约束的策略。设置为0时,如果原始用户模型包含非凸二次结构(除非由PreQLinearize参数控制的Q矩阵线性化消除了非凸性),则会报告错误。设置为1时,如果在预处理期间无法丢弃或线性化非凸二次结构,则会报告错误。设置为2时,通过将非凸二次问题转换为双线性形式并应用空间分支来解决。默认的-1设置目前几乎等同于2,只是它较少注意避免可能将凸约束转换为无法再检测为凸的约束的预处理减少,因此有时可以执行更多的预处理减少。

注意

仅影响QP、QCP、MIQP和MIQCP模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

NoRelHeurTime#

限制在NoRel启发式算法中花费的时间

  • 类型: double

  • 默认值:0

  • 最小值: 0

  • 最大值: Infinity

限制在NoRel启发式中花费的时间(以秒为单位)。 该启发式在解决根松弛之前搜索高质量的可行解。 对于根松弛特别昂贵的模型,这可能非常有用。

请注意,此参数将引入非确定性 - 不同的运行可能会采取不同的路径。使用 NoRelHeurWork 参数以获得确定性结果。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

NoRelHeurWork#

限制在NoRel启发式方法中花费的工作量

  • 类型: double

  • 默认值:0

  • 最小值: 0

  • 最大值: Infinity

限制在NoRel启发式算法中花费的工作量。该启发式算法在解决根松弛之前搜索高质量的可行解。对于根松弛特别昂贵的模型,这可能非常有用。

此参数中使用的工作度量难以精确定义。一个单位大约对应一秒,但这取决于机器、核心数量,在某些情况下还取决于模型。您可能需要实验以找到适合您模型的良好设置。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

NormAdjust#

选择单纯形定价规范。

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

从多个定价规范变体中选择。此参数如何影响单纯形定价算法的细节非常微妙且难以描述,因此我们简单地将选项标记为0到3。默认值-1会自动选择。

更改此参数的值很少会产生显著的益处。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

数值焦点#

数值焦点

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 3

NumericFocus 参数控制代码尝试检测和管理数值问题的程度。默认设置(0)会自动选择,稍微倾向于速度。设置1-3会逐渐将重点转向在数值计算中更加谨慎。随着值的增加,代码将花费更多时间检查中间结果的数值准确性,并采用更昂贵的技术以避免潜在的数值问题。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

OBBT#

控制基于最优性的边界收紧的激进程度

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

值0禁用基于最优性的边界收紧(OBBT)。级别1-3描述了允许的OBBT工作量,范围从中等到激进。默认值-1是自动设置,选择了一个较为中等的设置。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

对象编号#

选择多目标的客观指标

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: MAXINT

在处理多个目标时,此参数选择您要处理的目标的索引。当您查询或修改与多个目标相关的属性(ObjNObjNVal等)时,ObjNumber参数将确定实际受影响的目标。此参数的值应小于NumObj属性的值(该属性捕获模型中目标的数量)。

请参考关于 多目标的讨论,以获取更多关于使用替代目标的信息。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

ObjScale#

目标缩放

  • 类型: double

  • 默认值:0.0

  • 最小值: -1

  • 最大值: Infinity

当为正数时,将模型目标除以指定值,以避免可能由非常大或非常小的目标系数引起的数值问题。默认值0自动决定缩放比例。小于零的值使用最大系数的指定幂作为缩放比例(因此ObjScale=-0.5将使用最大目标系数的平方根进行缩放)。

请注意,当缩放后的目标的最优性容差勉强满足时,目标缩放可能会导致原始未缩放目标上的对偶违规较大,因此应谨慎使用。还请注意,当所有目标系数的大小相似时,缩放会更有效,而不是具有广泛系数范围的目标。在后一种情况下,考虑使用多目标功能。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

最优性容差#

对偶可行性容差

  • 类型: double

  • 默认值:1e-6

  • 最小值: 1e-9

  • 最大值: 1e-2

对于单纯形算法和交叉,为了声明模型为最优,减少的成本在改进方向上都必须小于OptimalityTol

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

输出标志#

控制Gurobi输出

  • 类型: int

  • 默认值:1

  • 最小值: 0

  • 最大值: 1

启用或禁用求解器输出。使用日志文件LogToConsole进行更细粒度的控制。将 OutputFlag设置为0等同于将 日志文件设置为""并将LogToConsole设置为0。

请注意,对于在Gurobi Instant Cloud、Compute Server或Cluster Manager上运行的远程作业,服务器端日志记录始终处于活动状态。这不受任何用户参数设置的影响。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

分区位置#

控制分区启发式运行的位置

  • 类型: int

  • 默认值:15

  • 最小值: 0

  • 最大值:31

在模型中的至少一个变量上设置分区属性可以启用分区启发式算法,该算法使用大邻域搜索来尝试改进当前的现有解。

此参数决定启发式运行的位置。选项有:

  • 在解决根松弛之前 (16)

  • 在根切割循环开始时 (8)

  • 在根切割循环结束时 (4)

  • 在分支切割搜索的节点处 (2)

  • 当分支切割搜索终止时 (1)

参数值是一个位向量,其中每个位在该位置开启或关闭启发式。上面列出的选项旁边的数值表示哪个位控制相应的选项。因此,例如,要在根切割循环的开始和结束处(且仅在此处)启用启发式,您需要将第8位和第4位设置为1,这将对应于参数值为12。

默认值15表示我们启用了除上面列出的第一个选项之外的所有选项。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

扰动值#

单纯形扰动

  • 类型: double

  • 默认值:0.0002

  • 最小值: 0

  • 最大值: Infinity

单纯形扰动的幅度。请注意,扰动仅在进展停滞时应用,因此该参数通常不会产生效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

池间隔#

存储解的最大相对间隙

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0

  • 最大值: Infinity

确定在存储的解决方案中可以容忍的(相对)差距有多大。 当此参数设置为非默认值时,目标值超过已知最佳解决方案的目标值超过指定(相对)差距的解决方案将被丢弃。例如,如果MIP求解器找到了一个目标值为100的解决方案,那么设置PoolGap=0.2将丢弃目标值差于120的解决方案(假设目标是最小化)。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

PoolGapAbs#

存储解的最大绝对间隙

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0

  • 最大值: Infinity

确定在存储的解决方案中可以容忍的(绝对)差距有多大。 当此参数设置为非默认值时,目标值超过已知最佳解决方案超过指定(绝对)差距的解决方案将被丢弃。例如,如果MIP求解器找到了一个目标值为100的解决方案,那么设置PoolGapAbs=20将丢弃目标值差于120的解决方案(假设是最小化目标)。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

池搜索模式#

选择不同的模式来探索MIP搜索树

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 2

选择不同的模式来探索MIP搜索树。使用默认设置(PoolSearchMode=0),MIP求解器尝试找到模型的最优解。它会保留在过程中找到的其他解,但这些解是偶然的。通过将此参数设置为非默认值,MIP搜索将在找到最优解后继续,以找到更多高质量的解决方案。使用非默认值(PoolSearchMode=1PoolSearchMode=2),MIP求解器将尝试找到n个解,其中nPoolSolutions参数的值决定。设置为1时,无法保证额外解的质量,而设置为2时,求解器将找到n个最佳解。随着此参数值的增加,求解的成本也会增加。

一旦优化完成,可以使用PoolObjBound属性来评估找到的解的质量。例如,值为PoolObjBound=100表示没有其他目标值优于100的解,因此任何已知的目标值优于100的解都比任何尚未发现的解更好。

有关解决方案池的更多信息,包括细节和限制,请参见解决方案池

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

池解决方案#

存储的MIP解决方案数量

  • 类型: int

  • 默认值:10

  • 最小值: 1

  • 最大值: MAXINT

确定存储多少个MIP解决方案。对于PoolSearchMode的默认值,这些只是在探索MIP搜索树的过程中找到的解决方案。对于PoolSearchMode的其他值,此参数设定了要找到的解决方案数量的目标,因此较大的值会影响性能。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

预粉碎#

控制影响用户切割的预解减少

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

关闭一些缩减操作,以便允许预求解将原始模型上的任何约束转换为预求解模型上的等效约束。如果您正在使用回调来添加自己的切割,您应该考虑将此参数设置为1。无法应用于预求解模型的切割将被静默忽略。对预求解问题大小的影响通常很小。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

PreDepRow#

控制预求解依赖行减少

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1

控制预求解依赖行缩减,该功能从约束矩阵中消除线性依赖的约束。默认设置(-1)将缩减应用于连续模型,但不应用于MIP模型。设置为0时,对所有模型关闭缩减。设置为1时,对所有模型开启缩减。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

预对偶#

控制预求解模型的对偶化

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制是否在预处理阶段形成连续模型的对偶模型。 根据模型的结构,求解对偶模型可以减少总体求解时间。默认设置使用启发式方法来决定。 设置为0时,禁止预处理阶段形成对偶模型,而设置为1时则强制形成对偶模型。 设置为2时,采用更昂贵的启发式方法,同时形成预处理后的原始模型和对偶模型(在两个线程上),并启发式地选择其中一个。

注意

主要影响LP、QP和QCP模型,但也用于混合整数规划的初始根松弛。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

PreMIQCPForm#

预求解的MIQCP模型格式

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

确定MIQCP模型的预解版本的格式。选项0将模型保留为MIQCP形式,因此分支切割算法将在具有任意二次约束的模型上运行。选项1始终将模型转换为MISOCP形式;二次约束被转换为二阶锥约束。选项2始终将模型转换为分解的MISOCP形式;二次约束被转换为旋转锥约束,其中每个旋转锥包含两项并且仅涉及三个变量。

默认设置(-1)自动选择。自动设置通常效果很好,但在某些情况下,强制使用不同的形式可能会更有益。

注意

仅影响MIQCP模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

预通过#

预解过程限制

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

限制预求解执行的次数。默认设置(-1)自动选择次数。当您发现预求解消耗了总求解时间的大部分时,应该尝试调整此参数。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

PreQLinearize#

预处理二次线性化

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制预求解Q矩阵线性化。在二次表达式中,二元变量提供了以多种不同方式表达相同表达式的自由度。此参数的选项1和2尝试线性化二次约束或二次目标,通过使用额外的变量和线性约束来替换二次项。这有可能将MIQP或MIQCP模型转换为MILP。选项1侧重于生成具有强LP松弛的MILP重构,目标是限制MIP搜索树的大小。选项2旨在实现紧凑的重构,目标是降低每个节点的成本。选项0尝试保持Q矩阵不变;它不会添加变量或约束,但仍可能对二次目标函数进行调整,使其成为正半定(PSD)。默认设置(-1)自动选择。

注意

仅影响MIQP和MIQCP模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

预处理#

控制预解级别

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制预解级别。值为-1对应自动设置。其他选项包括关闭(0)、保守(1)或激进(2)。更激进地应用预解会花费更多时间,但有时可以显著收紧模型。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

PreSOS1BigM#

SOS1到二进制重构的阈值

  • 类型: double

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1e10

控制将SOS1约束自动重新表述为二进制形式。使用二进制表示通常可以更高效地处理SOS1约束。重新表述通常需要引入big-M值作为系数。此参数指定在执行此重新表述时,预求解可以引入的最大big-M值。较大的值增加了SOS1约束被重新表述的机会,但非常大的值(例如1e8)可能会导致数值问题。

默认值-1会自动选择一个阈值。您应该将参数设置为0以完全关闭SOS1重构,或设置为一个较大的值以强制进行重构。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

请参考本节了解更多关于SOS约束的信息。

PreSOS1编码#

用于SOS1重构的编码

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

控制SOS1约束的自动重构。这些约束可以直接由MIP分支切割算法处理,但通常通过使用二进制或整数变量重构它们来更有效地处理。有几种不同的方法可以执行这种重构;它们在大小和强度上有所不同。较小的重构向模型添加较少的变量和约束。更强的重构减少了解决结果模型所需的分支切割节点数量。

此参数的选项0和1使用一种大小与SOS成员数量成线性关系的公式来编码SOS1约束。选项0使用所谓的多选择模型。它通常产生一个更容易解决的LP松弛。选项1使用增量模型。它通常提供更强的表示,减少解决更难问题所需的分支量。

此参数的第2和第3选项使用对数大小的公式对SOS1进行编码。它们仅在SOS1中的所有变量均为非负时适用。选项3还要求SOS1中的变量之和等于1。当SOS1约束具有大量成员时,对数公式通常是有利的。选项2侧重于其LP松弛更容易求解的公式,而选项3具有更好的分支行为。

-1 的默认值会自动为每个 SOS1 约束选择一个重新表述。

请注意,SOS1约束的重新表述也受到PreSOS1BigM参数的影响。要完全关闭重新表述,您应该将该参数设置为0。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

请参考本节了解更多关于SOS约束的信息。

PreSOS2BigM#

SOS2到二进制重构的阈值

  • 类型: double

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1e10

控制将SOS2约束自动重新表述为二进制形式。SOS2约束通常使用二进制表示更高效。重新表述通常需要引入big-M值作为系数。此参数指定在执行此重新表述时,预解可以引入的最大big-M。较大的值增加了SOS2约束被重新表述的机会,但非常大的值(例如1e8)可能导致数值问题。

默认值为-1,自动选择一个阈值。您应将参数设置为0以完全关闭SOS2重构,或设置为一个较大的值以强制进行重构。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

请参考本节了解更多关于SOS约束的信息。

PreSOS2编码#

用于SOS2重构的编码

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

控制SOS2约束的自动重构。这类约束可以直接通过MIP分支切割算法处理,但通常通过使用二进制或整数变量进行重构会更高效。有几种不同的方法可以执行这种重构;它们在大小和强度上有所不同。较小的重构向模型添加较少的变量和约束。更强的重构减少了解决结果模型所需的分支切割节点数量。

此参数的选项0和1使用一种大小与SOS成员数量成线性关系的公式来编码SOS2约束。选项0使用所谓的多选择模型。它通常产生一个更容易解决的LP松弛。选项1使用增量模型。它通常提供更强的表示,减少解决更难问题所需的分支量。

此参数的第2和第3选项使用对数大小的公式对SOS2进行编码。它们仅在SOS2中的所有变量均为非负时适用。选项3还要求SOS2中的变量之和等于1。当SOS2约束具有大量成员时,对数公式通常是有利的。选项2侧重于其LP松弛更容易求解的公式,而选项3具有更好的分支行为。

-1 的默认值会自动为每个 SOS2 约束选择一个重新表述。

请注意,SOS2约束的重新表述也受到PreSOS2BigM参数的影响。要完全关闭重新表述,您应该将该参数设置为0。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

请参考本节了解更多关于SOS约束的信息。

预稀疏化#

控制预求解稀疏化缩减

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制预求解稀疏化缩减。这种缩减有时可以显著减少预求解模型中的非零值数量。值为0时关闭缩减,值为1时强制对混合整数规划(MIP)模型进行缩减,值为2时强制对所有类型的模型进行缩减,包括线性规划(LP)模型和MIP松弛。默认值-1自动选择。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

ProjImpliedCuts#

预计隐含边界切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制投影隐含边界切割的生成。使用0禁用这些切割,1用于中等切割生成,或2用于积极切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

PSDCuts#

PSD 切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制PSD切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响目标或约束中包含非凸二次表达式的模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

PSDTol#

正半定容差

  • 类型: double

  • 默认值:1e-6

  • 最小值: 0

  • 最大值: Infinity

设置优化器在Q矩阵上允许执行的对角扰动量的限制,以纠正轻微的PSD违规。如果需要更大的扰动,优化器将以Q_NOT_PSD错误终止。

注意

仅影响QP、QCP、MIQP和MIQCP模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

泵通过次数#

可行性泵启发式算法的通过次数

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

可行性泵启发式算法的通过次数。

这种启发式方法相当昂贵,通常会产生质量较差的解决方案。通常只有在其他方法(包括使用默认设置探索树)无法产生可行解决方案时,才应使用它。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

此参数是可回调设置的。当where值为PRESOLVEDSIMPLEXMIPMIPSOLMIPNODEBARRIERMULTIOBJ时,可以在回调中更改它(更多信息请参见回调代码部分)。如何为不同的API执行此操作,请参见此处。在远程服务器的情况下,从回调中更改参数可能不会立即生效。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

QCPDual#

QCP模型的对偶变量

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

确定是否为QCP模型计算双变量值。 计算它们可能会显著增加优化时间,因此只有在需要时才应将此参数设置为1。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

Quad#

控制单纯形中的四精度

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1

启用或禁用单纯形法中的四精度计算。默认设置为-1,允许算法自行决定。四精度有时可以帮助解决数值上具有挑战性的模型,但也可能显著增加运行时间。四精度仅在支持四精度的处理器上可用,例如常见的英特尔处理器。在其他处理器上,该参数无效。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

记录#

启用API调用记录

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

启用API调用记录。启用后,Gurobi将写入一个或多个文件(命名为gurobi000.grbr或类似名称),这些文件捕获了您的程序发出的Gurobi命令序列。随后可以使用Gurobi命令行工具重放此文件。重放文件将重复完全相同的命令序列,并在完成后显示在Gurobi API例程中花费的时间、在Gurobi算法中花费的时间,并指示您的程序是否泄漏了任何Gurobi环境或模型。重放文件在技术支持情况下特别有用。它们提供了一种简单的方法,将导致问题或疑问的Gurobi命令的确切序列传达给Gurobi技术支持。

此参数必须在启动空环境之前设置(或在gurobi.env文件中设置)。所有Gurobi命令将被记录,直到环境被释放或程序结束。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

结果文件#

在优化完成后写入结果文件

  • 类型: string

  • 默认值:""

指定优化完成后要写入的结果文件的名称。结果文件的类型由文件后缀决定。最常用的后缀是.sol(用于捕获解向量),.bas(用于捕获单纯形基),和.mst(用于捕获整数变量上的解向量)。你也可以写入一个.ilp文件(用于捕获不可行模型的IIS),或者一个.mps.rew.lp,或.rlp文件(用于捕获原始模型),或者一个.dua.dlp文件(用于捕获纯LP模型的对偶)。文件后缀可以选择性地跟随.zip.gz.bz2.7z.xz,这将生成一个压缩的结果。

有关文件格式的更多信息可以在 文件格式 部分找到。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

RINS#

松弛诱导邻域搜索(RINS)启发式频率

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

RINS启发式的频率。默认值(-1)自动选择。值为0时关闭RINS。正值n在MIP搜索树的每n-th个节点应用RINS。

增加RINS启发式的频率会将MIP搜索的重点从证明最优性转移到寻找良好的可行解。我们建议您在尝试此参数之前,先尝试MIPFocusImproveStartGapImproveStartTime

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

RelaxLiftCuts#

放松和提升切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制放松和提升切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于积极切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

RLTCuts#

RLT 切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制松弛线性化技术(RLT)的切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

ScaleFlag#

模型缩放

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

控制模型缩放。默认情况下,模型的列和行会被缩放,以改善约束矩阵的数值属性。缩放会在最终解决方案返回之前被移除。缩放通常会减少求解时间,但可能会导致原始未缩放模型中的约束违反更大。关闭缩放(ScaleFlag=0)有时可以产生较小的约束违反。选择不同的缩放选项有时可以提高特别数值困难的模型的性能。使用几何平均缩放(ScaleFlag=2)特别适合约束矩阵行或列中系数范围较广的模型。设置1和3并不直接与任何特定的模型特性相关联,因此可能需要通过实验来评估这两种设置对性能的影响。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

场景编号#

选择多场景模型的场景索引

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: MAXINT

在处理多个场景时,此参数选择您要处理的场景的索引。当您查询或修改与多个场景相关的属性(ScenNLB, ScenNUB, ScenNObj, ScenNRHS等)时,ScenarioNumber参数将确定实际受影响的场景。此参数的值应小于NumScenarios属性的值(该属性捕获模型中的场景数量)。

请参考多种场景的讨论,了解更多关于使用替代场景的信息。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

种子#

随机数种子

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: MAXINT

修改随机数种子。这会对求解器产生小的扰动,通常会导致不同的解路径。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

服务器密码#

远程服务集群或令牌服务器的客户端密码

  • 类型: string

  • 默认值:""

用于连接到服务器(无论是计算服务器还是令牌服务器)的密码。

要连接到由ComputeServer参数引用的远程服务集群,您需要提供客户端密码。有关启动计算服务器作业的更多信息,请参阅Gurobi Remote Services Reference Manual

在连接到由TokenServer参数指定的服务器时,提供令牌服务器密码(如果需要)。

你必须通过gurobi.lic文件(使用PASSWORD=pwd)或空环境来设置此参数。 在环境创建后更改此参数将不会产生任何效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

服务器超时#

网络超时

  • 类型: int

  • 默认值:60

  • 最小值: 1

  • 最大值: MAXINT

计算服务器和令牌服务器的网络超时(以秒为单位)。如果客户端程序在超过指定时间后仍无法联系到服务器,客户端将因网络错误而退出。

请参阅 Gurobi远程服务参考手册 以获取有关启动计算服务器作业的更多信息。

你必须使用一个 空环境来设置此参数。在环境创建后更改此参数将不会产生任何效果。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

筛选#

控制双单纯形内的筛选

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

启用或禁用双单纯形法中的筛选。筛选对于变量数量远大于约束数量的LP模型非常有用(通常只有在比例达到100或更高时才能看到显著的好处)。选项有自动(-1)、关闭(0)、中等(1)和激进(2)。在中等设置下,筛选将应用于LP模型和MIP模型的初始根松弛。在激进设置下,筛选将在每次使用双单纯形法时应用,包括在MIP的节点上。请注意,如果您不使用双单纯形法,此参数将无效。还请注意,在筛选明显不如双单纯形法的情况下,Gurobi将忽略此参数。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

SiftMethod#

用于解决筛选子问题的LP方法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

用于解决筛选子问题的LP方法。选项包括自动(-1)、原始单纯形法(0)、对偶单纯形法(1)和障碍法(2)。请注意,此参数仅在您使用对偶单纯形法并已选择筛选(无论是通过对偶单纯形法自动选择,还是通过筛选参数选择)时才会生效。

更改此参数的值很少会产生显著的益处。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

单纯形定价#

单纯形定价策略

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

确定单纯形变量定价策略。可用的选项有 自动 (-1)、部分定价 (0)、最陡边 (1)、Devex (2) 和 快速启动最陡边 (3)。

更改此参数的值很少会产生显著的益处。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

SoftMemLimit#

软内存限制

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0

  • 最大值: Infinity

限制Gurobi可用的总内存量(以GB为单位,即\(10^9\)字节)。如果需要更多内存,Gurobi将以MEM_LIMIT状态码终止。

内存限制参数不同,SoftMemLimit参数会导致优化过程优雅退出,从而可以在之后检索解决方案信息或在MIP求解的情况下恢复优化。

内存限制相比的一个缺点是,SoftMemLimit只在可以优雅终止优化的地方进行检查,因此在两次检查之间,内存使用可能会超过限制。

请注意,分配的内存是在Gurobi环境中的所有模型中跟踪的。如果您在一个环境中创建多个模型,这些额外的模型将计入总内存消耗。

内存使用情况也在所有线程中进行跟踪。这导致的一个后果是,对于多线程运行,终止可能是非确定性的。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

解决方案限制#

MIP 解决方案限制

  • 类型: int

  • 默认值:MAXINT

  • 最小值: 1

  • 最大值: MAXINT

限制找到的可行MIP解的数量。一旦达到限制,优化将以SOLUTION_LIMIT状态返回。为了快速找到一个可行解,当解限制设置为1时,Gurobi会执行额外的可行点启发式方法。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

解决方案目标#

线性规划的目标解决方案

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1

指定线性规划(LP)的解决方案目标。选项包括自动(-1)、原始和对偶最优,以及基本(0)、原始和对偶最优(1)。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

SolFiles#

存储中间解决方案文件的位置

  • 类型: string

  • 默认值:""

在MIP求解过程中,通常会找到多个当前解,这些解是在寻找已证明的最优解的过程中发现的。将此参数设置为非空字符串会导致这些解在找到时被写入文件(以.sol格式)。MIP求解器会将_n.sol附加到参数值上,以形成包含解编号\(n\)的文件名。例如,将参数设置为值solutions/mymodel将在目录solutions中创建文件mymodel_0.solmymodel_1.sol等。

请注意,中间解决方案可以在生成时通过回调(通过在MIPSOL回调中请求MIPSOL_SOL)来检索。此参数使过程更简单。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

解决方案编号#

选择一个次优的MIP解决方案

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: MAXINT

当查询属性 XnObjNValPoolObjVal 以检索替代的 MIP 解决方案时,此 参数决定检索哪个替代解决方案。此参数的值应小于 SolCount 属性的值。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

StartNodeLimit#

限制MIP启动子MIP节点

  • 类型: int

  • 默认值:-1

  • 最小值: -3

  • 最大值: MAXINT

此参数限制在完成部分MIP启动时探索的分支定界节点的数量。默认值-1使用SubMIPNodes参数的值。值为-2表示仅检查完整MIP启动的可行性并忽略部分MIP启动。值为-3表示完全关闭MIP启动处理。非负值是节点限制。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

起始编号#

选择MIP起始索引

  • 类型: int

  • 默认值:0

  • 最小值: -1

  • 最大值: MAXINT

此参数选择您要使用的MIP起始索引。当您修改MIP起始值(使用开始属性)时,StartNumber参数将确定实际受影响的MIP起始。此参数的值应小于NumStart属性的值(该属性捕获模型中MIP起始的数量)。

特殊值-1用于将新的MIP起始值附加到模型中,但当StartNumber为-1时查询MIP起始值将导致错误。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

StrongCGCuts#

强-CG切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制强Chvátal-Gomory(Strong-CG)切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

子MIP切割#

子MIP切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制子MIP切割生成。使用0禁用这些切割,1用于中等切割生成,或2用于激进切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

子MIP节点#

在子MIP启发式中探索的节点

  • 类型: int

  • 默认值:500

  • 最小值: 0

  • 最大值: MAXINT

限制基于MIP的启发式算法(如RINS)探索的节点数量。探索更多的节点可以产生更好的解决方案,但通常需要更长的时间。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

对称性#

对称性检测

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制对称性检测。值为-1对应自动设置。其他选项为关闭(0)、保守(1)或激进(2)。

对称性可以影响算法的多个不同部分,包括预处理、MIP树搜索和LP求解过程。默认设置非常有效,因此更改此参数的值很少会产生显著的益处。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

线程限制#

线程限制

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1024

ThreadLimit 参数是一个 配置参数,用于 限制环境中使用的线程数量。 此限制适用于基于此环境的所有优化调用。默认值为 0 表示没有限制。

如果设置了线程限制,尝试将线程参数设置超过此限制将显示警告,并且不会更改参数的值。

你必须通过gurobi.env文件(使用ThreadLimit=limit)或空环境来设置ThreadLimit参数。在环境创建后更改此参数将导致错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

线程#

线程计数

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1024

控制应用于并行算法的线程数(并发LP、并行屏障、并行MIP等)。默认值为0是自动设置。它通常会使用与虚拟处理器数量相同的线程数。由于超线程或其他类似的硬件特性,虚拟处理器的数量可能超过核心数量。

虽然通常使用机器上所有可用的核心可以获得最佳性能,但也有一些例外。一个例外当然是当你与其他任务共享一台机器时。在这种情况下,你应该选择一个不会过度占用机器的线程数。

我们还发现,某些类别的MIP模型通过减少线程数,甚至减少到一个线程,可以从中受益。启动多个线程会引入对机器资源的竞争。对于MIP求解器找到的第一个解几乎总是最优的,并且该解不在根节点找到的模型类别,通常最好允许单个线程无竞争地探索搜索树。

另一个减少线程数可能有帮助的情况是当内存紧张时。每个线程可能会消耗大量的内存。

我们做出了一个务实的选择,对自动设置(0)施加了32个线程的软限制。如果您的机器有更多线程,并且您发现使用更多线程可以提高性能,您可以自由地将参数设置为更大的值。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

时间限制#

时间限制

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0

  • 最大值: Infinity

限制总花费时间(以秒为单位)。如果超过限制,优化将以TIME_LIMIT状态返回。

请注意,优化在达到时间限制后可能不会立即停止。它将在完成与终止优化相关的必要额外计算后停止。因此,运行时间 属性在完成时可能大于指定的 TimeLimit,并且将 TimeLimit 设置为停止优化的 Runtime 属性重复优化可能会导致额外的计算和更大的属性值。

此参数是可回调设置的。当where值为PRESOLVEDSIMPLEXMIPMIPSOLMIPNODEBARRIERMULTIOBJ时,可以在回调中更改它(更多信息请参见回调代码部分)。如何为不同的API执行此操作,请参见此处。在远程服务器的情况下,从回调中更改参数可能不会立即生效。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

令牌服务器#

您的令牌服务器名称

  • 类型: string

  • 默认值:""

使用令牌许可证时,将此参数设置为令牌服务器的名称。您可以使用其名称或IP地址来引用服务器。

您可以提供一个以逗号分隔的令牌服务器列表以增加鲁棒性。如果列表中的第一个服务器没有响应,将尝试第二个服务器,依此类推。

你必须通过gurobi.lic文件(使用TOKENSERVER=server)或空环境来设置此参数。在环境创建后更改此参数将不会产生任何效果。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

TSPort#

令牌服务器的端口

  • 类型: int

  • 默认值:41954

  • 最小值: 0

  • 最大值:65536

连接到Gurobi令牌服务器时使用的端口。只有在网络管理员告知您时才应更改此设置。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调整基础设置#

基本参数设置的逗号分隔列表

  • 类型: string

  • 默认值:""

参数文件列表(例如,base1.prm,base2.prm),这些文件定义了在调优过程中应首先尝试的设置,按照给定的顺序。默认参数设置也会被尝试,但在这些文件中提供的设置之后。如果您希望较早尝试默认设置,可以在列表中包含一个空的参数文件。

注意

仅限命令行 (grbtune)

调优清理#

启用调优清理阶段

  • 类型: double

  • 默认值:0.0

  • 最小值: 0.0

  • 最大值: 1.0

在调优结束时启用清理阶段。该参数表示用于此阶段的总调优时间的百分比,目的是减少实现最佳调优结果所需的参数更改次数。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调优标准#

调优标准

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

修改调优工具的调优标准。主要的调优标准始终是尽量减少找到已证明最优解所需的运行时间。然而,对于在指定时间限制内无法达到最优解的MIP模型,需要一个次要标准。将此参数设置为1以使用最优性差距作为次要标准。选择值2以使用找到的最佳可行解的目标。选择值3以使用最佳目标界限。选择0以忽略次要标准,完全专注于最小化找到已证明最优解的时间。默认值-1自动选择。

请注意,值1和3不支持多目标问题。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调整动态作业#

动态分布式调优作业计数

  • 类型: int

  • 默认值:0

  • 最小值: -1

  • 最大值: MAXINT

启用分布式并行调优,可以显著提高调优工具的性能。值为n时,调优工具将使用最多n个并行工作者的动态集合。这些工作者在有限的时间内使用,之后可能会被释放,以便它们可用于其他远程作业。值为-1时,允许求解器使用无限数量的工作者。请注意,此参数可以与TuneJobs结合使用,以获得用于分布式调优的静态工作者集合和动态工作者集合。您可以使用WorkerPool参数来提供分布式工作者集群。

请注意,当工作机器的性能相似时,分布式调优最为有效。分布式调优不会尝试通过服务器来标准化性能,因此当在明显比其他机器更快的工作机器上尝试相关设置时,它可能会错误地将性能提升归因于参数更改。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调整任务#

永久分布式调优作业计数

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: MAXINT

启用分布式并行调优,可以显著提高调优工具的性能。值为n时,调优工具将使用最多n个并行工作的静态集合。这些工作器在整个调优过程中保持不变。请注意,此参数可以与TuneDynamicJobs结合使用,以获得用于分布式调优的静态工作器集合和动态工作器集合。您可以使用WorkerPool参数来提供分布式工作器集群。

请注意,当工作机器的性能相似时,分布式调优最为有效。分布式调优不会尝试通过服务器来标准化性能,因此当在明显比其他机器更快的工作机器上尝试相关设置时,它可能会错误地将性能提升归因于参数更改。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调优指标#

聚合调优结果的方法

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 1

一次调优运行通常会为每个候选参数集生成多个计时结果,这可能是由于执行了多个试验,或调优了多个模型,或两者兼而有之。此参数控制如何将这些结果聚合成一个单一的度量。默认设置(-1)自动选择聚合方式;设置0计算所有单个结果的平均值;设置1取最大值。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调优输出#

调整输出级别

  • 类型: int

  • 默认值:2

  • 最小值: 0

  • 最大值: 3

控制调优工具产生的输出量。级别0不产生任何输出;级别1仅在找到新的最佳参数集时产生调优摘要输出;级别2为每个尝试的参数集产生调优摘要输出;级别3为每个尝试的参数集产生调优摘要输出,以及详细的求解器输出。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调优参数#

包含调谐器应考虑的参数及其属性的JSON文件的逗号分隔列表。

  • 类型: string

  • 默认值:""

一个JSON文件列表(例如,params1.json,params2.json),这些文件定义了调谐器应使用的参数及其属性。如果没有给出(默认),调谐器将使用预定义的参数列表。

JSON格式通过以下示例进行说明,该示例请求在调优期间考虑参数启发式方法NoRelHeurWork

{
   "Heuristics": {
      "min": 0.0,
      "max": 1.0,
      "weight": 50,
   },
   "NoRelHeurWork": {
       "weight": 100,
       "values": [
          100,
          1000,
          2000
       ],
       "valueweights": [
          10,
          20,
          40
       ]
   }
}

所有参数属性都是可选的:

  • min 参数的最小值。如果未指定,则采用参数的最小值。

  • max 参数的最大值。如果未指定,则取参数的最大值。

  • weight 参数被选择进行更改的可能性

  • values 参数可以取的值列表。如果未给出,则可以考虑参数值的可行范围内的任何值。

  • weightvaluesvalues列表中每个值被选中的可能性。如果未给出,values列表中的所有值具有相同的概率。

注意

仅限命令行 (grbtune)

调优结果#

返回的改进参数集数量

  • 类型: int

  • 默认值:-1

  • 最小值: -2

  • 最大值: MAXINT

调优工具通常会找到多个优于基线设置的参数集。此参数控制在调优完成后应保留多少组这些参数集。非负值表示应保留多少组参数集。默认值(-1)保留参数集的有效前沿。也就是说,它保留了一个更改参数的最佳集,两个更改参数的最佳集,等等。不在有效前沿上的集将被丢弃。如果您对所有集感兴趣,请使用参数值-2。

请注意,结果中的第一组始终是用于第一次求解的参数集,即基线设置。这组参数作为任何改进的基础。因此,如果您对最佳调优参数集感兴趣,您需要至少请求2个调优结果。第一个(索引为0)将是基线设置,第二个(索引为1)将是调优过程中找到的最佳参数集。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调整目标MIP间隙#

要达到的目标差距

  • 类型: double

  • 默认值:0

  • 最小值: 0

  • 最大值: Infinity

要达到的目标差距。一旦调谐器找到了允许Gurobi达到给定模型的目标差距的参数设置,它将停止进一步尝试改进参数设置。相反,调谐器将切换到清理阶段(参见TuneCleanup参数)。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调整目标时间#

目标运行时间(以秒为单位)

  • 类型: double

  • 默认值:0.005

  • 最小值: 0

  • 最大值: Infinity

目标运行时间以秒为单位。一旦调谐器找到了允许Gurobi在目标运行时间内解决模型的参数设置,它将停止进一步尝试改进参数设置。相反,调谐器将切换到清理阶段(参见TuneCleanup参数)。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调整时间限制#

调整工具时间限制

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0

  • 最大值: Infinity

限制总调优运行时间(以秒为单位)。默认设置会自动选择一个时间限制。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调优试验#

对每个参数集执行多次运行以限制随机噪声的影响

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: MAXINT

由于随机效应,MIP模型的性能有时会出现显著变化。因此,调优工具可能会返回仅因随机性而优于基线的参数集。此参数允许您为每个参数集执行多次求解,每次使用不同的种子值,以减少随机性对结果的影响。默认值为0表示根据模型特性自动选择。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

调整使用文件名#

使用模型文件名作为模型名称

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: 1

在调优过程中,每个模型都使用一个名称来引用(例如,在显示该模型的进度信息时)。默认情况下,模型名称来自模型文件的内容。如果在调用grbtune之前将此参数设置为1,调优将使用模型文件的名称来引用模型。当多个被调优的模型具有相同(或无)名称时,这可能会有帮助。

注意

仅限命令行 (grbtune)

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

更新模式#

更改延迟更新的行为

  • 类型: int

  • 默认值:1

  • 最小值: 0

  • 最大值: 1

确定如何处理新添加的变量和线性约束。 默认设置(1)允许您立即使用新变量和约束来构建或修改模型。设置为0时,您需要调用update才能使用这些新变量和约束。

由于绝大多数程序从不查询Gurobi以获取有关它们构建的优化模型的详细信息,默认设置通常消除了调用update的需要,甚至不需要了解我们处理模型修改的延迟更新方法的细节。然而,当你尝试查询修改后的模型信息时,这些细节将会显现出来。

在Gurobi接口中,模型的修改(如边界变化、右侧变化、目标变化等)会被放入一个队列中。这些排队的修改会在三种情况下应用到模型中:当你调用update时,当你调用optimize时,或者当你调用write将模型写入磁盘时。当你查询模型信息时,结果将取决于该信息是否被修改以及何时被修改。特别是,无论你使用UpdateMode的哪种设置,如果修改仍在队列中,你将得到修改前的结果。

为了进一步扩展这一点,所有的属性修改实际上都被放入一个队列中。这包括那些传统上可能不被视为模型一部分的属性,例如变量分支优先级、约束基础状态等。如果后续的修改仍在队列中,查询这些属性的值将返回它们的先前值。

将参数更改为0的唯一潜在好处是,在特殊情况下,此设置可能允许单纯形在模型修改后更积极地使用热启动信息。

如果你想更改此参数,你需要在创建Gurobi环境时立即设置它。

请注意,您仍然需要调用update来修改SOS约束、二次约束或一般约束上的属性。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

用户名#

远程服务的用户名

  • 类型: string

  • 默认值:""

识别连接到远程服务管理器的用户。

您可以提供用户名和 密码,或者 访问ID密钥,以验证您与集群管理器的连接。

您可以通过gurobi.lic文件(使用USERNAME=YOUR_USERNAME)或空环境来设置此参数。在环境启动后更改此参数将导致错误。

注意

仅限集群管理器

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

变量分支#

分支变量选择策略

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 3

控制分支变量选择策略。默认的-1设置会根据问题特性自动选择。可用的替代方案包括伪减少成本分支(0)、伪影子价格分支(1)、最大不可行性分支(2)和强分支(3)。

更改此参数的值很少会产生显著的益处。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

WLSAccessID#

Web 许可证服务访问 ID

  • 类型: string

  • 默认值:""

使用WLS许可证时,将此参数设置为您的许可证的访问ID。您可以从Gurobi Web License Manager网站上的账户中检索此字符串。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

WLS配置#

Web 许可证服务配置

  • 类型: string

  • 默认值:""

当使用WLS按需许可证时,此参数可用于指定要使用的配置。如果未指定,则将使用为该许可证指定的默认配置。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

WLS代理#

Web 许可证服务代理

  • 类型: string

  • 默认值:""

要连接的WLS代理地址的逗号分隔列表。 当使用WLS按需许可证时,此参数可用于指定Gurobi将连接以报告使用情况的URL。 默认值(空字符串)等同于http://localhost:61099

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

WLSSecret#

Web 许可证服务密钥

  • 类型: string

  • 默认值:""

使用WLS许可证时,将此参数设置为您的许可证密钥。您可以从Gurobi Web License Manager网站上的账户中获取此字符串。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

WLSToken#

Web 许可证服务令牌

  • 类型: string

  • 默认值:""

如果您使用的是WLS许可证,并且已经通过WLS REST API获取了自己的令牌,请使用此参数将该令牌传递给库。如果您这样做,您不需要设置任何其他与WLS相关的参数。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

WLSTokenDuration#

Web 许可证服务令牌持续时间

  • 类型: int

  • 默认值:0

  • 最小值: 0

  • 最大值: MAXINT

使用WLS许可证时,此参数可用于调整令牌的生命周期(以分钟为单位)。令牌使Gurobi在该客户端上运行,直到令牌过期。如果当前令牌过期,Gurobi将自动请求新令牌,但如果它在当前令牌过期之前完成工作,则不会通知WLS服务器。对于短期使用,较短的生命周期更好。对于与WLS服务器的网络连接不可靠的环境,较长的生命周期更好。

默认值为0表示“自动”,目前等于5分钟。此值将来可能会更改。WLS服务器将自动将所选值限制为至少5分钟且不超过60分钟。此行为将来也可能会更改。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

WLSTokenRefresh#

Web 许可证服务令牌刷新间隔

  • 类型: double

  • 默认值:0.9

  • 最小值: 0.0

  • 最大值: 1.0

该值指定了令牌持续时间的一部分,在此之后将触发令牌刷新。例如,如果令牌持续时间为30分钟,并且WLSTokenRefresh设置为0.6,则令牌将每18分钟刷新一次。最小刷新间隔为4分钟。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

WorkerPassword#

分布式工作器密码

  • 类型: string

  • 默认值:""

当使用分布式算法(分布式MIP、分布式并发或分布式调优)时,此参数允许您为WorkerPool参数中提供的分布式工作集群指定密码。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

工作池#

分布式工作集群(用于分布式算法)

  • 类型: string

  • 默认值:""

当使用分布式算法(分布式MIP、分布式并发或分布式调优)时,此参数允许您指定将提供分布式工作者的远程服务集群。如果该集群有访问密码,您还应在WorkerPassword参数中指定该密码。请注意,如果您的作业在计算服务器节点上运行,并且您希望为分布式工作者使用相同的集群,则不需要设置这些参数中的任何一个。

您可以提供一个以逗号分隔的机器列表以增加鲁棒性。 如果列表中的第一个节点不可用,客户端将尝试联系第二个节点,依此类推。

举个例子,如果你有一个远程服务集群,它在一对名为server1server2的机器上使用端口61000,你可以将WorkerPool设置为"server1:61000""server1:61000,server2:61000"

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

工作限制#

工作限制

  • 类型: double

  • 默认值:Infinity

  • 最小值: 0

  • 最大值: Infinity

限制总工作量(以工作单位计)。如果超过限制,优化将返回WORK_LIMIT状态。

时间限制不同,工作限制是确定性的。这意味着在相同的硬件和相同的参数及属性设置下,工作限制每次都会在完全相同的时间点停止给定模型的优化。一个工作单位大致相当于单线程上的一秒钟,但这很大程度上取决于运行Gurobi的硬件和正在求解的模型。

请注意,优化在达到工作限制时可能不会立即停止。它将在优化处于确定性状态时停止,然后执行与终止优化相关的所需额外计算。因此,完成时工作属性可能大于指定的WorkLimit,并且将WorkLimit设置为停止优化的Work属性重复优化可能会导致额外的计算和更大的属性值。

此参数是可回调设置的。当where值为PRESOLVEDSIMPLEXMIPMIPSOLMIPNODEBARRIERMULTIOBJ时,可以在回调中更改它(更多信息请参见回调代码部分)。如何为不同的API执行此操作,请参见此处。在远程服务器的情况下,从回调中更改参数可能不会立即生效。

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

ZeroHalfCuts#

零半切割生成

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: 2

控制零半切割的生成。使用0禁用这些切割,1用于中等切割生成,或2用于积极切割生成。默认值-1自动选择。覆盖切割参数。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例

零对象节点#

零目标启发式

  • 类型: int

  • 默认值:-1

  • 最小值: -1

  • 最大值: MAXINT

在零目标启发式中要探索的节点数量。

这种启发式方法相当昂贵,通常会产生质量较差的解决方案。通常只有在其他方法(包括使用默认设置探索树)无法产生可行解决方案时,才应使用它。

关于整数值参数的一个重要注意事项:虽然可以存储在带符号整数中的最大值是\(2^{31}-1\),但我们使用的MAXINT值为2,000,000,000。尝试将整数参数设置为大于此最大值的值将产生错误。

注意

仅影响混合整数规划(MIP)模型

有关如何从我们的不同API查询或修改参数值的示例,请参阅我们的参数示例