MIP模型

MIP模型

虽然默认设置通常工作得很好,但MIP模型通常会从参数调优中受益。我们提供了以下指导方针,但我们也鼓励您进行试验。

最重要的参数

解决MIP模型时,两个最重要的Gurobi设置可能是线程MIPFocus参数。的线程参数控制并行MIP求解器使用的线程数。手机万博登录默认值是使用机器中的所有内核(最多32个)。如果您希望为其他活动保留一些可用的参数,请相应地调整此参数。

MIPFocus参数允许您根据目标修改高级解决方案策略。默认情况下,Gurobi MIP求解器在寻找新的可行的手机万博登录解决方案和证明当前的解决方案是最优之间取得平衡。如果您对高质量可行的解决方案更感兴趣,您可以选择mipfocus = 1。如果您认为,求解器在找不到最佳解决方案手机万博登录,并且希望更加关注证明最优性,请选择mipfocus = 2。如果最好的客观界限正在缓慢移动(或根本不是),您可能想要尝试mipfocus = 3关注边界。

解决方案改进

ImproveStartTimeIncemSteStartGap.参数还可以用于修改高级解决方案策略,但方式不同。这些参数可以让你放弃在搜索的某个点上证明最优性,而是将所有的注意力集中在从那个点开始寻找更好的可行解决方案上。的ImproveStartTime参数允许您在指定时间经过后进行此转换,而IncemSteStartGap.参数在达到指定的最优间隙时进行过渡。

终止

Gurobi参数的另一个重要集合影响求解器的终止。手机万博登录如果求解器无法手机万博登录在期望的时间内找到一个已证明的最优解决方案,您将需要指出如何限制搜索。最简单的选项是使用期限参数。MIP模型的另一个常见终止选择是设置mipgap.参数。此参数允许您指示优化应在最佳已知解决方案和解决方案目标的最佳已知界限之间的相对间隙小于指定值时停止。当绝对间隙低于使用的绝对间隙低于所需阈值时,您可以终止mipgapabs.参数。您还可以严格地终止基于当前的较低或上限使用BestBdStopBestObjStop参数。其他终止选项包括NodeLimitIterationLimit解决方法, 和隔断。前三个表明,当分支和绑定节点的数量,单纯秒迭代的总数或发现的可行整数解决方案的数量分别超出指定值时,优化应终止。的隔断参数表示求解器应只考虑目标值优于指定值的解,如果没有找到这手机万博登录样的解,则应终止。

减少内存使用量

如果您发现Gurobi Optimizer在解决MIP时排出内存,则应修改Nodefilestart.参数。当用于存储节点的内存量(以GBytes为单位)超过指定的参数值时,节点将被写入磁盘。我们推荐一套0.5,但您可能希望选择不同的值,具体取决于计算机中可用的内存。默认情况下,节点将写入当前工作目录。的NodefileDir参数可用于选择不同的位置。

如果您在设置后仍然排出内存Nodefilestart.参数到一个小值,您应该尝试限制线程计数。并行MIP中的每个线程都需要模型的副本,以及其他几个大数据结构。减少线程参数有时可以显着降低内存使用情况。

加快根部放松

MIP模型中的根部松弛有时可以非常昂贵。如果你发现这里花了很多时间,请考虑使用方法参数为根选择不同的连续算法。例如,方法= 2将在root中选择并行屏障算法,以及方法= 3将选择并发求解器。手机万博登录方法可以为MIP节点松弛选择不同的算法Nodemethod.参数,但从默认(双单简单x)更改这一点很少有益。

难以放松

如果您发现即使在您尝试了上述建议之后,求解手机万博登录器在解决根松弛问题上仍然存在困难,或者在根节点上花费了过多的时间,那么您应该尝试NoRel启发式(由NoRelHeurTime诺尔彻底政区参数)。这种启发式尝试在没有解决MIP松弛的情况下找到高质量的解决方案。它通常是非常有效的,尽管它不能提供最佳目标的下界。

启发式

几个Gurobi参数控制内部MIP策略。的启发式参数控制花费在可行性试探的运行时的比例。增加参数可以得到更多更好的可行解,但也会降低最佳界的进展速度。的子芯片参数控制在Gurobi求解器中一些更复杂的局部搜索启发式中探索的节点数量。手机万博登录如果你很难找到可行的解决方案,你可以增加这个值。的MinRelNodesPumpPasses, 和ZeroObjNodes参数控制一组昂贵的启发式,其目标是找到可行的解决方案。所有在MIP根节点的末尾都会调用,通常仅在没有找到可行的解决方案时才。如果您无法找到任何可行的解决方案,请尝试使用这些。

减少飞机

Gurobi MIP求解器采用手机万博登录了广泛的切割平面策略。这些策略的进攻性可以通过网络控制在一个粗糙的层面上削减参数,在更细的晶粒通过进一步的一组切割参数(例如,FlowCoverCuts麦克特斯, 等等。)。每个切割参数都可以设置为攻击性(2),保守派(1),自动(-1)或无(0)。更具体的参数覆盖越一般,例如设置麦克特斯设置为None(0)同时也设置削减到Aggressive(2)将积极地产生所有削减类型,除了MIR削减将不会产生。非常简单的模型有时可以从关闭开关中受益,而极其困难的模型可以从将它们转向积极设置中受益。

Presolve

预解行为可以通过一组参数进行修改。的Presolve参数设置预寄存的攻击性级别。选项是侵略性的(2),保守派(1),自动(-1)或无(0)。更积极地应用预普朗需要更多的时间,但有时可以导致模型显着更严格。的PrePasses提供预普通的更精细的晶粒控制。它限制了Presolve执行的传递数量。将其设置为小值(例如,3)可以减少预普雷定期运行时。的参数控件是否预先执行约束聚合。聚集通常导致较小的配方,但在罕见的情况下,它可以引入数值问题。的AggFill参数控制较细晶粒的聚集。它控制来自单个变量聚合的约束矩阵中允许填充多少。的PreSparsify参数使得能够有时可以显着降低约束矩阵中的非零值的数量的算法。

处理违反诚信的行为

MIP求解器有时手机万博登录可以利用整型变量的容差来违反约束的意图。最著名的例子可能是细流流在这里,对固定电荷(二进制)变量的轻微完整性违反可能导致解决方案允许大量流动关闭边缘。的IntegralityFocus.参数允许您告诉求解器采取更严格的积分方法(在小表现惩罚)。手机万博登录

额外的参数

对称参数控制对称检测。默认值通常可以很好地工作。的varbranch参数控制分支绑定流程中的分支变量选择策略。变量选择可能会对整体解决方案的时间产生重大影响,但默认策略通常是最佳选择。

容忍

Gurobi求解器包括手机万博登录一组数值公差参数。这些很少需要调整,并且是为那些对模型的数值属性有困难的高级用户而设计的。的可行性托尔IntFeasTolMarkowitzTol, 和OptimalityTol参数允许您调整原始可行性公差,整数可行性公差,Simplex基础分解的Markowitz公差,以及双重可行性公差。