命令行调优


命令行调优

grbtune命令行工具提供了一种非常简单的方法来调用模型(或一组模型)上的参数调优。您指定的列表参数=值首先是参数,然后是包含要调优模型的文件的名称。例如,您可以发出以下命令(在Windows命令窗口中,或在Linux/Mac终端窗口中)…

> grbtune TuneTimeLimit = 10000c: \ gurobi800 \ win64 \ \ data \例子misc07

(替换存储在MPS或LP文件中的模型的适当路径)。该工具将尝试寻找参数设置,以减少指定模型上的运行时。当调优运行完成时,它将写入一组.prm当前工作目录中捕获找到的最佳参数设置的文件。它还为这些运行编写Gurobi日志文件(以一组. log文件)。

您还可以通过我们的编程语言api调用调优工具。我们会讨论这个问题不久

如果您在命令行末尾指定多个模型文件,调优工具将尝试寻找最小化所列模型的总运行时的设置。

运行调优工具

调优工具所做的第一件事是执行基线运行。这次运行的参数由您选择的初始参数值决定。如果您设置了一个参数,它将在整个调优过程中使用所选择的值。因此,例如,如果您设置方法参数为2,则基线运行和所有后续调优运行都将包含此设置。在上面的例子中,您可以通过发出命令来实现:

> grbtune Method=2 TuneTimeLimit=100 misc07

对于MIP模型,您将注意到调优工具实际上执行几个基线运行,并捕获所有这些试验的平均运行时。事实上,该工具将对考虑的每个参数集执行多次运行。这样做是为了限制随机效应对结果的影响,如前所述。使用TuneTrials参数来调整所进行的试验次数。

一旦基线运行完成,该运行的时间就变成了需要击败的时间。然后,该工具开始搜索改进的参数设置。的默认值TuneOutput参数时,工具将为它尝试的每个参数集打印输出…

测试候选参数集7…方法2 MIPFocus 1 with random seed #1…运行时间:3.63s运行时4.12s+目前的进展:基线运行时3.38s,最佳运行时2.88s
这个输出表明,到目前为止,该工具已经尝试了7个参数集。对于第七组,它改变了MIPFocus参数(方法参数在我们的初始参数设置中被更改,所以这个更改将出现在工具尝试的每个参数设置中)。第一次尝试在3.63秒内解决了模型,而第二次则达到了调优工具设定的时间限制(如+在运行时输出之后)。如果任何试验达到了时间限制,则认为相应的参数集比没有达到时间限制的参数集更差。输出还显示,到目前为止找到的最佳参数集的运行时为2.88s。最后,它显示经过的运行时和剩余的运行时。

调优通常会持续到时间超过调优时间限制。但是,按CTRL-C也会停止该工具。

当调谐工具完成时,它打印一个摘要…

在97.89s中测试20个参数集基线参数集:runtime 3.38s改进参数集1 (runtime 1.62s):方法2启航0 VarBranch 1 CutPasses 3 gomorypass 0改进参数集2 (runtime 2.03s):方法2启航0 VarBranch 1 CutPasses 3改进参数集3 (runtime 2.38s):方法2 VarBranch 1写入参数文件tune1。人口、难民和移民事务局通过tune3。prm写日志文件:tune1.log通过tune3.log
摘要显示了它尝试的参数集的数量,并提供了它找到的几个最佳参数集的详细信息。它还显示了.prm. log文件写道。属性可以更改这些文件的名称ResultFile参数。如果你设置ResultFile = model.prm,例如,该工具将编写model1.prm通过model3.prmmodel1.log通过model3.log

控件控制由调优工具保留的集的数量TuneResults参数。默认行为是保留在运行时和更改参数数量之间实现最佳权衡的集合。换句话说,我们报告当改变一个参数时,当改变两个参数时,取得最好结果的集合,等等。我们实际上会报告一个帕累托边界,例如我们不会报告三个参数变化的结果如果它比两个参数变化的结果差。

其他调优参数

到目前为止,我们只讨论了如何使用调优工具来减少寻找最佳解决方案的时间。对于MIP模型,您还可以在指定的时间限制后最小化最优差距。你不需要采取任何特别的行动;你只是设定了一个时间限制。当基线运行达到这个限制时,调优工具将自动尝试最小化MIP差距。举个例子,命令…

> grbtune TimeLimit=100 glass4
...是否会寻找一个参数集,使模型运行100次后的最佳差距最小化glass4.如果工具碰巧在时间限制内找到一个参数集来解决模型,那么它将尝试寻找最小化平均运行时间的设置。

对于在指定的时间限制内不能求解到最优的模型,您可以对用于选择a的准则获得更多的控制赢得参数集TuneCriterion参数。该参数允许您告诉调优工具搜索产生最佳现有解决方案或最佳下界的参数设置,而不是总是最小化MIP间隙,

您可以修改TuneOutput参数产生或多或少的输出。缺省值是2。设置为0不产生输出;设置为1只在发现改进时产生输出;设置为3将为每次执行的运行生成一个完整的Gurobi日志。

如果您想在调优运行时使用MIP start,可以在参数列表中的模型名称之后立即包含开始文件的名称。例如:

> grbtune misc07。议员misc07.mst
您也可以使用MIP启动时,调优多个模型;任何在参数列表中紧跟着start文件的模型都将使用相应的start。例如:
> grbtune misc07。议员misc07.mstp0033.mps p0548.mps p0548.mst